Monitoreo de temperatura y humedad mediante un robot en movimiento.

Los robots están diseñados para facilitar y automatizar el trabajo de los humanos. Son útiles para implementar en lugares de difícil acceso. En este tutorial, se diseña un móvil de monitoreo de humedad y temperatura basado en una aplicación robótica de IoT. La humedad y la temperatura son los entornos físicos más comunes que necesitan ser monitoreados. El robot de cuatro ruedas diseñado en este proyecto puede funcionar a una distancia de 30 metros y soportar temperaturas de hasta 150 grados centígrados.
El robot se podrá controlar a través de un teléfono móvil que tendrá instalada una aplicación personalizada. El teléfono móvil se conectará al robot mediante Bluetooth. Para la conectividad Bluetooth, el circuito electrónico que controla el robot tiene conectado el módulo Bluetooth HC-05. Para controlar el robot, cualquier teléfono inteligente Android deberá emparejarse con el módulo Bluetooth HC-05 e iniciar la aplicación personalizada diseñada para este proyecto. La aplicación se puede descargar desde este tutorial.
El circuito electrónico también tiene conectado un módulo Wi-Fi ESP8266. El módulo Wi-Fi se utiliza para conectarse a cualquier punto de acceso a Internet disponible y transferir datos de temperatura y humedad a un servidor remoto. Se utiliza una plataforma de IoT para recibir y registrar datos. La misma plataforma se utiliza para monitorear datos en tiempo real. Para registrar información de temperatura y humedad, se utiliza el sensor de humedad y temperatura DHT-11 en el circuito.
Protótipo de robô ThingSpeak IoT baseado em Arduino para monitoramento de temperatura e umidade
Figura 1: Prototipo de robot ThingSpeak IoT basado en Arduino para monitoreo de temperatura y humedad
El circuito de control del robot está construido alrededor del Arduino Pro Mini. Se prefiere la placa Arduino porque es la placa controladora más popular y cuenta con un gran apoyo de la comunidad. El Pro Mini se utiliza en el circuito debido a sus ricas funciones empaquetadas en un tamaño compacto. Además, resulta útil instalar una placa controladora tan pequeña en cualquier cuerpo robótico. El robot es impulsado por motores de CC con engranajes que se controlan a través del controlador de motor IC L293D. El boceto de Arduino que se ejecuta en el circuito de control se escribe y compila en el IDE de Arduino, mientras que la aplicación personalizada utilizada para enviar comandos de control se crea utilizando MIT App Inventor 2. La plataforma IoT utilizada para monitorear los datos del sensor es ThingSpeak.

Componentes necesarios –

Lista de componentes necessários para o robô ThingSpeak IoT baseado em Arduino usado para monitoramento de temperatura e umidade
Fig. 2: Lista de componentes necesarios para el robot ThingSpeak IoT basado en Arduino utilizado para monitorear la temperatura y la humedad

Diagrama de bloques -

Diagrama de blocos do robô ThingSpeak IoT baseado em Arduino para monitoramento de temperatura e umidade
Fig. 3: Diagrama de bloques del robot ThingSpeak IoT basado en Arduino para monitoreo de temperatura y humedad

Conexiones de circuito

El circuito de control del robot está construido alrededor del Arduino Pro Mini.
Imagem do circuito IoT ThingSpeak baseado em Arduino conectado ao corpo do robô
Fig. 4: Imagen del circuito ThingSpeak IoT basado en Arduino conectado al cuerpo del robot
El circuito se construye integrando las siguientes secciones:
Fuente de alimentación: en el circuito, Arduino Pro Mini, el módulo Bluetooth y el módulo Wi-Fi necesitan 5 V CC regulados para su funcionamiento, mientras que el controlador IC del motor necesita 12 V CC. Se utiliza una batería NIMH de 12 V como fuente de alimentación principal. La energía de la batería se regula a 5 V y 12 V mediante circuitos integrados 7805 y 7812. El pin 1 de ambos circuitos integrados reguladores de voltaje está conectado al ánodo de la batería y el pin 2 de ambos circuitos integrados está conectado a tierra. Las respectivas salidas de voltaje se toman del pin 3 de los respectivos circuitos integrados reguladores de voltaje. También se conecta un LED junto con una resistencia pull-up de 10 K Ω entre la tierra común y el pin de salida para obtener una señal visual de la continuidad de la energía. A pesar de utilizar una batería de 12 V, el 7812 se utiliza para proporcionar una fuente de alimentación regulada y estable al circuito integrado del controlador del motor.
Arduino ProMini – Arduino Pro Mini es una placa microcontroladora basada en Atmega 168. Tiene 14 pines GPIO, 6 entradas analógicas, 6 pines PWM, 2 interrupciones externas y UART, SPI e I2C integrados. La placa mide solo 1,3 pulgadas por 0,7 pulgadas, seis veces más pequeña que la Arduino UNO. Con estas características empaquetadas en un tamaño pequeño, esta placa es ideal para cualquier proyecto de robótica. En este proyecto, se utilizan 4 pines de entrada y salida del Pro Mini para interactuar con el IC del controlador del motor y el módulo Bluetooth interactúa con los pines RX y TX disponibles para la comunicación en serie a través de UART. Uno de los pines se usa para conectar el sensor DHT-11 y dos pines GPIO se usan para conectar el módulo Wi-Fi ESP8266.
Módulo Bluetooth HC-05: el módulo Bluetooth HC-05 es un módulo de protocolo de puerto serie. Opera en la banda ISM de 2,4 GHz con V2.0+EDR (fecha de datos mejorada). Puede funcionar en modo Maestro y Esclavo. El módulo Bluetooth tiene seis pines: Habilitar, VCC, Tierra, Transmitir datos (TxD), Recibir datos (RxD) y Estado. Los pines Enable y State no se utilizan y, por lo tanto, no están conectados al circuito. Los pines VCC y Tierra están conectados a VCC y Tierra comunes. Los pines TxD y RxD del módulo están conectados a los pines RX y TX del Arduino Pro Mini respectivamente. Estas conexiones se resumen en la siguiente tabla:
Tabela listando a configuração dos pinos do módulo Wi-Fi ESP8266 ESP-12
Fig. 5: Tabla que enumera la configuración de pines del módulo Wi-Fi ESP8266 ESP-12
Módulo Wi-Fi ESP8266: el módulo Wi-Fi ESP8266 se utiliza para conectarse a cualquier punto de acceso a Internet disponible y transferir datos del sensor a la plataforma ThingSpeak a través de Wi-Fi. El módulo Wi-Fi ESP8266 es un SOC integrado independiente y alimentado por pila. Protocolo TCP/IP que puede proporcionar a cualquier microcontrolador acceso a una red Wi-Fi. El ESP8266 es capaz de alojar una aplicación o descargar todas las funciones de red Wi-Fi desde otro procesador de aplicaciones.
Cada módulo ESP8266 viene preprogramado con el firmware del conjunto de comandos AT. Entonces, uno puede simplemente conectarlo a un dispositivo Arduino. Aquí carga los datos de monitoreo a la nube. El módulo está disponible en dos modelos: ESP-01 y ESP-12. El ESP-12 tiene 16 pines disponibles para interconexión, mientras que el ESP-01 solo tiene 8 pines disponibles para su uso. El ESP-12 tiene la siguiente configuración de pines:
Tabela listando a configuração dos pinos do IC do driver do motor L293D
Fig. 6: Tabla que enumera la configuración de pines del módulo Wi-Fi ESP8266 ESP-12
En el proyecto se utiliza el modelo ESP-12. Los pines de reinicio y VCC del módulo están conectados a 5 V CC mientras que el pin de tierra está conectado a tierra común. Los pines Tx y Rx del módulo están conectados a los pines 11 y 10 del Arduino Pro Mini. Los pines 11 y 10 de Arduino están configurados para receptor y transmisor en serie a través de la función en serie del software.
Sensor de temperatura y humedad DHT-11 : el sensor DHT-11 lee la temperatura y la humedad ambiente y transmite los datos al microcontrolador como datos digitales. El pin de datos del sensor de temperatura y humedad DHT11 está conectado al pin 12 del Arduino Pro Mini. VCC y tierra están conectados a VCC y tierra comunes.
IC de controlador de motor de CC L293D: el L293D es un circuito integrado (IC) de controlador de motor de puente H dual. Los controladores de motor actúan como amplificadores de corriente en el sentido de que reciben una señal de control de corriente baja y suministran una señal de corriente más alta. Esta señal de corriente más alta se utiliza para accionar los motores. Tiene 16 pines con la siguiente configuración de pines:
Tabela listando a configuração dos pinos do IC do driver do motor L293D
Fig. 7: Tabla que enumera la configuración de pines del CI del controlador del motor L293D
Se utilizan dos motores de CC para fabricar el automóvil robótico. Los motores de CC interactúan entre los pines 3 y 6 y los pines 14 y 11 del IC del controlador del motor.
IC L293D controla motores de CC según las siguientes tablas de verdad:
Captura de tela da interface do usuário da plataforma ThingSpeak
Fig. 8: Tabla de verdad del CI del controlador del motor L293D
Tabela verdade do IC do driver do motor L293D
Fig. 9: Captura de pantalla de la interfaz de usuario de la plataforma ThingSpeak
Los pines 4, 5, 13 y 12 del L293D están conectados a tierra mientras que los pines 1, 16 y 9 están conectados a 5 VCC y el pin 8 está conectado a 12 VCC. Los pines 15, 2, 7 y 10 del IC del controlador del motor están conectados a los pines 8, 2, 3 y 7 de la placa Arduino. El motor de CC conectado a la rueda derecha está conectado a los pines 11 y 14, mientras que el motor conectado a la rueda izquierda está conectado a los pines 3 y 6 del IC del controlador del motor.
Motores de CC con engranajes: en este robot, los motores de CC con engranajes de 12 V están conectados a las ruedas. Los motores de CC con engranajes están disponibles con una amplia gama de RPM y par, lo que permite que un robot se mueva según la señal de control que recibe del controlador IC del motor.

Cómo funciona el circuito –

Después de ensamblar el robot, se puede utilizar conectando una batería al circuito. Cuando el robot se enciende, comienza a obtener datos del sensor de temperatura y humedad DHT-11 y busca cualquier punto de acceso a Internet disponible para conectarse a la plataforma ThingSpeak. ThingSpeak es un servicio de plataforma de análisis de IoT que le permite agregar, visualizar y analizar flujos de datos en vivo en la nube. ThingSpeak proporciona vistas instantáneas de los datos publicados por dispositivos IoT en el servidor ThingSpeak. Con la capacidad de ejecutar código MATLAB en ThingSpeak, puede realizar análisis y procesamiento de datos en línea a medida que llegan.
El DHT11 detecta vapor de agua midiendo la resistencia eléctrica entre dos electrodos. El componente sensor de humedad es un sustrato que atrapa la humedad con electrodos aplicados a la superficie. Cuando el sustrato absorbe vapor de agua, el sustrato libera iones, lo que aumenta la conductividad entre los electrodos. El cambio de resistencia entre los dos electrodos es proporcional a la humedad relativa.
Una humedad relativa más alta disminuye la resistencia entre los electrodos, mientras que una humedad relativa más baja aumenta la resistencia entre los electrodos. El DHT11 mide la temperatura con un sensor de temperatura NTC (termistor) montado en superficie integrado en la unidad. La humedad y temperatura medidas por el sensor son monitoreadas y registradas a través de la plataforma ThingSpeak IoT a través del módulo Wi-Fi que está conectado al controlador que proporciona comunicación serial para la transferencia de datos. Los datos registrados son visibles en la interfaz de usuario de la plataforma.
Captura de tela da interface do usuário da plataforma ThingSpeak
Fig. 10: Captura de pantalla de la interfaz de usuario de la plataforma ThingSpeak
El robot se puede mover pasando comandos desde una aplicación personalizada de Android instalada en cualquier teléfono inteligente. La aplicación personalizada de Android se diseñó con MIT App Inventor 2. Consulte la guía de programación para saber cómo se diseñó la aplicación con MIT App Inventor. La aplicación personalizada tiene botones para mover el robot hacia adelante, hacia atrás, hacia la izquierda, hacia la derecha y para detenerlo. El usuario simplemente toca los botones de dirección para transferir comandos. La aplicación pasa los comandos al módulo Bluetooth conectado al circuito de control en forma de secuencias de un solo carácter. Se pasan las siguientes cadenas para transferir los comandos de control:
Comandos de string de listagem de tabelas usados ​​pelo IoT Robot
Fig. 11: Tabla que enumera los comandos de cadena utilizados por IoT Robot
Estas cadenas de comando se interpretan en el boceto de Arduino para controlar los motores de CC. El robot se puede mover hacia adelante, hacia atrás, hacia la izquierda o hacia la derecha implementando la siguiente lógica de entrada en los pines del controlador del motor:
Tabela verdade do IC do driver do motor L293D
Fig. 12: Tabla lógica del IC del controlador del motor L293D para el robot IoT
Al recibir los comandos de cadena, el boceto de Arduino simplemente cambia la salida digital en los pines de entrada del IC del controlador del motor para controlar el movimiento del robot.
Imagem mostrando o robô ThingSpeak IoT baseado em Arduino
Fig. 13: Imagen que muestra el robot ThingSpeak IoT basado en Arduino

Guía de programación –

La aplicación personalizada utilizada para controlar el movimiento del robot se construye utilizando MIT App Inventor. También hay muchas aplicaciones Bluetooth de Android disponibles en Play Store que se pueden utilizar. Si se utiliza alguna aplicación disponible en Play Store, el boceto de Arduino debe modificarse o cambiarse en consecuencia. MIT App Inventor 2 se utiliza para crear la aplicación.
Captura de tela do aplicativo personalizado projetado usando o MIT App Inventor
Fig. 14: Captura de pantalla de una aplicación personalizada diseñada con MIT App Inventor
La aplicación MIT Inventor es una plataforma sencilla para crear una aplicación de Android. La plataforma utiliza bloques lógicos para crear una aplicación. En el sitio web oficial de la plataforma se proporciona una guía para utilizar la aplicación Inventor 2 del MIT. También hay muchos tutoriales de YouTube disponibles como referencia. La aplicación de control de robot creada en este proyecto tiene las siguientes lógicas que se forman con la ayuda de bloques:
Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor
Fig. 15: Captura de pantalla de los bloques lógicos de la aplicación personalizada diseñada con MIT App Inventor
Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor
Fig. 16: Captura de pantalla de los bloques lógicos de la aplicación personalizada diseñada con MIT App Inventor
Se pueden agregar aún más funciones a la aplicación al incluir bloques lógicos adicionales.
En el circuito de control del robot, el boceto Arduino que se ejecuta en el Pro Mini controla el mecanismo del robot. El boceto de Arduino comienza con la importación de los archivos de encabezado. Los siguientes archivos de encabezado están incluidos en el código del sensor DHT-11 y la funcionalidad de serie del software:
#incluir
#incluir
Las siguientes directivas #define se utilizan para determinar los pines de Arduino que deben conectarse al IC del controlador del motor.
#definir LM1 2
#definir LM23
#definir RM17
#definir RM2 8
El siguiente bloque de código define los prototipos de funciones que se utilizan para determinar las tareas del motor.
datos de caracteres = 0;
avance nulo;
rebobinado vacío;
nulo girar a la izquierda;
nulo girar a la derecha;
robostop vacío;
El siguiente bloque de código define la clave API proporcionada por ThingSpeak al crear el canal donde se deben escribir los datos. Esta clave API debe ser reemplazada por la clave API que le asignó la plataforma ThingSpeak.
Cadena apiKey = “9W6L82SPOZKQ1A1W”;
El siguiente código define los pines serie del software utilizados para la comunicación Wi-Fi.
SoftwareSerial be(11,10); //RX,TX
El siguiente bloque de código es la función de configuración donde se usa para determinar si los pines conectados se usan como entrada o salida y habilitar la comunicación en serie. Aquí Serial.begin(9600) se usa para establecer comunicación serial entre bluetooth y arduino y Serial.begin(115200) se usa para comunicación serial entre Wi-Fi y arduino. Cabe señalar que la nueva versión del módulo Wi-Fi podrá funcionar con una velocidad de transmisión de 9600.
configuración nula
{
Serie.begin(9600);
pinMode(LM1, SALIDA);
pinMode(LM2, SALIDA);
pinMode(RM1, SALIDA);
pinMode(RM2, SALIDA);
ser.begin(115200);
Para obtener más información sobre los comandos AT, consulte ESP8266 – Referencia de comandos AT.
El boceto completo de Arduino para el rover de monitoreo de temperatura y humedad basado en IoT se puede encontrar en la pestaña del código fuente.
Nota : Encuentre el archivo de la aplicación controlada por Bluetooth a continuación.

Código fuente del proyecto

###

 //Programa para

 #incluir

 #incluir // incluye biblioteca de sensores dht


 dhtDHT;


 flotar t=0;

 flotar h=0;


 #definir LM1 2

 #definir LM2 3

 #definir RM1 7

 #definir RM2 8

 #definir DHT11_PIN 12


 datos de caracteres = 0;

 avance nulo;

 retroceso nulo;

 girar a la izquierda vacío;

 giro nulo a la derecha;

 robostop vacío;


 // reemplazar con la clave API de thingspeak de tu canal

 Cadena apiKey = "9W6L82SPOZKQ1A1W";


 // conecta 10 al TX del USB serie

 // conecta 11 al RX del USB serie

 SoftwareSerial be(11,10); // RX, TX


 // esto se ejecuta una vez

 configuración vacía

 {

 // habilitar la depuración en serie

 // Serie.begin(115200);
 
Serie.begin(9600);

 pinMode(LM1, SALIDA);

 pinMode(LM2, SALIDA);

 pinMode(RM1, SALIDA);

 pinMode(RM2, SALIDA);

 // habilitar el software serie

 ser.begin(115200);



 // restablecer la conexión WiFi ESP8266 AT+CIPMUX=1 AT+CWJAP

 ser.println("EN");

 retraso(1000);

 ser.println("AT+GMR");

 retraso(1000);

 ser.println("AT+CWMODE=3");

 retraso(1000);

 ser.println("AT+RST");

 retraso(5000);

 ser.println("AT+CIPMUX=1");

 retraso(1000);

 Cadena cmd="AT+CWJAP="Gokul","22031994"";

 ser.println(cmd);

 retraso(1000);

 ser.println("AT+CIFSR");

 retraso(1000);

 }



 // el lazo

 bucle vacío

 {

 si(Serie.disponible >0)

 {

 datos = Serie.leer;

 Serie.print(datos);

 Serie.print("n");

 si(datos == 'F')

 {

 Serial.println("Adelante");

 avanzar;

 }

 de lo contrario si (datos == 'B')

 {

 Serial.println("Hacia atrás");

 mover hacia atrás;

 }

 de lo contrario si (datos == 'L')

 {

 Serial.println("Izquierda");

 Gire a la izquierda ;

 }

 de lo contrario si (datos == 'R')

 {

 Serial.println("Derecha");

 Gire a la derecha ;

 }

 de lo contrario si (datos == 'S')

 {
 
Serial.println("Detener");

 robostop;

 }

 }

 retraso(1000);

 int chk = DHT.read11(DHT11_PIN);

 Serial.print("Temperatura = ");

 t = DHT.temperatura;

 Serial.println

 Serial.print("Humedad = ");

 h = DHT.humedad;

 Serie.println(h);

 esp_8266;


 }


 vacío esp_8266

 {

 // conexión TCP AT+CIPSTART=4,"TCP","184.106.153.149",80

 Cadena cmd = "AT+CIPSTART=4,"TCP","";

 cmd += "184.106.153.149"; // api.thingspeak.com

 cmd += "",80";

 ser.println(cmd);

 Serie.println(cmd);

 si(ser.find("Error"))

 {

 Serial.println("Error AT+CIPSTART");

 devolver;

 }



 // preparar GET cadena GET

 Cadena getStr = "GET /update?api_key=";

 getStr += apiKey;

 getStr +="&field1=";

 getStr +=String(h);

 getStr +="&field2=";

 getStr +=Cadena

 getStr += "rnrn";

 // enviar longitud de datos

 cmd = "AT+CIPSEND=4,";

 cmd += String(getStr.length);

 ser.println(cmd);

 Serie.println(cmd);

 retraso(1000);

 ser.print(getStr);

 Serial.println(getStr);


 retraso(10000);

 }


 avance vacío

 {

 escritura digital (LM1, ALTA);
 
escritura digital (LM2, BAJO);

 escritura digital (RM1, ALTA);

 escritura digital (RM2, BAJO);

 }


 retroceso nulo

 {

 escritura digital (LM1, BAJO);

 escritura digital (LM2, ALTA);

 escritura digital (RM1, BAJO);

 escritura digital (RM2, ALTA);

 }


 vacío girar a la izquierda

 {

 escritura digital (LM1, ALTA);

 escritura digital (LM2, BAJO);

 escritura digital (RM1, BAJO);

 escritura digital (RM2, BAJO);

 }


 giro vacío a la derecha

 {

 escritura digital (LM1, BAJO);

 escritura digital (LM2, BAJO);

 escritura digital (RM1, ALTA);

 escritura digital (RM2, BAJO);

 }


 vacío robostop

 {

 escritura digital (LM1, BAJO);

 escritura digital (LM2, BAJO);

 escritura digital (RM1, BAJO);

 escritura digital (RM2, BAJO);

 }

###

Diagramas de circuito

Diagrama de circuito-Arduino-ThingSpeak-IoT-Robot-Temperatura-Humedad-Monitoreo

Ficha Técnica del Proyecto

https://www.engineersgarage.com/wp-content/uploads/2019/10/ROBOT_CONTROL.apk_.zip



Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

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