Taula de continguts:

Projecte de registre d’estats de la porta i la temperatura: 21 passos
Projecte de registre d’estats de la porta i la temperatura: 21 passos

Vídeo: Projecte de registre d’estats de la porta i la temperatura: 21 passos

Vídeo: Projecte de registre d’estats de la porta i la temperatura: 21 passos
Vídeo: 09- Conferència d'Isidor Marí 2024, Juliol
Anonim
Projecte de registre d’estats de la porta i la temperatura
Projecte de registre d’estats de la porta i la temperatura

Aquest instructiu us mostrarà com fer un registre de l’estat de la porta i la temperatura per menys de $ 10,00 mitjançant un NodeMCU ESP8266, un sensor de temperatura i humitat DHT11, un interruptor de reed de porta / finestra, una resistència de 10K ohm i algun cable de connexió.

La gènesi d’aquest projecte va sorgir del meu desig de fer més domòtica amb la placa Arduino, ja que havia estat llegint molt sobre el NodeMCU EPS8266 compatible amb Arduino, vaig decidir que aquesta placa seria la placa perfecta de baix cost amb la qual experimentar. Després de buscar a Internet projectes domòtics mitjançant les plaques ESP8266, em vaig decidir a combinar un registrador de temperatura i estat de la porta per al meu primer intent. Finalment, aquest projecte es combinarà amb servos, sensors d’humitat i altres aparells electrònics per automatitzar una petita hivernacle que el meu avi va dissenyar i construir fa 50 anys. El sensor de temperatura s’utilitzarà per determinar si el sistema de calefacció s’ha d’engegar o desactivar, així com per indicar als servos que obrin i tanquin el sistema de ventilació quan sigui necessari. L'estat del sistema de ventilació es controlarà mitjançant l'ús dels interruptors magnètics de canya. Finalment, els sensors d’humitat s’utilitzaran per automatitzar un sistema de reg.

Pas 1: Exempció de responsabilitat

Només una exempció de responsabilitat ràpida per afirmar que NO assumim cap responsabilitat per qualsevol cosa que passi com a conseqüència de seguir aquesta instrucció. Sempre és millor que seguiu les instruccions i els fulls de seguretat del fabricant a l'hora de construir qualsevol cosa, així que consulteu aquests documents per conèixer qualsevol de les peces i eines que utilitzeu per construir la vostra. Simplement proporcionem informació sobre els passos que vam fer per crear el nostre. No som professionals. De fet, 2 de cada 3 de les persones que van participar en aquesta construcció són nens.

Pas 2: configureu un compte IFTTT gratuït

Configureu un compte IFTTT gratuït
Configureu un compte IFTTT gratuït

Si encara no en teniu, ara és el moment de configurar un compte IFTTT gratuït anant a la seva pàgina principal. IFTTT significa If This Then That i és una plataforma gratuïta que us permet connectar serveis basats en Internet de maneres noves us permetrà aprofitar aquests serveis de maneres noves. Per a aquest projecte utilitzarem IFTTT per permetre a un ESP8266 registrar l’estat d’una porta mitjançant un interruptor reed i la temperatura i la humitat a través del sensor DHT11 en un document de Fulls de càlcul de Google.

Pas 3: creeu un applet IFTTT

Creeu un applet IFTTT
Creeu un applet IFTTT

Encara estigueu a IFTTT, aneu a la secció "Els meus applets" i creeu un nou applet fent clic al botó "Nou applet".

Pas 4: configureu la porció "this" del vostre applet

Configureu el fitxer
Configureu el fitxer

Feu clic a la paraula "aquesta" amb un color blau, tal com es ressalta a la figura superior.

Pas 5: afegiu el servei WebHooks al vostre applet

Afegiu el servei WebHooks al vostre applet
Afegiu el servei WebHooks al vostre applet

A la barra de cerca, cerqueu el servei "Webhooks" i seleccioneu la icona Webhooks.

Un cop trobeu el servei "Webhooks", feu-hi clic.

Pas 6: configureu el disparador de recepció de sol·licituds web

Configureu el disparador de recepció de sol·licituds web
Configureu el disparador de recepció de sol·licituds web

Trieu el disparador "Rebre una sol·licitud web".

Pas 7: proporcioneu un nom d'esdeveniment

Proporcioneu un nom d'esdeveniment
Proporcioneu un nom d'esdeveniment

Al quadre de text, proporcioneu a la vostra nova miniaplicació un nom d'esdeveniment. He seleccionat "Data Logger", però podeu triar el que vulgueu.

Pas 8: configureu la porció "que" del vostre applet

Configureu el fitxer
Configureu el fitxer

Feu clic a la paraula "que" té un color blau, tal com es ressalta a la figura superior.

Pas 9: configureu un servei d'acció

Configureu un servei d'acció
Configureu un servei d'acció

Al quadre de cerca, cerqueu el servei "Fulls de càlcul de Google" i feu clic a la icona de Fulls de càlcul de Google.

Pas 10: connecteu-vos a Fulls de càlcul de Google

Connecteu-vos a Fulls de càlcul de Google
Connecteu-vos a Fulls de càlcul de Google

Si encara no ho heu fet, no haureu de connectar el vostre compte IFTTT a Fulls de càlcul de Google. Premeu el botó Connecta que es mostra més amunt i seguiu les instruccions que apareixen a la pantalla.

Pas 11: trieu una acció

Trieu una acció
Trieu una acció

Feu clic a "Afegeix fila al full de càlcul".

Pas 12: configureu l'acció

Configureu l'acció
Configureu l'acció

Proporcioneu un nom al quadre de text "Nom del full de càlcul". Decideixo utilitzar "Data_Logger" per obtenir més coherència. Deixeu la resta de la configuració sola (podeu experimentar amb aquesta configuració en algun altre moment) i, a continuació, premeu el botó "Crea acció" a la part inferior de la pantalla.

Pas 13: Reviseu i finalitzeu el vostre applet

Reviseu i finalitzeu el vostre applet
Reviseu i finalitzeu el vostre applet

Un cop satisfet amb la configuració de la miniaplicació, premeu el botó "Finalitza".

Pas 14: Recupereu la informació de configuració necessària més tard

Recupereu la informació de configuració necessària més tard
Recupereu la informació de configuració necessària més tard

Feu clic a "Webhooks", tal com es ressalta més amunt.

Pas 15: aneu a la documentació de Webhooks de la clau API

Aneu a la documentació de Webhooks de la clau API
Aneu a la documentació de Webhooks de la clau API

Pot semblar estrany, però feu clic a l’enllaç Documentació de la part superior dreta per anar a la pàgina amb la vostra clau API única.

Pas 16: deseu la clau API

Deseu la clau API
Deseu la clau API
Deseu la clau API
Deseu la clau API

La primera línia de la pantalla de documentació mostra la vostra clau API única. Copieu i deseu aquesta clau per utilitzar-la més tard.

També és una bona idea provar l'applet aquí. Recordeu canviar l '{esdeveniment} a Data_Logger o el que hagueu anomenat l'esdeveniment i afegir algunes dades als 3 valors buits i feu clic al botó "Prova-ho" a la part inferior de la pàgina. Hauríeu de veure un missatge verd que diu "S'ha activat l'esdeveniment". Si és així, aneu a Google Docs i confirmeu que les dades que heu introduït a la pàgina de prova apareixen al document Fulls de càlcul de Google.

Pas 17: reuniu els components

Reuneix els components
Reuneix els components
Reuneix els components
Reuneix els components
Reuneix els components
Reuneix els components

Només necessiteu algunes peces.

1) Junta de desenvolupament ESP8266 NodeMcu

2) Sensor de temperatura / humitat DHT11

3) Interruptor de canya de porta / finestra

4) Resistència de 10k Ohm

5) Cable de connexió

Pas 18: Munteu els components

1) Connecteu un dels pins 3v3 de l’ESP8266 al pin vcc del DHT11.

2) Connecteu un dels pins de terra de l’ESP8266 al pin de terra del DHT11.

3) Connecteu el pin D4 (també conegut com el pin 2 a l’IDE) de l’ESP8266 al pin de dades del DHT11.

4) Connecteu un altre pin de 3v3 a l’ESP8266 a un costat de l’interruptor de canya de la porta / finestra.

5) Connecteu el pin D5 (també conegut com el pin 14 a l’IDE) de l’ESP8266 a l’altre costat de l’interruptor reed de la porta / finestra i connecteu-lo també a un costat de la resistència de 10 k ohm.

6) Connecteu l’altre costat de la resistència de 10 k ohms a un altre pin de terra de l’ESP8266.

Per a seleccions de pins ESP8266, consulteu aquest útil diagrama o el vídeo molt útil.

Pas 19: escriviu el codi Arduino

Escriviu el codi Arduino
Escriviu el codi Arduino

Copieu i enganxeu el codi següent al vostre IDE Arduino.

#include #include #include "DHT.h"

#define DHTPIN 2 // a quin pin digital estem connectats

#define DOORPIN 14 // quin pin digital està activat l'interruptor de la porta.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char * ssid = "some_ssid"; // canvieu-ho per utilitzar el vostre ssid const char * password = "some_password"; // canvieu-ho per utilitzar la vostra contrasenya int sleepTime = 100;

// Maker Webhooks IFTTT

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

// Recurs URL IFTTT

const char * resource = "/ trigger / SOME_SERVICE_NAME / with / key / SOME_API_KEY"; // Assegureu-vos d'utilitzar el nom del servei i la clau API.

String doorStatus = "Tancat";

estat boole volàtil Canviat = fals;

// Si dormiu durant hores, establiu l'interval per h * 60 minuts * 60 segons * 1000 mil·lisegons

intervall llarg const = 1,0 * 60 * 60 * 1000; // 1 hora sense signar anterior Millis = 0 - (interval de 2 *);

configuració nul·la () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Sensor de porta dht.begin (); WiFi.begin (ssid, contrasenya);

Serial.print ("\ nConnexió..");

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

void eventTriggered () {

stateChanged = cert; Serial.println ("Comprovació de la porta!"); if (digitalRead (DOORPIN) == HIGH) // Comproveu si la porta està oberta {Serial.println ("La porta està tancada!"); doorStatus = "Tancat"; } else {Serial.println ("La porta està oberta!"); doorStatus = "Obert"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Comproveu l'estat de la connexió WiFi // La temperatura o la humitat de lectura triguen uns 250 mil·lisegons! // Les lectures del sensor també poden tenir una antiguitat de fins a 2 segons (és un sensor molt lent) flotant h = dht.readHumidity (); // Llegiu la temperatura com Celsius (per defecte) flotant t = dht.readTemperature (); // Llegiu la temperatura com Fahrenheit (isFahrenheit = true) flotant f = dht.readTemperature (true); // Comproveu si alguna lectura ha fallat i sortiu aviat (per tornar-ho a provar). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("No s'ha pogut llegir del sensor DHT!"); //Serial.print ("."); // No s'ha pogut llegir del sensor DHT. tornar; } // Calculeu l'índex de calor a Fahrenheit (per defecte) float hif = dht.computeHeatIndex (f, h); // Calculeu l'índex de calor en centígrads (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 ("Índex de calor:"); Serial.print (hif); Serial.print ("* F ("); Serial.print (hic); Serial.print ("* C)%"); Serial.print ("\ t"); Serial.print ("Humitat:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Comproveu si la porta està oberta

{Serial.println ("La porta està tancada!"); doorStatus = "Tancat"; } else {Serial.println ("La porta està oberta!"); doorStatus = "Obert"; } 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 (servidor); http.addHeader ("Content-Type", "application / json"); http. POST (jsonObject); http.writeToStream (& sèrie); http.end (); // Tanca la connexió

stateChanged = fals;

int sleepTimeInMinutes = interval / 1000/60; Serial.print ("\ n / nDormir"); Serial.print (sleepTimeInMinutes); Serial.println ("minut (s) …"); }}

bucle buit () {

corrent llarg sense signar Millis = millis (); retard (4000); // Si superàvem el temps transcorregut, obligarem a comprovar la porta i la temperatura. if (Miles actuals - Miles anteriors> = interval) {stateChanged = true; anteriorMillis = actualMillis; Serial.print (recompte ++); Serial.println (") Comprovació pel temps transcorregut!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Comprovació a causa d'un canvi d'estat!"); }

// Si l'estat ha canviat, comproveu la porta i la temperatura.

if (stateChanged) {checkStatus (); }

endarreriment (sleepTime);

}

Pas 20: Resultats

Resultats
Resultats

Un cop hàgiu penjat el codi font al pas anterior, haureu de tenir resultats com l'exemple que es mostra més amunt.

Pas 21: Crèdits

He trobat molts consells i suggeriments útils de Tutorials de Random Nerd i vull agrair-los tota la seva ajuda. Especialment el seu excel·lent tutorial sobre ESP32 ESP8266 Publica lectures de sensors a Fulls de càlcul de Google en què es basen les principals parts d’aquest instructable.

A més, el DHT11 Instructable de TheCircuit em va ajudar a entendre com utilitzar aquest petit sensor molt econòmic però interessant.

A més, hi ha molts tutorials relacionats amb el control de les vostres portes, com ara Garage Door Monitor i un altre de Random Nerd Tutorials. N’he utilitzat trossos per ajudar-me a entendre com fer funcionar correctament el meu interruptor reed.

Finalment, amb aquesta informació i altres detalls que vaig trobar a Internet, vaig poder crear un sistema que satisfés les meves necessitats. Espero que us sigui útil aquest instructiu i en creeu un de vostre.

Recomanat: