Condizionatore comandato via Internet con ESP8266
Sommario:
Utilizziamo l'ESP8266 con IDE Arduino per comandare via Internet qualsiasi condizionatore d'aria. Si potrà quindi visualizzare la temperatura della stanza da remoto e decidere se accendere o spegnere il condizionatore.
Introduzione:
Ho avuto quest'idea dopo aver creato il Termoigrometro Web. Mi sono chiesto "Perché non aggiungere un pulsante che permetta di accendere o spegnere un condizionatore?". Peccato solo che nel 2015 non avevo ancora un condizionatore :)
Nel 2017 ho acquistato un Mitsubishi MSZ-HJ25VA per condizionare la mia stanza. Il telecomando permette di impostare un timer di accensione o di spegnimento (non tutti e due) e solo a intervalli di un'ora.
Quello che facevo per trovare la camera fresca al mio ritorno senza lasciare il condizionatore acceso tutto il giorno era ovviamente di impostare il timer in modo che accendesse un'ora prima del presunto ritorno a casa... era ovvio che non funzionava molto bene, perché bastava un minimo contrattempo (esempio: il prof di analisi matematica ci trattiene per 15 minuti in più facendoci perdere il treno :/ ) per sprecare energia o viceversa arrivare quando il condizionatore era ancora spento.
Capitava anche che la mattina facesse fresco e quindi mi dimenticassi di impostassi il timer, per poi ricordarmene in stazione al ritorno :D. Insomma, non era un sistema affidabile.
All'inizio avevo pensato di utilizzare il pulsante "Emergency ON SW" integrato nel condizionatore: se premuto una volta, attiva il condizionatore in modalità "Freddo" a 24°C, se premuto due volte in modalità "Caldo" sempre a 24°C. Solo che non volevo smontare il condizionatore dato che è ancora in garanzia.
Per cui ho avuto l'idea di adoperare un telecomando universale comprato dai cinesi: poteva essere modificato senza problemi, se lo bruciavo costava solo 2,99€ e il vano batterie poteva contenere l'ESP8266 e il DHT11.
Così ho fatto, ed ecco il risultato :)
Descrizione e funzionamento
Non apprezzando particolarmente l'Internet delle Cose ma riconoscendo i suoi lati positivi (molto pochi secondo me) ho adottato un approcio molto "a forza bruta" (un solo pulsante ON-OFF) per i seguenti motivi:
- Difficoltà di interfacciamento con il telecomando per l'impostazione della temperatura etc. dato che si può solo "scrivere" sul telecomando e non "leggere" dal telecomando (vedremo dopo come ho risolto per l'accensione e spegnimento).
- Obbligo di uso di un ESP più grande dell'ESP-01 e quindi impossibilità di far stare tutto all'interno del telecomando, senza contare gli svantaggi degli ESP più grandi (passo non 2,54 mm quindi impossibilità di usare una basetta millefori etc.)
- Limitazione dei danni che un possibile "hacker" (meglio chiamarlo script kiddie :)) o un bug possono fare, visto che l'ESP8266 può solo accendere e spegnere il condizionatore secondo i parametri impartiti dal telecomando!
Come già detto il circuito è composto da un microcontrollore ESP8266 (ESP-01) programmando usando l'IDE Arduino e una breakout board che mi sono autocostruito per la programmazione, un sensore DHT11 per rilevare la temperatura e l'umidità (e quindi verificare se il condizionatore si è avviato) e un telecomando universale
Il telecomando è stato smontato per sapere come funzionava il pulsante di accensione ed è risultato che uno dei due contatti deve essere portato a 0 per accendere il clima. Una resistenza di pull-up mantiene il contatto (collegato alla porta GPIO2 dell'ESP) a 3,3V anche durante la fase iniziale di accensione.
Il DHT11 è collegato alla porta GPIO0 e viene usata la libreria speciale per l'ESP (DHTEsp.h).
All'inizio dello sketch vanno configurati i parametri della rete Wi-Fi: SSID e Password. L'IP viene attribuito tramite DHCP e viene mostrato all'inizio nell'uscita seriale.
La pagina Web generata è in HTML5 sintatticamente valido e la stringa meta name="viewport" garantisce la compatibilità anche con i cellulari.
Attenzione:
- Mettere una resistenza di pull-up da 4.7k tra il pin 1 e 2 (Vcc e Signal) del DHT11.
- Alcuni moduli ENC28J60 hanno già un regolatore 3.3V a bordo: nel caso il vostro non funzionasse e mostrasse
- sintomi quali il LED molto debole, mancata risposta o instabilità, provate a collegarlo a 5V anziché 3.3V.
Fotografie, schema e software:
Arduino Uno (clone), DHT11 e ENC28J60 La pagina Web in esecuzione Schema elettrico (Fritzing), cliccare sopra di esso per vederlo ad alta risoluzioneCollegamenti:
Arduino |
ENC28J60 |
DHT11 |
5V |
VCC (1) |
|
GND |
GND |
GND (4) |
3.3V |
VCC |
|
2 |
Signal (2) |
|
10 |
SS (CS) |
|
11 |
SI |
|
12 |
SO |
|
13 |
SCK |
Software
Licenza GPL v3, è possibile modificarlo e ridistribuirlo purché non se ne alteri il mio copyright né venga incluso in prodotti commerciali.
Download (nel caso non funzionasse, fare clic destro sul link e poi "Salva destinazione come")
Librerie necessarie:
Ultimo aggiornamento: 10/9/2015