lut 142010
 

Ostatnio w wolnym czasie dla zabawy zbudowałem prosty sterownik myszki szeregowej.
Po podłączeniu do portu COM i wystartowaniu komputera jest wykrywany jako zwykła myszka 2-przyciskowa.
Układ powstał z moich płytek testowych. Jest to najzwyklejsze połączenie mikrokontrolera ATMega8 z COMem przez układ MAX232. Dodatkowo do lini RTS portu podłączyłem tranzystor poprzez diodę prostowniczą i opornik, który uruchamia przerwanie w chwili pojawienia się stanu wysokiego.

Protokół jest bardzo prosty. Po pojawieniu sie +12V na linii RTS układ wysyła bajt 0x4D („M”) w celu inicjacji. Dalsza komunikacja polega na wysłaniu 3-bajtowych pakietów z aktualnym stanem zgodnie z tą tabelką:

Parametry transmisji to 1200 bodów/s, 7\8 bitów danych oraz brak kontroli parzystości. W przypadku 8 bitów danych, najstarszy bit zawsze ma wartość 1. Bit 6 w każdym bajcie jest stały. L i R mają wartość 1 w przypadku wciśniętego przycisku, a X\Y 0-7 to liczba w kodzie U2 (-128 do 127) określająca zmianę położenia kursora.

Krótki program w języku Bascom razem z HEXem skompilowanym dla ATMegi8@12MHz dostępny poniżej. Co 2 sekundy „robi kwadrat” kursorem po ekranie. Można go rozbudować, np. o obsługę klawiatury matrycowej.

  Pobierz plik: mouse_bas.zip
  Rozmiar: 1.02 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99

lut 142010
 

[13-05-2010]: Nowa werja rejestratora

Oto mój pierwszy opublikowany tutaj projekt – rejestrator temperatury z obsługą kart Secure Digital (SD).
(temat przeniesiony z portalu elektorda.pl)
Projekt powstał oczywiście w celach naukowych. Podstawą układu jest moja płytka testowa z mikrokontrolerem ATMega32. Dołączyłem do niej termometr cyfrowy DS18B20, zegar RTC DS1307 oraz adapter wpinany w gniazdo ISP (Kanda; zamiast LED jest podłączony PB4 – slave select), który wykonałem metodą termotransferu. Przystawka posiada stabilizator napięcia 3,3V (LF33CV), dzielniki napięcia z rezystorów oraz oczywiście gniazdo SD/MMC. Schemat wziąłem [stąd] , a projekt w eagle jest dostępny w paczce z programem.

Program napisałem w C (środowisko AVR Studio 4) z wykorzystaniem biblioteki FAT32 z bloga CC Dharmani, dzięki czemu mogę w prosty sposób kopiować dane z rejestratora na PC. Do przeglądania logów napisałem w Delphi (7) prostą aplikację generującą wykresy z plików tekstowych. Zarówno program dla mikrokontrolera jak i przeglądarka logów są napisane na szybko (tak, wiem, że mogłoby być bardziej optymalnie ), ale poprawkami zajmę się po sesji. Mikrokontroler komunikuje się z komputerem poprzez interfejs szeregowy RS232. Jak kuż wspomniałem kod nie jest jeszcze w pełni ukończony, przez co tryb ustawień włącza się porpzez dopisanie 1 linijki w kodzie zamiast zworką na płytce. W normalnym trybie pracy układ zapisuje temperaturę co 5 minut oraz dodatkowo wysyła wynik po RS232. Układ pracuje już 2 tygodnie bez zarzutów.

Przykładowy wykres:

Skompilowane programy oraz źródła dostępne poniżej. Domyślne ustawienia to UART na 19200 bodów (8;1;N) i 1Wire na PD6.

  Pobierz plik: temp_logger/temp_logger_0.1.zip
  Plik niedostępny!

Aktualne pomiary:
  Otwórz folder:
  TEMP_LOGGER/DANE/

W folderze z przeglądarką należy utworzyć katalog DANE i w nim umieścić pliki tekstowe z pomiarami.
  Pobierz plik: temp_logger/tlviewer.exe
  Rozmiar: 416.5 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99