J’ai récemment joué avec quelques projets MicroPython sur plusieurs plates-formes embarquées différentes, y compris quelques modules WiFi ESP32. Il existe différentes manières de programmer ces modules:

  • Utilisez un terminal série et ampy (maintenu par [devxpy] depuis son abandon par Adafruit en 2018).
  • Si vous utilisez des cartes Pycom ou un micrologiciel WiFy, pymakr plugins pour Atom et Visual Studio.
  • Si vous préférez la ligne de commande comme moi, il y a rshell par l’un des meilleurs contributeurs MicroPython [Dave Hylands].

Depuis plus d’un an, je suis assez content de rshell jusqu’à ce que je commence à travailler sur ces nœuds sans fil. Étant paresseux, je veux bricoler mes modules ESP32 depuis le canapé, pas faire glisser mon ordinateur portable dans la cuisine ou le balcon pour brancher un câble USB. Est-ce que je ne peux pas travailler avec eux sans fil?

Eh bien, vous pouvez utiliser WebREPL. Bien qu’il soit fonctionnel, il n’a tout simplement pas frappé mon imagination pour une raison quelconque. [Elliot] mentionné dans un podcast récent qu’il utilise telnet pour accéder à ses nœuds sans fil, mais qu’il utilise esp-link sur un ESP8266, ce qui signifie jeter une autre puce dans le mélange.

L’IDE Thonny

J’avais presque abandonné quand, par hasard, j’ai vu cette vidéo sur le canal Dronebot Workshop sur l’exécution de MicroPython sur les nouvelles cartes Raspberry Pi Pico. Bill utilisait Thonny, un IDE Python populaire dans la communauté éducative. Thonny a été introduit en 2015 par Aivar Annamaa de l’Université de Tartu en Estonie. Thonny a été conçu pour résoudre les problèmes courants observés pendant six ans d’enseignement de cours de programmation Python aux débutants. Si vous lisez le projet et son développement, vous verrez qu’il a déployé beaucoup d’efforts pour créer Thonny, et cela se voit.

Me pencher sur Thonny m’a rendu curieux, et après un peu de fouille, j’ai découvert qu’il prend en charge WebREPL pour MicroPython dès la sortie de la boîte. Bien qu’il s’agisse d’une nouvelle fonctionnalité et classée comme expérimentale, je l’ai trouvée raisonnablement stable à utiliser et plus qu’adéquate pour une utilisation en laboratoire à domicile.

Installation et connexion

Les instructions sont clairement données sur le site Web du projet. Il y a un lien de téléchargement en haut de la page pour Windows. Pour Linux et Mac, il suffit de faire sudo apt install thonny ou alors brew install thonny était tout ce dont j’avais besoin. Si vous avez un Raspberry Pi, vous constaterez que Thonny est pré-installé – la version 3.3.3 a été trouvée sur un Pi 4 récent dans mon laboratoire. Cependant, sur un Pi 3 plus ancien, Thonny était trop vieux et le simple fait de le réinstaller ne fonctionnait pas pour moi. Faire un sudo apt update, sudo apt upgrade, puis la réinstallation de Thonny a abouti à la dernière version 3.3.6.

Pour une raison quelconque, le Thonny trouvé dans les dépôts de paquets Ubuntu 20.04 et Debian Buster n’était pas non plus assez récent. Plutôt que de construire à partir de la source, j’ai utilisé le script d’installation Linux fourni qui télécharge et installe la dernière version.

Pour vous connecter à un module, vous utiliserez le Run -> Select interpreter... menu. Ici, vous choisissez le type de module à utiliser et quelle interface (USB ou WebREPL). Notez que vous devez d’abord vous connecter à votre module via USB et assurez-vous que WebREPL est activé dans boot.py. C’est la méthode normale d’activation de WebREPL en général – si votre module a déjà une configuration WebREPL, vous n’avez rien à changer. Remplissez l’URL et le mot de passe WebREPL – vous devez vous connecter et être prêt à partir.

Tweaks

Écran de connexion Thonny

Par défaut, les fenêtres de Thonny sont empilées verticalement. Si vous utilisez un moniteur à écran large moderne, vous voudrez probablement réorganiser les fenêtres de Thonny afin que l’éditeur et le shell soient côte à côte (voir l’image de présentation). Ceci est fait en ajoutant ShellView.location = e au [view] section de la configuration.ini fichier (voir ici). le e moyens East, et d’autres points cardinaux comme se peut également être spécifié. Pour les systèmes que j’ai testés, le fichier de configuration se trouve aux endroits suivants:

  • Raspi, Ubuntu, Debian
    ~/.config/Thonny/configuration.ini
  • Mac
    ~/Library/Thonny/configuration.ini
  • les fenêtres
    C:Users\AppDataRoamingThonnyconfiguration.ini

Je n’ai eu aucun problème à utiliser le REPL manuellement, mais j’ai découvert un problème une fois que vous avez commencé à tester des applications à démarrage automatique avec des boucles éternelles. Si vous ne faites pas attention, la boucle principale de votre application peut vous empêcher de reprendre le contrôle REPL. La solution consiste à vous assurer que votre application dort pendant plusieurs millisecondes dans la boucle principale. J’ai testé avec 100 ms (voir ici) et j’ai toujours pu reprendre le contrôle. Cela ne devrait pas être un problème dans la plupart des applications de capteurs domestiques, où le module peut dormir pendant des dizaines de minutes entre les lectures.

Par défaut, une installation Thonny ne se rend pas visible pour l’exécution en ligne de commande. Sur les ordinateurs que j’ai testés, vous trouverez l’exécutable Thonny aux emplacements suivants:

  • Raspi /usr/bin/thonny
  • Ubuntu, Debian (installé via le script d’installation)
    ~/apps/thonny/bin/thonny
  • Mac
    /Applications/Thonny.app/Contents/MacOS/thonny
  • les fenêtres
    C:Users\AppDataLocalProgramsThonnythonny.exe

Plusieurs modules et instances

Liste de sélection des modules Thonny

Thonny peut prendre en charge une variété de modules différents. Mais si vous souhaitez vous connecter à plusieurs modules en même temps, vous devez exécuter plusieurs instances de Thonny simultanément. Par défaut, une seule instance est autorisée. Dans le Tools -> Options -> General menu, décochez le Allow only single Thonny instance case à cocher.

J’ai cependant remarqué une bizarrerie sur MacOS. Pour une raison quelconque, décocher cette option ne fonctionne pas lors du lancement de l’application à partir de l’interface graphique. Il existe une solution de contournement: vous pouvez exécuter plusieurs instances si vous les démarrez à partir de la ligne de commande.

Encore un ennui – par défaut, Thonny utilisera l’interpréteur / connexion précédent au démarrage. Il s’agit d’un comportement raisonnable, mais qui provoque un hoquet lorsque vous parlez simultanément à plusieurs cartes. Ignorez simplement la pléthore de messages d’erreur lorsque l’instance Thonny n ° 2 tente de se connecter à un module déjà connecté et utilisez les menus pour vous connecter au deuxième appareil. Il n’y a apparemment aucun argument de ligne de commande pour une connexion spécifique, mais j’ai une enquête en attente sur la page du projet GitHub.

Le sommet de l’iceberg

Je me suis uniquement concentré sur l’aspect de connectivité WebREPL de Thonny ici, une fonctionnalité qui semble être rare dans d’autres flux de travail de programmation MicroPython. Mais cela ne fait qu’effleurer la surface de Thonny. Sous le capot, il a beaucoup à offrir qui est caché lorsque vous l’ouvrez pour la première fois.

Et bien que j’utilise son mode de fonctionnement MicroPython, Thonny a été conçu pour aider les étudiants qui apprennent à écrire et à déboguer des programmes Python «normaux» exécutés sur des ordinateurs de bureau. Si vous travaillez fréquemment en Python, je vous encourage à jeter un coup d’œil à ces aspects du programme – un inspecteur d’objets, un débogueur, une procédure pas à pas et toute une série d’autres outils utiles.

Thonny est également un outil multi-plateforme. Lors de la préparation de cet article, je l’ai testé sur des ordinateurs MacOS, Windows 10, Debian, Ubuntu et Raspberry Pi sans problème. Le projet est open-source sous la licence MIT.

À tout le moins, Thonny est une excellente solution pour la programmation MicroPython à distance de modules embarqués WiFi. Vérifiez-le et testez-le, surtout si vous êtes paresseux comme moi.