Différences entre versions de « MICROPYTHON-MOD-RGB »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(11 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{traduction}}
 
 
 
== Introduction ==
 
== Introduction ==
 
MOD-RGB est une carte d'interface d'Olimex utilisant le port UEXT.
 
MOD-RGB est une carte d'interface d'Olimex utilisant le port UEXT.
Ligne 14 : Ligne 12 :
 
* Cavalier pour alimenter la carte via UEXT
 
* Cavalier pour alimenter la carte via UEXT
 
* Connecteur UEXT
 
* Connecteur UEXT
 +
 +
=== Stabilité sous MicroPython ===
 +
{{ambox-stop|text=La communication I2C avec le module MOD-RGB peut présenter une instabilité sous MicroPython. [https://www.olimex.com/forum/index.php?topic=6721.0 Un ticket est ouvert sur les forums d'Olimex à ce sujet]. }}
  
 
== Matériel utilisé ==
 
== Matériel utilisé ==
Ligne 59 : Ligne 60 :
 
[[Fichier:MICROPYTHON-RGB-20.jpg|640px]]
 
[[Fichier:MICROPYTHON-RGB-20.jpg|640px]]
  
* blabla
+
* 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.
  
 
{{ambox-stop|text=Attention: ne pas appliquer plus de 5V sur la carte d'évaluation ESP8266-EVB}}
 
{{ambox-stop|text=Attention: ne pas appliquer plus de 5V sur la carte d'évaluation ESP8266-EVB}}
Ligne 68 : Ligne 72 :
  
 
[[Fichier:UEXT-SERIAL-wiring.jpg|360px]]
 
[[Fichier:UEXT-SERIAL-wiring.jpg|360px]]
 +
 +
== 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:
 +
 +
{{ESP8266-MICROPYTHON-SUBTUTO}}
 +
 +
== 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 [https://github.com/mchobby/esp8266-upy/tree/master/modrgb bibliothèque '''modrgb''' et sa documentation] sont disponibles dans le [https://github.com/mchobby/esp8266-upy GitHub esp8266-uPy].
 +
 +
{{download-box|Télécharger la bibliothèque ESP8266-uPy|https://github.com/mchobby/esp8266-upy/archive/master.zip}}
 +
 +
Puis:
 +
* Copier le fichier {{fname|modrgb.py}} sur la carte MicroPython.
 +
* Copier le fichier {{fname|rgbfx.py}} sur la carte MicroPython.<br />Ce fichier n'est utile que si pour produire des effets lumineux.
 +
 +
Vous pouvez également transférer le script de test {{fname|test.py}} et {{fname|testfx.py}} sur la carte MicroPython.
 +
 +
La script {{fname|testoff.py}} permet de désactiver rapidement les sorties PWM.
 +
 +
Le script {{fname|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.
 +
 +
[[Fichier:ESP8266-DEV-12.jpg|480px]]
 +
 +
En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme {{pl|67|Feather ESP8266 Huzza}} ou {{cl|121|Wemos D1}} ou même {{pl||MicroPython Pyboard}}.
 +
 +
=== Fonctionnalité du MOD-RGB ===
 +
 +
<syntaxhighlight lang="python"># 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")</syntaxhighlight>
 +
 +
Le fichier d'exemple {{fname|textfx.py}} utilise la bibliothèque complémentaire {{fname|rgbfx.py}} pour proposer des animations lumineuses.
 +
 +
<syntaxhighlight lang="python"># 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")</syntaxhighlight>
 +
 +
== 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 {{fname|change_address()}} .
 +
 +
<syntaxhighlight lang="python"># 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 )</syntaxhighlight>
  
 
== Où acheter ==
 
== Où acheter ==
Ligne 74 : Ligne 201 :
 
* {{pl|1412|UEXT Splitter}}
 
* {{pl|1412|UEXT Splitter}}
 
* {{pl|144|Câble console}}
 
* {{pl|144|Câble console}}
 
https://github.com/mchobby/esp8266-upy/tree/master/modrgb
 

Version actuelle datée du 18 novembre 2018 à 09:05

Introduction

MOD-RGB est une carte d'interface d'Olimex utilisant le port UEXT.

MICROPYTHON-MOD-RGB.jpg

  • 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

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-RGB
MOD-RGB.png
Module RGB UEXT (MOD-RGB)
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

Les raccordements sont effectués comme suit:

MICROPYTHON-RGB-20.jpg

  • 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.

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.

UEXT-SERIAL-wiring.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 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.

Download-icon.pngTélécharger la bibliothèque 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.

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.

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 )

Où acheter