Forum: PC-Programmierung Simulation eines Arduino in Verbindung mit bestehendem virtuellen Breadboard


von Maik V. (maik_vlk)


Lesenswert?

Guten Tag, ich möchte zu Lehrzwecken die Programmierung eines Arduino 
ohne reale Hardware ermöglichen. Natürlich werden jetzt einige fragen, 
warum ich keinen realen Arduino verwenden will.

Ich habe bereits eine bestehende Simulation, sozusagen ein virtuelles 
Breadboard, als C#-Anwendung mit circa 10 Eingängen und Ausgängen 
(Sensoren, Lichtschranken, Aktuatoren, Motoren, etc.). Wenn man diese 
Anwendung startet, sieht man ein 3D-Modell der mechanischen Teile und 
eine Tabelle der Ein- und Ausgänge, welche man per Mausklick einstellen 
und umschalten kann.

Jetzt soll diese Simulation aber nicht mehr per Hand gesteuert werden, 
sondern von einem virtuellen Arduino gesteuert werden, welcher den 
eigenen Arduino-Sketch ausführt.

Der Nutzer soll also sein Steuerungsprogramm in z. B. der Arduino-IDE 
oder einem Texteditor schreiben und dieses dann auf dem virtuellen 
Arduino ausführen können. Dieser soll wiederum über eine definierte 
Eingangs- und Ausgangsliste mit der bestehenden Simulation 
kommunizieren. Diese Kommunikation ist offen und kann von mir aus über 
IPC (so was wie Named Pipes) oder auch über Netzwerkprotokolle wie TCP 
erfolgen.

Ich bin schon seit einer Weile am Suchen und habe noch kein ähnliches 
Projekt gefunden, was mich eigentlich etwas gewundert hat. Ich weiß, 
dass ich mit QEMU AVR-basierte µC wie den ATmega2560 emulieren kann, 
aber ich habe überhaupt keinen Ansatz, wie ich damit dann kommunizieren 
könnte.

Beste Grüße

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)



Lesenswert?

Ob das geeignet wäre, weiß ich nicht. Aber zumindest ein Ansatz, was 
anders und mehr an Funktionen dabei sein sollte.

von Schlaumaier (Gast)


Lesenswert?

Dieter D. schrieb:
> Ob das geeignet wäre, weiß ich nicht. Aber zumindest ein Ansatz, was
> anders und mehr an Funktionen dabei sein sollte.

Schönes Bild aber leider 0 Infos dazu.  Ich brauche so was zwar nicht 
wirklich aber vielleicht wäre es auch für mich eine Überlegung so was zu 
nutzen, weil klicken geht einfacher als bauen.;)

Wäre ergo nett, wenn da mal ein Link zu den Prg. wäre, damit man sich 
über Kosten / Funktionsweisen etc. informieren kann.

Ich und der TO. ;)

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Schlaumaier schrieb:
> Wäre ergo nett, wenn da mal ein Link zu den Prg. wäre, damit man sich
> über Kosten / Funktionsweisen etc. informieren kann.

Anbei die Links:
https://sourceforge.net/projects/simulide/
https://www.simulide.com/p/home.html?m=1

von Schlaumaier (Gast)


Lesenswert?

Dieter D. schrieb:
> Anbei die Links:
> https://sourceforge.net/projects/simulide/
> https://www.simulide.com/p/home.html?m=1

Fein DANKE.  Dann kann ich mich ja mal schlau machen.

von Maik V. (maik_vlk)


Lesenswert?

Danke schon mal für die Antworten, ich habe etwas mit SimulIDE 
herumgespielt und das funktioniert eigentlich ganz gut. Ich konnte in 
der Arduino-IDE einen einfachen Sketch erstellen und dann die Firmware 
über Sketch > "Export compiled Binary" exportieren und in SimulIDE 
laden. Das hat dann auch relativ unkompliziert und auch schnell ("fast 
in Echtzeit") funktioniert. Keine Ahnung, warum ich das Programm selber 
nicht gefunden habe, danke für den Tipp!

Mein eigentliches Problem besteht trotzdem noch, ich müsste die Eingänge 
des Arduino mit einem externen Programm füttern und die entsprechend 
berechneten Ausgänge dann wieder lesen können. Da habe ich jetzt direkt 
keine Möglichkeit gefunden. Ich versuche mal den Autor der Software zu 
kontaktieren.

Die AVR-Simulation basiert offenbar auf simavr 
(https://github.com/buserror/simavr), wobei ich dachte, dass das nur 
unter Linux funktioniert. Ich brauche leider auch zwingend etwas, das 
auch unter Windows läuft. SimulIDE tut das ja, dann muss simavr ja 
auch laufen. Ich brauche den IDE-Teil des Simulators eigentlich nicht, 
da ich ja keine Komponenten an den Arduino anschließen will, sondern nur 
die Eingänge von einem externen Programm setzen will und anschließend 
lesen will. Die Belegung bleibt also immer gleich. Vielleicht gibt es ja 
eine Möglichkeit das mit simavr direkt umzusetzen.

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.