Un afficheur LCD USB sous Linux avec un chien de garde et des boutons

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to fr John Perr

AboutTheAuthor:[A small biography about the author]

Guido aime Linux parce que c'est un paradis pour ceux qui veulent d�velopper leur propre logiciel ou mat�riel.

Abstract:[Here you write a little summary]

Cet article est le r�sultat de retours tr�s positifs re�us suite aux autres articles traitant d'�lectronique que j'ai �crits. Vous, lecteurs de LinuxFocus, �tes vraiment un public fantastique! Certains d'entre vous voulaient savoir comment interfacer le bus USB. Voici donc une solution �l�gante. Nous utilisons l'afficheur LCD de l' article de Mai 2002 que nous ferons fonctionner avec le bus USB. L'ensemble est aliment� � partir du bus USB ce qui rend inutile toute alimentation suppl�mentaire.

Pour cet article, vous avez besoin d'au moins une installation partielle de l'environnement de d�veloppement AVR pour Linux. Son installation est d�crite dans l'article: Programmer le micro-contr�leur AVR avec GCC.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Introduction

L'USB est pratique parce que c'est une interface moderne et qu'il offre la possibilit� d'alimenter les �quipements directement depuis le bus. Les connecteurs sont petits et un petit c�ble peut transporter une grand volume de donn�es. Voila pour les avantages de l'USB. L'inconv�nient r�side dans la difficult� de r�alisation mat�rielle � cause des hautes fr�quences et du protocole plut�t complexe. Jetez simplement un oeil aux sp�cifications ( http://www.usb.org/developers/, Regarder les sp�cifications 1.1) et vous serez impressionn�s. Elles font 327 pages et sont difficiles � comprendre. Cela explique pourquoi il existe autant d'implantations d�fectueuses des �quipements USB. Une introduction plus abordable se trouve sur http://www.beyondlogic.org/ mais la sp�cification est toujours aussi complexe.

Que faire? Comment interfacer notre micro-contr�leur au bus USB? Une entreprise �cossaise, FTDI a une solution (http://www.ftdichip.com). Ils proposent le circuit FT232BM qui implante le bus USB d'un cot� et une interface s�rie RS232 de l'autre. En d'autres termes, il suffit de remplacer le MAX232 qui servait auparavant � l'adaptation de niveau sur les lignes RS232 par le circuit FT232BM et le tour est jou�.

Le pilote

Le FT232BM est une v�ritable solution multi plate-forme. Les pilotes sont disponibles pour plusieurs syst�mes d'exploitation. Le module du noyau s'appelle ftdi_sio et il est "open source". Il fait partie du noyau Linux standard. Le FT232BM offre plus qu'une simple interface USB-RS232 et le module du noyau Linux est toujours en d�veloppement afin d'en int�grer toutes les fonctions. La partie USB vers RS232 est toutefois pr�te et j'ai pu, par exemple, utiliser un noyau standard Redhat 7.3 (2.4.18) sans le recompiler ni le modifier. Il suffit de le brancher.

ftdi_sio est d�velopp� sur http://ftdi-usb-sio.sourceforge.net/.

Avec ma Redhat 7.3, tous les modules se chargent automatiquement quand je branche le connecteur USB. Si cela ne marche pas avec votre distribution, v�rifiez que vous avez les modules suivants(pour USB-UHCI):

/sbin/lsmod usb-uhci
/sbin/lsmod usbcore
/sbin/lsmod usbserial
/sbin/lsmod ftdi_sio

Le fichier device qui communique avec le mat�riel est /dev/ttyUSB0

Les d�veloppeurs de ftdi_sio recommendent au moins un Kernel 2.4.20 mais vous pouvez constater qu'un 2.4.18 fonctionne aussi (au moins pour les fonctions dont nous avons besoin ici).

Le sch�ma

Le circuit est simple. Le FT232BM est ins�r� entre les lignes Rx/Tx du micro-contr�leur et le connecteur USB. Un quartz de 6 Mhz et quelques autres composants d�crits dans la note d'application de FTDI sont requis. Le pot de ferrite (sur le sch�ma � droite) est une petite bobine qui filtre les hautes fr�quences (l'USB est cadenc� � 48Mhz). Vous pouvez aussi enrouler 10 tours de fil fin autour d'une r�sistance de 1K et l'utiliser comme bobine.

schematic
Il est n�cessaire de surveiller la consommation de l'alimentation. Elle doit �tre inf�rieure � 100mA pour ce type de montage aliment� par le bus USB et le mode "suspend" de l'USB doit �tre support�. Dans ce dernier cas, quand la broche "sleep" du FT232BM passe au niveau bas, la consommation doit �tre inf�rieure � 0,5mA. Cette derni�re exigence est tr�s contraignante. L'AVR dispose d'un mode "idle" dans lequel il consomme moins de 2mA et d'un mode "power down" o� cette consommation descend � 20uA. Etant donn� qu'il est plus facile de r�veiller le micro-contr�leur � partir du mode "idle", j'ai d�cid� de d�roger un peu � la sp�cification USB. L'�clairage optionnel arri�re de l'afficheur sera �teint et l'ensemble du circuit consommera ainsi 3mA. C'est plus que 0,5mA mais le circuit h�te USB n'est pas capable de mesurer assez pr�cis�ment un courant pour le d�tecter. Ca devrait fonctionner.

Ceci �tant dit, je dois avouer que je n'ai pas d'ordinateur qui supporte le mode "suspend". Je n'ai donc pas pu tester ce mode. Si vous avez un ordinateur qui le supporte, probablement un portable moderne, alors je vous invite � faire l'essai et � m'informer du r�sultat.

Le reste du montage est presque identique � celui pr�sent� dans l'article de mai 2002. Je n'entrerai donc pas plus dans les d�tails.
Vous pouvez cliquer sur l'image pour l'agrandir. Les fichiers eagle sont inclus dans le paquet qui contient le logiciel. Il est t�l�chargeable � partir d'un lien � la fin de cet article.
board
La platine est con�ue en simple face et seule la couche bleue doit �tre grav�e. Les lignes rouges sont des ponts de c�blage.

Le connecteur USB de Type-B mont� sur ce circuit a le brochage suivant:
type B Receptacle

Travailler avec des composants CMS

Les composants CMS ont de bonnes caract�ristiques m�caniques et �lectriques mais sont un v�ritable cauchemar pour les �lectroniciens amateurs. Vous devez vraiment �tre dou� pour la soudure et au moins la partie d�di�e au composant CMS doit �tre dessin�e tr�s proprement. Autrement dit, ce circuit n'est pas destin� aux d�butants. Regardez la liste des alternatives ci-dessous si vous n'�tes pas certain de pouvoir dessiner le circuit ni souder le circuit int�gr�.

Soudez le circuit CMS sur la platine en premier.
Pour cette op�ration, il faut d�poser un peu de soudure sur les pistes qui re�oivent le circuit puis d�poser un fin film de p�te � souder sp�ciale CMS (certains l'appelle soudure de miel car elle ressemble � du miel). Il existe aussi une soci�t� Allemande appel�e "Kontakt Chemie" qui fabrique un vernis en bombe du nom de "Lötlack".Il est possible d'utiliser le "Lötlack" en lieu et place de cette soudure "miel" si vous pr�f�rez.

Nettoyez votre fer � souder. Il ne doit pas rester de soudure sur la panne. Positionnez ensuite le FT232BM tr�s exactement. Appuyez doucement sur chaque patte de la puce avec votre fer � souder sans ajouter de soudure. ft232SMD

Ce proc�d� fonctionne parfaitement. La taille du fer � souder importe peu. Utilisez un fer ordinaire et assurez-vous de la propret� de la panne avant de toucher les pattes de la puce. Je d�conseille l'utilisation de grille-pain ou toute autre m�thode barbare qui risquerait fortement d'endommager la puce.

Les essais

Je sugg�re de proc�der en deux �tapes. Connectez d'abord le circuit sans ins�rer le micro-contr�leur AVR dans son support. Linux devrait reconna�tre la puce FTDI et ainsi la faire appara�tre dans /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

Ins�rez ensuite le micro-contr�leur AVR et chargez un programme de test qui fera clignoter la led. D�compressez le paquetage logiciel linuxusblcd (voir � la fin de cet article) et tapez :

make testload0

Le c�ble de programmation et le connecteur USB doivent tous les deux �tre branch�s.
Si le test est positif, vous pouvez �tre certains que le micro-contr�leur fonctionne.

Apr�s cela, vous pouvez charger le logiciel complet dans le micro-contr�leur:

make load

Vous pouvez utiliser "ttydevinit /dev/ttyUSB0" pour initialiser la connection USB s�rie ainsi que "cat > /dev/ttyUSB0" pour dialoguer avec le circuit.

ttydevinit /dev/ttyUSB0
cat > /dev/ttyUSB0
D=hello world

Ceci �crira "hello world" sur l'afficheur. Voir l'article de mai 2002 pour les d�tails. Le code de l'article de mai 2002 contient aussi un programme nomm� llp.pl qui peut servir � dialoguer interactivement avec votre ordinateur en utilisant les deux boutons sur l'afficheur LCD. Il est r�utilisable ici.

... et voici l'afficheur en fonctionnement (les boutons n'�taient pas branch�s au moment de la photo,le FT232BM est cot� cuivre):
usb lcd

Autres solutions

Bien que le circuit pr�sent� ici soit simple, il n'est pas destin� aux d�butants � cause des difficult�s que posent la soudure de la puce CMS. Une solution commerciale toute pr�te peut alors �tre envisag�e. L'inconv�nient tient au fait que vous ne disposerez pas normalement du chien de garde, des leds et des boutons. Les prix sont raisonnables pour ces montages tout pr�ts. L'ensemble des composants utilis�s dans cet article co�te environ 30 Euros et les afficheurs commerciaux sont dans le m�me ordre de prix.

Malheureusement, la plupart des afficheurs commerciaux utilisent leur propre identificateur m�me s'ils utilisent la puce FTDI. Cela veut dire que le module du noyau ne les reconna�tra pas car le pilote USB est bas� sur ces nombres. Vous aurez � modifier les sources du noyau et � le recompiler. De futures versions du noyau pourraient fonctionner si le code a �t� modifi� par quelqu'un d'autre.

R�f�rences