Micropython, unificateur et simplificateur !

Un tourbillon de micro-contrôleurs

En ce début 2021, il y a de quoi avoir le tournis avec toutes les cartes micro-contrôleurs existantes pour le DIY (à part le Raspberry Pi est un système type pc miniature sous Gnu/Linux). On peut rapidement citer les différentes plateformes à micro-contrôleur :

  • les cartes Arduino qui existent depuis les années 2010
  • bases STM32, tel que la Pyboard, la PYBStick
  • la micro:bit à base de nRF52
  • les cartes ESP 8266
  • et leurs cousines les cartes ESP 32
  • et depuis ce début 2021, le Pi Pico à base de RP2040, une base ARM M0 "maison" par la fondation Raspberry Pi
  • on a aussi les RISC V qui se tiennent en embuscade

On a à côté de çà des gammes "fabricants" avec notamment :

  • la gamme Feather d'Adafruit qui associe cartes multi-contrôleurs + shields compatibles
  • idem pour la gamme FireBeetle par DFRobot
  • la gamme M5 Stack à base d'ESP 32 qui fourni tout un éco-système de modules à connecter entre eux

Il y a par ailleurs toutes sortes de cartes et objets nouveaux qui existent :

  • montre à écran OLED à ESP 32
  • cartes associant micro-contrôleur ET esp 32

Bref, c'est un tourbillon de cartes, de plateformes, de systèmes...

Un tourbillon de modules, capteurs, technologies

A côté de çà, on a également une prolifération de shields, de modules, de cartes d'interfaçages, etc... et un ensemble de technologies utilisées varié. Il faut savoir faire le tri entre :

  • les dispositifs contrôlés par sortie numérique simple
  • ou utilisation d'une impulsion en largeur variable (PWM), en fréquence, spécifique (servo)
  • parfois via un circuit d'interfaçage simple ou élaboré
  • les capteurs en entrée numérique simples, ou mécaniques
  • les capteurs analogiques linéaires ou non linéaires, résistifs ou non résistifs
  • les modules sériels 1 fils (1-wire, neopixel WS2812)
  • les modules sériels 2 fils (capteurs I2C, actionneurs i2C, modules i2C, gamme tm1637/1638, etc. )
  • les modules sériels 3 fils ou + (SPI, etc.)
  • les modules sériels UART,
  • les nouveaux modules I2S
  • etc.

Bref, là encore, gros tourbillon des possibles

Alors, on fait quoi ?

On peut vite avoir un sentiment de découragement devant tant de possibilités, ne plus savoir où donner de la tête... Comment être sûr de ne pas se tromper ? Comment être sûr que l'on en a pour son argent ? Comment être sûr que l'on fait le bon choix ?

En fait, on est perdu parce qu'on perd la main... les fabricants se livrent une concurrence forte pour se distinguer d'une façon ou d'une autre et c'est pour cela que l'on voit les gammes, etc. se multiplier. Il y a aussi la concurrence Occident / Chine notamment au niveau des prix... et tout le monde veut sortir son épingle du jeu. Pour ne pas parler de la concurrence inter marchands, même en France ou Europe. En fait, tout ce système cible l'acheteur, vous cible vous, moi... mais il recherche non pas notre bien en soi, les différents acteurs cherchent avant tout leur profit. Ce qui compte, c'est ce qui se vend... et avec de la marge.

Il faut du coup recentrer les choses sur l'usager, sur vous, sur moi : il faut que chacun d'entre-nous reprenne la main, puisse bénéficier dans tous les cas, pour toutes les plateformes, d'une maîtrise de toutes les solutions.

Micropython vous redonne la main !

Micropython, un langage unificateur

Perdu au vu de toutes les cartes possibles et disponibles ? Micropython vient vous redonner la main ! En fait, peu importe la carte avec laquelle vous allez commencer : Micropython, c'est 80% de Python et 20% de Microcontrôleur, avec à l'intérieur de çà seulement quelques % de choses vraiment spécifiques à une plateforme donnée. Quand aux librairies externes, elles sont pour l'essentiel compatibles quelque soit la carte.

En clair, si vous apprenez Micropython avec une carte... et bien vous apprenez MicroPython ! Et si vous voulez passez à une autre carte parce que votre projet l'exige... et bien, pas de problème ! Cela sera toujours du Micropython, vos codes seront réutilisables à l'identique pour l'essentiel, à quelques adaptations minimales près éventuellement.

De ce point de vue, Micropython joue le rôle d'un micro-OS, un micro système d'exploitation : peu importe le matériel, la carte utilisée, dans tous les cas vous êtes dans votre élément et vous retombez vite sur vos pieds une fois assimilées les éventuelles spécificités d'une carte donnée.

Micropython, un langage simplificateur

Dans la mesure où micropython c'est un langage interprété, le gros de la compilation est déjà fait et on se retrouve donc avec les mêmes fonctions disponibles à l'identique sur l'essentiel des cartes. Ouvrir un fichier ? On fera sur toutes les cartes la même chose, 3 lignes de code :

f=open("file.txt","r")
content=f.read()
f.close()
print(content)

Vous savez le faire sur une carte ? Vous savez le faire sur toutes les cartes. Et vous pouvez aussi le faire depuis l'interpréteur sur toutes les cartes. Créer un fichier sur la carte est donc très simple.

Mieux, le langage MicroPython, c'est avant tout du Python : n'importe quel bout de code "pur python" qui fait le job sur votre ordinateur fera le job sur votre carte MicroPython. Et quand on sait que la communauté de codeurs Python est une des plus importantes au Monde, je vous laisse imaginer le potentiel de soutien que çà met à votre disposition.

Conclusion

Face au tourbillon ou à la déferlante, comme vous voulez, de cartes micro-contrôleurs, de capteurs et modules de toutes sortes, Micropython vient donner de la sérénité : on commence avec la carte qu'on veut, on apprend Micropython, et ce que l'on a appris avec une carte, on pourra le faire sur n'importe quelle autre carte.

Si on a déjà fait quelque chose avec une carte, on pourra en général le refaire à l'identique avec une autre carte, notamment avec les modules prêts à câbler i2C, etc. Et le nombre de matériel et modules supportés par Micropython est tout simplement impressionnant : https://awesome-micropython.com/

Bref, avec MicroPython, c'est une sorte de "reprise de contrôle" : vous avez à nouveau la main !