Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programator AVR ze starej klawiatury USB

Kubald 27 Gru 2012 21:54 15213 5
  • Programator AVR ze starej klawiatury USB

    Jako że ostatnimi czasy autor projektu postanowił wymienić klawiaturę na nową, zastanawiał się, co zrobić z tą starą, zużytą. Ponieważ swego czasu natknął się na projekt programatora AVR wykorzystującego hub USB, postanowił stworzyć podobne urządzenie wykorzystujące właśnie klawiaturę.

    Jak ma to działać? Większość klawiatur wyposażona jest w 3 diody sygnalizujące stan klawiszy Num-, Caps- i Scroll-Lock, które mogą być kontrolowane z komputera-hosta za pomocą zapytania HID Set_Report i dzięki temu można je łatwo przekształcić w dowolnego zastosowania porty wyjściowe. Używanie klawiatury jako portu wejściowego wymaga nieco więcej sprytu, ponieważ zwykle urządzenie ogranicza się do skanowania poszczególnych kolumn i wierszy, w jakich ułożone są klawisze. Ponadto większość klawiatury wykorzystuje odkłócanie drgań klawiszy (debouncing), dlatego wymagane jest dokładne symulowanie naciśnięcia wybranego klawisza. Kiedy ten zostanie wciśnięty, klawiatura generuje przerwanie i wysyła 8 bitów danych, zawierających informacje o wszystkich klawiszy. Pierwszy bit danych określa stan klawiszy modyfikatorów (shift, ctrl, alt itd.), co znajdzie zastosowanie w budowanym programatorze. Dodatkowo, stan klawiszy może być sprawdzany zapytaniem Get_Report, lecz i tak wymaga to uprzedniego obsłużenia ewentualnych przerwań.

    W projekcie autor wykorzystał elektronikę klawiatury Microsoft Digital Media Keyboard 3000, płytka znajdująca się w jej wnętrzu wygląda następująco:

    Programator AVR ze starej klawiatury USB

    Czwarta dioda nie może być kontrolowana przez komputer, wskazuje jedynie stan dodatkowych funkcji klawiatury (aczkolwiek sama specyfikacja HID pozwala na sterowanie aż pięcioma diodami).

    Do emulowania naciśnięcia klawisza wykorzystany został transoptor, który symuluje zwarcie odpowiedniego rzędu i kolumny klawiszy. Jako że transoptory znaleźć można w większości zasilaczy, autor „odratował” wykorzystany element (KB817-B) ze starej ładowarki do telefonu.

    I to wszystko, czego potrzeba do budowy programatora! Poniżej gotowe połączenia z procesorem:

    Programator AVR ze starej klawiatury USB





    Całe urządzenie składa się więc z płytki z klawiatury, transoptora i programowanego procesora – Atmel ATTiny2313. Dodatkowo przyłączona została dioda LED, aby przetestować wgrany do procesora program. Procesor podłączany jest bezpośrednio do płytki klawiatury, w miejsce diod LED (wyjścia 5V, każde z rezystorem 330Ω ograniczającym prąd): w sposób następujący:
    Num-lock -> SCL
    Caps-lock -> MOSI
    Scroll-lock -> RESET
    Rząd/kolumna odpowiadająca prawemu przyciskowi Shift -> MISO

    Dodatkowo, do transoptora przyłączony został rezystor ograniczający prąd – 470Ω.

    Celem przetestowania działania autor napisał własne oprogramowanie. Okazało się, że zwykła, umieszczona w pętli, zmiana stanu diod LED pozwala na osiągnięcie częstotliwości od 0,5 do 1,2 kHz, co jest wartością większą, niż można by było przypuszczać. Niestety, sprawdzanie stanu wejść odbywa się o wiele wolniej, w przypadku omawianej klawiatury częstotliwość skanowania wynosi 250 Hz.

    Programator AVR ze starej klawiatury USB

    Dodatkowo, klawiatura odkłóca drgania klawiszy – w najgorszym przypadku od naciśnięcia klawisza do odebrania przez komputer danych może minąć nawet 40 ms. Niestety, jest to duże ograniczenie, w porównaniu z nie taką złą częstotliwością zmiany stanu wyjść.

    Po przeprowadzeniu wstępnych testów, autor stworzył sterownik dla avrdude (testowany tylko na Linuxie, ale powinien działać również z Windowsem i OS X).

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Jak widać powyżej, sterownik działa i umożliwia zaprogramowanie procesora, ale zajmuje to nieco czasu, z powodu powolnej obsługi wejść, lecz jest całkiem akceptowalne. Pozwoli to na wykorzystanie starych i niepotrzebnych klawiatur w roli przydatnego programatora lub na stworzenie własnego urządzenia.

    Autor odkrył także (przyglądając się działaniu avrdude), że dane z pinu MISO są odczytywane za każdym razem, nawet jeśli później nie są wykorzystywane. Po zmodyfikowaniu działania avrdude tak, by dane z pinu MISO były odczytywane tylko wtedy, jeśli następnie znajdują użycie, udało się znacząco skrócić czas programowania (86 bitów w 11,75 sek. zamiast 123,79 sek.).

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Dodatkowe szczegóły i pliki do pobrania można znaleźć na stronie projektu.


    Fajne!
  • #5 07 Sty 2013 17:25
    lis6502
    Poziom 16  

    A ja uważam ten projekt za świetny pomysł; kupujesz klawiaturę- starą powinno się wyrzucić, jednak trochę szkoda. A w ten sposób pozbywasz się tylko faktycznie zbędnego plastiku, dając elektronice drugie życie. Sam jestem zwolennikiem "recyclingu"/śmieciosztuki/whateva i ponowne wykorzystanie nieużywanego sprzętu do "nowych" celów jak najbardziej popieram, a nawet sam uprawiam (ale nie pochwalę się- za dużo kleju na gorąco:P). Autorowi wielki plus i czteropaka za kreatywność :)

    Swego czasu gdzieś czytałem przemyślenia jakiegoś pana, który wykorzystywał "zużyte" świetlówki kompaktowe, montując do elektroniki w cokole klasyczną "długą" świetlówkę, jednocześnie zachwycając się budową i zaawansowaniem tej elektroniki sterującej (linka nie przytoczę- portal socjotechnika.net już nie istnieje, a kojarzę że właśnie tam był ten art).

    //
    Nie trzeba daleko szukać, tutaj też były takie eksperymenty: https://www.elektroda.pl/rtvforum/topic791270.html
    androot


    Myślę, że właśnie ten projekt powinien być promowany- może nie jako "niskobudżetowy programator" a motor do ruszenia głową i spojrzeniu pod innym kątem na otaczający nas świat, szczególnie w czasach kiedy elektroniczne "hello world"- migającego leda, skonstruować najprościej na mikrokontrolerze, procesory w telefonach komórkowych taktkowane są gigahercami etc.

  • #6 08 Sty 2013 13:58
    2118502
    Użytkownik usunął konto