Mit Arduino über USB Uhrenbeweger steuern

Hallo,
ich habe einen Uhrenbeweger, bei dem mir die Möglichkeiten der Bewegungsintervalle nicht ausreicht. Der Beweger hat auf der Rückseite einen Mini-B USB-Steckplatz, über den er per Software eingestellt werden kann. Mit der Software kann auch die Funktion getestet werden, es gibt einen Button um die Verschiedenen Drehrichtungen zu testen.
Meine Überlegung war nun, eine Arduino-Platine mit einem Mini-B-USB-Stecker versehen und hinten an den Beweger stecken. Ich würde mich dann informieren, wie man die Motoren ansteuern kann und ein kleines Programm dafür schreiben, das dann auf dem Arduino-Board abläuft und den Beweger nach meinen Vorstellungen steuert.

Was denkt ihr, lässt sich das mit Arduino so lösen?

Für Tipps wäre ich dankbar!

hi,

auf keinem fall mit uno oder mega, das müßte ein leonardo oder konsorten sein. einer von denen, bei denen man eine tastatur anstecken kann.

gruß stefan

Hallo,

bist Du sicher, das der Port zum Steuern da ist und nicht nur zum Akku aufladen oder so?

Gruß,
Ralf

[Edit:] Hab's gerade gegoogled - es gibt ja tatsächlich solche Teile mit USB-Steuerung. Ich bin immer wieder platt, was es alles gibt...

Hallo,
es müsste keine Tastatur dran, ich habs mir so gedacht, dass man es zum konfigurieren über die usb-Schnittstelle an den pc anschliesst.
wenn ich rausbekomm, wie die Steuerung des Bewegers angesteuert wird, ginge es theoretisch auch über ein shell-script.
Was noch möglich sein sollte, dass eine Uhr darauf läuft und das Board über eine Batterie betrieben wird.

Der Beweger ist folgender: SwissKubik Masterbox
Der Port ist definitiv zum Einstellen, wie gesagt, ich hab das Teil hier laufen.

Eisebaer:
auf keinem fall mit uno oder mega, das müßte ein leonardo oder konsorten sein. einer von denen, bei denen man eine tastatur anstecken kann.

Die gewünschte Funktion wäre ein USB-Host. Und damit kann auch der Leonardo nicht aufwarten. Einem Arduino-Einsteiger ist die Verwendung von entsprechenden Host-Shields bzw. die Nutzung des Arduino Mega ADK, des Due oder des Yun jedoch nicht anzuraten. Da ist nach meiner Einschätzung schon ein bisschen mehr Einarbeitung in die Materie nötig.

Ich vermute der Kollege Eisebaer hat nicht auf den Leonardo verwiesen, damit Du eine Tastatur einstecken kannst, sondern weil der Leonardo eine Tastatur oder eine Maus emulieren kann. Das können die meisten anderen Arduinos nicht. Er dachte dann wohl, Du könntest Gebrauch von dieser Fähigkeit machen und diese auf Deinen Beweger adaptieren.

Gruß,
Ralf

hi,

ja, ralf, absolut richtig. da hab' ich eindeutig etwas falsch verstanden. jetzt beim nachlesen habe ich erst kapiert, was der leonardo macht, ich hab nur aufgrund mancher postings hier geglaubt, der leonardo wäre ein host.

mea culpa, und tut mir leid, nahemoth, für die falsche info.
stefan

PS.: wenn's so weitergeht, hab' ich bald eine fehlerquote wie uwe :fearful:

Hm, also denkt ihr nicht, dass es möglich ist, mit einem Arduino eine Script laufen zu lassen, das über USB an ein angeschlossenes Gerät zu bestimmten Zeiten bestimmte Signale sendet?

Eisebaer:
da hab' ich eindeutig etwas falsch verstanden.

Mach Dir nichts draus, ich bin auch manchmal in den Erbsen und pflück Bohnen. Kann ja auch am Alter liegen 8)

Gruß,
Ralf

nahemoth:
Hm, also denkt ihr nicht, dass es möglich ist, mit einem Arduino eine Script laufen zu lassen, das über USB an ein angeschlossenes Gerät zu bestimmten Zeiten bestimmte Signale sendet?

Möglich sollte es sein. Habe es selber aber noch nicht getestet. Bei USB kommt an Pin 1 5V und Pin 4 GND. Wobei vermutlich bei deinem Fall Pin 1 sogar wegfallen kann.

Die Datenleitungen liegen auf 3 (+) und 4(-), hierbei müsstest du dann vermutlich die Baudrate wissen. Pin 3 und 4 müssten dem Tx und Rx entsprehen. Bitte korrigieren falls ich falsch liege.

Das Problem, was nun sein wird, dass ich dir nicht sagen kann, was das Gerät auf der Gegenseite genau für Befehle haben möchte.

USB funktioniert nicht wie eine UART-Schnittstelle, da gibt es kein RX und TX. An D+ und D- liegt ein differentiellen Signal an, der Signalweg ist bidirektional.

lässt sich da nicht der vorhandene usb-port verwenden?
Die benötigten Signale muss ich noch herausbekommen.

Eisebaer:
PS.: wenn’s so weitergeht, hab’ ich bald eine fehlerquote wie uwe :fearful:

absolut gesehen oder perzentuell?

wär’s absolut, wär ich schon stolz, uwe…

nahemoth:
lässt sich da nicht der vorhandene usb-port verwenden? Die benötigten Signale muss ich noch herausbekommen.

Kommt drauf an was da an Signalen erwartet wird.

Der Uno/Mega hat keine richtige USB Schnittschnelle sondern bildet nur mit einem extra Prozessor eine serielle Schnittstelle nach. Kann natürlich gut sein, dass die Uhr der Einfachheit halber auch so funktioniert.

nahemoth:
Was denkt ihr, lässt sich das mit Arduino so lösen?

Für Tipps wäre ich dankbar!

Wenn Du das Teil mit seiner USB-Buchse am Computer ansteckst:
Bekommt der Computer beim Anstecken dann einen zusätzlichen COM-Port?
Zeigt der Windows-Gerätemanager etwas an, das sich an der Geräteausstattung des PCs ändert?

Oder kann man an der Software erkennen, ob sie über COM-Port oder auf anderem Wege kommuniziert?

dmesg unter Linux spuckt mir folgnedes aus:

[  153.428016] usb 5-1: new full-speed USB device number 2 using uhci_hcd
[  153.674036] usb 5-1: New USB device found, idVendor=1234, idProduct=1234
[  153.674039] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  153.674042] usb 5-1: Product: SWISS KUBIK
[  153.674044] usb 5-1: Manufacturer: SWISS KUBIK
[  153.681312] generic-usb 0003:1234:1234.0003: hiddev0,hidraw2: USB HID v1.11 Device [SWISS KUBIK SWISS KUBIK] on usb-0000:00:1a.2-1/input0

Bei Windows sehe ich am Gerätemanager nichts was darauf hindeutet. In der Software taucht das Gerät dann aber auf.

USB HID v1.11 Device

Also ist Dein Uhrenbeweger am USB ein "HID Device".

Mir fällt dazu überhaupt nichts ein, wie man die Kommunikation eines unbekannten HID Devices hacken kann, wenn man null Dokumentation hat und als einziges eine Windows-Software, von der man weiß, dass sie eine Kommunikation zum Gerät aufbauen kann.