Domotica: progetto “BTBH Relay v1.0”

La domotica, dall’unione delle parole domus (che in latino significa “casa”) + robotica, è la scienza interdisciplinare che si occupa dello studio delle tecnologie atte a migliorare la qualità della vita nella casa e più in generale negli ambienti antropizzati.

Cos’è il BTBH Relay v1.0?

Il BTBH Relay v1.0 è un progetto di domotica da me realizzato con lo scopo di controllare via pc o smartphone l’illuminazione ed altri apparecchi alimentati dall’elettricità di una stanza.
È sostanzialmente una centralina elettrica azionata da una scheda elettronica controllata da un PC.

 

Domotica: schema progetto btbh relay

 

 

 

 

 

 

Il funzionamento è il seguente:

  1. Uno smartphone (client) collegato ad internet si collega al PC (server)
  2. Sul PC vi è un software che cattura gli input che arrivano via internet e li invia alla scheda elettronica
  3. La scheda elettronica trasforma il messaggio digitale in un impulso elettrico ed attiva il relay
  4. Il relay accende la luce come un normale interruttore

 

Cos’è un relay?

Un relay non è altro che un interruttore che invece di essere attivato e disattivato con la pressione di un dito viene controllato da un elettromagnete.
In questo progetto è necessario utilizzare un relay poiché la corrente elettrica che passa in questi circuiti elettronici (5 Volts) è molto più bassa rispetto alla quantità di elettricità richiesta dagli apparecchi che si andranno a controllare (luci, tv, ecc.) (230 Volts).
Con un impulso di 5 Volts il relay fa passare 230 Volts di corrente.
Se non ci fossero i relay e tutto fosse collegato direttamente alla scheda elettronica, questa si brucerebbe.

 

Cos’è la scheda elettronica (Arduino)?

Arduino è una scheda elettronica dotata di un microcontrollore programmabile.
Cioè è una scheda, dotata di ingressi ed uscite elettriche, in cui è possibile caricare del codice software che poi verrà eseguito dalla scheda con lo scopo di trasformare un comando virtuale in qualcosa di reale.

 

Fasi della realizzazione

  1. Costruzione della centralina e della parte elettrica.
  2. Scrittura del software per il microcontrollore.
  3. Scrittura del software server per il PC. Backend.
  4. Costruzione dell’interfaccia grafica per il controllo della centralina. Frontend.

 

#1 Costruzione della centralina

Progetto domotica: costruzione della centralina

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Arduino
  2. Transistor (Componenti elettroniche che gestiscono l’alimentazione dei relay)
  3. Relay

 

A tre delle “uscite” della scheda Arduino vengono collegati (uno per uscita) i tre Transistor che collegano il circuito d’alimentazione ai relay.

Quando da una delle uscite di Arduino verrà inviato un impulso elettrico, questo arriverà ai transistor che chiuderanno il circuito e faranno arrivare elettricità ai relay. L’elettromagnete dei relay si attiverà e muovendo una piccola barra metallica chiuderà il circuito finale.

Foto ingressi e uscite elettriche

 

 

 

 

 

 

 

 

 

 

 

 

  1. Ingresso elettricità per gli apparecchi finali (230 Volts).
  2. Prese elettriche. Uscite finali.

 

#2 Scrittura del software per il microcontrollore.

Come primo passo, nel codice software, bisogna dichiarare quali “uscite” della scheda sono state utilizzate. In questo caso la numero 2, la numero 3 e la numero 4.

Per comodità queste tre “uscite” sono state chiamate ch0, ch1, ch2.

int ch0 = 2
int ch1 = 3
int ch2 = 5

Dopodiché bisogna dire al microcontrollore se vogliamo usare le “porte” di Arduino come ingressi oppure uscite. Nel nostro caso uscite.

Definizione funzione porte Arduino

 

 

Infine decidiamo quali segnali virtuali riceverà il microcontrollore (in questo caso: 1,2,3 e a,b,c) e cosa dovrà fare una volta che li avrà ricevuti, ovvero accendere (HIGH) e spegnere (LOW).

 

Codice sorgente microcontrollore: segnali virtuali

 

 

 

 

 

 

 

 

 

 

 

 

 

#3 Scrittura del software server per il PC. Backend.

Il software server che ha il compito di gestire i dati provenienti dal web ed inviare delle “risposte” ad Arduino è scritto in Python, un linguaggio di programmazione molto versatile.

Il software svolge anche la funzione di Web Server, cioè invia e gestiste le pagine web che fungono da interfaccia grafica.

Per scrivere questo software è stato utilizzato Flask, un framework per python per semplificare la costruzione di WebApp.

La parte principale del software ha il compito di associare ogni url della WebApp ad un’operazione da compiere.

Domotica: listato Python per controllo arduino

 

 

 

 

 

 

 

 

 

 

 

 

 

Come si può notare il comando s.write invia le lettere e i numeri che erano stati prestabiliti nel software per il microcontrollore.

Il software server però non svolge solo questa funzione, ma anche l’integrazione col PC attraverso messaggi vocali (os.system(“say …) e crea delle risposte reali agli eventi virtuali del computer. Ad esempio lo spegnimento di tutti i monitor sulla scrivania e delle periferiche (stampante, casse, alimentazione degli hardisk esterni) dopo lo spegnimento del computer (in modo che non ci sia la possibilità di dimenticare di staccare la spina ed evitando così inutili sprechi), oppure il “lampeggiamento” delle luci della stanza quando arriva una mail importante.

Listato Python: shutdown

 

 

 

Per far si che il software possa inviare e ricevere dati da uno smartphone deve “servire” delle pagine web che diano la possibilità all’utente di scegliere cosa fare. Per questo motivo il server deve mettersi in ascolto su una porta. La porta standard per il traffico http è la porta 80.

Listato Python: avvio webapp

 

 

192.168.1.68 è l’indirizzo ip del server.

 

#4 Costruzione dell’interfaccia grafica per il controllo della centralina. Frontend.

L’interfaccia grafica non è altro che una pagina web che invia al server le scelte dell’utente.

Progetto domotica: codice sorgente interfaccia grafica

 

 

 

 

Realizzando l’interfaccia in modalità responsive, grazie ai nuovi html5 e css3 che lo rendono molto semplice, questa si adatterà a qualsiasi tipo di schermo garantendo sempre un’ottima esperienza utente.

Progetto domotica: interfaccia grafica responsive

 

 

 

 

 

 

Progetto domotica: interfaccia grafica smartphone

 

 

 

 

 

 

 

 

 

 

 

Progetto domotica interfaccia grafica: tab menu

 

 

  • Cliccando su uno di quei pulsanti verrà aperto uno degli url della WebApp.
  • Sul server ogni url è associato ad un’azione da compiere.
  • Viene inviato alla scheda Arduino il comando corrispondente al bottone premuto.
  • La scheda attiva o disattiva il relay corrispondente.
  • L’apparecchio scelto si accenderà o spegnerà come richiesto.

Una qualsiasi di queste operazioni può essere svolta anche quando ci si trova fuori da casa se si dispone di un collegamento ad internet.

Questa è solo la prima versione del progetto che verrà ampliato per controllore molti altri dispositivi, tra i quali: il sistema di riscaldamento attraverso l’emulazione di un telecomando ad infrarossi e l’attivazione dei sistemi di isolamento in caso di fulmini per evitare danni all’impianto.

 

Andrea Carriero | BTBH

https://btbh.net

https://codethinker.net

andrea@btbh.net

 

Commenti

commenti