Guido Socher (homepage)
O Autorze:
Guido lubi Linux'a poniewa� jest to raj dla ludzi, kt�rzy chc� rozwija� ich w�asne oprogramowanie i sprz�t.
Translated to English by:
Mariusz Kozlowski <sp3fxc(at)linuxfocus.org>
Zawarto��:
|
Wy�wietlacz USB LCD z watchdog'iem i przyciskami
Notka:
Ten artyku� to odpowied� na bardzo pozytywny odzew na moje artyku�y do tej pory napisane.
Wy, czytelnicy LinuxFocus, jeste�cie �wietnymi odbiorcami! Niekt�rzy z was chcieli wiedziec jak pos�ugiwa� si� magistral� USB.
Oto dobry przyk�ad. U�yjemy wy�wietlacza LCD z artyku�u z Maja 2002
i uruchomimy go na USB. Ca�o�� b�dzie zasilana z magistrali USB. Dlatego nie potrzeba �adnego dodatkowego �r�d�a zasilania.
Do zrealizowania tego potrzebna b�dzie przynajmniej cz�� �rodowiska Linux AVR. Jak to zrobi� jest opisane w tym artykule: Programowanie Mikrokontroler�w AVR z u�yciem GCC.
_________________ _________________ _________________
Wprowadzenie
USB jest bardzo dobre poniewa� jet to nowoczesny interfejs, kt�ry oferuje mo�liwo�� zasilania urz�dza� bezpo�rednio z magistrali USB.
Z��cza s� ma�e i du�e ilo��i danych mog� zosta� przetransportowane przez taki "ma�y" kabel. To zdecydowanie pozytywne cechy USB.
Gorsz� stron� tego rozwi�zania jest trudno�� w projektowaniu sprz�tu z powodu wysokich cz�stotliwo�ci jak i roznie� z powodu raczej skomplikowanego protoko�u komunikacyjnego.
Wystarczy spojrze� na specyfikacje (http://www.usb.org/developers/,
zobacz specyfikacje 1.1) i b�dziesz w szoku. To 327 stron, d�ugich i ci�kich do zrozumienia.
Nic wi�c dziwnego, �e jest tak wieeele b��dnych implementacji urz�dze� USB.
Bardziej przyjazne dla u�ytkownika wprowadzenie mo�na znale�� tu http://www.beyondlogic.org/
ale specyfikacja ta jest nadal skoplikowana.
Co robi�? Jak mo�emy pod��czy� nasz Mikrokontroler do szyny USB? FTDI - Szkocka firma, znalaz�a rozwi�zanie (http://www.ftdichip.com).
Oferuj� chip kt�ry ma zaimplementowan� obs�ug� szeregowego interfejsu USB.
Z jednej strony chipu FT232BM znajduje sie rs232, a z drugiej USB. Innymi s�owy poprostu wymieniasz uk�ad MAX232, kt�ry poprzednio u�ywa�e�
do konwersji napi�� na liniach RS232, na uk�ad FT232BM i jest ju� ok.
Sterownik
FT232BM to rozwi�zanie z pe�nym krosowaniem. Drivery s� dost�pne dla wielu system�w operacyjnych.
Modu� kernela nazywa si� ftdi_sio i jest odstarczany z otwartym �r�d�em. Jest on cz�ci� standardowego kernela.
Uk�ad FT232BM oferuje znacznie wi�cej ni� zwyk�� konwersj� USB do rs232, a modu� kernela obs�uguj�cy ten uk�ad jest
ci�gle rozwijany aby zaimplementowa� nowe funkcje. Jednak�e konwersja USB na rs232 jest ju� stabilna i by�a gotowa do u�ycia ju�
wraz z standardowym kernelem Redhat 7.3 (2.4.18) bez rekompilacji czy jakejkolwiek modyfikacji. Po prostu si� to w��cza.
ftdi_sio jest dost�pne pod sdresem http://ftdi-usb-sio.sourceforge.net/.
W moim systemie Redhat 7.3 wszystkie modu�y s� �adowane automatycznie kiedy pod��czam si� do z��cza USB.
Je�li nie chce to wsp�pracowa� z Twoj� dystrybucj� Linux'a sprawd� czy masz za�adowane nast�puj�ce modu�y
(dla USB-UHCI):
/sbin/lsmod usb-uhci
/sbin/lsmod usbcore
/sbin/lsmod usbserial
/sbin/lsmod ftdi_sio
Plik urz�dzenia do komunikacji ze sprz�tem to:
/dev/ttyUSB0
Tw�rcy ftdi_sio zalecaj� kernel w wersji conajmniej 2.4.20 ale jak wida� dzia�a to r�wnie� poprawnie z wersj� 2.4.18
(przynajmniej dla funkcji jakich tu u�ywamy).
Schemat
Uk�ad jest bardzo prosty. Musisz pod��czy� uk�ad FT232BM
pomi�dzy linie Rx/Tx mikrokontrolera, a z��cze USB. Potrzebny jest tak�e rezonator kwarcowy 6 MHz
i inne cz��i, kt�re s� opisane w specyfikacji z FTDI. Ferrytowy koralik (na schemacie po prawej) jest malutk� cewk� filtruj�c�
wysokie cz�stotliwo�ci (magistrala USB pracuje na 48MHz). Mo�esz r�wnierz nawin�� 10 zwoj�w cienkiego drutu na rezystorze 1k i u�ywa� tego jako cewki.
Jedna z rzeczy na jakie trzeba zwr�ci� uwag� to pob�r mocy. Nie mo�esz pobiera� wi�cej ni� 100mA je�li Twoje urz�dzenie jest zasilane z szyny USB.
Na dodatek Twoje urz�dznie musi wspiera� tryb "USB suspend". Gdy pin zwany "sleep" uk�adu FT232BM zmieni stan na niski
Twoje urz�dzenienie mo�e pobiera� wi�cej ni� 0.5mA. To ostatnie wymaganie jest jednak�e bardzo trudne do zaimplementowania.
AVR wspiera "idle mode" gdzie pob�r pr�du jest mniejszy ni� 2mA oraz tryb "power down" gdzie zu�ywane jest tyko 20uA.
Wydaje si� jednak �atwiejszym obudzenie Mikrokontrolera z trybu "idle mode".
Dlatego zdecydowa�em si� u�y� "idle mode" nawet je�li jest to troche niezgodne z specyfikacj�.
Opcjonalne pod�wietlanie LCD b�dzie wy��czone i ca�y uk�ad zu�yje mniej ni� 3mA.
3mA to wi�cej ni� 0.5mA ale kontrolery USB w komputerze nie potrafi� mierzy� poboru pr�du wi�c w�a�ciwie tego nie zauwa��.
Powinno to zadzia�a�.
Powiedziawszy to wszystko musz� przyzna�, �e nie posiadam komputera wspieraj�cego tryb "suspend".
Dlatego te� nie mod�em przetestowa� tej cz�ci.
Je�li masz komputer, np. nowoczesny Laptop wspieraj�cy "suspend", prosz� przetestuj to i daj mi zna� jakie by�y rezultaty.
Reszta uk�adu jest prawie idenyczna do tej prezentowanej w Maj 2002.
Z tego powodu nie b�d� dalej t�umaczy� szczeg��w budowy.
Mo�esz klikn�� na schemat aby zobaczy� wi�ksze zdj�cie. Pliki "eagle" s� spakowane razem z oprogramowaniem.
Mo�esz je ��i�gn�� na ko�cu artyku�u.
P�ytka to jednostronny laminat gdzie niebieskie linie to �cie�ki.
Linie czerwone to przewody (zwory).
Z��cze kt�rego potrzebujesz do tego uk�adu to USB Type-B i ma ono nastepuj�ce wyprowadzenia:
Praca z uk�adami SMD
Uk�ady SMD maj� dobre mechaniczne i elektryczne w�a�ciwo�ci ale s� koszmarem dla domowych elektronik�w hobbyst�w.
Naprawd� potrzeba sporo umiej�tno�ci w lutowaniu przynajmniej w cz�ci p�ytki gdzie jest zamontowany uk�ad SMD. Musi by� on zamontowany czysto i starannie.
Innymi s�owy nie jest to zaj�cie dla pocz�tkuj�cych. Zobacz na alternatywne rozwi�zania poni�ej je�li nie jeste� pewien czy potrafisz wykona� odpowiednio t� p�ytk� i wlutowa� uk�ad.
Wlutuj uk�ad na p�ytk� zanim przylutujesz cokolwiek innego.
Aby wlutow� uk�ad nanie� niewielk� ilo�� cyny na ko�c�wki �cie�ek na p�ytce gdzie b�dzie sie znajdowa� ten uk�ad.
Nast�pnie nanie� cienk� warstw� pasty lutowniczej SMD (niekt�rzy ludzie zw� j� mi�d lutowniczy poniewa� wygl�da ona jak mi�d).
Jest r�wnie� niemiecka firma zwana "Kontakt Chemie", kt�ra produkuje lakier w spray'u zwany "Lötlack".
Mo�esz u�y� tego spray'u "Lötlack" zamiast pasty lutowniczej je�li chcesz.
Wyczy�� grot lutownicy. Nie mo�e sie na nim znajdowa� cyna ani zanieczyszczenia.
Nast�pnie u�� dok�adnie FT232BM. Delikatnie przyciskaj ka�de wyprowadzenie uk�adu grotem lutownicy.
Nie nak�adaj �adnej dodatkowej cyny.
Ta procedura sprawdza si� doskonale. Nie jest istotne czy masz ma�� lutownic�. Mo�na u�y� zwyk�ej lutownicy ale upewnij si� ze jej grot jest czysty
przed przytkni�ciem go do wyprowadze� uk�adu. Nie polecam metod typu kuchenka do gotowania czy innych topornych metod.
Jest bardzo prawdopodobne, �e uszkodzisz uk�ad stosuj�c inne metody.
Test
Polecam testowanie ca�o�ci w dw�ch etapach. Najpierw pod�acz uk�ad bez kontolera AVR w podstawce.
Linux powonien rozpozna� uk�ad FTDI i powiniene� zobzczy� nast�puj�cy wpis w /proc/bus/usb/devices:
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2
Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=
1
P: Vendor=0403 ProdID=6001 Rev= 2.00
S: Manufacturer=FTDI
S: Product=USB <-> Serial
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 90mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff
Driver=serial
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
Po wykonaniu tego w�� Mikrokontroler AVR i za�aduj program, kt�ry spowoduje miganie diod LED.
Rozpakuj pakiet linuxusblcd (patrz sekcja download na koncu tego artyku�u) i wpisz:
make testload0
Kabel programatora i USB musz� by� pod��czone.
Je�li ten test si� powiedzie mo�esz by� pewien, �e Mikrokontroler b�dzie pracowa�.
Po tym mo�esz za�adowa� kompletny software do Mikrokontrolera:
make load
Teraz mo�esz ju� u�y� "ttydevinit /dev/ttyUSB0" do inicjalizacji po��czenia szeregowego USB i z pomoc� "cat > /dev/ttyUSB0" mo�esz
"m�wi�" do uk�adu.
ttydevinit /dev/ttyUSB0
cat > /dev/ttyUSB0
D=hello world
To spowoduje wypisanie "hello world" na wy�wietlaczu. Szczeg�owy opis znajduje si� w wydaniu Maj 2002.
Kod zawarty w wydaniu Maj 2002 r�wnie� zawiera program llp.pl, kt�ry mo�e by� u�yty do interaktywnej komunikacji z twoim
komputerem za pomoc� dw�ch przycisk�w na wy�wietlaczu LCD. Mo�esz u�y� go tutaj ponownie.
... a oto zdj�cie pracuj�cego wy�wietlacza (przyciski nie by�y pod��czone podczas robienia zdj�cia, FT232BM jest pod p�ytk�):
Alternatywy
Pomimo i� uk�ad prezentowany tutaj jest bardzo prosty nie jest to dla pocz�tkuj�cych
z powodu odpowiednich umiej�tno�ci jakie trzeba posiada� aby poprawnie wlutowa� uk�ad typu SMD.
Dlatego mo�na rozwa�y� kupno komercyjnego rozwi�zania je�li nie czujesz sie pewnien w lutowaniu SMD.
Wad� tego jest fakt i� normalnie nie dostaniesz wszystkich dodatk�w jak watch dog, LED'y i przyciski.
Przewa�nie dostaniesz tylko sam wy�wietlacz LCD. Ceny za gotowy komercyjny wu�wietlacz pod��czany do USB s� w miar� rozs�dne.
Same cz�ci wymienione w tym artykule to koszt oko�o 30 EUR. Koszt gotowych wy�wietlaczy jest bardzo zbli�ony do tej warto�ci.
Niestety wi�kszo�� komercyjnych produkt�w ma oznaczenia w�asnego producenta nawet je�li w rzeczywisto��i bazuj� one na uk�adzie ftdi.
Oznacza to, �e modu� do kernela ich nie rozpozna poniewa� dzia�anie sterownika USB opiera si� na tych oznaczeniach.
W takim przypadku mo�na wyedytowa� odpowiedni fragment �r�d�a i wprowadzi� zmiany. P�niejsze wersje kernela mog� ju� pracowa� poprawnie
je�li kto� wprowadzi stosowne zmiany.
- http://www.matrixorbital.com/ U�ywaj� uk�adu ftdi 232bm ale z w�asnymi oznaczniami. Wy�wietlacz nazywa si� LK202-24-USB.
- http://www.usblcd.de/ To rozwi�zanie ma swoje w�asne wsparcie do kernela. Jest to cz�� standardowego kernela.
B�dzie pracowa� na ka�dym sprz�cie z kernelem w wersji 2.4.x. Przypuszczalnie bardzo dobre rozwi�zanie.
- http://crystalfontz.com/ Ich wy�wietlacze USB (632 i 634) u�ywaj� FT232AM z w�asnymi oznaczeniami.
- http://www.cwlinux.com/eng/products/products_lcd.php Odkry�em t� stron� ostatnio.
Maj� LCD'ki z klawiaturk�. Niestety s� one dwa razy dro�sze ni� to co opisa�em w artykule.
Zr�d�a informacji
Dyskusja dotycz�ca tego artyku�u
Komentarze do dyskusji:
2003-04-18, generated by lfparser version 2.33