Greetings again fellow Sentient Lifeforms. Things here at landing pad 2997 on Terra have been so busy, I feel like a “long tailed cat in a room full of rocking chairs”. Since we last were together, we had some very severe storms move through one night, and it was so bad, large hail broke two windows, the strong winds blew down two sections of the fence here at the house, and the roof has to be replaced. The storm dumped over 4 inches of rain and the hailstones were between 3 to 4 inches, in 45 minutes. But life moves on as does the world of Micocontrollers. MicroPython turned 10 years old on May 3rd. On June 2, 2024, Micropython version 1.23 was released. Each time there is an official release of a software package, especially Micropython, Python and so on, it’s a big deal and this release is no different. According to the Micropython website, https://github.com/micropython/micropython/releases/tag/v1.23.0, the biggest changes are “Dynamic USB devices, revamped webassembly port, openamp, tls, vfs modules”. What does all that mean? Well, I’m going to try to tell you about some of it, and we’ll explore some of them in depth in future articles.
Je vous salue à nouveau, chers frères et sœurs de la forme de vie sensible. Ici, sur la plateforme d'atterrissage 2997 de Terra, nous avons été tellement occupés que j'ai l'impression d'être un « chat à longue queue dans une pièce remplie de chaises à bascule ». Depuis la dernière fois que nous nous sommes vus, nous avons eu de très violents orages une nuit, et c'était si mauvais que de gros grêlons ont brisé deux fenêtres, les vents violents ont fait tomber deux sections de la clôture de la maison et le toit doit être remplacé. L'orage a déversé plus de 10 cm de pluie et les grêlons mesuraient entre 10 et 15 cm, en 45 minutes. Mais la vie avance, tout comme le monde des microcontrôleurs.
MicroPython a eu 10 ans le 3 mai. Le 2 juin 2024, la version 1.23 de Micropython a été publiée. Chaque fois qu'une version officielle d'un logiciel, en particulier Micropython, Python, etc. est publiée, c'est une grande affaire et ce n'est pas différent pour cette version.
Selon le site Web de Micropython, https://github.com/micropython/micropython/releases/tag/v1.23.0, les plus grands changements sont « les dispositifs avec USB dynamique, le portage de webassembly revampé, les modules openamp, tls, vfs ». Qu'est-ce que tout cela signifie ? Eh bien, je vais essayer de vous en parler, et nous explorerons certains d'entre eux en profondeur dans de futurs articles.
First, let’s look at the Dynamic USB device support. According to rumors, only the SAMD and RP2020 (RPi Pico/Pico-W type devices) have this support at the moment. What can you do with this addition? Supposedly you can build multiple send/receive serial streams using PIO, talk easily to MIDI devices and HID (Human Interface Devices) like keyboards, mice, game controllers and more. That in itself is exciting, but as I showed above, there is more. Another big addition is around the openamp support, which is an inter-core communication system that allows MicroPython to run on one core, and other systems on the other core(s) at the same time. Supposedly there is a WebAssembly port in the interpreter, letting you run MicroPython in your browser? We’ll try to look at this also in the future. As to the vfs and tls support, “vfs (virtual filesystem) related functions and classes, such as mount, umount, and VfsFat. These were originally in the os module, but having them there is not compatible with CPython, so they have been moved to their own dedicated module. They still exist in the os module for now, but will eventually be removed from there, so it's recommended to start using the vfs module from now on. Similarly, the new tls module is an evolution of the ssl module, whereby all the existing functionality in ssl has been moved to the tls module. This is done because MicroPython's SSL interface is becoming increasingly different to CPython's, and moving this SSL/TLS functionality to a new tls module gives it room to grow and obtain new features that are useful for embedded applications. And compatibility with normal Python is still retained via a pure Python implementation of the ssl module. One new feature in the new tls module is the ability to register a certificate verification callback.”
Tout d'abord, regardons le support des périphériques avec USB dynamique. Selon les rumeurs, seuls les SAMD et RP2020 (RPi Pico/Pico-W) ont ce support pour le moment. Que pouvez-vous faire avec cet ajout ? Vous êtes censé pouvoir construire de multiples flux sériels d'envoi/réception en utilisant PIO, parler facilement aux dispositifs MIDI et HID (Human Interface Devices) comme les claviers, les souris, les contrôleurs de jeu et plus encore. C'est déjà très intéressant en soi, mais comme je l'ai montré plus haut, ce n'est pas tout.
Un autre ajout important concerne le support d'openamp, qui est un système de communication inter-cœurs qui permet à MicroPython de fonctionner sur un cœur et à d'autres systèmes sur le(s) autre(s) cœur(s) en même temps. Il est censé y avoir un portage de WebAssembly dans l'interpréteur, vous permettant d'exécuter MicroPython dans votre navigateur ? Nous essaierons de nous pencher sur cette question à l'avenir.
En ce qui concerne le support de vfs et tls, « les fonctions et classes liées au vfs (virtual filesystem), telles que mount, umount, et VfsFat. Elles se trouvaient à l'origine dans le module os, mais leur présence n'est pas compatible avec CPython et elles ont donc été déplacées dans leur propre module dédié. Elles existent toujours dans le module os pour l'instant, mais, au final, elles en seront retirées ; il est donc recommandé d'utiliser le module vfs à partir de maintenant. De même, le nouveau module tls est une évolution du module ssl, dans lequel toutes les fonctionnalités existantes de ssl ont été déplacées vers le module tls. En effet, l'interface SSL de MicroPython devient de plus en plus différente de celle de CPython et le fait de déplacer cette fonctionnalité SSL/TLS dans un nouveau module tls lui donne la possibilité de se développer et d'obtenir de nouvelles fonctionnalités utiles pour les applications embarquées. La compatibilité avec Python normal est maintenue grâce à une implémentation purement Python du module ssl. Une nouvelle fonctionnalité du nouveau module tls est la possibilité d'enregistrer un rappel de vérification de certificat ».
As to support for the esp32 Microcontrollers, “The esp32 port has seen some important bug fixes in the BLE component, to deinitialise without crashing, and increase the BLE task stack size. This port also uses the new I2S IDF driver, and supports IDF 5.0.5 and 5.2. There is support to enter the bootloader via machine.bootloader(), and a new esp32.mcu_temperature(), for ESP32-C3/S2/S3 devices.” The list of things that have changed goes on and on. I’ve provided the link above so you can look at them at your leisure. Remember, if you don’t want to bother with the whole, unplug your RPi Pico, press and hold the bootsel button, re-plug your USB cable, then release the bootsel to load a different firmware version; you can simply go to the REPL and enter the command “machine.bootloader()”. After a few seconds, the file manager will open so you can drag and drop the new firmware version to that window to load and reboot the microcontroller. It’s a WHOLE lot easier than trying to juggle the microcontroller device and plug in the USB cable. As I said, things are really hopping here at landing pad 2997, so I’m going to close this month’s article. Look forward to some big projects in the future. Until next time, as always; stay safe, healthy, positive and creative!
En ce qui concerne la prise en charge des microcontrôleurs esp32 : « Le portage d'esp32 a fait l'objet d'importantes corrections de bogues dans le composant BLE, afin de se désinitialiser sans plantage et d'augmenter la taille de la pile de tâches BLE. Ce portage utilise également le nouveau pilote I2S IDF et prend en charge IDF 5.0.5 et 5.2. Il y a un support pour entrer dans le bootloader via machine.bootloader(), et un nouveau esp32.mcu_temperature(), pour les dispositifs ESP32-C3/S2/S3 ».
La liste des choses qui ont changé n'en finit pas. Ci-dessus, j'ai fourni le lien pour que vous puissiez les consulter à votre guise.
Rappelez-vous, si vous ne voulez pas vous embêter avec l'ensemble, débranchez votre RPi Pico, appuyez et maintenez le bouton bootsel, rebranchez votre câble USB, puis relâchez le bootsel pour charger une version différente du firmware ; vous pouvez simplement aller dans REPL et entrer la commande « machine.bootloader() ». Après quelques secondes, le gestionnaire de fichiers s'ouvrira et vous pourrez glisser-déposer la nouvelle version du firmware dans cette fenêtre pour la charger et redémarrer le microcontrôleur. C'est BEAUCOUP plus facile que d'essayer de jongler avec le microcontrôleur et de brancher le câble USB.
Comme je l'ai dit, les choses bougent beaucoup ici sur la plateforme d'atterrissage 2997, je vais donc clore l'article de ce mois. Attendez-vous à de grands projets à l'avenir.
Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs !