MICROPYTHON-MOD-RGB
Introduction
MOD-RGB est une carte d'interface d'Olimex utilisant le port UEXT.
- Un FirmWare personnalisé pour bus I2C or DMX
- 3 canaux avec protection contre sur-courant
- Courant nominal par canal - 5A
- LEDs contrôlées par un signal PWM @ 1KHz
- Entrée Stéréo (jack)
- Cavalier pour sélection de mode DMX/I2C
- Cavalier pour alimenter la carte via UEXT
- Connecteur UEXT
Stabilité sous MicroPython
La communication I2C avec le module MOD-RGB peut présenter une instabilité sous MicroPython. Un ticket est ouvert sur les forums d'Olimex à ce sujet. |
Matériel utilisé
Pour réaliser ce test, nous avons utilisé:
Description | Quantité | |
ESP8266-EVB |
ESP8266 Evaluation Board d'Olimex disponible ici chez MCHobby |
1 |
MOD-RGB |
Module RGB UEXT (MOD-RGB) disponible ici chez MCHobby |
1 |
UEXT-SPLITTER |
Multiplicateur de port UEXT. Permettra de brancher la carte + Interface USB-Serie disponible ici chez MCHobby |
1 |
USB-SERIE-TTL |
Un cable console pour pouvoir communiquer avec l'ESP8266 disponible ici chez MCHobby |
1 |
Raccordements
Les raccordements sont effectués comme suit:
- La carte MOD-RGB est utilisée avec un ruban LED analogique 12V.
- Une alimentation 12V est utilisée avec sur la carte MOD-RGB pour alimenter le Ruban LED.
- Le cavalier DMX_EN doit être ouvert (puisque nous travaillons en I2C).
- Le cavalier UPWR_E est également ouvert.
Attention: ne pas appliquer plus de 5V sur la carte d'évaluation ESP8266-EVB |
Le raccordement du convertisseur USB-Série est identique à celui décrit dans le tutoriel ESP8266-DEV sous MicroPython.
Etant donné que le l'ESP8266-DEV (et donc ESP8266-EVB) ne disposent pas de convertisseur USB-Série, il sera donc nécessaire d'utiliser un câble console (USB-Série-TTL) pour communiquer avec la carte ESP8266.
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).
Apprenez comment charger le Firmware MicroPython sur une carte Pyboard, ESP8266 (Feather, Wemos, NodeMcu), etc.
Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.
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...
Il est impératif de réduire la taille du buffer à 128 octets sur un ESP8266 sinon vous risquez d'écraser le système de fichier votre ESP8266... auquel cas il faudra reflasher votre carte |
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 modrgb
Avant d'utiliser le script d'exemple, il est nécessaire de transférer la bibliothèque modrgb sur votre carte MicroPython.
La bibliothèque modrgb et sa documentation sont disponibles dans le GitHub esp8266-uPy.
Puis:
- Copier le fichier modrgb.py sur la carte MicroPython.
- Copier le fichier rgbfx.py sur la carte MicroPython.
Ce fichier n'est utile que si pour produire des effets lumineux.
Vous pouvez également transférer le script de test test.py et testfx.py sur la carte MicroPython.
La script testoff.py permet de désactiver rapidement les sorties PWM.
Le script stress.py permet de stresser le contrôleur en modifiant continuellement les couleurs.
Code
BUS I2C
La carte MOD-RGB utilise le bus I2C (adresse par défaut est 0x20) 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.
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.
Fonctionnalité du MOD-RGB
# Utilisation du MOD-RGB d'Olimex avec un ESP8266 sous MicroPython
#
# Shop: [UEXT RGB board (MOD-RGB)](http://shop.mchobby.be/product.php?id_product=1410)
# Wiki: https://wiki.mchobby.be/index.php?title=MICROPYTHON-MOD-RGB
from machine import I2C, Pin
from time import sleep_ms
from modrgb import MODRGB
i2c = I2C( sda=Pin(2), scl=Pin(4) )
rgb = MODRGB( i2c ) # adresse par defaut=0x20
# Un code couleur est composé à l'aide
# d'un tuple (r,g,b)
# Fixer la couleur à rose
rgb.set_rgb( (255, 102, 204) )
sleep_ms( 5000 )
# Une simple suite de couleur
red=(255,0,0)
green=(0,255,0)
blue=(0,0,255)
color_suite = [red,green,blue,(255,255,255)]
for c in color_suite:
rgb.set_rgb( c )
sleep_ms( 2000 )
rgb.black()
print( "That's the end folks")
Le fichier d'exemple textfx.py utilise la bibliothèque complémentaire rgbfx.py pour proposer des animations lumineuses.
# Effet RGB avec MOD-RGB d'Olimex avec un ESP8266 sous MicroPython
#
# Shop: http://shop.mchobby.be/product.php?id_product=1410
# Wiki: https://wiki.mchobby.be/index.php?title=MICROPYTHON-MOD-RGB
from machine import I2C, Pin
from time import sleep_ms
from modrgb import MODRGB
import rgbfx
i2c = I2C( sda=Pin(2), scl=Pin(4) )
rgb = MODRGB( i2c ) # adresse par défaut=0x20
rgb.pwm( True )
# Couleur en rose
rose = (255, 102, 204)
rgb.set_rgb( rose )
sleep_ms( 1000 )
# Effet de chandelle
rgb.pwm( True )
rgbfx.candle( rgb )
rgb.pwm( False )
sleep_ms( 1000 )
# Fade-in / Fade-out
rgb.pwm( True )
rgbfx.fade_inout( rgb, rose )
rgb.pwm( False )
sleep_ms( 1000 )
# Roue des couleurs cyclique
rgb.pwm( True )
rgbfx.cycle_wheel( rgb )
rgb.pwm( False )
sleep_ms( 1000 )
# Désactivé
rgb.pwm( False )
print( "That's the end folks")
Changer l'adresse I2C de la carte MOD-RGB
L'exemple suivant montre comment changer l'adresse courante de la carte MOD-RGB (0x20) vers 0x22.
ATTENTION: Il faut avoir le cavalier fermé pendant l'exécution de la commande change_address() .
# Modifier l'adresse de MOD-RGB d'Olimex vers 0x22
#
# Shop: http://shop.mchobby.be/product.php?id_product=1410
from machine import I2C, Pin
from modrgb import MODRGB
i2c = I2C( sda=Pin(2), scl=Pin(4) )
brd = MODRGB( i2c, addr=0x20 )
brd.change_address( 0x22 )