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 (Simulator for Arduino), di cui esamineremo la versione free.

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

Naturalmente, il modo migliore per valutare e studiare a fondo il simulatore è quello di scaricare e installare la versione Free.

3 Comments

  1. Emanuele 18 aprile 2012
  2. Emanuele 17 aprile 2012
  3. michele albanese 6 maggio 2012

Leave a Reply