UPDATE 4 (Décembre 2015) : Tutorial testé sur OSMC et Raspbian Jessie : normalement tout fonctionne sauf la partie démarrage auto il faut que je la mette à jour.
UPDATE 3 (Février 2014) : Tutorial testé sur Xbian 1.0 RC1, utilisé les lignes de code de UPDATE 2
UPDATE 2 (Décembre 2013) : Tutorial testé sur Xbian 1.0 Beta 2, pour qu’il fonctionne avant « sudo apt-get install python-dev » faites : « sudo apt-get install xbian-package-development »
UPDATE 1 (Septembre 2013) : Ce Tutorial a été testé sous Xbian Beta 1.0 et Beta 1.1, il fonctionne très bien…
Salut à tous, comment allez-vous?
Laissant l’Arduino de côté pour une ou deux semaines en attendant les pièces nécessaires pour le premier projet, qui j’espère donnera envie à plusieurs d’entre vous l’envie de tenter l’aventure, je me suis concentré sur le Raspberry Pi. Je dois vous le redire mais je suis totalement sous le charme… J’utilise Xbian comme distribution, c’est fluide, même après 15 jours d’utilisation sans avoir éteint le Pi c’est toujours aussi stable : le rêve. Mais (car il y en a toujours un), je trouvais le concept de chercher l’IP pour ce connecter en ssh un peu ennuyeux et long, parfois même vraiment barbare à configurer (windows). De plus, je n’avais pas d’horloge dans mon salon. Je me suis donc mis à chercher ce qu’il était possible de faire pour remédier à ces petits tracas…
Il s’avère qu’il est possible de faire tourner un afficheur LCD sur le Raspberry Pi via le port GPIO. Il s’agit plus précisément d’afficheur LCD 16×2, 20×4 etc… En gros vous pouvez connecter n’importe lequel du moment qu’il a 16 pin et fonctionne en 5V. Le LCD que j’utilise ici n’est autre que celui fournit dans le Starter Pack de l’Arduino.
J’ai réalisé cet article grâce au câblage trouvé sur raspberrypi-spy.co.uk : http://www.raspberrypi-spy.co.uk/2012/07/16×2-lcd-module-control-using-python/ et grâce à la librairie de adafruit.cc : http://learn.adafruit.com/drive-a-16×2-lcd-directly-with-a-raspberry-pi/overview
Allez avant toute chose pour vous mettre l’eau à la bouche :
0 – Ce qu’il nous faut :
- un Raspberry Pi connecté à internet pour récupérer l’heure.
- un Afficheur LCD 16×2
- des câbles de préférence avec une cosse sur un côté pour un raccord facile au Pi. (J’ai utilisé de vieux câbles audio d’un vieux pc que j’ai dénudés et coupés à la bonne taille)
- une Breadboard pour un câblage facile
- un potentiomètre
- une résistance 220 ohm
J’ai testé le montage sur Xbian et Raspbian, tout fonctionne sur les deux distributions. Il faut juste adapter le code en fonction de l’utilisateur que vous utilisez. Ici, l’exemple sera pour un utilisateur root sur Xbian
1 – Le câblage :
Pour vous expliquez de manière simple, j’ai utilisé Fritzing qui est un très bon logiciel de schéma électronique… Cela offre aussi la possibilité de partager facilement les projets que vous réalisez… Ah j’oubliais, il est gratuit 😉 http://fritzing.org/
1.1 – Afficheur LCD à 16 broches :
1: Ground (masse ou borne – )
2: VCC (+5v ou borne + )
3: VO (réglage du contraste)
4: Register Select (RS) si RS = 0 : Commande si RS = 1 : Données (0 : pas de câble branché)
5: Read / Write (R/W) si R/W = 0 : Write si R/W = 1 : Read (0 : pas de câble branché)
6: Activation (je n’ai pas plus d’informations…)
7: Bit 0 (Pas utiles pour les opération 4 bits)
8: Bit 1 (Pas utiles pour les opération 4 bits)
9: Bit 2 (Pas utiles pour les opération 4 bits)
10: Bit 3 (Pas utiles pour les opération 4 bits)
11: Bit 4 (Nos données passent pas là)
12: Bit 5 (Nos données passent pas là)
13: Bit 6 (Nos données passent pas là)
14: Bit 7 (Nos données passent pas là)
15: LED Backlight Anode (borne + du rétroéclairage du LCD j’ai mis une résistance histoire de le protéger)
16: LED Backlight Cathode (borne – du rétroéclairage du LCD)
1.2 – Port Gpio Raspberry Pi :
Une fois que tout est bien connecté, (vérifiez deux ou trois fois 😉 ), car le pin R/W (pin 5 sur le LCD) permet de mettre l’afficheur en mode Read ou Write (Ecriture / Lecture). Comme on veut envoyer des données depuis le Pi vers le LCD il faut le brancher à la masse pour être sûr que le LCD est bien en mode Read. De plus si vous vous trompez et que vous branché ce pin sur la borne + (la partie câblée en rouge sur le schéma) vous pouvez endommager votre Pi…
Alors faites bien attention !!!
2 – Le code :
Ce sont les commandes pour Xbian en étant identifié avec l’utilisateur root. (J’aime bien avoir le contrôle total) :
ssh -l root 192.168.1.39
On se connecte en ssh au Pi
votre mot de passe root
2.1 – Installations des paquets pour piloter l’afficheur LCD :
Soyez patient, les installations peuvent être longues…
sudo apt-get install python-dev
On installe tout ce qui faut pour développer sur Python
sudo apt-get install python-setuptools
On installe les outils pour développer sur Python
sudo easy_install -U distribute
On configure tout cela facilement grâce à l’automatisation du script
sudo apt-get install python-pip
On installe le canal de communication sur Python
sudo pip install rpi.gpio
On installe le pilote pour le port GPIO
apt-get install git
On installe git si cela n’était pas déja fait…
git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
On copie la librairie de Adafruit sur le Pi
sudo reboot
On redémarre pour finaliser l’installation, pensez bien à vous identifiez de nouveau en root après le redémarrage
2.2 – Modification des Pins :
cd Adafruit-Raspberry-Pi-Python-Code
On se rend dans le dossier Adafruit-Raspberry-Pi-Python-Code après le reboot
cd Adafruit_CharLCD
On se rend dans le dossier Adafruit_CharLCD
sudo nano Adafruit_CharLCD.py
On édite Adafruit_CharLCD.py pour changer l’adresse des pins, je vous rappelle que nous n’avons pas câblé l’écran LCD comme les gars de Adrafruit… Il faut juste modifier les numéro des pins dans Adafruit_CharLCD.py. En rouge la version originale, en vert la version que vous devez obtenir.
Puis on tape sur le clavier : Control + O pour sauvegarder les modifications, Entrée pour confirmer l’enregistrement et Control + X pour sortir de nano.
2.3 – Vérification :
cd Adafruit-Raspberry-Pi-Python-Code
On se rend dans le dossier Adafruit-Raspberry-Pi-Python-Code
cd Adafruit_CharLCD
On se rend dans le dossier Adafruit_CharLCD
sudo ./Adafruit_CharLCD_IPclock_example.py
On lance Adafruit_CharLCD_IPclock_example.py, si tout va bien, vous devriez voir s’afficher la date, l’heure et l’ip du Pi sur le LCD :
Puis Control + C sur votre clavier pour arrêter le script Adafruit_CharLCD_IPclock_example.py
2.4 – Lancement de Adafruit CharLCD IPclock example.py à chaque démarrage :
Dans l’état actuel des choses, vous devez à chaque fois que vous rebootez le Pi vous identifiez en root et répétez le paragraphe 2.3 – Vérification pour lancer le script Adafruit_CharLCD_IPclock_example.py. C’est un peu désagréable du coup on va maintenant voir comment faire pour que le script se lance tout seul au démarrage.
sudo nano /etc/init.d/lcd
On ouvre et on crée un nouveau fichier lcd dans le dossier /etc/init.d .C’est normal qu’il soit vide vous venez de le créé…
#!/usr/bin/python from Adafruit_CharLCD import Adafruit_CharLCD from subprocess import * from time import sleep, strftime from datetime import datetime lcd = Adafruit_CharLCD() cmd = "ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1" lcd.begin(16,1) def run_cmd(cmd): p = Popen(cmd, shell=True, stdout=PIPE) output = p.communicate()[0] return output while 1: lcd.clear() ipaddr = run_cmd(cmd) lcd.message(datetime.now().strftime('%b %d %H:%M:%S\n')) lcd.message('IP %s' % ( ipaddr ) ) sleep(2)
Copiez/collez ce code dans votre fichier lcd. Puis Control + O pour sauvegarder, Entrée pour valider et Control + X sur votre clavier pour sortir du fichier lcd.
sudo chmod +x /etc/init.d/lcd
On rend le fichier lcd éxécutable
sudo update-rc.d lcd defaults
Fait reconnaître le script lcd par le système pour qu’il le charge à chaque démarrage
sudo reboot
Normalement après le redémarrage, votre LCD doit afficher les informations tout seul…
2.5 – Régler la date et l’heure :
sudo dpkg-reconfigure tzdata
Sélectionnez l’endroit où vous vous situé dans le monde et l’heure se règle toute seule si vous êtes connecté à internet sur votre Pi
2.6 – Modification Personelles :
Comme l’afficheur LCD clignote quand il se rafraichit, je trouve agaçant de le voir clignoter toutes les deux secondes. De plus afficher les secondes ne m’intéresse pas plus que ça. J’ai donc modifié le fichier Adafruit_CharLCD_IPclock_example.py pour que l’afficheur LCD ressemble à cela et soit raffraichit une fois par minute :
cd Adafruit-Raspberry-Pi-Python-Code
On se rend dans le dossier Adafruit-Raspberry-Pi-Python-Code
cd Adafruit_CharLCD
On se rend dans le dossier Adafruit_CharLCD
sudo nano ./Adafruit_CharLCD_IPclock_example.py
On édite Adafruit_CharLCD_IPclock_example.py
Mon Raspberry Pi est connecté via un câble éthernet c’est pourquoi il y a :.
Si votre Raspberry Pi est connécté Via le Wifi il faut changer eth0 par wlan0
Version Originale :
Version Personnelle :
Puis une dernière fois on fait un petit Control + O, Entrée et Control + X sur son clavier histoire d’enregistrer ces modifications
sudo reboot
Normalement votre afficheur LCD est maintenant configuré comme le mien 🙂
J’espère que cet article vous aura plus. Merci de m’avoir lu et n’oubliez pas que ce soit sur Raspberry Pi ou Arduino, la seule limite c’est votre cerveau…
Beau boulot bien décanté…
Juste deux remarques :
– Tu inverses masse et alim sur la bread, un noveice peut facilement se planter…
– Et la 220 pojnte sur la masse sur ton schéma, pas sur le +5.
Sinon, keep up the good job 😉
+++
Edit : désolé pour les fautes de frappe 🙂
Effectivement, j’avais inversé la masse et le +5V sur la breadboard et la résistance 220 ohm pointaint sur une masse…
Aucun soucis à avoir, vous ne pouviez rien grillé, c’est l’alimentation du rétroéclairage…
Le schéma a été corrigé merci X-Calibur
De rien A., on est là pour s’entraider 😉
Je disais ça surtout si jamais la personne câble suivant la couleur ensuite, tout le monde peut se tromper, et pas que sur le B/L 🙁
Par contre, ton script affiche l’IP sur un réseau cablé… Si la personne est en WiFi, pense à souligner d’y remplacer « eth0 » par « wlanX » (avec X valeur de la co)…
+++
Ah bah si j’insiste : Merci c’est bien de voir que quelqu’un essaie et donne des retours ou tout simplement fait partager son expérience…
J’ai rajouté la configuration pour une connection en wlan…
Encore MERCI X-Calibur
Pas de quoi, c’est trois fois rien 😉
Pis j’avais galéré aussi au début pour faire marcher ce truc, alors si ça peut profiter à d’autres 😉
+++
C’est gentil… J’espères que tu as trouvé d’autres tuto qui t’ont intéressés sur le site
@bientôt
Bah à vrai dire, à part L’Ard., j’ai déjà fait pas mal de trucs avec mon Pi.
Je suis tombé ici par hasard en cherchant des infos sur le Pi, mais c’est un montage que j’avais déja réalisé…
Ce qui m’a attiré, c’est que tu utilise Fritzing, comme moi, et que tu as super bien détaillé le truc…
Et j’aime quand c’est détaillé 😉
Je cherche justement à ce que mon site soit le plus détaillé possble, alors j’aime quand c’est bien expliqué 😉
+++
Salut, ça va?
As-tu d’autres exemples pour le Pi? J’ai un peu de mal à en trouver des biens…
Fritzing est un programme vraiment très utiles lorsque l’on veut partager des montage électronique c’est un must have…
As-tu l’url de ton site? Je serai ravi d’y faire un tour…
++
‘Lo,
Ca va merci, et toi même ?
Mon url est : http://www.back2roots.fr/forums/
Pas du tout garni pour le moment, l’idée est de regrouper toutes les docs et astuces des machines passées à nos jours. Donc une rubrique pour le Pi 🙂
N’hésite pas à t’inscrire… Pis t’es chimiste, et j’aime bien les chimistes 😉
Mais je manque vraiment de temps et de collaborateurs pour poster les tutos…
J’ai pas mal d’exemples, mais pas postés encore, va faire un tour sur le blog d’Idleman pour les exemples basiques, beaucoup sont sommaires, mais il va à l’essentiel, et j’aime bien comme il présente 😉
A tte
+++
Bonjour,
Très bien fait le tuto. Merci.
Quand je lance sudo ./Adafruit_CharLCD_IPclock_example.py, j’obtiens l’erreur suivante :
Traceback (most recent call last):
File « ./Adafruit_CharLCD_IPclock_example.py », line 8, in
lcd = Adafruit_CharLCD()
File « /home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_CharLCD/Adafruit_CharLCD.py », line 68, in __init__
self.GPIO.setmode(GPIO.BCM)
AttributeError: ‘module’ object has no attribute ‘setmode’
Un spécialiste aurait une idée. Ma distrib est à jour et j’ai suivi le tuto à la lettre.
Merci pour vos lumières.
J’oubliais, je suis sous Raspbian….
Bonsoir, comment allez-vous?
Désolé pour ma réponse tardive, j’ai été pas mal en mode recherche ce qui m’a prit tout mon temps….
Je pense que l’erreur vient d’un problème de copier/coller qui n’est pas de votre faute j’ai modifié le script python sur le site, essayer de le remettre et tout devrait fonctionner…
Salut,
Petit souci pour ma part… L’adresse IP s’affiche mal
Je pense que je doit passer de ISO à UTF-8 puis de le rengegistrer mais il ne reconnais pas la commande « change_locale » je suis sur une raspbmc
🙂
pi@raspberrypi:~$ unset LANG
pi@raspberrypi:~$ sudo dpkg-reconfigure locales
Je vois que vous avez trouvé la commande pour changer le locales sur raspBMC…
Pouvez confirmer que ce tuto fonctionne sous RaspBmc et si oui qu’elle est votre version?
Salut Super tuto j’attend de recevoir mon rpi et l’ecran pour tester mais la vidéo youtube au debut du tuto ne marche pas :/.
++
Salut RedyToFly, comment allez-vous?
Effectivement, le lien était mort… Normalement il refonctionne maintenant 🙂
Cordialement, Anders
Salut, je recherchais sur internet à voir comment fonctionner un écran LCD et après beaucoup de recherche je tombe sur ton site!! Super bien détaillé, impeccable !! jolie boulot ça m’a bien aidé :).
Es-que tu aurai un site ou un petit tuto expliquant comment changer l’affiche/ le faire défiler, comme afficher l’espace d’un disque ou autre en plus de l’heure et l’IP ^^.^
Et j’ai regarder le reste de ton site il est pas mal du tout je vais surement faire quelques tuto, voir pas mal ^^.
Bonjour Charles, comment allez-vous?
Content que le site vous plaise . Il faut que je regarde ce qu’il est possible de faire pour le LCD. Mais à mon avis vu que le script est en python, le plus simple est de regardé du côté de la librarie psutils je pense…
@+ Anders
Bonjour Anderson69s,
Merci pour cette réponse rapide, je vais me pencher sur cette librairie.
A bientôt.
j’ai une question qu’es qu’il y a écrit dans le chapitre 2.2 sur l’image dessous la barre vert
Bonjour Loris, j’espère que vous allez bien.
Pour répondre à votre question, c’est un commentaire qui indique que l’on va attacher la variable de définition des pins à un nom plus facile à utiliser.
@+ Anders
Merci je vais bien mais mon problème est que quand j’ouvre le fichier nano (sudo nano Adafruit_CharLCD.py) je trouve un fichier vide donc je doit tout réécrire mais le problème c’est que quand vous avez entouré en verre votre ligne sur la photo vous avez coupé en deux une phrase en rouge juste en dessous que je n’arrive pas a lire merci de me réponde au plus vite. pour info je suis sur pi 3
Bonsoir Loris.
Si le fichier Adafruit_CharLCD.py est vide cela signifie que soit vous ne l’avez pas téléchargé, soit vous n’êtes dans bon le bon dossier.
Avez-vous bien exécuter la commande git clone dans le paragraphe 2.1? Etes-vous bien dans le dossier Adafruit-Raspberry-Pi-Python-Code?
Cordialement, Anders
finalement mon véritable problème et que quand j’exécute la commande (git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git) mon raspberry me répond fatal error comment peut-on régler se problème merci d’avance.
Bonsoir Loris, j’espère que vous allez bien.
Effectivement, le repo github de Adafruit a été bien modifié, il est donc normalement que rien ne ce passe lorsque vous essayez de cloner le repo…
Pouvez-vous essayer ceci à la place :
Vous aurez alors accès au fichier char_lcd.py qui se situe dans le dossier examples. Tout le reste du tuto reste inchangé normalement.
Si jamais cela ne fonctionnait pas, je vous conseille ce tutoriel d’Adafruit qui va de pair avec le repo github : https://learn.adafruit.com/character-lcd-with-raspberry-pi-or-beaglebone-black/overview
Bon week-end, Anders
Salut,
Lorsque je mets « cd Adafruit_CharLCD » je reçois une erreur du style no directory. Qu’est ce que ça pourrait être ?
Bonjour, j’espère que vous allez bien.
La réponse à votre question, ce trouve dans ma réponse juste au dessus de votre commentaire.
Adafruit à changer l’adresse du repo github. Du coup il n’est pas possible de le cloner et ensuite de ce rendre dans le dossier.
@Bientôt, Anders
bonjour
apres avoir suivi ton tuto , et readapter en fonction des dernier commentaire je tombe sur un fichier Adafruit_CharLCD.py qui est tres different . je suis en plein doute , estceque c est le bon fichier, est ce que je dois le reecrire , est ce qu il existe un autre fichier et celui ci ne serait pas le bon ?
LCD_4BITMODE = 0x00
LCD_2LINE = 0x08
LCD_1LINE = 0x00
LCD_5x10DOTS = 0x04
LCD_5x8DOTS = 0x00
# Offset for up to 4 rows.
LCD_ROW_OFFSETS = (0x00, 0x40, 0x14, 0x54)
# Char LCD plate GPIO numbers.
LCD_PLATE_RS = 15
LCD_PLATE_RW = 14
LCD_PLATE_EN = 13
LCD_PLATE_D4 = 12
LCD_PLATE_D5 = 11
LCD_PLATE_D6 = 10
LCD_PLATE_D7 = 9
LCD_PLATE_RED = 6
LCD_PLATE_GREEN = 7
LCD_PLATE_BLUE = 8
# Char LCD plate button names.
SELECT = 0
RIGHT = 1
DOWN = 2
UP = 3
LEFT = 4
class Adafruit_CharLCD(object):
« » »Class to represent and interact with an HD44780 character LCD display. » » »
def __init__(self, rs, en, d4, d5, d6, d7, cols, lines, backlight=None,
invert_polarity=True,
enable_pwm=False,
gpio=GPIO.get_platform_gpio(),
pwm=PWM.get_platform_pwm(),
initial_backlight=1.0):
je n ai mis que la partie qui me parait a editer .
bonne journée
Bonjour Tibo, j’espère que vous allez bien.
Vous avez effectivement trouvé le bon fichier et la bonne partie du code à modifier. Les lignes à changer étant dans le paragraphe :
# Char LCD plate GPIO numbers
LCD_PLATE_RS = 15
LCD_PLATE_RW = 14
LCD_PLATE_EN = 13
LCD_PLATE_D4 = 12
LCD_PLATE_D5 = 11
LCD_PLATE_D6 = 10
LCD_PLATE_D7 = 9
@+ Anders
Bonjour !
Merci pour vos tutos !
Je souhaiterai savoir si il est possible de brancher 2 lcd en i2c ?
sudo pip install RPLCD
J’ai vu des posts parler de cela,
Pourriez vous répondre à l’occaz ?
A plus
Bonjour agagagougogu, j’espère que vous allez bien.
Il est possible de brancher deux LCD en I2C sur un Raspberry Py si ceux-ci n’ont pas la même adresse I2C…
@Bientôt, Anders
Bonjour Anderson69s,
Merci de votre réponse !
j’ai vu ici ceci :
https://github.com/dbrgn/RPLCD
je suis sous volumio 2 avec raspberry pi 3 et je veux deux ecrans lcd (bien sur de chez aliexpress),
j’ai regardé ici :
https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial
Mais mon deuxieme lcd n’est pas reconnu,
ls /dev/*i2c*
/dev/i2c-1
Une idée par hazard ?
Bonsoir agagagougogu,
A mon avis, vos deux LCD ont la même adresse I2C malheureusement…
@Bientôt Anders
Bonsoir Anderson69s,
peux on brancher 2 lcd sur les même pin i2c du raspberry pi ?
A toute, et merci pour votre réactivité !
Re Bonsoir agagagougogu
Oui c’est possible de brancher vos deux écrans sur les mêmes ports du Raspberry Pi. Mais si la puce qui gère chaque LCD est définie avec la même adresse I2C, il est normal que vous ne pouvez pas piloter les deux en même temps…
Cordialement, Anders