Archiwum kategorii ‘main’

xdb2usb – podłączenie klawiatury ADB do maca z USB

czwartek, 20 Maj 2010

Dnia 8 listopada 2007 roku stworzyyłem mój pierwszy tak skomplikowany projekt. Zawsze wiedziałem (tak, tak, to się wie!), że jestem w stanie nie tylko coś zaprogramować, ale też coś skonstruować.

I oto jest!

Pierwszy wolny (od wolności) interfejs adb2usb pozwalający podłączyć stare klawiatury makowe adb do niemal dowolnego komputera wyposażonego w złącze usb*. Projekt zainspirowany przez projekt kbdbabel.

Jest zupełnie używalna ( jako że cały ten tekst napisałem właśnie na Apple Extended Keyboard II. Używam jej od tego czasu z powodzeniem do dziś.

Układ składa się z dwóch części:

jedna (attiny13) odpowiada za dekodowanie protokołu adb i przesyłanie danych przez złącze szeregowe bez żadnej interpretacji (typowy konwerter adb na serial);

druga (atmega8) czyta dane przesyłane szeregowo, przetwarza kody klawiszy ze standardu adb na standard usb, po czym przesyła dane przez usb do komputera.

Nie ma możliwości przepełnienia łącza szeregowego – zaimplementowane jest sterowanie przepływem typu „można przesyłać!” – jeśli strona usb (atmega8) jest gotowa do pobierania i przetwarzania danych.

Buforowanie klawiszy odbywa się wewnętrznie w klawiaturze. Nie ma potrzeby powtórnej implementacji buforowania.

Co działa:

Wszystkie zwykłe klawisze, klawiatura jest przełączana do trybu „3” co oznacza odróżnianie lewych i prawych klawiszy funkcyjnych w klawiaturach obsługujących ten tryb (w pozostałych powinno działać rozpoznawanie lewych klawiszy funkcyjnych); tryb „3” jest włączany po chwilowej nieaktywności (np. po powtórnym podłączeniu klawiatury).
Klawisze funkcyjne: f13 – mute, f14 – volume down, f15 – volume up

Nie działają:

Klawisz Power, caps lock – bo w klawiaturze nie działa standardowo, oraz NIE CIERPIĘ caps lock (w pracy mam wydłubany, w mini macu zablokowany w systemie), budzenie klawiaturą – jest wyłączone (ale zaimplementowane), bo system myśli że zmieniono klawiaturę i przestawia ją tak, że ~ (tylda) nie działa.

Do zrobienia:

  • programowe przełączanie pomiędzy makowym układem klawiszy a pecetowym (dotyczy f13-f15 oraz keypad)
  • być może uda się opanować budzenie przez klawiaturę
  • zamiana klawiszy alt i jabłko; tu jest szkopuł, bo klawiatura jest w stanie odróżnić lewy alt od prawego, ale lewe jabłko od prawego już nie … dotyczy układu w Windowsach, bo te odróżniają systemowo klawisze funkcyjne prawe od lewych, zwłaszcza alty.
  • zapalanie diodek odpowiednio do trybu pracy klawiatury (num lock, caps lock, scroll lock)

Oto:

Obrazki do druku są w rozdzielczości 300dpi.

Fuse bity dla attiny13: lfuse=0x7a, hfuse=0xff (domyślny)

Fuse bity dla atmega8: lfuse=0xdf, hfuse=0x99 (domyślny)

Schemat i płytkę zaprojektowałem tak, aby była kompatybilna z przyszłymi wersjami oprogramowania.

Jedyne co wydaje się niewykonalne na pierwszy rzut oka, to sterowanie diodami świecącymi w klawiaturze ze względu na brak połączenia zwrotnego do procesora attiny13. Jednak wydaje się, że jeśli to będzie konieczne, to jeden dodatkowy przewód do starej płytki załatwi sprawę, podczas, gdy w nowej będzie to uwzględnione.

Nie odpowiadam za jakiekolwiek uszkodzenia sprzętu wynikłe w wyniku montowania powyższego interfejsu! Ja swój zmontowałem i właśnie na nim piszę ten tekst – znaczy działa!

Na razie nie podaję kodów źródłowych; ukażą się wkrótce, po uporządkowaniu prototypowego kodu (który powstał na kolanie, „aby tylko działał”).

Czas tworzenia powyższego projektu od zera do momentu działania bez zarzutu – ok. 3 tygodni (etap pośredni – półdziałający prototyp zmontowany na jednym procesorze atmega8 gubiący bity ze względu na długą obsługę przerwań USB)

W projekcie użyłem doskonałej biblioteki avrusb do wyłącznie programowej obsługi usb. Ze względu na licencję jestem zobowiązany więc do umieszczenia kodu źródłowego.

Koszt części – ok. 15 zł – 5 piw!

  • attiny13 – 3-4 zł
  • atmega8 – 4-5 zł
  • rezystory, diody i rezonator- ok. 2 zł
  • płytka – tutaj różnie, można zmontować na uniwersalnej – ok 1 zł.
  • gniazdka – usb ok. 2 zł, ew. sam kabelek ok. 1 zł (do obcięcia), svideo ok 1 zł.

*) – nie działa z FreeBSD 5.4 i prawdopodobnie z innymi wersjami. Testowany na Debianie, MacOS X, Windows XP, działa bez zarzutu.


Top view

Widok z góry

Overview

Widok

PCB soldered

Zlutowana płytka

Fit in ISDN case

Umieszczony w obudowie od ISDN

Ready to work

Gotowy do pracy

DVD Plotter

czwartek, 20 Maj 2010

Projekt DVD Plotter z dwóch padniętych nagrywarek DVD.

Pomysł zrobienia projektu pojawił się w wyniku rozważań, co możnaby zrobić z dwóch nagrywarek zakupionych na Allegro na części (nie było w nich lasera :(

Zamysł był taki: zbudować ploter wykorzystując wyłącznie mechaniczne elementy napędu. Nie znalazłem podobnego projektu (nie licząc projektu zrobionego w Lego Robotics(r))

Pomysł powstawał przez ok. 2 tygodnie (aby maksymalnie uprościć konstrukcję).

Wcielenie pomysłu – od rozpoczęcia prac do działającego prototypu plotera to ok. 5 godzin.

Przeróbka DVD1:

  1. wyjęcie mechanizmu lasera, zachowanie silnika krokowego głowicy, oraz wymontowanie elektroniki
  2. odwrotne zamontowanie silnika szpindla (do góry nogami)
  3. przyklejenie do metalowego korpusu, na którym poruszała się głowica, silnika krokowego pionowo, aby mógł obracać płytę; założyłem na niego też gumkę od wentyla rowerowego (ulubiony szpargał Adama Słodowego)
  4. dorobienie złączki do tegoż silnika krokowego.

Przeróbka DVD2:

  1. wymontowanie elektroniki – płyty głównej
  2. podpiłowanie suwaka przesuwanego silnikiem (tak, aby nie robił pełnego ruchu, wówczas wypadała zębatka, ale ruch wystarczający do podniesienia (tak tak) pisaka.
  3. wymontowanie elektroniki laserka, zostawienie wózka; wywiercenie w nim dziury na pisak
  4. wklejenie pisaka dorobienie złączek do silnika krokowego oraz płytki mechanizmu eject
  5. doklejenie krańcowego wyłącznika, aby było wiadomo, gdzie jest głowica.

Reszta to elektronika na atmega8 – wbudowany jest tam zakodowany (1 wektor to 1 bajt: 1 bit penup/pendown, 3 bity wsp. x, 4 bity wsp. y) generator czcionek ploterowych(700 bajtów) obsługa dwóch silników krokowych, przy czym silnik obrotu talerza sterowany mikrokrokowo (dwukrotnie większa rozdzielczość w poziomie), algorytm Bresenhama rysowania linii.

Układ pobiera około 1 A przy pracy, 30 mA przy oczekiwaniu na wejście (atmega + klawiatura PS2), obsługa tejże klawiatury, oraz wyświetlacza LCD.

Pilot do Nikona D70

czwartek, 20 Maj 2010

Projekt pilota do NIKON D70.

pilot D70

pilot D70

Pomysł zrobienia projektu pojawił się nagle; rozważałem kupno oryginalnego pilota, ale trochę trzeba zachodu, aby taki zdobyć, poza tym jest duży, drogi i nieporęczny. A gdzie radość z własnoręcznie wykonanego czegoś?

Znalazłem informacje i inne projekty w Internecie (pierwszy potraktowałem bardziej teoretycznie, drugi był dawcą pomysłu o wykorzystaniu połączonych linii kontrolera):

http://www.bigmike.it/ircontrol (po angielsku)

http://www.caxapa.ru/lib/dslr_rem.htm (po rosyjsku ;) )

następnie uprościłem rzeczy (nie budujemy przecież elektrowni atomowej !?) – chciałem zmieścić wszystko w oszukańczym pilocie rozdawanym na lewo i prawo przez sprzedawców samochodów. Posiadacz takiego pilota może sprawdzić, czy wygrał samochód (zapewne nie).

d70remote_sch

Schemat pilota D70

Oszukany pilot ma w środku dość miejsca by ukryć kontroler AtTiny 13 w obudowie DIL, dwie zegarkowe baterie SR41 (7.8×3.6 mm, 45 mAh każda!) oraz diodę podczerwoną.

Mamy tu:

  • schemat
  • wsad do kontrolera attiny13
  • źródło firmware
  • Makefile

Pobieraj źródła wybierając „Zapisz na dysku” przy pomocy prawego przycisku myszy. Obrazki do druku są w rozdzielczości 300dpi.

Fuse bity dla AtTiny13: lfuse=0x6a (domyślne), hfuse=0xff (domyślne)

Dioda podczerwona zasilana jest przez 5 linii PORTB procesora pracujących jako źródło prądowe; daje do wystarczającą moc by uruchomić migawkę z dystansu 8m (przetestowanego) 19m maksymalnie(!).

Użyłem wyjść kontrolera jako źródeł prądowych aby zachować czystość schematu (ta, schematu), jako że porty w attiny mają symetryczną charakterystykę w pracy jako źródło, jak i otwarty kolektor.

W ekstremalnych temperaturach możliwe jest, że pilot przestanie działać. Spowodowane jest to zależnością częstotliwości wbudowanego generatora RC od temperatury.

W temperaturze pokojowej działa wyśmienicie.

Obydwa projekty, z których czerpałem ostateczne pomysły (zasilanie 5 liniami) mają firmware zakodowane w asemblerze. Programowałem w asemblerze w latach 80/90, nie muszę sobie udowadniać, że umiem ;) programowanie w C jest znaaaacznie szybsze. Zawsze mogę użyć mikrokontrolera z większą ilością pamięci. Czas mój jest znacznie droższy niż scalak za 3 zł.

Firmware napisałem w C (avr-gcc) w 5 minut(!), po skompilowaniu zajmuje mniej niż 300 bajtów.

Testowanie zajęło ok. godziny. Użyłem timingów ze strony bigmike i zastosowałem sugestię ze skróceniem impulsów i wydłużeniem pauz.

Jedyna wstawka asemblerowa to seria nopów i wdrów aby dostroić nadajnik do 38.4 KHz.

pilot D70 zbliżenie

pilot D70 zbliżenie

Może się zdarzyć, że twój attiny będzie miał nieco inną częstotliwość. Będzie trzeba wtedy dostroić generowaną częstotliwość przez wstawienie/usunięcie części nopów/wdrów w funkcji „signal”.

Pobór prądu podczas świecenia diody jest duży (nie mierzyłem, wyzerowałem rezystory z projektu sachara ;) ale trwa milisekundy. Obliczyłem że na jednych bateriach można odpalić migawkę tysiące razy.

Biorąc pod uwagę brak rezystorów, dioda może tracić z czasem jasność świecenia. Pożyjemy – zobaczymy.

UŻYJ WYŁĄCZNIE 3 VOLTOWYCH BATERII, W PRZECIWNYM WYPADKU SZYBKO USZKODZISZ PROCESOR I DIODĘ!!!

Testowałem pilota z 2x akku NiMH (2.4V), działał ok (z maksymalnego dystansu około 4 metrów).

Ostatecznie na 3V działa jeszcze lepiej (z maksymalnego dystansu okolo 8 metrów)

Nie odpowiadam za jakiekolwiek uszkodzenia sprzętu powstałe podczas montażu i testowania pilota!

Koszt części – ok. 3 zł – 1 kiepskie piwo!

AtTiny13 – 3-4 zł
dioda podczerwona – walała się gdzieś wokoło. Dobra jest każda o prądzie 20 mA.

pilot D70 gotowy

pilot D70 gotowy

qlatrviewer – QuickLookowa wtyczka.

środa, 19 Maj 2010

Wtyczka QuickLook qlatrviewer pozwala na szybki podgląd zawartości obrazu dysku ośmiobitowego Atari. Takie obrazy mają rozszerzenie „.atr”. Plugin powstał z potrzeby chwili – potrzebne było narzędzie do zaglądania do pliku .atr, lecz na MacOS X nie znalazłem. Może zbyt krótko szukałem – postanowiłem już nie szukać, a właśnie napisać plugin.

Link do projektu