Jump to content

Arduino Firmata Interface in C#


Recommended Posts

Hallo zusammen.

 

Ich entwickele mir für den Hausgebrauch ein wenig Software zur Anbindung von externer Elektronik an 3D-Modellbahn Studio.

Basis ist das C# Plugin-Framework https://community.3d-modellbahn.de/forums/topic/662-c-client-beta von Mikel_60. Dazu kommt dann Arduino mit Firmata, in C# eingebunden durch https://github.com/SolidSoils/Arduino.

Damit kann man dann Teile von Anlagen (z. B. Ampeln, Schalter, usw.) durch externe Steuerungen (z. B. SPS, Mikrocontroller, usw.) auslesen und ansteuern und damit experimentieren.

Im Moment mache ich das komplett nur für mich und die Programme werden daher zunächst gezielt für einzelne Modellexperimente (z. B. eine spezielle Ampelkreuzungssituation, einen Lagerkran, usw.) ausgelegt.

Bei Interesse schreibe ich dazu gerne mehr, mach auch ein paar Bilder und stelle meine Ergebnisse ins Forum.

Link to post
Share on other sites

Hallo,

Willkommen im Forum!

Ich würde mich über Bilder und Berichte freuen, gerade weil ich als Entwickler immer daran interessiert bin, in welchen Situationen das Studio zum Einsatz kommt.

Viele Grüße,

Neo

Link to post
Share on other sites

@Neo

Vielen Dank. Ich poste dann gerne meine einzelnen Experimente.

@veraNer:

Um z. B. ein sonst langweiliges Ampelmodell, das 3D-Modellbahn Studio dann mit schön simuliertem komplexen Verkehr umgibt, durch eine SPS wie echte Hardware anzusteuern. Also z. B. so etwas http://www.viktorianer.de/info/ampel.html oder so etwas https://www.christiani.de/ausbildung/metall/ausbildungsinhalte/steuerungstechnik/sps-technik/erweiterungsmodul-ampelsteuerung.html in 3D-Modellbahn Studio, extern gesteuert über die auf einen Arduino herausgelegten Leitungen.

Link to post
Share on other sites

Ich möchte dir nicht den Spaß verderben, TalentRaspel, aber ein

vor einer Stunde schrieb TalentRaspel:

sonst langweiliges Ampelmodell,

kannst du auch mit der im Studio enthaltenen Ereignisverwaltung zum Leben erwecken.
Hier findest du ein Beispiel: 1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E
Dort findest du ein weiteres:  

 

Link to post
Share on other sites

@Goetz:

Keine Sorge, das verdirbt mir nicht den Spaß.

Die Experimente hatte ich sogar schon mal gesichtet. "1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E" hatte ich aber noch nicht gefunden, sondern nur als Video gesehen. Und ja, ich weiss, dass man das mit EV, Lua oder auch mit Plugins in allen möglichen Softwarevarianten prima steuern kann.

Es geht bei der Idee "Arduino Firmata Interface in C#" dann aber eben darum, 3D-Modellbahn Studio auch mal als Hardwaresimulator einzusetzen und dabei die weiteren Möglichkeiten auszuloten.

Die Experimente aus "Mini-Experimente mit V6" und vor allem "1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E" sind schön gemacht und tatsächlich auch prima für externe Steuerungsexperimente geeignet.

 

Edited by TalentRaspel
Link to post
Share on other sites

Ok, hier mal ein Bericht über ein erstes einfaches Experiment.

  • MBS-Seite: 3 x Kippschalter + 3 x Lampe (nicht anklickbar dank unsichtbarer Abdeckung)
  • Externe Seite: Arduino (Sketch: StandardFirmata) mit 3 x LED und 3 x Taster

Dawischen ein C# Plugin (verwendet https://github.com/SolidSoils/Arduino zur Firmata-Anbindung), das die MBS-Kippschalter auf die Arduino-LEDs und die Arduino-Taster auf die MBS-Lampen schaltet.

Macht zwar nicht sinnvolles, läuft aber prima und reicht mir als Proof-of-Concept. Jetzt kann ich an ein aufwändigeres Modell rangehen.

MBS.jpg

Arduino.jpg

Link to post
Share on other sites

Das nächste Experiment sollte dann echte Taster und Ampeln mit einzeln ansteuerbaren Lampen ermöglichen. Dank Andy und Bahnland konnte ich die Modellseite für Taster und Ampel recht schnell in den Griff bekommen.

 

Taster:

Funktionieren aktuell in MBS nur als animierte Triggertaster, die intern dann doch ein Schalter sind. Das wird vom Plugin dann in Richtung Hardware aber auf eine Impulsausgabe abgebildet.

Ampel:

Mit angepassten Ampelmodellen lassen sich die Lampen einzeln als Animationen ansteuern. Das Plugin bildet die Eingänge passend darauf ab.

 

D. h. die Anforderungen aus dem Experiment sind soweit machbar und ich kann die Lösungen jetzt weiter verwenden.

MBS.jpg

Link to post
Share on other sites

Mit den Lösungen aus den vorangegangegen Experimenten habe ich jetzt mal ein erstes Funktionsmodell umgesetzt. Dabei habe ich auch gleich das Plugin intern restrukturiert, so dass die Konfiguration der Ein- und Ausgänge nun generisch erfolgt.

Das Funktionsmodell orientiert sich an einem echten Modell (https://www.christiani.de/ausbildung/metall/ausbildungsinhalte/steuerungstechnik/sps-technik/erweiterungsmodul-ampelsteuerung.html) und stellt über das Plugin und den Firmata-Arduino alle Ein- und Ausgänge wie beim echten Modell zur Verfügung.

Die externe Ansteuerung erfolgt durch einen zweiten Arduino, in dem das eigentliche Steuerungsprogram läuft.

Also: MBS-Modell <-> TCP/IP <-> Plugin <-> USB <-> Firmata-Arduino <-> Drähte <-> Steuerungs-Arduino

 

Das Ziel meiner Experimente ist es, mit MBS Modelle zur externen Ansteuerung durch beliebige echte Steuerungshardware zu erstellen. D. h. eben nicht die Steuerung intern mit EV, Lua oder im Plugin, sondern von aussen aus der "echten Welt" über echte Ein- und Ausgänge. Also MBS mal als Hardware-Simulator.

Als nächstes klemme ich an das Modell jetzt mal ein paar echte Steuerungen dran ...

ampel1.jpg

ampel2.jpg

Arduino.jpg

Link to post
Share on other sites

Hier das Funktionsmodell mal mit einer vernüftigen Steuerung:

Ich habe auf die Schnelle mal eine einfache Arduino-Ampelsteuerung mit Anforderungstastern (https://starthardware.org/ampelanlage-mit-arduino/) ausgewählt und noch ein wenig überarbeitet. Die Autos haben jetzt grün, bis ein Fußgänger anfordert. Dann wird ein wenig rumgeschaltet und er darf rüber. Läuft prima. Natürlich kann man die Steuerung noch weiter verfeinern und auch die Phasen und deren Timing optimieren. Für jetzt ist es aber erst mal ok.

Als nächstes will ich dann an das Modell "Abbieger 05" (1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E) von Goetz rangehen und dort eine passend programmierte externe Steuerung anschliessen. Bei dem Modell fiel mir aber auf, dass die Verkehrssimulation noch ein paar Bugs hat. Also werde ich das als erstes mal überarbeiten und erst danach mit der externen Steuerung weiter machen.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...