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:
- 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
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 Real time Shield su bus I2C con sensore di temperatura e EEPROM |
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. |
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
CARATTERISTICHE:
- Each one needs 15-20mA Driver Current
- Equiped with high-current relay : DC30V 10A AC250V 10A
Sensore lineare di corrente interfacciabile con Arduino |
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.
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.
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.
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 :
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 ...