Home
Accesso / Registrazione
 di 

Simulatore per Arduino

Simulatore Arduino

Arduino, la nota piattaforma open-source per la prototipazione elettronica, è oggi disponibile in diversi modelli hardware a un prezzo più che abbordabile, ed è inoltre sempre possibile progettare e realizzare da sè una propria scheda Arduino-compatibile. Ma esiste un simulatore software per Arduino? La risposta in questo articolo.

Con qualche decina di euro è oggi possibile acquistare una scheda Arduino e tuffarsi immediatamente nella programmazione di questo affascinante dispositivo. Nonostante ciò, può sorgere spontanea la seguente domanda: esisterà mai un simulatore software per Arduino? La domanda è lecita, del resto altri ambienti di sviluppo analoghi per microprocessori hanno da tempo messo a disposizione dell'utente un simulatore software integrato (si pensi ad esempio al simulatore per i microcontrollori della famiglia PIC, integrato nella suite di sviluppo di Microchip). Attualmente sono disponibili alcuni simulatori per Arduino, qualcuno disponibile solo a pagamento, altri utilizzabili liberamente, ma con funzionalità limitate. Volendo proporre agli interessati uno strumento fruibile gratuitamente e immediatamente, la scelta è ricaduta sul prodotto SIMFORARDUINO, di cui esamineremo la versione free.

SIMFORARDUINO (Simulator for Arduino) può essere scaricato liberamente da questo sito. La versione free presenta due limitazioni rispetto alla versione a pagamento:

  • dopo aver caricato e aperto uno sketch, bisogna attendere un minuto prima di poter utilizzare lo strumento
  • è possibile simulare sketch con dimensione massima del codice pari a 100 linee

Per rimuovere queste limitazioni è possibile passare alla versione Pro, la cui licenza ha un costo tutto sommato abbordabile. La licenza relativa all'attuale versione Pro, la v0.95, costa 6,99 dollari, ma si stima che per la versione v1.00 (che aggiungerà ulteriori funzionalità e supporto per nuovo hardware) il costo dovrebbe aggirarsi sui 50 dollari (in altre parole, si vuole premiare gli utenti che per primi richiederanno una licenza Pro, che tra l'altro garantisce anche un supporto per minimo 30 giorni dall'acquisto).

Fatta questa debita premessa, cominciamo con l'elencare i vantaggi offerti da un ambiente di simulazione:

  • possibilità di apprendere e capire il funzionamento interno di uno sketch Arduino. Il simulatore può inoltre essere utilizzato come strumento per l'insegnamento della programmazione con Arduino all'interno di un corso o di una classe scolastica (la versione Pro del programma ha una licenza che è valida fino a 10 utenti, e permette quindi di essere utilizzata all'interno di corsi e training con fino a 10 studenti)
  • possibilità di testare e debuggare uno sketch senza disporre dell'hardware, oppure come studio di fattibilità da eseguire prima di procedere con l'acquisto dell'hardware. Il simulatore può essere installato su un computer portatile ed essere utilizzato anche lontano dal laboratorio hardware (in treno, a scuola, in vacanza, ecc.)
  • possibilità di debuggare lo sketch, eseguendo le istruzioni in modalità step-by-step oppure inserendo dei breakpoint in punti opportuni del codice
  • velocizza l'attività di sviluppo e prototipazione basata su Arduino
  • può essere utilizzato per eseguire una dimostrazione a un potenziale cliente o a un docente
  • possibilità di testare e verificare la "robustezza" di uno sketch, forzando ad esempio l'assegnamento a talune variabili di valori errati o fuori dal range ammissibile. In altre parole, è possibile simulare tutti quei comportamenti "anomali" del software che non è possibile verificare o riprodurre con l'hardware vero e proprio

L'ultima versione di simulatore è in grado di caricare ed eseguire tutti gli esempi inclusi nell'ambiente di sviluppo Arduino, da quelli presenti nella cartella "Basics" (la numero 1.), fino a quelli presenti nella cartella "Strings" (la numero 8.).

L'installazione del simulatore è molto semplice, basta scaricare il file compresso SetupF.zip a questo link, decomprimerlo, ed eseguire il programma di installazione SetupF.exe. Il programma funziona sui sistemi operativi Windows 2000, XP, 7, e su Linux tramite Wine (non è stato testato su altre versioni di Windows, tra le quali Vista). Una volta lanciato, il programma si presenterà come un comune IDE, con la schermata suddivisa nell seguenti sezioni:

  • un Menu di Sistema
  • una Shortcut Toolbar, che contiene le icone associate alle operazioni più comunemente usate
  • una finestra con il listato del programma
  • un'area per la visualizzaizone delle veriabili
  • un riquadro con un'immagine di una scheda Arduino

Si noti come l'ordine di alcune di queste finestre possa essere cambiato selezionando con il tasto destro del mouse View | Arduino on Left.

La finestra programma visualizza il listato dello sketch e permette, tramite il tasto F8, di eseguire il programma in modalità step-by-step (il tasto F8 corrisponde allo Step Over, mentre F7 corrisponde allo Step Into). La prima linea dello sketch può anche essere utilizzata per definire il tipo di board Arduino che si desidera simulare, inserendo gli pseudo-commenti (che in realtà vengono interpretati come comandi dal simulatore) // Simulate Uno oppure // Simulate Mega. Questo tipo di commento viene interpretato solo nella prima linea del codice. La barra di stato (vedi figura) indica il numero di linea corrente, il numero di linee di codice totale, e la prossima istruzione che verrà eseguita.

I breakpoint possono essere impostati o rimossi premendo il tasto destro del mouse sulla linea di codice interessata, e selezionando il tipo di operazione da eseguire. La linea di codice sulla quale è stato impostato un breakpoint viene evidenziata in colore rosso, mentre la linea di codice corrispondente all'esecuzione corrente viene indicata con il colore blu. L'area variabili indica lo stato di tutte le variabili utilizzate nel programma, e il loro valore corrente, come nell'esempio riportato nella figura seguente:

Il valore di una variabile può essere modificato (alterato) cliccando semplicemente sulla relativa cella e inserendo il nuovo valore. La colonna Qualifier indica se il valore è una costante, o un tipo unsigned, static oppure volatile. La stessa colonna, nelle righe colorate in grigio, indica anche quante variaibili di quel tipo sono state definitie all'interno del programma (nel nostro caso, abbiamo ad esempio 2 variaibili di tipo byte e 1 variabile di tipo int). Al ritorno da una chiamata a subroutine, lo stack si riporterà nel suo stato originale, e tuute le variabili definite all'interno della subroutine o passate come argomenti verranno rimosse. Per visualizzare nuovamente il Menu Po-up, è sufficiente cliccare con il tasto del mouse nell'area riservata alle variabili. La seconda colonna è la colonna watch, e cliccando su questa colonna verrà visualizzata la lettera w. Nel Menu Pop-up si può selezionare di visualizzare soltanto le variabili osservate ("watched variables"). Quest'opzione è molto utile quando si è interessati a visualizzare/osservare soltanto alcune tra un numero molto elevato di variabili.

Nell'immagine seguente è invece visualizzata l'area Arduino, la cui funzione è quella di visualizzare gli ingressi e le uscite digitali, gli ingressi analogici, e i valori di uscita.

Un'altra opzione molto utile è il "Bare Minimum", con la quale viene precaricato un template con la struttura basilare di uno sketch. Questa funzione è quindi utile quando si vuole creare un nuovo sketch partendo da zero: le parti fisse e comuni dello stesso verrano automaticamente inserite da questa funzione (basta selezionare Run|Edit Sketch, e premere il tasto più a destra per attivare l'opzione Bare Minimum e cominciare a riempiril contenuto del nuovo sketch.

Come già anticipato, in precedenza, la Shortcut Toolbar permette di attivare delle specifiche funzionalità (quelle più comunemente utilizzate) semplicemente cliccando sopra l'icona corrispondente. Le funzioni sono le seguenti:

  • Load Sketch - carica nel simulatore uno sketch (parte di default dall'ultimo percorso utilizzato)
  • Freecia in alto a sinistra - Reset
  • Freccia in su - torna indietro senza eseguire il codice
  • Freccia in giù - Step Over
  • Freccia in basso a sinistra - Step out da una procedura (escluse le funzioni setup e loop)
  • Freccia in basso a destra - Single Step e Step into
  • Simulation - visualizza oppure chiude la finestra con gli input/output della simulazione
  • Run - Esegue il programma in modalità AutoStep: viene cioè eseguita una istruzione ogni xx ms. Il valore xx ms può essere modificabile e rappresenta il ritardo introdotto tra l'esecuzione di un'istruzione e la successiva. Se il periodo di AutoStep viene impostato a un valore inferiore a 10ms, la barra di stato non verrà aggiornata in modo tale da velocizzare il più possibile la simulazione
  • Abort - termina l'esecuzione del programma
  • Millis - il tempo di esecuzione in milliseconds. Questo valore può essere modificato in ogni momento
  • PulseIn - questo valore, modificabile, è il risultato della funzione PulseIn
  • Step Into (F7)

La Finestra di Simulazione permette di simulare i sei ingressi analogici. Ciascun valore analogico può essere modificato spostando la barra di scorrimento corrispondente, oppure inserendo manualmente un valore nella casella di testo. I valori degli ingressi e delle uscite sono visualizzati in cinque porte (Port1-5). Le porte sono assegnate nel modo seguente:

  • Port1 è per Serial
  • Port2 è per Serial1, Serial2, Serial3, SoftSerial1, Ethernet Server
  • Port3 è per SoftSerial2, Ethernet Client
  • Port4 è per LCD, Wire, SPI
  • Port5 è per File

Una dimostrazione di alcune delle funzionalità del simulatore è offerta dal video seguente (in inglese). Naturalmente, il modo migliore per valutare e studiare a fondo il simulatore è quello di scaricare e installare la versione Free.

Simulatore Arduino

Arduino è disponibile da Farnell

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Emanuele

Simulatore per Arduino

Veramente una bella idea. L'utilizzo imponente della grafica rendono la simulazione più intuitiva e quindi molto adatta ad un utenza hobbistica (ma non solo).

Interessante anche il modello di business che è stato usato, oltre alla classica versione free limitata e la pro a pagamento (micro-pagamento), è stata aggiunta una sorta di crowdfunding o variante all'early booking:
la release definitiva sarà messa in vendita ad un prezzo superiore, quindi "affrettatevi ad acquistare la versione beta risparmiando ad aiutandoci cosi a finanziare il progetto"

Questo è il messaggio ;)

ritratto di Shields for Arduino

Thanks for the mention

Thanks for the write-up. We don't speak Italian but will pretend it is all good. We found this writeup creeping up the list - 28 views in one day is impressive (most of our views are still from Latest Tools on http://www.avrfreaks.net/index.php)

We have just reached 250 Pro Users today after 132 days, so Version 0.96 is just around the corner. Some of the limitations have been fixed such as being able to do 4 line LCD displays, handling structures and enums and there is some pointer processing for strings only. With the ports, we have fixed this so that each function will open the next port so for example using LCD, SPI and Wire will open Port1,2 & 3 respectively - this is available in the current patch v0.95C. The major issue is being able to process custom libraries, and we have added tabs to the program box (up to 6) and have added some code to handle classes for the libraries but this is a huge job and will take time. v0.96 is planned for release later this month with a revised help file (credits for another 20 Pro Users who have found bugs) and a new video. We will post here when this is available.

TRADUZIONE
Grazie per il write-up. Noi non parliamo l'italiano, ma fate finta che sia tutto ok. Abbiamo trovato questo documento in cima all'elenco delle visite - 28 visualizzazioni in un giorno è impressionante (la maggior parte delle nostre visite sono ancora dall'ultimo tool su http://www.avrfreaks.net/index.php)

Abbiamo appena raggiunto 250 utenti Pro oggi, dopo 132 giorni, quindi la versione 0.96 è proprio dietro l'angolo. Alcuni limiti sono stati fissati come essere in grado di fare 4 linee display LCD, la gestione delle strutture e enumerazioni e non vi è alcuna elaborazione del puntatore solo le stringhe. Con le porte, abbiamo fissato questo in modo che ogni funzione si aprirà la successiva porta così per esempio usando LCD, SPI e Wire aprirà Port1, 2 e 3 rispettivamente - questo è disponibile nella v0.95C patch corrente. Il problema principale è essere in grado di elaborare librerie personalizzate, e abbiamo aggiunto le schede alla finestra del programma (fino a 6) e hanno aggiunto un po 'il codice per gestire le classi per le librerie, ma questo è un lavoro enorme e ci vorrà del tempo. v0.96 è prevista per il rilascio a fine mese con un file di aiuto rivisto (crediti per altri 20 utenti Pro che hanno trovato bug) e un nuovo video. Noi pubblicheremo qui quando questo sarà disponibile.

ritratto di Emanuele

You are welcome

You are welcome,
feel free to notify us news and updates.

Regards
Emanuele

ritratto di Luigi P

ringrazio per le

ringrazio per le spiegazioni,simpatico l'utilizzo , vorri capire come attivarlo dopo il micropagamento forse è la parte più difficile.

ritratto di michele albanese

Simulatore Arduino

Salve a tutti lo stesso problema di Luigi acquistato oggi ma come si attiva mi sarei aspettato una key oppure un link nella mia mail. Aspetto Vostre notizie Grazie

ritratto di Luigi__Raptor

controllo servomotori con simulatore

Ciao ricevuta la mail ed attivato il simulatore ho prvoto qualche programmino. Il problema ora riscontrato:_ tutto bene con shetch del tipo led scceso-spento , crepuscolare cose praticamente elementari. Difficoltà invece quando cerco di interpolare più servomotori .Lo scetch sembra ok e verificato con il programma di arduino va in upload ,chiaramente non avendo ancora costruito il braccio robotico qua ci si ferma con arduino,ma lo stesso accade con il simulatore la gestione del primo servo parte ora il guaio,alla seconda variabile si blocca tutto .
Che sia un problema di gestione del programma ancora del tutto non sviluppato.
Spero negli aggiornamenti visto che il giocattolo Arduino venga utilizzato per cose parecchio sensibili e che avrebbero veramente bisogno di un collaudo al simulatore
Ciao a tutti

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 4 utenti e 29 visitatori collegati.

Ultimi Commenti