Vai ai contenuti

Arduino e la domotica open source

L'esempio proposto in questo articolo rispecchia quello presentato al Linux Day 2011 di Perugia ed alla fiera ExpoElettronica di Bastia. Tale implementazione, che pone Arduino al suo centro, permette di ideare una piattaforma in grado di pilotare diversi dispositivi elettronici. La caratteristica di questa piattaforma, è la sua capacità di adottare dei protocolli di comunicazione in grado di essere trattati da qualsiasi smartphone o computer.

Vorrei fare la premessa che questo non è un tutorial per introdurvi nell'argomento. Poiché verranno utilizzati degli elementi che richiedono conoscenze base di elettronica, un uso non consapevole di tali elementi potrebbe causare un guasto o un danneggiamento dei vostri dispositivi. Proprio per questo, se siete completamente a digiuno, è più opportuno sfruttare altri esempi presenti nel sito principale di Arduino (http://arduino.cc/en/Guide/HomePage).

Arduino progetto


L'intero progetto sfrutta le capacità di Arduino per comandare 3 dispositivi: una ventola e due lampadine. Il valore aggiunto del progetto è la possibilità di usufruire della suddetta funzionalità, mediante l'uso di uno smartphone Android grazie ad un'applicazione appositamente sviluppata.

I requisiti hardware per riprodurre questo esempio, sono i seguenti:

  • qualsiasi Arduino che disponga di un connettore RJ45 (ethernet). Il dispositivo Arduino può integrarlo nativamente o mediante l'espansione di un Ethernet Shield. In questo esempio è stato utilizzato un Arduino Ethernet con Power Over Ethernet la cui funzione POE non è necessaria;
  • dispositivi di networking per implementare una rete locale con connettività wireless e cablata;
  • uno smartphone Android qualora si voglia utilizzare l'applicazione mobile per il controllo;
  • uno (o più) LED da utilizzare come indicatore di stato del dispositivo fisico;
  • uno (o più) transistor 2N3904;
  • uno (o più) diodi 1N4007 (o 1N4004);
  • uno (o più) relè per la commutazione di segnali a due contatti in scambio per bassi carichi con tensione di alimentazione della bobina a 12V (DC);
  • almeno un dispositivo in grado di essere pilotato da un relè;
  • 2 resistenze (o più) rispettivamente da 5,6 KOhm e da 1 KOhm;
  • batteria da 12V per alimentare i dispositivi.

NOTA: nei requisiti sono indicati gli elementi per pilotare un dispositivo. Qualora si vogliano pilotare 3 dispositivi, come in questo caso, saranno necessari 3 transistor, 3 diodi, 3 relè, 6 resistenze e 3 LED di stato. Nella figura sono presenti 4 relè in quanto una lampadina disponeva di un doppio filamento.

La realizzazione dell'esempio, pone l'attenzione a due problematiche principali: costruire una board che funga da intermediaria tra Arduino ed i dispositivi fisici ed implementare un meccanismo di comunicazione tra Arduino e lo smartphone.

Di seguito è presente l'immagine della board, riferita al controllo dei tre dispositivi, ed il relativo schema riferito al controllo di un singolo dispositivo (tale schema, quindi, va replicato):

Arduino rele board Arduino rele schema

L'idea principale, è quella di sfruttare il microcontrollore Arduino, definito nello schema come "Arduino Digital Pin", per inviare un impulso positivo alla resistenza R1. A questo punto, il transistor T1 sarà mandato in saturazione e questo causerà la chiusura del circuito con la batteria a 12V. In questo modo, il flusso di corrente sarà sufficiente per eccitare il relè K1 il quale chiuderà il contatto P1-S1. Poiché il relè è collegato ad un dispositivo fisico, questo causerà la sua accensione.

E' presente il diodo D1, connesso con la bobina del relè, per garantire la protezione del transistor e del dispositivo. Questo è necessario poiché, quando il transistor è in stato OFF, la bobina induttiva del relè accumula energia elettromagnetica. In questo modo, invece, l'energia immagazzinata nell'induttore durante la fase OFF del transistor, viene dissipata attraverso il diodo e nella resistenza interna della bobina del relè. Tuttavia, qualora utilizziate un relè che dispone di un diodo integrato, il diodo D1 può essere omesso ma a quel punto bisogna prestare attenzione al verso di posizionamento del relè.

I valori delle resistenze sono state calcolate sulla base dei dispositivi utilizzati quindi, qualora cambi la fonte di alimentazione (5V anziché 12V) o la tipologia dei dispositivi impiegati, i valori delle resistenze vanno ricalcolate. E' consigliabile che Arduino sia alimentato dal proprio trasformatore e che la batteria impiegata per alimentare le lampadine e la ventola sia a 12V in modo da ridurre gli ampere necessari. Questo porta ad un minor surriscaldamento dei dispositivi.

Curato il controllo dei dispositivi da parte di Arduino, è necessario curare il meccanismo di comunicazione. Affinché Arduino comunichi con lo smartphone Android, è necessario che siano entrambi connessi alla stessa rete locale. Arduino dovrà essere collegato mediante un cavo ethernet mentre lo smartphone Android mediante il dispositivo wireless. Il funzionamento del meccanismo di comunicazione prevede l'invio dei comandi da parte dello smartphone grazie al protocollo HTTP. Arduino resta in ascolto sulla porta 80 interpretando le richieste GET ricevute. A seguito dell'esecuzione di un comando, Arduino risponderà con una stringa formattata secondo la notazione JSON. Questo significa che i dispositivi fisici collegato ad Arduino possono essere comandati da un qualsiasi browser presente su uno smartphone o un computer.

Il set di comandi deve prevedere la possibilità di restituire i vari dispositivi collegati, il loro stato di funzionamento (acceso o spento) ed una funzione che permetta di cambiare lo stato. Il cambio dello stato è proprio la funzione che satura il transistor ed esegue lo schema sopra indicato.
In questo indirizzo (https://github.com/emanuele-palazzetti/DomoticaArduino), è disponibile il software da caricare all'interno di Arduino tramite l'IDE standard. Nella pagina è disponibile la documentazione che spiega come modificare il codice in base alle proprie esigenze.

Nell'esempio presentato, è stata sviluppata un'applicazione Android in modo da evitare l'uso diretto di un browser. In questo modo, è messa a disposizione un'interfaccia molto più semplice ed intuitiva per il controllo dei dispositivi. Il codice sorgente dell'applicazione Android è disponibile al seguente indirizzo (https://github.com/emanuele-palazzetti/DomoticaArduinoAndroid). Nella pagina è presente anche la documentazione per eventuali modifiche volte ad adattare l'applicazione sulla base delle proprie esigenze.

3.25
Media: 3.3 (4 voti)
Your rating: Nessuno