Termostato wifi con Arduino e miuPanel

Ciao a tutti!

Il progetto che realizzeremo oggi è un termostato wifi controllabile con una applicazione per smartphone.
In pratica da dovunque voi siate potrete controllare un dispostivo tramite la chiusura di un contatto di un relè (una caldaia, un ventilatore, una scaldiglia,etc)






I componenti di cui avremo bisogno sono:

  • una scheda Arduino
  • un modulo wifi miuPanel SCF-01 (acquistabile qui)
  • un sensore di temperatura DHT11
  • un modulo relè 
  • breadboard e cavetteria varia.



Ecco il video del primo prototipo, in cui potete vedere il funzionamento del sistema:




Schematizzando il principio di funzionamento di questo sistema è il seguente:

  •  la scheda wifi miuPanel si collega alla vostra rete wifi di casa
  •  la scheda Arduino invia, via seriale, le informazioni al modulo miuPanel per generare il pannello grafico che vedrete sul vostro smartphone.
  •  scaricate poi l'app miuPanel sul vostro smartphone e riconoscete il pannello (se non sapete come si fa o se volete muovere i primi passi con questo fantastico dispositivo leggete qui)
  •  agendo sull'app generata sul vostro smartphone il modulo wifi restituirà all'Arduino delle stringhe di testo in base a ciò che avete fatto (ad esempio attivato o disattivato uno switch).
  •  leggendo queste informazioni poi, l'Arduino, comanderà ciò che è collegato alle porte di uscita.



A questo punto siamo pronti a realizzare lo schema elettrico:



A questo punto abbiamo quasi finito, sarà sufficiente caricare il seguente sketch per iniziare ad utilizzare il nostro sistema.

Assicuratevi di avere la libreria DHT11 per il sensore di temperatura e ricordatevi di scollegare il cavetto dal pin 0 di Arduino durante il caricamento!


In pratica tutto quello che vedete sul pannello è contenuto nelle righe inviate dall'Arduino al miuPanel via seriale (quindi sulle righe 22,23 - 50,51 e 55,56)


Questi sono gli screenshot del pannello che apparira sull'app se tutto sarà andato a buon fine:





         




Il funzionamento è molto intuitivo, nella "modalità manuale" (primo screenshot) controllerete lo stato del relè manualmente agendo sullo switch, mentre nella "modalità automatica" (secondo e terzo screen) andrete ad inserire la temperatura che vorrete raggiungere nel campo "ins_t", se la temperatura impostata è più alta di quella attuale il relè si attiverà, quando la temperatura attuale raggiungerà quella impostata il rele si spegnerà.

Finito!
e ricordate che potete personalizzare il pannello come vorrete,
tutte le info necessarie su www.miupanel.com

Per qualsiasi info su questo progetto lasciate pure un commento qui sotto,
ciao!
Segui Daniele Alberti su Google+!

28 commenti:

  1. Ciao come hai fatto ad inserire il codice in maniera cosi corretta a con la grafica di arduino? Grazie

    RispondiElimina
  2. ciao, cosa intendi? per la grafica del pannello trovi un simulatore sul sito di miuPanel dal quale puoi fare tutte le prove che vuoi,
    spero intendessi questo, ciao!

    RispondiElimina
  3. Ciao, sono Angelo e non ci capisco più nulla.
    Vorrei alienare il cavo USB che ora collega il mio PC con Arduino Uno, con una connessione wifi.
    Ho acquistato il relativo modulo ed il suo adattatore di tensione, dato che i comandi ad Arduino vengono passati da basic col PC, è necessario l'uso di miupanel??? Grazie

    RispondiElimina
    Risposte
    1. Il cavo USB è necessario per programmare l'arduino UNO, l'uso di miuPanel è vincolato al modulo WiFi miuPanel

      Elimina
  4. Scusa ma il quesito è un altro ovvero : per far vedere Arduino al PC l'uso di miuPanel è vincolante o ci si riesce in altro modo.
    Grazie

    RispondiElimina
    Risposte
    1. Il collegamento tra Arduino e PC lo fai tramite USB. Il collegamento tra smartphone e Arduino lo fai con miuPanel

      Elimina
    2. Il collegamento tra Arduino e PC lo fai tramite USB. Il collegamento tra smartphone e Arduino lo fai con miuPanel

      Elimina
  5. Scusa ma non capisco, per impartire comandi ad Arduino Uno dal PC in modo wireless cosa devo praticamente fare?????

    RispondiElimina
  6. Ciao io uso un arduino mega 2560 rev3 quando uso i pin tx0 e rx0 funziona tutto bene ma quando cambio questi pin e uso tx2 e rx2 non funziona più nulla perchè?

    RispondiElimina
    Risposte
    1. Ciao Luca,
      hai modificato anche lo sketch per la seriale 2?
      se non sbaglio sulla mega per usare la seriale 2 devi sostituire tutti i "Serial" con "Serial2". Prova così, fammi sapere, ciao!

      Elimina
    2. Si adesso funziona. peró ho notato che nello schema di collegamento il pin tx del modulo va al pin rx di arduino e il pin rx del modulo va al pin tx di arduino, perchè di solito il pin tx va al tx e l'rx va all'rx perchè qua è il contrario?

      Elimina
    3. io di solito vedo il pin tx che entra nell'rx, perchè uno trasmette e l'altro riceve. Non saprei, magari in alcune schede sono state invertite le scritte per facilitare l'utente. Comunque in questo caso il collegamento corretto è TX con RX e viceversa. Ciao

      Elimina
  7. ciao,volevo sapere nella riga 84 cosa significa il (0,4);
    poi anche questa non riesco a capire :
    temperatura_impostata = Msg.substring(4, 6).toInt();

    RispondiElimina
    Risposte
    1. Ciao Alex,
      la funzione "substring" serve a dividere la stringa. in pratica scrivendo "Msg.substring(4,6).toInt();" sto andando a leggere solo i caratteri 4 e 5 di quella stringa, e poi li trasformo in un unico numero.

      ciao!

      Elimina
  8. scusa una cosa non riesco a capire come funziona l applicazione uPanel o meglio come faccio a portare i pulsanti bottoni sull applicazione calcola che ho gia l applicazione sul mio iphone e ho gia configurato il wifi sotto il mio router ... ed ora non riesco ad andare avanti cioecosa devo fare per fare un pannello e portarlo sul pc

    RispondiElimina
    Risposte
    1. Ciao, Miupanel è un pannello "vuoto", per aggiungere dei bottoni sull'app devi dare dei comandi via seriale dall'arduino al modulo miupanel.
      Trovi un esempio qui:
      http://www.danielealberti.it/2015/10/panel-linterfaccia-wifi-semplice-per-i.html

      Ciao!

      Elimina
  9. o meglio una volta inserito lo sketcksu arduino che bisogna fare

    RispondiElimina
  10. ho ricopiato lo sketch emandato su arduino nano ma se apro l applicazioene e connetto wifi mi appare una schermata tutta nera perche dove sbaglio

    RispondiElimina
  11. salve volevoun indicazione
    ho acquistato un modulo miupanel
    configurato con il mio modem econ l applicazione sulmio iphone che riesco a vedere e comunicare.....
    ora io ho fattouno sketch che piosso vedere online i risultati delsensore dh11 siatemperatura umidita e dowe point ...ora vilascio di seguito lo sketch...
    perche volevo sapere se era possibile comunicarecon l applicazione facendo un pannello con grafici e valori di temperatura e umidita' e dowe point aggiornabili con allerta (notifica) se supera o scende determinati valori.....volevo sapere comepoter fare un grafico e se era possibile realizzarlo con upanel.. o come poterlo fare grazie

    RispondiElimina
  12. #include
    #include
    #include
    /*-----( Declare Constants and Pin Numbers )-----*/
    #define DHT11PIN 2 // The Temperature/Humidity sensor
    // Enter a MAC address and IP address for your controller below.
    // The IP address will be dependent on your local network:
    byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    /*-----( Declare objects )-----*/
    IPAddress ip(192,168,1, 22);
    // Initialize the Ethernet server library
    // with the IP address and port you want to use
    // (port 80 is default for HTTP):
    EthernetServer server(80);
    dht11 DHT11; //The Sensor Object
    /*-----( Declare Variables )-----*/

    void setup() /****** SETUP: RUNS ONCE ******/
    {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
    }

    // start the Ethernet connection and the server:
    Ethernet.begin(mac, ip);
    server.begin();
    Serial.print("server is at ");
    Serial.println(Ethernet.localIP());
    }//--(end setup )---

    RispondiElimina
  13. void loop() /*----( LOOP: RUNS OVER AND OVER AGAIN )----*/
    {
    // listen for incoming clients
    EthernetClient client = server.available();
    if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
    if (client.available()) {
    char c = client.read();
    Serial.write(c);
    // if you've gotten to the end of the line (received a newline
    // character) and the line is blank, the http request has ended,
    // so you can send a reply
    if (c == '\n' && currentLineIsBlank) {
    // send a standard http response header
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println("Connnection: close");
    client.println();


    RispondiElimina
  14. client.println("Content-Type: text/html");
    client.println("Connnection: close");









    RispondiElimina
  15. se mi mandi una email ti mando lo sketch

    RispondiElimina
  16. BUONGIORNO, MI CHIAMO ANTONIO E DA POCO MI SONO AVVICINATO AD ARDUINO, COMPLIMENTI PER IL TUO PROGETTO, VORREI REALIZZARE IL TUO STESSO TERMOSTATO MA MI CHIEDEVO SE SI POTESSE CAMBIARE IL SENSORE DI TEMPERATURA, MI SPIEGO:
    DEVO REALIZZARE UN TERMOSTATO CON WIFI PER CONTROLLARE LA TEMPERATURA DI UNA PENTOLA ELETTRICA, QUINDI IL SENSORE ANDREBBE MESSO ALL'INTERNO DI UN PORTASONDA MONTATO SULLA PENTOLA..
    PENSAVO A UN SENSORE TIPO QUESTO:

    http://www.ebay.it/itm/SONDA-DS18B20-SENSORE-DI-TEMPERATURA-da-55-a-125-C-ARDUINO-ART-CD06-/261141793540?hash=item3ccd438b04:g:F9YAAOSw9NdXqd9G

    SE FOSSE POSSIBILE POTRESTI CAMBIARE IL CODICE PER ADATTARLO A QUESTO TIPO DI TERMOSTATO?
    GRAZIE IN ANTICIPO!

    RispondiElimina
  17. buon pomeriggio alberto e complimenti per il progetto. posso comandare questo termostato anvhe se sono fuori casa?

    RispondiElimina
    Risposte
    1. Ciao, si, in base anche alla configurazione del tuo router.
      Daniele

      Elimina
  18. Salve, vorrei realizzare il progetto ma avrei la necessità di controllare 2 zone diverse (2 sensori e due relè) è fattibile con un solo arduino?
    Grazie

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Related Posts Plugin for WordPress, Blogger...