Robô sem fio de monitoramento de gás industrial e controlado por teclado

Robot inalámbrico de monitoreo de gases industriales controlado por teclado

En las fábricas e industrias es común lidiar con el uso de gases nocivos y venenosos. Hay situaciones en las que es necesario controlar la concentración y el volumen de este tipo de gases en un dispositivo. Dado que estos gases pueden ser dañinos para los humanos, no es seguro emplear humanos para tales tareas. Por tanto, se pueden utilizar robots para controlar diferentes parámetros relacionados con el uso de dichos gases en un dispositivo o cámara lleno de gas. En este tutorial se diseña un robot inalámbrico que puede moverse dentro de una cámara o pozo y detectar el nivel de concentración de gas allí.
Los módulos X-bee se utilizan para conectar el robot de forma inalámbrica con un control remoto. X-bee es un módulo Zigbee de Digi International. Zig-Bee es una tecnología de comunicaciones inalámbricas estándar que transfiere datos en bandas de radio ISM. Opera en 2,4 GHz en todo el mundo y en otras frecuencias ISM en países seleccionados. El protocolo de comunicaciones se utiliza comúnmente para crear redes de área personal para aplicaciones como automatización del hogar, redes de oficina inalámbricas y redes de datos basadas en sensores. Los módulos Zig-Bee se utilizan comúnmente para conectar dispositivos integrados de bajo consumo que necesitan operar en un área pequeña con bajas velocidades de datos. Un módulo Zig-Bee que opera en la banda de 2,4 GHz tiene una velocidad de datos de 250 Kbps. Con X-bee utilizado para la conectividad inalámbrica, el robot se puede alejar de 30 a 100 metros del control remoto. El control remoto dispone de un teclado que permite controlar el movimiento del robot y enviar instrucciones para realizar mediciones del nivel de concentración. También hay una pantalla LCD en el control remoto que le permite controlar las mediciones tomadas. El robot es un robot de movimiento de superficies con ruedas y un cuerpo de dos ruedas. El robot está equipado con sensores de gas MQ-135 y MQ-7 para controlar la presencia y concentración de gases. El MQ-7 se utiliza para medir la concentración de monóxido de carbono en el aire, mientras que el MQ-135 se utiliza para controlar la concentración de gases combustibles. El robot se acciona sobre dos ruedas con un controlador de motor IC L293D que se utiliza para controlar los motores de CC con engranajes conectados. El módulo X-bee se utiliza para conectar el robot al control remoto.
Protótipo de robô Arduino sem fio controlado por teclado baseado em X-bee para monitoramento de gás
Fig. 1: Prototipo de robot Arduino inalámbrico controlado por teclado basado en X-bee para monitoreo de gases
Componentes necesarios:
Lista de componentes necessários para robô Arduino sem fio controlado por teclado baseado em X-bee para monitoramento de gás
Fig. 2: Lista de componentes necesarios para el robot Arduino controlado por teclado inalámbrico basado en X-bee para monitoreo de gas
Diagrama de bloques:
El circuito de control remoto del robot se puede representar mediante el siguiente diagrama de bloques:
Diagrama de blocos de controle remoto para robô Arduino sem fio com monitoramento de gás controlado por teclado baseado em X-bee
Fig. 3: Diagrama de bloques de control remoto para el robot Arduino de monitoreo de gas controlado por teclado inalámbrico basado en X-bee

El circuito de control del robot (montado en él) se puede representar mediante el siguiente diagrama de bloques:

Diagrama de blocos de circuito de controle para robô Arduino sem fio de monitoramento de gás controlado por teclado baseado em X-bee
4: Diagrama de bloques del circuito de control para un robot de monitoreo de gas controlado por teclado Arduino inalámbrico basado en X-bee
Conexiones de circuito –
Se utilizan dos circuitos en el proyecto: uno es el circuito de control remoto y el otro es el circuito de control montado en el robot. El circuito remoto se construye utilizando Arduino Mega, teclado 4X3, LCD de 16X2 caracteres y módulo X-bee. El circuito de control del robot montado en su cuerpo está compuesto por Arduino UNO, sensor MQ-135, sensor MQ-7, módulo X-bee, controlador de motor IC L293D y motores con engranajes de CC.
El circuito remoto tiene las siguientes conexiones de circuito:
Imagem do controle remoto para robô Arduino sem fio de monitoramento de gás controlado por teclado baseado em X-bee
5: Imagen del control remoto para el robot de monitoreo de gas controlado por teclado Arduino inalámbrico basado en X-bee

Arduino Mega : Arduino Mega es una de las placas de microcontrolador disponibles en la plataforma Arduino. Esta placa controladora tiene Atmega 1280 como MCU sentado y tiene memoria flash de 128 Kb, EEPROM de 4 Kb, SRAM de 8 Kb, interfaces UART, SPI e I2C integradas. La placa tiene 56 pines GPIO, de los cuales 15 pines se pueden usar para salida PWM de 8 bits. También hay 16 pines de entrada analógica disponibles en la placa. Esta es una placa controladora más grande disponible en Arduino y generalmente se usa cuando la cantidad de sensores o componentes necesarios para la interfaz es grande. En el circuito remoto, se utilizan 15 pines de la placa, donde se usan 6 pines para conectar la pantalla LCD de caracteres, 7 pines para conectar el teclado y los pines Rx y Tx se usan para conectar con el módulo X-bee.

Teclado 4X3 : en el proyecto se utiliza un teclado 4X3. El teclado tiene 12 botones dispuestos en 4 filas y 3 columnas. Este es un teclado numérico que se utiliza para controlar el movimiento del robot y enviar instrucciones para medir la concentración de gas. Las filas y columnas de la interfaz del teclado con Arduino en el siguiente esquema:
Tabela de listagem de conexões de circuito entre Arduino Mega e teclado
Fig. 6: Tabla que enumera las conexiones del circuito entre el Arduino Mega y el teclado
Este teclado matricial funciona moviéndose entre una sola fila y columna con solo presionar un botón. Cualquiera de las filas o columnas se transforma en salida digital, mientras que las demás (filas o columnas) se transforman en entrada digital. Supongamos que las filas se definen como salida digital y las columnas como entrada digital. Ahora, el controlador recorre las líneas generadas en la salida digital, configurándolas en ALTO o BAJO una tras otra y simultáneamente verifica la recepción de la misma lógica en las columnas. Entonces, a la vez, una sola fila se configura en ALTA o BAJA mientras que otras filas se configuran de manera inversa y al presionar una tecla se recibe la misma lógica en una sola columna. Esta combinación única de fila y columna le permite identificar la tecla presionada.
LCD de 16X2 caracteres : la pantalla LCD de 16X2 se utiliza para monitorear los valores del sensor enviados por el robot inalámbrico. Interactúa con el Arduino MEGA conectando sus pines de datos D4 a D5 con los pines 6 a 3 del controlador, respectivamente. Los pines RS y E de la pantalla LCD están conectados a los pines 13 y 12 del controlador, respectivamente. El pin RW del módulo LCD está conectado a tierra. Las conexiones del circuito LCD de caracteres con la placa Arduino se resumen en la siguiente tabla: Tabela de listagem de conexões de circuito entre Arduino Uno e LCD de caracteres
Fig. 7: Tabla que enumera las conexiones del circuito entre Arduino Uno y el LCD de caracteres
Módulo X-bee : X-Bee es un módulo Zigbee de Digi International. Zigbee es un módulo de comunicación inalámbrica que utiliza el estándar IEEE 802.15.4. 802.15.4 es un estándar IEEE para aplicaciones de radiofrecuencia de baja potencia. Se utiliza en muchos productos para la funcionalidad de comunicación inalámbrica. Se puede utilizar como transmisor y receptor. Utiliza comunicación serie para enviar y recibir datos. Tiene dos series, la serie 1 y la serie 2. La serie 1 es comparativamente fácil de usar y se recomienda para principiantes. En este proyecto, se utiliza el módulo X-bee Serie 1. El módulo Zigbee Serie 1 no puede funcionar en una red de malla. Esto significa que no puede hablar con más de un Zigbee al mismo tiempo. Obtenga más información sobre la tecnología Zigbee.
X-bee serie 1 es un módulo de 20 pines con la siguiente configuración de pines:
Tabela de listagem de configuração de pinos do módulo Xbee
Fig. 8: Tabla que enumera la configuración de pines del módulo Xbee
El módulo se puede conectar a una placa controladora mediante UART. El módulo se puede conectar a Arduino conectando su pin DOUT (UART Data Out) o TX con el pin RX de Arduino y DIN (UART Data In) o pin RX con el pin TX de Arduino. Los pines VCC y Tierra del módulo deben estar conectados a VCC y tierra comunes. El módulo X-Bee utilizado en el circuito remoto está configurado para funcionar como transmisor y receptor de datos de RF. El control remoto necesita transmitir comandos de control y al mismo tiempo recibir datos del sensor del robot. Fuente de alimentación: todos los componentes del circuito remoto requieren una fuente de alimentación de 5 V CC. La placa Arduino se alimenta con 5V mediante un cable USB. Los otros componentes obtienen energía del pin Vout de 5V en la placa Arduino. El circuito de control montado en el robot se ensambla a partir de los siguientes componentes:
Imagem do circuito de controle para robô Arduino sem fio de monitoramento de gás controlado por teclado baseado em X-bee
Fig. 9: Imagen del circuito de control para el robot Arduino de monitoreo de gas controlado por teclado inalámbrico basado en X-bee

Arduino UNO : Arduino UNO es una de las placas de creación de prototipos más populares. Se utiliza a menudo en aplicaciones robóticas porque es pequeño y está repleto de funciones avanzadas. La placa viene con un gestor de arranque Arduino integrado. Es una placa controladora basada en Atmega 328 que tiene 14 pines GPIO, 6 pines PWM, 6 entradas analógicas e interfaces UART, SPI y TWI integradas. En este circuito de control, se utilizan 8 pines en la placa. Se utilizan 4 pines para conectar con los pines de entrada del IC del controlador del motor. Los dos pines RX y TX de la placa se utilizan para interconectar el módulo X-bee y establecer comunicación en serie a través de USART. Los pines de entrada analógica A0 y A1 se utilizan para interconectar los sensores MQ-7 y MQ-135. Obtenga más información sobre Arduino UNO aquí.

Sensor de gas MQ-7 : MQ-7 es un sensor de monóxido de carbono que se utiliza para medir la concentración de gas CO en el aire entre 20 PPM y 2000 PPM. El sensor utiliza SnO2 como un material sensible que tiene baja conductividad en aire limpio, pero tiene alta conductividad cuando la concentración de monóxido de carbono es mayor en el aire. El sensor se utiliza como alarma de gas CO industrial y detector de gas CO portátil.
Gráfico mostrando a curva de sensibilidade do sensor MQ-7 CO
Fig. 10: Gráfico que muestra la curva de sensibilidad del sensor de CO MQ-7

De la curva de sensibilidad del sensor se puede ver que la resistencia del sensor disminuye a medida que aumenta la concentración del gas objetivo en PPM, mientras que para aire limpio su resistencia permanece constante. En el gráfico, Rs es la resistencia en el gas objetivo y Ro es la resistencia en aire limpio. El gráfico se muestra para los gases CO, CH4 y H2.

Gráfico mostrando a curva de saída de tensão analógica do sensor MQ-7 CO
Fig. 11: Gráfico que muestra la curva de salida de voltaje analógico del sensor de CO MQ-7
Se puede observar que a medida que aumenta la concentración del gas objetivo, también aumenta la salida de voltaje. El gráfico anterior se obtuvo para una resistencia de carga de 4,7 KΩ. El sensor tiene cuatro terminales: Tierra, VCC, Salida digital y Salida analógica. Los terminales VCC y Tierra del sensor están conectados a VCC y Tierra comunes. El pin de salida analógica del sensor está conectado al pin A0 de Arduino. Se puede suponer que el voltaje de salida analógico del sensor es directamente proporcional a la concentración de gas CO en PPM en condiciones estándar. El sensor detecta el voltaje analógico y lo convierte a un valor digital en el rango de 0 a 1023 mediante el canal ADC integrado del controlador. Por tanto, el valor digitalizado es igual a la concentración de gas en PPM.
Sensor MQ-135 : MQ-135 es otro sensor de gas que se utiliza para medir la concentración de gases combustibles. Tiene menor conductividad en aire limpio, mientras que su conductividad aumenta con la presencia de gases combustibles en el aire. El sensor es muy sensible a gases como amoníaco, sulfuro y vapor de benceno. El sensor puede detectar la concentración de gases combustibles en el rango de 100 PPM a 1000 PPM. Gráfico mostrando a curva de sensibilidade do sensor MQ-135
Fig. 12: Gráfico que muestra la curva de sensibilidad del sensor MQ-135
De la curva de sensibilidad del sensor se puede ver que la resistencia del sensor disminuye a medida que aumenta la concentración del gas objetivo en PPM, mientras que para aire limpio su resistencia permanece constante. En el gráfico, Rs es la resistencia en el gas objetivo y Ro es la resistencia en aire limpio. El gráfico se muestra para dióxido de carbono, monóxido de carbono y amoníaco. La sensibilidad de este sensor se puede ajustar y calibrar para detectar un nivel de concentración específico de un gas objetivo. El sensor tiene cuatro terminales: Tierra, VCC, Salida digital y Salida analógica. Los terminales VCC y Tierra del sensor están conectados a VCC y Tierra comunes. El pin de salida analógica del sensor está conectado al pin A1 de Arduino. Se puede suponer que el voltaje de salida analógico del sensor es directamente proporcional a la concentración de gas CO2 en PPM en condiciones estándar. El sensor detecta el voltaje analógico y lo convierte a un valor digital en el rango de 0 a 1023 mediante el canal ADC integrado del controlador. Por tanto, el valor digitalizado es igual a la concentración de gas en PPM. Módulo X-Bee: el módulo X-Bee utilizado en el circuito de control del robot también está configurado para funcionar como receptor y transmisor de datos de RF. El módulo interactúa con Arduino conectando su pin DOUT (UART Data Out) o TX con el pin RX de Arduino y DIN (UART Data In) o pin RX con el pin TX de Arduino. Los pines VCC y Tierra del módulo están conectados al VCC común y a tierra. IC de controlador de motor 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 de listagem de configuração de pinos do IC do driver do motor L293D

Fig. 13: 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:
Tabela verdade do IC do driver do motor L293D
Fig. 14: Tabla de verdad del CI del controlador del motor L293D
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 5, 2, 3 y 4 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. Los pines de habilitación del IC (pines 1 y 9) están conectados físicamente a la fuente de 5 VCC.
Motores de CC con engranajes : en este robot, los motores con engranajes de CC 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.
Fuente de alimentación: el Arduino UNO, el módulo X-Bee, los sensores de gas y los pines de alimentación lógica del IC del controlador del motor requieren 5 V CC, mientras que el pin de alimentación del IC del controlador requiere 12 V CC. Se utiliza una batería de 12 V para alimentar el robot. 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.
Cómo funciona el circuito –
A medida que la batería se conecta al robot, se prepara para recibir comandos del control remoto. El mando a distancia se alimenta conectándolo a una conexión USB o a una alimentación regulada de 5V procedente de una batería. Al encender el mando a distancia, parpadean en él unos mensajes iniciales indicando la aplicación del proyecto. Desde el mando a distancia se pueden transmitir comandos pulsando teclas del teclado. Las siguientes claves están asignadas a las respectivas tareas del proyecto:
Tabela listando atribuições de teclas remotas para robô
Fig. 15: Tabla que enumera las asignaciones de teclas remotas para el Robot
Cuando el usuario presiona una tecla, se pasa una cadena de comandos desde el control remoto al circuito de control del robot mediante la interfaz X-bee. Los siguientes caracteres de cadena pasan a través del circuito remoto al circuito receptor del robot al presionar las teclas respectivas:
Tabela listando strings de comando para controle remoto do robô
Fig. 16: Tabla que enumera las secuencias de comandos para el control remoto del robot
La placa Arduino lee las cadenas de comando desde el circuito receptor con la ayuda de otro módulo X-bee. Al recibir un comando, la placa Arduino lo compara con las cadenas de comando mencionadas anteriormente y cambia la lógica digital en los pines conectados a los pines de entrada del IC del controlador del motor para realizar la operación deseada. El robot se mueve 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 lógica do IC do driver do motor L293D para o robô Arduino
Fig. 17: Tabla lógica del IC del controlador del motor L293D para el robot Arduino
Los pines de entrada del IC del controlador del motor están conectados a los pines de Arduino y al cambiar la lógica digital en los pines de Arduino, la lógica respectiva se implementa en los pines de entrada del IC del controlador del motor.
De este modo, el usuario puede guiar el robot hasta el lugar donde debe medir los niveles de gas. Una vez que el robot llega a este punto, el usuario debe presionar la tecla 1 o 3 para pasar el comando de medición de concentración de CO o CO2 respectivamente. Cuando se recibe el comando para medir la concentración de gas desde el sensor MQ-7 o MQ-135, la placa Arduino detecta el voltaje en el pin A0 o A1 respectivamente. El voltaje se convierte en una lectura digital utilizando el canal ADC integrado y se envía como una cadena de regreso al circuito remoto. El circuito remoto recibe el nivel de gas medido como datos en serie del módulo X-bee. El boceto del circuito remoto Arduino convierte esta cadena en un valor entero y lo muestra en la pantalla LCD.
Imagem do robô Arduino sem fio controlado por teclado baseado em X-bee para monitoramento de gás
Fig. 18: Imagen del robot Arduino inalámbrico controlado por teclado basado en X-bee para monitoreo de gas

Para activar la conexión inalámbrica entre el robot y el circuito remoto, es importante configurar los módulos X-Bee en ambos lados. La aplicación de terminal CoolTerm se utiliza para configurar los módulos X-Bee. Para hacer que la PC se comunique directamente con Xbee, incluso se puede usar la placa Arduino quitando el controlador IC o se puede cargar un boceto simple en las placas Arduino, lo que permite que Xbee se comunique directamente con la computadora y no con la placa Arduino. En primer lugar, las conexiones del circuito entre el módulo X-Bee y el Arduino deben realizarse como se mencionó anteriormente.

Ahora sigue los siguientes pasos –
Abra la aplicación CoolTerm y navegue hasta conexión -> opciones -> puerto serie y seleccione el puerto COM. Configure la velocidad en baudios y vaya a la opción Terminal y seleccione la casilla Eco local para mostrar los comandos ingresados ​​y haga clic en Aceptar para guardar los cambios.
Captura de tela do aplicativo CoolTerm
Fig. 19: Captura de pantalla de la aplicación CoolTerm
Captura de tela das opções de conexão no aplicativo Coolterm
Fig. 20: Captura de pantalla de las opciones de conexión en la aplicación Coolterm
Para configurar X-Bee, se deben utilizar los siguientes comandos AT.
Primero haga que X-Bee ingrese al modo de comando escribiendo +++ en la terminal, cuando esté bien, siga con los otros comandos AT
En primer lugar, las radios XBEE solo funcionan a una determinada velocidad en baudios, que es la cantidad de bits por segundo que el X-Bee puede enviar. Un X-Bee nuevo tiene una velocidad de transmisión predeterminada de 9600 bps, lo cual es bastante lento. La velocidad en baudios se puede cambiar cambiando el registro ATBD. Ambos módulos X-Bee deben tener la misma velocidad en baudios para comunicarse entre sí. Las velocidades en baudios disponibles (y el valor ATBD correspondiente) son los siguientes:

Tabela listando comandos ATBD para diferentes taxas de transmissão

Fig. 21: Tabla que enumera los comandos ATBD para diferentes velocidades en baudios

Por lo tanto, para establecer la velocidad en baudios a 9600, se debe pasar el siguiente comando:
ATBD3
El siguiente parámetro importante es el ID de la red de área personal. Este es un número compartido entre cada XBEE en una red. Aquí, solo hay 2 módulos X-Bee, pero puede haber muchos módulos X-Bee en una red (para lo cual se deben usar módulos X-Bee Serie 2). Los módulos X-Bee en diferentes redes no se "ven" entre sí. El PAN predeterminado es 3332, así que evite utilizar este número. La ID PAN se almacena en el registro ATID. El registro se puede cambiar pasando el siguiente comando:
ATID1001
Una vez que ambos módulos X-Bee estén en la misma red, a cada uno se le debe asignar un número de dirección indicado en el registro ATMY. O endereço de destino também pode ser definido, que é o número de endereço com o qual se deve comunicar e é indicado pelo registro ATDL (para destino baixo, não há necessidade de usar os bytes altos se os números de endereço tiverem menos de 16 bits largo). Se puede realizar una configuración de ejemplo de dos módulos X-Bee que se comunicarán directamente entre sí a 38,4 kbps pasando los siguientes comandos:
Cajero automático10
ATDL11
Por lo tanto, ambos módulos X-Bee se configuran pasando los siguientes comandos AT:
XBEE1:
ATID1001
Cajero automático10
ATDL11
ATBD3
XBEE2:
ATID1001
Cajero automático11
ATDL10
ATBD3
Una cosa importante a tener en cuenta es que los cambios que realiza se almacenan en la memoria temporal. Si los módulos X-Bee se apagan, la configuración se perderá. Envíe ATWR para escribir cambios en la memoria no volátil para que no se pierdan durante el apagado.
Captura de tela do aplicativo CoolTerm mostrando comandos AT passados ​​para o módulo Xbee
Fig. 22: Captura de pantalla de la aplicación CoolTerm que muestra los comandos AT pasados ​​al módulo Xbee
Una vez configurados los módulos X-Bee, el boceto de Arduino para el circuito remoto y el circuito receptor se puede cargar en la placa controladora respectiva.
Consulte el boceto de Arduino de ambos controladores laterales para saber cómo las placas Arduino gestionan toda la operación en coordinación y proporcionan inteligencia de software tanto para el circuito remoto como para el circuito de control del robot.
Guía de programación –
Programa de control remoto: la placa objetivo de este programa es el Arduino MEGA. El código Arduino para el control remoto primero importa LiquidCrystal.h para manejar la pantalla LCD y Keypad.h para manejar la entrada del teclado. Se definen variables para indicar el número de filas y columnas en el teclado matricial y se crea una instancia de un objeto tipo LCD. Las teclas del teclado matricial se representan como una matriz multidimensional y se crea una instancia de un objeto de teclado. Se llama a la función de configuración en la que la velocidad en baudios para la comunicación en serie con el módulo X-bee se establece en 9600 y la pantalla LCD se inicializa en el modo LCD de 16X2 caracteres utilizando el método de inicio en el objeto LCD. Algunos mensajes iniciales parpadean en la pantalla LCD indicando la aplicación del proyecto.
Captura de tela da inicialização no código Arduino para robô Arduino de monitoramento de gás baseado em Xbee
Fig. 23: Captura de pantalla de la inicialización en código Arduino para el robot de monitoreo de gas Arduino basado en Xbee
Se llama a la función de bucle en la que se detecta la pulsación de tecla utilizando el método useKey del objeto Keypad. La tecla presionada se almacena en una variable y se compara con las teclas mencionadas en la tabla anterior usando declaraciones if. Por cada tecla presionada, se pasa una cadena de caracteres al módulo X-bee para su transmisión mediante la función println. Las funciones escriben el carácter de cadena en el búfer serie desde el cual se transmite a través del módulo X-bee.
Captura de tela da função Loop no código Arduino para robô Arduino de monitoramento de gás baseado em Xbee
Fig. 24: Captura de pantalla de la función de bucle en el código Arduino para el robot Arduino de monitoreo de gas basado en Xbee
En la función de bucle, al presionar la tecla 1 o 3 se envía el comando para medir la concentración de gas CO o CO2 respectivamente. El comando de cadena utilizado para la medición de gas CO es 'C' mientras que el comando de cadena utilizado para la medición de gas CO2 es 'A'. La concentración de gas se recibe como un valor de cadena del módulo X-bee que se convierte a un valor entero usando la función atoi y se muestra en la pantalla LCD.
Captura de tela da função Loop no código Arduino para robô Arduino de monitoramento de gás baseado em Xbee
Fig. 25: Captura de pantalla de la función de bucle en el código Arduino para el robot Arduino de monitoreo de gas basado en Xbee
Esto completa el boceto de Arduino en el circuito remoto. Consulte el esquema completo en la sección de códigos.
Programa de circuito de control de robot: – La placa objetivo de este boceto es Arduino UNO. El código Arduino primero define variables que representan las conexiones de los pines Arduino a los pines de entrada del IC del controlador del motor. Se declara una variable para almacenar el valor del sensor y una variable para almacenar el mensaje que contiene la lectura del sensor. Se declaran funciones para mover el robot en diferentes direcciones. A esto le sigue la función de configuración que debe ejecutarse una vez cuando se enciende el robot. En la función de configuración, la velocidad en baudios para la comunicación en serie con el módulo X-bee se establece en 9600 y los pines conectados al IC del controlador del motor se configuran como salida digital usando la función pinMode.
Captura de tela da inicialização no código Arduino do lado do robô
Fig. 26: Captura de pantalla de la inicialización en código Arduino en el lado del robot
Se llama a la función de bucle y verifica continuamente los datos en serie recibidos. Si hay datos en serie disponibles, los datos se leen usando la función serial.read y se almacenan en una variable. Luego los datos almacenados se verifican con las condiciones mencionadas. Luego, con respecto a las condiciones, se llama a las funciones respectivas para mover el robot o medir la concentración de gas desde los sensores MQ-7 o MQ-135.
Captura de tela da função Loop no código Arduino do lado do robô
Fig. 27: Captura de pantalla de la función de bucle en el código Arduino en el lado del robot
Cuando se recibe el comando para medir la concentración de gas, los valores se miden usando la función analogRead y el valor medido se envía al circuito remoto en forma de cadena a través del módulo X-bee. Cuando se recibe el comando para mover el robot, la lógica digital en los pines de entrada del IC del controlador del motor cambia para mover el robot en la dirección respectiva.
Esto completa el boceto de Arduino para el circuito de control del robot. Consulte el esquema completo en la sección de código.

Código fuente del proyecto

 ###



 //Programa para

 #incluir

 #incluir

 FILAS de bytes constantes = 4; //cuatro filas

 byte constante COLS = 3; //cuatro columnas

 LCD de cristal líquido (13, 12, 6, 5, 4, 3);

 char hexaKeys(FILAS)(COLS) = {

 {'1','2','3'},

 {'4','5','6'},

 {'7','8','9'},

 {'*','0','#'}

 };

 pines de fila de bytes (FILAS) = {41, 43, 45, 47}; //conectar a los pines de fila del teclado

 byte colPins(COLS) = {49, 51, 53}; //conectar a los pines de columna del teclado

 Teclado personalizadoKeypad = Teclado( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //inicializa una instancia de la clase NewKeypad

 configuración vacía

 {

 Serie.begin(9600);

 lcd.comenzar(16, 2);


 lcd.setCursor(0,0);

 lcd.print("Garaje de ingenieros");

 lcd.setCursor(0,1);

 lcd.imprimir(" ");

 retraso(3000);

 lcd.setCursor(0,0);

 lcd.print("MONITOREO INDSL");

 lcd.setCursor(0,1);

 lcd.print(" ROBOT INALÁMBRICO");
 
retraso(3000);

 }



 bucle vacío

 {

 char customKey = customKeypad.getKey;



 si (clave personalizada == '2')

 {

 Serial.println("F");

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("<--Dirección-->");

 lcd.setCursor(0, 1);

 lcd.print("ADELANTE");

 }



 si (clave personalizada == '8')

 {

 Serial.println("B");

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("<--Dirección-->");

 lcd.setCursor(0, 1);

 lcd.print("HACIA ATRÁS");

 }


 si (clave personalizada == '4')

 {

 Serie.print("L");

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("<--Dirección-->");

 lcd.setCursor(0, 1);

 lcd.print("IZQUIERDA");

 }



 si (clave personalizada == '6')

 {

 Serial.println("R");

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("<--Dirección-->");

 lcd.setCursor(0, 1);

 lcd.print("DERECHA");

 }



 si (clave personalizada == '5')

 {

 Serial.println("S");

 lcd.claro;

 lcd.setCursor(0, 0);
 
lcd.print("<--Dirección-->");

 lcd.setCursor(0, 1);

 lcd.print("PARAR");

 }



 si (clave personalizada == '1')

 {

 Serial.println("C");

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("Monóxido de Carbono");

 lcd.setCursor(0, 1);

 lcd.print("Lectura");

 retraso(500);

 búfer de caracteres = {' ',' ',' ',' ',' '};

 mientras (!Serial.disponible);

 //cuando el número de serie esté disponible, lea los datos hasta una nueva línea y guárdelos en el búfer

 Serial.readBytesUntil('n', búfer, 10);

 //convirtiendo el caracter a entero

 int valorentrante = atoi(búfer);

 // Serial.println(valorentrante);

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("Valor medido");

 lcd.setCursor(0, 1);

 lcd.print(valorentrante);

 }

 si (clave personalizada == '3')

 {

 Serial.println("A");

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("Calidad del aire");

 lcd.setCursor(0, 1);

 lcd.print("Lectura");
 
retraso(500);

 búfer de caracteres = {' ', ' ', ' '};

 while(!Serial.disponible);

 Serial.readBytesUntil('n', búfer, 10);

 int valorentrante = atoi(búfer);

 lcd.claro;

 lcd.setCursor(0, 0);

 lcd.print("Valor medido");

 lcd.setCursor(0, 1);

 lcd.print(valorentrante);

 }

 }

 ###

Diagramas de circuito

Diagrama de circuito-Control remoto-Xbee-Monitoreo de gas-Arduino-Robot
Diagrama de circuito-Xbee-Monitoreo de gas-Arduino-Robot

Vídeo del proyecto

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.