Arduino, Modbus ed Android in tre passi

Diagram

Animare gli oggetti è sempre più economico e semplice, vediamo come realizzare un nodo Ethernet interfacciato attraverso Android e Modbus in mezz'ora.

Circa un anno fa, Elettronica Open Source fu il primo sito su cui iniziammo a parlare di Souliss, era in corso Make4Cash e partecipammo per ricevere critiche e suggerimenti e capire quanto potesse interessare un progetto del genere. L'idea era fondamentalmente quella di semplificare la vita a tutte quelle persone che volevano cimentarsi in piccole automazioni in stile fai-da-te, per rendere trasparente all'utente tutta la parte di "basso" livello, dai protocolli ai driver per le interfacce di comunicazione. La partecipazione ebbe un buon esito, dando spinta e visibilità a Souliss.

Di base c'era già quanto serviva, con una struttura che pur mutata ha mantenuto inalterati i principi fondamentali, quali la comunicazione in peer-to-peer tra tutti i nodi della rete, sviluppando il supporto per diverse soluzioni hardware ed arrivare a poter realizzare i propri oggetti interconnessi in tre passi : configura, carica e divertiti. Nel frattempo siamo riusciti a realizzare anche una documentazione di supporto, è quindi tempo di parlare di Souliss in termini concreti, mostrando una semplice realizzazione basata su schede Olimex. Nell'esempio viene realizzato un nodo interfacciabile via Modbus (un protocollo binario molto usato in ambito industriale) ed Android, che permettono di controllare i relé a bordo scheda.

Il primo componente da analizzare è il modulo Ethernet, nell'esempio basato sul Microchip ENC28J60 e sullo stack uIP modificato per Souliss, utilizzato per connettere la scheda a microcontrollore (Atmel Atmega32U4, lo stesso di Arduino Leonardo) al mondo Ethernet/IP e di conseguenza è il punto di accesso per l'applicazione Android e Modbus. I relé sono contenuti nella MOD-IO2, un'estensione a relé controllata con un semplice protocollo trasferito via I2C. Le tre schede sono collegate tra loro attraverso un cavo piatto con due connettori maschio a 10 pin (5 su 2 file) ed uno femmina.

 

 

 

 

L'interconnessione viene realizzata attraverso il connettore UEXT, che permette di trasferire i principali protocolli di comunicazione (SPI, I2C, USART) tra schede diverse, rendendo l'interconnessione molto agevole, nel nostro caso è sufficiente rimuovere i pin centrali (5 e 6) dal connettore dedicato al modulo Ethernet, perché in comune con I2C.

 

 

 

 

Il connettore femmina può essere utilizzato sul modulo a microcontrollore AVR-T32U4, utilizzando il connettore maschio senza i pin centrali per il MOD-ENC28J60 ed il rimanente per il modulo a relé MOD-IO2. E' sufficiente collegare i tre moduli ed il gioco è fatto.

A questo punto si può passare al codice, open-source e gratuito, disponibile su Google Code e seguire le istruzioni per il primo caricamento attraverso la IDE di Arduino.

Dall'Arduino IDE è sufficiente navigare nella cartella Olimex da Examples->Souliss->hardware, dove sono disponibili tutti gli esempi del caso, quello in nostro esame ssOlimex_ex02_Lights, a questo punto si verifica la configurazione QuickConfiguration e si compila.

La configurazione consiste nello specificare l'hardware in uso, in modo che vengano caricati i driver corretti per gestire la scheda, dalla lista delle soluzioni disponibili la nostra è "Olimex OLIMEXINO-328 with MOD-ENC28J60 and MOD-IO2" identificata dal codice 0x15, abilitando inoltre l'opzione Modbus TCP gateway.

A questo punto possiamo provare la prima comunicazione via Modbus; è sufficiente fornire l'indirizzo IP della scheda, una spiegazione passo-passo è disponibile nel nostro wiki Modbus TCP Master .

 

 

 

 

 

 

Attraverso Modbus è possibile controllare i relé e leggere il loro stato, inoltre collegando un interuttore monostabile tra GPIO0 o GPIO1 e GND si possono controllare i relé manualmente, in questo caso lo stato in Modbus segue l'effettiva condizione dei relé.

Come promesso è anche possibile controllare il nodo via Android, l'applicazione è disponibile gratuitamente su proprio qui su GooglePlay fornendo una connessione diretta alla scheda (che a sua volta deve essere connessa ad uno switch o router WiFi), basta inserire l'indirizzo IP ed effettuare una ricerca dei nodi disponibili.

 

 

Quello che vi abbiamo mostrato è solo un "Hello World" ma è possibile realizzare reti di oggetti interconnessi, utilizzando nel contempo connessioni su filo come Ethernet e soluzioni Wireless ma per saperne di più dovrete attendere il prossimo articolo.

23 Comments

  1. Emanuele 22 luglio 2013
  2. illupo89 22 luglio 2013
  3. Emanuele 22 luglio 2013
  4. Emanuele 19 luglio 2013
  5. veseo 19 luglio 2013
  6. illupo89 19 luglio 2013
  7. veseo 21 luglio 2013
  8. illupo89 21 luglio 2013
  9. Piero Boccadoro Piero Boccadoro 21 luglio 2013
  10. Piero Boccadoro Piero Boccadoro 21 luglio 2013
  11. Piero Boccadoro Piero Boccadoro 21 luglio 2013
  12. veseo 21 luglio 2013
  13. illupo89 21 luglio 2013
  14. illupo89 21 luglio 2013
  15. veseo 21 luglio 2013
  16. illupo89 21 luglio 2013
  17. IvanScordato Ivan Scordato 21 luglio 2013
  18. IvanScordato Ivan Scordato 21 luglio 2013
  19. Piero Boccadoro Piero Boccadoro 21 luglio 2013
  20. Piero Boccadoro Piero Boccadoro 21 luglio 2013
  21. illupo89 21 luglio 2013
  22. IvanScordato Ivan Scordato 21 luglio 2013
  23. veseo 21 luglio 2013

Leave a Reply