PicoTel : créer un système MicroPython autonome en branchant un Raspberry-Pi PICO sur un Minitel
Bonjour à tous,
En 2019, Jean-Christophe d'ArduiBlog m'avait passé un Minitel lors de la Maker Faire que j'ai eu bien du mal à brancher sur mon microcontrôleur MicroPython.
Plus récemment, l'article "Minitel branché sur mon Raspberry-Pi Pico" montrait comment brancher le Pico sur l'UART du Minitel.
Aujourd'hui, j'ai enfin une session MicroPython qui fonctionne directement sur le Minitel... PicoTel est né!
MicroPython 1.18 + DupTerm
En ce 11 mai 2022, MicroPython officiel pour Raspberry-Pi Pico ne contient pas la fonction dupterm() permettant de répliquer le terminal REPL sur une liaison série comme L'UART.
Et bien, là ce n'est plus un problème puisque j'ai recompilé un MicroPython Pico avec dupterm() . Le firmware (uf2) peut être téléchargé ici! (sous répertoire _firmware).
Nul doute qu'il sera inclus dans les prochaines versions.
Brancher le Pico sur le Minitel
J'ai gardé le même montage que dans le précédent article.
Dupliquer le terminal REPL sur le minitel
Si vous avez téléchargé le firmware MicroPython+DupTerm sur votre Pico alors vous pourrez utiliser dupterm() .
Les quelques lignes de test suivantes sont saisies dans une session REPL depuis un ordinateur.
>>> from machine import UART >>> ser = UART( 0, 9600, bits=7, parity=2, stop=1 ) >>> from os import dupterm >>> dupterm( ser )
Et Tadaaaa.....
L'invite REPL est maintenant visible sur le Minitel...
Il est possible d'y saisir des commande Python!
Grâce à cet invite de commande, il est possible de démarrer des scripts Python avec un simple import mon_script . Il est d'ailleurs possible de voir la nouvelle invite de commande MicroPython ( >>> ).
J'ai par ailleurs un petit script nommé mshell.py (voir le dépôt) permettant de gérer facilement le fichiers depuis MicroPython a l'aide d'un outils en ligne de commande similaire au Shell Linux.
Cette autre capture montre comment afficher le contenu du fichier coca.txt présent sur le système de fichiers MicroPython à l'aide de la commande "cat".
A noter que MShell dispose d'une documentation dans un fichier texte (utilisé comme aide de MShell).
Elle est pas belle la vie ?
Et le contrôle de flux?
La fiche du Minitel présente un signal "Device Ready" qui n'est pas utilisé.
Je le pensais inutile jusque maintenant... c'est que même à 1200 bauds, il est très facile de saturer le minitel en faisant une série de "print()" depuis MicroPython.
Pour le moment, j'ai contourné le problème en ajoutant une pause de 500ms entre deux appels consécutifs à print() . Cela fera l'affaire pour l'instant mais ce n'est pas vraiment élégant!
Il va valoir que je me penche sur le contrôle de flux matériel!
La suite
Ce projet n'est pas encore terminé, il y manque encore deux éléments cruciaux:
- Contrôle de flux matériel (voir ci-dessus) pour un pouvoir utiliser le débit maximum en toute circonstances.
- Editeur de texte sous MicroPython pour pouvoir encoder des scripts Python directement depuis le Minitel
- Utiliser une interface WiFi (ex: ESP8266) pour avoir un accès internet.
Il y a bien d'autres idées a exploiter... comme les séquences d'échappement, teletex, contrôler plus finement l'affichage (déplacement curseur), ajouter des connectiques dont I2C pour explorer des extensions matérielles (horloge temps réel, capteur CO2, Etc), quelques script utilitaires (afficher l'heure).
Bref, largement de quoi s'amuser!
Dépôt PicoTel
Le projet vient d'être publié sur GitHub.
Écrire un commentaire