Quelle carte Micropython choisir ?

La situation

Les cartes Micropython sont nombreuses, et c'est finalement la force de ce langage de pouvoir être porté sur des plateformes très différentes : pour le codeur, la portabilité des codes sera relativement aisée entre différentes plateformes, à quelques adaptations près le cas échéant.

Par contre, pour un usage individuel dans un cadre DIY, il y a de quoi être un peu perdu devant une telle offre, et je donne ici quelques éléments de choix tirés de mon expérience (après test / analyse de l'essentiel des cartes existantes - 1er semestre 2021).

Les critères de choix importants

L'essentiel des cartes disposent en général :

  • des GPIO, de la mesure analogique (ADC)
  • des communications hardware I2C, SPI, UART et software 1wire, WS2812, DHT, etc.

Donc paradoxalement, ce n'est pas vraiment un critère de choix.

Les éléments clés qui sont importants dans le choix :

  • la connectivité sans fil : c'est un besoin qui est pour ainsi dire universel aujourd'hui, et même si on ne le ressent pas au début, on le ressentira ensuite... donc autant le prendre tout de suite. En clair, on va vouloir le wifi voire le Bluetooth.

  • la dimension de la RAM : c'est un point crucial en fait si on envisage de faire des choses un peu évoluées, c'est à dire utilisant plusieurs librairies, des fichiers, etc. Il faut distinguer ici la SRAM qui est intégrée au microcontrôleur et la SPIRAM qui est présente en complément uniquement sur certaines cartes.

  • le prix : une carte chère, ce n'est pas normal en 2021, à moins d'avoir un équipement très complet. Pour donner un ordre d'idée, une carte avec écran OLED intégrée et wifi, çà coûte une 10aine d'euros. Et la carte micropython d'entrée de gamme ne coûte que 4€ !

Les éléments concrets qui ont leur importance pratique :

  • les dimensions de la carte
  • le port USB utilisé
  • la présence de bouton poussoir "usager" et "reset" ou de LED sur la carte
  • les possibilités d'alimentation et notamment la présence d'un chargeur Lipo intégré à la carte (très pratique)
  • les fonctions "spéciales" : par exemple communication audio IIS ou la conversion numérique analogique (DAC)

Les éléments qui sont possiblement importants mais pas essentiel en DIY :

  • la consommation : les cartes consomment quelques mA en base et quelque µA en mode veille. C'est toujours optimisable, mais concrètement, çà n'est pas essentiel en général en DIY, le recours à une alimentation étant toujours possible.

Le choix concret

Si on veut juste découvrir = le Pi Pico

Pour découvrir Micro-Python, le meilleur choix est le Pi Pico par la Raspberry Pi Foundation. Il n'a pas de connectivité sans fil, il ne coûte que 4€ environ, a une bonne RAM de 190K et dispose de PIO, des broches E/S programmables. C'est un bon choix pour les projets SANS CONNECTIVITE, juste pour découvrir la programmation micro-contrôleur en Micropython.

Si on a besoin de la connectivité sans fil (wifi) mais sans besoin d'affichage = carte ESP 32 "simples"

On pourra au choix utiliser :

  • une carte ESP 32 au format "devkit" et ma préférence va aux cartes Olimex qui disposent d'un chargeur de lipo + connecteur intégré. On dispose du modèle Wroom avec 512K de RAM (100K dispo avec Micropython) ou bien pour à peine plus cher du modèle WROVER avec 8Mo de SPIRAM (4 Mo disponible avec Micropython). Nickel pour des objets connectés évolués

  • si on préfère garder un format "arduino", parce qu'on a du matériel ou qu'on veut rester dans l'ambiance "plaque d'essai", la carte ESP 32 UNO est un très bon choix.

Si on veut une plateforme polyvalente pour une progression complète d'apprentissage ou des projets évolués = carte ESP 32 avec écran intégré

Si on veut une base pas chère avec écran + ESP 32, alors les TTGO display sont excellents ! Pour 10€ on a le wifi, l'écran, et une plateforme avec 100Ko de RAM (ESP 32) le tout dans un format réduit. C'est probablement la carte la plus polyvalente et au meilleur rapport prix / performances / possibilités du moment.

Si on veut monter un peu en gamme et, en plus du wifi, disposer d'un écran plus grand, d'un lecteur de carte SD intégré pour des projets graphique, d'une possibilité d'évolution des montages facile, etc. la base idéale est le core M5Stack (la v1) : 3 bp en façade, un écran de 320x240 pixels couleur, etc. le tout dans un boîtier propre. C'est "LA BASE" pour un apprentissage complet avec une plateforme unique. Son prix (~40€) limite cependant la multiplication des modules, à la différence du TTGO display.

Et si on veut se faire plaisir, disposer d'un produit sympa à porter sur soi, il y a la montre TTGO Watch : capteurs intégrés, lipo intégré, afficheur tactile, wifi (mais pas de GPIO externe) le tout dans un boîtier de montre : on dispose de sa montre connectée à un prix sympa (40€) totalement programmable et paramétrable par soi-même.

Vous n'arrivez pas à choisir ?

Et bien alors prenez un Pi Pico à 4€... et puis après vous aviserez. Ce qui est bien avec Micropython et les cartes présentées ici, c'est que les codes sont facilement transposables d'une plateforme à l'autre.

Les cartes qu'on peut oublier ?

J'ai envie de dire tout le reste... Notamment :

  • les ESP 8266 : ils n'ont clairement pas assez de RAM pour faire des choses un peu intéressante

  • les cartes Micro-Bit : elles sont quoiqu'on en dise très particulières et enferment dans un univers matériel lié au fabricant, plutôt chères, avec une RAM réduite, une version de micropython spécifique, etc. Bref, une fois qu'on commence avec çà... on est coincé avec.

  • et finalement, toutes les autres cartes qui sont plutôt chères ou n'ont pas la connectivité.

Les cartes à surveiller ?

Il y a des cartes qui sont à regarder de près, ce sont les cartes avec caméra : çà peut être intéressant... mais faut pas s'attendre à des miracles comparativement à une nanopc. Les images et les flux vidéos, c'est clairement pas le top avec un micro-contrôleur. A voir si on a un besoin spécifique de capture d'image, mais on sort d'un cadre généraliste.

Les modules et capteurs associés

Si vous voulez rentabiliser vos achats et ne pas dépendre d'une gamme fabricant, si vous voulez pouvoir réutiliser vos capteurs et modules indifféremment avec une carte Arduino, un raspberry Pi ou bien sûr avec votre carte Micropython, privilégiez les module dit "breakout" avec connecteurs Dupont : ce sont de petits modules compacts, utilisable facilement et transposables avec toutes les cartes.

Et même si les cartes Micropython évoluent, alors vous pourrez toujours les utiliser.