Cuprins:

Proiect de înregistrare a stării ușii și a temperaturii: 21 de pași
Proiect de înregistrare a stării ușii și a temperaturii: 21 de pași

Video: Proiect de înregistrare a stării ușii și a temperaturii: 21 de pași

Video: Proiect de înregistrare a stării ușii și a temperaturii: 21 de pași
Video: Temperatura optima pentru confort si economie la facturi 2024, Iulie
Anonim
Proiect de înregistrare a stării ușii și a temperaturii
Proiect de înregistrare a stării ușii și a temperaturii

Acest instructable vă va arăta cum să realizați un ușor de înregistrare a stării ușii și temperaturii sub 10,00 USD folosind un ESP8266 NodeMCU, un senzor de temperatură și umiditate DHT11, un comutator cu ușă / fereastră, un rezistor de 10K ohm și un cablu de conectare.

Geneza acestui proiect a venit din dorința mea de a face mai multe sisteme de automatizare a casei cu placa Arduino, deoarece citisem multe despre Arduino compatibil EPS8266 NodeMCU, am decis că această placă ar fi placa perfectă cu costuri reduse cu care să experimentez. După ce am căutat pe Internet proiecte de automatizare a locuinței folosind plăcile ESP8266, m-am hotărât să combin un registrator de temperatură și starea ușii pentru prima mea încercare. În cele din urmă, acest proiect va fi combinat cu servomotoare, senzori de umiditate și alte electronice pentru a automatiza o mică seră proiectată și construită de bunicul meu în urmă cu 50 de ani. Senzorul de temperatură va fi utilizat pentru a determina dacă sistemul de încălzire trebuie să fie cuplat sau decuplat, precum și pentru a semnaliza servomotoarele să deschidă și să închidă sistemul de aerisire atunci când este necesar. Starea sistemului de aerisire va fi monitorizată prin utilizarea comutatoarelor magnetice. În cele din urmă, senzorii de umiditate vor fi folosiți pentru automatizarea unui sistem de udare.

Pasul 1: Declinarea responsabilității

Doar o răspundere rapidă pentru a declara că nu ne asumăm responsabilitatea pentru nimic din ceea ce se întâmplă ca urmare a respectării acestui instructiv. Este întotdeauna mai bine să urmați instrucțiunile producătorului și fișele de siguranță atunci când construiți orice, așa că vă rugăm să consultați aceste documente pentru oricare dintre piesele și instrumentele pe care le utilizați pentru a vă construi propriile. Pur și simplu oferim doar informații despre pașii pe care i-am folosit pentru a-i crea pe ai noștri. Nu suntem profesioniști. De fapt, 2 din 3 dintre persoanele care au participat la această construcție sunt copii.

Pasul 2: Configurați contul IFTTT gratuit

Configurați contul IFTTT gratuit
Configurați contul IFTTT gratuit

Dacă nu aveți deja unul, acum este momentul să configurați un cont IFTTT gratuit accesând pagina lor de start.. IFTTT înseamnă If This Then That și este o platformă gratuită care vă permite să conectați serviciile bazate pe internet în moduri noi de vă permit să utilizați aceste servicii în moduri noi. Pentru acest proiect, vom folosi IFTTT pentru a permite unui ESP8266 să înregistreze starea unei uși printr-un comutator reed și temperatura și umiditatea prin senzorul DHT11 într-un document Google Sheets.

Pasul 3: Creați un applet IFTTT

Creați un applet IFTTT
Creați un applet IFTTT

În timp ce vă aflați încă în IFTTT, continuați cu secțiunea „Appletele mele” și creați un nou applet făcând clic pe butonul „New Applet”.

Pasul 4: Configurați porțiunea „aceasta” a appletului dvs

Configurați fișierul
Configurați fișierul

Faceți clic pe cuvântul „acest” care are o culoare albastră - așa cum este evidențiat în figura de mai sus.

Pasul 5: Adăugați serviciul WebHooks în applet

Adăugați serviciul WebHooks în applet
Adăugați serviciul WebHooks în applet

În bara de căutare, căutați serviciul „Webhooks” și selectați pictograma Webhooks.

După ce găsiți serviciul „Webhooks”, faceți clic pe el.

Pasul 6: configurați declanșatorul Receive a Web Request

Configurați declanșatorul Receive a Web Request
Configurați declanșatorul Receive a Web Request

Alegeți declanșatorul „Primiți o solicitare web”.

Pasul 7: Furnizați un nume de eveniment

Furnizați un nume de eveniment
Furnizați un nume de eveniment

În caseta de text, furnizați noului dvs. applet un nume de eveniment. Am selectat „Data Logger”, dar puteți alege orice doriți.

Pasul 8: Configurați porțiunea „aia” din applet

Configurați fișierul
Configurați fișierul

Faceți clic pe cuvântul „acel” care are o culoare albastră - așa cum este evidențiat în figura de mai sus.

Pasul 9: Configurați un serviciu de acțiune

Configurați un serviciu de acțiune
Configurați un serviciu de acțiune

În caseta de căutare, căutați serviciul „Foi de calcul Google” și faceți clic pe pictograma Foi de calcul Google.

Pasul 10: conectați-vă la Foi de calcul Google

Conectați-vă la Foi de calcul Google
Conectați-vă la Foi de calcul Google

Dacă nu ați făcut deja acest lucru, nu va trebui să vă conectați contul IFTTT la Foi de calcul Google. Apăsați butonul Conectare afișat mai sus și urmați instrucțiunile de pe ecran.

Pasul 11: Alegeți o acțiune

Alegeți o acțiune
Alegeți o acțiune

Faceți clic pe „Adăugați rândul la foaia de calcul”.

Pasul 12: Configurați acțiunea

Configurați acțiunea
Configurați acțiunea

Introduceți un nume în caseta de text „Numele foii de calcul”. Aleg să folosesc „Data_Logger” pentru coerență. Lăsați restul setării în pace (puteți experimenta aceste setări în altă perioadă) și apoi apăsați butonul „Creați acțiune” din partea de jos a ecranului.

Pasul 13: Examinați și finalizați applet-ul

Examinați și finalizați applet-ul
Examinați și finalizați applet-ul

Odată satisfăcut de configurația appletului, apăsați butonul „Finalizare”.

Pasul 14: Preluarea informațiilor de configurare necesare mai târziu

Preluarea informațiilor de configurare necesare mai târziu
Preluarea informațiilor de configurare necesare mai târziu

Faceți clic pe „Webhooks” așa cum este evidențiat mai sus.

Pasul 15: Accesați documentația Webhooks pentru cheia API

Accesați documentația Webhooks pentru cheia API
Accesați documentația Webhooks pentru cheia API

Poate părea ciudat, dar faceți clic pe linkul Documentație din dreapta sus pentru a merge la pagina cu cheia dvs. API unică.

Pasul 16: Salvați cheia API

Salvați cheia API
Salvați cheia API
Salvați cheia API
Salvați cheia API

Prima linie a ecranului Documentație afișează cheia API unică. Copiați și salvați această cheie pentru utilizare ulterioară.

De asemenea, este o idee bună să testați applet-ul aici. Nu uitați să schimbați {eveniment} în Data_Logger sau orice altceva ați numit evenimentul dvs. și să adăugați câteva date la cele 3 valori goale, apoi faceți clic pe butonul „Testați-l” din partea de jos a paginii. Ar trebui să vedeți un mesaj verde care să spună „Evenimentul a fost declanșat”. Dacă da, treceți la Google Docs și confirmați că datele pe care le-ați introdus în pagina de testare au apărut în documentul Foi de calcul Google.

Pasul 17: Adunați componentele

Adunați componentele
Adunați componentele
Adunați componentele
Adunați componentele
Adunați componentele
Adunați componentele

Veți avea nevoie doar de câteva piese.

1) ESP8266 NodeMcu Development Board

2) Senzor de temperatură / umiditate DHT11

3) Comutator Reed ușă / fereastră

4) Rezistor 10k Ohm

5) Sârmă de conectare

Pasul 18: Asamblați componentele

1) Conectați unul dintre pinii 3v3 de pe ESP8266 la pinul vcc de pe DHT11.

2) Conectați unul dintre pinii de masă de pe ESP8266 la pinul de masă de pe DHT11.

3) Conectați pinul D4 (alias pinul 2 din IDE) de pe ESP8266 la pinul de date de pe DHT11.

4) Conectați un alt pin 3v3 de pe ESP8266 la o parte a comutatorului reed al ușii / ferestrei.

5) Conectați pinul D5 (alias pinul 14 din IDE) de pe ESP8266 la cealaltă parte a comutatorului reed al ușii / ferestrei și, de asemenea, conectați-l la o parte a rezistorului de 10k ohm.

6) Conectați cealaltă parte a rezistorului de 10 k ohm la un alt pin de masă de pe ESP8266.

Pentru selecțiile de pin ESP8266 vă rugăm să consultați această diagramă utilă sau videoclipul foarte util.

Pasul 19: Scrieți codul Arduino

Scrieți codul Arduino
Scrieți codul Arduino

Copiați și lipiți codul de mai jos în ID-ul dvs. Arduino.

#include #include #include "DHT.h"

#define DHTPIN 2 // la ce pin digital suntem conectați

#define DOORPIN 14 // ce pin digital este activat comutatorul de ușă.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char * ssid = "some_ssid"; // schimbați acest lucru pentru a utiliza ssid const char * password = "some_password"; // schimbați acest lucru pentru a utiliza parola int sleepTime = 100;

// Maker Webhooks IFTTT

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

// Resurse URL IFTTT

const char * resource = "/ trigger / SOME_SERVICE_NAME / with / key / SOME_API_KEY"; // Asigurați-vă că utilizați numele serviciului și cheia API.

String doorStatus = "Închis";

stare bool volatilăChanged = false;

// Dacă dormiți ore întregi, setați intervalul cu ore * 60 minute * 60 secunde * 1000 milisecunde

const interval lung = 1,0 * 60 * 60 * 1000; // 1 oră nesemnată lungă precedentă Millis = 0 - (2 * interval);

configurare nulă () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Senzor ușă dht.begin (); WiFi.begin (ssid, parolă);

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

while (WiFi.status ()! = WL_CONNECTED) {întârziere (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = adevărat; Serial.println ("Verificarea ușii!"); if (digitalRead (DOORPIN) == HIGH) // Verificați dacă ușa este deschisă {Serial.println ("ușa este închisă!"); doorStatus = "Închis"; } else {Serial.println ("Ușa este deschisă!"); doorStatus = "Deschis"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Verificați starea conexiunii WiFi // Temperatura de citire sau umiditatea durează aproximativ 250 de milisecunde! // Citirile senzorilor pot avea, de asemenea, până la 2 secunde „vechi” (este un senzor foarte lent) plutitor h = dht.readHumidity (); // Citiți temperatura ca Celsius (implicit) float t = dht.readTemperature (); // Citiți temperatura ca Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Verificați dacă citirile au eșuat și ieșiți devreme (pentru a încerca din nou). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Nu s-a citit de la senzorul DHT!"); //Serial.print ("."); // Nu s-a citit din senzorul DHT! întoarcere; } // Calculați indicele de căldură în Fahrenheit (implicit) float hif = dht.computeHeatIndex (f, h); // Calculați indicele de căldură în 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 ("Indicele de căldură:"); Serial.print (hif); Serial.print ("* F ("); Serial.print (hic); Serial.print ("* C)%"); Serial.print ("\ t"); Serial.print ("Umiditate:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Verificați dacă ușa este deschisă

{Serial.println ("Ușa este închisă!"); doorStatus = "Închis"; } else {Serial.println ("Ușa este deschisă!"); doorStatus = "Deschis"; } String jsonObject = String ("{" value1 / ": \" ") + f +" * F ("+ t +" * C) / "+ hif +" * F ("+ hic +" * 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.end (); // Închideți conexiunea

stateChanged = false;

int sleepTimeInMinutes = interval / 1000/60; Serial.print ("\ n / nDoar dormiți pentru"); Serial.print (sleepTimeInMinutes); Serial.println ("minut (e) …"); }}

bucla nulă () {

curent lung nesemnat Millis = millis (); întârziere (4000); // Dacă am depășit timpul scurs, atunci forțăm să verificăm ușa și temperatura. if (currentMillis - previousMillis> = interval) {stateChanged = true; previousMillis = currentMillis; Serial.print (count ++); Serial.println (") Verificare din cauza timpului scurs!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Verificare din cauza schimbării stării!"); }

// Dacă starea sa schimbat, verificați ușa și temperatura.

if (stateChanged) {checkStatus (); }

întârziere (SleepTime);

}

Pasul 20: Rezultate

Rezultate
Rezultate

După ce încărcați codul sursă în pasul anterior, ar trebui să aveți rezultate precum exemplul de mai sus.

Pasul 21: Credite

Am găsit o mulțime de sfaturi și sfaturi utile de la Tutoriale Random Nerd și aș dori să le mulțumesc pentru tot ajutorul lor. Mai ales tutorialul lor excelent privind ESP32 ESP8266 Publicați citirile senzorului pe Foi de calcul Google pe care se bazează porțiuni majore din acest instructabil.

În plus, DHT11 Instructable de la TheCircuit m-a ajutat să înțeleg cum să folosesc acest senzor foarte ieftin, dar interesant.

În plus, există multe tutoriale care se ocupă de monitorizarea ușilor, cum ar fi Garage Door Monitor și altul de la Random Nerd Tutorials. Am folosit bucăți din acestea pentru a mă ajuta să înțeleg cum să funcționez corect comutatorul meu Reed.

În cele din urmă, cu aceste informații, precum și cu alte detalii pe care le-am găsit pe internet, am reușit să creez un sistem care să răspundă nevoilor mele. Sper că veți găsi util acest instructabil și să vă construiți unul.

Recomandat: