Cosa sapere per iniziare con Arduino
Questa sera continuiamo il discorso di presentazione di Arduino che abbiamo iniziato scorsa settimana con: Arduino,ciò che era impossibile ora è alla portata di tutti, e presentiamo le varie tipologie di schede che si possono trovare in commercio.
Arduino è senza dubbio il modo più semplice e veloce per realizzare le nostre idee e progetti di domotica, robotica, sensoristica…. E chi più ne ha più ne metta.
Intorno a questo esempio di orgoglio italiano, si è sviluppata una vera e propria community internazionale che aiuta e sostiene chi, proprio attraverso Arduino, si accosta al mondo dell’elettronica per la prima volta.
Tipi di schede
Di fatto esistono svariati modelli di “schede” Arduino, a seconda delle necessità. Il primo che presentiamo è LilyPad: scheda pensata e realizzata per dispositivi indossabili; Arduino Mini, pensato per potersi integrare nel minor spazio possibile all’interno del nostro progetto; o semplicemente Arduino Uno, la più semplice e diffusa scheda proposta da Arduino (già trattata nel sopracitato articolo).
In particolare Arduino Uno è ottimo per iniziare, poiché contiene tutto ciò che nelle altre schede viene poi specializzato, modificato o rimosso del tutto e per questo motivo, imparando le funzionalità di questa scheda, si è già consapevoli di quali siano le potenzialità che offrono tutte le altre.
Ogni scheda Arduino è pensata come microcontrollore programmabile attraverso il linguaggio di programmazione Arduino (basato su Wiring) e l’ambiente di sviluppo Arduino (basato su Processing).
La vera peculiarità di Arduino è proprio quella di potersi interfacciare con altri dispositivi attraverso una comunicazione seriale: di fatto ogni progetto può essere sia “stand alone” (ovvero che funziona in maniera indipendente), oppure comunicare con il software in esecuzione sul computer.
Alimentazione
Più nel dettaglio la scheda Arduino Uno è collegabile ad un computer tramite un semplice cavo USB che può essere usato anche come alimentazione della scheda; in alternativa vi è l’attacco per un alimentatore esterno che, secondo il manuale, deve operare tra i 6V ed i 20V: nella pratica però, il pin 5V potrebbe fornire meno di 5V e la scheda potrebbe quindi risultare instabile; se invece si utilizzano più di 12V, il regolatore di tensione potrebbe surriscaldarsi e danneggiare la scheda. L’intervallo consigliato è 7-12V.
I pin di alimentazione sono 4:
- VIN. Il pin con cui è possibile alimentare la scheda Arduino con una tensione superiore ai 5V. E’ possibile fornire tensione attraverso connessione Usb o un’altra fonte di alimentazione regolata in tensione.
- 5V. Il Pin di alimentazione regolata, utilizzata per alimentare il microcontrollore
e gli altri componenti sulla scheda. La tensione di 5Vpuò essere ricavata dal pin VIN tramite un regolatore a bordo, o essere fornita tramite Usb o un altro 5V controllato. - 3V3. E’ generata dal board su chip FTDI e ha un assorbimento di corrente massimo pari a 50mA.
- GND. Ground pin.
Memoria
La memoria del microcontrollore, invece, deriva tutta dall’Atmega-328 che mette a disposizione 32 KB, di cui 2 KB utilizzati per il bootloader, 2 KB di SRAM e 1 KB di EEPROM. Di fatto questo potrebbe essere un limite per i progetti più complessi, ma bisogna ricordare che Arduino è pensato esclusivamente come controllore e non come un single-board computer vero e proprio.
Interfaccia con l’esterno
Per interfacciarsi con i vari componenti del nostro progetto, Arduino Uno dispone di ben 14 pin digitali, utilizzabili sia come input che come output utilizzando funzioni come digitalWrite()
e digitalRead()
; i pin operano a 5 Volt e ognuno di questi può fornire o ricevere un massimo di 40mA; presentano una resistenza di pull-up interna di 20-50kW e inoltre alcuni pin hanno funzioni specializzate:
- Pin 0(RX) e 1(TX). Sono utilizzati per ricevere e trasmettere dati seriali in formato TTL. Sono collegati ai pin 0 (RX) e 1 (TX) corrispondenti della serie FTDI USB-to-chip TTL.
- Interrupt esterni: 2 e 3. Questi pin possono essere configurati per attivare un interrupt (ovvero un segnale asincrono), sia su un valore basso di salita o di discesa, sia su una variazione del valore di ingresso.
- PWM: (pin 3, 5, 6, 9, 10 e 11). Sono pin utilizzati come uscite PWM, ovvero possono modulare il segnale in impulsi che, facendo variare la distanza temporale con cui vengono generati, riescono a convertire un segnale da digitale ad analogico.
- LED: (pin 13). Pin collegato direttamente ad un Led presente sulla scheda: quando il valore del pin è alto il LED corrispondente è acceso, viceversa, è spento.
- Reset. E’ un pin che permette di resettare il microcontrollore. La stessa funzione di reset risulta possibile anche attraverso un pulsante situato sulla scheda.
Inoltre Arduino Uno dispone di 6 ingressi analogici, ciascuno dei quali fornisce 10 bit di risoluzione (ossia 1024 diversi valori).
Comunicazione
L’ Arduino Duemilanove ha un certo numero di strutture per la comunicazione con un computer, con un altro Arduino, o con altri microcontrollori.L’ Atmega-328 fornisce una comunicazione seriale UART TTL (5V) che è disponibile sui pin digitali 0(RX) e 1 (TX).
Il software predisposto alla comunicazione include un monitor Arduino seriale che consente di inviare alla scheda Arduino semplici dati testuali.
I led RX e TX sulla scheda lampeggiano quando i dati vengono trasmessi sia tramite il chip FTDI, sia tramite una connessione Usb con il computer; ciò non accade per la comunicazione seriale.
L’ Atmega-328 dispone anche di un supporto I2C (TWI) e di una comunicazione SPI. Il software include una libreria Arduino Wire per semplificare l’utilizzo del I2C bus.
Programmazione
La scheda Uno può essere programmata con il software Arduino. L’Atmega-328 su Arduino Uno si precarica con un bootloader che permette di caricare il nuovo codice senza l’uso di un programmatore hardware esterno. La comunicazione con la scheda avviene utilizzando l’originale protocollo STK500 che ha come riferimento i file di intestazione C.
Ambiente di sviluppo (IDE)
L’IDE (Integrated Development Environment, cioè Ambiente di Sviluppo Integrato) di Arduino è un’applicazione multipiattaforma basata su Java e deriva dall’IDE creato per il linguaggio di programmazione Processing (progetto Wiring per chi fosse interessato). Questo IDE include un editor di testo pensato per i neofiti dello sviluppo software; è in grado di compilare e caricare il programma eseguibile con un solo comando.
Approfondiremo quanto illustrato sopra con una serie di articoli specifici con spiegazioni ed esempi pratici. Stay tuned!