Sistema basato su Arduino UNO WiFi per il controllo locale e remoto fino ad un massimo di 5 apparecchiature. (luci, riscaldamento, ecc.) con rilevamento di temperatura e umidità in tempo reale fino ad un massimo di due ambienti. Le apparecchiature possono essere attivate sia localmente, con indicazione visiva dello stato tramite LED, sia da remoto con una semplice interfaccia WEB implementata direttamente sulla scheda Arduino.
L'esigenza
L'esigenza nasce dalla necessità di controllare i sistemi di riscaldamento di una Scuola di Danza di 400 mq in provincia di Brescia. Questo sistema ha permesso l'ottimizzazione dei tempi di attivazione dei 3 sistemi di riscaldamento a gas della scuola, con un notevole abbattimento dei consumi e conseguente risparmio sulle bollette.
L'edificio, composto da due sale da ballo e un'area spogliatoi e servizi, è un capannone industriale adattato allo scopo ma che purtroppo non offre garanzie in termini di isolamento termico, i consumi di gas per il riscaldamento (e le conseguenti bollette) sono quindi di notevole entità e richiedono una particolare attenzione ai momenti di accensione e spegnimento dei 3 sistemi di riscaldamento separati per evitare di riscaldare inutilmente la scuola quando non ci sono lezioni ma di poterli accendere con un ragionevole anticipo rispetto all'orario delle lezioni per evitare di far trovare gli ambienti freddi.
I responsabili della scuola abitano a 10km di distanza dall'edificio e quindi si è reso necessario realizzare un sistema di controllo via rete (la scuola è dotata di connessione adsl con IP statico) che permettesse ai gestori di accendere e spegnere da remoto via rete i sistemi e controllarne lo stato, come pure controllare la temperatura e l'umidità delle due sale.
All'interno della scuola operano anche altre persone esterne all'associazione, era quindi necessario implementare un sistema con un doppio controllo: sia da remoto via web, sia in locale con comandi manuali. Le due modalità dovevano inoltre essere attive contemporaneamente e sincronizzate tra di loro: si doveva poter accendere un riscaldamento da locale e spegnerlo da remoto e viceversa e soprattutto controllare da remoto che non fossero stati dimenticati accesi i sistemi di riscaldamento a scuola chiusa.
La soluzione implementata
Il progetto è stato realizzato intorno alla scheda Arduino Uno WiFi che è una Arduino Uno con Wifi integrato, basata sul processore Atmega328P e il modulo WiFi ESP8266.
Il modulo WiFi ESP8266 è un microcontrollore da 80MHz che fornisce accesso ad una rete WiFi e dispone di front-end WiFi, con funzioni cioè sia di client che di access point, e di uno stack TCP/IP con supporto DNS.
Un'utile funzione della Arduino Uno WiFi è il supporto per la programmazione OTA, sia per il trasferimento degli sketch Arduino che per il firmware WiFi.
Questo permette di riprogrammare l’intero sistema, ad esempio per fare upgrade di nuove versioni software, senza la necessità di collegare fisicamente il cavo USB alla scheda stessa.
Questa funzionalità si rivela particolarmente utile in applicazioni tipo quella che stiamo descrivendo, dove non sempre è agevole raggiungere il dispositivo installato per connettere direttamente il PC da cui scaricare il software.
La scheda Arduino UNO è dotata di 6 input analogici, un quarzo a 16MHz, un connettore USB, un jack per l'alimentazione, un connettore per la programmazione ICSP, un pulsantino per il reset della scheda e 14 pin di input/output digitali (6 dei quali possono essere usati come segnali PWM).
Ognuno dei 14 pin digitali di input/output della scheda Arduino Uno WiFi opera con una tensione di 5V e può essere usato sia come ingresso che come uscita, utilizzando le funzioni pinMode(), digitalWrite() e digitalRead().
Ogni pin può fornire o ricevere un massimo di 40mA e dispone di una resistenza di pull-up interna (disconnessa di default) di 20-50 Kohm.
Il circuito che pilota i relè è del tipo a “stato basso”, cioè il relè si eccita e chiude il contatto in presenza di uno “ZERO” logico al piedino corrispondente di ingresso.
Un'importante caratteristica di questo modulo è la possibilità di distinguere l'alimentazione fornita ai relè dall'alimentazione fornita alla logica della scheda. Sul modulo è infatti presente un jumper a 3pin (GND-VCC-JDVCC) che permette di selezionare la fonte di alimentazione per i relè. Quando il ponticello è posizionato sui pin VCC/JD-VCC, la tensione fornita per alimentare la logica tramite il connettore a 10 pin viene utilizzata anche per alimentare i relè.
Se invece si volesse utilizzare una fonte di alimentazione differente per pilotare i relè, è sufficiente scollegare il ponticello e collegare la fonte di alimentazione esterna direttamente tramite i pin GND e JD-VCC del jumper (lasciando scollegato il pin VCC centrale del ponticello). In questo modo, l'alimentazione per la logica del modulo viene fornita tramite il connettore a 10 pin posto sulla scheda, mentre l'alimentazione per i relè viene prelevata dal jumper.
Potete acquistare questo banco relè, chiaramente visibile in Figura 3, sia su Amazon sia qui: https://www.robotstore.it/product/682/Modulo-Rel%C3%A8-8-canali-DC-5V-per-Arduino-e-Raspberry-Pi.html
Sono disponibili varie versioni che differiscono solo per il numero di relè presenti sulla scheda.
Anche se nel progetto in questione è stato usato il modello a 8 relè, il sistema ne pilota solo i primi cinque, non avendo la Arduino Uno WiFi un numero sufficiente di porte per pilotarli tutti e 8 e contemporaneamente gestire 8 pulsanti per l'attivazione/disattivazione.
Per ottenere la corrente necessaria per pilotare le logiche di ingresso dei Relè e contemporaneamente i LED posizionati sul pannello switch montato all’esterno del contenitore e visibili dall’esterno, le uscite della scheda Arduino (dalla 9 alla 13) si interfacciano con un integrato 74LS244. In Figura 2 è visibile l'integrato montato accanto agli switches.
[...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2281 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Complimenti per l’articolo. L’idea alla base é interessante: rendere possibile il controllo e il comando di un ambiente mediante un dispositivo che integri le piú comuni caratteristiche di un modulo domotico.
Un upgrade potrebbe essere quella di usare un single-board computer che faccia da modulo e da master-node: il banale impiego di MQTT e di node JS renderebbe possibile la creazione di un nodo di “gestione” e l’installazione di piú moduli “slave” all’ínterno dello stesso edifizio.
Faccio notare che viene scritto “il browser all’interno del dispositivo” quando forse si intendeva ” il web-server all’interno del dispositivo”.
Ciao a tutti. Non conosco la scheda usata in questo progetto, che dovrebbe essere un’estensione della Rev3 se non sbaglio. Io in genere uso questa per i miei progetti, ma il wifi integrato offre senza dubbio uno spettro più ampio di applicazioni e immagino anche una capacità computazionale maggiore per via del processore di questa scheda.
Salve a tutti, ho visto che in questo progetto domotico viene usato il sensore DHT11. Qualcuno può fornirmi altre info di applicazioni su questo componente? Grazie a quanti vorranno rispondermi.
Le segnalo un link che la riporta a un articolo in inglese: http://embedded-lab.com/blog/measurement-of-temperature-and-relative-humidity-using-dht11-sensor-and-pic-microcontroller/.
Sulla piattaforma dei progetti Arduino si trovano molti esempi applicativi. Provi a dare un’occhiata a questo link: https://www.progettiarduino.com/11-temperatura-e-umiditagrave-dht-11.html. Ovviamente si tratta sempre di schemi prototipali, ma molto utili.
Il progetto è molto carino, peccato per i 3 relays rimasti che rimangono inutilizzati. Per rimediare, posso suggerire l’impiego di un IO expander come il PCF8574AN, controllabile tramite I2C, per poterli utilizzare e magari implementare altre piccole funzioni (tramite I2C, quindi usando solo due pin, si hanno a disposizione 8 gpio messi a disposizione dell’integrato). Ovviamente, sarà necessario introdurre la libreria per la gestione del protocollo i2c, sempre che sia possibile dal punto di vista di memoria disponibile.
Ciao a tutti, ottimo sistema di controllo, mi chiedevo se il sistema è utilizzabile in un appartamento dove di solito è presente un solo termostato posizionato in una stanza e determinante per il riscaldamento di tutte le stanze, mi piacerebbe usare il sistema per riscaldare più stanze separatamente regolando la temperatura desiderata per ogni stanza autonomamente in un impianto dove vengono usati dei caloriferi, e comunque usando una sola caldaia . ad esempio comandare delle valvole dove si bypassano i caloriferi dove la stanza sono già calde a vantaggio di quelle fredde sfruttando il segnale dato da un termostato posizionato in ogni stanza.
Ciao,
per poter controllare singolarmente i termosifoni di ogni stanza devi necessariamente avere delle valvole di zona che potresti controllare con i relè, il problema è che dovresti metter mano alla parte idraulica ( non poca cosa), in più devi considerare che solitamente l’impianto è diviso a zone ( a meno che con un solo termostato tu non abbia un impianto monotubo, in questo caso è impossibile la suddivisione), quindi ad esempio zona giorno, notte, bagni, ma ti mancherebbe il controllo delle temperature delle singole zone, che potrebbe comunque esser gestito automaticamente dai sensori di temperatura ( vedi dht 11), magari impostabili via wifi.
Ottimo progetto: semplice ed economico quanto utile ed efficace. Immagino che nella stessa rete domestica si possano collegare due o più progetti Domus1.0 con differenti IP e poi richiamarli dallo stesso Browser per leggere informazioni o comandare differenti locali. Grazie.
Ottimo progetto, anche se con limitazioni da punto di vista della sicurezza. Facilmente un intruso può entrare nel sistema e pilotarlo a distanza.
Si può evitare l’utilizzo del buffer ls244 in quanto la corrente in gioco è inferiore ai 5mA (circa 3 per il LED e 2 per l’optoisolatore) e pertanto pilotabile direttamente da Arduino. Un risparmio economico, una semplificazione circuitale ed un minor cablaggio. Se non si usano pulsanti di qualità io metterei un condensatore da 0.1uF in parallelo a ciascun pulsante per evitare il rimbalzo del contatto.