Resumen:
Este proyecto tiene como objetivo construir una aplicación robótica para automatizar la recopilación de aspectos ambientales. El robot admite el monitoreo remoto del desempeño y mantenimiento de diversos factores ambientales en cualquier área. Aquí se proporcionan detalles del diseño, configuración y uso del robot en el sistema de adquisición de datos (DAQ). Los sensores proporcionan datos precisos y confiables en tiempo real necesarios para el monitoreo y control autónomo de cualquier tipo de área o industria. Se puede acceder, trazar y analizar de forma remota los datos adquiridos por el sistema propuesto. Esto proporciona una solución totalmente automatizada para monitorear y controlar ubicaciones remotas.

Fig. 1: Prototipo de robot Land Rover basado en Arduino utilizado para la adquisición de datos del sensor
Descripción:
Requisitos previos y equipo:
Necesitará lo siguiente:
-
Una placa Arduino o un clon de Arduino (aquí tienes una guía si la necesitas)
-
Dos motores CC.
-
Un módulo Bluetooth TTL-UART de 5v.
-
Chasis de robot y ruedas que se adaptan al tamaño del chasis y motor.
-
Arduino IDE para programación.
Diagrama de bloques:

Fig. 2: Diagrama de bloques del robot de adquisición de datos de sensores basado en Arduino
Nuestro objetivo en este proyecto es recopilar datos de sensores y almacenarlos para análisis futuros. Existen muchas técnicas utilizadas para la adquisición de datos, como EEPROM y tarjeta SD. Aquí utilizaremos almacenamiento basado en Internet, que es una forma confiable y eficiente de analizar los datos de cualquier sensor.
Montaje de herrajes:
Realice las conexiones del robot como se indica en el diagrama del circuito. Monta el robot con las piezas seleccionadas y conecta los motores al circuito. Los optoacopladores se utilizan para proteger Arduino de peligros de alto voltaje. Nota: El RX de Arduino debe estar conectado al TX del módulo Bluetooth y el TX de Arduino debe estar conectado al RX del módulo Bluetooth.
Laboral:
En este Robot agregamos funcionalidad de Internet mediante un módem GSM que proporciona conexión GPRS. La siguiente sección explicará cómo enviar lecturas de sensores mediante un comando HTTP a un sitio web. Utilizamos el sitio web ThingSpeak, que proporciona una API sencilla y gratuita para registrar datos de una variedad de sensores.

Fig. 3: Gráfico que muestra las variaciones de intensidad de la luz detectadas por LDR en el robot de adquisición de datos Arduino

Fig. 4: Gráfico que muestra las variaciones de humedad registradas por el sensor DHT11 en el robot de adquisición de datos Arduino

Fig. 5: Gráfico que muestra las variaciones de temperatura registradas por el sensor DHT11 en el robot de adquisición de datos Arduino
Estos son algunos ejemplos de gráficos que se generaron a partir de datos de sensores enviados desde el robot al canal en el sitio web de ThingSpeak:
Configuración de cosa hablada
Estos son los pasos necesarios para que este ejemplo funcione con el sitio web de ThingSpeak:
-
Crea una cuenta con ThingSpeak (Regístrate).
-
Crear un nuevo canal

Fig. 6: Captura de pantalla del sitio web de Thingspeak que muestra la creación de un canal para la adquisición de datos.
-
Copie la CLAVE DE API DE ESCRITURA de la pestaña APIKEYS de su nuevo canal.
-
Configure su nuevo canal (consulte la pestaña Configuración del canal ).
-
Añade tres campos a tu canal.
-
Nombra el canal y cada uno de los campos.
-
Guarde la configuración del nuevo canal.
-
Nota: Los nombres de canales y campos se utilizan para etiquetar datos en gráficos. Estos nombres no tienen ningún efecto en la API y se pueden cambiar en cualquier momento.
-
Aquí están las configuraciones de canal utilizadas para este Robot:

Fig. 7: Captura de pantalla del sitio web de Thingspeak que muestra la adición de campos de intensidad de luz, temperatura y humedad en el canal creado para mostrar los datos del sensor.
La biblioteca incluye
Además de las bibliotecas existentes, ahora también debemos incluir las bibliotecas Timerone, Soft serial y DHT en el borrador utilizando la directiva del compilador #include.
#incluir
#incluir
#incluir
La API ThingSpeak limita la carga de datos a un máximo de una vez cada 15 segundos. Además, se necesita algún tiempo para establecer la conexión GPRS antes de que se puedan enviar datos. Por este motivo, configuramos Timer1.initialize(4000000); //establece un temporizador de 4 segundos. Y cree una variable para 5 llamada tick_count para que las lecturas se tomen una vez cada 20 segundos. (las unidades son microsegundos)
Para configurar:
Además del código de configuración existente para los controles robóticos, debemos realizar alguna inicialización en GSM.
GPRS.write(“AT+CGATT=1”); //Adjuntar un servicio GPRS
GPRS.write(“AT+CGDCONT=1”,IP”,”airtelgprs.com””); //Establecer contexto PDP
GPRS.write(“AT+CSTT=”airtelgprs.com”,””,”””); //Establecer punto de acceso, ID de usuario y contraseña
GPRS.write(“AT+CIICR”); //Activar la conexión inalámbrica con GPRS lleva tiempo
GPRS.write(“AT+CIFSR”); // Obtener la dirección IP local. De hecho, no es necesario.
GPRS.write(“AT+CIPSTATUS”); // Obtiene el estado de la conexión PS. Debe ser 'ESTADO IP'. // Esto se puede utilizar como punto de control.
GPRS.write(“AT+CIPHEAD=1”); // Agregar encabezados a la solicitud HTTP.
GPRS.write(“AT+CDNSORIP=1”); //Indica si la solicitud de conexión utilizará la dirección IP (0) o el nombre de dominio (1)
GPRS.write(“AT+CIPSTART=”TCP”,”api.thingspeak.com”,”80″”); //Inicia la conexión TCP (modo, dirección IP/nombre, puerto) PD: si devuelve 'CONNECT OK' entonces estás de suerte
GPRS.write(“AT+CIPSEND”);//Informando al módulo GSM que vamos a enviar los datos
Recopilación de datos:
Luz = lectura analógica (A0); //Intensidad de la luz de lectura
¡Leer 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)
h = dht.readHumedad; // Lee la temperatura como Celsius (el valor predeterminado)
t = dht.readTemperature;
Envío de datos a Thing Speak:
itoa (Luz,LIGHT_data,10);
itoa (h,HUMID_dados,10);
itoa (t,TEMP_dados,10); //Función para convertir un número entero en una cadena.
GPRS.write(“EN+CIPSEND”); //Informando al módulo GSM que enviaremos los datos
GPRS.write(“GET /update?key=XXXXXXXXXXXXXXXXXXXXXX= “); // Cambie a su CLAVE API.
GPRS.write(LIGHT_data);
GPRS.write(“&campo2= “);
GPRS.write(HUMID_dados);
GPRS.write(“&campo3= “);
GPRS.write(TEMP_data);
GPRS.write(”HTTP/1.1″); //Y finalmente aquí viene la solicitud HTTP real //A continuación están los encabezados que se deben configurar.
GPRS.write(“Anfitrión: api.thingspeak.com”);
GPRS.write(“Conexión: mantener vivo”);
GPRS.write(“Aceptar: */”);
GPRS.escribir(“*”);
GPRS.write(“Idioma aceptado: es-us”);
GPRS.write(0x1A);//Informa al módulo GSM que ya no enviaremos datos
//char ctrlZ = 0x1A;
Diagramas de circuito
| Diagrama-de-circuito-Circuitos-de-control-basados-en-Arduino-Robot-de-adquisición-de-datos-usado | ![]() |
Vídeo del proyecto
