Lösung für Eingaben über USB - neuer Arduino Leonardo

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Antworten
Nachricht
Autor
Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Lösung für Eingaben über USB - neuer Arduino Leonardo

#1 Beitrag von Arne aus dem Norden »

Ich habe vor ein paar Tagen meinen neuen Arduino Leonardo erhalten.
Eigentlich hatte ich bereits einen Uno und einen Mega für den Betrieb der Leuchmelder und Anzeigen, allerdings fehlte mir (als Programmier-Laie) trotzdem noch eine elegante Möglichkeit für Eingaben.

Bild

Der neue Leonardo bietet da nun (für ab ca. 19 Euro) die Möglichkeit, als USB HID zu fungieren. Mit einfachen Befehlen ist die Simulation von Maus, Tastatur oder Joystick nun auch für einen Arduino kein Problem mehr. Er verhält sich -auf Wunsch- genau wie eine normale Tastatur oder andere USB-Geräte. Mit 20 I/O-Ports, (von denen 6 analog für z.B. Potis genutzt werden können). Ev. ist das ja für den einen oder anderen hier eine Alternative für andere (manchmal etwas umständlich zu beschaffende) Joystick Controller wie z.B. den Leobodnar.

Ich konnte jedenfalls schon nach wenigen Minuten mit vier Tastern eine kleine Lösung schaffen, mit der sich die PZB und Sifa in Zusi 2 und 3 recht problemlos bedienen lassen.

Bild

Die Tasten müssen noch entprellt werden und für Schalter statt Taster muß man auch noch eine kleine Lösung suchen.
Grundsätzlich habe ich die Keyboard-Funktion so ansprechen können:

Code: Alles auswählen

int buttonStateSifa = 0;
int buttonStateWach = 0;

void setup()
{      
  pinMode(2, INPUT);
  pinMode(5, INPUT);
  Keyboard.begin();  
}

void loop()
{
  buttonStateSifa = digitalRead(5);
  if (buttonStateSifa == HIGH)
    {
    Keyboard.press(115);
    delay(100);
    Keyboard.releaseAll();
    }
 
  buttonStateWach = digitalRead(2);
  if (buttonStateWach == HIGH)
    {
    Keyboard.press(KEY_RETURN);
    delay(100);
    Keyboard.releaseAll();
    }
}
ASCII 115 sende ich für ein "s" für z.B. Sifa und KEY_RETURN für die Entertaste (z.B. PZB Wachsam). Arduino IDE 1.0.1 ist übrigens vorraussetzung für den Leonardo.

Ein Video zum Leonardo allgmein gibts noch hier http://www.heise.de/newsticker/meldung/ ... 50563.html
oder Infos unter http://arduino.cc/en/Main/ArduinoBoardLeonardo.

Bestellen kann man sich das Ding z.B. bei http://www.watterott.com/de/Arduino-Leonardo
Zuletzt geändert von Arne aus dem Norden am 20.08.2012 11:41:30, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
nonesense
Beiträge: 506
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#2 Beitrag von nonesense »

Hallo!

Das finde ich ja klasse, dass die Arduinos auch bei Fahrpultbauern ankommen!
Lobenswert finde ich auch, wie du hier eine sehr viel kostengünstigere Lösung aufzeigst, als es mit dem Leo-Bodnar der Fall wäre.
So eine Lösung ist nicht nur günstiger, sie ist auch viel flexibler, insbesondere was den Einsatz auch unter anderen Simulatoren betrifft, die den Einsatz von Fahrpulten eigentlich nicht zulassen (MSTS und co.).

Das schöne an so einem Arduino ist ja, dass man, wenn man mehr Anschlüsse braucht, ihn problemlos z.B. mit I²C erweitern kann.

Hast du auch vor eine Ausgabe (Leuchtmelder) hierüber zu realisieren?

Weiter so!

Gruß
Jens

Benutzeravatar
Thomas U.
Beiträge: 3289
Registriert: 15.03.2004 16:39:15
Wohnort: Gelsenkirchen

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#3 Beitrag von Thomas U. »

Das wäre wirklich eine interessante Variante und vor allem einfacher als mit einem normalen Arduino. Mal drüber nachdenken.

Das heißt also, mit dem Ding kann man über die analogen Eingänge ganz einfach die Achsen simulieren und dann per Fahrpult-Software verwerten?
E-Mail: ThomasU@hotmail.de" (gleichzeitig MSN, so er denn funktioniert) oder mansg240h@web.de"

Benutzeravatar
nonesense
Beiträge: 506
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#4 Beitrag von nonesense »

Thomas U. hat geschrieben: Das heißt also, mit dem Ding kann man über die analogen Eingänge ganz einfach die Achsen simulieren und dann per Fahrpult-Software verwerten?
Du kannst damit alles machen, was du mit einem Joystick, einer Maus, oder einer Tastatur machen könntest. Nur alles gleichzeitig und über einen einzigen USB-Anschluss.

...Und ganz nebenbei halt auch die Ausgabe. (Zeiger, LMs)

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#5 Beitrag von Arne aus dem Norden »

Hi,
nonesense hat geschrieben:Das schöne an so einem Arduino ist ja, dass man, wenn man mehr Anschlüsse braucht, ihn problemlos z.B. mit I²C erweitern kann.
ja, oder noch etwas warten. Vermutlich wird auch der neue Arduino Due 2012 - wenn er dann kommt - ähnliche Funktionalität wie der Leonardo haben, allerdings mit Anschlüssen von der Menge wie der Mega. Aber ich überlege auch, den vorhandenen Mega einfach mit dem Leonardo zu koppeln.
nonesense hat geschrieben:Hast du auch vor eine Ausgabe (Leuchtmelder) hierüber zu realisieren?
Jain. Bezogen rein auf den Leonardo wäre das ja wegen der wenigen Ports Quatsch.
Die Ausgänge (und wohl auch die Eingänge die nicht mehr auf den Leo passen) wird der Mega managen. Das haben wir ja im Thread "Ausgänge" schon diskutiert. Ich bin da ja sehr froh, das du Jens da schon Beispiele gepostet hast in Verbindung mit dem .NET Programm vom A. Karg.
Leider läuft das ja nur noch nicht ganz rund bei mir in Verbindung mit Zusi-Display Demo... :-(

Gruß, Arne
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#6 Beitrag von Arne aus dem Norden »

Thomas U. hat geschrieben:Das heißt also, mit dem Ding kann man über die analogen Eingänge ganz einfach die Achsen simulieren und dann per Fahrpult-Software verwerten?
Ich würde aber für komplexere Geschichten als reine Ein/Aus Schalter an was mit Rückmeldung über TCP denken.
Das müßte mit dem im Thread "Ausgänge" geposteten Script schon irgendwie gehen.
Also der Leo drückt solange Taste 8 oder 2 für Fahrstufe rauf oder runter, bis der über den TCP-Server gemeldete Wert mit dem von der Fahrschalterlogik erfassten Fahrstufe übereinstimmt...
Gleiches für Potiwerte von Bremsen etc.

Das geht dann nicht mehr mit jeder Fahrpult-Software, wäre aber verlässlicher.

Gruß, Arne
Zuletzt geändert von Arne aus dem Norden am 21.08.2012 09:17:34, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Thomas U.
Beiträge: 3289
Registriert: 15.03.2004 16:39:15
Wohnort: Gelsenkirchen

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#7 Beitrag von Thomas U. »

nonesense hat geschrieben:Du kannst damit alles machen, was du mit einem Joystick, einer Maus, oder einer Tastatur machen könntest. Nur alles gleichzeitig und über einen einzigen USB-Anschluss.

...Und ganz nebenbei halt auch die Ausgabe. (Zeiger, LMs)
Danke, mehr wollte ich nicht wissen :D Dann werde ich das Ding in den nächsten Tagen wohl mal ordern...

Auf eine Ausgabe werde ich aber wohl verzichten, mir reicht ein reines Steuergerät.
E-Mail: ThomasU@hotmail.de" (gleichzeitig MSN, so er denn funktioniert) oder mansg240h@web.de"

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33448
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#8 Beitrag von Carsten Hölscher »

Arne, in Zusi 3 kann man auch eine Tastenstellung per TCP vorgeben, so dass es eigentlich kein Risiko gibt, dass man nicht in die richtige Stellung schaltet.

Carsten

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#9 Beitrag von Arne aus dem Norden »

Carsten Hölscher hat geschrieben:Arne, in Zusi 3 kann man auch eine Tastenstellung per TCP vorgeben, so dass es eigentlich kein Risiko gibt, dass man nicht in die richtige Stellung schaltet.
Carsten
Hallo Carsten,

ja, ich hab davon schon gelesen.
Aber ich fürchte, das es auch dafür wieder einiger Kenntnisse in .NET braucht um das irgendwie an den Server zu übermitteln. Ich bin ja als jahrzehntelanger Apple-User überhaupt nur wegen Zusi wieder mit einem PC am basteln und in manchen Dingen (wie .NET) leider aus dem Tal der völlig Ahnungslosen...
Deswegen bin ich auch sehr dankbar für solche Beispiele wie nonsense sie schon unter dem Thema "Ausgänge" veröffentlicht hat oder für solche Lösungen wie der Leo sie nun bietet.

Gruß, Arne
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Sebastian N.
Beiträge: 419
Registriert: 07.10.2011 06:24:53
Kontaktdaten:

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#10 Beitrag von Sebastian N. »

Eine super Sache, allerdings sind 20 Ports wie du bereits erwähnt hast, für eine umfassende Dateinein/-ausgabe bei einem Fahrpult zu wenig.

Gibt es Windows-seitig für Joystick eigentlich eine Begrenzung an Tasten? Ich schätze mit 2 solcher Platinen sollte man ansonsten so zeimlich alles ansteuern können was man möchte.

Benutzeravatar
nonesense
Beiträge: 506
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#11 Beitrag von nonesense »

Sebastian N. hat geschrieben:Eine super Sache, allerdings sind 20 Ports wie du bereits erwähnt hast, für eine umfassende Dateinein/-ausgabe bei einem Fahrpult zu wenig.
(...)
Ich schätze mit 2 solcher Platinen sollte man ansonsten so zeimlich alles ansteuern können was man möchte.
Du kannst viel gezielter das Gerät erweitern. Es gibt Massig I²C-Bausteine, die Preislich weit unter 5 Euro liegen, die man direckt an dem Arduino betreiben kann.

Z.B. PCF8574 (8 universelle digitale Ein-/Ausgänge) oder
PCF8591 (Analog-Digitalwandler und umgekehrt.)
PCA9531 (LED Treiber für 8 LEDs mit Dimmfunktion)

Sich 2 Arduinos zu bestellen wäre wirklich nur für jemanden, der sich so garnichts zutraut.

Gruß
Jens

Edit: Links korrigiert
Zuletzt geändert von nonesense am 26.08.2012 12:09:06, insgesamt 2-mal geändert.

Benutzeravatar
Sebastian N.
Beiträge: 419
Registriert: 07.10.2011 06:24:53
Kontaktdaten:

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#12 Beitrag von Sebastian N. »

Stimmt auch wieder, hab ich sogar in der Schule gelernt :O
Werde mir vielleicht so ein Ding bestellen, man kann ja kaum etwas falsch machen damit.
Zuletzt geändert von Sebastian N. am 25.08.2012 20:40:24, insgesamt 1-mal geändert.

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Was total nervt (Frage zum Leonardo unter XP)

#13 Beitrag von Arne aus dem Norden »

Moin,

ich hab da mal ne Frage zum Vehalten des Arduino Leonardo an Win XP (ob das bei anderen Windows auch so ist weiß ich nicht, ich hab nur XPs).
Absolut jedesmal, wenn ich das Dingens an den Rechner stecke geht so ein Windows-Installations-Assistenten Fenster auf wo man gefragt / Informiert wird, das irgendein Treiber geladen werden soll.
Dann kann man wählen, ob runterladen, automatisch suchen oder aus vorgebener Quelle.

Egal was ich mache, Treiber installieren oder wegklicken: das Ding geht nach jedem weiteren Anschliessen wieder auf.

Der Treiber ist bestimmt schon 15x aus der aktuellen Arduino IDE 1.0x installiert.
Am schlimmsten ist dabei, das es nicht einmal beim hochfahren des Rechners passiert, sondern bei jedem Reset des Leos. Das Dings wechselt ja systembedingt bei jeder Neuanmeldung des COM-Port und jedesmal startet wieder dieser Assistent von XP.
Weiß jemand, ob man das unter XP irgendwie abstellen kann??
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#14 Beitrag von Arne aus dem Norden »

Update - ich habe eben nochmal genauer hingeschaut.
Wenn man den Treiber unter dem Gerätemanager / COM-Port / Eigenschaften aufruft, "Aktualisieren" wählt und NICHT suchen im Arduino Ordner sondern den Treiber aus Liste auswählen bekommt man bei mir zwei Versionen angeboten:
Version 1.0.0 von 2013 und 5.16 von 2007(!).
Wenn ich jetzt die 5er Version wähle ist der Leo anschließend unter COM6 anwesend und ansprechbar und es gibt keine Probleme beim einstecken mehr.

Vielleicht wurde von meinem System immer Version 1 gewählt durch die falsche, niedrigere Datierung des 5er Treibers, keine Ahnung.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Lösung für Eingaben über USB - neuer Arduino Leonardo

#15 Beitrag von Arne aus dem Norden »

So, jetzt mal ein bißchen praktische Erfahrung mit dem Leonardo nach dem das Ding gut ein Jahr nur auf Halde lag:

vorsorglich hatte ich mir bereits ein paar "Expansion Boards" für die Arduinos gebastelt, um den Anschluß der alten Bahnteile zu erleichtern. Ich weiß, solche "Screw Shields" gibts auch fertig bei eBay, aber ich habe gleich ein paar µC zur Entprellung und LEDs zur Kontrolle mit draufgeschraubt. Das macht die Programmierung übersichtlicher und man hat schon vor dem Arduino ein sauberes Signal.

Bild

Der BBC-Fahrschalter hat ja die bekannte Logik, ich habe zur Ermittlung der Fahrstufe nur die ersten 6 (7 mit Schnell-Aus) Kontakte genommen. Außerdem werden der Fahrtrichtungswender, Schnell-Aus mit Nullstellungszwang und der SiFa-Schalter unterstützt.

Die Fahrstufe wird aus den Nockenschalterstellungen ausgelesen, mit der letzten Stufe davor verglichen und eine entsprechende Anzahl an Tastendrücken Taste "8" oder "2" gesendet für auf oder ab. Für SiFa wird ein "S", für die Fahrrichtung ein "V" oder "R" und für Schnell-Aus eine "5" geschickt. ACHTUNG, nicht die Tasten von der Zehnertastatur. ZuSi muß bei Eingaben entsprechend geändert werden.

Das ganze funktioniert ganz zuverlässig, nur ist bei langsamen drehen des Fahrschalters zwischen zwei Fahrstufen mitunter eine mehrdeutige Anzahl an Kontakten geschaltet (einige öffnen noch, andere sind schon geschlossen).
Momentan habe ich mir da erstmal mit einem Delay von 100ms zur Signalberuhigung beholfen, eine zusätzliche Prüfbedingung die nur Werteveränderungen von genau + oder - einer Fahrstufe akzeptiert könnte vielleicht noch besser sein (weil weniger verzögertes Ansprechen). Muß ich ich nochmal testen...

Link zum Video: https://vimeo.com/76206197
Bild

Die Arduino-Datei gibt es hier als Zip: http://www.ki.tng.de/~oellermann/zusi/Fahrschalter.zip
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Antworten