Tabla de contenido:
- Paso 1: descargo de responsabilidad
- Paso 2: Configure una cuenta IFTTT gratuita
- Paso 3: Cree un subprograma IFTTT
- Paso 4: Configure "esta" parte de su subprograma
- Paso 5: agregue el servicio WebHooks a su applet
- Paso 6: Configurar el activador Recibir una solicitud web
- Paso 7: proporcione un nombre de evento
- Paso 8: Configure "esa" parte de su subprograma
- Paso 9: configurar un servicio de acción
- Paso 10: Conéctese a Hojas de cálculo de Google
- Paso 11: elige una acción
- Paso 12: Configure la acción
- Paso 13: Revise y finalice su applet
- Paso 14: recupere la información de configuración necesaria más adelante
- Paso 15: Continúe con la documentación de Webhooks para la clave de API
- Paso 16: guarde la clave de API
- Paso 17: Reúna los componentes
- Paso 18: Ensamble los componentes
- Paso 19: escribe el código Arduino
- Paso 20: Resultados
- Paso 21: Créditos
Video: Proyecto de registrador de estado de puerta y temperatura: 21 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
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
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
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
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
Elija el disparador "Recibir una solicitud web".
Paso 7: 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
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
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
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
Haga clic en "Agregar fila a la hoja de cálculo".
Paso 12: Configure 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
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
Haga clic en "Webhooks" como se resaltó arriba.
Paso 15: Continúe con la documentación de Webhooks para la clave de 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
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
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
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
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:
Cómo hacer un registrador de datos en tiempo real de humedad y temperatura con Arduino UNO y tarjeta SD - Simulación del registrador de datos DHT11 en Proteus: 5 pasos
Cómo hacer un registrador de datos en tiempo real de humedad y temperatura con Arduino UNO y tarjeta SD | Simulación del registrador de datos DHT11 en Proteus: Introducción: hola, soy Liono Maker, aquí está el enlace de YouTube. Estamos haciendo un proyecto creativo con Arduino y trabajamos en sistemas embebidos. Data-Logger: Un registrador de datos (también registrador de datos o registrador de datos) es un dispositivo electrónico que registra datos a lo largo del tiempo w
Sensor de alarma de puerta con interruptor magnético, normalmente abierto, proyecto simple, 100% en funcionamiento, código fuente proporcionado: 3 pasos
Sensor de alarma de puerta de interruptor magnético, normalmente abierto, proyecto simple, 100% en funcionamiento, código fuente dado: Descripción: Hola chicos, voy a hacer un tutorial sobre la alarma de sensor de interruptor magnético MC-18 que funciona en modo normalmente abierto. Tipo de interruptor: NO (tipo de cierre normal), el circuito está abierto normalmente y el circuito está conectado cuando el imán está cerca. La caña
Truco de luz de estado de puerta de garaje: 3 pasos
Truco de luz de estado de la puerta del garaje: Vivo en una casa donde no es fácil ver si la puerta del garaje está abierta o cerrada. Tenemos un botón en la casa, pero la puerta no está a la vista. La idea de diseñar algún tipo de interruptor y fuente de alimentación era indeseable debido a la alta pr
Luces automáticas conectadas con puerta y monitoreo de puerta: 5 pasos
Luces automáticas conectadas con puertas y monitoreo de puertas: Parece ser muy difícil encontrar el tablero de interruptores en la oscuridad, pero este proyecto es realmente útil para resolver este problema. Siga los pasos a continuación para conocer la solución de este
¿Quién está en mi puerta? Proyecto de sensor de movimiento / sensor de rango PIR: 5 pasos
¿Quién está en mi puerta? Proyecto de sensor de movimiento / sensor de rango PIR: Nuestro proyecto tiene como objetivo detectar el movimiento a través de sensores PIR y de distancia. El código Arduino generará una señal visual y de audio para indicarle al usuario que hay alguien cerca. El código MATLAB enviará una señal de correo electrónico para alertar al usuario de que hay alguien cerca. Este dispositivo