Modifications

Sauter à la navigation Sauter à la recherche
6 197 octets ajoutés ,  15 janvier 2018 à 10:49
Ligne 17 : Ligne 17 :     
== NeoPixel sur ESP8266 MicroPython ==
 
== NeoPixel sur ESP8266 MicroPython ==
{{ambox-stop|text=La bibliothèque contenue dans firmware MicroPython convient uniquement pour la génération de NeoPixel 800 KHz.}}
+
La bibliothèque {{fname|neopixel}} est déjà présente dans les Firmwares MicroPython. Cela permet de démarrer rapidement, il y a cependant quelques restrictions.
 +
 +
{{ambox-stop|text=La bibliothèque convient uniquement pour la génération de NeoPixel avec flux de donnée à 800 KHz.}}
    
Le bibliothèque '''ne prend pas''' en charge:
 
Le bibliothèque '''ne prend pas''' en charge:
Ligne 23 : Ligne 25 :  
* les LEDs NeoPixel RGBW.
 
* les LEDs NeoPixel RGBW.
   −
Les broches compatibles pour commander des NéoPixels sont les suivantes:
+
Les broches de l'ESP8266 compatibles pour commander des NéoPixels sont les suivantes:
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Ligne 59 : Ligne 61 :     
== Raccordement ==
 
== Raccordement ==
[[Fichier:FEATHER-MICROPYTHON-NEOPIXEL-10.jpg|640px]]
+
=== NeoPixel sous 3.3V ===
 +
[[Fichier:FEATHER-MICROPYTHON-NEOPIXEL-10.jpg|480px]]
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Ligne 79 : Ligne 82 :  
| align="left" | Le signal doit entrer par la broche Data IN.<br />Ne pas se tromper avec Data OUT! si le signal est branché sur DOUT (Data Out) alors les LEDs ne recevront pas les informations de couleur.
 
| align="left" | Le signal doit entrer par la broche Data IN.<br />Ne pas se tromper avec Data OUT! si le signal est branché sur DOUT (Data Out) alors les LEDs ne recevront pas les informations de couleur.
 
|}
 
|}
 +
 +
=== NeoPixel sous 5.0V ===
 +
Il est également possible d'alimenter les NeoPixels en 5V, ce qui permet d'obtenir des couleurs vives et stables en toutes circonstances.
 +
 +
Dans ce cas de figure, il faut aussi que le signal soit en 5V. Pour ce faire, un [http://df.mchobby.be/datasheet/74AHC125.pdf Level Shifter 74AHCT125] (pdf) est utiliser pour convertir le signal de 3.3v -> 5v.
 +
 +
{{ambox-stop|text=Avec un flux de donnée de 400 KHz, tous les convertisseurs de niveau logique ne sont pas capable de suivre une telle fréquence de changement de signal. Le 74AHCT125 est capable de suivre ce débit, c'est pour cette raison qu'il est utilisé en lieu et place d'un autre convertisseur.}}
 +
 +
[[Fichier:FEATHER-MICROPYTHON-NEOPIXEL-11.jpg|480px]]
 +
 +
== Sources ==
 +
Les sources et exemples sont disponibles sur GitHub.
 +
 +
Voir les liens suivants
 +
* La [https://github.com/mchobby/esp8266-upy/tree/master/neopixel section neopixel] du GitHub ESP8266-uPy
 +
* Le [https://github.com/mchobby/esp8266-upy GitHub ESP8266-uPy]
 +
 +
== Code d'exemple ==
 +
Le script d'exemple suivant montre comment commander un {{pl|407|NeoPixel Stick}} de 8 LEDs
 +
 +
<syntaxhighlight lang="python">
 +
# Utilisation de la bibliothèque neopixel avec Feather ESP8266
 +
# sous MicroPython
 +
#
 +
# Shop: https://shop.mchobby.be/55-leds-neopixels-et-dotstar
 +
# Wiki: https://wiki.mchobby.be/index.php?title=MicroPython-Accueil#ESP8266_en_MicroPython
 +
 +
from machine import Pin
 +
from neopixel import NeoPixel
 +
from time import sleep
 +
 +
# NeoPixel( broche_signal, nbre_de_led )
 +
np = NeoPixel( Pin(2), 8 )
 +
 +
# Fixer la couleur la couleur du premier pixel
 +
# avec un tuple (r,g,b) ou chaque valeur est
 +
# située entre 0 et 255
 +
np[0] = (255,0,0) # rouge
 +
 +
# couleur des autres pixels
 +
np[1] = (0, 255, 0) # vert
 +
np[2] = (0, 0, 128) # bleu (1/2 brillance)
 +
 +
# Voir aussi HTML Color Picker
 +
# https://www.w3schools.com/colors/colors_picker.asp
 +
np[3] = (255, 102, 0) # Orange
 +
np[4] = (255, 0, 102) # Rose bonbon
 +
np[5] = (153, 51, 255) # Violet
 +
np[6] = (102, 153, 255) # bleu pastel
 +
np[7] = (153, 255, 153) # vert pastel
 +
 +
# Envoyer l'info aux NeoPixels
 +
np.write()
 +
 +
sleep(2)
 +
 +
# fill() permet de remplir tout
 +
# le NeoPixel avec une seule couleur
 +
colors = [ (255,0,0), (0, 255, 0), (0, 0, 128),
 +
    (255, 102, 0) , (255, 0, 102), (153, 51, 128),
 +
    (102, 153, 128), (153, 255, 128) ]
 +
 +
for color in colors:
 +
    np.fill( color )
 +
    np.write()
 +
    sleep(2)
 +
 +
# Eteindre les NeoPixels
 +
np.fill( (0,0,0) )
 +
np.write()
 +
</syntaxhighlight>
 +
 +
== Effets Lumineux ==
 +
Le GitHub contient également un fichier nommé [https://github.com/mchobby/esp8266-upy/blob/master/neopixel/fxdemo.py fxdemo.py]. Ce dernier reprend différentes fonctions d'animation NéoPixel que vous pourriez utiliser dans vos propres projets.
 +
 +
Il est possible de tester ces effets en faisant un {{fname|import fxdemo}} depuis une session REPL.
 +
 +
A titre d'exemple, voici les différents appels de fonctions permettant de tester les effets lumineux.
 +
 +
<syntaxhighlight lang="python">
 +
# theater_chase sample
 +
theater_chase( np, (127,0,0) ) # red
 +
theater_chase( np, (127,127,127) ) # white
 +
theater_chase( np, (0,0,127) ) # blue
 +
clear( np )
 +
sleep( 1 )
 +
 +
# Wipe in color
 +
np.fill( (190, 0, 0) ) # fill in red
 +
np.write()
 +
wipe( np, (0,180,0), pause=0.150 ) # wipe in green
 +
wipe( np, (0,0,255), pause=0.150 ) # wipe in blue
 +
wipe( np, (0,0,0),  pause=0.150 ) # wipe in black
 +
sleep( 1 )
 +
 +
# Moving_rainbow
 +
for i in range( 4 ):
 +
moving_rainbow( np )
 +
clear( np )
 +
sleep( 1 )
 +
 +
# Fade In And Out
 +
fade_inout( np, (255,  0,  0) ) # Red
 +
fade_inout( np, (0  , 255,  0) ) # Green
 +
fade_inout( np, (0  ,  0, 255) ) # Blue
 +
clear( np )
 +
sleep( 1 )
 +
 +
# moving_wheel
 +
moving_wheel( np )
 +
clear( np )
 +
sleep( 1 )
 +
 +
# cycle_wheel
 +
for i in range(2):
 +
cycle_wheel( np )
 +
clear( np )
 +
sleep( 1 )
 +
 +
# Candle Effect
 +
candle( np )
 +
clear( np )
 +
sleep( 1 )
 +
 +
# Larson Scanner (K2000)
 +
#  execute 3 iterations
 +
posdir = None
 +
for i in range( 3 ):
 +
posdir = larson_scanner( np, posdir )
 +
clear( np )
 +
sleep( 1 )
 +
</syntaxhighlight>
    
== Ressouces ==
 
== Ressouces ==
 +
* [https://github.com/mchobby/esp8266-upy/blob/master/neopixel/ Le GitHub ESP8266-uPy/NeoPixel] avec code d'exemple et schéma de montage.
 
* [http://docs.micropython.org/en/v1.8.2/esp8266/esp8266/tutorial/neopixel.html Référence officielle NeoPixel sous ESP8266]
 
* [http://docs.micropython.org/en/v1.8.2/esp8266/esp8266/tutorial/neopixel.html Référence officielle NeoPixel sous ESP8266]
* Le [NeoPixel-UserGuide tutoriel NeoPixel pour Arduino] contenant de nombreuses '''informations et recommandations'''.
+
* Le [[NeoPixel-UserGuide|tutoriel NeoPixel pour Arduino]] contenant de nombreuses '''informations et recommandations'''.
 +
 
 +
== Utilisation sous 3.3V ==
 +
La couleur bleue est difficile à produire sous 3.3V.
 +
 
 +
Par conséquent, {{fname|np.write( (0,0,255) )}} ne produit pas vraiment de couleur.
 +
 
 +
C'est parce que le Forward Voltage d'une LED bleue est d'environ 2.8V (typiquement 3.2V). Avec une source d'alimentation de 3.3V, le tension est un peu faible pour activer une led bleue. Nous sommes à la limite pour pouvoir produire du Bleu.
 +
 
 +
Il est parfois plus efficace de produire un bleu en mi-brillances avec {{fname|np.write( (0,0,128) )}} ou bleu en quart-de-brillance avec {{fname|np.write( (0,0,64) )}}
 +
 
 +
=== Limite du régulateur de tension ===
 +
 
 +
De même, nous avons remarqué que le régulateur de tension d'un ESP8266 ne produit pas vraiment assez de courant pour l'ESP8266 + le contrôler de 8 LEDs NeoPixels.
 +
 
 +
Placer les 8 LEDs en blanc pur {{fname|(255,255,255)}} consomme quand même 250mA sous 5v! Par conséquent, l'utilisation d'une alimentation externe 3.3v pour alimenter les NeoPixels est le bienvenue. Si vous avez un 74AHCT125 sous ma main, vous pouvez même opter pour une alimentation NeoPixel sous 5V :-)
 +
 
 +
{{ambox|text=Ne pas oublier d'avoir une masse commune (référentiel de tension) entre l'alimentation NeoPixel et l'ESP8266.}}
 +
 
 +
A noter que si le régulateur de tension peine à founir le courant nécessaire alors sa tension chutera un peu (de 3.3v à 3.1v), ce qui aura pour effet de produire un effet de scintillement sur les LEDs.
 +
 
 +
=== Utiliser le régulateur de l'ESP8266 ===
 +
 
 +
Le régulateur 3.3V de la plateforme ESP8266 sera néanmoins suffisant pour commander quelques NeoPixels. Dans ce cas, il est préférable de:
 +
* ne pas êtres pas trop exigeant sur la qualité des couleurs (utiliser des couleurs en mi-brillance)
 +
* s'attendre à des scintillements lors d'un charge plus importante en courant (lorsque l'on affiche du blanc ou des couleurs vive).
    
== Où acheter ==
 
== Où acheter ==
Ligne 88 : Ligne 249 :  
* Le {{pl|407|NeoPixel Stick}} utilisé dans ce tutoriel.
 
* Le {{pl|407|NeoPixel Stick}} utilisé dans ce tutoriel.
 
* La {{cl|55|la gamme NeoPixel}} disponible chez MC Hobby
 
* La {{cl|55|la gamme NeoPixel}} disponible chez MC Hobby
 +
* Un {{pl|1041|74AHCT125}} Level Shifter
    
<hr />
 
<hr />
29 917

modifications

Menu de navigation