MicroPython: Afficheur OLED avec connecteur NCD (National Control Device)
Bonjour à tous,
Nous finissons la découverte du matériel NCD (et pilotes MicroPython) par l'écran OLED proposé par National Control Device et son super connecteur.
Nous avons déjà un pilote SSD1306 avec documentation (produit par MicroPython.org) mais cette fois, nous avons poussé l'exploration un peu plus loin pour afficher des images chargée depuis le système de fichier :-)
NCD-OLED et Pyboard
Une fois de plus, nous avons utilisé le même schéma adaptateur (que l'article sur la mesure de courant) pour brancher l'écran OLED.
Et le branchement de l'OLED est en "Plug-and-Play" !
Compatilité Pyboard
Comme déjà précisé, MicroPython.org propose un pilote SSD1306 (j'ai testé la version pour MicroPython 1.10) qui fonctionne du tonnerre avec des ESP8266 sous MicroPython.
Côté matériel, c'est extra... par contre, j'ai eu plus de difficultés sur la Pyboard!
Figurez vous que le pilote SSD1306 utilise des "start/stop conditions" sur le bus I2C (combinaisons spéciales de SDA et SCL) et que le pilote doit donc pouvoir forcer les niveaux haut et bas sur le bus.
Du coup, il faut créer l'instance du bus I2C en mentionnant les broches en contrôle push-pull (OUT_PP).
Hors de question de faire un : i2c = I2C(2) !!!!
La bonne approche est la suivante:
Cela a bien faillit me faire devenir chèvre!
Bon... plus sérieusement, le code de test permet de charger des fichier bitmap portable (PBM).
La beauté dans tout cela réside c'est qu'il ne faut pas inclure les images dans les ressources du programme, il suffit de copier les fichiers 'ncd-mch.pbm' et
'upy-logo.pbm' dans le système de fichier de la carte MicroPython.
Ce qui nous offre un très beau résultat... même en monochrome.
Ressource
Nous finissons la découverte du matériel NCD (et pilotes MicroPython) par l'écran OLED proposé par National Control Device et son super connecteur.
afficheur OLED de National Control Device |
Nous avons déjà un pilote SSD1306 avec documentation (produit par MicroPython.org) mais cette fois, nous avons poussé l'exploration un peu plus loin pour afficher des images chargée depuis le système de fichier :-)
NCD-OLED et Pyboard
Une fois de plus, nous avons utilisé le même schéma adaptateur (que l'article sur la mesure de courant) pour brancher l'écran OLED.
source: Interface NCD (5V logic) sur MicroPython Pyboard |
Brancher l'écran OLED SSD1306 de NCD (National Control Device) sur la Pyboard. |
Comme déjà précisé, MicroPython.org propose un pilote SSD1306 (j'ai testé la version pour MicroPython 1.10) qui fonctionne du tonnerre avec des ESP8266 sous MicroPython.
Côté matériel, c'est extra... par contre, j'ai eu plus de difficultés sur la Pyboard!
Figurez vous que le pilote SSD1306 utilise des "start/stop conditions" sur le bus I2C (combinaisons spéciales de SDA et SCL) et que le pilote doit donc pouvoir forcer les niveaux haut et bas sur le bus.
Du coup, il faut créer l'instance du bus I2C en mentionnant les broches en contrôle push-pull (OUT_PP).
Hors de question de faire un : i2c = I2C(2) !!!!
La bonne approche est la suivante:
# Equivalent de I2C(2) mais avec des broches en Push-Pull pscl = Pin('Y9', Pin.OUT_PP) psda = Pin('Y10', Pin.OUT_PP) i2c = I2C(scl=pscl, sda=psda) lcd = ssd1306.SSD1306_I2C( 128, 64, i2c )
Cela a bien faillit me faire devenir chèvre!
Bon... plus sérieusement, le code de test permet de charger des fichier bitmap portable (PBM).
La beauté dans tout cela réside c'est qu'il ne faut pas inclure les images dans les ressources du programme, il suffit de copier les fichiers 'ncd-mch.pbm' et
'upy-logo.pbm' dans le système de fichier de la carte MicroPython.
from machine import I2C, Pin import ssd1306 import framebuf import time # --- PYBOARD --- # Attention: Il faut absolument avoir des broches en Push-Pull (OUT_PP) sur # le bus I2C pour que le pilote fonctionne correctement # pscl = Pin('Y9', Pin.OUT_PP) psda = Pin('Y10', Pin.OUT_PP) i2c = I2C(scl=pscl, sda=psda) lcd = ssd1306.SSD1306_I2C( 128, 64, i2c ) lcd.fill(1) # Rempli l'écran en blanc lcd.show() # Afficher! while True: # Code inspired from twobitarcade.net # https://www.twobitarcade.net/article/displaying-images-oled-displays/ with open('ncd-mch.pbm', 'rb' ) as f: f.readline() # Magic number P4 for pbm (Portable Bitmap) f.readline() # Creator comment f.readline() # Dimensions data = bytearray(f.read()) fbuf = framebuf.FrameBuffer(data, 128, 64, framebuf.MONO_HLSB) lcd.invert(1) lcd.blit(fbuf, 0, 0) lcd.show() time.sleep(3) with open('upy-logo.pbm', 'rb' ) as f: f.readline() # Magic number P4 for pbm (Portable Bitmap) f.readline() # Creator comment f.readline() # Dimensions data = bytearray(f.read()) fbuf = framebuf.FrameBuffer(data, 128, 64, framebuf.MONO_HLSB) lcd.invert(1) lcd.blit(fbuf, 0, 0) lcd.show() time.sleep(3)
Ce qui nous offre un très beau résultat... même en monochrome.
Faire du MicroPython avec un afficheur OLED de National Control Device |
Écrire un commentaire