Outils pour utilisateurs

Outils du site


issue193:micro-ci_micro-la

I’m BAAAAAACCKKKKK Glenn Frey of the Eagles once said “For the record, we never broke up, we just took a 14-year vacation.” I’m certainly not as famous as Glen Frey or the Eagles, but let’s just consider that last 8 months a vacation from Micro This Micro That. However, I’m back at least for this month. Hopefully, life will be generous enough that I can continue to do this series of articles for a number of months again. There has been a lot of movement in the Micropython/MicroController world. A few weeks ago (April 2023) an announcement came out that “MicroPython 1.20 released with Raspberry Pi Pico W support, mip package manager, smaller footprint”. That was the reason for me scraping to make room to write this updated special MTMT. Yes, the Raspberry Pi Pico-W did get its own page in the Micropython.org downloads page. And YES, there are many new things in it.

Me revoilAAAAAAAA

Glenn Frey des Eagles a dit un jour : « Pour mémoire, nous n'avons jamais rompu, nous avons juste pris 14 ans de vacances. »

Je ne suis certainement pas aussi célèbre que Glen Frey ou les Eagles, mais considérons tout simplement ces 8 derniers mois comme des vacances de Micro-ci micro-là. Cependant, je suis de retour, au moins pour ce mois-ci. J'espère que la vie sera assez généreuse pour que je puisse continuer à écrire cette série d'articles pendant plusieurs mois.

Il y a eu beaucoup de mouvement dans le monde de Micropython et des MicroContrôleurs. Il y a quelques semaines (avril 2023), une annonce a été faite : « MicroPython 1.20 a été publié avec le support du Raspberry Pi Pico W, le gestionnaire de paquets mip et un encombrement réduit. » C'est la raison pour laquelle j'ai fait des pieds et des mains pour écrire cette mise à jour spéciale de Micro-ci micro-là.

Oui, le Raspberry Pio-W a obtenu sa propre page dans la page de téléchargement de Micropython.org. Et OUI, il y a beaucoup de nouvelles choses dedans.

The last version of Micropython for the Pico-W was 1.19 and it did provide network support on the Pico-W, and it did work pretty well. Micropython 1.20 also is supposed to provide a native Neopixel driver (WS2812) that replaces the need for the older versions. According to the documentation, you should just be able to use from neopixel import NeoPixel for the “normal” Neopixel devices and from apa106 import APA106 for dotstar devices. I tried it and yes, you can use it; however, everything you already have that works with the older drivers WILL NOT WORK with the new one. The new driver is really limited. Here is a quick snippet of how to use the neopixel driver

La dernière version de Micropython pour le Pico-W était la 1.19 et elle fournissait un support réseau sur le Pico-W et elle fonctionnait plutôt bien.

Micropython 1.20 est également censé fournir un pilote Neopixel natif (WS2812) qui remplace les anciennes versions. D'après la documentation, vous devriez pouvoir utiliser simplement

from neopixel import NeoPixel

pour les dispositifs Neopixel « normaux » et

from apa106 import APA106

pour les appareils dotstar.

J'ai essayé et oui, vous pouvez l'utiliser ; cependant, tout ce que vous avez déjà et qui fonctionne avec les anciens pilotes NE FONCTIONNERA PAS avec le nouveau. Le nouveau pilote est vraiment limité. Voici un extrait rapide de la façon d'utiliser le pilote neopixel (ci-dessus).

That’s all you get. Define the R,G,B color and write it to a specific pixel. It doesn’t look like the new driver will support the newer RGBW devices, since there are only three values in the parameter. The bottom line here is don’t expect to use any of your cool LED Strip lighting effects like “fireflys” or “color wave” or “smooth rainbow” using the new integrated driver for MicroPython 1.20 anytime soon. The other major disappointment seems to be in the I2C driver for both the RPi Pico and the RPi Pico-W. There is an issue with the nightly build v1.20.0-50-g786013d46 released on 2023-05-04. A little bit of history is needed here to understand the reason for the frustration that is to come.

C'est tout ce qu'il y a : définir la couleur R, V, B et l'écrire dans un pixel spécifique.

Il ne semble pas que le nouveau pilote prenne en charge les nouveaux dispositifs RGBW, car il n'y a que trois valeurs dans le paramètre.

En résumé, n'espérez pas utiliser de sitôt l'un de vos effets d'éclairage par bande LED comme les « lucioles », la « vague de couleurs » ou l'« arc-en-ciel lisse » en utilisant le nouveau pilote intégré pour MicroPython 1.20.

L'autre déception majeure semble être le pilote I2C pour le RPi Pico et le RPi Pico-W. Il y a un problème avec la nightly build v1.20.0-50-g786013d46 publiée le 2023-05-04. Un peu d'histoire est nécessaire ici pour comprendre la raison de la frustration à venir.

Back in January of 2021, when the RPi Pico first came out, the Raspberry Pi group released the Pico Python SDK document which was a great boon to anyone trying to get up to speed in learning MicroPython – especially for the brand new RPi Pico board. In section 3.6, it talks about how programs should talk to devices on the two I2C buses. The examples showed for Bus 0 you should use: i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000) or for Bus #1: i2c = I2C(1, scl=Pin(7), sda=Pin(6), freq=100000) They went on to say that the defaults would be for I2C(0) SDA is on Pin 8 (GPIO) and SCL is on Pin 9 and for I2C(1) SDA is on Pin 6 and SCL is on Pin 7.

En janvier 2021, lors de la première sortie du RPi Pico, le groupe Raspberry Pi a publié le document Pico Python SDK qui a été d'une grande aide pour tous ceux qui essayaient d'apprendre MicroPython, en particulier pour la toute nouvelle carte RPi Pico. Dans la section 3.6, il est question de la manière dont les programmes doivent communiquer avec les périphériques sur les deux bus I2C. Les exemples montrent que, pour le bus 0, il faut utiliser :

i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000)

ou pour le Bus #1 :

i2c = I2C(1, scl=Pin(7), sda=Pin(6), freq=100000)

Il est ajouté que les valeurs par défaut sont, pour I2C(0), SDA sur la broche 8 (GPIO) et SCL sur la broche 9 et, pour I2C(1), SDA sur la broche 6 et SCL sur la broche 7.

There is also a warning that says “There may be some bugs reading/writing to device addresses that do not respond, the hardware seems to lock up in some cases.” So when I started programming for the Pico, I stuck with the defaults of pins 8 and 9 for Bus(0) and that’s what I used in my demo programs that I published here. Well, time passes, as we all know, and new versions of the MicroPython for RPi Pico came out and they all stuck to those standards. That is until MicroPython 1.20. If you try to run a program that was working under MP 1.19 using the default I2C pins (8 and 9 for I2C(0) or 6 and 7 for I2C(1) wouldn’t work and an error message would be thrown saying that shown top right.

Il y a aussi un avertissement qui dit : « Il peut y avoir des bogues en lisant/écrivant à des adresses de périphériques qui ne répondent pas, le matériel semble se bloquer dans certains cas ».

Ainsi, lorsque j'ai commencé à programmer pour le Pico, je me suis contenté des valeurs par défaut des broches 8 et 9 pour le Bus(0) et c'est ce que j'ai utilisé dans mes programmes de démonstration que j'ai publiés ici.

Eh bien, le temps passe, comme nous le savons tous, et de nouvelles versions de MicroPython pour RPi Pico sont sorties et elles sont toutes restées fidèles à ces standards. Jusqu'à MicroPython 1.20.

Si vous essayez d'exécuter un programme qui fonctionnait sous MP 1.19 en utilisant les broches I2C par défaut (8 et 9 pour I2C(0) ou 6 et 7 pour I2C(1)), cela ne fonctionnait pas et un message d'erreur s'affichait disant ce qui est montré en haut à droite.

If you tried the i2cscan program that we’ve used many times, nothing would show up. Even running the program on an old RPi Pico without the wireless would fail. Yet if you flashed the MicroPython version back to 1.19, everything worked just as you remember. I modified my “regular” i2cscan program to include a print line that includes the configuration information, like this (bottom right). Returning to my original I2C program that used a temperature sensor and an OLED display, it worked just like before. Not knowing how long it might take for the MicroPython group to get things working correctly, here is a small table showing the GPIO and Physical pin assignments for both I2C(0) and I2C(1) (see table below).

Si vous essayez le programme i2cscan que nous avons utilisé à maintes reprises, rien ne s'affiche. Même l'exécution du programme sur un vieux RPi Pico sans le sans-fil échouait. Pourtant, si vous remettez la version de MicroPython à 1.19, tout fonctionne comme vous vous en souvenez.

J'ai modifié mon programme i2cscan « normal » pour inclure une ligne d'impression qui inclut les informations de configuration, comme ceci (en bas à droite).

En revenant à mon programme I2C original qui utilisait un capteur de température et un écran OLED, il a fonctionné comme avant.

Ne sachant pas combien de temps il faudra au groupe MicroPython pour faire fonctionner les choses correctement, voici un petit tableau montrant les assignations des broches GPIO et physiques pour I2C(0) et I2C(1) (voir tableau ci-dessous).

Once the MicroPython group gets things straightened out, the following table should provide you with a quick reference for which GPIO and Physical pins you can use for either bus (see table next page, top right). So is it worth upgrading the MicroPython version from 1.19 to 1.20? At first glance, the answer is no. There are enough problems between the I2C issue and the fairly dumbed down NeoPixel driver that I’m really not willing to consider staying at 1.20 for “production and testing”. I will monitor the MicroPython download page (https://micropython.org/download/rp2-pico-w/) for new nightly builds every few days, but I’m not really holding my breath on a great all-supporting release any time soon. I’m going to try to leave on a positive note and say that, as time allows, I’ll be working on more projects using the Pico and Pico-W and will try to provide more articles in the near future. And yes, that DOES include the Compass program.

Une fois que le groupe MicroPython aura mis les choses au point, le tableau suivant devrait vous fournir une référence rapide sur les broches GPIO et physiques que vous pouvez utiliser pour l'un ou l'autre bus (voir le tableau de la page suivante, en haut à droite).

Cela vaut-il donc la peine de mettre à jour la version de MicroPython de 1.19 à 1.20 ? A première vue, la réponse est non. Il y a suffisamment de problèmes entre le problème I2C et le pilote NeoPixel rendi assez bête pour que je ne sois pas prêt à envisager de rester à la version 1.20 pour la « production et les tests ». Je surveillerai la page de téléchargement de MicroPython (https://micropython.org/download/rp2-pico-w/) pour de nouvelles nightly builds tous les quelques jours, mais je ne retiens pas mon souffle dans l'espoir de voir une grande version tout support bientôt.

Je vais essayer de clore sur une note positive et dire que, si le temps le permet, je travaillerai sur d'autres projets utilisant le Pico et le Pico-W et j'essaierai de fournir plus d'articles dans un futur proche. Et oui, cela inclut le programme Compass.

LATE ADDITION: As I was sitting back with a cold glass of water resting from making over 1.7 litres of (not) refried beans, I realized that even if I have the time to update things next month, it will be the end of June before any of you will see the updates. So, I’m going to try to make sure that I update things on my blog at http://thedesignatedgeek.xyz so you can always get any updates. I hope to have a project for using the new NeoPixel in a realistic way and any updates to the I2C issue I raised in the article above. If you do visit, PLEASE drop me an email and let me know what you think. There is an easy email handler at the bottom of the main page. Until then, as always; stay safe, healthy, positive and creative!

AJOUT TARDIF :

Alors que je me reposais avec un verre d'eau froide après avoir préparé plus de 1,7 litre de haricots (non) frits, j'ai réalisé que même si j'avais le temps de faire des mises à jour le mois prochain, il faudrait attendre la fin du mois de juin pour que l'un d'entre vous puisse voir ces mises à jour.

Je vais donc essayer de faire en sorte de mettre à jour mon blog à l'adresse http://thedesignatedgeek.xyz pour que vous puissiez toujours avoir accès aux mises à jour. J'espère avoir un projet d'utilisation réaliste du nouveau NeoPixel et des mises à jour sur le problème I2C que j'ai soulevé dans l'article ci-dessus. Si vous visitez le site, merci de m'envoyer un mail et de me dire ce que vous en pensez. Il y a un gestionnaire de mail facile à utiliser en bas de la page principale.

D'ici là, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs !

issue193/micro-ci_micro-la.txt · Dernière modification : 2023/06/01 15:31 de andre_domenech