Forum: Mikrocontroller und Digitale Elektronik Spaceball 4000 seriell=>USB: welcher µC? Tips?


von Richard W. (ewiger_anfaenger)



Lesenswert?

Moin!

Ist dieses Projekt machbar?

Die Idee ist, einen Spaceball 4000 
(http://spacemice.org/index.php?title=Spaceball_4000) von seriell auf 
USB umzubauen. Das Projekt sollte nicht allzu hohen Aufwand erfordern; 
ich will es klar unter €50,- halten. (Es konkurriert mit einer 
Rabattaktion, aber ich hab mehr Spaß am Basteln als am Kaufen - 
http://www.spacecontrol.de/3d-maus-rabattaktion-100-euro-rabatt-beim-tausch-einer-alten-3d-maus.html)

Weiter unten mehr Details der Hardware.


Der Plan, weil keine Möglichkeit zur Platinenerstellung vorhanden:
- Die vorhandene Platine soll weiter verwendet werden, wegen passender 
Form und vorhandenen Tastern, Steckern und Beeper.
- Alter Mikrocontroller, EEPROM und anderes Zeug werden entfernt und 
durch einen neuen µC mit Zubehör ersetzt.
- Die vorbestehenden Leiterbahnen werden entfernt oder zumindest 
unterbrochen; wo nötig werden neue Löcher gebohrt und das Ganze im 
Steckbrett-/Rattennest-Stil neu verkabelt. (Gottseidank verschwindet das 
alles dann in einem Gehäuse!)

Die Kernfrage: Welcher Mikrokontroller kommt in Frage bei folgenden 
Anforderungen:
- 13 x Eingang für Taster
- 1 x Ausgang für Beeper
- 5 x Ein/Ausgang für 6 LEDs (s.u.)
- 1 x Eingang (evtl. plus 1 x Ausgang) für 6 parallel geschaltete LDRs 
("LDR" ist Vermutung, s.u.)
- 4 Pins für USB
- Programmierbar, sich via USB als HID zu melden.
- Für USB/HID bereits vorhandene Source zur direkten oder modifizierten 
Verwendung (um den USB-Teil zu schreiben fehlt mir die Kompetenz und der 
Aufwand würde zu hoch).
- Programmierung direkt vom PC/Mac über USB, keine zusätzlichen 
Anschlußkabel, Docks, o.ä. notwendig
- Billige oder kostenlose Programmierumgebung für Mac oder Linux. Zur 
Not steht auch ein virtualisiertes Windows zur Verfügung, aber das ist 
etwas hakelig und könnte Probleme beim Durchreichen des USB-Ports 
machen.

Genial wäre etwas wie der BBC micro:bit 
(https://www.microbit.co.uk/device/pins), aber der hat zu wenige 
I/O-Pins. (Oder ich bin auf die ersten Inkompetenzbarriere gestoßen...). 
Und ob es fertigen USB/HID code gibt ist auch unklar. Preis wäre OK, und 
Weiterverwendung bei einem Scheitern des Projekts wäre ein Pluspunkt.



Die Hardware des Spaceball 4000 verdient einen Kniefall für den Aufbau 
des Sensors!
(Bild des Kerns: Michael Frey, Original und Lizenz unter 
https://commons.wikimedia.org/wiki/File:Spaceball_4000_FLX_-_Optical_Assembly.JPG)

Es gibt 6 numerierte Module (Miniplatinen) die auf den Flächen eines 
zentralen Würfels angeordnet sind. Der Würfel hat an den Ecken nach 
außen ragende Haltedorne. In Einbaulage steht der Würfel auf einer Ecke, 
d.h., es liegen alle Module 45° zur Unterlage des Spaceballs. Hier wird 
eine Umrechnung auf normale Raumachsen notwendig werden, aber das kommt 
später...

Jedes Modul hat eine LED, einen Schattengeber der federnd aus der 
Ruhelage gebogen werden kann und ein Sensormodul ohne Bezeichnung, ich 
vermute einen Photowiderstand (LDR).

Es liegen sich am Würfel jeweils gegenüber die Module mit den Nummern 2 
- 5, 3 - 6, 4 - 1.

Die 6 Module sind flexibel mit Leiterbahnen verbunden. Das Bild zeigt 
diese als Abwicklung von der Würfelform.

Alle LDRs sind parallel geschaltet (an Grün und Violett). An ihren 
Anschlüssen liegen 1807mV.

Je 3 LED hängen an einem gemeinsamen Pol, daher für 6 LED nur 5 
Anschlüsse:

       |  Rot | Schwarz
Blau   |  6   | 5
Orange |  2   | 1
Gelb   |  4   | 3

Jeder LED werden (mit billigem Multimeter gemessen) 118mV zur Verfügung 
gestellt. (Messung kann grob falsch sein wg. gepulster Ansteuerung?


Um diesen Sensorkern liegt eine kugelförmige innere Schale in der die 
Haltedorne des Kernwürfels festgehalten werden so dass dieser dadurch 
mit dem Gehäusekörper fest verbunden ist. Diese Innenschale ist auf 
Michael Freys Bild abgeknipst (nicht zerstörungsfrei zu öffnen). Die 
Schale hat Aussparungen an den Stellen an denen die biegsamen 
Schattenwerfer nach außen ragen.

Darum liegt die kugelförmige Außenschale, die nur durch die 
Schattenwerfer getragen wird. Wenn sie aus der Ruhelage bewegt wird 
biegt sie die Schattenwerfer aus den Lichtwegen LED-LDR.

Da die LEDs nicht optisch getrennt sind gehe ich davon aus dass sie 
zyklisch leuchten und der LDR-Wert im selben Takt abgefragt wird.



Auf der Platine liegen
- 13 Taster und 1 Beeper
- ein EEPROM
- ein PIC16C66 04/SP
- ein proprietärer(?) undokumentierter(?) schwarzer Käfer ("SPACETEC IMC 
ECLIPSE-1 0001")
- viel Kleinzeug.

Die Leitungen vom Sensor gehen alle zum ECLIPSE, drei Bahnen führen von 
diesem zum PIC16C66 (an dessen Pins RC2, RC4, RC7). Ich habe weder 
Kompetenz noch Geräte um diese Signale zu analysieren.


Ein neuer Mikrokontroller müsste also folgende Aufgaben erfüllen:
- die LEDs zyklisch ein/ausschalten,
- die LDR-Werte in Phase dazu auslesen und ggf. normalisieren,
- normalisierte Werte speichern,
- gespeicherte Werte in Drehung u/o Verschiebung der Raumachsen 
umrechnen und
- dies in USB-HID Signalen ausgeben.


Was meint Ihr:
Hab' ich was übersehen?
Was brauche ich für einen µC und was kommt da in Kosten in etwa 
zusammen?

Vorhanden sind Bastlergeist aber kein technisches Studium oder 
Ausbildung, Lötstation, Multimeter, Mac (bevorzugt), Linux (wenn muss), 
Windows (virtuell, möglichst zu vermeiden), Internet, Geduld und 
Darjeeling. Programmiererfahrung ist eher gering, aber man kann ja 
googeln und fragen. Trotzdem wären ein existierendes ähnliches Projekt 
zum Abkupfern ein groooßer Vorteil.   :-)

von Michael U. (amiga)


Lesenswert?

Hallo,

was übersehe ich hier? Das Teil hat doch scheinbare ine 
RS232-Schnittstelle als Anschluß, also USB-RS232-Adapter für 5 € 
dazwischen und fertig.

Wie die Treibersoftware dazu aussieht muß doch ohnehin geklärt werden 
oder ist evtl. schon bekannt.

Gruß aus Berlin
Michael

von Richard W. (ewiger_anfaenger)


Lesenswert?

Michael U. schrieb:

> was übersehe ich hier? Das Teil hat doch scheinbare ine
> RS232-Schnittstelle als Anschluß, also USB-RS232-Adapter für 5 €
> dazwischen und fertig.

Nein, leider nicht. Habs probiert. Auch in einschlägigen Foren ist so 
ziemlich jeder damit gescheitert, und der Hersteller deklariert es als 
inkompatibel. Bei den damals hohen Preisen müssten selbst teurere 
Adapterlösungen bekannt nachgefragt (und bekannt geworden) sein.

Im seriellen Terminal mit so einem Adapter kommt zB:


@1 Spaceball alive and well after a poweron reset.

@2 Firmware version 2.42 created on 24-Oct-1997.
KB@
.@`
K@@
.@@
K@D
.@D
K@@
.@@
K@B

Das ist die Einschaltsequenz, danach ist alles was mit "K" beginnt und 2 
Zeilen lang ist ein Tastendruck oder -loslassen.
Für die 3D-Sensorwerte bekomme ich überhaupt nichts, bei keiner 
Baudrate.


> Wie die Treibersoftware dazu aussieht muß doch ohnehin geklärt werden
> oder ist evtl. schon bekannt.

Kein Support für aktuelle OS. Wäre mir aber bei USB-HID ziemlich egal, 
das kann ich dann  selber belegen, zB am Mac mit USBOverdrive.

Danke für's Mitdenken!
RW

von mh (Gast)


Lesenswert?

Richard W. schrieb:
> - Für USB/HID bereits vorhandene Source zur direkten oder modifizierten
> Verwendung (um den USB-Teil zu schreiben fehlt mir die Kompetenz und der
> Aufwand würde zu hoch).

So ganz ohne Einarbeitung in den USB-HID-Kram wird's wohl nicht gehen. 
Zumindest einen Report Descriptor wirst Du selbst schreiben müssen...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn die Elektronik komplett ersetzt wird, könnte mit einem 
"MouseWarrior" möglicherweise was erreicht werden.

Das ist ein mit HID-Code vorprogrammierter µC, mit dem sich mausartige 
Eingabegeräte konstruieren lassen.

http://www.codemercs.com/de/maus

von ^.^ (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Wenn die Elektronik komplett ersetzt wird, könnte mit einem
> "MouseWarrior" möglicherweise was erreicht werden.
>
> Das ist ein mit HID-Code vorprogrammierter µC, mit dem sich mausartige
> Eingabegeräte konstruieren lassen.
>
> http://www.codemercs.com/de/maus
Du weist aber schon, das es sich hier um eine Maus handelt, die 3 
Rotations Achsen, 3 Translationsachsen und ein paar Knöpfe hat?

Da kommt man mit einem Standard Maustreiber nicht weit.

Ich vermute einmal dass da Softwareseitig unter anderem ein paar üble 
Dinge wie Low Level Zugriffe auf die Hardware gemacht wurde um über 
Pingewackle eine Art Kopierschutz zu erreichen.

Und da wird der RS232 / UART Übersetzer aussteigen.

Auch öfteres wechseln der Bautrate macht vielen RS232 / UART Übersetzern 
Probleme.

Wenn man die 3D Maus weiterhin für's CAD weiterverwenden will, dann wird 
man nicht darum herum kommen die Originaltreiber zu verwenden.
Oder man schreibt die Treiber komplett selbst.

Wenn man daraus nur einen Joystick / Maus machen will, dann kann man 
natürlich den Krieger einsetzen.

von Pic T. (pic)


Lesenswert?

Space ball protocol ist gut documentiert und normalerweise von Unix 
sowie mac nativ unterstützt. Also USB zu serial converter und fertig. 
Eventuell Protokoll mit Joystick Simulator deiner Wahl verheiraten.

von Richard W. (ewiger_anfaenger)


Lesenswert?

^.^ schrieb:
> Wenn man die 3D Maus weiterhin für's CAD weiterverwenden will, dann wird
> man nicht darum herum kommen die Originaltreiber zu verwenden.
> Oder man schreibt die Treiber komplett selbst.
>
> Wenn man daraus nur einen Joystick / Maus machen will, dann kann man
> natürlich den Krieger einsetzen.

Nur kurz, muß gleich weg:

Anspruchsvolle Treiber für CAD oä sind nicht angepeilt - ich ziele nur 
auf ein einfaches HID mit 6 Freiheitsgraden ohne direkten Nutzeinsatz, 
der findet sich dann schon...

Sehe gerade, die Teensies haben analog input 
(https://www.pjrc.com/teensy/adc.html), USB Raw HID 
(https://www.pjrc.com/teensy/rawhid.html), und erfüllen anscheinend die 
Anforderungen (hatte nicht die Zeit mich reinzulesen). Sogar 
Arduino-Kompatibilität -- da sollte es inspirierenden Code geben. :-)

Was sagen Leute mit Erfahrung dazu?

Gruß,
RW

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Für mein altes serielles Tablett habe ich ein Umschnurzel MC (Tiny85) 
mit V-USB als absolutem Pointer Device gemacht. Das meldet sich als Maus 
an, nur eben mit absoluten Koordinaten.

Ob du eher ein Pointer/Digitizer oder einen Joystick emulieren willst, 
musst du dir noch aussuchen, ansonsten wird V-USB da das richtige sein - 
läuft auf fast jedem AVR.
https://www.obdev.at/products/vusb/index.html
Den original MC lässt du drinnen und baust nur den Umschnurzler.

von Jim M. (turboj)


Lesenswert?

Richard W. schrieb:
> Sehe gerade, die Teensies haben analog input
> (https://www.pjrc.com/teensy/adc.html), USB Raw HID
> (https://www.pjrc.com/teensy/rawhid.html), und erfüllen anscheinend die
> Anforderungen (hatte nicht die Zeit mich reinzulesen). Sogar
> Arduino-Kompatibilität -- da sollte es inspirierenden Code geben. :-)
>
> Was sagen Leute mit Erfahrung dazu?

/me hat mit einem alten Teensy (noch mit AT90USB162) einem Sidewinder 3D 
Pro USB beigebracht. Das war noch der mit dem Digitalprotokoll auf der 
(analogen) Joystick Schnittstelle.

Mit serieller Schnittstelle (UART) dürfte das noch einfacher sein. Schau 
aber nach ob Du 5V brauchst. Einige moderne USB µCs sind nicht mehr 5V 
tolerant.

von Tehrasha (Gast)


Lesenswert?

[Entschuldigt für die Nutzung von Google Translate ]

Vielen Dank für meine Website in Ihrem ursprünglichen Post 
Referenzierung und für einen Spaceball zu zerlegen. Darf ich Ihre Bilder 
von der Optik auf meiner Website hinzufügen?

Es ist ein Arduino Basis RS232 -> USB_HID Projekt bereits in existance 
und Code zur Verfügung steht.

http://spacemice.org/index.php?title=Orbotron_9000

https://github.com/thingotron/orbotron_9000

Wenn dies Ihr Problem nicht lösen, ich hoffe, es hilft Ihnen in die 
richtige Richtung weisen.

Glückliches Bastelei!

--Tehrasha
http://spacemice.org

von Richard W. (ewiger_anfaenger)


Lesenswert?

Hi, Tehrasha,

as your website is English I'll switch the language.

Tehrasha schrieb:
> [Entschuldigt für die Nutzung von Google Translate ]
> Darf ich Ihre Bilder
> von der Optik auf meiner Website hinzufügen?

You may use my pictures on spacemice.org.
Please note that the image of the optical assembly is not by me, you'll 
find the original at 
https://commons.wikimedia.org/wiki/File:Spaceball_4000_FLX_-_Optical_Assembly.JPG 
under a CC licencse.

I have some more pictures but won't be able to upload them until Sat or 
Sun.


The Orbotron 9000 looks like a great fallback option if my attempt 
should fail. Is it correct that it is currently sold out but a newer 
version, capable for ANY serial device is coming up?

Greetings,
RW

von Richard W. (ewiger_anfaenger)


Lesenswert?

mh schrieb:

> So ganz ohne Einarbeitung in den USB-HID-Kram wird's wohl nicht gehen.
> Zumindest einen Report Descriptor wirst Du selbst schreiben müssen...

Dann beiss ich wohl in diesen Apfel, wenn sich nix Vorgefertigtes 
findet.



Rufus Τ. F. schrieb:
> ...könnte mit einem "MouseWarrior" möglicherweise was erreicht werden.

Habs mir angesehen; hat leider nicht genug Achsen für dieses Projekt, 
hab aber mal die Datenblätter gespeichert. Es gibt immer was zu tun...



Pic T. schrieb:
> ...USB zu serial converter und fertig.

Erfahrung sagt: nein.



Matthias S. schrieb:
> Ob du eher ein Pointer/Digitizer oder einen Joystick emulieren willst,
> musst du dir noch aussuchen, ansonsten wird V-USB da das richtige sein -
> läuft auf fast jedem AVR.

Werde mich mal einlesen.



Jim M. schrieb:
> /me hat mit einem alten Teensy (noch mit AT90USB162) einem Sidewinder 3D
> Pro USB beigebracht. Das war noch der mit dem Digitalprotokoll auf der
> (analogen) Joystick Schnittstelle.
>
> Mit serieller Schnittstelle (UART) dürfte das noch einfacher sein. Schau
> aber nach ob Du 5V brauchst. Einige moderne USB µCs sind nicht mehr 5V
> tolerant.

Das klingt sehr ermutigend. :-)


Danke an Euch alle für die Tips!
RW

von Richard W. (ewiger_anfaenger)



Lesenswert?

Korrektur zum OP:

Die vermuteten LDRs sind Photodioden.

Schade dass sich das oben nicht mehr editieren lässt.


@Tehrasha

Here are some more pictures. You may use them on spacemice.org.


RW

von Olaf (Gast)


Lesenswert?

> Und da wird der RS232 / UART Übersetzer aussteigen.

Ich denke ja auch das es wesentlich weniger Arbeit ist der Frage nach zu 
gehen wieso USB/RS232-Adapter nicht funktionieren.

Wenn ich mal raten darf dann wuerde ich sagen das Teil hat kein eigenes 
Netzteil und versorgt sich aus den Steuerleitungen einer RS232. Und da 
haben die USB/Adapter halt nur +/-6V oder weniger und ein alter PC hatte 
dort +/-12V und konnte vermutlich auch mehr Strom liefern.

Olaf

von Richard W. (ewiger_anfaenger)


Lesenswert?

Olaf schrieb:
> Ich denke ja auch das es wesentlich weniger Arbeit ist der Frage nach zu
> gehen wieso USB/RS232-Adapter nicht funktionieren.

Kann ich nur nicht-technisch einschätzen: Nach so langer Zeit 
(Supportende 2006) für ein Ding mit anfänglichem Preis von einigen 
Hundert USD) müßte doch irgendwo im WWW jemand seine Erfolgsmethode 
gepostet haben. Das muss aufwändiger sein. Das einzige kommerzielle 
Adapterprodukt braucht schon einen Arduino Leonardo.

> Wenn ich mal raten darf dann wuerde ich sagen das Teil hat kein eigenes
> Netzteil und versorgt sich aus den Steuerleitungen einer RS232. Und da
> haben die USB/Adapter halt nur +/-6V oder weniger und ein alter PC hatte
> dort +/-12V und konnte vermutlich auch mehr Strom liefern.

Orbotron und OrbShield kommen ohne zusätzliche Spannungsquelle aus. 
http://orbduino.sourceforge.net/building.html#inventory
http://spacemice.org/index.php?title=Orbotron_9000



Ich probier das jetzt selber. Besonders wo es
a) was zu lernen gibt und
b) für Arduino und Kompatible schon so leicht gemacht wird:
"I've extended the joystick firmware to present a much larger joystick 
to the host PC. The new firmware has:
    8 analog axis supporting values from -32768 to 32767.
    40 buttons
This should be handy for building large control systems like the flight 
controls for a flight simulator, Firefly console, Viper console, or 
other large control system." 
(http://hunt.net.nz/users/darran/weblog/15f92/Arduino_UNO_Big_Joystick_HID_firmware.html)

Damit wird der Aufwand doch schon überschaubar. HID descriptor ist auch 
schon drin.

Ein schönes Wochenende!
RW

von Mario & Luigi (Gast)


Lesenswert?

> Das einzige kommerzielle Adapterprodukt braucht schon einen Arduino

Kommerzielles Produkt und Arduino in einem Satz.

Das jetzt zu kommentieren spar ich mir mal.

von Aglio & Olio (Gast)


Lesenswert?

Mario & Luigi schrieb:
> Kommerzielles Produkt und Arduino in einem Satz.
>
> Das jetzt zu kommentieren spar ich mir mal.

Troll.

https://www.arduino.cc/en/Main/FAQ

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.