Posso programmare per Arduino senza avere una vera tavola?


204

Vorrei iniziare lo sviluppo di alcuni progetti Arduino di base ma non possiedo ancora una scheda Arduino. C'è un modo in cui posso scrivere il mio codice ed emularlo / testarlo usando un computer desktop, quindi dopo l'arrivo della mia scheda devo solo caricare ed eseguire il mio progetto su di esso?


1
Anche a me interessa, ne hai trovato uno che gioca bene con l' IDE di Arduino ? cioè, rilevato dall'IDE come se fosse una scheda, con tutte le sue funzionalità.
rraallvv,

Risposte:


127

Ci sono un sacco di simulatori Arduino là fuori, molti prodotti gratuiti e anche alcuni a pagamento.

  • L' ambiente di sviluppo Arduino CodeBlocks include un simulatore Arduino gratuito, ancora in fase di sviluppo ma funzionale.
  • Simuino simula i pin Arduino Uno e Mega, non un simulatore realistico dall'aspetto gradevole, ma funziona.
  • Il simulatore Arduino basato su Python è un'altra opzione, che gioca bene con l'IDE ufficiale
  • Virtronics Simulator per Arduino sembra promettente, ma non vedo perché pagherei $ 14,99, quando potrei acquistare uno o più cloni Arduino effettivi a quel prezzo

Molti altri simulatori Arduino sono là fuori se cerchi, e ne vengono annunciati di nuovi, anche crowdfunded, continuamente.


10
come nota, quelli non sono emulatori ma simulatori , la differenza più importante è che non esegue il codice su una macchina virtuale AVR (come quello che fa qemu ), ma lega le funzioni di Arduino al codice nativo. Quindi sostanzialmente non saranno in grado di eseguire roba AVR nativa e il comportamento di registrazione / timer non sarà lo stesso dell'hardware AVR reale. Vedi la differenza ben spiegata in quella risposta . È, tuttavia, teoricamente possibile emulare il codice di Arduino Due con qemu .
zmo

5
"Non vedi perché [uno] pagherebbe $ 14,99, quando [uno] potrebbe acquistare uno o più cloni Arduino effettivi per quel prezzo"? Posso dirti perché: perché l'hardware non ha un debugger integrato con le funzionalità che possono essere fornite da un simulatore.
R. Martinho Fernandes,

8
Il simulatore Arduino ha suscitato il mio interesse, ma sfortunatamente sembra che non ci siano file ad esso correlati sul sito sourceforge. Mi manca qualcosa o è diventato obsoleto da quando hai scritto la tua risposta?
Greenonline,

Come notato nel commento sopra, non ci sono file nel sito di forge di origine del simulatore arduino. C'è un sito web per questo o c'è un altro simulatore che funziona bene su Mac, con IDE ufficiale?
gordanvij,

4
Simuino è terribile, poco professionale e inutile. Non hanno idea di come programmare. Arduino Simulator non ha versioni. CodeBlocks è solo Windows. Il simulatore per Arduino non è open source.
dhchdhd,

81

Mi piace usare circuit.io aka TinkerCAD per questo.

È basato su cloud e presenta alcune funzioni interessanti tra cui la progettazione e la collaborazione di PCB.

IMO la simulazione e la capacità di Arduino sono impressionanti e intuitive.


3
È molto bello e pulito e le funzionalità di base sono davvero impressionanti, facili da usare e potenti. Tuttavia, molte parti comuni (inclusi LCD e sensori di temperatura) non sono ancora supportate. Dubito che in questa fase sia possibile testare qualsiasi cosa tranne i progetti di base. Spero che questo andrà meglio nel tempo.
Suma,

L'ho provato rapidamente e l'ho trovato davvero impressionante per un prodotto gratuito. Non conosco i suoi limiti in termini di realismo della simulazione, ma l'editor è molto amichevole e sta semplicemente posizionando un led nello slot appropriato, creato automaticamente dal codice con il pin corretto e un ciclo lampeggiante!
Heltonbiker,

anche la mia scelta sarebbe 123d ma la mia unica lamentela riguardo questo sito è che non aggiungono nuovi componenti. Sarebbe davvero bello se potessero avere alcuni nuovi componenti nella loro lista
KD.

2
La parte dedicata ai laboratori elettronici del circuito circuit.io si è spostata su tinkercad.com , dove puoi trovarla sotto i circuiti .
SiggyF,

1
L'ho modificato e aggiornato i collegamenti.
sa_leinad,

40

Esistono molte opzioni nel mondo dei simulatori elettronici, ma i circuiti.io aka TinkerCAD è probabilmente il più versatile là fuori.

  • Puoi comporre il tuo circuito su una breadboard virtuale che sembra proprio reale.
  • Puoi effettivamente guardare un LED lampeggiare o premere un pulsante durante la simulazione in tempo reale piuttosto che lottare con forme d'onda astratte.
  • È possibile combinare dispositivi digitali come un timer 555 o registri a scorrimento con componenti analogici (interattivi) come resistori e LED.
  • Puoi programmare un Arduino e simulare il microcontrollore insieme al circuito analogico che lo circonda.
  • Puoi eseguire il debug di un Arduino: quando il simulatore raggiunge il tuo punto di interruzione, la simulazione viene messa in pausa e puoi facilmente controllare ogni variabile nel tuo codice e ogni tensione o corrente nel tuo circuito.
  • È possibile utilizzare e osservare diversi protocolli di comunicazione come UART, I2C e SPI.
  • È possibile mettere in pausa la simulazione nel mezzo di una sequenza I2C inserendo un punto di interruzione nel codice del driver (ad es. Routine di servizio di interruzione per eventi I2C)
  • È gratis!

Esempio

Questo è un circuito di esempio che ha un telecomando IR e uno schermo LCD.

Disclaimer: Siamo i produttori di circuiti 123D


1
Come si gioca con l' IDE di Arduino ? sarebbe disponibile per flash, debug, ecc?
rraallvv,

14

Ricorda che nessun simulatore riprodurrà situazioni di vita reale. Ci sono stati molti post sul forum di Arduino su problemi con il codice o l'elettronica, che si rivelano qualcosa di sottile, come:

  • Problemi di tempistica
  • Condizioni di gara (eventi correlati / dipendenti che non si verificano sempre nello stesso ordine)
  • Livelli di tensione, ad es. pin di ingresso flottanti
  • Azionamento di motori che fanno cadere la tensione di Arduino abbastanza da reimpostarla
  • Non avere condensatori di disaccoppiamento
  • Pin di ingresso in uno stato "non definito" (ad es. 2,5 V su un pin in cui 2 o meno V è BASSO e 3 V o più è ALTO)
  • Problemi con i gestori di interrupt, come variabili non dichiarate volatili
  • Picchi di tensione dovuti alla mancanza di diodi flyback sui motori
  • Il processore si ripristina dopo aver acceso più di 10 LED perché l'assorbimento di corrente supera la quantità che l'hardware può fornire
  • Gestori di interruzioni che assumono 10 µS per elaborare un interrupt quando sono disponibili solo 9 µS.

Per loro natura i simulatori non possono riprodurre tutto questo. Anche se potessero, penseresti di attivare l'opzione "inserisci rumore casuale dai motori"?


Per quanto riguarda prepararsi all'arrivo della scheda, scaricare l'IDE e iniziare la programmazione. Puoi installare librerie, scrivere codice e liberare errori di sintassi, organizzarlo in modo ordinato ed essere generalmente pronto per il grande giorno in cui l'hardware è nelle tue mani.


Divertiti e divertiti a sperimentare con il tuo Arduino!


13

È possibile utilizzare Yenka (gratuito per uso domestico) per simulare Arduino, PIX, PIXACE e altre schede con I / O digitali, analogici e seriali. Fornisce molti componenti e progetti di esempio.

Immagine dello schermo:

Simulazione Yenka Arduino


Può essere programmato, eseguito il debug dall'IDE di Arduino ?
rraallvv,

12

Sì, puoi provare a usare Proteus ISIS per simulare il tuo codice ...

Per la completa emulazione di Arduino, esiste un programma shareware chiamato VBB (Virtual BreadBoard) , l'ho provato anche io ed è stato bello.

Modifica: puoi controllare il mio tutorial dettagliato qui su come simulare su Proteus ISIS


9

Credo che questo sito web abbia un elenco di emulatori e simulatori insieme al loro prezzo e disponibilità.

Aggiornare:

Dato che alcuni utenti hanno menzionato che ci sono collegamenti interrotti in quel sito Web, ecco una selezione di emulatori che ho trovato. Si noti che alcune descrizioni potrebbero essere state prese dal collegamento menzionato:

  • Emulino : è un software open source basato su Linux in fase di sviluppo iniziale che emula MCU specifiche di Arduino.

  • Emulare : è un emulatore hardware generico. Mira a fornire un'interfaccia centrale per creare simulazioni elettroniche per lo sviluppo di software embedded. Attualmente emulare si concentra sulla linea di microcontrollori ATMega (Arduino UNO ha il processore ATMega).

  • SimAVR : è un nuovo simulatore AVR per Linux o qualsiasi piattaforma che utilizza avr-gcc. Il simulatore carica direttamente i file ELF e c'è anche un modo per specificare i parametri di simulazione direttamente nel codice emulato usando una sezione .elf. Supporta l'emulazione di molti processori ATMega e si dice che è facile anche aggiungerne di nuovi.

  • Amtel Studio : questo non sembra menzionare il termine emulazione, ma è un IDE sofisticato per eseguire il debug del codice per molte piattaforme in particolare Arduino. Atmel Studio 7 offre un'importazione continua con un clic dei progetti creati nell'ambiente di sviluppo di Arduino. Il tuo schizzo, comprese le eventuali librerie a cui fa riferimento, verrà importato in Studio 7 come progetto C ++. Una volta importato, puoi sfruttare tutte le funzionalità di Studio 7 per ottimizzare e eseguire il debug del design. Atmel Studio 7 supporta pienamente il potente debugger incorporato sulla scheda Arduino Zero. Per altre schede Arduino, sono disponibili adattatori di schermatura che espongono i connettori di debug o passano a una delle tante schede Xplained-Mini / PRO disponibili per sfruttare appieno l'ecosistema Atmel HW.

Puoi ancora utilizzare simulatori come EasyEDA per testare il tuo codice e nella maggior parte dei casi essere in grado di eseguirlo sul dispositivo. Tuttavia, considerando la natura dei componenti elettronici, potrebbe essere necessario fornire resistori esterni, condensatori ecc. Per ottenere i risultati previsti.


Il link non risponde solo in questo caso perché saranno inutili quando il sito collegato non funziona. Scrivi un riepilogo e assicurati anche che la tua risposta aggiunga valore e non si limiti a ripetere quelli che già abbiamo.
totymedli,

Sono d'accordo con @totymedli - se quel link si interrompe la risposta diventa inutile. Si prega di riassumere, almeno, gli emulatori menzionati e il prezzo attuale. Se questo aiuta, puoi iniziare le linee con un asterisco per creare punti elenco.
Nick Gammon

7

Virtualbreadboard ha una nuova edizione VBB4Arduino 'Two Arduino's' che include ENTRAMBE un emulatore Arduino JVM E un simulatore di set di istruzioni AVR con esempi che coprono quasi tutti gli esempi di distribuzione Arduino e un mucchio di hardware periferico: LCD, LED WS2812 Neo, Motori, Servo , Logic Analyzer e altro.

http://www.virtualbreadboard.com

Disclaimer: sono l'autore di Virtual Breadboard


6

Prova Simulator per Arduino : è il migliore ma poi siamo di parte perché facciamo parte del team di sviluppo. Non tutti vogliono pagare $ 19,99 sebbene negli ultimi anni quasi 5.000 utenti Arduino abbiano fatto. Esiste una versione gratuita di Simulator per Arduino che funziona per 45 giorni o 100 carichi di sketch e 200 linee max. Prova questo e poi acquista se te lo puoi permettere e / o se sembra utile.

Se c'è qualcosa che non va o che potrebbe essere migliorato, fatecelo sapere: tutti gli altri lo fanno e lo hanno, motivo per cui Simulator for Arduino è stato creato al 99% da idee degli utenti e segnalazioni di bug.

Inoltre, l'unico altro programma che abbiamo provato che si avvicina alla qualità è Proteus, ma questo è uno studio di progettazione PCB completo e sembra essere molto costoso, vale a dire molto più di $ 20. E prevediamo di ignorare una recente richiesta dell'utente per aumentare il prezzo a $ 200.


5

Ad esempio potresti usare il mio simulatore. È particolarmente adatto per applicazioni simili a PLC, in cui il multitasking è ottenuto mediante valutazione ciclica di oggetti simili a circuiti interconnessi: timer, marker, latch, oneshots e registri. Puoi usarlo anche per simulare il tuo sistema controllato, come risulta dagli esempi nel download. Ha capacità di visualizzazione modeste, è in grado di disegnare diagrammi di temporizzazione e consente di accedere e modificare la forza cq di tutte le variabili in tempo reale durante una simulazione in esecuzione. Inoltre puoi congelare il tempo. Quando sei soddisfatto del comportamento del tuo controllo, questo genera il codice C da caricare su un Arduino reale.

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


1

un modo in cui posso scrivere il mio codice ed emularlo / testarlo usando un computer desktop

Se intendi essere in grado di "unit test" utilizzando un computer desktop, posso offrire una libreria che ho scritto chiamato arduino_ci .

Non offre emulazione. Esprimerai i tuoi test in codice. Ad esempio, ecco un test estratto dalla documentazione di riferimento che convalida i dati scritti su una porta:

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 pratica, probabilmente non digitalWritechiameresti direttamente le funzioni: chiameresti una funzione nella tua libreria, quindi verifichi che lo "stato mondiale" (rappresentato qui dal GODMODEcostrutto) corrisponde a ciò che ti aspettavi che facesse la tua libreria.


0

Sì, puoi, e abbastanza facilmente. Esiste una meravigliosa simulazione online (completamente gratuita) chiamata TinkerCAD . Ha un'eccellente simulazione della breadboard, con parti come transistor, LED, CI e Arduino. Puoi programmare Arduino ed eseguirlo tutto in una simulazione live che include input interattivi (pulsanti, DIP switch, ecc.).


[Modifica: il seguente testo si riferisce alla funzionalità che è stata spostata in Circuits.io , ovvero Eagle PCB ]

Non è tutto. Include anche in una scheda separata schemi per il tuo circuito e un'altra scheda per la progettazione PCB del circuito breadboard! Oppure, puoi semplicemente creare i tuoi schemi da zero e creare il tuo PCB da lì.

Puoi realizzare i tuoi progetti di circuiti e puoi acquistarli. Puoi fare tutto questo in circuit.io e non rischi di rovinare il tuo vero Arduino. Ha anche degli indicatori di avviso nella simulazione (ad esempio, se non hai usato abbastanza resistenza su un LED o un IC).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.