Registrador de dados em tempo real baseado em WiFi para armário ou geladeira

Registrador de datos en tiempo real basado en WiFi para gabinete o refrigerador

Introducción

¿Te molesta que el bizcocho que guardas en el congelador no esté listo a tiempo? Quizás alguien esté abriendo el refrigerador con frecuencia sin que tú te des cuenta. O puede que tengas un armario personal donde tus cosas simplemente desaparecen o se pierden cuando no estás. Entonces, ¿cómo saber cuándo está abierta la puerta de su frigorífico/gabinete?
Bueno, tenemos una solución sencilla para eso. Con esta técnica, puedes comprobar a qué hora y también cuántas veces se ha abierto sentándote en cualquier lugar con la ayuda de Internet.
Componentes necesarios
1. Arduino UNO
2. Módulo Wi-Fi ESP 8266
3. Sensor ultrasónico SR-04 (versión de 4 pines)
4. Cables
¿Como haremos esto?

Mediremos constantemente la distancia entre la puerta del mueble/frigorífico y el sensor ultrasónico y la actualizaremos en la web. Cada vez que se abría la puerta del armario, la distancia mostraba un pico.

Calcular la distancia usando ondas ultrasónicas.

Un sensor ultrasónico mide la distancia utilizando la velocidad del sonido. Básicamente, el transmisor envía una onda de sonido ultrasónica hacia un objeto y la parte receptora recibe la onda de sonido que se refleja en el mismo objeto. Sabemos que la velocidad del sonido es de 330 metros por segundo. El sensor nos da el tiempo que tarda la onda en llegar al objeto y regresar al receptor. Como conocemos el tiempo y la velocidad, podemos calcular fácilmente la distancia desde el objeto al sensor.

Imagem representando o funcionamento do Sensor Ultrassônico

Figura 1: Imagen que representa el funcionamiento del Sensor Ultrasónico

Digamos que el objeto está a una distancia =' d 'metros del sensor. El tiempo que tarda la onda ultrasónica (que se muestra en rojo) en golpear el objeto y reflejarse es T segundos y la velocidad de la onda = ' S ' EM. Entonces,

2Xd = SXT

=> d = SXT/2

Calculamos el doble de la distancia porque la onda viaja desde Tx al objeto y luego desde el objeto a Rx. Y como sabemos que S=330m/s obtenemos,

d = 165 metros XT (donde T está en segundos)

Entonces todo lo que necesitamos saber es cuánto tiempo le toma a la onda viajar de un lado al otro. Este tiempo lo proporciona el pin 'Echo' del módulo SR-04.

ESP8266 en modo cliente

En nuestro último proyecto vimos cómo usar el módulo ESP8266 en modo servidor. Sirvió como una página web para cualquier dispositivo que marcara su dirección IP. Ahora, aquí el módulo actuaría como un cliente, lo que significa que se conectaría a Internet, a un sitio web en particular y actualizaría algún valor en el sitio web.
Básicamente estamos enviando los datos obtenidos del sensor ultrasónico a una web llamada thingspeak.com a través del módulo wifi.
Algoritmo:
– Pruebe el módulo usando el comando “AT”
– Configure el modo de funcionamiento mediante el comando “AT+CWMODE= "
– Conéctese a una red Wi-Fi usando el comando “AT+CWJAP= , "
– Conéctese a un sitio web en modo TCP usando el comando “AT+CIPSTART= , , "
– Usando el comando “AT+CIPSEND= ”, envía los datos que deseas actualizar en el sitio web.
– Una vez completada, cierre la conexión utilizando el comando “AT+CIPCLOSE”.
Acerca de Thingspeak.com

Thingspeak.com es un sitio web donde puedes subir ciertos datos a un 'canal' que hayas creado y también puedes ver los mismos datos en forma de gráfico y además con actualización en tiempo real. Cuando crea una cuenta y un canal, se le proporciona un código que también se conoce como "Clave" que se utilizará para cargar la fecha en un canal específico.

Procedimiento:

1. Vaya a www.thingspeak.com y regístrese para obtener una cuenta gratuita.

2. En la página de registro, no olvide seleccionar la zona horaria correcta. La zona horaria permitirá que los datos cargados obtengan una marca de tiempo.
3. Una vez creada la cuenta, tendrás la opción de crear un canal. Haga clic en él y deje todas las entradas como predeterminadas.

Captura de tela da geração de chave de API no servidor Thingspeak

Figura 2: Captura de pantalla de la generación de claves API en el servidor Thingspeak

4. Ahora, navegue hasta la pestaña "API" y anote la "clave API".

5. Para probar el canal que acaba de crear, escriba lo siguiente en la barra de direcciones de su navegador:

Reemplazar por lo que obtuviste en la 4ta etapa .

Y luego presione Entrar. Deberías ver una página en blanco con solo "1" escrito en ella.

6. Ahora regrese a la página del canal y navegue hasta la pestaña 'Vista privada' y verá algo como esto:

Captura de tela das estatísticas do canal exibidas no servidor Thingspeak

Figura 3: Captura de pantalla de las estadísticas del canal mostradas en el servidor Thingspeak

Explicación del código

Arduino básicamente recopila datos del sensor ultrasónico, calcula la distancia y usa el módulo Wi-Fi para actualizarlos en el canal thingspeak.com. Estos son los pasos a seguir:
– Iniciar conexión serie con velocidad de baudios 9600. Enviar NO y comprobar si se recibe OK . Esto es para garantizar la presencia del módulo.
– Coloque el módulo en modo Estación usando el comando AT+CWMODE=1
– Conecte el módulo a su red doméstica usando el comando AT+CWJAP=”NOMBRE DE LA RED DOMÉSTICA”,”CONTRASEÑA”
– Verifique si el módulo respondió OK . Si es así, proceda
– Entrar en bucle infinito
– Asigne el pin 16 (que está conectado al pin TRIGGER & ECHO del sensor) como salida y configúrelo en BAJO. Espere 2 microsegundos
– Configure el pin en ALTO, espere 5 microsegundos y nuevamente configúrelo en BAJO (Básicamente creando un pulso que dura 5 microsegundos)
– Ahora asigne el mismo pin al modo ENTRADA y lea la duración del pulso proveniente del pin ECHO del sensor.
– Utilice la duración para calcular la distancia utilizando la función microsegundosACentímetros. Convierta el valor obtenido en un tipo de cadena y guárdelo en una variable 'cmstr'
– Si el valor cambia (es decir, cuando se abre el casillero), pase el cmstr a la función updateDist
– Conéctese a thingspeak.com en modo TCP usando el comando AT+CIPSTART=”TCP”,”184.106.153.149”,80
– Publique el valor de la distancia usando la función AT+CIPSEND= seguido de OBTENER /actualización?clave= &campo1=cmstr
– Cerrar la conexión usando AT+CYPCLOSE

Acuerdo

1. Conecte las piezas según el diagrama del circuito.
2. Colóquelo dentro de un armario de manera que el sensor quede al menos a 4 cm de la puerta.
3. Conecte una fuente de alimentación al circuito (batería A) y en un minuto debería ver la salida en su canal thingspeak.com.

Protótipo de circuito baseado em modem Wi-Fi Arduino e ESP8266 usado para registro de dados

Figura 4: Prototipo de circuito basado en el módem Wi-Fi Arduino y ESP8266 utilizado para el registro de datos

Imagem mostrando sensor ultrassônico conectado ao Arduino Uno

Figura 5: Imagen que muestra el sensor ultrasónico conectado a Arduino Uno

Aquí hay algunos resultados que obtuve:

Captura de tela das estatísticas do armário exibidas no servidor Thingspeak

Figura 6: Captura de pantalla de las estadísticas de los casilleros mostradas en el servidor Thingspeak

Como pueden ver, cuando lo abrí y me tomé el tiempo de configurar el sistema allí correctamente, ya empezó a enviar datos porque había una diferencia de distancia con la puerta del armario.

Después de eso, alrededor de las 12:00, dejó de enviar datos porque el gabinete estaba cerrado y no hubo cambios en la distancia entre el sensor y la puerta por un tiempo. Y luego, alrededor de las 12:52, cuando abro la puerta, nota el cambio en la distancia y comienza a enviar datos nuevamente.

Solucion de problemas

Si la actualización en vivo no se muestra en el canal:
– Verifique y asegúrese de que su conexión a Internet y Wi-Fi esté funcionando bien.
– Verifique que haya proporcionado el nombre de red y la contraseña correctos en el código.
– Compruebe que ha sustituido la CLAVE API correcta en el código
Si la actualización se está produciendo pero se muestra como cero:
– Asegúrese de que el sensor ultrasónico esté funcionando y que las conexiones estén apretadas.

Código fuente del proyecto



 
intpingPin = 16; // A2 - Conectado a los pines Trig y ECHO del Sensorunsigned int cm_old=0; configuración nula { Serial.begin(9600); Serial.println("AT"); retraso(5000); if(Serial.find("OK")){ conectarWiFi; }} bucle vacío { larga duración, cm; // El PING))) se activa mediante un pulso ALTO de 2 o más microsegundos. // Da un pulso BAJO corto de antemano para asegurar un pulso ALTO limpio: pinMode(pingPin, OUTPUT); escritura digital (pingPin, BAJO); retrasoMicrosegundos(2); escritura digital (pingPin, ALTA); // Enviando un pulso alto en el pin de activación del sensor delayMicrosegundos(5); escritura digital (pingPin, BAJO); // El mismo pin se utiliza para leer la señal del PING))): un pulso ALTO // cuya duración es el tiempo (en microsegundos) desde el envío // del ping hasta la recepción de su eco fuera de un objeto . pinMode(pingPin, ENTRADA); duración = pulseIn(pingPin, ALTA); // convierte el tiempo en distancia cm = microsegundosToCentimetros(duración); Cadena cmstr = Cadena(cm); if(cm!=cm_old) updateDist(cmstr); retraso(2000); cm_old=cm;} void updateDist(String cmstr){ String cmd = "AT+CIPSTART="TCP",""; cmd += "184.106.153.149"; cmd += "",80"; Serie.println(cmd); retraso(2000); if(Serial.find("Error")){ retorno; } cmd = "OBTENER /actualizar?clave= &campo1="; //edita la clave y copia y pega con la tuya propia cmd += cmstr; cmd += "rn"; Serial.print("AT+CIPSEND="); Serial.println(cmd.longitud); if(Serial.find(">")){ Serial.print(cmd); }else{ Serial.println("AT+CYPCLOSE"); }} booleano connectWiFi { Serial.println("AT+CWMODE=1"); retraso(2000); Cadena cmd="AT+CWJAP=""; cmd+=" "; cmd+="",""; cmd+=" "; cmd+="""; Serial.println(cmd); delay(5000); if(Serial.find("OK")){ return true; }else{ return false; }} microsegundosToCentimeters largos(microsegundos largos){ // La velocidad del sonido es 340 m/s o 29 microsegundos por centímetro. // El ping viaja de ida y vuelta, por lo que para encontrar la distancia del // objeto tomamos la mitad de la distancia recorrida.

Diagramas de circuito

Diagrama de circuito-Arduino-ESP8266-Prototipo de registrador de datos basado en módem Wi-Fi

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.