• Stampa

 

LA CASA DOMOTICA


In commercio esistono numerose apparecchiature che permettono di controllare in remoto qualsiasi oggetto elettronico in casa.

Ma è possibile crearne uno utilizzando il microcontrollore ARDUINO?

Questo è il mio progetto di casa domotica dove tramite pagina web è possibile controllare:


 

casa-domotica

 


- le vie d'accesso alla casa... Cancelli, Portone Basculante

- l'accensione delle luci con timer e orario di accensione

- l'irrigazione del giardino con timer e orario di accensione

- le temperature dei locali o di determinate apperechiature (inverter , quadri elettrici . . .)

- i consumi di elettricità istantanea (watt) dell'intera abitazione e la produzione dell'impianto solare.

 

 


 

Il Materiale utilizzato :

 

ARDUINO MEGA     

arduino-mega

 

CARATTERISTICHE:

    Microcontrollore: ATmega2560
    Tensione operativa: 5V
    Input Voltage: (consigliata) 7-12V
    Input Voltage: (limiti) 6-20V
    Pin di I/O Digitali: 54 (14 dei quali forniscono in uscita segnali PWM)
    Pin di Input Analogici: 16
    DC Current per I/O Pin: 40 mA
    DC Current per Pin alimentati a 3.3V: 50 mA
    Flash Memory: 256KB (dei quali 8KB utilizzati dal bootloader)
    SRAM: 8KB
    EEPROM: 4KB
    Frequenza di Clock: 16MHz

 


 

Arduino Ethernet Shield

With Wiznet W5100 Ethernet Chip   

arduino-lan-w5100

 


 

 

Arduino Real time Shield su bus I2C

con sensore di temperatura e EEPROM

arduino-real-time-ds18b20

 

CARATTERISTICHE:

1.    DS1307 I2C real time clock chip (RTC)
2.    24C32 32K I2C EEPROM memory
3.    Use LIR2302 rechargeable lithium battery, and have charging circuit
4.    solve the problem that DS1307 with spare battery but cannot read or write.
5.    Full charge, battery can use 1 year for DS1307 timing.
6.    Size: 25 mm * 28 mm * 8.4 mm
7.    Draw out DS1307 clock pin, provide the clock signal for the MCU.
8.    Can cascade other I2C devices.
 


 

Arduino Gas Sensor Shield

aumenta il valore di output rispetto alle emissioni di gas riscontrate: fumo, metano, carbon dioxide e altri gas.

arduino-smoke-sensor

 

CARATTERISTICHE:


1-Arduino smoke gas sensor
2-Detects smoke, methane, carbon dioxide and other gases
3-Gives alarms when the smoke/gas leaks
4-Power supply needs: 5V DC

 


 

Scheda rele 12v con pilotaggio compatibile

con le uscite Arduino

8-relay

 

 

CARATTERISTICHE:


- Each one needs 15-20mA Driver Current
- Equiped with high-current relay : DC30V 10A AC250V 10A

 


 

Sensore lineare di corrente interfacciabile con Arduino

current-sensor

 

Full P/N: ACS756SCA-050B-PFF-T (Link PDF).

Fully Integrated, Hall Effect-Based Linear Current Sensor IC with 3 kVRMS Voltage Isolation and a Low-Resistance Current Conductor.

 

 


 

Il codice ARDUINO :

L'arduino mega per poter gestire i sensori e un interfaccia web deve essere programmato.

Per far ciò dobbiamo appoggiarci alle librerie degli shield e strutturare una gestione delle richieste in input e output.


diagramma-software-codice-arduino


L'interfaccia web :

- deve permettere la protezione della pagina web con autenicazione per evitare accessi indesiderati.

- visualizza lo stato dei rele, le temperature e il consumo di corrente con codice HTML dove vengono inseriti in output i valori delle variabili, in textbox o checkbox

- permettere di controllare i rele per aperture cancelli o accensione dispositivi utilizzando dei pulsanti con comandi POST


Per fare tutte queste cose mi appoggio alla libreria "Webduino"... l'unica che gestisce l'autenticazione della pagnia web.

 

webduino


La parte principale del programma effettua dei controlli temporizzati utilizzando il comando "MILLIS" :

- verifica l'orario per l'attivazione/disattivazione dei timer

- resetta le variabili giornaliere a fine giornata (irrigato/non irrigato) per impedire l'esecuzione più volte del task.

- attende input e l'output delle porte seriali.



 



Per poter collegare i sensori e i rele agli utilizzatori l'unico problema che si può presentare è la possibilità di far passare i cavi nei tubi a muro. Per questo motivo ho optato per il collegamento di più arduini dislocati nei quadri elettrici della casa e collegati tra loro in seriale e quindi con 3 fili: TX,RX e GND.

 Ho scelto come controllori arduino periferici la versione "UNO" con disponibili 12 porte digitali e 6 porte analogiche.

arduino-uno

La porta seriale dell'UNO è condivisa con la USB di debug/programmazione e quindi ad ogni modifica/upload del programma si deve disconnettere la seriale di collegamento tra gli arduini. Mentre L'arduino MEGA  "MASTER" è dotato di 3 seriali indipendenti e 1 di debug/upload e quindi non necessitarà di scollegamento per l'aggiornamento del programma.


Questo è lo schema di collegamento tra uno o più arduino si collegano il TX con l'RX  e viceversa :

arduino-serial

Per la comunicazione seriale dobbiamo creare una sorta di protocollo per evitare che si sovrappongano più richieste dai vari microcontrollori. Stabilita la lunghezza della stringa cha conterrà gli stati dei sensori/rele si utilizza la funzione :

void serialEvent(){
//statements
}
void serialEvent1(){
//statements
}
void serialEvent2(){
//statements
}
PER ARDUINO UNO
 PER MEGA
PER MEGA

 

Viene eseguita ogni ciclo di loop in automatico e abbinata al controllo di dati nel buffer:

      if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();

                // say what you got:
                Serial.print("I received: ");
                Serial.println(incomingByte, DEC);
        }

Permette di ricevere la stringa dati.

 

 

 

 

 

 

 

CONTINUA ...