VersaTerm: Ein vielseitiges DIY-Serielles Terminal
Das VersaTerm, entwickelt von David Hansel auf GitHub [1], verbindet Retro-Computing mit moderner Technologie. Es ist ein flexibles und einfach zu bauendes DIY-Serielles Teminal. Dieser Artikel [2] beschreibt die Highlights, Einschränkungen, den Bau und die Nutzung des VersaTerm.
Highlights des VersaTerm
Das VersaTerm ist ideal für Retro-Computing-Enthusiasten, Mikrocontroller-Fans und DIY-Elektronikbegeisterte. Die wichtigsten Merkmale sind:
-
Sofort einsatzbereit: Kein Warten auf ein Betriebssystem, kein kompliziertes Herunterfahren – das Terminal ist sofort ein- und ausschaltbar.
-
Native Videoausgabe: Unterstützt HDMI und VGA ohne Konvertierung.
-
Tastaturunterstützung: Funktioniert mit PS/2- und USB-Tastaturen, einschließlich Tastaturen mit integrierten USB-Hubs.
-
Serielle Schnittstellen: Bietet RS232- und TTL-Signale, umschaltbar zwischen 3,3 V und 5 V.
-
Breites Baudratenspektrum: Von 50 bis 921.600 Baud, mit Voreinstellungen und benutzerdefinierten Optionen.
-
Flusskontrolle: Unterstützt Hardware- (RTS/CTS) und Softwareflusskontrolle (XOn/XOff).
-
Flexible Stromversorgung: Betrieb über USB oder 7–28 V DC möglich.
-
Hohe Konfigurierbarkeit: Eigene Schriftarten (Bitmaps) können hochgeladen werden.
-
VT100-Unterstützung: Alle VT100-Attribute wie Fett, Unterstrichen, Blinken, Inverse, doppelte Breite und Höhe werden unterstützt.
-
16 ANSI-Farben: Für farbige Darstellungen.
-
PETSCII-Modus: Unterstützt den PETSCII-Zeichensatz und Steuerzeichen, inklusive einer C64-Schriftart.
-
DIY-freundlich: Die meisten Lötarbeiten sind durchsteckmontiert, die Firmware wird einfach über USB hochgeladen.
Einschränkungen
Das VersaTerm basiert auf einem Raspberry Pi Pico, einem Mikrocontroller ohne integrierte Grafikfähigkeiten. Dennoch erzeugt er Videosignale (siehe PicoDVI und PicoVGA). Die begrenzte Rechenleistung führt zu folgenden Einschränkungen:
-
Maximale Spaltenanzahl: Nur 80 Spalten pro Zeile, keine Unterstützung für 132 Spalten.
-
Schriftbreite: Zeichen müssen 8 Pixel breit sein (im Original VT100 waren es 10 Pixel); die Höhe kann zwischen 8 und 16 Pixel liegen.
-
Farbunterstützung: Nur 16 ANSI-Farben, keine 8-Bit- oder 24-Bit-Farben.
-
Kein flüssiges Scrollen: Scrollen wird durch verzögertes Scrollen emuliert.
Den VersaTerm bauen
Das VersaTerm ist kein Bausatz, aber der Aufbau ist dank bereitgestellter Ressourcen unkompliziert.
-
Platinenherstellung: Die Gerber-Datei für die Leiterplatte ist auf GitHub verfügbar: VersaTermGerber.zip [3].
-
Bauteilbeschaffung: Tipps zur Beschaffung und Montage der Komponenten sind dokumentiert: Component Ordering [4]. Hier in Deutschland bietet es sich an die Komponenten bei Reichelt und Mouser zu beschaffen. Eine entsprechende Bauteile-Liste findet sich weiter unten.
-
MAX3232-Breakout-Board: Eine Alternative für das sehr teure Transceiver Breakout Board mit dem MAX3232 von SparkFun ist es die Platine bei JLCPCB selbst fertigen zu lassen. Die Gerber-Datei und auch BOM und CPL Dateien sind verfügbar: MAX3232_Breakout_GERBER.zip [5], MAX3232_Breakout_BOM_CPL.zip [6].
-
Gehäuse: STL-Dateien für den 3D-Druck eines Gehäuses stehen bereit: Enclosure [7]. Zusätzlich werden 4 x M3x22 mm Schrauben und 4 x M3 Muttern benötigt.
-
Firmware: Die Firmware wird über ein USB-Micro-Kabel hochgeladen, ohne spezielle Hardware: Software [8].
Die Platine lässt sich mit einem einfachen Lötkolben zusammenbauen. Die durchsteckmontierten Bauteile machen den Prozess auch für Hobbyisten mit mäßiger Löt-Erfahrung zugänglich. Der 3D-Druck des Gehäuses verleiht dem Projekt ein professionelles Aussehen.
Bauteile-Liste
Bezeichnung | Komponente | Menge | Lieferant | Lieferanten-Teil |
---|---|---|---|---|
R21, R24 | Resistor 100 Ohm | 2 | Reichelt | 1/4W 100 |
R1, R2, R3, R4, R5, R6, R7, R8 | Resistor 270 Ohm | 8 | Reichelt | 1/4W 270 |
R14 | Resistor 390 Ohm | 1 | Reichelt | 1/4W 390 |
R17, R20, R25, R26 | Resistor 470 Ohm | 4 | Reichelt | 1/4W 470 |
R13, R16, R19, R27, R28 | Resistor 1k | 5 | Reichelt | 1/4W 1.0K |
R15, R18 | Resistor 2.2k | 2 | Reichelt | 1/4W 2.2K |
R22 | Resistor 4.7k | 1 | Reichelt | 1/4W 4.7K |
R9, R10, R11, R12, R23, R29, R30 | Resistor 10k | 7 | Reichelt | 1/4W 10K |
D1, D2 | Diode SMT Schottky | 2 | Reichelt | LL 5817 SMD (1N 5817) |
D3, D4, D5, D6 | Diode Axial 1N4148 | 5 | Reichelt | 1N 4148 |
Q1, Q2, Q3, Q4, Q5, Q6, Q7 | MOSFET2N7000 | 7 | Reichelt | 2N 7000 |
C1, C2 | Capacitor 10uF | 2 | Reichelt | AK 100U 16 |
3.3V/5V Switch | Switch | 1 | Mouser | 612-EG1213 |
RESET, DEFAULTS | Button | 2 | Reichelt | TASTER 3305B |
REG1 | Recom 5V Regulator | 1 | Reichelt | LME78_05-1.0 |
SG1 | Buzzer | 1 | Reichelt | AT-1224-TWT-5V-2 |
Power | Barrel Connector | 1 | Mouser | 490-PJ-002A |
Power | USB-B Mini Connector | 1 | Reichelt | USB BWM |
VGA | DB15 Connector | 1 | Reichelt | HD 15FW |
PS/2 | PS/2 Connector | 1 | Reichelt | EB-DIOS M06V |
HDMI | HDMI Connector | 1 | LCSC | C369072 |
USB | USB-A Connector | 1 | Reichelt | USB AW |
RS232 | DB9 Connector | 1 | Reichelt | D-SUB ST 09US |
TTL Serial | Molex Connector Male | 1 | Mouser | 571-6404576 |
U1 | Raspberry Pi Pico | 1 | Reichelt | RASP PI PICO H |
U3 | MAX3232 board | 1 | JLCPCB | – |
Header | Header Male 10 Pin | 1 | Reichelt | ECON SL10G1 |
Header | Header Female 10 Pin | 1 | Reichelt | BKL 10120950 |
Header | Header Male 2 Pin | 1 | Reichelt | ECON SL2G1 |
Header | Header Female 2 Pin | 1 | Reichelt | W+P 153PF-002-1 |
Header | Header Female 40 Pin | 1 | Mouser | 485-5583 |
Molex | Molex Housing Female | 1 | Mouser | 1375820-6 |
Molex | Molex Crimp Pins | 6 | Mouser | 1375819-1 |
Platine | – | 1 | JLCPCB | – |
Den VersaTerm nutzen
Einstellungsmenü und Konfigurationen
Das Einstellungsmenü wird durch Drücken der F12-Taste geöffnet und mit den Pfeiltasten navigiert. Das Untermenü „Konfigurationen verwalten“ bietet 10 Speicherplätze für verschiedene Einstellungen – ideal für die Nutzung mit mehreren Computern.
-
Speichern: Die Taste „S“ speichert die aktuellen Einstellungen in einem Slot.
-
Standard setzen: Die Taste „*“ definiert einen Slot als Standard beim Start.
-
Benennen: Die Taste „N“ vergibt einen Namen für einen Slot.
Konfigurationen können wie folgt gewechselt werden:
-
Beim Start oder Reset die Tasten F1–F10 halten, um einen Slot auszuwählen.
-
Während des Betriebs STRG + F1–F10 drücken, um eine Konfiguration zu laden.
-
STRG + F12 öffnet ein Schnellwahlmenü mit den Namen der Konfigurationen.
Videoausgabe (HDMI/VGA)
Das VersaTerm unterstützt entweder HDMI- oder VGA-Ausgabe, jedoch nicht gleichzeitig. Beim Start wird automatisch erkannt, ob ein HDMI-Monitor angeschlossen ist (über das „Hot Plug Detect“-Signal). Ist kein HDMI-Monitor vorhanden, schaltet das Terminal auf VGA um. Diese Automatik kann im „Bildschirm“-Einstellungsmenü deaktiviert werden, um den Ausgabetyp festzulegen. Falls ein HDMI-Monitor nicht erkannt wird, kann die HDMI-Ausgabe erzwungen werden:
-
Eine Tastatur anschließen.
-
Die RESET- und DEFAULTS-Tasten an der Seite der Platine gedrückt halten.
-
Die STRG-Taste auf der Tastatur gedrückt halten.
-
Die RESET-Taste loslassen.
Dadurch werden die Standardeinstellungen geladen, die automatische Erkennung deaktiviert und die HDMI-Ausgabe erzwungen. Sobald ein Bild auf dem Monitor erscheint, können die Einstellungen angepasst, der Ausgabetyp auf HDMI festgelegt und gespeichert werden, sodass HDMI automatisch verwendet wird.
USB-Modus
Der Raspberry Pi Pico verfügt über einen USB-Anschluss, der entweder als Host oder Gerät fungiert. Wird der Pico über das USB-Micro-Kabel mit einem Computer verbunden, erkennt das VersaTerm dies beim Start und betreibt den USB-Anschluss als Gerät. Andernfalls wird der Anschluss als Host betrieben, um eine USB-Tastatur anzuschließen.
Wichtig: Der Pico darf nicht gleichzeitig an einen Computer und eine USB-Tastatur angeschlossen werden. Dies führt zu keinem Schaden, aber der USB-Anschluss funktioniert dann nicht korrekt.
Wird der USB-Anschluss als Gerät verwendet, erkennt der Computer das VersaTerm als USB-CDC-Gerät (seriell). Drei Betriebsmodi können im USB-Einstellungsmenü ausgewählt werden:
-
Serial: Der USB-Anschluss wird als sekundäre serielle Verbindung behandelt. Eingehende Daten werden wie bei der Hauptschnittstelle verarbeitet, Tastatureingaben werden an beide Schnittstellen gesendet.
-
Feed-through (Standard): Daten von der Hauptschnittstelle werden an den USB-Anschluss weitergeleitet und umgekehrt. So kann das VersaTerm als USB-zu-Seriell-Wandler genutzt werden.
-
Feed-through (Terminal deaktiviert): Ähnlich wie der Feed-through-Modus, aber eingehende Daten von der Hauptschnittstelle werden nicht auf dem Terminal angezeigt. Dies ist ideal für die Übertragung binärer Daten ohne Beeinträchtigung der Anzeige.
Zurücksetzen des Terminals
Das Terminal wird durch Drücken der RESET-Taste an der Seite der Platine zurückgesetzt. Bei ungültigen Einstellungen (z. B. HDMI-Ausgabe erzwungen, aber nur ein VGA-Monitor vorhanden) kann die DEFAULTS-Taste (neben RESET) gedrückt gehalten werden, während die RESET-Taste gedrückt und losgelassen wird. Dadurch startet das VersaTerm mit den Standardeinstellungen neu.
Fazit
Das VersaTerm ist ein spannendes Projekt, das Retro-Charme mit moderner Flexibilität verbindet. Die einfache Handhabung, umfangreichen Konfigurationsmöglichkeiten und DIY-Freundlichkeit machen es zur idealen Wahl für Hobbyisten und Retro-Computing-Fans. Der Aufbau lohnt sich für alle, die Freude an Elektronikprojekten haben.
Weitere Informationen und Ressourcen sind im GitHub-Repository verfügbar: https://github.com/dhansel/VersaTerm.
Über den Autor
Manfred (ManiB) ist ein Retro-Computing-Enthusiast und seit April 2025 aktiv im Vereinsforum des VzEkC e.V. Er liebt Einplatinencomputer mit BASIC-Interpretern und hat weitere Projekte wie den PicoMite HDMI/USB realisiert.
02.04.2025: ZX81 Emulator (picozx81) im 3D gedrucktem Gehäuse und Folientastatur
14.04.2025: PicoMiteHDMIUSB motherboard reference design
29.04.2025: PicoMite VGA/PS2 Reference Design
20.05.2025: Colour Maximite 2 Generation 2 Version 2 Reference Design
25.07.2025: VersaTerm – Ein DIY-Serielles Terminal (RP2040) – Reference Design
Bildverzeichnis
- Einleitung, Bild 1: VersaTerm v1.2 Features
- Absatz „Den VersaTerm bauen“, Bild 2: VersaTerm v1.2 bauen
- Absatz „Den VersaTerm nutzen“, Bild 3: VersaTerm v1.2 im Einsatz
Links
- VersaTerm GitHub-Repository
https://github.com/dhansel/VersaTerm - Zugehöriger Thread im VzEkC e. V. Forum
https://forum.classic-computing.de/forum/index.php?thread/36585-versaterm-ein-diy-serielles-terminal-rp2040-reference-design/ - VersaTermGerber.zip
https://github.com/dhansel/VersaTerm/raw/main/hardware/PCB/VersaTermGerber.zip - Component Ordering
https://github.com/dhansel/VersaTerm/blob/main/hardware/PCB/ReadMe.md - MAX3232-Breakout-Board, Gerber-Datei: MAX3232_Breakout_GERBER.zip
https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/MAX3232_Breakout_GERBER.zip - MAX3232-Breakout-Board, BOM und CPL Datei: MAX3232_Breakout_BOM_CPL.zip
https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/MAX3232_Breakout_BOM_CPL.zip - Enclosure
https://github.com/dhansel/VersaTerm/tree/main/hardware/enclosure/DigicoolThings - Software
https://github.com/dhansel/VersaTerm/blob/main/software/ReadMe.md