Sommario:

Progetto di registrazione dello stato della porta e della temperatura: 21 passaggi
Progetto di registrazione dello stato della porta e della temperatura: 21 passaggi

Video: Progetto di registrazione dello stato della porta e della temperatura: 21 passaggi

Video: Progetto di registrazione dello stato della porta e della temperatura: 21 passaggi
Video: E SE UN ASTEROIDE COLPISSE ROMA? 2024, Dicembre
Anonim
Progetto di registrazione dello stato della porta e della temperatura
Progetto di registrazione dello stato della porta e della temperatura

Questo Instructable ti mostrerà come creare un semplice registratore di stato della porta e della temperatura per meno di $ 10,00 utilizzando un NodeMCU ESP8266, un sensore di temperatura e umidità DHT11, un interruttore reed per porta / finestra, un resistore da 10K ohm e alcuni cavi di collegamento.

La genesi di questo progetto è nata dal mio desiderio di fare più domotica con la scheda Arduino, poiché avevo letto molto sul NodeMCU EPS8266 compatibile con Arduino, ho deciso che questa scheda sarebbe stata la scheda a basso costo perfetta per fare qualche sperimentazione. Dopo aver cercato su Internet progetti di automazione domestica utilizzando le schede ESP8266, ho deciso di combinare un registratore di temperatura e stato della porta per il mio primo tentativo. Alla fine questo progetto sarà combinato con servocomandi, sensori di umidità e altri dispositivi elettronici per automatizzare una piccola serra progettata e costruita da mio nonno 50 anni fa. Il sensore di temperatura verrà utilizzato per determinare se il sistema di riscaldamento deve essere attivato o disattivato, nonché per segnalare ai servi di aprire e chiudere il sistema di ventilazione quando necessario. Lo stato del sistema di sfiato sarà monitorato mediante l'uso di interruttori magnetici reed. Infine, i sensori di umidità verranno utilizzati per automatizzare un sistema di irrigazione.

Passaggio 1: Dichiarazione di non responsabilità

Solo un breve disclaimer per affermare che NON ci assumiamo alcuna responsabilità per tutto ciò che accade a seguito di questa istruzione. È sempre meglio seguire le istruzioni del produttore e le schede di sicurezza quando si costruisce qualcosa, quindi si prega di consultare tali documenti per qualsiasi parte e strumento che si utilizza per costruire il proprio. Stiamo semplicemente fornendo informazioni sui passaggi che abbiamo utilizzato per creare il nostro. Non siamo professionisti. In effetti, 2 su 3 degli individui che hanno partecipato a questa build sono bambini.

Passaggio 2: configura un account IFTTT gratuito

Configura un account IFTTT gratuito
Configura un account IFTTT gratuito

Se non ne hai già uno, ora è il momento di configurare un account IFTTT gratuito andando sulla loro home page.. IFTTT sta per If This Then That ed è una piattaforma gratuita che ti consente di connettere servizi basati su Internet in nuovi modi per consentono di sfruttare questi servizi in modi nuovi. Per questo progetto utilizzeremo IFTTT per consentire a un ESP8266 di registrare lo stato di una porta tramite un interruttore reed e temperatura e umidità tramite il sensore DHT11 in un documento di Fogli Google.

Passaggio 3: creare un'applet IFTTT

Crea un'applet IFTTT
Crea un'applet IFTTT

Mentre sei ancora in IFTTT, procedi alla sezione "Le mie applet" e crea una nuova applet facendo clic sul pulsante "Nuova applet".

Passaggio 4: configura la parte "questa" dell'applet

Configura il
Configura il

Fare clic sulla parola "questa" che è di colore blu, come evidenziato nella figura sopra.

Passaggio 5: aggiungere il servizio WebHook all'applet

Aggiungi il servizio WebHook alla tua applet
Aggiungi il servizio WebHook alla tua applet

Nella barra di ricerca, cerca il servizio "Webhooks" e seleziona l'icona Webhooks.

Una volta trovato il servizio "Webhooks", fai clic su di esso.

Passaggio 6: impostare il trigger di ricezione di una richiesta Web

Imposta il trigger di ricezione di una richiesta Web
Imposta il trigger di ricezione di una richiesta Web

Scegli il trigger "Ricevi una richiesta web".

Passaggio 7: fornire un nome per l'evento

Fornisci un nome per l'evento
Fornisci un nome per l'evento

Nella casella di testo fornisci alla tua nuova applet un nome di evento. Ho selezionato "Data Logger" ma puoi scegliere quello che preferisci.

Passaggio 8: configura la "quella" porzione dell'applet

Configura il
Configura il

Fai clic sulla parola "quella" che è di colore blu, come evidenziato nella figura sopra.

Passaggio 9: impostare un servizio di azione

Imposta un servizio di azione
Imposta un servizio di azione

Nella casella di ricerca, cerca il servizio "Fogli Google" e fai clic sull'icona Fogli Google.

Passaggio 10: collegarsi a Fogli Google

Collegati a Fogli Google
Collegati a Fogli Google

Se non lo hai già fatto, non dovrai collegare il tuo account IFTTT a Fogli Google. Premi il pulsante Connetti mostrato sopra e segui le istruzioni sullo schermo.

Passaggio 11: scegli un'azione

Scegli un'azione
Scegli un'azione

Fare clic su "Aggiungi riga al foglio di calcolo".

Passaggio 12: impostare l'azione

Imposta l'azione
Imposta l'azione

Fornisci un nome nella casella di testo "Nome foglio di lavoro". Scelgo di usare "Data_Logger" per coerenza. Lascia stare il resto dell'impostazione (puoi sperimentare con quelle impostazioni in un altro momento) e quindi premi il pulsante "Crea azione" nella parte inferiore dello schermo.

Passaggio 13: rivedere e finalizzare l'applet

Rivedi e finalizza la tua applet
Rivedi e finalizza la tua applet

Una volta soddisfatto della configurazione dell'applet, premere il pulsante "Fine".

Passaggio 14: recuperare le informazioni di configurazione necessarie in seguito

Recupera le informazioni di configurazione necessarie in seguito
Recupera le informazioni di configurazione necessarie in seguito

Fare clic su "Webhook" come evidenziato sopra.

Passaggio 15: passare alla documentazione dei webhook per la chiave API

Passa alla documentazione dei webhook per la chiave API
Passa alla documentazione dei webhook per la chiave API

Può sembrare strano ma fai clic sul collegamento Documentazione in alto a destra per procedere alla pagina con la tua chiave API univoca.

Passaggio 16: salvare la chiave API

Salva la chiave API
Salva la chiave API
Salva la chiave API
Salva la chiave API

La prima riga della schermata Documentazione mostra la tua chiave API univoca. Copia e salva questa chiave per usarla in seguito.

È anche una buona idea testare l'applet qui. Ricorda di cambiare {event} in Data_Logger o come hai chiamato il tuo evento e aggiungere alcuni dati ai 3 valori vuoti, quindi fai clic sul pulsante "Testalo" nella parte inferiore della pagina. Dovresti vedere un messaggio verde che dice "L'evento è stato attivato". In tal caso, passa a Google Docs e conferma che i dati che hai inserito nella pagina di prova siano stati visualizzati nel documento di Fogli Google.

Passaggio 17: raccogliere i componenti

Raccogli i componenti
Raccogli i componenti
Raccogli i componenti
Raccogli i componenti
Raccogli i componenti
Raccogli i componenti

Avrai solo bisogno di alcune parti.

1) Scheda di sviluppo NodeMcu ESP8266

2) Sensore di temperatura/umidità DHT11

3) Interruttore Reed Porta/Finestra

4) Resistenza da 10k Ohm

5) Cavo di collegamento

Passaggio 18: assemblare i componenti

1) Collegare uno dei pin 3v3 sull'ESP8266 al pin vcc sul DHT11.

2) Collegare uno dei pin di terra dell'ESP8266 al pin di terra del DHT11.

3) Collegare il pin D4 (a.k.a. pin 2 nell'IDE) sull'ESP8266 al pin dati sul DHT11.

4) Collegare un altro pin 3v3 sull'ESP8266 a un lato dell'interruttore reed porta/finestra.

5) Collegare il pin D5 (a.k.a. pin 14 nell'IDE) sull'ESP8266 all'altro lato dell'interruttore reed porta/finestra e collegarlo anche a un lato del resistore da 10k ohm.

6) Collegare l'altro lato del resistore da 10k ohm a un altro pin di terra sull'ESP8266.

Per le selezioni dei pin ESP8266, fare riferimento a questo utile diagramma o al video molto utile.

Passaggio 19: scrivi il codice Arduino

Scrivi il codice Arduino
Scrivi il codice Arduino

Copia e incolla il codice qui sotto nel tuo IDE Arduino.

#include #include #include "DHT.h"

#define DHTPIN 2 // a quale pin digitale siamo connessi

#define DOORPIN 14 // su quale pin digitale è acceso l'interruttore della porta.

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

int conteggio = 1;

const char* ssid = "some_ssid"; // cambia questo per usare il tuo ssid const char* password = "some_password"; // cambia questo per usare la tua password int sleepTime = 100;

// Maker Webhook IFTTT

const char* server = "maker.ifttt.com";

// Risorsa URL IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; //Assicurati di utilizzare il nome del tuo servizio e la tua chiave API.

String doorStatus = "Chiuso";

volatile bool stateChanged = false;

// Se dormi per ore, imposta l'intervallo in ore * 60 minuti * 60 secondi * 1000 millisecondi

const intervallo lungo = 1.0 * 60 * 60 * 1000; // 1 ora senza segno lungo precedenteMillis = 0 - (2 * intervallo);

void setup() {

Serial.begin(115200); attachInterrupt(digitalPinToInterrupt(DOORPIN), eventTriggered, CHANGE); pinMode(PINPORTA, INGRESSO); //Sensore porta dht.begin(); WiFi.begin(ssid, password);

Serial.print("\nConnessione..");

while (WiFi.status() != WL_CONNECTED) { ritardo(1000); Serial.print("."); } Serial.print("\n"); }

void eventTriggered(){

statoChanged = vero; Serial.println("Controllo la porta!"); if (digitalRead(DOORPIN)==HIGH) // Controlla se la porta è aperta { Serial.println("La porta è chiusa!"); doorStatus = "Chiuso"; } else { Serial.println("La porta è aperta!"); doorStatus = "Aperto"; } }

void checkStatus(){

if (WiFi.status() == WL_CONNECTED) { //Controlla lo stato della connessione WiFi // La lettura della temperatura o dell'umidità richiede circa 250 millisecondi! // Le letture del sensore possono anche essere "vecchie" fino a 2 secondi (è un sensore molto lento) float h = dht.readHumidity(); // Legge la temperatura come Celsius (il valore predefinito) float t = dht.readTemperature(); // Legge la temperatura come Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Controlla se qualche lettura ha avuto esito negativo ed esci prima (per riprovare). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Impossibile leggere dal sensore DHT!"); //Serial.print("."); //Impossibile leggere dal sensore DHT! Restituzione; } // Calcola l'indice di calore in Fahrenheit (predefinito) float hif = dht.computeHeatIndex(f, h); // Calcola l'indice di calore in Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false);

Serial.print("\n");

Serial.print("Temperatura: "); Serial.print(f); Serial.print(" *F ("); Serial.print(t); Serial.print(" *C)"); Serial.print("\t"); Serial.print("Indice di calore: "); Serial.print(hif); Serial.print(" *F ("); Serial.print(hic); Serial.print(" *C)%"); Serial.print("\t"); Serial.print("Umidità: "); Serial.println(h);

if (digitalRead(DOORPIN)==HIGH) // Controlla se la porta è aperta

{ Serial.println("La porta è chiusa!"); doorStatus = "Chiuso"; } else { Serial.println("La porta è aperta!"); doorStatus = "Aperto"; } String jsonObject = String("{"value1\":\"") + f +"*F (" + t + "*C) / "+ hif +"*F (" + hif + "*C) " + "\", \"value2\":\"" + h + "\", \"value3\":\"" + doorStatus + " \"}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin(completeUrl); // http.begin(server); http.addHeader("Content-Type", "application/json"); http. POST(jsonObject); http.writeToStream(&Serial); http.fine(); //Chiudi connessione

statoChanged = falso;

int sleepTimeInMinutes = intervallo / 1000 / 60; Serial.print("\n\nVai a dormire per "); Serial.print(sleepTimeInMinutes); Serial.println("minuto(i) …"); } }

ciclo vuoto() {

unsigned long currentMillis = millis(); ritardo (4000); //Se abbiamo superato il tempo trascorso, forziamo un controllo della porta e della temperatura. if(Milliscorrente -Millisprecedente >= intervallo){ stateChanged = true; precedenteMillis = correnteMillis; Serial.print(count++); Serial.println(") Verifica a causa del tempo trascorso!"); }else if(stateChanged){ Serial.print(count++); Serial.println(") Verifica a causa del cambio di stato!"); }

//Se lo stato è cambiato, controlla la porta e la temperatura.

if(stateChanged){ checkStatus(); }

ritardo(SleepTime);

}

Passaggio 20: risultati

Risultati
Risultati

Una volta caricato il codice sorgente nel passaggio precedente, dovresti ottenere risultati come nell'esempio mostrato sopra.

Passo 21: Crediti

Ho trovato molti suggerimenti e suggerimenti utili da Random Nerd Tutorials e vorrei ringraziarli per tutto il loro aiuto. Soprattutto il loro eccellente tutorial su ESP32 ESP8266 Pubblica letture dei sensori su Fogli Google su cui si basano le parti principali di questo Instructable.

Inoltre, il DHT11 Instructable di TheCircuit mi ha aiutato a capire come utilizzare questo piccolo sensore molto economico ma interessante.

Inoltre, ci sono molti tutorial che si occupano di monitorare le tue porte come Garage Door Monitor e un altro da Random Nerd Tutorials. Ho usato frammenti di questi per aiutarmi a capire come far funzionare correttamente il mio interruttore reed.

Alla fine, con queste informazioni e altri dettagli che ho trovato su Internet sono stato in grado di creare un sistema che soddisfacesse le mie esigenze. Spero che trovi utile questo Instructable e ne crei uno tuo.

Consigliato: