Projektidee "USB RetroArduInput"
Verfasst: Mi 24. Mär 2021, 08:42
Hallo zusammen,
sollte mir jetzt irgendwer die Idee klauen und schneller sein, nur zu
Mir kam ein sehr verwegener Gedanke: Alte Eingabegeräte werden nicht besser und nicht häufiger. USB-Geräte werden uns aber noch lange begleiten... Aber die alte Hardware wollen wir trotzdem benutzen und ggf. wenn sie ohne Eingabegerät kommt, auch mal testen können.
Na ja eigentlich fing die Idee schon etwas kleiner an: Mein großes Arbeitspferd hat eine Corsair K68 Tastatur (weil ich einfach die Cherry MX Red so liebe). Über einen USB Host Umschalter soll die aber auch bei Bedarf an meinem Legacy-Arbeitspferd (für Hardware, die an dem großen nicht mehr läuft) laufen. Das Legacy-Arbeitspferd hat zwar USB Tastatur-Support (wäre auch schlecht wenn nicht, bei einem Q6600), aber die Corsair Tastatur läuft, im Gegensatz zu anderen Billig-Tastaturen, nicht außerhalb von Windows. Heißt keine Möglichkeit, ins BIOS zu kommen oder im Dual Boot zwischen Win7 und XP zu wählen. PS/2 Tastatur zusätzlich geht, ist aber nervig, aktive USB zu PS/2 Converter gibt es (z.B. von Blackbox), aber die kosten ein Heiden Geld. Und Geld und Zeit investiere ich lieber initial einmal mehr, um dann in Masse für meinen Retro-Park günstiger wegzukommen (verwegene Idee: Alle Rechner via KVM am großen LCD, der Corsair Tastatur und der Logitech Maus).
Weil letztlich... ehe ich jetzt für fast 100 Euro pro Stück mal min. 3 Blackbox USB zu PS/2 Converter kaufe und dann für die XTs immer noch nix hab, oder für 30-40 Euro pro Unit Arduino-Krams und Teile, die es mir sogar ermöglichen, bis zu XTs und sogar auf Nicht-DOSen rüberzugehen, dann investiere ich die Arbeit lieber, und wenn mal irgendwann irgendwas sinnvolles rauskommt, teile ich es mit der Community. Außerdem habe ich, 15 Jahre nach meiner Diplomarbeit (auf einem Altera Cyclone II Entwicklerboard mit FPGA (VHDL) und Embedded C Entwicklung) endlich mal wieder Bock auf Programmieren.
Enter: USB-RetroArduInput. Die Idee war geboren.
Das USB Host Shield bedarf ja eines Uno oder Mega. Ich bin gleich in die Vollen gegangen und hab den Mega 2560 genommen. Dann lange Zeit Stagnation: Viele Dienstreisen (eigentlich tolles Projekt für Dienstreise, einen Arduino und meine Funktastatur könnte ich ja im Koffer verstauen, und die Entwicklungsumgebung ist auf meinem Laptop) und keine Zeit, ein Problem zu beheben: Es müssen noch drei Lötbrücken auf dem USB Host Shield gebrückt werden. Für alle interessierte: Hier steht die Lösung https://esp8266-notes.blogspot.com/2017 ... oards.html
Jetzt endlich: Die Lötbrücken sind gesetzt und der Arduino gibt mir mit dem Host Shield Beispielprogramm für Maus und Tastatur Mausbewegungen und Tasten-Scancodes über die USB-Serial Debugging-Schnittstelle aus.
Als nächsten Schritt kann ich also nun anfangen, Protokolle zu implementieren, frei verdrahtet auf den Pins zu testen und letztlich in ein weiteres PCB Shield zu gießen. Die Krönung wäre dann, wenn alles abgeschlossen ist, ein 3D-Druck-Gehäuse zu entwerfen. Aber bis dahin ist, wie ich meine Auslastung mit anderen Dingen sehe, 2022.
Aber was habe ich vor? Weil der Mega mir so viele Pins zur Verfügung stellt, inkl. Analog (PWM), habe ich gleich groß gedacht. Das Ding wird ein Interface-Monster!
Ports auf dem Arduino:
- Barrel Jack für Power
- USB Typ B für Power, Debug (ich gebe weiter Debug-Meldungen raus) und Software-Updates
Ports auf dem Host Shield:
- USB Typ A für eins oder mehrere Geräte (die Libraries unterstützen USB Hubs)
Ports auf dem Output Shield:
- PC-Kompatible Tastatur: 8-Pin DIN 270° - warum 8-Pin? Weil alles rein passt. 8-Pin DIN 270° ist Tandy 1000, außer beim SL, der hat 7,nur der mittlere Pin fehlt. Auch der 5-Pin 180° XT/AT passt und der lässt sich über einen mechanischen Adapter auf PS/2 anpassen. Somit lassen sich XT, AT/PS/2 und die verschiedenen Tandy 1000 auf einem Connector implementieren. Mittlerweile denke ich auch über Amiga 2000 (gleiches Pinout wie PC) nach.
- PS/2 Maus: 6-Pin Mini-DIN - selbsterklärend. Mal gucken, ob ich sogar Mausrad implementiert kriege, das Beispielprogramm gibt dafür keine Meldungen aus.
- Seriell: SubD 9 und ein Max232 zur Pegelkonvertierung - soll umschaltbar zwischen Mouse Systems und Microsoft werden
- Pulse Mouse: SubD 9 - Amiga und Atari Maus, die geben ja die Pulse von der Gabellichtschranke raus. Der Unterschied zwischen Atari und Amiga liegt wohl in zwei vertauschten Pins, die werde ich denke ich der Einfachheit halber über einen mechanischen Schalter drehen
- Digital Joystick: SubD 9 - Kompatibel zu Amiga, Atari, C64... Ich werde denke ich auch eine 1350 C64 "Joystick-Maus" Funktion einbauen, wo die Ausgabe von der Maus und nicht mehr vom Joystick bestimmt wird. Von der 1351 C64-Maus mit Proportional-Modus nehme ich Abstand, die scheint etwas aufwendiger zu programmieren zu sein.
- Analog Joystick: SubD 15 - die Analog-Signale generiere ich per PWM und glätte diese über Kondensatoren. Inkl. zuschaltbarer Begrenzung auf 3.3V (einige PCI Soundkarten hatten 3.3V Vref auf dem Joystick Port)
- evtl. (muss mich noch einlesen) Apple ADB - es gibt schon entsprechende Libraries für ADB Ausgabe, daher kann ich es auf Best Guess implementieren, aber nicht testen, da ich keine Mac Classic oder Vergleichbare habe. Vielleicht bereite ich es auch nur pintechnisch vor oder lasse es ganz weg.
Ziemlich verwegen, aber wenn ich erste vorzeigbare Resultate habe, geht das Ding in die Community und entwickelt dann hoffentlich eine gewisse Eigendynamik. Ich will zumindest mal das Easy Going Zeugs (PC-Tastaturen, Mäuse, Joysticks) am laufen haben und ein fertiges PCB für den "Dreiköpfigen Affen" (so habe ich das Shield getauft, hat zwar mehr als drei Anschlüsse, erlaubt aber drei Device-Typen). Zumindest habe ich schon mal ein Prototyp-Board, ein paar Transistoren und einen Max232 bestellt, um hoffentlich um Ostern erste Ausgaben testen zu können.
sollte mir jetzt irgendwer die Idee klauen und schneller sein, nur zu

Mir kam ein sehr verwegener Gedanke: Alte Eingabegeräte werden nicht besser und nicht häufiger. USB-Geräte werden uns aber noch lange begleiten... Aber die alte Hardware wollen wir trotzdem benutzen und ggf. wenn sie ohne Eingabegerät kommt, auch mal testen können.
Na ja eigentlich fing die Idee schon etwas kleiner an: Mein großes Arbeitspferd hat eine Corsair K68 Tastatur (weil ich einfach die Cherry MX Red so liebe). Über einen USB Host Umschalter soll die aber auch bei Bedarf an meinem Legacy-Arbeitspferd (für Hardware, die an dem großen nicht mehr läuft) laufen. Das Legacy-Arbeitspferd hat zwar USB Tastatur-Support (wäre auch schlecht wenn nicht, bei einem Q6600), aber die Corsair Tastatur läuft, im Gegensatz zu anderen Billig-Tastaturen, nicht außerhalb von Windows. Heißt keine Möglichkeit, ins BIOS zu kommen oder im Dual Boot zwischen Win7 und XP zu wählen. PS/2 Tastatur zusätzlich geht, ist aber nervig, aktive USB zu PS/2 Converter gibt es (z.B. von Blackbox), aber die kosten ein Heiden Geld. Und Geld und Zeit investiere ich lieber initial einmal mehr, um dann in Masse für meinen Retro-Park günstiger wegzukommen (verwegene Idee: Alle Rechner via KVM am großen LCD, der Corsair Tastatur und der Logitech Maus).
Weil letztlich... ehe ich jetzt für fast 100 Euro pro Stück mal min. 3 Blackbox USB zu PS/2 Converter kaufe und dann für die XTs immer noch nix hab, oder für 30-40 Euro pro Unit Arduino-Krams und Teile, die es mir sogar ermöglichen, bis zu XTs und sogar auf Nicht-DOSen rüberzugehen, dann investiere ich die Arbeit lieber, und wenn mal irgendwann irgendwas sinnvolles rauskommt, teile ich es mit der Community. Außerdem habe ich, 15 Jahre nach meiner Diplomarbeit (auf einem Altera Cyclone II Entwicklerboard mit FPGA (VHDL) und Embedded C Entwicklung) endlich mal wieder Bock auf Programmieren.
Enter: USB-RetroArduInput. Die Idee war geboren.
Das USB Host Shield bedarf ja eines Uno oder Mega. Ich bin gleich in die Vollen gegangen und hab den Mega 2560 genommen. Dann lange Zeit Stagnation: Viele Dienstreisen (eigentlich tolles Projekt für Dienstreise, einen Arduino und meine Funktastatur könnte ich ja im Koffer verstauen, und die Entwicklungsumgebung ist auf meinem Laptop) und keine Zeit, ein Problem zu beheben: Es müssen noch drei Lötbrücken auf dem USB Host Shield gebrückt werden. Für alle interessierte: Hier steht die Lösung https://esp8266-notes.blogspot.com/2017 ... oards.html
Jetzt endlich: Die Lötbrücken sind gesetzt und der Arduino gibt mir mit dem Host Shield Beispielprogramm für Maus und Tastatur Mausbewegungen und Tasten-Scancodes über die USB-Serial Debugging-Schnittstelle aus.
Als nächsten Schritt kann ich also nun anfangen, Protokolle zu implementieren, frei verdrahtet auf den Pins zu testen und letztlich in ein weiteres PCB Shield zu gießen. Die Krönung wäre dann, wenn alles abgeschlossen ist, ein 3D-Druck-Gehäuse zu entwerfen. Aber bis dahin ist, wie ich meine Auslastung mit anderen Dingen sehe, 2022.
Aber was habe ich vor? Weil der Mega mir so viele Pins zur Verfügung stellt, inkl. Analog (PWM), habe ich gleich groß gedacht. Das Ding wird ein Interface-Monster!
Ports auf dem Arduino:
- Barrel Jack für Power
- USB Typ B für Power, Debug (ich gebe weiter Debug-Meldungen raus) und Software-Updates
Ports auf dem Host Shield:
- USB Typ A für eins oder mehrere Geräte (die Libraries unterstützen USB Hubs)
Ports auf dem Output Shield:
- PC-Kompatible Tastatur: 8-Pin DIN 270° - warum 8-Pin? Weil alles rein passt. 8-Pin DIN 270° ist Tandy 1000, außer beim SL, der hat 7,nur der mittlere Pin fehlt. Auch der 5-Pin 180° XT/AT passt und der lässt sich über einen mechanischen Adapter auf PS/2 anpassen. Somit lassen sich XT, AT/PS/2 und die verschiedenen Tandy 1000 auf einem Connector implementieren. Mittlerweile denke ich auch über Amiga 2000 (gleiches Pinout wie PC) nach.
- PS/2 Maus: 6-Pin Mini-DIN - selbsterklärend. Mal gucken, ob ich sogar Mausrad implementiert kriege, das Beispielprogramm gibt dafür keine Meldungen aus.
- Seriell: SubD 9 und ein Max232 zur Pegelkonvertierung - soll umschaltbar zwischen Mouse Systems und Microsoft werden
- Pulse Mouse: SubD 9 - Amiga und Atari Maus, die geben ja die Pulse von der Gabellichtschranke raus. Der Unterschied zwischen Atari und Amiga liegt wohl in zwei vertauschten Pins, die werde ich denke ich der Einfachheit halber über einen mechanischen Schalter drehen
- Digital Joystick: SubD 9 - Kompatibel zu Amiga, Atari, C64... Ich werde denke ich auch eine 1350 C64 "Joystick-Maus" Funktion einbauen, wo die Ausgabe von der Maus und nicht mehr vom Joystick bestimmt wird. Von der 1351 C64-Maus mit Proportional-Modus nehme ich Abstand, die scheint etwas aufwendiger zu programmieren zu sein.
- Analog Joystick: SubD 15 - die Analog-Signale generiere ich per PWM und glätte diese über Kondensatoren. Inkl. zuschaltbarer Begrenzung auf 3.3V (einige PCI Soundkarten hatten 3.3V Vref auf dem Joystick Port)
- evtl. (muss mich noch einlesen) Apple ADB - es gibt schon entsprechende Libraries für ADB Ausgabe, daher kann ich es auf Best Guess implementieren, aber nicht testen, da ich keine Mac Classic oder Vergleichbare habe. Vielleicht bereite ich es auch nur pintechnisch vor oder lasse es ganz weg.
Ziemlich verwegen, aber wenn ich erste vorzeigbare Resultate habe, geht das Ding in die Community und entwickelt dann hoffentlich eine gewisse Eigendynamik. Ich will zumindest mal das Easy Going Zeugs (PC-Tastaturen, Mäuse, Joysticks) am laufen haben und ein fertiges PCB für den "Dreiköpfigen Affen" (so habe ich das Shield getauft, hat zwar mehr als drei Anschlüsse, erlaubt aber drei Device-Typen). Zumindest habe ich schon mal ein Prototyp-Board, ein paar Transistoren und einen Max232 bestellt, um hoffentlich um Ostern erste Ausgaben testen zu können.