En este tutorial, se diseña un vehículo espía controlado por Bluetooth. Se trata de un robot de vigilancia que se utilizará para vigilar y vigilar zonas de difícil acceso para los humanos. La vigilancia es el proceso de monitorear una situación, un área o una persona. Generalmente se practica en un escenario militar donde la vigilancia de las fronteras y el territorio enemigo es esencial para la seguridad del país.
La vigilancia humana se logra colocando personal cerca de áreas sensibles para monitorear constantemente los cambios. Pero los seres humanos tienen sus limitaciones y no siempre es posible desplegarlos en lugares inaccesibles. También existen riesgos adicionales de pérdida de personal en caso de ser capturados por el enemigo. Con los avances tecnológicos a lo largo de los años, ahora es posible monitorear de forma remota áreas importantes utilizando robots en lugar de humanos.
El mecanismo de control se proporciona junto con la función de transmisión de vídeo. Este rover espía tiene un teléfono celular montado y la cámara del teléfono se utiliza para registrar los alrededores. La aplicación de cámara IP se utiliza en un teléfono móvil para utilizar la cámara del teléfono móvil como cámara IP. La cámara del móvil que capturará la escena frente a ti y la transferirá al servidor en el que el usuario verá la transmisión en vivo.
El robot se controla y maniobra mediante otro teléfono móvil que tiene instalada una aplicación personalizada para controlar el robot. El teléfono móvil que controla el robot se conecta al robot mediante una interfaz Bluetooth. El robot tiene un módulo Bluetooth HC-05 conectado al circuito de control para conectar el teléfono celular.
El robot de cuatro ruedas tiene tracción en dos ruedas, por lo que un par de motores de corriente continua con engranajes están montados en las ruedas traseras. El circuito de control del robot está construido alrededor del Arduino Pro Mini. Arduino es la placa de creación de prototipos más popular y más fácil de programar debido al fuerte apoyo de la comunidad. Se eligió el Pro Mini para este proyecto robótico debido a su tamaño compacto y características suficientes para construir el robot. La recepción e interpretación de comandos vía Bluetooth y el control de motores DC a través del IC controlador de motor L293D son gestionados por Arduino Sketch. El código Arduino se escribe y graba en la placa utilizando el IDE de Arduino. La aplicación personalizada para controlar el movimiento del robot se construye utilizando MIT App Inventor.
Componentes necesarios –

Fig. 1: Lista de componentes necesarios para el Spy Rover controlado por Bluetooth basado en Arduino
Diagrama de bloques -

Fig. 2: Diagrama de bloques del Spy Rover controlado por Bluetooth basado en Arduino
Conexiones de circuito –
El circuito electrónico que controla el robot está construido alrededor del Arduino Pro Mini. El CI del controlador del motor L293D y el módulo Bluetooth HC-05 interactúan con la placa controladora. Un par de motores de CC con engranajes están conectados a las ruedas traseras que interactúan con el IC del controlador del motor. En el cuerpo del robot está montado un teléfono móvil cuya cámara se utiliza como cámara IP.

Fig. 3: Imagen que muestra el Spy Rover controlado por Bluetooth
El circuito de control del robot se puede dividir en las siguientes secciones del circuito:
Fuente de alimentación: en el circuito, el Arduino Pro Mini y el módulo Bluetooth necesitan 5 V CC regulados para su funcionamiento, mientras que el IC del controlador 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 Pro Mini – 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 en un tamaño reducido, 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.
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:

Fig. 4: Tabla que enumera las conexiones del circuito entre el módulo Bluetooth HC-05 y el Arduino Pro Mini
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:

Fig. 5: 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:

Fig. 6: Tabla de verdad del CI del controlador del motor L293D

Fig. 7: 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 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.
Teléfonos móviles: se monta un teléfono móvil en el robot para la transmisión en vivo de la grabación de vídeo. El teléfono tiene instalada una aplicación de cámara IP que graba y transmite la grabación en vivo a un servidor remoto. La aplicación utiliza automáticamente la cámara de tu teléfono celular como cámara IP. Se utilizará otro teléfono móvil para controlar el robot mediante Bluetooth. Tiene instalada una aplicación personalizada que puede mover el robot hacia adelante, hacia atrás, hacia la izquierda o hacia la derecha. El desarrollo de aplicaciones personalizadas utilizando MIT App Inventor se analiza en la sección de la guía de programación.

Fig. 8: Imagen del circuito de control montado en la carrocería del Spy Rover
Cómo funciona el circuito –
Una vez que se enciende el circuito de control del robot, inicializa el controlador y comienza a leer datos del módulo Bluetooth. Los comandos de control se pueden pasar al robot mediante una aplicación personalizada que se ejecuta en un teléfono Android. La aplicación tiene una interfaz de usuario que le permite mover el robot hacia adelante, hacia atrás, girar a la izquierda, girar a la derecha y detenerse. 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:

Fig. 9: Tabla que enumera los comandos de cadena utilizados para el movimiento del robot Arduino
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:

Fig. 10: Tabla lógica del IC del controlador del motor L293D para el robot Arduino
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.
Se monta un teléfono inteligente Android en el robot para transmitir video y audio desde el robot a la interfaz de control (computadora). Hay muchas aplicaciones de cámara web IP disponibles en Google Play Store, pero dos aplicaciones son muy buenas: una es Alfred y la segunda es una cámara web IP. Una cámara de Protocolo de Internet (IP) es un tipo de cámara de vídeo digital, normalmente utilizada para vigilancia, que puede enviar y recibir datos a través de una red informática e Internet. Cualquiera de las aplicaciones mencionadas anteriormente se puede utilizar para utilizar su teléfono como cámara IP.
En este proyecto se utiliza Alfred para la transmisión. La cámara web IP también resulta fácil cuando el teléfono celular está conectado a una computadora portátil a través del mismo servidor, como a través de una conexión Wi-Fi normal. A medida que se utiliza la aplicación Alfred, debe iniciar sesión con una identificación de correo electrónico y una vez hecho esto, la cámara se encenderá en el teléfono celular montado en el robot. Luego, el usuario debe ir a alfred.computer en la PC o computadora portátil e iniciar sesión con la identificación del correo y el video se transmitirá en vivo. Luego de iniciar la transmisión en vivo, el usuario puede operar y controlar el robot con otro teléfono celular conectado al circuito a través del módulo Bluetooth.
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.

Fig. 11: 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:

Fig. 12: Captura de pantalla de los bloques lógicos de la aplicación personalizada diseñada con MIT App Inventor
Fig. 13: Captura de pantalla de los bloques lógicos de la aplicación personalizada diseñada con MIT App Inventor
Se pueden agregar más funciones a la aplicación incluyendo 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 declarando constantes. 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 enumera los prototipos de funciones que se utilizan para determinar la tarea 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 es la función de configuración donde se usa para determinar si los pines conectados se usan como entrada o salida y la comunicación en serie con el módulo Bluetooth está habilitada. Aquí Serial.begin se utiliza para establecer comunicación en serie entre Bluetooth y Arduino y los pines conectados a los pines de entrada del IC del controlador del motor se declaran como salida.
configuración nula
{
Serie.begin(9600);
pinMode(LM1, SALIDA);
pinMode(LM2, SALIDA);
pinMode(RM1, SALIDA);
pinMode(RM2, SALIDA);
}
La operación principal en el código se implementa mediante un bucle de toma de decisiones que se llama en la función principal. Comprueba si hay datos en serie disponibles y, si hay algún dato disponible, los lee mediante la interfaz UART. El método Read del objeto Serial se utiliza para leer datos y luego los datos se almacenan en una variable.
si(Serie.disponible >0)
{
datos = Serie.leer;
Serie.print(datos);
Serie.print(“n”);
Los datos en serie recibidos se comparan con comandos de cadena predeterminados en declaraciones if y, en consecuencia, se cambia la lógica en los pines de entrada del IC del controlador del motor. Como si los datos en serie recibidos fueran 'F', se llama a la función de avance para hacer avanzar el robot.
El boceto completo de Arduino para el Spy Rover controlado por Bluetooth se puede encontrar en la pestaña del código fuente.
Nota : busque el archivo rar de la aplicación controlada por Bluetooth a continuación.
Código fuente del proyecto
###
//Programa para #define LM1 2 //define el número de pines para la conexión del motor #definir LM2 3 #definir RM1 7 #definir RM2 8 datos de caracteres = 0; avance nulo; // prototipo de función retroceso nulo; girar a la izquierda vacío; giro nulo a la derecha; robostop vacío; void setup //función de configuración para definir el modo pin como entrada o salida { Serie.begin(9600); pinMode(LM1, SALIDA); pinMode(LM2, SALIDA); pinMode(RM1, SALIDA); pinMode(RM2, SALIDA); } bucle vacío // función de bucle infinito { if(Serial.available >0) //la verificación de condición para los datos seriales está disponible o no { datos = Serie.leer; //si está disponible lee los datos 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; } } } void moveforward // definición de función para mover el robot hacia adelante { escritura digital (LM1, ALTA); escritura digital (LM2, BAJO); escritura digital (RM1, ALTA); escritura digital (RM2, BAJO); } void movebackward // definición de función para mover el robot hacia atrás { escritura digital (LM1, BAJO); escritura digital (LM2, ALTA); escritura digital (RM1, BAJO); escritura digital (RM2, ALTA); } void turnleft // definición de función para girar el robot a la izquierda { escritura digital (LM1, ALTA); escritura digital (LM2, BAJO); escritura digital (RM1, BAJO); escritura digital (RM2, BAJO); } void turnright // definición de función para girar el robot a la derecha { escritura digital (LM1, BAJO); escritura digital (LM2, BAJO); escritura digital (RM1, ALTA); escritura digital (RM2, BAJO); } void robostop // definición de función para detener el robot { escritura digital (LM1, BAJO); escritura digital (LM2, BAJO); escritura digital (RM1, BAJO); escritura digital (RM2, BAJO); }###
Diagramas de circuito
| Diagrama-de-circuito-Arduino-Spy-Rover-controlado-por-Bluetooth | ![]() |
