MICROPYTHON-MOD-LCD1x9

De MCHobby - Wiki
Aller à : navigation, rechercher

Introduction

Utiliser un MOD-LCD1x9 d'Olimex avec ESP8266 sous MicroPython

MICROPYTHON-MOD-LCD1x9.jpg

MOD-LCD1x9 est un afficheur LCD Alphanumérique 9 positions d'Olimex utilisant le bus I2C du port UEXT.

MICROPYTHON-MOD-LCD1x9-01.jpg

Cette carte expose:

  • Utilise le bus I2C
  • Propose un point décimal pour chaque caractère
  • Propose une barre de sélection (UnderBar) en dessous de chaque caractère (pratique pour indiquer la sélection d'une option).
  • Un connecteur UEXT pour faciliter le raccordement

La bibliothèque MicroPython modlcd19.py permet de manipuler les points et les barre de sélections de l'afficheur, ce que ne permet pas la bibliothèque Arduino originale :-)

Matériel utilisé

Pour réaliser ce test, nous avons utilisé:

  Description Quantité
ESP8266-EVB
ESP8266-EVB.png
ESP8266 Evaluation Board d'Olimex
disponible ici chez MCHobby
1
MOD-LCD1x9
MOD-LCD1x9.png
Carte MOD-LCD1x9 d'Olimex. Afficheur LCD 9 caractères alphanumériques sur bus I2C.
disponible ici chez MCHobby
1
UEXT-SPLITTER
UEXT-SPLITTER.png
Multiplicateur de port UEXT. Permettra de brancher la carte + Interface USB-Serie
disponible ici chez MCHobby
1
USB-SERIE-TTL
USB-SERIE-TTL.png
Un cable console pour pouvoir communiquer avec l'ESP8266
disponible ici chez MCHobby
1

Raccordements

Pour commencer, j'utilise un UEXT Splitter pour dupliquer le port UEXT. J'ai en effet besoin de raccorder à la fois le câble console pour communiquer avec l'ESP8266 en REPL et raccorder le module MOD-LCD1x9

MICROPYTHON-MOD-LCD1x9-20.jpg

Flasher MicroPython

Pour flasher MicroPython sur l'ESP8266-DEV (module ESP8266) qui équipe la carte d'évaluation d'Olimex (ESP8266-EVB), nous vous proposons les lectures suivantes:

Utiliser MicroPython sur ESP8266 nécessite de Flasher le MicroContrôleur avec le Firmware et d'utiliser des outils appropriés pour communiquer avec lui. Vous trouverez ci-dessous une sélection de tutoriel pour vous préparer. Nous recommandons vivement l'usage de RSHell, même si Ampy reste une solution plus simpliste (mais aussi nettement plus limitée).

Charger MicroPython

Tlogo-feather-load-upy.jpg

Apprenez comment charger le Firmware MicroPython sur une carte Pyboard, ESP8266 (Feather, Wemos, NodeMcu), etc.

RShell

Tlogo-micropython-RShell.jpg

Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.

Ampy

Tlogo-micropython-Debugger.jpg

Outil simplifié de transfert de fichiers et de contrôlez de carte depuis une connexion série. ESP8266 compatible.

 

RShell sur ESP8266

Une petite pointe de rappel pour l'utilisation des ESP8266 avec RShell...

rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano

Nous avons également un petit script shell rsheel-esp8266.sh pour faciliter faciliter le démarrage de rshell pour un esp8266.

Bibliothèque modlcd19

Avant d'utiliser le script d'exemple, il est nécessaire de transférer la bibliothèque modlcd19 sur votre carte MicroPython.

La bibliothèque modlcd1x9 et sa documentation sont disponibles dans le GitHub esp8266-uPy.

Download-icon.pngTélécharger la bibliothèque ESP8266-uPy

Puis:

  • Copier le fichier modlcd19.py sur la carte micropython.

Vous pouvez également transférer le script de test test.py et testflt.py sur la carte MicroPython.

Code

BUS I2C

La carte MOD-IO utilise le bus I2C (adresse par défaut est 0x21) pour communiquer avec le MicroContrôleur.

Ce bus I2C est disponible sur le connecteur UEXT de notre ESP8266-EVB comme le montre le tableau suivant.

ESP8266-DEV-12.jpg

En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme Feather ESP8266 Huzza ou Wemos D1 ou même MicroPython Pyboard.

Les méthodes importantes

Les méthodes point() et selection permettent respectivement d'activer le point et la barre de sélection (tout en bas) dans la matrice.

La méthode write() permet d'afficher du texte, éventuellement le faire défiler s'il est trop long. Cette méthode accepte également un entier ou un float (justifié à droite). Le meilleur restant pour la fin, il est également possible d'appliquer une chaîne de formatage, ce qui permet de limiter les décimales sur un float ou d'afficher des unités.

Exemple d'utilisation de write() pour des valeurs numériques

lcd.write( 12.4693, format='%.3f v' ) => afficher avec 3 décimales, justifié à droite => 12.469 v
lcd.write( 12.13  , format='%5d' ) => afficher un Float comme un entier, justifié à droite => "  12"

Exemple Simple

Cette exemple démontre l'usage de la bibliothèque.

# Utilisation du MOD-LCD1x9 d'Olimex avec un ESP8266 sous MicroPython
#
# Shop: [UEXT LCD1x9 board (MOD-RGB)](http://shop.mchobby.be/product.php?id_product=1414)
# Wiki: https://wiki.mchobby.be/index.php?title=MICROPYTHON-MOD-LCD1x9

from machine import I2C, Pin
from time import sleep
from modlcd19 import MODLCD1x9

i2c = I2C( sda=Pin(2), scl=Pin(4) )
lcd = MODLCD1x9( i2c ) # Activer tous les segments

# Afficher avec 9 caractères Max
lcd.write( '123456789' )
sleep( 2 )
lcd.write( '<mchobby>' )
sleep( 2 )

# Afficher une longue chaîne de caractère
lcd.write( 'Hey, this is a message from Belgium' )

# Activer un point
lcd.write( 'ABCDEFGHI')
for i in range( 9 ):
	lcd.point( i+1, True, force_update=True )
	sleep( 1 )
	lcd.point( i+1, False, force_update=True )

sleep( 1 )

# Activer la barre sélection
for i in range( 9 ):
	lcd.selection( i+1, True, force_update=True )
	sleep( 1 )
	lcd.selection( i+1, False, force_update=True )


lcd.write( 'The end.')
print( "That's the end folks")

Exemple Float

Cet exemple, provenant du fichier testflt.py, affiche une valeur avec une précision à 3 décimales et l'unité Volts (ex: 12.357 v).

# Test the Olimex MOD-LCD1x9 board.
# 
# Display float value (justified on the right) 
from machine import I2C, Pin
from time import sleep
from modlcd19 import MODLCD1x9

i2c = I2C( sda=Pin(2), scl=Pin(4) )
lcd = MODLCD1x9( i2c ) # Active tous les segments

# Afficher une valeur décimale
volt = 15.125
while True:
    # Incrémente la valeur pour démonstration
    volt = volt + 0.033
    # Afficher un float avec 3 décimales.
    # Affiche également une unité: "v" pour volts
    #    voir: https://docs.python.org/3/library/string.html#format-examples
    lcd.write( volt, format='%.3f v' )
    
    # Donner du temps au LCD pour se rafraîchir
    sleep( 0.100 )

print( "That's the end folks")

Où acheter


Tutoriel réaliser par Meurisse D. pour MC Hobby SPRL

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.