Picoterm : utiliser Raspberry-Pi Pico pour créer un terminal VGA

Amateurs de MicroPython, d'Arduino, Linux, RC2014 Retro-computer et autres,

Bonjour!

Aujourd'hui, nous allons parler de PicoTerm, un projet assez discret mais pourtant d'une importance notable.
J'y investi un temps considérable ces dernières semaines (j'aime pas le C!), raison du ralentissement des publications sur le blog, le wiki et les pilotes MicroPython.

Qu'est-ce que PicoTerm ?

Pour faire court:
PicoTerm est un émulateur terminal exploitant un écran VGA et un clavier USB.

Crédit: Meurisse D. - Projet RC2014Z80/PicoTerm

Ce projet propose un terminal monochrome de 80 lignes/40 colonnes et exploite un terminal VGA comme afficheur.
Si VGA est une technologie dépassée en 2022/2023, les moniteurs VGA sont abondement disponibles, il y en a tellement qu'on les donnes.
PicoTerm est donc un projet écologique puisqu'il permet le réemploi des moniteurs VGA.

PicoTerm  utilise un clavier USB comme interface homme-machine. Cela tombe bien car les claviers PS/2 commencent à se faire plus rare (voire plus honneur que les claviers USB).

PicoTerm est configurable grâce à son interface de configuration et stockage des paramètres en mémoire Flash.

Enfin, PicoTerm communique avec l'hôte à l'aide d'un UART (port série)... c'est donc un outil très versatile.

PicoTerm est abordable! Quelques connecteurs, quelques résistances, un Pico à quelques EURO et c'est parti. C'est tellement bon marché que l'on n'hésitera pas à condamner un Pico pour une telle utilisation.

Utilisation de la font NupetScii avec PicoTerm
Source: RC2014Z80/picoterm - D.Meurisse


Fonctionnalités de PicoTerm

  • Mise-à-jour du firmware super simple (voir la doc firmware upgrading)
  • Sortie VGA avec plusieurs profiles de couleur (vert, ambre, jaune, violet, ...)
  • 80 colonnes, 30 lignes (version 40 colonnes également disponible)
  • Clavier USB (via câble OTG)
  • Support de multiple format de clavier (US,UK,BE,FR,DE,...)
  • Support de séquence d'échappement VT100 (listée dans le dépôt).
  • Mode ASCII 7 bits (8ieme bit utilisé pour le rendu en vidéo inverse tel que pratiqué par CP/M).
  • mode ANSI 8 bits avec caractères semi-graphique. Activable avec séquence d'échappement.
  • Plusieurs jeu de caractères ANSI/semi-graphique disponibles.
    • NupetScii : jeu de caractères regroupant les caractéristique de divers ordinateurs rétro (C64, MSX, MSDOS).
      Génial pour réaliser du rendu ASCII art, conception d'interface, dessin de carte, réalisation de ressources avec playscii.
    • CP437 : IBM MS-DOS codepage for english computer.
  • PicoTerm connector : connecteur d'extension
    • Lecteur de carte SD [under construction]
    • Active Buzzer
    • Delayed USB power-up 
    • sortie Poor man debug
  • Divers écrans d'aide (SHIFT+CTRL+...)
  • SHIFT+CTRL+H : écran d'aide présentant tous les raccourcis.
  • SHIFT+CTRL+M : écran de configuration matériel avec sauvegarde en mémoire Flash.
  • Large documentation incluse dans le dépôt (entrées listées dans le dépôt).Un Un projet génial sans documentation est un projet inutile (Meurisse D).

PicoTerm: outil universel pour vos projets

Tout système communiquant par l'intermédiaire d'un port série peut tirer avantage de PicoTerm. Les possibilités sont donc infinies!

Avec MicroPython

Ce n'est pas un secret, je suis plus que Fan de MicroPython. L'une des forces de MicroPython est d'être un environnement complètement autonome.
Les plateformes MicroPython sont capable d'exécuter des scripts Python mais aussi de les compiler (de texte vers ByteCode) directement sur le MicroContrôleur. 

Carte Pyboard et terminal sur Linux

Je m'étais déjà amusé à le brancher sur un minitel (projet PicoTel) en exploitant l'UART (Port Serie) pour obtenir un système complètement autonome.

PicoTel : MicroPython et terminal Minitel

Ce qui est possible avec PicoTel l'est aussi avec PicoTerm!

Avec PicoTerm, il sera possible de concevoir un outil d'apprentissage de la programmation Python, STEM et électronique à faible coût, portable et autonome. Branchez y un clavier, un moniteur VGA et codez!
Même plus besoin d'un ordinateur :-)

Un système Linux, Raspberry-Pi, Pi-Zero

Tous les systèmes Linux savent communiquer avec terminal par l'intermédiaire d'un UART. Il existe de très nombreux projets enfuis basés sur Linux, des routeurs pour ne citer qu'eux!

Le Raspberry-Pi n'y fait pas exception puisqu'il propose une sortie en ligne de commande (un TTY) sur le GPIO.
Branchez y votre PicoTerm et c'est parti. Vous pouvez ainsi contrôler un système enfui avec très peu de matériel.

Arduino et microcontrôleurs

Tous les microcontrôleurs proposent un où plusieurs UARTs.
Qui ne connais pas Arduino, Arduino IDE et sa console série.


Qui n'a pas envoyer de message vers le moniteur série pour faciliter le débogage.

Tout ce qui arrive dans la console de votre ordinateur transite sur la broche #1 de votre Arduino. 

Si vous brancher PicoTerm sur la broche TX (et RX) alors votre projet devient autonome et capable d'afficher des messages sur un écran, voire de réceptionner des instructions par l'intermédiaire du clavier!

D'autant d'en envoyant des séquences d'échappement (c'est très facile), il est possible de contrôler l'effacement de l'écran, la position du curseur, etc.

L'informatique Rétro, RC2014

Le projet PicoTerm est né autour de la plateforme RC2014 qui est un ordinateur Z80 moderne. Ces machines/ordinateurs rétro utilisent un UART pour dialoguer avec le monde extérieur. Un terminal est donc indispensable pour type de machine.

ordinateur RC2014 à base de Z80 Source: rc2014.co.uk

Certes la programmation assembleur Z80 date et paraît "obsolète" face au microcontrôleurs de la lignée Intel.
Pour sa part l'OS CP/M date aussi et ne présente, aujourd'hui, que peu d'intérêt.

Cependant, aucune connaissance n'est obsolète! C'est grâce au RC2014 que PicoTerm existe et qu'il pourra être utilisé avec de nombreuses autres plateformes.

Mot de la fin

PicoTerm est toujours très activement en cours de développement!
Des nouveautés restent à venir.

Je vous invite à découvrir ce module (où suivre le projet) car il débouchera sur un outil très intéressant pour les Makers.

Aucun commentaire