Startseite

Willkommen auf mikrocontroller.bplaced.net, der Website  welche ursprünglich von meinem Bruder Uwe betrieben wurde.

Diese Seiten hier sollen Einsteigern in der Welt der Mikroprozessoren das Leben erleichtern und den Umgang mit der Programmiersprache “C” näherbringen.

Die Librarys vereinfachen das benutzen der Komponenten einer CPU und man hat so mehr Zeit sein eigentliches Projekt zu realisieren.

Leider hat er sich dazu entschieden, seinen Blog nicht weiter zu aktualisieren, was dazu führte, dass zunächst die Website nicht mehr erreichbar war, und danach der Webspace gelöscht wurde;(

Zu meinem bedauern, und wohl auch zum Bedauern seiner Fan-Gemeinde ist damit eine tolle Dokumentation zum Thema Mikrocontroller STM32 verloren gegangen.

Deshalb habe ich mich dazu entschlossen, sein Werk hier wieder online zu stellen.

Eine Historie der neuesten Aktivitäten findet ihr hier , und die aktuelle Sitemap gibt es hier.


LG, Manfred

PS: Bitte unterstützt mich dabei: Redakteure und Autoren gesucht, und wenn noch etwas hier fehlen sollte, dann tragt es in meiner ToDo Liste ein. Danke!


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (9 Bewertungen, Durchschnitt: 5,00 von 5)
Loading...
Neueste Beiträge:

VersaTerm – Ein DIY-Serielles Terminal (RP2040) – Reference Design

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.

VersaTerm v1.2 Features

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

VersaTerm v1.2 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

VersaTerm v1.2 im Einsatz

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

  1. Einleitung, Bild 1: VersaTerm v1.2 Features
  2. Absatz „Den VersaTerm bauen“, Bild 2: VersaTerm v1.2 bauen
  3. Absatz „Den VersaTerm nutzen“, Bild 3: VersaTerm v1.2 im Einsatz

Links

  1. VersaTerm GitHub-Repository
    https://github.com/dhansel/VersaTerm
  2. 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/
  3. VersaTermGerber.zip
    https://github.com/dhansel/VersaTerm/raw/main/hardware/PCB/VersaTermGerber.zip
  4. Component Ordering
    https://github.com/dhansel/VersaTerm/blob/main/hardware/PCB/ReadMe.md
  5. MAX3232-Breakout-Board, Gerber-Datei: MAX3232_Breakout_GERBER.zip
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/MAX3232_Breakout_GERBER.zip
  6. 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
  7. Enclosure
    https://github.com/dhansel/VersaTerm/tree/main/hardware/enclosure/DigicoolThings
  8. Software
    https://github.com/dhansel/VersaTerm/blob/main/software/ReadMe.md

Bilder-Galerie

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...
Mittwoch, September 24th, 2025 Einplatinen-Computer Keine Kommentare

Colour Maximite 2 Generation 2 Version 2 Reference Design

Der Colour Maximite 2 Generation 2 Version 2 (CMM2 G2 V2) ist ein kompakter Einplatinencomputer, der die Nostalgie der Heimcomputer der 1980er Jahre wie Commodore 64, Sinclair ZX Spectrum oder Apple II mit moderner Leistung und einfacher BASIC-Programmierung verbindet.

CMM2 G2 V2

Entwickelt von Geoff Graham [1] und Peter Mather [2], bootet er in unter einer Sekunde direkt in den integrierten MMBasic-Interpreter, der mit bis zu 270.000 Zeilen pro Sekunde beeindruckend schnell ist. Damit können Animationen und Spiele direkt in BASIC programmiert werden, ohne dass Assembler oder C notwendig sind. Für Einsteiger ist der CMM2 G2 V2 ideal, da MMBasic leicht erlernbar ist, während erfahrene Bastler die Hardware-Erweiterbarkeit schätzen. Ein guter Einstieg ist das YouTube-Video „Color Maximite 2 – ARM CPU that runs BASIC!“ [3] oder die offizielle Projektseite [4].

Der CMM2 G2 V2 ist vollständig kompatibel mit der ersten Generation, bietet aber erweiterte Funktionen wie einen stabilen 8-MHz-Oszillator für ruckelfreies VGA, Auflösungen bis 1920×1080 und 24-Bit-Farbtiefe. Er eignet sich perfekt für Retro-Gaming, Hardware-Steuerungen oder als Einstieg in die embedded BASIC-Programmierung.

Key-Features

  • Prozessor: STMicroelectronics STM32H743IIT6 (ARM Cortex-M7, 480 MHz Taktfrequenz, 2 MB Flash, 1 MB SRAM, 176-Pin LQFP)

  • BASIC-Interpreter: Vorinstalliertes MMBasic (neueste Version), extrem schnell mit bis zu 270.000 Zeilen pro Sekunde

  • Grafikfähigkeit: VGA-Auflösungen bis 1920×1080 Pixel mit 24-Bit-Farbtiefe

  • Speicher: Unterstützt SD-Karten bis 32 GB; 32 MB externer RAM für MMBasic-Programme

  • Eingabegeräte: Integrierte Unterstützung für USB-Tastatur und USB-PS/2-Maus

  • Echtzeituhr: RTC mit Batteriebackup für präzise Zeitmessung

  • Konnektivität: Unterstützung für ESP-01 WiFi-Modul für drahtlose Netzwerkanbindung

  • Controller-Ports: Zwei Wii-Controller-Anschlüsse am Frontpanel

  • Erweiterbarkeit: 40-polige Steckerleiste mit I/O-Pins, kompatibel mit Raspberry Pi

  • Betriebssystem: Kein zusätzliches OS erforderlich, direkter Start in MMBasic

Vergleich und Preis

Mit seinem ARM Cortex-M7-Prozessor und 480 MHz Taktfrequenz übertrifft der CMM2 G2 V2 historische Heimcomputer bei Weitem. Im Vergleich zu einem Raspberry Pi Zero (ca. 15 €) ist er mit etwa 40 € pro Board teurer, bietet jedoch spezialisierte Features wie den integrierten MMBasic-Interpreter und 24-Bit-Grafik, die ihn für Retro-Projekte einzigartig machen. Für LOAD-Leser, die keine Kompromisse bei Leistung und Retro-Charme eingehen wollen, ist der CMM2 G2 V2 die ideale Wahl.

Den leistungsfähigsten MMBasic-Einplatinencomputer bauen

Das Reference Design

Die Komponenten des CMM2 G2 V2

Dieses Projekt [5] zeigt, wie Sie den leistungsfähigsten Einplatinencomputer mit MMBasic-Interpreter aufbauen. Das Reference Design des CMM2 G2 V2 ist die teuerste, aber auch leistungsstärkste Variante eines solchen Systems – ideal als Abschlussprojekt nach einfacheren Builds wie dem PicoMite HDMI/USB oder VGA/PS2. Es basiert auf einer vierlagigen Leiterplatte (PCB) mit überwiegend SMD-Komponenten auf der Oberseite, was den Bau maschinell optimiert, aber für ambitionierte Bastler machbar macht. Die Designdateien (Schaltplan, Stückliste, Bestückungsdateien) sind open-source und im TheBackShed-Forum im Thread „CMM2 G2 V2 design files“ [6] verfügbar. Laden Sie die Gerber-Datei (Gerber_PCB1_2024-07-10.zip [7]) sowie die Stücklisten- und Bestückungsdatei (BOM-PLC-SCH.zip [8]) herunter, wobei letztere entpackt werden muss, um die enthaltenen Excel-Dateien zu erhalten.

Platinenherstellung bei JLCPCB

  1. Melden Sie sich auf der Website von JLCPCB [9] an und starten Sie eine Bestellung.

  2. Ziehen Sie die Gerber-Datei per Drag-and-Drop auf den Button „Add gerber file“.

  3. Passen Sie die PCB-Spezifikationen an:

    • Anzahl der Platinen: 5 (Mindestbestellmenge)

    • Oberflächenbeschaffenheit: LeadFree HASL (bleifrei, in Deutschland vorgeschrieben)

    • PCB-Farbe: Grün (Standard, spart Kosten)

      JLCPCB: PCB-Spezifikationen

  4. Aktivieren Sie unter „PCB Assembly“ die Bestückung der Oberseite, ohne Änderungen vorzunehmen, und klicken Sie auf „NEXT“.

  5. Laden Sie die Stückliste (BOM) und die Bestückungsdatei (CPL) hoch. Starten Sie die Verarbeitung mit „Process BOM & CPL“.

  6. Prüfen Sie, ob alle Bauteile verfügbar sind, und bestätigen Sie mit „Continue to place order“.

  7. Überprüfen Sie die 2D-/3D-Ansicht der Platine und fahren Sie mit „NEXT“ fort.

  8. Auf der „Quote & Order“-Seite betragen die Kosten ca. 30,35 € für die Platinen und ca. 116,67 € für Bauteile und Bestückung. Wählen Sie „Research/Entertainment/Education“ > „Development Board – HS Code 847330“ und klicken Sie auf „SAVE TO CART“.

  9. Wählen Sie im Einkaufswagen FedEx Express als Versanddienstleister, um Zollprobleme zu vermeiden. Der Gesamtpreis für fünf Platinen beträgt ca. 165 €, zuzüglich ca. 35 € für Steuer und Zoll (über FedEx), also etwa 40 € pro Board.

    JLCPCB: PCBA Einstellungen

  10. Schließen Sie die Bestellung ab, und Ihre Platinen gehen in Produktion!

Gehäuseoptionen

CMM2 G2 V2 mit PCB-Panels im Gehäuse G738A

Um Ihr Motherboard stilvoll zu schützen, stehen folgende Möglichkeiten zur Verfügung:

  • 3D-gedrucktes Gehäuse: Mit einem 3D-Drucker können Sie ein individuelles Gehäuse kostengünstig herstellen. Die STL-Dateien finden Sie im TheBackShed-Forum (CMM2G2V2_STL_Case.zip [10], CMM2G2V2_STL_Panels.zip [11]). Alternativ bietet JLCPCB 3D-Druck-Dienste an.

  • Fertiggehäuse: Das robuste Plastikgehäuse G738A von Multicomp ist bei Farnell [12] oder GAINTA [13] erhältlich. Sie benötigen zusätzlich vier M3 x 5 mm + 4 mm Messing-Abstandshalter, vier Kunststoff-Unterlegscheiben und vier M3 x 6 mm Schrauben.

  • Personalisierte Panels: Für Front- und Back-Panels können Sie bei JLCPCB beschriftete Platinen in verschiedenen Farben (z. B. Grün, Violett, Weiß) oder Aluminium-Panels mit weißer Lackierung und schwarzer Beschriftung bestellen (FRONT_CMM2G2V2ends_250526.zip [14], BACK_CMM2G2V2ends_250526.zip [15]).

Firmware-Installation

CMM2 G2 V2: Ansichten der Panels und des Motherboards

Für die Installation der MMBasic-Firmware auf den STM32H7-Mikrocontroller benötigen Sie den STM32 CubeProgrammer [16] und die Firmware-Datei (empfohlen: Beta-Version 6.00.00B2 [18], da sie neue Funktionen bietet; alternativ Release Version 5.07.01 [17]).

Schritte zur Installation:

  1. Schalten Sie den CMM2 G2 V2 aus.

  2. Setzen Sie den Mini-Jumper auf der Frontseite auf die Bootloader-Position (rechte Position, siehe Handbuch [19]).

  3. Verbinden Sie das Board per USB-C-Kabel mit Ihrem PC.

  4. Schalten Sie den CMM2 G2 V2 ein.

  5. Öffnen Sie den Windows-Gerätemanager und notieren Sie die COM-Port-Nummer des USB-SERIAL CH340-Anschlusses (z. B. COM2).

  6. Starten Sie den STM32 CubeProgrammer und wählen Sie „UART“ als Verbindungstyp mit den passenden Einstellungen. Klicken Sie auf „Connect“.

  7. Wählen Sie die Datei „CMM2V1.5.bin“ aus.

  8. Im Tab „Erase flash memory“ wählen Sie die Option „Select“, um das gesamte Flash-Speicher zu löschen.

  9. Klicken Sie auf „Start Programming“ und warten Sie ca. 3 Minuten, bis die Firmware installiert und verifiziert ist.

  10. Schließen Sie die Erfolgsmeldungen („Download verified successfully“, „File download complete“) und den STM32 CubeProgrammer.

  11. Schalten Sie das Board aus, setzen Sie den Jumper zurück auf die Standardposition (linke Position) und verbinden Sie es mit einem USB-C-Kabel oder einem 5V-Netzteil.

  12. Schalten Sie das Board ein. MMBasic Version 6.00.00B2 sollte starten, und die Tastatur sollte einwandfrei funktionieren.

Zusammenbau und Inbetriebnahme

CMM2 G2 V2: Detailansicht der Montage im Gehäuse G738A

Zusammenbau:

  1. Falls Sie das Plastikgehäuse G738A verwenden, schrauben Sie die vier Messing-Abstandshalter (M3 x 5 mm + 4 mm) in die Aufnahmen der Gehäuseunterseite.

  2. Befestigen Sie das Motherboard zusammen mit den Front- und Back-Panels in der Unterseite.

  3. Setzen Sie eine CR2032 3V-Knopfzelle für die RTC ein.

  4. Setzen Sie den Deckel auf und verschrauben Sie ihn.

Inbetriebnahme:

  1. Schließen Sie einen VGA-Monitor und eine USB-Tastatur (an die obere USB-Buchse) an.

  2. Verbinden Sie das Board per USB-C-Kabel („Power“-Buchse auf der Rückseite) mit einem Computer oder 5V-Netzteil und drücken Sie den Ein-Schalter.

  3. Stellen Sie Datum und Uhrzeit ein, indem Sie über die Tastatur folgenden Befehl eingeben:

    OPTION DS3231 ON

Abschluss und Ausblick

Der CMM2 G2 V2 ist ein vielseitiger Einplatinencomputer, der Retro-Enthusiasten und Bastlern gleichermaßen Spaß macht. Die Kombination aus nostalgischem BASIC-Programming und moderner Hardware macht ihn einzigartig. Dank der aktiven Community im TheBackShed-Forum und regelmäßiger Firmware-Updates bleibt das System zukunftssicher. Ob für Retro-Gaming, Hardware-Experimente oder das Erlernen von BASIC-Programmierung – der CMM2 G2 V2 ist ein Muss für LOAD-Leser, die Technik und Nostalgie verbinden wollen. Zukünftige Entwicklungen wie neue MMBasic-Features oder erweiterte Grafikoptionen könnten das System noch spannender machen.

Handbücher

  • Colour Maximite 2 User Manual [19]

  • Introduction to Programming with the Colour Maximite 2 [20]

  • GRAPHICS Programming on the Colour MaxiMite 2 [21]

  • A „Welcome Tape“ for the Colour Maximite 2 [22]

Ü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

  1. Einleitung, Bild 1: CMM2 G2 V2
  2. Absatz „Das Reference Design“, Bild 2: Die Komponenten des CMM2 G2 V2
  3. Absatz „Platinenherstellung bei JLCPCB“, Bild 3: JLCPCB: PCB-Spezifikationen
  4. Absatz „Platinenherstellung bei JLCPCB“, Bild 4: JLCPCB: PCBA Einstellungen
  5. Absatz „Gehäuseoptionen“, Bild 5: CMM2 G2 V2 mit PCB-Panels im Gehäuse G738A
  6. Absatz „Firmware-Installation“, Bild 6: CMM2 G2 V2: Ansichten der Panels und des Motherboards
  7. Absatz „Zusammenbau und Inbetriebnahme“, Bild 7: CMM2 G2 V2: Detailansicht der Montage im Gehäuse G738A

Links

  1. Geoff Graham
    https://geoffg.net/maximite.html
  2. Peter Mather
    https://www.youtube.com/@petermather3049
  3. YouTube Video: Color Maximite 2 – ARM CPU that runs BASIC!
    https://www.youtube.com/watch?v=IA7REQxohV4&t=1s
  4. Colour MaxiMite Homepage
    https://geoffg.net/maximite.html
  5. Zugehöriger Thread im VzEkC e. V. Forum
    https://forum.classic-computing.de/forum/index.php?thread/35909-colour-maximite-2-generation-2-version-2-reference-design/
  6. Peter Mather’s CMM2 G2 V2 design files
    https://www.thebackshed.com/forum/ViewTopic.php?TID=16855&P=2#223545
  7. Gerber-Datei zur PCB v2.1
    https://www.thebackshed.com/forum/uploads/matherp/2024-07-10_173724_Gerber_PCB1_2024-07-10.zip
  8. BOM- und P&P-Datei zur PCB v2.1
    https://www.thebackshed.com/forum/uploads/matherp/2024-07-10_173738_BOM-PLC-SCH.zip
  9. JLCPCB
    https://jlcpcb.com/
  10. CMM2G2V2_STL_Case.zip
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/CMM2G2V2_STL_Case.zip
  11. CMM2G2V2_STL_Panels.zip
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/CMM2G2V2_STL_Panels.zip
  12. Farnell: Gehause G738A für CMM2G2V2
    https://de.farnell.com/multicomp-pro/g738a/geh-use-abs-alu-frontpl-140x110x35mm/dp/1526699
  13. GAINTA: Gehäuse für G738A für CMM2G2V2
    https://www.gainta.com/de/g738a.html
  14. Gerber-Dateien für das Front-Panel
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/FRONT_CMM2G2V2ends_250526.zip
  15. Gerber-Dateien für das Back-Panel
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/BACK_CMM2G2V2ends_250526.zip
  16. STM32CubeProgrammer software for all STM32
    https://www.st.com/en/development-tools/stm32cubeprog.html
  17. MMBasic latest release version v5.07.01, Colour_Maximite_2_MMBasic.zip
    https://geoffg.net/Downloads/Maximite/Colour_Maximite_2_MMBasic.zip
  18. MMBasic latest beta version v6.00.00B2, 2025-07-01_020109_CMM2V1.5.zip
    https://www.thebackshed.com/forum/uploads/matherp/2025-07-01_020109_CMM2V1.5.zip
  19. Colour Maximite 2 User Manual
    https://geoffg.net/Downloads/Maximite/Colour_Maximite_2_User_Manual.pdf
  20. Introduction to Programming with the Colour Maximite 2
    https://geoffg.net/Downloads/Maximite/Programming_with_the_Colour_Maximite_2.pdf
  21. GRAPHICS Programming on the Colour MaxiMite 2
    https://www.thebackshed.com/forum/uploads/panky/2020-12-17_094759_Graphics%20Programming%20on%20the%20CMM2-v3d.pdf
  22. A „Welcome Tape“ for the Colour Maximite 2
    https://github.com/thwill1000/cmm2-welcome

Bilder-Galerie

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...
Samstag, September 20th, 2025 Allgemein Keine Kommentare

PicoMite VGA/PS2 Reference Design (DIY-Projekt)

Träumen Sie von einem eigenen Boot-to-BASIC-Computer, der günstig, einfach zu bauen und vielseitig ist? Das PicoMite VGA/PS2 Reference Design von Geoff Graham [1] macht diesen Traum wahr!

Fertig aufgebauter PicoMite VGA/PS2

Überblick

Das PicoMite VGA/PS2 Reference Design basiert auf dem Raspberry Pi Pico oder Pico 2 und bietet alles, was Bastler benötigen: einen VGA-Ausgang für Bildschirme, einen PS/2-Tastaturanschluss, einen SD-Kartensteckplatz, einen 40-poligen Stecker für alle Pins des Pico und einen praktischen Reset-Taster. Mit leicht verfügbaren Durchsteckkomponenten ist die Platine in unter einer Stunde zusammengesetzt – ideal für Hobby-Elektroniker, die einen kompakten Ersatz für ihren Arduino UNO suchen, der mit Retro-Charme und moderner Flexibilität überzeugt. Dieses Projekt [2] beschreibt alle Schritte, um Ihren eigenen BASIC-Computer zu bauen.

Platinenherstellung

Bereit, Ihre eigene PicoMite-Platine zu bauen? Die Gerber-Dateien enthalten alle notwendigen Daten für die Platinenproduktion (Kupferlagen, Lötmaske, Bohrdaten). Laden Sie zunächst die Datei „PicoMiteVGA_Construction_Pack.zip“ [3] von Geoff Grahams Projektseite im Abschnitt „Other Downloads“ herunter, entpacken Sie sie und komprimieren Sie die Dateien im Verzeichnis „Design #1\PCB Gerbers“ in ein neues Zipfile. Alternativ steht die fertige Gerber-Datei „PicoMiteVGAPS2-PCB-Gerbers.zip“ [4] direkt zum Download bereit.

Bestellen Sie die Platine bei JLCPCB [5], einem günstigen und zuverlässigen Platinenhersteller:

  1. Melden Sie sich auf der Website von JLCPCB [5] an und starten Sie eine Bestellung.

  2. Ziehen Sie die Gerber-Datei per Drag-and-Drop auf den Button „Add Gerber File“.

  3. Passen Sie die PCB-Spezifikationen an:

    • Anzahl der Platinen: 5 (Mindestbestellmenge)

    • Oberflächenbeschaffenheit: LeadFree HASL (bleifrei, in Deutschland vorgeschrieben)

    • PCB-Farbe: Grün (Standard, spart Kosten; Violett, Blau oder Schwarz kosten extra)

  4. Klicken Sie auf „SAVE TO CART“, öffnen Sie den Warenkorb und wählen Sie „EuroPacket“ als Versandmethode (günstig und zuverlässig).

  5. Schließen Sie die Bestellung ab. Die Kosten für fünf Platinen betragen ca. 11,84 € (zzgl. Versand).

JLCPCB PCB-Spezifikationen

JLCPCB Abschluss der Bestellung

Bauteileliste

Die Bauteileliste finden Sie in der PDF-Datei „Design 1 Construction Notes.pdf“ im Zipfile „PicoMiteVGA_Construction_Pack.zip“ [3]. Alle Bauteile sind z. B. bei Mouser.de [6] erhältlich. Hier die Bestellliste für fünf Sets:

Nr. Mouser-Nr. Beschreibung Stückzahl Preis (EUR) Gesamtpreis: (EUR)
1 798-DM1AA-SF-PEJ72 Speicherkartenverbinder  SD MEM CD CONN R/A SMT PUSHPUSH 5 3,53 € 17,65 €
2 490-MD-60SM Rundsteckverbinder DIN Mini Din Connectors 5 1,51 € 7,55 €
3 523-7HDE15SD1CH4FVGA D-Sub-Steckverbinder mit hoher Dichte D SUB R/A 5 1,59 € 7,95 €
4 179-TS026643BK100SCR Sensorschalter 6 x 6 mm, 4.3 mm Act Height, 100 gf, Black, Short Crimped, Through Hole, SPST, 5 0,086 € 0,43 €
5 81-PV36X201C01B00 Abgleichwiderstände – Durchgangsbohrung 200 ohms 10mm Square 25turns 5 1,63 € 8,15 €
6 512-1N4148 Kleinsignal-Schaltdioden 100V Io/200mA BULK 10 0,034 € 0,34 €
7 512-2N7000 MOSFETs N-Channel Enhancement Mode Field Effect Transistor 60V, 200mA, 5 ohm 10 0,292 € 2,92 €
8 80-C320C104K5R Keramik-Vielschichtkondensator MLCC – bedrahtet 50V 0.1uF X7R 10% LS=2.54mm 5 0,208 € 1,04 €
9 603-CFR-25JR-52220R Kohleschichtwiderstände – Durchgangsloch 220 ohm 1/4W 5% 35 0,022 € 0,77 €
10 603-CFR25SJT-52A10K Kohleschichtwiderstände – Durchgangsloch 10 kOhms 250 mW (1/4 W) 200 V 5 % – 55 C / + 155 C – 55 C / + 155 C AEC-Q200 20 0,052 € 1,04 €
11 649-77313-824-40LF Sockel & Kabelgehäuse 40P STR DR TMT HDR .38 AU .48IN LENGTH 5 2,09 € 10,45 €
12 485-5583 Raspberry Pi Zubehör Socket Headers for Raspberry Pi Pico – 2 x 20 pin Female Headers 5 0,82 € 4,10 €
13 358-SC1632 Raspberry Pi Hats / Add-on-Boards Raspberry Pi Pico 2 with Header 5 5,16 € 25,80 €

Gesamtpreis für Bauteile: 88,19 € (Versandkosten fallen nicht an)

Gehäuse für Ihren PicoMite VGA/PS2

Fünf Gehäuse frisch aus dem 3D-Drucker

Um Ihr fertiges Board zu schützen und professionell aussehen zu lassen, empfiehlt sich ein passendes Gehäuse. Die Platine passt in ein kompaktes Altronics-Steckgehäuse (130 x 75 x 28 mm, Teilenummer H0376 bei Altronics [7]). In Deutschland ist dieses Gehäuse schwer erhältlich, und die Öffnungen für VGA, PS/2 und SD-Karte müssen manuell angepasst werden – machbar, aber aufwendig.

Alternativ können Sie ein maßgeschneidertes Gehäuse mit einem 3D-Drucker herstellen. Die STL-Dateien für Basis, Deckel und Optionen mit GPIO-Zugang finden Sie hier [8]. Drucken Sie diese in PLA mit einer Schichthöhe von 0,2 mm. Falls kein 3D-Drucker vorhanden ist, bietet JLCPCB 3D-Druck-Dienste an.

Installation des MMBasic-Interpreters

Mit dem MMBasic-Interpreter verwandeln Sie Ihren Raspberry Pi Pico 2 in einen voll funktionsfähigen Retro-Computer. Laden Sie die Firmware-Datei „PicoMiteRP2350VGAV6.01.00b12.uf2“ (Version 6.01.00b12) aus dem TheBackShed-Forum [9] herunter und folgen Sie diesen Schritten:

  1. Halten Sie den BOOT-Taster auf Ihrem Raspberry Pi Pico 2 gedrückt und verbinden Sie ihn per Micro-USB-Kabel mit Ihrem Computer.

  2. Lassen Sie die Taste los, sobald der Pico als Massenspeichergerät (wie ein USB-Stick) erscheint.

  3. Kopieren Sie die .uf2-Datei per Drag-and-Drop auf das Laufwerk.

  4. Warten Sie, bis die Verbindung automatisch trennt (dies zeigt den Abschluss der Installation an).

  5. Trennen Sie das Micro-USB-Kabel.

Der Pico 2 ist nun mit MMBasic startklar.

Zusammenbau und Inbetriebnahme

Zusammenbau eines PicoMite VGA/PS2

Zusammenbau:

Die Montage ist auch für Anfänger machbar – mit etwas Geduld und einem Lötkolben ist die Platine schnell fertig:

  1. Beginnen Sie mit der SD-Kartenbuchse, da sie viel Platz zum Löten benötigt.

  2. Löten Sie die restlichen Durchsteckkomponenten (z. B. Widerstände, Dioden) gemäß der Siebdruckbeschriftung auf der Platine. Achten Sie auf die richtige Polarität bei Dioden.

  3. Löten Sie zwei Stiftleistenfassungen (2×20 Pins) auf die Platine, um den Raspberry Pi Pico 2 einzustecken.

  4. Verschrauben Sie die Platine mit M3 x 4 mm Schrauben im Bodenteil des 3D-gedruckten Gehäuses.

  5. Klipsen Sie den Gehäusedeckel auf.

Inbetriebnahme:

  1. Schließen Sie einen VGA-Monitor und eine PS/2-Tastatur an die Platine an.

  2. Verbinden Sie den Pico 2 per Micro-USB-Kabel mit Ihrem Computer.

  3. Der MMBasic-Startbildschirm wird auf dem Monitor angezeigt.

  4. Geben Sie den Befehl OPTION SDCARD GP13,GP10,GP11,GP12 ein und drücken Sie Enter, um die SD-Karte für Speicherzugriff zu aktivieren. Das Board startet neu.

  5. Falls das Bild auf dem VGA-Monitor rot- oder blaustichig wirkt, justieren Sie den Trimmpotentiometer für den Weißabgleich. Kein Bild? Überprüfen Sie die VGA-Verbindung oder starten Sie den Pico neu.

Ihr PicoMite ist nun einsatzbereit, und Sie können Ihr erstes MMBasic-Programm schreiben!

Abschluss und Ausblick

PicoMite VGA/PS2 im Einsatz

Herzlichen Glückwunsch – Ihr PicoMite VGA/PS2 ist fertig und bereit, die Welt der Retro-Computer zu erobern! Die Kosten: ca. 11,84 € für fünf Platinen und 88,19 € für die Bauteile, also etwa 20 € pro Set. Ein unschlagbarer Preis für einen eigenen BASIC-Computer mit VGA-Ausgang und viel Programmierspaß!

Experimentieren Sie mit MMBasic, schreiben Sie eigene Programme oder erweitern Sie Ihr Board mit Sensoren und LEDs über die GPIO-Pins. Im TheBackShed-Forum [9] finden Sie Ideen und Beispielprogramme, oder teilen Sie Ihr Projekt im VzEkC e.V. Forum [2]. Probieren Sie die neuesten MMBasic-Updates oder passen Sie Ihr 3D-Gehäuse mit eigenen Designs an. Viel Spaß beim Basteln und Programmieren!

Möchten Sie noch tiefer einsteigen? Der nächste Artikel stellt den Colour Maximite 2 Generation 2 Version 2 vor – einen leistungsstärkeren Retro-Computer mit Farbgrafik und erweiterten Möglichkeiten. Schauen Sie im VzEkC e.V. Forum [2] für erste Infos vorbei!

Über den Autor

Manfred (ManiB) ist ein Retro-Computing-Enthusiast und seit April 2025 aktiv im Vereinsforum des VzEkC e.V. Er liebt es, Einplatinencomputer mit Basic-Interpreter zu verwenden und hat auch weitere Projekte 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

  1. Einleitung, Bild 1: Fertig aufgebauter PicoMite VGA/PS2
  2. Absatz „Platinenherstellung“, Bild 2: JLCPCB PCB-Spezifikationen
  3. Absatz „Platinenherstellung“, Bild 3: JLCPCB Abschluss der Bestellung
  4. Absatz „Ein Gehäuse für dein PicoMite VGA/PS2“, Bild 4: Fünf Gehäuse frisch aus dem 3D-Drucker
  5. Absatz „Zusammenbau und Inbetriebnahme“, Bild 5: Zusammenbau eines PicoMite VGA/PS2
  6. Absatz „Abschluss und Ausblick“, Bild 6: PicoMite VGA/PS2 im Einsatz

Links

  1. PicoMiteHDMIUSB-Motherboard
    https://geoffg.net/picomitevga.html
  2. Zugehöriger Thread im VzEkC e. V. Forum
    https://forum.classic-computing.de/forum/index.php?thread/35726-picomite-vga-ps2-reference-design/
  3. PicoMiteVGA_Construction_Pack.zip
    https://geoffg.net/Downloads/picomite/PicoMiteVGA_Construction_Pack.zip
  4. PicoMiteVGAPS2-PCB-Gerbers.zip
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/PicoMiteVGAPS2-PCB-Gerbers.zip
  5. JLCPCB
    https://jlcpcb.com/
  6. Mouser.de
    https://www.mouser.de/
  7. Altronics-Steckgehäuse H0376
    https://www.altronics.com.au/p/h0376-71x130x30mm-abs-grey-instrument-case/
  8. PicoMite VGA Shell V2 (STL-Files)
    https://www.thingiverse.com/thing:5872053
  9. Firmware-Datei PicoMiteRP2350VGAV6.01.00b12.uf2
    https://www.thebackshed.com/forum/ViewTopic.php?TID=18145&P=11#244521

Bilder-Galerie

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...
Freitag, September 19th, 2025 Allgemein Keine Kommentare

PicoMiteHDMIUSB motherboard reference design

Die ersten Homecomputer Ende der 1970er und Anfang der 1980er Jahre waren für viele der Einstieg in die Welt der Computertechnik – dank eingebautem Basic-Interpreter. Mit wenigen Zeilen Code konnten selbst Anfänger ihre ersten Programme schreiben. Ein einfaches „Hello World“-Programm ließ sich in drei Schritten zum Laufen bringen: Rechner einschalten, den Code eintippen und mit „RUN“ starten.

10 PRINT "Hello world! ";
20 GOTO 10

Diese Computer sind Geschichte, doch die Sehnsucht nach unkomplizierter Programmierung lebt weiter. Mit moderner Technik können Sie diesen Retro-Charme neu erleben: Ein Microcontroller, ein BASIC-Interpreter, eine USB-Tastatur und ein HDMI-Monitor genügen, um die Magie der 80er wieder aufleben zu lassen – mit dem Komfort von heute!

In diesem Projekt [1] setzt das PicoMiteHDMIUSB-Motherboard [2] genau hier an. Im Herzen des Projekts schlägt der RP2350B, ein kostengünstiger und leistungsstarker Microcontroller, der auch im Raspberry Pi Pico 2 verwendet wird. Darauf läuft der MMBasic-Interpreter, der die einfache Programmierung der 80er Jahre auf moderne Hardware bringt. Dieser Artikel zeigt Ihnen Schritt für Schritt, wie Sie Ihren eigenen Retro-Computer mit USB-Tastatur und HDMI-Monitor aufbauen – bereit für Ihr nächstes „Hello World“!

Peter Mather’s Referenzdesign

Bild 1: Vorderseite PicoMiteHDMIUSB-Motherboard

Bild 2: Rückseite PicoMiteHDMIUSB-Motherboard

Mit Peter Mather’s Referenzdesign [3] für das PicoMiteHDMIUSB-Motherboard können Sie sofort starten. Alle Dateien für die Platinenherstellung und -bestückung bei einem Hersteller wie JLCPCB [3] sind frei verfügbar. Sie benötigen drei Dateien: die Gerber-Dateien für die Platinenherstellung, die Stückliste (BOM) mit allen Bauteilen und die Pick-and-Place-Datei für deren präzise Positionierung. Die neueste Version (2B) finden Sie im TheBackShed-Forum [4]. Laden Sie dort die Gerber-Datei (Gerber_PCB1_2025-03-20.zip) sowie die Stücklisten- und Pick-and-Place-Datei (BOM_P&P_2025-03-20.zip) herunter. Entpacken Sie die BOM- und P&P-Datei, um die enthaltenen Excel-Dateien zu erhalten.

Platinenherstellung

Bild 3: Lieferung der Boards und Panels von JLCPCB

Bestellen Sie Ihre Platine bei JLCPCB [5]:

  1. Melden Sie sich auf der Website von JLCPCB an und starten Sie eine Bestellung.

  2. Ziehen Sie die Gerber-Zip-Datei per Drag-and-Drop auf den Button „Add gerber file“.

  3. Passen Sie die PCB-Spezifikationen an:

    • Anzahl der Platinen: 5 (Mindestbestellmenge)

    • Oberflächenbeschaffenheit: LeadFree HASL (bleifrei, in Deutschland vorgeschrieben)

    • PCB-Farbe: Grün (Standard, spart Kosten)

  4. Aktivieren Sie unter „PCB Assembly“ die Bestückung der Oberseite, ohne Änderungen vorzunehmen, und klicken Sie auf „NEXT“.

  5. Wählen Sie „Top Side“ für die Bestückung und klicken Sie erneut auf „NEXT“.

  6. Laden Sie die Stückliste (BOM) und die Pick-and-Place-Datei hoch. Starten Sie die Verarbeitung mit „Process BOM & CPL“.

  7. Prüfen Sie die Liste der verfügbaren Bauteile. Beachten Sie, dass das PSRAM (U33, „APS6404L-3SQR-SN“) bei JLCPCB nicht verfügbar ist. Dieses Bauteil kann später bei einem Elektronik-Händler bestellt und manuell aufgelötet werden, ist jedoch für den Betrieb nicht zwingend erforderlich.

  8. Bestätigen Sie, dass fehlende Bauteile (U33) nicht bestückt werden („Do not place“), und klicken Sie auf „Continue to place order“.

  9. Überprüfen Sie die 2D-/3D-Ansicht der Platine und fahren Sie mit „NEXT“ fort.

  10. Auf der „Quote & Order“-Seite betragen die Kosten ca. 1,70 € für die Platinen und ca. 116 € für Bauteile und Bestückung. Wählen Sie „Research/Entertainment/Education“ > „Development Board – HS Code 847330“ und klicken Sie auf „SAVE TO CART“.

  11. Wählen Sie im Einkaufswagen FedEx Express als Versanddienstleister, um Zollprobleme zu vermeiden. Der Gesamtpreis für fünf Platinen beträgt ca. 134 €, zuzüglich ca. 30 € für Steuer und Zoll (über FedEx), also etwa 32,80 € pro Board.

  12. Schließen Sie die Bestellung ab, und die Platinen gehen in Produktion.

Gehäuse für Ihr PicoMiteHDMIUSB

Bild 4: Hammond Electronics RM2015S Universal-Gehäuse

Um Ihr Motherboard stilvoll zu schützen, empfiehlt sich das Kunststoffgehäuse RM2015S von Hammond Electronics. Es besteht aus robustem ABS in Lichtgrau (130 x 100 x 30 mm) und ist z. B. bei Voelkner für 4,90 € erhältlich [6]. Die vier Bohrungen im Motherboard passen genau zu den Aufnahmen im Gehäuseboden, und alle Schrauben sind im Lieferumfang enthalten.

Für die Front- und Back-Panels stehen drei Optionen zur Verfügung:

  • Mitgelieferte Panels: Die mit dem Gehäuse gelieferten Plastik-Panels können bearbeitet werden, um Öffnungen für Anschlüsse zu schaffen. Dies ist jedoch aufwendig und wird nicht empfohlen.

  • 3D-gedruckte Panels: Mit einem 3D-Drucker können Sie individuelle Panels kostengünstig herstellen. Die STL-Dateien finden Sie im TheBackShed-Forum: PicoMiteHDMIUSB.zip [7] und panels.zip [8]. Falls kein 3D-Drucker verfügbar ist, bietet JLCPCB 3D-Druck-Dienste an.

  • Personalisierte Panels: Bei JLCPCB können Sie beschriftete Platinen in Farben wie Grün, Violett, Rot, Gelb, Blau, Weiß oder Schwarz bestellen. Für einen professionellen Look gibt es Aluminium-Panels mit weißer Lackierung und schwarzer Beschriftung für wenige Cent Aufpreis. Die Gerber-Dateien sind im TheBackShed-Forum verfügbar: Gerber_panels_frontpanel_2025-03-22.zip [9] und Gerber_panels_backpanel_2025-03-22.zip [10].

Wählen Sie die Option, die zu Ihrem Budget und Stil passt.

Installation des MMBasic-Interpreters

Überprüfen Sie das gelieferte Motherboard mit einer Lupe auf Zinnbrücken oder fehlerhafte Bauteile. Die Fertigungsqualität von JLCPCB ist in der Regel hervorragend, aber ein kurzer Check lohnt sich.

Laden Sie die Firmware-Datei „PicoMiteHDMIUSBV6.01.00b12.uf2“ (Version 6.01.00b12) aus dem TheBackShed-Forum [11] herunter. Für die Installation benötigen Sie die Micro-USB-Buchse („PROG“), den BOOT-Taster und den zweifachen Dip-Schalter („USBHUB“) auf dem Board:

  1. Stellen Sie beide Dip-Schalter auf „DISABLE“, um den Programmiermodus zu aktivieren.

  2. Halten Sie den BOOT-Taster gedrückt und verbinden Sie das Board per Micro-USB-Kabel mit Ihrem Computer.

  3. Lassen Sie die Taste los, sobald das Board als „RP2350“-Massenspeichergerät erscheint.

  4. Ziehen Sie die .uf2-Datei per Drag-and-Drop auf das Laufwerk. Die Verbindung trennt sich automatisch nach Abschluss der Installation.

  5. Trennen Sie das Micro-USB-Kabel und stellen Sie die Dip-Schalter auf „ENABLE“.

Das Board ist nun mit MMBasic geflasht und bereit für den Zusammenbau.

Zusammenbau und Inbetriebnahme

Bild 5: Vorderansicht mit offenem Gehäuse

Bild 6: Rückansicht mit geschlossenem Gehäuse

Zusammenbau

  1. Schrauben Sie das Motherboard zusammen mit den Front- und Back-Panels in die Unterseite des Gehäuses.

  2. Setzen Sie den Deckel auf und verschrauben Sie ihn.

Inbetriebnahme

  1. Schließen Sie einen HDMI-Monitor und eine USB-Tastatur an.

  2. Verbinden Sie das Board per USB-C-Kabel („Power“-Buchse auf der Rückseite) mit einem Computer und drücken Sie den Ein-Schalter.

  3. Da zunächst kein Bild angezeigt wird, geben Sie über die USB-Tastatur folgenden Befehl ein:

    OPTION RESET HDMIUSBI2S
  4. Das Board startet neu, und der HDMI-Monitor zeigt ein Bild. Falls kein Bild erscheint, geben Sie den Befehl über eine serielle Verbindung ein:

    • Verbinden Sie das Board per USB-C-Kabel an der „Power“-Buchse. Ihr Computer erkennt eine virtuelle COM-Schnittstelle (sichtbar im Windows-Geräte-Manager).

    • Öffnen Sie TeraTerm oder PuTTY, stellen Sie eine serielle Verbindung mit 115200 Baud her und warten Sie auf den Prompt.

    • Geben Sie OPTION RESET HDMIUSBI2S ein und drücken Sie Enter.

Nach dem Neustart zeigt der Monitor den MMBasic-Prompt, und Sie können Ihr erstes „Hello World“-Programm schreiben.

Abschluss und Ausblick

Mit der Version 2B von Peter Mather’s Referenzdesign bauen Sie einen modernen Retro-Computer, der MMBasic auf dem Raspberry Pi Pico 2 zum Leben erweckt. Freuen Sie sich auf vielseitige Features:

  • Vier USB-Ports für Tastatur, Maus, Joypads oder andere Geräte

  • HDMI-Anschluss für moderne Monitore

  • Micro-SD-Karte zum Speichern Ihrer Programme

  • Audioausgang für Stereo-Sound

  • 32-poliger I/O-Stecker für Erweiterungen

Diese Kombination eröffnet Ihnen nahezu unbegrenzte Möglichkeiten, kreative Ideen mit BASIC-Programmierung umzusetzen. Falls Ihnen das PicoMiteHDMIUSB zu komplex erscheint, probieren Sie die einfachere Alternative PicoMiteVGAPS2, die weniger Bauteile benötigt und ideal zum Selberlöten ist. Mehr dazu im nächsten Artikel!

Über den Autor

Manfred (ManiB) ist ein Retro-Computing-Enthusiast und seit April 2025 aktiv im Vereinsforum des VzEkC e.V. Er liebt es, Einplatinencomputer mit Basic-Interpreter zu verwenden und hat auch weitere Projekte 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

  1. Absatz „Peter Mather’s Referenzdesign“, Bild „1“: Vorderseite PicoMiteHDMIUSB-Motherboard
  2. Absatz „Peter Mather’s Referenzdesign“, Bild „2“: Rückseite PicoMiteHDMIUSB-Motherboard
  3. Absatz „Platinenherstellung“, Bild „3“: Lieferung der Boards und Panels von JLCPCB
  4. Absatz „Ein Gehäuse für dein PicoMiteHDMIUSB“, Bild „4“: Hammond Electronics RM2015S Universal-Gehäuse
  5. Absatz „Zusammenbau und Inbetriebnahme“, Bild „5“: Vorderansicht mit offenem Gehäuse
  6. Absatz „Zusammenbau und Inbetriebnahme“, Bild „6“: Rückansicht mit geschlossenem Gehäuse

Links

  1. Zugehöriger Thread im VzEkC e. V. Forum
    https://forum.classic-computing.de/forum/index.php?thread/35594-picomitehdmiusb-motherboard-reference-design/
  2. PicoMiteHDMIUSB-Motherboard
    https://geoffg.net/picomitevga.html
  3. Peter Mather’s Referenzdesign
    https://www.thebackshed.com/forum/ViewTopic.php?TID=17301
  4. Version (2B) von Peter Mather’s Referenzdesign
    https://www.thebackshed.com/forum/ViewTopic.php?TID=17301&P=11#236097
  5. JLCPCB
    https://jlcpcb.com/
  6. Kunststoff-Gehäuse RM2015S von Voelkner
    https://www.voelkner.de/products/172913/Hammond-Electronics-RM2015S-Universal-Gehaeuse-130-x-100-x-30-ABS-Lichtgrau-RAL-7035-1St..html
  7. PicoMiteHDMIUSB.zip
    https://www.thebackshed.com/forum/uploads/twofingers/2025-03-22_093809_PicoMiteHDMIUSB.zip
  8. panels.zip
    https://www.thebackshed.com/forum/uploads/PhenixRising/2025-04-02_022651_panels.zip
  9. Gerber_panels_frontpanel_2025-03-22.zip
    https://www.thebackshed.com/forum/uploads/Amnesie/2025-03-22_091536_Gerber_panels_frontpanel_2025-03-22.zip
  10. Gerber_panels_backpanel_2025-03-22.zip
    https://www.thebackshed.com/forum/uploads/Amnesie/2025-03-22_091545_Gerber_panels_backpanel_2025-03-22.zip
  11. Firmware-Datei PicoMiteHDMIUSBV6.01.00b12.uf2
    https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=18145&LastEntry=Y#244560#244521

Bilder-Galerie

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...
Mittwoch, September 17th, 2025 Einplatinen-Computer Keine Kommentare

Ein ZX81 Emulator im 3D-gedruckten Gehäuse mit Folientastatur

Vor über 40 Jahren war der Sinclair ZX81 ein Meilenstein. Dieser Homecomputer weckte Begeisterung für Computertechnik. Mit diesem Retro-Projekt [1] wurde der ZX81 als Emulation (picozx81) auf modernen Komponenten wiederbelebt. Das Gehäuse ist 3D-gedruckt, die Folientastatur originalgetreu. Ziel war es, Nostalgie zu bewahren und gleichzeitig moderne Vorteile zu nutzen. Dazu gehören ein HDMI-Anschluss, schnelles Laden und Speichern auf SD-Karte sowie Joystick-Unterstützung. Nachfolgend wird der Weg zum funktionierenden ZX81-Emulator beschrieben.

Projektüberblick

Der fertig aufgebaute ZX81 Emulator

 Der ZX81 wurde möglichst authentisch nachgebaut, jedoch mit moderner Technik:

  • Gehäuse: 3D-gedruckt, mit originalen Abmessungen des ZX81.
  • Tastatur: Originalgetreue Folientastatur, trotz schwierigem Tippgefühl unverzichtbar für die Nostalgie.
  • Emulation: picozx81-Emulator auf einem Raspberry Pi Pico.
  • Hardware: Olimex RP2040-PICO-PC als Motherboard, Arduino Pro Micro für Tastatursteuerung, weitere Kleinteile.
  • Zusatzfunktionen: Joystick-Port, Funktionstasten für Emulator-Steuerung, USB-C-Stromversorgung.

Bauteile und Vorbereitung

Ein paar notwendige Elektronik Kleinteile

Für das Projekt sind einige Bauteile notwendig. Ein 3D-Drucker wird vorausgesetzt, um das Gehäuse zu drucken (ca. 6 € Druckkosten). Dann benötigen Sie eine Folientastatur (ca. 27 €) und passende Steckleisten (ca. 7 €). Der Raspberry Pi Pico 2 (ca. 6 €) wird auf ein Motherboard (ca. 12 €) gesteckt, das alle notwendigen Anschlüsse wie HDMI-Monitor und USB-Tastatur bereitstellt. Damit die Anschlüsse der Folientastatur als USB-Tastatur verwendet werden können, wird ein Arduino Pro Micro (ca. 6 €) mit passendem Sketch programmiert. Mit einer kleinen Lochrasterplatine und den notwendigen elektrischen Bauteilen (Kabel, Buchsen, Taster, LEDs, Dioden) (ca. 15 €) kann die Schaltung zum Arduino Pro Micro einfach aufgebaut werden. Damit ergeben sich Gesamtkosten von ca. 79 € für das Projekt.

Hier die Auflistung der notwendigen Komponenten:

  • 3D-gedrucktes Gehäuse [2] und Folientastatur [3] mit Anschlussleisten [4].
  • Raspberry Pi Pico [5] mit picozx81-Emulator [6].
  • Arduino Pro Micro für Tastatursteuerung (fungiert als USB-Tastatur) [7].
  • Olimex RP2040-PICO-PC als Basisplatine [8].
  • Lochrasterplatine, Dioden, Kabel, Pfostenstecker und USB-C-auf-Micro-USB-Kabel [9].
  • 9-poliger Sub-D-Stecker mit Flachbandkabel für Joystick-Anschluss (via UEXT1-Port) [10].

Im GitHub-Repository des „picozx81-Emulators“ können Sie die passende UF2-Datei (picozx81_olimexpc_rp2350.uf2 oder picozx81_olimexpc_hdmi_sound_rp2350.uf2) für das Raspberry Pi Pico 2 Board herunterladen. Alle Infos zur Installation finden Sie ebenfalls dort. Nach der Installation stecken Sie den Pico auf den Olimex RP2040-PICO-PC auf. Nun lässt sich ein erster Start mittels angeschlossenem HDMI-Monitor und normaler USB-Tastatur durchführen.

Der Arduino Pro Micro kann bereits vorab über die Arduino IDE [13] programmiert werden. Das notwendige Sketch wird weiter unten beschrieben. Einmal programmiert, verhält sich der Arduino Pro Micro wie eine USB-Tastatur, wenn die Tasten der Folientastatur gedrückt werden.

Aufbau der Tastaturschaltung

Die USB-Tastaturschaltung angeschlossen an der Folientastatur

Die Tastatur ist das Herzstück des Projekts. Eine originale Folientastatur wurde gewählt, um Nostalgie zu bewahren, trotz ihres berüchtigten Tippgefühls. Aber es gibt auch alternative Tastaturen [12], wenn etwas mehr Komfort gewünscht wird. Die Schaltung basiert auf einem YouTube-Tutorial [11].

Schritte:

  1. Löten der Platine: Auf die Lochrasterplatine wurden Arduino Pro Micro, acht Dioden und zwei Pfostenstecker für die Folientastatur gelötet. Verbindungen entstanden mit WireWrap-Draht für präzise Lötstellen.
  2. Montage: Die Platine wurde mit Heißkleber am Gehäusedeckel befestigt.
  3. Anschluss: Ein USB-C-auf-Micro-USB-Kabel verbindet Arduino und Raspberry Pi Pico.

Herausforderung: Die Leitungen für Tastaturreihen und -spalten waren vertauscht. Daher wurde der Arduino-Sketch angepasst.

Alternative Tastatur: Die ZX8-KDLX-Tastatur [12] mit SMD-Mikrotastern verbessert das Tippgefühl. Dennoch wurde das Original für maximale Authentizität bevorzugt.

Joystick-Integration

Auf der Platine aufgesteckte 9 pol. Joystick –Port

Ein weiteres Highlight ist der Joystick-Port. Dieser ist über den UEXT1-Anschluss des RP2040-PICO-PC angeschlossen. Ein 9-poliger Sub-D-Stecker (inklusive Flachbandkabel) [10] ermöglicht den Anschluss klassischer Atari- oder Competition-Pro-Joysticks.

Hier die Zuordnung der Verbindungen: Joystick-Pin-Nummer -> UEXT1-Pin-Nummer

  • 1 → 3
  • 2 → 4
  • 3 → 6
  • 4 → 5
  • 6 → 10
  • 8 → 2

Um den Joystick zu aktivieren, setzen Sie den Parameter „NinePinJoystick“ im Abschnitt [default] der Datei config.ini im Stammverzeichnis auf „On“.

 

Umsetzung:

  • Die sechs Leitungen des Flachbandkabels wurden gemäß UEXT1-Pinbelegung angeschlossen und verlötet.
  • Der Sub-D-Stecker wurde ins Gehäuse geklebt.

Hinweis: Ein günstiger Atari-Joystick wird noch gesucht. Vorschläge für Bezugsquellen sind willkommen.

Funktionstasten für den Emulator

Der picozx81-Emulator bietet praktische Funktionen, die über die Tasten F1–F9 und Escape aufgerufen werden:

  • F1: Zurücksetzen
  • F2: Laden
  • F3: Emulator-Konfiguration anzeigen
  • F4: Pause
  • F5: Tastatur-Overlay anzeigen
  • F6: Ändern
  • F7: Neustart
  • F8: Reboot
  • F9: Schnappschuss speichern
  • ESC: Menü verlassen

Da die ZX81 Folientastatur keine Funktionstasten hat, wurde ein seitlicher Taster eingebaut. Wird dieser gedrückt und gleichzeitig eine Zifferntaste (1–9) betätigt, werden die Funktionstasten F1–F9 ausgelöst. Mit der Zifferntaste (0) wird die Taste Escape simuliert. Der angepasste Arduino-Sketch ist weiter unten einzusehen.

Abschluss und Ausblick

Nach über 40 Jahren den ZX81 wieder in Händen zu halten, kleine Basic-Programme zu schreiben, alte Spiele zu zocken ist ein tolle Sache – vor allem wenn man die Vorteile der Emulation genießen kann, wie Verwendung moderner Monitore, Load und Save auf SD-Karte ohne Wartezeit, 16 kB RAM Erweiterung, Speichern der ZX81 Games auf SD Karte, Anlegen von SnapShots via Funktionstaste, Joystick-Port, Stromversorgung via USB-C Kabel.

Was ich in den Jahren verdrängt hatte, ist die Tatsache wie langsam die Abarbeitung der Basic-Programme ist. Wenn man eine Variable hochzählt und anzeigen lässt, geht das gefühlt im Sekundentakt. Will man „flüssige“ Spiele damit programmieren muss man zwangsläufig in die Z80 Assembler Programmierung einsteigen.

Vielleicht spüren einige Retro-Begeisterte Leser nun ebenfalls den Wunsch, den ZX81 wieder zum Leben zu erwecken – wenn ja, ist dies die passende Anleitung dazu.

Dieser Ansatz wäre auch für den ZX Spectrum [14] denkbar, und möglicherweise gibt es eine Emulation des C64 für den Pico.

Übrigens habe ich mir zu Weihnachten den „The Spectrum“ [15] gegönnt. Vielleicht ein Thema, über das im LOAD-Magazin berichtet werden könnte…

Arduino-Sketch für die Tastatur

Die aktualisierte Version des Sketches [16] für den Arduino Pro Micro wurde an die Tastaturverkabelung und Funktionstasten angepasst:


/*
Arduino Pro Micro based USB keyboard driver
3D print your own ZX81 and turn it into a USB keyboard for emulation
ZX81 Version 04.04.2025 Manfred Becker v1.0: Adjustment rows and columns 07.04.2025 Manfred Becker v1.1: Adjustment additional button */ #include <Arduino.h> #include <Keyboard.h> // global variables #define SERIAL_BAUDRATE 9600 #define NUM_ROWS 8 #define NUM_COLUMNS 5 #define DEBOUNCE_SCANS 5 // 8 row drivers - outputs const uint8_t row1 = 2; const uint8_t row2 = 3; const uint8_t row3 = 4; const uint8_t row4 = 5; const uint8_t row5 = 6; const uint8_t row6 = 7; const uint8_t row7 = 8; const uint8_t row8 = 9; uint8_t rowPins[NUM_ROWS] = {row1, row2, row3, row4, row5, row6, row7, row8}; // 5 column inputs - pulled high const uint8_t column1 = 18; const uint8_t column2 = 15; const uint8_t column3 = 14; const uint8_t column4 = 16; const uint8_t column5 = 10; uint8_t columnPins[NUM_COLUMNS] = {column1, column2, column3, column4, column5}; const uint8_t resetRow = row7; const uint8_t resetColumn = column1; char keyMap[NUM_ROWS][NUM_COLUMNS] = { {'1','2','3','4','5'}, {'q','w','e','r','t'}, {'0','9','8','7','6'}, {'a','s','d','f','g'}, {'p','o','i','u','y'}, {KEY_LEFT_SHIFT,'z','x','c','v'}, {KEY_RETURN,'l','k','j','h'}, {' ','.','m','n','b'}, }; const uint8_t shiftKeyRow = 5; const uint8_t shiftKeyColumn = 0; char keyMapShifted[NUM_ROWS][NUM_COLUMNS] = { {'\0','\0','\0','\0','\0'}, {'\0','\0','\0','\0','\0'}, {'\0','\0','\0','\0','\0'}, {'\0','\0','\0','\0','\0'}, {'\0','\0','\0','\0','\0'}, {'\0','\0','\0','\0','\0'}, {'\0','\0','\0','\0','\0'}, {'\0',',','\0','\0','\0'}, }; // Additional button for F1-F10 const uint8_t functionKeyPin = A1; // Pin 19 auf Pro Micro // Function key mapping for digits 0-9 const uint8_t functionKeys[10] = { KEY_ESC, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9 }; // class definitions class KeyboardKey { public: int row; int column; int lastState; int debounceCount; char keyCode; char keyCodeShifted; uint8_t lastFunctionKey; // Neue Variable für Funktionstasten // default constructor KeyboardKey() { lastFunctionKey = 0; // Initialisiere mit 0 (keine Taste) } // init constructor; KeyboardKey(int rowNum, int colNum){ // log matrix position row = rowNum; column = colNum; // get keycode from keyMap array keyCode = keyMap[row][column]; keyCodeShifted = keyMapShifted[row][column]; // initialise state and debounce lastState = 0; debounceCount = 0; lastFunctionKey = 0; // Initialisiere mit 0 } void updateKey(KeyboardKey shiftKey){ // row driver set by matrix handler // scan key int thisState = digitalRead(columnPins[column]); int shiftKeyState; if(thisState != lastState) { // state changing debounceCount ++; // is debounce finished if (debounceCount >= DEBOUNCE_SCANS){ // key state has changed lastState = thisState; debounceCount = 0; // high = not pressed, low = pressed if(thisState == 1){ //key released releaseKeys(); //Serial.println(keyCode); //delay(10); } else { // key pressed // Prüfe den Zustand der Zusatztaste int functionKeyState = digitalRead(functionKeyPin); // decide which key to pree based on shift key state shiftKeyState = shiftKey.lastState; if (functionKeyState == LOW) { // Additional key pressed // Check whether it is a numeric key (0-9) if (keyCode >= '0' && keyCode <= '9') { uint8_t digit = keyCode - '0'; // Convert char to index (0-9) lastFunctionKey = functionKeys[digit]; // Save the sent key Keyboard.press(lastFunctionKey); // Send F1-F9 or ESC return; // Exit the method to skip normal processing } } if((shiftKeyState == 1) || (keyCodeShifted == '\0')) { // no shift Keyboard.press(keyCode); } else { // shift key pressed - press shift keycode // release shift key shiftKey.releaseKeys(); Keyboard.press(keyCodeShifted); } //Serial.println(keyCode); //delay(10); } } } else { // no change in state // make sure debounce reset debounceCount = 0; } } void releaseKeys(){ Keyboard.release(keyCode); Keyboard.release(keyCodeShifted); if (lastFunctionKey != 0) { // If a function key has been sent... Keyboard.release(lastFunctionKey); // release and lastFunctionKey = 0; // reset } } }; // end class KeyboardKey // global key handler array // initialised in setup KeyboardKey keyHandlers[NUM_ROWS][NUM_COLUMNS]; class MatrixDriver{ public: MatrixDriver() {} void scanMatrix() { int row; int column; for(row = 0; row < NUM_ROWS; row ++){ // trun on this row line activateRowLine(row); // do column keys for(column = 0; column < NUM_COLUMNS; column ++){ keyHandlers[row][column].updateKey(keyHandlers[shiftKeyRow][shiftKeyColumn]); } } } void activateRowLine(int rowNum){ // rowNum is zero based to match arrays int row; for(row = 0; row < NUM_ROWS; row ++){ if(row == rowNum){ // turn on this row digitalWrite(rowPins[row], LOW); } else { // turn off this row digitalWrite(rowPins[row], HIGH); } } } }; // end class Matrix Driver // global matrix driver instance MatrixDriver matrix = MatrixDriver(); void setup() { int row; int column; // Init serial port and clean garbage Serial.begin(SERIAL_BAUDRATE); // Zusatztaste als Eingang mit Pull-up pinMode(functionKeyPin, INPUT_PULLUP); // reset button pinMode(resetColumn, INPUT_PULLUP); pinMode(resetRow, OUTPUT); delay(10); // Check whether the additional key is pressed at the start if (digitalRead(functionKeyPin) == LOW) { // Additional key pressed: Wait for ENTER for programmability Serial.println("Additional key pressed - wait for ENTER..."); while(digitalRead(resetColumn)){ delay(100); } Serial.println("ENTER pressed - start keyboard"); } else { Serial.println("No additional key pressed - start immediately"); } // start keyboard Keyboard.begin(); // init columns pinMode(column1, INPUT_PULLUP); pinMode(column2, INPUT_PULLUP); pinMode(column3, INPUT_PULLUP); pinMode(column4, INPUT_PULLUP); pinMode(column5, INPUT_PULLUP); // init rows as output and set high - inactive pinMode(row1, OUTPUT); digitalWrite(row1, HIGH); pinMode(row2, OUTPUT); digitalWrite(row2, HIGH); pinMode(row3, OUTPUT); digitalWrite(row3, HIGH); pinMode(row4, OUTPUT); digitalWrite(row4, HIGH); pinMode(row5, OUTPUT); digitalWrite(row5, HIGH); pinMode(row6, OUTPUT); digitalWrite(row6, HIGH); pinMode(row7, OUTPUT); digitalWrite(row7, HIGH); pinMode(row8, OUTPUT); digitalWrite(row8, HIGH); // setup key array for(row = 0; row < NUM_ROWS; row ++){ for(column = 0; column < NUM_COLUMNS; column ++){ keyHandlers[row][column] = KeyboardKey(row, column); } } Serial.println("finished setup"); delay(10); } void loop() { // scan key matrix every 1 ms (+ execution time) //Serial.println("scanning"); matrix.scanMatrix(); delay(1); }

Über den Autor

Manfred (ManiB) ist ein Retro-Computing-Enthusiast und seit April 2025 aktiv im Vereinsforum des VzEkC e.V. Er liebt es, alte Computer wie den ZX81 mit moderner Technik wiederzubeleben und hat auch weitere Projekte 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

  1. Absatz “ Projektüberblick ”, Datei “zx81-emulator-01.jpg”:  Der fertig aufgebaute ZX81 Emulator
  2. Absatz “ Bauteile und Vorbereitung”, Datei “zx81-emulator-02.jpg”:  Ein paar notwendige Elektronik Kleinteile
  3. Absatz “ Aufbau der Tastaturschaltung”, Datei “zx81-emulator-03.jpg”:  Die USB-Tastaturschaltung angeschlossen an der Folientastatur
  4. Absatz “ Joystick-Integration ”, Datei “zx81-emulator-04.jpg”:  Auf der Platine aufgesteckte 9 pol. Joystick –Port

Links

  1. Zugehöriger Thread im VzEkC e. V. Forum
    https://forum.classic-computing.de/forum/index.php?thread/35482-zx81-emulator-picozx81-im-3d-gedrucktem-geh%C3%A4use-und-folientastatur/
  2. Sinclair ZX81 Gehäuse
    https://www.printables.com/model/321667-sinclair-zx81-case?lang=de
  3. Sinclair ZX81 Tastaturfolie
    https://www.ebay.de/itm/193682625447
  4. Sinclair ZX81 Anschussleisten für Tastaturfolie links/rechts
    https://www.ebay.de/itm/385851124606
  5. Raspberry Pi Pico 2, RP2350 Mikrocontroller-Board
    https://www.amazon.de/dp/B0DCKH85WR?ref=ppx_yo2ov_dt_b_fed_asin_title
  6. picozx81-Emulator, a Sinclair ZX81 and ZX80 Emulator for the Raspberry Pi Pico
    https://github.com/ikjordan/picozx81
  7. Arduino Pro Micro Entwicklungsboard
    https://www.amazon.de/dp/B0CXXPNQS1?ref=ppx_yo2ov_dt_b_fed_asin_title
  8. Olimex RP2040-PICO-PC
    https://www.mouser.de/ProductDetail/Olimex-Ltd/RP2040-PICO-PC?qs=By6Nw2ByBD0sUAtT4YjHxw%3D%3D
  9. USB-C-auf-Micro-USB-Kabel Adapter
    https://www.amazon.de/dp/B0DJ173F5L
  10. Adapter-Kabel – IDC 10-Pin zu D-Sub 9
    https://www.amazon.de/DIGITUS-Seriell-Port-Slotblech-Adapter-Kabel-Flachband-Kabel/dp/B006DYQNIK/ref=sr_1_28
  11. YouTube-Tutorial zum ZX81 USB-Tastaturaufbau:
    https://youtu.be/_qXddJCthWs
  12. ZX8-KDLX-Tastatur für verbessertes Tippgefühl:
    https://www.ginger-electronic.com/en/retro-computer/24-40-zx8-kdlx-keyboard-for-sinclair-zx81-and-zx80.html#/26-model-zx81
  13. Arduino IDE für die Programmierung des Arduino Pro Micro:
    https://www.arduino.cc/en/software/
  14. 48k/128k ZX Spectrum for Raspberry Pico Pi RP2040:
    https://github.com/fruit-bat/pico-zxspectrum
  15. Retrogames: The Spectrum
    https://retrogames.biz/products/thespectrum/
  16. Arduino-Sketch für die Tastatur, ArduinoKeyboard_ZX81.ino
    https://mikrocontroller.bplaced.net/wordpress/wp-content/uploads/2025/09/ArduinoKeyboard_ZX81.zip

Bilder-Galerie

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Montag, September 15th, 2025 Einplatinen-Computer Keine Kommentare

CMM2 G2 V2– Colour Maximite 2 Generation 2 Version 2

Der Colour Maximite 2 G2 V2 ist ein kleiner, eigenständiger Computer, inspiriert von den Heimcomputern der frühen 80er Jahre wie dem Tandy TRS-80, Sinclair Spectrum, Commodore 64 und Apple II. Er enthält einen eigenen BASIC-Interpreter und bootet in weniger als einer Sekunde in diesen. Das Projekt wurde von Geoff Graham und Peter Mather ins Leben gerufen.

Leistung und Funktionen:

    • Im Vergleich zu seinen Vorbildern ist der BASIC-Interpreter mit einer Verarbeitungsgeschwindigkeit von bis zu 270.000 Zeilen pro Sekunde so schnell, dass Animationen und Spiele direkt in BASIC programmiert werden können. Die Nutzung von Assembler und C ist möglich, aber nicht mehr notwendig.
    • Die neueste Version des CMM2 G2 V2 kommt mit 32 MB externem RAM und der neuesten Software.

Lieferumfang:

    • Eine SD-Karte mit allen verfügbaren Handbüchern und den wichtigsten Programmen ist enthalten, ebenso wie eine kurze deutsche Bedienungsanleitung.

Zusätzliche Informationen:

    • Die Homepage des Projekts findet ihr hier, oder ihr googelt nach „Geoff“ und „CMM2“.
    • Eine Rarität und schwer zu bekommen. Ich habe es bei eBay per Sofortkauf ergattern können. Das ideale Tool für die BASIC-Computer-Generation. Endlich kann man in BASIC schnelle Spiele und Animationen schreiben, ohne den Umweg über Assembler. Das mächtige MMBasic umfasst auch 3D-Grafik, Interrupts und Routinen für externe Sensoren und LEDs.
    • Die 40-polige Steckerleiste ist Raspberry Pi kompatibel.
    • Die Platine ist neu vom Bestücker und mit der neuesten Firmware geflasht. Vollständig getestet und direkt einsatzbereit inkl. Batterie für Uhrzeit und Optionen.

Lieferumfang:

    • Getestetes Mainboard im 3D-gedruckten Gehäuse
    • MMBasic Ver 5.07.02b11
    • SD-Karte mit Sammlung von CMM2-Programmen und Informationen zum CMM
    • Gedruckte deutsche Kurzanleitung

Zusätzlich benötigte Komponenten (nicht enthalten):

    • Netzteil mit USB Type-C Kabel
    • Monitor mit D-SUB/VGA-Anschluss
    • VGA-Kabel
    • USB-Tastatur
    • Audiokabel mit Stereo-Klinkenstecker
    • Optional: USB/PS2-Maus (z.B. Microsoft Basic Optical Mouse)

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Donnerstag, Februar 13th, 2025 Allgemein 2 Comments

Agon Light, Agon Light 2 und Agon Console 8

Es gibt einen weiteren interessanten Einplatinencomputer, welcher einen BASIC-Interpreter direkt nach dem Einschalten bereithält. Es ist ein Open Source Projekt und es gibt eigentlich mehrere Versionen:

Es handelt sich um einen Einplatinencomputer Retro-Computer mit Z80 und BBC Basic.

Das besondere daran ist, dass hier nichts emuliert wird, sondern ein echter Zilog Z80 Prozessor zum Einsatz kommt. Genau genommen ist es der Zilog eZ80F92, welche mit 20MHz getaktet wird und zusätzliche Features hat, wie den ADL-Modus, bei dem auf 24-Bit Register und Adressen zugegriffen werden können.

Es gibt eine zweite CPU, einen ESP32, der für die Steuerung von Video, Sound und Tastatur zuständig ist. Dieser Co-Prozessor ist über einen UART mit dem eZ80F92 verbunden und fungiert als Grafikterminal.

Ich hab mir das Board Agon Light 2 von Olimex bestellt, inkl. Gehäuse. Mein Tipp um die hohen Versandkosten zu sparen: bestellt bei Mouser Electronics 😉

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Montag, Januar 27th, 2025 Allgemein, Hardware Keine Kommentare

The Spectrum und Colour Maximite 2

Hallo zusammen,

ich habe mir zu Weihnachten gleich zwei tolle „Basic-Computer“ gegönnt:

  1. The Spectrum
  2. Colour Maximite 2 G2 V2

Nach dem Sinclair ZX 81 war der ZX Spectrum mein zweiter Homecomputer, den ich 1984 erworben hatte. Ihn jetzt als Retro-Gerät in Händen zu halten ist ein tolles Gefühl und die Möglichkeit, ihn mit Basic zu programmieren zu können war letztlich die Kaufentscheidung für mich.

Aber wenn es um die Basic-Programmierung geht, bietet der Colour Maximite 2 noch mehr Möglichkeiten. Als ich bei eBay die Auktion eines CMM2 G2 V2 entdeckte musste ich sofort zuschlagen.

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Sonntag, Dezember 29th, 2024 CMM2 Keine Kommentare

Meine Infos zu SIEMENS Simatic S5

Hallo zusammen,

ich wollte kurz auf meinen neuen Unterblock hinweisen:

SIEMENS Simatic S5

Vielleicht gibt es den ein oder anderen, den so etwas interessiert 😉

LG, Manfred

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Dienstag, August 1st, 2023 Allgemein Keine Kommentare

Download-Links werden in Google Chrome geblockt

Hallo zusammen,

mehr und mehr berichten von Datei Download Problem in Chrome Browser. Ich konnte selbst hier im Blog keine Zip-Files mehr herunterladen. Scheinbar bricht der Download sofort ab.

Nach kurzer suche nach der Ursache bin ich im Netzt fündig geworden. Es gibt eine einfache Möglichkeit das Problem zu beheben, in dem man einen Wert in der Windows Registry ändert. Danach funktionieren wieder alle Downloads wie gewohnt.

  • Starte den Registrierungs Editor (REGEDIT) im Administrator-Modus
  • Navigiere zu folgendem Schlüssel:
    HKEY_LOCAL_MACHINE\
    SOFTWARE\
    Microsoft\
    Windows\
    CurrentVersion\
    Policies\
    Attachments
  • Ändere den Wert des Schlüssels ScanWithAntiVirus von 3 auf  1 ab
  • Beende den Registrierungs Editor

Das war schon alles. Danach wird der Download im Chrome Browser wieder funktionieren.

Hier ein YouTube Video, in dem das Problem und die Fehlerbehebung im Detail erklärt wird:
Fix Google Chrome Failed Download Error 😲 Lösen Sie Datei Download Problem in Chrome Browser

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (5 Bewertungen, Durchschnitt: 2,20 von 5)
Loading...

Freitag, Dezember 3rd, 2021 Allgemein Keine Kommentare