Do-It-Yourself Gadgets Hardware Linux Raspberry Pi

VersaTerm: DIY vt102 Terminal (mit RPi Pico)

Juniper SRX mit VersaTerm als Ein- und Ausgabegerät

Hier steh ich nun – frisch im Jahr 2024 – und präsentiere mit VersaTerm das letzte abgeschlossene Projekt des vergangenen Jahres. Hierbei handelt sich um ein Open-Source und Open-Hardware Bastelprojekt mit erstaunlich guter Dokumentation. Ziel ist es, mithilfe eines Raspberry Pi Pico Microcontrollers, ein VT102/52 Terminal zu emulieren. Tastatureingaben können über USB und PS/2 erfolgen, für die Ausgabe bigbanged der Pico ein VGA oder sogar ein HDMI Signal raus. Die serielle Kommunikation kann nach RS232 Standard oder wahlweise auf TTL 3,3V und 5V erfolgen.

Über den YouTuber Tech Tangents, bin ich auf das ASCII Video Terminal gestoßen, für dieses gibt es eine Mod und erweiterte Firmware mit USB-Keyboard Support von David Hansel. Dieser verweist dort aber an prominenter Stelle auf das mächtigere VersaTerm.

VersaTerm assembliert und gereinigt oben

Herstellung

Das PCB ist fast ausschließlich auf THT-Komponenten ausgelegt, lediglich 2 relativ große SMD Dioden sind eingeplant. Die Lötherausforderung hier ist eher gering. Ich möchte mit diesem Projekt primär meine Zehen in das Wasser der PCB-Fertigung und des Komponenten-Sourcings stecken. Ich habe in der Vergangenheit schon den einen oder anderen Gehversuch in KiCad gewagt, bislang aber nichts hinreichend weit gebracht, dass ich mich getraut hätte, einen Prototyp davon zu bauen. Mit einem gut dokumentierten und getesteten Projekt sollte sich das nun ändern.

PCBs fertigen lassen

Wenn es um die Herstellung von PCBs geht, fallen mir auf Anhieb 2 Namen ein: JLCPCB und PCBWay. Letzteren sehe ich häufiger als Sponsor von irgendwelchen YouTubern – also muss JLC günstiger sein. Ohne weitere Recherchen und Preisvergleiche, hab ich also bei JLC bestellt.

Nach dem Hochladen der Gerber-Dateien, habe ich weitestgehend alle Einstellungen auf der (automatischen) Vorauswahl belassen, lediglich die Farbe habe ich aus ästhetischen Gründen in blau geändert. Das passt soweit auch, da das Projekt nur 2 Lagen nutzt. Das kommt dann bei etwa 6€ für 5 Boards raus – samt Shipping. Hätte ich nur geahnt, wie günstig PCBs in der Fertigung sind, hätte ich vielleicht doch auch mal einen Versuch mit einem halbgaren Projekt gewagt.

Komponenten bestellen

In Punkto Komponenten bin ich den einfachen Weg über den fertigen Warenkorb-Link bei DigiKey gegangen, bei denen ich ohnehin schon einen Account hatte. Scheinbar haben wir die Chipkrise mittlerweile hinter uns gelassen, sodass alle Teile dort verfügbar waren – abgesehen vom Raspberry Pi Pico, den DigiKey nicht im Sortiment hat. Diesen hab ich also noch bei Amazon geklickt.

Natürlich kann man die Teile auch woanders bestellen, die BOM (Bill of mateials) liegt in unterschiedlichen Formaten im Projekt.

2 Säcke voll Einzelteile

VersaTerm Firmware kompilieren und installieren

Tiny-USB hatte mal Probleme mit USB-Hubs, sodass Tastaturen mit integriertem Hub nicht unterstützt wurden. Um auf Nummer sicher zu gehen, hole ich mir alle libs direkt aus dem jeweils aktuellen origin.

git clone https://github.com/dhansel/VersaTerm.git
cd VersaTerm/software/lib
git submodule update --init
cd pico-sdk/lib
git submodule update --init
git submodule update --remote --merge
cd ../..
git submodule update --remote --merge
cd ..
cd lib/pico-sdk/lib/tinyusb
git fetch
git merge origin/master
cd ../../../../
mkdir build
cd build
cmake .. -DPICO_SDK_PATH=../lib/pico-sdk -DPICO_COPY_TO_RAM=1
makeCode-Sprache: PHP (php)

Anschließend liegen die Binaries im Unterverzeichnis ‘src’. Das Image ‘VersaTerm.uf2’ kann einfach mit dem Dateibrowser auf den Raspberry Pi Pico kopiert werden, nachdem man ihn mit dem Boot-Taster in den Massenspeichermodus versetzt hat. Der Pico flasht das Image nun und startet sich neu. Die Firmware ist installiert.

 mscholz  …  VersaTerm  software  build  ls -lha src                                                                                                                                                                       main 
insgesamt 5,4M
drwxr-xr-x. 1 mscholz mscholz  252 15. Jan 12:44 .
drwxr-xr-x. 1 mscholz mscholz  258 15. Jan 12:44 ..
drwxr-xr-x. 1 mscholz mscholz  190 15. Jan 12:44 CMakeFiles
-rw-r--r--. 1 mscholz mscholz 1,2K 18. Dez 22:55 cmake_install.cmake
drwxr-xr-x. 1 mscholz mscholz   12 18. Dez 22:55 elf2uf2
-rw-r--r--. 1 mscholz mscholz 176K 18. Dez 23:03 Makefile
-rwxr-xr-x. 1 mscholz mscholz 288K 15. Jan 12:44 VersaTerm.bin
-rw-r--r--. 1 mscholz mscholz 2,7M 15. Jan 12:44 VersaTerm.dis
-rwxr-xr-x. 1 mscholz mscholz 464K 15. Jan 12:44 VersaTerm.elf
-rw-r--r--. 1 mscholz mscholz 435K 15. Jan 12:44 VersaTerm.elf.map
-rw-r--r--. 1 mscholz mscholz 808K 15. Jan 12:44 VersaTerm.hex
-rw-r--r--. 1 mscholz mscholz 575K 15. Jan 12:44 VersaTerm.uf2Code-Sprache: CSS (css)

Zusammenbau

Der Silkscreen auf den PCBs listet das passende Bauteil auf. Ein Widerstand R30 löst sich über die BOM also zu 1k Ω auf. Ich fange mit den niedrigsten Bauteilen an und gehe dann aufwärts in Richtung der großen. Bis auf 2 recht große Dioden, sind alle Bauteile THT, also auch sehr einfach zu löten. Die Pins von VGA und HDMI liegen recht nah beieinander. Hier empfehle ich die Nutzung von extra Flussmittel. Ansonsten gibt es nicht viel zu sagen. Mit Konzentration einfach alles abarbeiten.

PCB Reparatur

Bei der Arbeit ist mir aber noch ein Defekt an dem PCB aufgefallen. Hier scheint etwas während des Fertigungsprozesses drüber gerutscht zu sein, bevor die Lötmaske aufgetragen wurde. Eine Leiterbahn wurde dabei getrennt, 2 weitere leicht verformt. Ich habe die Bahnen freigelegt, mit einem Widerstandsbeinchen repariert und UV-härtende Lötmaske aufgetragen.

So sieht das komplett bestückte PCB aus:

Funktionstest

Ich war – ehrlich gesagt – selbst ein bisschen überrascht, dass ich beim ersten Einschalten bereits ein Bild auf dem (über einen günstigen HDMI Grabber) angeschlossenen HDMI-Monitor gesehen habe. Und die Tastatur funktionierte ebenfalls.

Die seriellen und VGA Signale sehen auf dem Oszilloskop ebenfalls gut aus, also kann ich mal versuchen, einen Monitor und meinen Klappcomputer mal direkt anzuschließen. Der Strombedarf des Picos liegt hier bei 5.28V und 0.03A, also 0.19W. Gar nicht mal so viel.

Gehäuse

Das Gehäuse liegt im Repository ebenfalls vor, einmal mit imperialen Schraubenabmessungen und als Fork von Digicoolthings mit metrischen Maßen für M3 Schrauben.

Anwendungsfälle und Fazit

Dieses “dumme” VersaTerm Terminal kann nichts mehr, was ein kitty, xterm, screen, tmux, cu oder minicom o. Ä. kann – weniger sogar. Aber es ist klein und stromsparend. Außerdem kann ich autonom an einem Bildschirm mit einer Tastatur verwenden. Oder im Rechenzentrum an einen Monitorwagen anschließen, damit das Notebook frei bleibt. Oder ich baue mir einen Retrocomputer, den ich so betreiben kann. Möglich ist auch die Nutzung am PC als USB-Serial-Adapter mit dediziertem Ausgabemonitor. Natürlich kann man sich auch mit (a)getty eine serielle Konsole auf dem heimischen Linux/Unix Rechner einrichten – besonders einfach mit systemd. Ergo: Braucht man nicht, kann aber praktisch sein und der Bau hat ziemlichen Spaß gemacht.

Also zum Abschluss noch ein bisschen Bildmaterial.

Autor

Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein/e Beruf/ung, die weit über den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fuß und bietet mittlerweile professionelle Lösungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich beschäftigt er sich neben Computerspielen mit der Fotografie.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.