Kann ich für Arduino programmieren, ohne ein echtes Board zu haben?

205

Ich möchte mit der Entwicklung einiger grundlegender Arduino-Projekte beginnen, aber ich besitze noch kein Arduino-Board. Gibt es eine Möglichkeit, meinen Code zu schreiben und ihn mit einem Desktop-Computer zu emulieren / testen, sodass ich nach dem Eintreffen meines Boards nur noch mein Projekt hochladen und darauf ausführen muss?

totymedli
quelle
1
Ich bin auch interessiert, haben Sie eine gefunden, die gut mit der Arduino IDE funktioniert ? Das heißt, die IDE erkennt, dass es sich um eine Platine mit all ihren Funktionen handelt.
Rraallvv

Antworten:

128

Es gibt eine ganze Reihe von Arduino-Simulatoren, viele davon kostenlos und einige kostenpflichtige Produkte.

  • Die CodeBlocks Arduino-Entwicklungsumgebung enthält einen kostenlosen Arduino-Simulator, der sich noch in der Entwicklung befindet, aber funktionsfähig ist.
  • Simuino simuliert die Arduino Uno und Mega Pins - kein hübsch aussehender realistischer Simulator, aber es funktioniert.
  • Der auf Python basierende Arduino Simulator ist eine weitere Option, die gut mit der offiziellen IDE zusammenarbeitet
  • Virtronics Simulator für Arduino sieht vielversprechend aus, aber ich verstehe nicht, warum ich 14,99 USD dafür bezahlen würde, wenn ich einen oder mehrere tatsächliche Arduino-Klone für diesen Preis kaufen könnte

Viele andere Arduino-Simulatoren sind da draußen, wenn Sie suchen, und es werden ständig neue angekündigt, sogar Crowdfunding.

Anindo Ghosh
quelle
10
Als Hinweis: Dies sind keine Emulatoren, sondern Simulatoren . Der wichtigste Unterschied besteht darin, dass der Code nicht auf einer virtuellen AVR-Maschine ausgeführt wird (wie bei qemu ), sondern die Arduino-Funktionen an systemeigenen Code gebunden werden. Grundsätzlich können sie also keine nativen AVR-Inhalte ausführen, und das Register- / Timer-Verhalten ist nicht dasselbe wie bei echter AVR-Hardware. Sehen Sie den Unterschied, der in dieser Antwort gut erklärt wird . Es ist jedoch theoretisch möglich, Arduino Due-Code mit qemu zu emulieren .
Zmo
5
Sie "wissen nicht, warum [einer] 14,99 USD dafür bezahlen sollte, wenn [einer] einen oder mehrere tatsächliche Arduino-Klone für diesen Preis kaufen könnte"? Ich kann Ihnen sagen, warum: weil die Hardware keinen eingebauten Debugger mit den Funktionen hat, die von einem Simulator bereitgestellt werden können.
R. Martinho Fernandes
8
Der Arduino Simulator hat mein Interesse geweckt, scheint aber leider keine Dateien auf der SourceForge-Site zu haben. Vermisse ich etwas oder ist es veraltet, seit Sie Ihre Antwort geschrieben haben?
Greenonline
Wie im obigen Kommentar erwähnt, befinden sich keine Dateien auf der Quell-Forge-Site des Arduino-Simulators. Gibt es eine Website dafür oder gibt es einen anderen Simulator, der unter Mac mit offizieller IDE gut funktioniert?
Gordanvij
4
Simuino ist schrecklich, unprofessionell und nutzlos. Sie haben keine Ahnung, wie sie codieren sollen. Arduino Simulator hat keine Veröffentlichungen. CodeBlocks ist nur für Windows. Simulator für Arduino ist nicht Open Source.
Dhchdhd
81

Ich benutze dafür gerne circuits.io aka TinkerCAD .

Es ist Cloud-basiert und hat einige nette Funktionen, einschließlich PCB-Design und Zusammenarbeit.

IMO die Arduino-Simulation und -Fähigkeit ist beeindruckend und intuitiv.

akellyirl
quelle
3
Es ist sehr schön und sauber und die grundlegende Funktionalität ist wirklich beeindruckend, einfach zu bedienen und leistungsstark. Viele gängige Teile (einschließlich LCD- und Temperatursensoren) werden jedoch noch nicht unterstützt. Ich bezweifle, dass Sie in dieser Phase alles andere als sehr einfache Designs testen können. Ich hoffe, dass dies mit der Zeit besser wird.
Suma
Ich habe es schnell ausprobiert und fand es für ein kostenloses Produkt sehr beeindruckend. Ich kenne die Einschränkungen in Bezug auf den Simulationsrealismus nicht, aber der Editor ist sehr freundlich und platziert einfach eine LED mit dem richtigen Pin und einer blinkenden Schleife in den automatisch erstellten Code des richtigen Slots!
Heltonbiker
Selbst ich würde 123d wählen, aber ich beschwere mich nur über diese Seite, dass sie keine neuen Komponenten hinzufügt. Es wäre wirklich großartig, wenn sie einige neue Komponenten auf ihrer Liste haben könnten
KD.
2
Die elektronische Labors Teil circuits.io Seite wurde verschoben tinkercad.com , wo Sie es finden Sie unter können Schaltungen .
SiggyF
1
Ich habe es bearbeitet und die Links aktualisiert.
Sa_leinad
40

In der Welt der Elektroniksimulatoren gibt es viele Optionen, aber Circuits.io alias TinkerCAD ist wahrscheinlich die vielseitigste auf dem Markt .

  • Sie können Ihre Schaltung auf einem virtuellen Steckbrett zusammenstellen, das genau wie real aussieht.
  • Sie können tatsächlich sehen, wie eine LED blinkt oder eine Taste während der Echtzeitsimulation gedrückt wird, anstatt mit abstrakten Wellenformen zu kämpfen.
  • Sie können digitale Geräte wie einen 555-Timer oder Schieberegister mit (interaktiven) analogen Komponenten wie Widerständen und LEDs kombinieren.
  • Sie können ein Arduino programmieren und den Mikrocontroller zusammen mit Ihrer analogen Schaltung simulieren.
  • Sie können ein Arduino debuggen: Wenn der Simulator Ihren Haltepunkt erreicht, wird die Simulation angehalten und Sie können auf einfache Weise jede Variable in Ihrem Code und jede Spannung oder jeden Strom in Ihrem Schaltkreis überprüfen.
  • Sie können verschiedene Kommunikationsprotokolle wie UART, I2C und SPI verwenden und beobachten.
  • Sie können die Simulation mitten in einer I2C-Sequenz anhalten, indem Sie einen Haltepunkt in den Treibercode einfügen (z. B. Interrupt-Serviceroutine für I2C-Ereignisse).
  • Es ist kostenlos!

Beispiel

Dies ist eine beispielhafte Schaltung mit einer IR-Fernbedienung und einem LCD-Bildschirm.

Haftungsausschluss: Wir sind die Hersteller von 123D Circuits

123D-Schaltungen
quelle
1
Wie spielt es sich mit der Arduino IDE ? Wäre es zum Flashen, Debuggen usw. verfügbar?
Rraallvv
14

Beachten Sie, dass kein Simulator reale Situationen reproduziert. Es gab viele Beiträge im Arduino-Forum über Probleme mit Code oder Elektronik, die sich als subtil herausstellen, wie zum Beispiel:

  • Zeitprobleme
  • Rennbedingungen (verwandte / abhängige Ereignisse finden nicht immer in derselben Reihenfolge statt)
  • Spannungspegel, z. potentialfreie Eingangsstifte
  • Antriebsmotoren, die die Arduino-Spannung so weit senken, dass sie zurückgesetzt werden
  • Keine Entkopplungskondensatoren
  • Eingangspins befinden sich in einem "undefinierten" Zustand (z. B. 2,5 V an einem Pin, bei dem 2 oder weniger V NIEDRIG und 3 V oder mehr HOCH sind)
  • Probleme mit Interrupt-Handlern, z. B. Variablen, die nicht als flüchtig deklariert wurden
  • Spannungsspitzen aufgrund fehlender Flyback-Dioden an den Motoren
  • Der Prozessor wird zurückgesetzt, sobald mehr als 10 LEDs eingeschaltet sind, da die Stromaufnahme die Menge überschreitet, die die Hardware liefern kann
  • Interrupt-Handler, die 10 µS benötigen, um einen Interrupt zu verarbeiten, wenn nur 9 µS verfügbar sind.

Von Natur aus können Simulatoren all dies nicht reproduzieren. Selbst wenn dies möglich wäre, würden Sie die Option "Zufälliges Rauschen von Motoren einfügen" aktivieren oder deaktivieren?


Laden Sie die IDE herunter und starten Sie die Programmierung. Sie können Bibliotheken installieren lassen, Code schreiben und frei von Syntaxfehlern verwalten und im Allgemeinen auf den großen Tag vorbereitet sein, an dem die Hardware in Ihren Händen ist.


Viel Spaß und viel Spaß beim Experimentieren mit Ihrem Arduino!

Nick Gammon
quelle
13

Sie können Yenka (kostenlos für den Heimgebrauch) verwenden, um Arduino, PIX, PIXACE und andere Karten mit digitaler, analoger und serieller E / A zu simulieren. Es bietet viele Komponenten und Beispielprojekte.

Bildschirmfoto:

Yenka Arduino Simulation

Niutech
quelle
Kann es programmiert und über die Arduino IDE debuggt werden ?
Rraallvv
12

Ja, Sie können versuchen, mit Proteus ISIS Ihren Code zu simulieren ...

Für die vollständige Emulation von Arduino gibt es ein Shareware-Programm namens VBB (Virtual BreadBoard) , ich habe es auch ausprobiert und es war schön.

Bearbeiten: In meinem ausführlichen Tutorial erfahren Sie , wie Sie mit Proteus ISIS simulieren können

Ahmed Hamdy
quelle
9

Ich glaube, diese Website enthält eine Liste von Emulatoren und Simulatoren sowie deren Preis und Verfügbarkeit.

Aktualisieren:

Da einige Benutzer angegeben haben, dass auf dieser Website fehlerhafte Links vorhanden sind, habe ich hier eine Auswahl von Emulatoren gefunden. Beachten Sie, dass einige Beschreibungen möglicherweise dem angegebenen Link entnommen sind:

  • Emulino : Ist eine Open Source Linux-basierte Software in der frühen Entwicklung, die Arduino-spezifische MCUs emuliert.

  • Emulare : ist ein Allzweck-Hardware-Emulator. Ziel ist es, eine zentrale Schnittstelle zum Erstellen elektronischer Simulationen für die Entwicklung eingebetteter Software bereitzustellen. Derzeit konzentriert sich emulare auf die ATMega-Linie von Mikrocontrollern (Arduino UNO hat den ATMega-Prozessor).

  • SimAVR : ist ein neuer AVR-Simulator für Linux oder jede Plattform, die avr-gcc verwendet. Der Simulator lädt ELF-Dateien direkt und es gibt sogar eine Möglichkeit, Simulationsparameter direkt im emulierten Code mithilfe eines .elf-Abschnitts anzugeben. Es unterstützt die Emulation vieler ATMega-Prozessoren und es wird erwähnt, dass es einfach ist, neue Prozessoren hinzuzufügen.

  • Amtel Studio : Dies scheint den Begriff Emulation nicht zu erwähnen, aber es ist eine ausgefeilte IDE, um Ihren Code für viele Plattformen, insbesondere Arduino, zu debuggen. Atmel Studio 7 bietet einen nahtlosen Ein-Klick-Import von Projekten, die in der Arduino-Entwicklungsumgebung erstellt wurden. Ihre Skizze, einschließlich der Bibliotheken, auf die sie verweist, wird als C ++ - Projekt in Studio 7 importiert. Nach dem Import können Sie alle Funktionen von Studio 7 nutzen, um Ihr Design zu optimieren und Fehler zu beheben. Atmel Studio 7 unterstützt den leistungsstarken integrierten Debugger auf der Arduino Zero-Karte vollständig. Für andere Arduino-Boards sind Shield-Adapter verfügbar, die Debug-Anschlüsse freigeben, oder wechseln Sie zu einem der vielen verfügbaren Xplained-Mini / PRO-Boards, um das Atmel HW-Ökosystem voll auszunutzen.

Sie können weiterhin Simulatoren wie EasyEDA verwenden , um Ihren Code zu testen und in den meisten Fällen auf dem Gerät auszuführen. Beachten Sie jedoch, dass Sie aufgrund der Beschaffenheit elektronischer Komponenten möglicherweise externe Widerstände, Kondensatoren usw. bereitstellen müssen, um die erwarteten Ergebnisse zu erzielen.

Aaron Azhari
quelle
Der Link antwortet hier nur, was nicht gut ist, da sie unbrauchbar werden, wenn die verlinkte Site ausfällt. Bitte schreiben Sie eine Zusammenfassung und stellen Sie sicher, dass Ihre Antwort einen Mehrwert bietet und nicht nur die bereits vorhandenen wiederholt.
Totymedli
Ich bin mit @totymedli einverstanden - wenn dieser Link nicht mehr funktioniert, wird die Antwort unbrauchbar. Bitte fassen Sie mindestens die genannten Emulatoren und den aktuellen Preis zusammen. Sie können Zeilen mit einem Sternchen beginnen, um Aufzählungszeichen zu setzen, wenn dies hilfreich ist.
Nick Gammon
7

Virtualbreadboard hat eine neue VBB4Arduino 'Two Arduino's'-Edition, die sowohl einen JVM-Arduino-Emulator als auch einen AVR-Befehlssatzsimulator mit Beispielen, die fast alle Beispiele der Arduino-Distribution abdecken, und eine Reihe von Peripherie-Hardware enthält - LCDs, WS2812 Neo LEDS, Motors, Servo's , Logic Analyzer und mehr.

http://www.virtualbreadboard.com

Haftungsausschluss: Ich bin der Autor von Virtual Breadboard

James Caska
quelle
6

Probieren Sie Simulator für Arduino aus - es ist das Beste, aber dann sind wir voreingenommen, da wir Teil des Entwicklungsteams sind. Nicht jeder möchte 19,99 USD zahlen, obwohl in den letzten Jahren fast 5.000 Arduino-Benutzer angemeldet waren. Es gibt eine kostenlose Version von Simulator für Arduino, die 45 Tage lang läuft oder 100 Skizzenladungen und maximal 200 Linien. Probieren Sie es aus und kaufen Sie dann, wenn Sie es sich leisten können und / oder wenn es sich lohnt.

Wenn etwas nicht stimmt oder verbessert werden könnte, lassen Sie es uns wissen - alle anderen tun es und haben es. Aus diesem Grund wurde Simulator for Arduino zu 99% aus Benutzerideen und Fehlerberichten erstellt.

Das einzige andere Programm, das wir ausprobiert haben und dessen Qualität nahe kommt, ist Proteus, aber dies ist ein komplettes PCB-Designstudio und scheint sehr teuer zu sein - dh viel mehr als 20 US-Dollar. Wir planen, eine kürzlich erfolgte Benutzeranfrage zu ignorieren, um den Preis auf 200 US-Dollar zu erhöhen.

Virtronics
quelle
5

Du könntest zB meinen Simulator benutzen. Es ist besonders für SPS-ähnliche Anwendungen geeignet, bei denen Multitasking durch zyklische Auswertung von miteinander verbundenen schaltungsähnlichen Objekten erreicht wird: Timer, Marker, Latches, Oneshots und Register. Sie können damit auch Ihre Regelstrecke simulieren, wie die Beispiele im Download verdeutlichen. Es verfügt über bescheidene Visualisierungskapazitäten, kann Zeitdiagramme zeichnen und ermöglicht es Ihnen, während einer laufenden Simulation auf alle Variablen in Echtzeit zuzugreifen und diese zu ändern. Sie können auch die Zeit einfrieren. Wenn Sie mit dem Verhalten Ihres Steuerelements zufrieden sind, generiert es den C-Code, der auf ein tatsächliches Arduino hochgeladen werden soll.

https://pypi.python.org/pypi/SimPyLC

Jacques de Hooge
quelle
1

Auf diese Weise kann ich meinen Code schreiben und ihn mit einem Desktop-Computer emulieren / testen

Wenn Sie meinen, mit einem Desktop-Computer " Komponententests " durchführen zu können, kann ich eine Bibliothek namens arduino_ci anbieten, die ich geschrieben habe .

Es bietet keine Emulation. Sie würden Ihre Tests in Code ausdrücken. Beispiel: Hier ist ein Test aus der Referenzdokumentation , der die in einen Port geschriebenen Daten überprüft :

unittest(pin_history)
{
  GodmodeState* state = GODMODE();
  int myPin = 3;
  state->reset();            // pin will start LOW
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, HIGH);

  // pin history is queued in case we want to analyze it later.
  // we expect 6 values in that queue.
  assertEqual(6, state->digitalPin[1].size());
  bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
  bool actual[6];

  // convert history queue into an array so we can verify it.
  // we expect to find 6 values: the 5 we set, plus the initial LOW
  // and this is where/how we assert that
  int numMoved = state->digitalPin[myPin].toArray(actual, 6);
  assertEqual(6, numMoved);

  // verify each element
  for (int i = 0; i < 6; ++i) {
    assertEqual(expected[i], actual[i]);
  }
}

In der Praxis würden Sie die digitalWriteFunktionen wahrscheinlich nicht direkt aufrufen - Sie würden eine Funktion in Ihrer Bibliothek aufrufen und dann überprüfen, ob der "Weltzustand" (hier durch das GODMODEKonstrukt dargestellt) mit dem übereinstimmt, was Sie von Ihrer Bibliothek erwartet haben.

Ian
quelle
0

Ja, Sie können und ziemlich leicht. Es gibt eine wunderbare Online-Simulation (völlig kostenlos) namens TinkerCAD . Es verfügt über eine hervorragende Breadboard-Simulation mit Bauteilen wie Transistoren, LEDs, ICs und Arduino. Sie können den Arduino programmieren und alles in einer Live-Simulation ausführen, die interaktive Eingänge (Drucktasten, DIP-Schalter usw.) enthält.


[Bearbeiten: Der folgende Text bezieht sich auf Funktionen, die in Circuits.io verschoben wurden , nämlich Eagle PCB ]

Das ist nicht alles. Es enthält außerdem eine separate Registerkarte mit Schaltplänen für Ihre Schaltung und eine weitere Registerkarte für das PCB-Design Ihrer Steckplatine! Oder Sie können Ihre Schaltpläne einfach von Grund auf neu erstellen und Ihre Leiterplatte von dort aus erstellen.

Sie können Ihre Schaltungsentwürfe machen lassen und Sie können sie kaufen. All dies können Sie in circuit.io tun, und Sie riskieren nicht, Ihr tatsächliches Arduino durcheinander zu bringen. Die Simulation enthält auch Warnanzeigen (z. B. wenn Sie nicht genügend Widerstand für eine LED oder einen IC verwendet haben).

I. Golsby
quelle