Outils pour utilisateurs

Outils du site


issue171:micro-ci_micro-la

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue171:micro-ci_micro-la [2021/08/05 08:50] d52frissue171:micro-ci_micro-la [2021/08/06 10:16] (Version actuelle) auntiee
Ligne 5: Ligne 5:
 The ESP32 and ESP8266 microcontrollers both have a driver that is included in the distribution of MicroPython. For the Raspberry Pi Pico, the communications to the LEDs needs to be done via PIO programming - Raspberry Pi’s assembly language. Luckily, there is a library available for the Pico to handle the communications. You can find it at: https://github.com/benevpi/pico_python_ws2812b. This library works very well, but has been forked and updated. However, the new libraries don’t work correctly from the Thonny IDE, and it’s a real pain to write your code, and then try to run your file outside of the IDE. We’ll use the ws2812b library for now.** The ESP32 and ESP8266 microcontrollers both have a driver that is included in the distribution of MicroPython. For the Raspberry Pi Pico, the communications to the LEDs needs to be done via PIO programming - Raspberry Pi’s assembly language. Luckily, there is a library available for the Pico to handle the communications. You can find it at: https://github.com/benevpi/pico_python_ws2812b. This library works very well, but has been forked and updated. However, the new libraries don’t work correctly from the Thonny IDE, and it’s a real pain to write your code, and then try to run your file outside of the IDE. We’ll use the ws2812b library for now.**
  
-Ce mois-ci, nous allons parler de l'utilisation de la source lumineuse intégrée WS2812 sur le Raspberry Pi Picoet sur les microcontrôleurs ESP32 et ESP8266. Les plus attentifs d'entre vous, qui sont de bons et loyaux lecteurs, pensent peut-être que, le mois dernier, j'ai dit que nous parlerions des NeoPixels. Vous avez raison. Je l'ai dit. Et nous en parlons.+Ce mois-ci, nous allons parler de l'utilisation de la source lumineuse intégrée WS2812 sur le Raspberry Pi Pico et sur les microcontrôleurs ESP32 et ESP8266. Les plus attentifs d'entre vous, qui sont de bons et loyaux lecteurs, pensent peut-être que, le mois dernier, j'ai dit que nous parlerions des NeoPixels. Vous avez raison. Je l'ai dit. Et nous en parlons.
  
 NeoPixels est une marque qui appartient à Adafruit. Elle désigne les LEDs de couleur RVB adressables individuellement ; des bandes toutes basées sur les LEDs WS2812 et WS2811 avec des pilotes qui utilisent un protocole à fil unique. Donc, TECHNIQUEMENT, toutes les LED WS2812 ne sont pas des afficheurs NeoPixel. NeoPixels est une marque qui appartient à Adafruit. Elle désigne les LEDs de couleur RVB adressables individuellement ; des bandes toutes basées sur les LEDs WS2812 et WS2811 avec des pilotes qui utilisent un protocole à fil unique. Donc, TECHNIQUEMENT, toutes les LED WS2812 ne sont pas des afficheurs NeoPixel.
  
-Les microcontrôleurs ESP32 et ESP8266 ont tous deux un pilote qui est inclus dans la distribution de MicroPython. Pour le Raspberry Pi Pico, la communication avec les LEDs doit se faire via la programmation PIO - le langage d'assemblage du Raspberry Pi. Heureusement, il existe une bibliothèque disponible pour le Pico qui gère les communications. Vous pouvez la trouver à l'adresse suivante : https://github.com/benevpi/pico_python_ws2812b. Cette bibliothèque fonctionne très bien, mais elle a été forkée et mise à jour. Cependant, les nouvelles bibliothèques ne fonctionnent pas correctement à partir de l'IDE de Thonnyet c'est une vraie douleur d'écrire votre code, puis d'essayer d'exécuter votre fichier en dehors de l'IDE. Nous utiliserons la bibliothèque ws2812b pour le moment.+Les microcontrôleurs ESP32 et ESP8266 ont tous deux un pilote qui est inclus dans la distribution de MicroPython. Pour le Raspberry Pi Pico, la communication avec les LEDs doit se faire via la programmation PIO - le langage d'assemblage du Raspberry Pi. Heureusement, il existe une bibliothèque disponible pour le Pico qui gère les communications. Vous pouvez la trouver à l'adresse suivante : https://github.com/benevpi/pico_python_ws2812b. Cette bibliothèque fonctionne très bien, mais elle a été forkée et mise à jour. Cependant, les nouvelles bibliothèques ne fonctionnent pas correctement à partir de l'IDE de Thonny et c'est une véritable souffrance d'écrire votre code, puis d'essayer d'exécuter votre fichier en dehors de l'IDE. Nous utiliserons la bibliothèque ws2812b pour le moment.
  
 **Setting up your breadboard **Setting up your breadboard
Ligne 21: Ligne 21:
 Les dispositifs de type NeoPixel prennent une bonne quantité d'énergie. Si vous n'utilisez qu'une seule LED, ce n'est pas un gros problème, mais si vous avez 8, 24, 30 ou 60 LEDs, vous aurez besoin d'une source d'alimentation externe d'environ 5 volts DC. Je dis environ 5 volts, car 5 volts est la tension maximale absolue que vous devez fournir aux dispositifs de type NeoPixel. Les besoins en courant de plusieurs LEDs sont surprenants, et si vous essayez d'utiliser l'alimentation USB pour alimenter les LEDs, cela deviendra rapidement trop élevé pour le PC. Les dispositifs de type NeoPixel prennent une bonne quantité d'énergie. Si vous n'utilisez qu'une seule LED, ce n'est pas un gros problème, mais si vous avez 8, 24, 30 ou 60 LEDs, vous aurez besoin d'une source d'alimentation externe d'environ 5 volts DC. Je dis environ 5 volts, car 5 volts est la tension maximale absolue que vous devez fournir aux dispositifs de type NeoPixel. Les besoins en courant de plusieurs LEDs sont surprenants, et si vous essayez d'utiliser l'alimentation USB pour alimenter les LEDs, cela deviendra rapidement trop élevé pour le PC.
  
-J'utilise un pack de piles rechargeables 3 x AA pour mon installation, avec des piles NIMH (Nickel Metal Hydride). Elles fournissent une almentation d'environ 4,6 volts (1,2 volts chacune) lorsque les piles sont complètement chargées. C'est une alimentation suffisament faible mais suffisante, sans trop.+J'utilise un pack de piles rechargeables 3 x AA pour mon installation, avec des piles NIMH (Nickel Metal Hydride). Elles fournissent une alimentation d'environ 4,6 volts (1,2 volts chacune) lorsque les piles sont complètement chargées. C'est une alimentation suffisamment faible mais suffisante, sans trop.
  
 **While the connections for the RPi Pico and the ESP32/8266 are very similar, I will include one of each. In the illustrations, I will use a WS2812 8-LED stick. This stick has a fairly common set of connections that will easily work for the stick and most any flat strip, no matter the length and number of LEDs. All devices will have at least 3 input pins. Ground, +5 volt DC, and a pin for data in. No matter if you are using an 8-LED stick or a 1 metre 60-LED weatherproof strip, the connections are basically the same. **While the connections for the RPi Pico and the ESP32/8266 are very similar, I will include one of each. In the illustrations, I will use a WS2812 8-LED stick. This stick has a fairly common set of connections that will easily work for the stick and most any flat strip, no matter the length and number of LEDs. All devices will have at least 3 input pins. Ground, +5 volt DC, and a pin for data in. No matter if you are using an 8-LED stick or a 1 metre 60-LED weatherproof strip, the connections are basically the same.
Ligne 29: Ligne 29:
 One other thing to note is that the breadboard images show a 3 x AAA battery pack. It should actually be a 3 x AA battery pack. I couldn’t find the actual image in Fritzing.** One other thing to note is that the breadboard images show a 3 x AAA battery pack. It should actually be a 3 x AA battery pack. I couldn’t find the actual image in Fritzing.**
  
-Bien que les connexions pour le RPi Pico et l'ESP32/8266 soient très similaires, je vais inclure un exemple de chaque. Dans les illustrations, j'utiliserai une de 8 LEDs WS2812. Cette barre a un ensemble de connexions assez commun qui fonctionnera facilement pour elle et la plupart des bandes plates, peu importe la longueur et le nombre de LEDs. Tous les appareils ont au moins 3 broches d'entrée. La masse, le +5 volt DC et une broche pour l'entrée des données. Peu importe que vous utilisiez une barre de 8 LEDs ou une bande étanche de 1 mètre de 60 LEDs, les connexions sont fondamentalement les mêmes.+Bien que les connexions pour le RPi Pico et l'ESP32/8266 soient très similaires, je vais inclure un exemple de chaque. Dans les illustrations, j'utiliserai une barre de 8 LEDs WS2812. Cette barre a un ensemble de connexions assez commun qui fonctionnera facilement pour elle et la plupart des bandes plates, peu importe la longueur et le nombre de LEDs. Tous les appareils ont au moins 3 broches d'entrée : la masse, le +5 volt DC et une broche pour l'entrée des données. Peu importe que vous utilisiez une barre de 8 LEDs ou une bande étanche de 1 mètre de 60 LEDs, les connexions sont fondamentalement les mêmes.
  
-Comme vous pouvez le voir sur l'image ci-dessous, il y a quatre entrées de chaque côté du stick. Sur la gauche, il y en a 2 pour la masse, une pour les données et une pour l'alimentation +5 volts. Le côté droit a les mêmes broches à l'exception de Data Out, qui est utilisé (si nécessaire) pour ajouter une autre barre.+Comme vous pouvez le voir sur l'image ci-dessous, il y a quatre entrées de chaque côté de la barre. Sur la gauche, il y en a 2 pour la masse, une pour les données et une pour l'alimentation +5 volts. Le côté droit a les mêmes broches à l'exception de Data Out, qui est utilisé (si nécessaire) pour ajouter une autre barre.
  
 Une autre chose à noter, c'est que les images de la plaque d'essai montrent un pack de piles 3 x AAA. Il devrait en fait s'agir d'un pack de 3 piles AA. Je n'ai pas pu trouver la bonne image dans Fritzing. Une autre chose à noter, c'est que les images de la plaque d'essai montrent un pack de piles 3 x AAA. Il devrait en fait s'agir d'un pack de 3 piles AA. Je n'ai pas pu trouver la bonne image dans Fritzing.
Ligne 93: Ligne 93:
 pixels.show()** pixels.show()**
  
-La deuxième ligne instancie la classe ws2812b dans la variable pixels. Remarquez que le premier paramètre est le nombre de LEDs, le second est la machine d'état qui sera utilisée. Il s'agit normalement d'un 0 ou d'un 1. Le paramètre suivant est le numéro de la broche GPIO. Le dernier est le délai que vous souhaitez utiliser avant de réinitialiser le jeu de LEDs. Il vaut mieux utiliser 0, sauf si vous avez besoin de faire beaucoup de traitement.+La deuxième ligne instancie la classe ws2812b dans la variable pixels. Remarquez que le premier paramètre est le nombre de LED, le second est la machine d'état qui sera utilisée. Il s'agit normalement d'un 0 ou d'un 1. Le paramètre suivant est le numéro de la broche GPIO. Le dernier est le délai que vous souhaitez utiliser avant de réinitialiser le jeu de LEDs. Il vaut mieux utiliser 0, sauf si vous avez besoin de faire beaucoup de traitement.
  
 num_leds = 24 num_leds = 24
Ligne 99: Ligne 99:
 pixels = ws2812b(num_leds, 0, 16, delay=0) pixels = ws2812b(num_leds, 0, 16, delay=0)
  
-Ensuite vient la valeur de la luminosité. Cela peut être utile si vous êtes comme moiet que les LEDs vous aveuglent parce qu'elles sont trop lumineuses. Les deux lignes suivantes remplissent chaque LED de votre appareil à 10,10,10 (valeurs R, G, B) et ensuite l'information est envoyée au périphérique LED avec la commande pixels.show().+Ensuite vient la valeur de la luminosité. Cela peut être utile si vous êtes comme moi et que les LED vous aveuglent parce qu'elles sont trop lumineuses. Les deux lignes suivantes remplissent chaque LED de votre appareil à 10,10,10 (valeurs R, G, B) et ensuite l'information est envoyée au périphérique LED avec la commande pixels.show().
  
 pixels.brightness(30) pixels.brightness(30)
Ligne 132: Ligne 132:
 Vous pouvez voir que la fonction set_pixel prend 4 paramètres. Le numéro du pixel, et les valeurs rouge, verte et bleue. Vous pouvez voir que la fonction set_pixel prend 4 paramètres. Le numéro du pixel, et les valeurs rouge, verte et bleue.
  
-En revenant à la boucle ci-dessus, nous pouvons parcourir le code et voir les valeurs qui sont envoyées au dispositif de LEDs. Je ne vais montrer que 7 valeurs, ce qui devrait vous donner une bonne idée de ce qui se passe.+En revenant à la boucle ci-dessus, nous pouvons parcourir le code et voir les valeurs qui sont envoyées au dispositif de LED. Je ne vais montrer que 7 valeurs, ce qui devrait vous donner une bonne idée de ce qui se passe.
  
 0 0 3 6 0 0 3 6
Ligne 203: Ligne 203:
 Ici (en haut à droite) max_len et min_len sont les durées maximale et minimale d'allumage des LEDs. « num_flashes » fait référence au nombre de « lucioles » qui sont actives à un moment donné. Ici (en haut à droite) max_len et min_len sont les durées maximale et minimale d'allumage des LEDs. « num_flashes » fait référence au nombre de « lucioles » qui sont actives à un moment donné.
  
-Il s'agit de la fonction d'affichage qui gère le scintillement et le battement des mouches virtuelles (qui sont en fait des coléoptères dans la vie réelle). Voir en bas à droite.+Il s'agit de la fonction d'affichage qui gère le scintillement et le vol ici et là des mouches virtuelles (qui sont en fait des coléoptères dans la vie réelle). Voir en bas à droite.
  
-La plupart des programmes de démonstration que j'ai trouvés ont des boucles similaires à celles des deux programmes ci-dessus. Et ils ont une boucle while similaire qui fait que, lorsqu'ils sont arrêtés, les LEDs sont toujours actives. J'ai donc écrit le petit programme suivant pour éteindre les LEDs quand j'en ai fini avec la démo. Je l'ai appelé led_clear.py+La plupart des programmes de démonstration que j'ai trouvés ont des boucles similaires à celles des deux programmes ci-dessus. Et ils ont une boucle while similaire qui fait que, lorsqu'ils sont arrêtés, les LED sont toujours actives. J'ai donc écrit le petit programme suivant pour éteindre les LED quand j'en ai fini avec la démo. Je l'ai appelé led_clear.py
  
 **# LED Clear **# LED Clear
Ligne 225: Ligne 225:
 My initial thought was to rewrite the flash program presented for the Pico to work on the ESP microcontrollers. However, I remembered that I had a great demo from randomnerdtutorials.com that would provide a better example of how to use the library. So, instead of flash, I present neopixel1.py (top right). The same code should run unmodified on the ESP8266, since they share the same library.** My initial thought was to rewrite the flash program presented for the Pico to work on the ESP microcontrollers. However, I remembered that I had a great demo from randomnerdtutorials.com that would provide a better example of how to use the library. So, instead of flash, I present neopixel1.py (top right). The same code should run unmodified on the ESP8266, since they share the same library.**
  
-# Extinction des LEDs+# Extinction des LED
  
 from ws2812b import ws2812b from ws2812b import ws2812b
Ligne 257: Ligne 257:
 The next function (middle right) is called bounce, which, as you might expect, causes a single LED to move through each available position and, when it gets to the starting point, it reverses direction.** The next function (middle right) is called bounce, which, as you might expect, causes a single LED to move through each available position and, when it gets to the starting point, it reverses direction.**
  
-Remarquez que la bibliothèque pour les dispositifs neopixel est nommée « neopixel ». La variable n est le nombre de LEDs que possède le dispositif, et la variable p est la broche GPIO qui sera utilisée.+Remarquez que la bibliothèque pour les dispositifs neopixel est nommée « neopixel ». La variable n est le nombre de LED que possède le dispositif, et la variable p est la broche GPIO qui sera utilisée.
  
 La variable np est donc l'objet neopixel. Vous devez adresser chaque pixel individuellement et transmettre les valeurs RVB sous forme de tuple. Vous pouvez voir cela dans la fonction clear présentée directement ci-dessous. La variable np est donc l'objet neopixel. Vous devez adresser chaque pixel individuellement et transmettre les valeurs RVB sous forme de tuple. Vous pouvez voir cela dans la fonction clear présentée directement ci-dessous.
Ligne 376: Ligne 376:
 Until next time, as always; stay safe, healthy, positive and creative!** Until next time, as always; stay safe, healthy, positive and creative!**
  
-Il devrait être assez facile de comprendre comment le programme fonctionne vraiment. J'ai inclus dans le dépôt github un portage du programme fireflies pour l'ESP appelé fireflies1.py. Comme avantage supplémentaire, j'ai ajouté un petit appel à la fonction Touchpad dont nous avons parlé précédemment qui interrompra la boucle éternelle lorsque une touche sur la plaque sera détectée.+Il devrait être assez facile de comprendre comment le programme fonctionne vraiment. J'ai inclus dans le dépôt github un portage du programme fireflies pour l'ESP appelé fireflies1.py. En prime, j'ai ajouté un petit appel à la fonction Touchpad dont nous avons parlé précédemment qui interrompra la boucle éternelle lorsqu'une touche sur la plaque sera détectée.
  
 L'ensemble du code et les fichiers images se trouvent à l'adresse https://github.com/gregwa1953/FCM171_MicroThisMicroThat . L'ensemble du code et les fichiers images se trouvent à l'adresse https://github.com/gregwa1953/FCM171_MicroThisMicroThat .
  
-J'espère sincèrement que je vous ai donné envie de vous procurer des appareils de type NeoPixel et de jouer avec. Après tout (comme si j'avais besoin de vous donner une raison), Noël, Hanoukka et le reste des célébrations de la saison des fêtes sont dans moins de 6 mois. Imaginez ce que ces petits appareils peuvent faire pour vos décorations cette année et combien vos voisins seront jaloux.+J'espère sincèrement que je vous ai donné envie de vous procurer des appareils de type NeoPixel et de jouer avec. Après tout (comme si j'avais besoin de vous donner une raison), Noël, Hanoucca et le reste des célébrations de la saison des fêtes sont dans moins de 6 mois. Imaginez ce que ces petits appareils peuvent faire pour vos décorations cette année et combien vos voisins seront jaloux.
  
 Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positif et créatif ! Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positif et créatif !
  
issue171/micro-ci_micro-la.1628146240.txt.gz · Dernière modification : 2021/08/05 08:50 de d52fr