Tabla de contenido:

Proyecto de registrador de estado de puerta y temperatura: 21 pasos
Proyecto de registrador de estado de puerta y temperatura: 21 pasos

Video: Proyecto de registrador de estado de puerta y temperatura: 21 pasos

Video: Proyecto de registrador de estado de puerta y temperatura: 21 pasos
Video: Pr#32 Cierre de puerta con RFID - cómo funcionan? 2024, Noviembre
Anonim
Proyecto de registrador de estado de puerta y temperatura
Proyecto de registrador de estado de puerta y temperatura

Este Instructable le mostrará cómo hacer un registrador de estado de puerta y temperatura simple por menos de $ 10.00 usando un ESP8266 NodeMCU, un sensor de temperatura y humedad DHT11, un interruptor de láminas de puerta / ventana, una resistencia de 10K ohmios y algún cable de conexión.

La génesis de este proyecto provino de mi deseo de hacer más domótica con la placa Arduino. Como había estado leyendo mucho sobre la EPS8266 NodeMCU compatible con Arduino, decidí que esta placa sería la placa de bajo costo perfecta para experimentar. Después de buscar en Internet proyectos de automatización del hogar utilizando las placas ESP8266, me decidí por combinar un registrador de temperatura y estado de la puerta para mi primer intento. Eventualmente, este proyecto se combinará con servos, sensores de humedad y otros dispositivos electrónicos para automatizar una pequeña casa verde que mi abuelo diseñó y construyó hace 50 años. El sensor de temperatura se utilizará para determinar si el sistema de calefacción debe activarse o desactivarse, así como para indicar a los servos que abran y cierren el sistema de ventilación cuando sea necesario. El estado del sistema de ventilación se controlará mediante el uso de interruptores de lengüeta magnéticos. Finalmente, los sensores de humedad se utilizarán para automatizar un sistema de riego.

Paso 1: descargo de responsabilidad

Solo un descargo de responsabilidad rápido para indicar que NO nos hacemos responsables de nada que suceda como resultado de seguir este instructivo. Siempre es mejor seguir las instrucciones del fabricante y las hojas de seguridad al construir cualquier cosa, así que consulte esos documentos para conocer las piezas y herramientas que utiliza para construir las suyas propias. Simplemente proporcionamos información sobre los pasos que usamos para crear el nuestro. No somos profesionales. De hecho, 2 de cada 3 personas que participaron en esta construcción son niños.

Paso 2: Configure una cuenta IFTTT gratuita

Configurar una cuenta IFTTT gratuita
Configurar una cuenta IFTTT gratuita

Si aún no tiene una, ahora es el momento de configurar una cuenta IFTTT gratuita yendo a su página de inicio. IFTTT significa If This Then That y es una plataforma gratuita que le permite conectar servicios basados en Internet de nuevas formas para le permiten aprovechar esos servicios de nuevas formas. Para este proyecto, usaremos IFTTT para permitir que un ESP8266 registre el estado de una puerta a través de un interruptor de lengüeta y la temperatura y humedad a través del sensor DHT11 en un documento de Google Sheets.

Paso 3: Cree un subprograma IFTTT

Crear un subprograma IFTTT
Crear un subprograma IFTTT

Mientras todavía está en IFTTT, vaya a la sección "Mis subprogramas" y cree un nuevo subprograma haciendo clic en el botón "Nuevo subprograma".

Paso 4: Configure "esta" parte de su subprograma

Configure el
Configure el

Haga clic en la palabra "esta" que está en color azul, como se resalta en la figura anterior.

Paso 5: agregue el servicio WebHooks a su applet

Agregue el servicio WebHooks a su subprograma
Agregue el servicio WebHooks a su subprograma

En la barra de búsqueda, busque el servicio "Webhooks" y seleccione el icono de Webhooks.

Una vez que encuentre el servicio "Webhooks", haga clic en él.

Paso 6: Configurar el activador Recibir una solicitud web

Configure el disparador Recibir una solicitud web
Configure el disparador Recibir una solicitud web

Elija el disparador "Recibir una solicitud web".

Paso 7: proporcione un nombre de evento

Proporcione un nombre de evento
Proporcione un nombre de evento

En el cuadro de texto, proporcione a su nuevo subprograma un nombre de evento. Seleccioné "Data Logger" pero puedes elegir lo que quieras.

Paso 8: Configure "esa" parte de su subprograma

Configurar el
Configurar el

Haga clic en la palabra "esa" que está en color azul, como se resalta en la figura anterior.

Paso 9: configurar un servicio de acción

Configurar un servicio de acción
Configurar un servicio de acción

En el cuadro de búsqueda, busque el servicio "Hojas de cálculo de Google" y haga clic en el icono de Hojas de cálculo de Google.

Paso 10: Conéctese a Hojas de cálculo de Google

Conectarse a Hojas de cálculo de Google
Conectarse a Hojas de cálculo de Google

Si aún no lo ha hecho, no necesitará conectar su cuenta IFTTT a Hojas de cálculo de Google. Presione el botón Conectar que se muestra arriba y siga las instrucciones en pantalla.

Paso 11: elige una acción

Elige una acción
Elige una acción

Haga clic en "Agregar fila a la hoja de cálculo".

Paso 12: Configure la acción

Configurar la acción
Configurar la acción

Proporcione un nombre en el cuadro de texto "Nombre de la hoja de cálculo". Elijo utilizar "Data_Logger" para mantener la coherencia. Deje el resto de la configuración solo (puede experimentar con esa configuración en otro momento) y luego presione el botón "Crear acción" en la parte inferior de la pantalla.

Paso 13: Revise y finalice su applet

Revise y finalice su applet
Revise y finalice su applet

Una vez que esté satisfecho con la configuración de su subprograma, presione el botón "Finalizar".

Paso 14: recupere la información de configuración necesaria más adelante

Recupere la información de configuración necesaria más tarde
Recupere la información de configuración necesaria más tarde

Haga clic en "Webhooks" como se resaltó arriba.

Paso 15: Continúe con la documentación de Webhooks para la clave de API

Continúe con la documentación de Webhooks para la clave API
Continúe con la documentación de Webhooks para la clave API

Puede parecer extraño, pero haga clic en el enlace Documentación en la esquina superior derecha para pasar a la página con su clave API única.

Paso 16: guarde la clave de API

Guarde la clave de API
Guarde la clave de API
Guarde la clave de API
Guarde la clave de API

La primera línea de la pantalla de documentación muestra su clave API única. Copie y guarde esta clave para usarla más tarde.

También es una buena idea probar el subprograma aquí. Recuerde cambiar el {evento} a Data_Logger o lo que sea que haya llamado su evento y agregue algunos datos a los 3 valores vacíos y luego haga clic en el botón "Probarlo" en la parte inferior de la página. Debería ver un mensaje verde que dice "El evento se ha activado". Si es así, vaya a Google Docs y confirme que los datos que ingresó en la página de prueba aparecieron en el documento de Google Sheets.

Paso 17: Reúna los componentes

Reúna los componentes
Reúna los componentes
Reúna los componentes
Reúna los componentes
Reúna los componentes
Reúna los componentes

Solo necesitará algunas piezas.

1) Placa de desarrollo ESP8266 NodeMcu

2) Sensor de temperatura / humedad DHT11

3) Interruptor de láminas de puerta / ventana

4) Resistencia de 10 k ohmios

5) Cable de conexión

Paso 18: Ensamble los componentes

1) Conecte uno de los pines 3v3 del ESP8266 al pin vcc del DHT11.

2) Conecte una de las clavijas de tierra del ESP8266 a la clavija de tierra del DHT11.

3) Conecte el pin D4 (también conocido como pin 2 en el IDE) en el ESP8266 al pin de datos en el DHT11.

4) Conecte otro pin 3v3 en el ESP8266 a un lado del interruptor de láminas de puerta / ventana.

5) Conecte el pin D5 (también conocido como pin 14 en el IDE) en el ESP8266 al otro lado del interruptor de láminas de puerta / ventana y también conéctelo a un lado de la resistencia de 10k ohmios.

6) Conecte el otro lado de la resistencia de 10k ohmios a otro pin de tierra en el ESP8266.

Para las selecciones de pines ESP8266, consulte este diagrama útil o el video muy útil.

Paso 19: escribe el código Arduino

Escribe el código Arduino
Escribe el código Arduino

Copie y pegue el código a continuación en su IDE de Arduino.

#include #include #include "DHT.h"

#define DHTPIN 2 // a qué pin digital estamos conectados

#define DOORPIN 14 // en qué pin digital está el interruptor de la puerta.

#define DHTTYPE DHT11 // DHT 11

DHT DHT (DHTPIN, DHTTYPE);

int count = 1;

const char * ssid = "some_ssid"; // cambie esto para usar su ssid const char * password = "some_password"; // cambie esto para usar su contraseña int sleepTime = 100;

// Creador de webhooks IFTTT

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

// Recurso de URL IFTTT

const char * resource = "/ trigger / SOME_SERVICE_NAME / with / key / SOME_API_KEY"; // Asegúrate de usar tu nombre de servicio y tu clave api.

String doorStatus = "Cerrado";

volátil bool stateChanged = falso;

// Si duerme durante horas, establezca el intervalo en horas * 60 minutos * 60 segundos * 1000 milisegundos

intervalo largo constante = 1.0 * 60 * 60 * 1000; // 1 hora sin firmar long previousMillis = 0 - (2 * intervalo);

configuración vacía () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (PIN DE PUERTA, ENTRADA); // Sensor de puerta dht.begin (); WiFi.begin (ssid, contraseña);

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

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

void eventTriggered () {

stateChanged = verdadero; Serial.println ("¡Comprobando la puerta!"); if (digitalRead (DOORPIN) == HIGH) // Verifique si la puerta está abierta {Serial.println ("¡La puerta está cerrada!"); doorStatus = "Cerrado"; } else {Serial.println ("¡La puerta está abierta!"); doorStatus = "Abierto"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Compruebe el estado de la conexión WiFi // ¡La lectura de la temperatura o la humedad tarda unos 250 milisegundos! // Las lecturas del sensor también pueden tener hasta 2 segundos de antigüedad (es un sensor muy lento) float h = dht.readHumidity (); // Leer la temperatura como Celsius (por defecto) float t = dht.readTemperature (); // Lee la temperatura como Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Compruebe si alguna lectura falló y salga antes (para volver a intentarlo). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("¡No se pudo leer el sensor DHT!"); //Serial.print ("."); // ¡Error al leer del sensor DHT! regreso; } // Calcula el índice de calor en Fahrenheit (el valor predeterminado) float hif = dht.computeHeatIndex (f, h); // Calcular el índice de calor en grados 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 ("Índice de calor:"); Serial.print (hif); Serial.print ("* F ("); Serial.print (hic); Serial.print ("* C)%"); Serial.print ("\ t"); Serial.print ("Humedad:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Verifique si la puerta está abierta

{Serial.println ("¡Puerta cerrada!"); doorStatus = "Cerrado"; } else {Serial.println ("¡La puerta está abierta!"); doorStatus = "Abierto"; } String jsonObject = String ("{" valor1 / ": \" ") + f +" * F ("+ t +" * C) / "+ hif +" * F ("+ hic +" * C) "+" / ", \" valor2 / ": \" "+ h +" / ", \" valor3 / ": \" "+ puertaStatus +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (servidor); http.addHeader ("Tipo de contenido", "aplicación / json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); //Conexión cercana

stateChanged = falso;

int sleepTimeInMinutes = intervalo / 1000/60; Serial.print ("\ n / nIr a dormir por"); Serial.print (sleepTimeInMinutes); Serial.println ("minuto (s)…"); }}

bucle vacío () {

currentMillis largo sin firmar = millis (); retraso (4000); // Si superamos el tiempo transcurrido, forzar un control de la puerta y la temperatura. if (currentMillis - previousMillis> = intervalo) {stateChanged = true; previousMillis = currentMillis; Serial.print (recuento ++); Serial.println (") ¡Comprobando debido al tiempo transcurrido!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") ¡Comprobando debido al cambio de estado!"); }

// Si el estado cambió, verifique la puerta y la temperatura.

if (stateChanged) {checkStatus (); }

delay (sleepTime);

}

Paso 20: Resultados

Resultados
Resultados

Una vez que cargue el código fuente en el paso anterior, debería obtener resultados como el ejemplo que se muestra arriba.

Paso 21: Créditos

Encontré muchos consejos y sugerencias útiles de Random Nerd Tutorials y me gustaría agradecerles por toda su ayuda. Especialmente su excelente tutorial sobre ESP32 ESP8266 Publicar lecturas de sensores en Google Sheets en las que se basan las principales partes de este Instructable.

Además, el DHT11 Instructable de TheCircuit me ayudó a entender cómo usar este pequeño sensor muy económico pero interesante.

Además, hay muchos tutoriales relacionados con la supervisión de sus puertas, como el Monitor de puerta de garaje y otro de Random Nerd Tutorials. Usé fragmentos de estos para ayudarme a comprender cómo hacer que mi interruptor de lengüeta funcione correctamente.

Finalmente, con esta información y otros detalles que encontré en Internet, pude crear un sistema que satisfacía mis necesidades. Espero que encuentre útil este Instructable y cree uno propio.

Recomendado: