esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

[RESOLU] problème afficheur LCD 16x2

Sun Aug 02, 2015 12:47 pm

Bonjour à tous,

Je suis nouveau sur le forum, et j'ai réussi jusque là à me débrouiller tout seul pour faire fonctionner ma framboise (GPIOs, Shifts registers, bouton d'interaction, afficheur LCD, servos avec carte I2C, etc.)
Seulement je rencontre quelques problèmes auxquels je ne trouve aucune information sur le net, comme si j'étais le seul à qui ça arrive.
Le truc le plus étrange pour le moment, c'est l'afficheur LCD 16x2.
J'ai réussi à le faire fonctionner, même à travers un petit programme avec bouton d'intéraction. Cependant depuis que j'ai mis à jour certaines librairies pour l'I2C (rien à voir normalement), changé de nappe, et modifié quelques GPIOs, bein l'afficheur affiche tout ce que je lui demande sauf le caractère "o" et "O". Du coup pour le moment je remplace le texte par un zero mais c'est à n'y rien comprendre. Dès qu'il doit afficher un "o" il se met soit à mettre toute la première ligne en noir, soit à mettre des caractère étrange sur toute la ligne (comme du Winding" un peu)

Ce que j'ai essayé pour le moment :
- modifier tous les GPIOs
- mettre une ligne en début de code en "latin" ou en "utf8"
- réinstaller raspbian sur une autre clé usb, refaire toutes les MàJ, réinstallé les librairies et packages nécessaires

rien à faire, plus moyen d'afficher un "o". Il m'aura fallu des heures avant de voir que c'était niquement ce caractère car en faisant des tests genre :

lcd.message("toto")

bein j'ai tout de suite pensé que c'était cramé, mais non.
D'ailleurs le test Adafruit_CharLCD_IPClock... marche très bien.

Si vous aviez une idée...
Last edited by esope on Sun Sep 13, 2015 7:33 am, edited 3 times in total.

listentruth
Posts: 284
Joined: Wed Dec 26, 2012 8:56 pm

Re: afficheur LCD 16x2

Sun Aug 02, 2015 7:22 pm

Tu pourrait poster ton code et celui d'Adafruit ?
Si ça marche pour l'un, ça devrait marcher pour l'autre, tu doit avoir un problème dans le code; les joies du dev :mrgreen:

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: afficheur LCD 16x2

Mon Aug 03, 2015 5:10 pm

Non en fait peu importe le code, là ça ne marche plus du tout pour le caractère "o" et dans le test Adafruit il n'y a pas de caractère "o" c'est pour ça que ça marche.
C'est le Adafruit_CharLCD_IP_Clock.....py par défaut qui marche. Si dans la ligne où c'est écrit "IP......" je remplace le "P" par un "o" ou un "O", bein l'écran pète un câble.

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: afficheur LCD 16x2

Wed Aug 19, 2015 2:14 pm

Trouvé !

J'ai changé d'afficheur, ça marche. :?:
Alors pour l'autre il fonctionne super bien, sauf pour ce caractère, bein je le garde pour des tests ^^. Il a du prendre un coup de chaud.

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 8:54 am

Bon, après quelques temps avec mon nouvel afficheur, le problème est réapparu...

J'ai fait quelques recherches et je suis tombé sur ce tableau :

Image

Et visiblement, les caractères qui font planter mon afficheur sont ceux de la dernière ligne en 1111 que j'ai encadré en rouge :
/ ? O _ o flèche

Si quelqu'un a une idée.
Merci

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 11:55 am

Hum tout le low nibble à 1 et ça plante!

Peux-tu afficher ton schéma et une photo de ton montage.

Je vérifierais les GNDs. Il est possible qu'il en manque un.

Cela m'est arrivé avec un cpu(Z80). tout marchait mais le cpu plantait sur le NOP.
Le problème étant une mauvaise connection du VCC au cpu.

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 1:02 pm

salut, merci

Je commence à bien connaître le câblage, pas d'erreur possible.
De plus quand je mets un nouvel écran au même endroit, ça marche...
Comme ça a fait pour le premier écran, je l'ai changé ça a résolu le problème, et là le deuxième a marché pendant quelques jours puis me fait pareil.
Il faut que je trouve d'où ça vient avant de "cramer un autre écran" (je ne sais pas si c'est réversible pour les deux premiers.

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 1:14 pm

Le schéma , ton code et une photo de ton montage s.v.p!

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 1:43 pm

J'ai 3 breadboard et mon code fait 500 lignes, mais le test d'Adafruit avec juste l'heure suffit pour mon problème

Voici le schéma, un peu simplifié, je n'ai pas trouvé tout ce que je voulais dans Fritzing. Pas évident de faire quelque chose de propre avec tout ça, et c'est la première fois que je m'en sers. Et je n'ai pas trouvé tout de suite le T-cobbler du coup j'ai mis directement sur les pin du Rpi.
Le rouge c'est toujours du 5V et le noir toujours la masse, et le orange toujours le 3.3V. Pour les autres couleurs c'est au hasard.


Image

Et voici une photo :

Image

Et pour le code, le suivant fonctionne, si je remplace (ligne 24) "IP" par "OP" par exemple ou par "_P", ça bug :
(mes pins RS, E, et les 4 DB sont bien renseignés dans "Adafruit_CharLCD.py")

Code: Select all

#!/usr/bin/python 
2 
 
3 from Adafruit_CharLCD import Adafruit_CharLCD 
4 from subprocess import * 
5 from time import sleep, strftime 
6 from datetime import datetime 
7 
 
8 lcd = Adafruit_CharLCD() 
9 
 
10 cmd = "ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1" 
11 
 
12 lcd.begin(16, 1) 
13 
 
14 
 
15 def run_cmd(cmd): 
16     p = Popen(cmd, shell=True, stdout=PIPE) 
17     output = p.communicate()[0] 
18     return output 
19 
 
20 while 1: 
21     lcd.clear() 
22     ipaddr = run_cmd(cmd) 
23     lcd.message(datetime.now().strftime('%b %d  %H:%M:%S\n')) 
24     lcd.message('IP %s' % (ipaddr)) 
25     sleep(2) 

PS : je reprécise qu'avec un autre afficheur neuf, ça va marcher quelques temps.

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 8:44 pm

Tout semble en ordre.

J'ajouterais un autre GND venant du raspberry Pi à la broche GND du LCD. Je trouve que le GND bus se promène d'un protoboard à l'autre avec seulement un fils.

Le LCD est alimenté avec 5V. Peut être qu'il y a un problème avec le signal 3.3V. Il faudrait peut être ajouter une interface 3.3V à 5V entre les gpios et le LCD. https://www.sparkfun.com/products/12009 P.S. Il en faut deux.

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 9:13 pm

En passant il est possible de lire l'IP sans passer par la console

Code: Select all

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8',80))
IP = s.getsockname()[0]
print(IP)
s.close()
Tu peux changer le '8.8.8.8' par l'IP de ton routeur ou tout autre site valide.
8.8.8.8 est le serveur DNS de google.
Last edited by danjperron on Sun Sep 13, 2015 12:06 am, edited 1 time in total.

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 9:42 pm

merci,
oui ok je vais rajouter des masses. J'avais même dans l'idée de me servir de toutes les masses du Rpi pour tout mon circuit...
Je ne comprends pas à quoi sert ce convertisseur. Je n'ai pas besoin de 3.3V pour mon afficheur, et si j'ai besoin d'un 3.3V, le raspberry en fourni (je n'ai pas saisi en fait).

Merci pour l'IP

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: re-problème afficheur LCD 16x2

Sat Sep 12, 2015 10:03 pm

Ton LCD display et sur le 5V donc il est possible qu'il y a un problème avec une logique 3.3V.

Le convertisseur 3.3V à 5V assure que les niveaux 0 et 1 correspondent.

Certains I.C. ont des problèmes lorsqu'ils sont alimentés sur le 5V et la logique est 3.3V. Le ViH est plus élevé que 3.3V et donc les valeurs 3.3V High sont détectées Low.

Mais j'ai l'impression que c'est un problème de 0V(GND).

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: re-problème afficheur LCD 16x2

Sun Sep 13, 2015 7:32 am

Alors chapeau à toi, parce que même si mon branchement était bon, et bien il y avait bel et bien un défaut de masse (pas assez de masse je ne sais pas si ça se dit). :D je m'explique :
Il y a en tout 3 masses nécessaires pour l'écran (VSS, R/W, et K).
Bein j'ai mis chacune de ces masses à des GND différents sur le Rpi. Et là ! Magie ! tous les caractères en 1111 passent !

J'ai donc testé mon ancien écran que je pensais avoir un peu cramé, il marche aussi !

J'ai pourtant passé des heures sur cette panne mais jamais je n'aurais retouché aux masses sans ton aide.

En revanche maintenant que ça fonctionne, j'ai retiré toutes les masses que j'ai rajouté, et laissé comme c'était avant (donc avec une masse commune qui traverse la breadboard), et ça marche toujours, comme si ça avait débloqué quelque chose. Pour éviter les conneries j'ai quand même remis les masses partout après pour être sûr.

Un grand merci en tout cas !

JumpZero
Posts: 1084
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 8:04 am

+1
Bravo Daniel
Encore une fois tu nous épates.
Ah les problèmes de masses... on a souvent tendance a raisonner en logique informatique, binaire, ça marche ou ça ne marche pas. Mais c'est faux car derrière il y a des circuits qui sont sensibles a plein de paramètres. Je me suis battu presque un an avec une sonde qui disparaissait de mon reseau 1wire de manière presque régulière et cyclique toute les semaines. J'ai fini par comprendre qu'il y avait un problème de réflexion du a un mauvais câblage (une branche trop longue en dérivation), ça faisait une capacité qui mettait environ une semaine a se charger... puis plantait le dialogue sur le bus.

En tout cas content que ton probleme soit resolu.
La persévérance paie!
--
Jmp0

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 8:57 am

Oui, de toute façon quand mon projet sera terminé, j'essaierai de faire insoler une plaque car trop de faux contacts possible et pas assez stable.
Quand j'approche mes doigts tout près de la masse de fils (sans toucher), les shifts registers font ce qu'ils veulent et ça fait un très beau chenillard sur mes leds associées, c'est rigolo mais c'est lourd ^^

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 1:20 pm

"Ground loop" est un problème commun et il est très répandu. Lorsqu'il y a plusieurs composantes branchées il faut faire attention au courant qui passe . Un fils a une résistance et s'ils sont branchés en "daizy chain", c'est ton cas, vont perdre du voltage entre chaque point de ton montage.

Une méthode simple est de minimiser la résistance. Doubler les fils diminuera la résistance.

La meilleure façon est de créer un point commun ou tout les modules branchent leurs 0V. (Star mode). Il est toutefois pas toujours possible.

Sur de longue distance il est préférable d'utiliser un autre adaptateur et de minimiser le courant qui passe dans le fils qui relie les deux modules.

P.S. C'est aussi valide pour l'alimentation , le V+, mais moins problématique.

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 1:39 pm

ça marche je prends note !!
merci

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 1:39 pm

Et pourquoi le problème était seulement sur le 'Oo..' est simple.

Lorsque l'un des GPIOs est à zéro il sert de GND et donc réduit le ground loop.

Donc quand tout le nibble est à '1', lors de l'ascii 'O', et bien le GND sur le LCD a un voltage trop élevé pour déterminer que le voltage appliqué sur les broches de data soit une logique 1.

Tout est en courant donc tes servos tirent de la puissance et augmentent le "ground loop".


Si tu fais un PCB, pense à un ground plate. ( Un layer pour le GND). Désolé pour les termes anglais. Je suis dans le domaine de l'électronique mais j'ai toujours travaillé pour des firmes ou tout se passe en anglais.

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 2:32 pm

Oui j'ai à peu près compris la première partie, pour la deuxième je vais faire des recherches :D
Mais ça se tient en effet !

JumpZero
Posts: 1084
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 4:17 pm

Hi
danjperron wrote: Désolé pour les termes anglais. Je suis dans le domaine de l'électronique mais j'ai toujours travaillé pour des firmes ou tout se passe en anglais.
Yes we can see that, in French the word "voltage" isn't correct we must use "tension"
And my ears are burning everytime I read it in the forums :lol:
Mais vous êtes tout excusé cher cousin d'outre Atlantique :lol:
Pareil "amperage" que trop de gens utilisent est aussi un anglicisme c'est "courant" ou "intensité"

Amicalement
--
Jmp0

esope
Posts: 50
Joined: Sun Aug 02, 2015 12:30 pm

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 4:25 pm

et si votre ohmage se rapport à votre plumage... :lol:

totoharibo
Posts: 4359
Joined: Thu Jan 24, 2013 8:43 am

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 5:53 pm

je reviens en arrière.Pas besoin de convertisseur 5/3.3V
Cela serait nécessaire si on voulait lire l'afficheur.
Quelle utilité ?
Donc chez moi la pin R/W est plantée à GND.

Pour les niveaux de seuil 3.3/5V jamais eu de problème quoique cela serait limite d'après la doc Hitachi (Vih min 3.5V).
Mais le constructeurs sortent souvent ceintures et bretelles :-)

danjperron
Posts: 3454
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: [RESOLU] problème afficheur LCD 16x2

Sun Sep 13, 2015 7:19 pm

Tu as raison!

Le convertisseur n'est pas nécessaire mais si le convertisseur était la , nous aurions jamais eu le problème de boucle de terre. Le ViH serait proche du 5V!

Une bonne répartition du courrant en évitant d'utiliser un fils en série pour accumuler la perte de tension due à la résistance du fils nous permettra aussi de résoudre le problème.

La bonne loi d'Ohm V= RI

Return to “Français”