MicroPython : tutoriel pour afficheur OLED 128x64 et senseur luminosité/proximité LTR-501ALS

Nous sommes très heureux d'annoncer deux nouveaux tutoriels MicroPython.
Cette fois, nous nous sommes penchés sur deux nouveaux composants I2C Arduino que nous avons portés vers MicroPython:
  • Une écran OLED 128 x 64 (SSD1306)
  • Un senseur de proximité (et luminosité LTR-501ALS)
Comme régulièrement ces derniers temps, nous nous sommes penchés sur des modules UEXT (voir gamme) pour faciliter les raccordements et un ESP8266-EVB sous MicroPython (si cela marche sur un ESP8266 cela marchera sur toutes les plateformes.

Voyez le point "Qu'est-ce que UEXT?" pour en apprendre plus sur ce connecteur.

MOD-OLED-128x64
Afficheur OLED 128x64 - 3.3V - I2C
MOD-OLED-128x64 est un module bon marché, faible puissance, avec un LCD haut contraste et équipé d'un connecteur UEXT.

Sa surface d'affichage est de 21 x 11 mm pour 128 x 64 pixels. Très compacte, il conviendra parfaitement aux projets à faible encombrement.


Ce qui est génial sur un afficheur OLED, c'est qu'il produit sa propre lumière. Chaque pixel activé produit son propre flux lumineux (pas besoin de rétro-éclairage gourmand en énergie). C'est grâce à cela que les écrans OLED présentent un si haut contraste les rendant particulièrement facile à lire.
Afficheur OLED 128x64 - 3.3V - I2C

Résumé des caractéristiques

  • OLED avec contrôleur SSD1306
  • 128x64 pixels
  • 27x11mm
  • Alimentation 3.3V
  • I2C Interface
Avec UEXT, le branchement est simple comme bonjour...
Source: ce tutoriel OLED 128x64 avec interface I2C sous MicroPython
Le code MicroPython est également très abordable, voici comment dessiner un carré noir sur écran blanc :

from machine import Pin, I2C
i2c = I2C( sda=Pin(2), scl=Pin(4) )
import ssd1306
lcd = ssd1306.SSD1306_I2C( 128, 64, i2c )

lcd.fill(1) # Rempli l'écran en blanc
lcd.show()  # Afficher!

# Remplis un rectangle en noir
# fill_rect( x, y, w, h, c ) 
lcd.fill_rect( 10,10, 20, 4, 0 )
lcd.show()  # Afficher!



OLI-MOD-LTR-501ALS
Le module  MOD-LTR501ALS offre une réponse linéaire de 2 à 64000 Lux pour une lumière dans le spectre visible. Le senseur propose également un mode haute résolution entre 0.01 Lux et 320 Lux.

Très pratique pour mesurer la luminosité ambiante dans le jardin, studio, prise de photographie, etc.

Le senseur de lumière est immunisé contre la lumière UltraViolette (UV) et InfraRouge (IR).
Le LTR-501ALS propose également un senseur de proximité infrarouge configurable permettant de détecter un objet à une distance allant jusqu'à 10 cm. La LED IR fonctionne en mode pulsé.

Grâce à UEXT, le module est toujours aussi simple à brancher :-)
Source: le tutoriel MOD-LTR-501ALS sur le WIKI de MCHobby
Et le code MicroPython toujours aussi limpide
from time import sleep
from ltr501 import * 

i2c = I2C( sda=Pin(2), scl=Pin(4) ) 
ltr = LTR_501ALS( i2c ) # gamme par défaut, 2 à 64000 Lux

# Utiliser cet autre constructeur la lecture haute 
# résolution dans la gamme de 0.01 à 320 Lux.
#
# ltr = LTR_501ALS( i2c, lux_range = LUX_RANGE_320 ) 

while True:
    # Y a t'il des données disponibles?
    dr = ltr.data_ready

    # Luminosité disponible? 
    if DR_LUX in dr:
        # Lecture des convertisseurs analogiques ALS_0 et ALS_1.
        l = ltr.lux  

        # ALS_0 semble être en lumière visible 
        # ALS_1 devrait être l'infrarouge.
        print( "Lux ALS_0, ALS_1 = ", l )

    # Proximité disponible ?
    if DR_PROXIMITY in dr:
        # Lecture de valeur_senseur et distance en cm
        p = ltr.proximity

        print( "Proximity value, cm =" , p )

    # Separateur et attendre
    print( '-'*40 )
    sleep( 1 )

print( "That's the end folks")



Aucun commentaire