Aller au contenu


Photo
- - - - -

Raspberry pi et ecran lcd sur I2C


  • Veuillez vous connecter pour répondre
10 réponses à ce sujet

#1 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 27 décembre 2013 - 08:19

Bonsoir,

Je voudrais interfacer mon ecran lcd i2c avec mon raspberry pi.

J'ai essayer longuement avec i2clibraries en suivant cette pages
mais rien à faire ça ne fonctionne pas.

Bref, quelqu'un a déjà fait ça avec succes? Quelle(s) librairie(s) utilisez vous svp ?

merci.

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#2 sky99

sky99

    Habitué

  • Membres
  • PipPip
  • 271 messages
  • Gender:Male

Posté 29 décembre 2013 - 01:07

Bonjour!
Je ne sais pas exactement quel écran tu utilises, mais pour ma part j'ai pris un LCD classique avec un MCP23017 en I2C pour le contrôler via un pi.
J'en ai fait un tutoriel à cette adresse :
http://forum.pcinpact.com/topic/165594-raspberry-pi-fabriquons-des-trucs/page-2#entry2749081
Je me suis basé sur les bibliothèques développées par Adafruit.
J'espère que ça te sera utile.

Mon site principal : http://www.nagashur.com/ (format blog, un wiki y est aussi)

Mon profil sur hackaday.io : https://hackaday.io/sky99 (hackerspace en anglais, j'y ai plein de projets)

Mon Github : https://github.com/sarinkhan/


#3 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 29 décembre 2013 - 12:26

En fait j'utilise cet ecran

Image IPB
Image IPB

C'est d'ailleurs pour celà que j'ai essayer avec ce lien là car il semble que ce soit le même écran qui est utilisé (je vois ça au code arduino mentioné qui est le même que dans la page wiki de l'écran et aussi au fait que les broches correspondent)
Cet écran est interfacé avec un pca8574, j'ai testé les connexion au multimètre et j'ai repéré le brochage par précaution... c'est bien celui donné dans le code à savoir: EN=2|RW=1|RS=0|D4=4|D5=5|D6=6|D7=7|backlight=3 (déterminé par élimination).

Un petit coup de
sudo i2cdetect -y 1
me dit que mon adresse est bonne et donc que mon écran est reconnu.

Comme dit la page que j'ai suivi à la lettre je lance mon script ainsi:
python3 exemplelcd.py

et j'ai un joli code d'erreur:
Traceback (most recent call last):
  File "exemplelcd.py", line 10, in <module>
    lcd = i2c_lcd.i2c_lcd(0x27,1,2,1,0,4,5,6,7,3)
  File "/home/pi/i2clibraries/i2c_lcd.py", line 45, in __init__
    self._enable(initialize_i2c_data)
  File "/home/pi/i2clibraries/i2c_lcd.py", line 150, in _enable
    self.bus.write_byte(data)
  File "/home/pi/i2clibraries/i2c.py", line 14, in write_byte
    writing_bytes(self.addr, *bytes))
  File "/home/pi/myproject/quick2wire-python-api/quick2wire/i2c.py", line 78, in transaction
    ioctl(self.fd, I2C_RDWR, ioctl_arg)
  IOError: [Errno 5] Input/output error

Pourquoi ce Input/output error sachant que mon écran est reconnu quand je fait sudo i2cdetect -y 1 ?

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#4 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 29 décembre 2013 - 06:39

Bon ça marche enfin!

En fait, par désespoir, j'ai fait une dernière tentative en branchant mon écran sur le +3.3V du Raspi au lieu du +5V (car c'est un écran 5V) et là ça marche.

C'est très curieux.

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#5 nvaste

nvaste

    Habitué

  • Membres
  • PipPip
  • 265 messages
  • Gender:Male
  • Location:Lyon, France

Posté 29 décembre 2013 - 06:41

C'as tu peux le dire, c'est à rien y comprendre car normalement ça devrai être l'inverse...
01110.01001.00011.01111.01100.00001.10011

#6 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 29 décembre 2013 - 10:19

Je vais sûrement dire une bêtise (mais un grand électronicien me corrigera :D) : est-ce que si tu alimentes ton LCD en 5V et que tu lui envoies ensuite des signaux en 3.3V, il n'y a pas un risque que les 3.3V en entrée ne soient pas considérés comme un 1 logique mais un 0 ? Vu qu'on travaille sur des tensions, il est probable que la RPi n'envoie pas exactement 3.3V mais plutôt un peu moins. Ton module LCD considère un 1 si V_input est supérieur à une certaine tension, et, pas de chance, elle est supérieure à ce qu'envoie la RPi.
En alimentant le module LCD en 3.3V, si ses niveaux logiques sont fonction de Vcc, tu leur donnes la même référence pour interpréter logiquement les signaux, donc plus de problèmes.

C'est surtout de la spéculation, mais c'est peut-être une explication plausible ?
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#7 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 29 décembre 2013 - 10:42

Oui ce doit être quelque chose de cet ordre, d'ailleurs j'ai lu (je sais plus vraiment où) que le port i2c du Raspi comporte des résistances pull-up sur le 3.3V!

Moi ce qui me "choque" le plus c'est que, malgré la tonne d'infos et de tutos qu'on peut trouver sur internet au sujet du raspberry, cette information là n'est jamais mentionnée! (nan mais allo quoi t'as un raspi t'as pas de 3.3V... :ph34r: ->[])

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#8 mvp86

mvp86

    Membre occasionnel

  • Membres
  • Pip
  • 136 messages
  • Gender:Male
  • Location:POITIERS

Posté 30 décembre 2013 - 01:38

Je vais sûrement dire une bêtise (mais un grand électronicien me corrigera :D/>/>) : est-ce que si tu alimentes ton LCD en 5V et que tu lui envoies ensuite des signaux en 3.3V, il n'y a pas un risque que les 3.3V en entrée ne soient pas considérés comme un 1 logique mais un 0 ? Vu qu'on travaille sur des tensions, il est probable que la RPi n'envoie pas exactement 3.3V mais plutôt un peu moins. Ton module LCD considère un 1 si V_input est supérieur à une certaine tension, et, pas de chance, elle est supérieure à ce qu'envoie la RPi.
En alimentant le module LCD en 3.3V, si ses niveaux logiques sont fonction de Vcc, tu leur donnes la même référence pour interpréter logiquement les signaux, donc plus de problèmes.

C'est surtout de la spéculation, mais c'est peut-être une explication plausible ?


Bonjour,

Oui cette réponse est la bonne, le TTL et le 3.3V ne font pas bon ménage...
Par contre c'est étonnant que l'afficheur fonctionne encore en 3.3V, à voir avec les circuit utlisés.
Au fait le RaspBerry en général n'apprécie pas le 5V sur les entrée en 3.3V, si ça n'a pas claqué de suite ça va arriver tôt ou tard...
Et les "entrances/sortances" sont correctement décrites lorsque l'on prend le temps de lire les documents des circuts ! ;)

#9 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 30 décembre 2013 - 01:54

Par contre c'est étonnant que l'afficheur fonctionne encore en 3.3V, à voir avec les circuit utlisés.

Oui moi aussi j'ai été agréablement étonné.

Et les "entrances/sortances" sont correctement décrites lorsque l'on prend le temps de lire les documents des circuts !

Pourrais tu me montrer où cette information est disponible car je ne l'ai lu ni dans la petite feuille livrée avec le Pi, ni sur la page wikipedia dédiée, ni sur le pdf "quick start guide", ni dans la faq de raspberrypi.org :no:

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#10 mvp86

mvp86

    Membre occasionnel

  • Membres
  • Pip
  • 136 messages
  • Gender:Male
  • Location:POITIERS

Posté 30 décembre 2013 - 06:27

C'est entre autre sur le site du raspberrypi.org :
http://www.raspberrypi.org/technical-help-and-resource-documents
Dans la partie "Technical documents - for the advanced user" il y a le datasheet du GPIO et un lien sur http://fr.scribd.com/doc/101830961/GPIO-Pads-Control2 qui décrit un peu plus le circuit.

Il y a eu aussi ces informations dans le MagPi si mes souvenirs sont bons.

Sur Wikipédia "des entrées / sorties supplémentaires devraient être accessibles directement sur la carte mère via des pins 3v3"

En général avant de brancher quoique ce soi sur un circuit, je me procure le datasheet du composant sur lequel je vais me relier pour vérifier ses caractéristiques et savoir si c'est compatible et non risqué. Lorsque l'on travail sur du "bas niveau", c'est à dire matériel, il faut savoir ce que l'on fait car même si les publicités de nos chers revendeurs indiquent "pour arduino" ou "pour raspberry" il y a quelque fois des choses qui ne sont pas dites et qui font que la platine ne peut fonctionner sans adaptations...

De même ce qui n'est pas "trop" dit, c'est que ces composants GPIO, CPU, ... et la platine sont sensibles aux ESD (décharges électrostatiques) il y a un logo sur la boite qui le précise et sur l'emballage (main barré dans un triangle), combien y ont fait attention ?
Plus l'intégration des circuit est grande, plus il y a risque de claquage !

Bonne lecture.

#11 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 30 décembre 2013 - 07:41

Merci pour ces infos !

Faut dire que c'est piègeux car la platine s'alimente en 5V et moi (parce que j'ai plus l'habitude des niveaux TTL que CMOS) je me suis fait avoir n'ayant pas non plus vu les informations nécessaire (faut avouer que ça pourrait être mis plus en évidence... le lien "Technical, help and resource documents" est remarquablement bien planqué pour le coup :ok: ).

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users