Arduino I/O EXPANDER I C 2 CONTROLLATO DA BLUETOOTH degli ingg. TOMMASO E ALESSANDRO GIUSTO Espandiamo le risorse digitali di Arduino con uno shield I2C bus e controlliamole tramite collegamento bluetooth attraverso uno smartphone Android. T utte le schede Arduino dispongono di un certo numero di contatti di ingresso e uscita digitali. Per i progetti più semplici, tali risorse sono più che sufficienti, però in quelli dove servono parecchie linee di controllo, la dotazione “di serie” può non bastare, anche perché alcuni pin sono condivisi con risorse interne di Arduino oppure vengono dedicati alla gestione di shield esterni. In questi casi una possibile soluzione è passare a versioni più potenti di Arduino (per esempio la Mega, che dispone di più Elettronica In ~ Febbraio 2014 81 Schema funzionale )))))))) scheda RN-42 Arduino UNO Shield Relé 1 I/O delle classiche Duemilanove e Uno) oppure utilizzare appositi shield di espansione. In questo articolo vi presentiamo proprio uno shield che permette di aggiungere I/O e che nativamente può essere gestito da Arduino tramite un canale dati a bus I²C; lo shield è un I/O expander generico in grado di aggiungere otto uscite a relé ed altrettanti ingressi a livello TTL. Ognuno di voi può farne l’uso che ritiene più opportuno, tuttavia l’applicazione di queste pagine si propone non solo di aggiungere I/O ad Arduino, ma anche di permetterne il controllo in wireless mediante un collegamento Bluetooth, quindi tramite uno smartphone Android nel quale verrà installata un’apposita App che descriveremo più avanti. Cosa ancor più interessante, è che la struttura proposta è modulare, nel senso che su Arduino si possono montare più shield, fino ad ottenere un massimo di 64 input e 64 uscite a relé. LO SHIELD I/O EXPANDER A basso livello, la gestione del componente avviene tramite bus di comunicazione I²C, implementata, nello shield, dall’integrato MCP23017 di Microchip. Come molti di voi sanno, il bus I²C è un canale di comunicazione standard utilizzato per l’interconnessione a breve distanza tra un’unità Master e più Slave; 82 Febbraio 2014 ~ Elettronica In Shield Relé 8 tipicamente il Master è una MCU, mentre le unità Slave sono periferiche di vario genere che non richiedono microprocessori o microcontrollori, ma normali interfacce I²C-Bus come il componente Microchip da noi usato o il PCF8574 Philips/NXP. Il bus è composto da tre fili, di cui uno è la massa comune e gli altri due sono SCL (clock che scandisce la comunicazione) e SDA (linea dati seriale bidirezionale); il protocollo I²C-Bus prevede l’inizio di ogni sessione di comunicazione da parte della sola unità Master (le unità Slave si limitano a rispondere all’interrogazione della Master), la quale invia comandi composti da 8 byte, uno dei quali contiene l’indirizzo della Slave cui è diretto. Essendo, l’address, espresso mediante un byte, si può dire che l’I²C-Bus supporti 128 periferiche (in realtà solo 112, perché 16 address sono riservati). Solitamente l’identificazione delle singole unità Slave si realizza impostando l’opportuna combinazione logica sulle apposite linee di cui ogni integrato è provvisto; la gran parte degli integrati ha solo tre linee, che consentono 8 combinazioni. Nel nostro caso, la possibilità di definire la destinazione dei comandi su I²C-Bus ci permette di collegare contemporaneamente (uno sopra l’altro) più shield I²C I/O Expander; siccome ogni scheda di espansione dispone di 8 uscite a relé ed altrettanti ingressi digitali, è possibile ottenere un totale di 64 uscite a relé e 64 input digitali. Al sistema, realizzabile dotando Arduino di un certo numero di shield I/O Expander, abbiamo deciso di abbinare il controllo da Bluetooth, in modo da gestire da smartphone, per esempio, un certo numero di utilizzatori e di ingressi digitali. Per la comunicazione wireless abbiamo aggiunto uno shield Bluetooth RN-42, mentre lato Android abbiamo sviluppato un’apposita App che permette di visualizzare a display lo stato di tutte le risorse digitali ed inviare dei comandi di attivazione delle uscite. Essendo il sistema modulare (cioè possono essere aggiunti o rimossi shield I2C I/O Expander a piacimento) e versatile, sia il firmware Arduino che la App sono stati pensati e realizzati in modo che si auto-adattino alla situazione applicativa. In particolare, il firmware Arduino è in grado di rilevare quanti e quali shield Expander sono presenti; la App riceverà tali informazioni da Arduino e di conseguenza adatterà la propria interfaccia grafica. La App dispone di una pagina di configurazione in cui è possibile impostare le etichette di testo da utilizzare per la descrizione delle risorse I/O, permettendo così di adattarla alla configurazione hardware scelta. Infine, è presente una pagina
© Copyright 2024 Paperzz