[LinuxFocus-icon]
Strona G��wna  |  Mapa Serwisu  |  Indeks  |  Szukaj

Nowo�ci | Archiwum | Linki | O Nas
Ten dokument jest dost�pny w nast�puj�cych j�zykach: English  Castellano  ChineseGB  Deutsch  Francais  Russian  Turkce  Polish  

[Photo of the Author]
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

[Illustration]

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.

schematic
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.
board
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:
type B Receptacle

 

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.ft232SMD

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�):
usb lcd
 

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.
 

Zr�d�a informacji

 

Dyskusja dotycz�ca tego artyku�u

Komentarze do dyskusji:
 Strona talkback 

Strona prowadzona przez redakcj� LinuxFocus
© Guido Socher, FDL
LinuxFocus.org
t�umaczenie:
en --> -- : Guido Socher (homepage)
en --> pl: Mariusz Kozlowski <sp3fxc(at)linuxfocus.org>

2003-04-18, generated by lfparser version 2.33