RC2014: module PicoTerm VGA et clavier USB : SI tu aimes le Qwerty SINON c'est frustration et damnation garantie!

Bonjour à tous,

Autour du RC2014, il y a une carte terminal s'appelant PicoTerm (avec source sur GitHub). 

Basée sur un Raspberry-Pi Pico, ce module est un terminal VGA utilisant l'entrée microUSB du Pico pour y brancher un clavier USB.

VGA Terminal avec Picoterm

Il est assez alléchant d'avoir un système entièrement autonome... j'ai donc sorti mon moniteur et un clavier USB.

PicoTerm en action avec moniteur VGA et clavier USB
 

Attention, support Qwerty uniquement

Avec un cable OTG (On The Go), il est très facile de brancher un clavier USB sur le PicoTerm. Cela ne fonctionne pas avec de nombreux claviers USB (pas l'officiel de la fondation... sniff).

Si j'ai utilisé beaucoup de claviers Qwerty dans ma jeunesse, j'ai une nette préférence pour les claviers Azerty. Cela ne devrait pas être un problème puisque le code est publié sur GitHub... il doit bien y avoir moyen d'apporter le support Azerty sur ce projet.

Il y a un mais... sinon je ne mentionnerais pas "frustration et damnation garantie" dans le titre.

Compiler le projet PicoTerm

Pour envisager la modification du projet, il faut d'abord le compiler.
Les informations disponibles sont très spartiates, ce qui ne facilite pas la tâche.

Par contre, une fois compiler, le firmware est loin d'être aussi stable que les binaires pré-compilés v0.1.3 en 80 colonnes ( https://github.com/RC2014Z80/picoterm/tree/main/80Column%20Mono/Build/0.1.3 ) disponible dans le dépôt.

C'est comme si le code sur le GitHub n'était pas vraiment complet (ou qu'il manque quelques subtilités).
Faut dire que le code est assez "cochon"...

PicoTerm par DQuadros

En faisant  un tour par les "Issues" de PicoTerm, je découvre que DQuadros à déjà fait ce travail pour son clavier Brésilien.

En plus, il a déjà fait un excellent travail sur le code qui est déjà beaucoup plus lisible mais surtout très bien structuré.

C'est donc la version que j'ai finalement compilé... mais la pile USB Host est terriblement instable! Parfois cela fonctionne, parfois cela plante.
Quand cela veux bien fonctionner, j'arrive à capturer les messages de montage/démontage USB au branchement d'un clavier. Mais pas question d'insérer du code de débogage dans la routine de capture des USB-Report envoyés par le périphérique. 

Après avoir contacté Daniel, il m'apprend que la pile logiciel TinyUSB utilisé par le Pico_SDK date un peu... probablement la raison de mes instabilités.

C'est frustrant à souhait... grrrr! Cela fait maintenant 12H que je me bat pour compiler un PicoTerm exploitable.

je dois encore essayer de faire une mise-à-jour de Tiny-USB (qui sait!) mais je décourage.

Ce n'est pas ma seule mauvaise nouvelle, Daniel travail sur un autre projet RPTerm... ce qui limite le support disponible sur son actuel travail pour PicoTerm :-/

RPTerm par DQuadros

Le projet RPTerm est basé sur la bibliothèque PicoVGA qui semble être une excellente bibliothèque pour RP2040. Je comprends les motivations de Daniel.

Exemple de capture de PicoVGA

Avec un telle bibliothèque, le projet de terminal RPTerm est vraiment prometteur puisque Daniel compte intégrer un menu au terminal et une option de chargement vers RC2014 (en XModem) depuis une carte SD.

Prototype RPTerm
source: RPterm

Si ce projet est très intéressant, il y a encore une fois un HIC! C'est que la configuration matérielle est différente du module Pico VGA pour RC2014.

Dommage, je n'ai pas de solution immédiate :-(

Conclusion

J'ai quand même tendance à dire que c'était mieux avant! Les bons vieux claviers PS/2 fonctionnaient quand même d'enfer sans autant de prise de tête autour de l'interface USB.

Quelles options ai-je ?

  1. Utiliser le Firmware v0.1.3 disponible avec un clavier Qwerty.
  2. Débrancher le jumper TX sur module PicoTerm VGA et utiliser un clavier PS2 avec un microcontrôleur pour injecter vite fait les signaux sur la broche TX du bus RC2014.
  3. Envisager une mise-à-jour de TinyUSB dans le Pico-SDK.
    C'est fait, voir ci-dessous.
  4. Et pourquoi pas hacker des claviers existant pour remplacer la sortie USB avec une solution à base de microcontrôleur pour recréer une sortie PS/2 ou carrément sortie UART.

Mise-à-jour de TinyUSB = failed!

Le Pico-SDK utilise TinyUSB 0.12.0. En suivant les recommandations de Daniel, j'ai fait une mise-à-jour vers TinyUSB 0.14.0 sur base des documents suivant : TinyUSB - Getting Started, et ce thread  (réponse de Damien Georges, qui indique l'usage de  PICO_TINYUSB_PATH ).

Ainsi, j'ai modifié le fichier CMakeLists.txt pour ajouter la commande set juste avant les includes() .

set(PICO_TINYUSB_PATH "/home/domeu/Bureau/RC2014/picoterm/80Column\ Mono/tinyusb" )
include(pico_sdk_import.cmake)       
include(pico_extras_import.cmake)

x

Voila, preuve à l'appuis, j'ai un PicoTerm de DQuadros avec un TinyUSB.

PicoTerm avec TinyUSB 0.14.0

Et bien, la connectique USB est toujours aussi instable :-( !
Franchement pas bol!


 

Aucun commentaire