Neste tutorial, um rover espião controlado por Bluetooth é projetado. É um robô de vigilância que servirá para monitorar e vigiar áreas de difícil acesso humano. Vigilância é o processo de monitorar uma situação, uma área ou uma pessoa. Geralmente é praticado num cenário militar onde a vigilância das fronteiras e do território inimigo é essencial para a segurança do país.
A vigilância humana é conseguida através da colocação de pessoal perto de áreas sensíveis, a fim de monitorizar constantemente as mudanças. Mas os seres humanos têm as suas limitações e a implantação em locais inacessíveis nem sempre é possível. Existem também riscos adicionais de perda de pessoal no caso de ser pego pelo inimigo. Com os avanços da tecnologia ao longo dos anos, agora é possível monitorar remotamente áreas importantes usando robôs no lugar de humanos.
O mecanismo de controle é fornecido junto com o recurso de transmissão de vídeo. Este rover espião tem um telefone celular montado e a câmera do telefone é utilizada para registrar os arredores. O aplicativo de câmera IP é usado no celular para usar a câmera do celular como câmera IP. A câmera móvel que irá capturar o cenário à sua frente e transferi-la para o servidor no qual o usuário estará assistindo a transmissão ao vivo.
O robô é controlado e manobrado por meio de outro telefone celular que possui um aplicativo personalizado instalado para controlar o robô. O celular que controla o robô se conecta ao robô usando uma interface Bluetooth. O robô possui módulo Bluetooth HC-05 conectado ao circuito de controle para conectar o telefone celular.
O robô de quatro rodas tem tração nas duas rodas, de modo que um par de motores CC com engrenagens é montado nas rodas traseiras. O circuito de controle do robô é construído em torno do Arduino Pro Mini. Arduino é a placa de prototipagem mais popular e mais fácil de programar devido ao grande suporte da comunidade. O Pro Mini foi escolhido para este projeto robótico devido ao seu tamanho compacto e recursos suficientes para fazer o robô. A recepção e interpretação de comandos via Bluetooth e o controle de motores DC através do IC driver de motor L293D são gerenciados pelo Arduino Sketch. O código do Arduino é escrito e gravado na placa usando o Arduino IDE. O aplicativo personalizado para controlar o movimento do robô é construído usando o MIT App Inventor.
Componentes necessários –

Fig. 1: Lista de componentes necessários para o Spy Rover controlado por Bluetooth baseado em Arduino
Diagrama de bloco –

Fig. 2: Diagrama de blocos do Spy Rover controlado por Bluetooth baseado em Arduino
Conexões de Circuito –
O circuito eletrônico que controla o robô é construído em torno do Arduino Pro Mini. O IC do driver do motor L293D e o módulo Bluetooth HC-05 fazem interface com a placa controladora. Um par de motores CC com engrenagens são fixados nas rodas traseiras que fazem interface com o IC do driver do motor. Um telefone celular cuja câmera é usada como câmera IP é montado no corpo do robô.

Fig. 3: Imagem mostrando Spy Rover controlado por Bluetooth
O circuito de controle do robô pode ser dividido nas seguintes seções de circuito –
Fonte de alimentação – No circuito, o Arduino Pro Mini e o módulo Bluetooth precisam de 5V DC regulado para seu funcionamento, enquanto o IC do driver do motor precisa de 12V DC. Uma bateria NIMH de 12V é usada como fonte primária de energia. A alimentação da bateria é regulada para 5V e 12V usando CIs 7805 e 7812. O pino 1 de ambos os CIs reguladores de tensão está conectado ao ânodo da bateria e o pino 2 de ambos os CIs está conectado ao terra. As respectivas saídas de tensão são extraídas do pino 3 dos respectivos CIs reguladores de tensão. Um LED junto com um resistor pull-up de 10K Ω também é conectado entre o terra comum e o pino de saída para obter uma dica visual da continuidade da alimentação. Apesar de usar bateria de 12 V, o 7812 é usado para fornecer uma alimentação regulada e estável ao IC do driver do motor.
Arduino Pro Mini – Arduino Pro Mini é uma placa microcontroladora baseada em Atmega 168. Possui 14 pinos GPIO, 6 entradas analógicas, 6 pinos PWM, 2 interrupções externas e UART, SPI e I2C integrados. A placa tem apenas 1,3 polegada por 0,7 polegada de tamanho, seis vezes menor que o Arduino UNO. Com esses recursos em tamanho pequeno, esta placa é ideal para qualquer projeto robótico. Neste projeto, 4 pinos de entrada e saída do Pro Mini são utilizados para interface com o IC do driver do motor e o módulo Bluetooth faz interface com os pinos RX e TX disponíveis para comunicação serial via UART.
Módulo Bluetooth HC-05 – O módulo Bluetooth HC-05 é um módulo de protocolo de porta serial. Opera na banda ISM 2,4 GHz com V2.0+EDR (data de dados aprimorada). Pode funcionar nos modos Master e Slave. O módulo Bluetooth possui seis pinos – Enable, VCC, Ground, Transmit Data (TxD), Receive Data (RxD) e State. Os pinos Enable e State não são utilizados e, portanto, não estão conectados ao circuito. Os pinos VCC e Terra são conectados ao VCC e Terra comuns. Os pinos TxD e RxD do módulo são conectados aos pinos RX e TX do Arduino Pro Mini respectivamente. Essas conexões estão resumidas na tabela abaixo –

Fig. 4: Tabela listando as conexões do circuito entre o módulo Bluetooth HC-05 e o Arduino Pro Mini
L293D DC Motor Driver IC – O L293D é um circuito integrado (IC) de driver de motor de ponte H dupla. Os drivers do motor atuam como amplificadores de corrente, pois recebem um sinal de controle de baixa corrente e fornecem um sinal de corrente mais alta. Este sinal de corrente mais alto é usado para acionar os motores. Possui 16 pinos com a seguinte configuração de pinos:

Fig. 5: Tabela listando a configuração dos pinos do IC do driver do motor L293D
Existem dois motores DC usados para fazer o carro robótico. Os motores DC fazem interface entre os pinos 3 e 6 e os pinos 14 e 11 do IC do driver do motor.
O IC L293D controla os motores DC de acordo com as seguintes tabelas verdade:

Fig. 6: Tabela verdade do IC do driver do motor L293D

Fig. 7: Tabela verdade do IC do driver do motor L293D
Os pinos 4, 5, 13 e 12 do L293D são aterrados enquanto os pinos 1, 16 e 9 estão conectados a 5 Vcc e o pino 8 está conectado a 12 Vcc. Os pinos 15, 2, 7 e 10 do IC do driver do motor estão conectados aos pinos 8, 2, 3 e 7 da placa Arduino. O motor DC conectado à roda direita está conectado aos pinos 11 e 14, enquanto o motor conectado à roda esquerda está conectado aos pinos 3 e 6 do IC do driver do motor.
Motores DC com engrenagem – Neste robô, motores DC com engrenagens de 12 V são acoplados às rodas. Os motores DC com engrenagens estão disponíveis com uma ampla faixa de RPM e Torque, o que permite que um robô se mova com base no sinal de controle que recebe do IC do driver do motor.
Celulares – Um telefone celular é montado no robô para transmissão ao vivo da gravação do vídeo. O telefone possui um aplicativo de câmera IP instalado que grava e transmite a gravação ao vivo para um servidor remoto. O aplicativo usa automaticamente a câmera do celular como câmera IP. Outro telefone celular será usado para controlar o robô via Bluetooth. Ele possui um aplicativo personalizado instalado que pode mover o robô para frente, para trás, para a esquerda ou para a direita. O desenvolvimento do aplicativo personalizado usando o MIT App Inventor é discutido na seção do guia de programação.

Fig. 8: Imagem do circuito de controle montado na carroceria do Spy Rover
Como funciona o circuito –
Assim que o circuito de controle do robô for ligado, ele inicializa o controlador e começa a ler os dados do módulo Bluetooth. Os comandos de controle podem ser passados ao robô usando um aplicativo personalizado executado em um telefone Android. O aplicativo possui uma interface de usuário que permite mover o robô para frente, para trás, virar à esquerda, virar à direita e parar. O usuário basta tocar nos botões de direção para transferir os comandos. Os comandos são passados pelo aplicativo para o módulo Bluetooth conectado ao circuito de controle na forma de sequências de caracteres únicos. As seguintes strings são passadas para transferir os comandos de controle –

Fig. 9: Tabela listando comandos de string usados para movimentação do Robô Arduino
Essas strings de comando são interpretadas no esboço do Arduino para controlar os motores DC. O robô pode ser movido para frente, para trás, para a esquerda ou para a direita implementando a seguinte lógica de entrada nos pinos do driver do motor –

Fig. 10: Tabela lógica do IC do driver do motor L293D para o robô Arduino
Ao receber os comandos de string, o esboço do Arduino apenas altera a saída digital nos pinos de entrada do IC do driver do motor para controlar o movimento do robô.
Um smartphone Android é montado no robô para transmitir o vídeo e o áudio do robô para a interface de controle (computador). Existem muitos aplicativos de webcam IP disponíveis na Google Play Store, mas dois aplicativos são muito bons – um é o Alfred e o segundo é a webcam IP. Uma câmera de protocolo de internet (IP) é um tipo de câmera de vídeo digital, geralmente empregada para vigilância, que pode enviar e receber dados por meio de uma rede de computadores e da Internet. Qualquer um dos aplicativos mencionados acima pode ser usado para usar o telefone como câmera IP.
Neste projeto Alfred é usado para a transmissão. A webcam IP também se torna fácil quando o celular está conectado a um laptop pelo mesmo servidor, como por meio de uma conexão Wi-Fi comum. Como é utilizado o aplicativo Alfred, é necessário fazer o login com um ID de e-mail e uma vez feito isso a câmera será ligada no celular montado no robô. Em seguida, o usuário deve acessar alfred.computer no pc ou laptop e fazer o login com o mail id e o vídeo será transmitido ao vivo. Após iniciar a transmissão ao vivo, o usuário pode operar e controlar o robô com outro celular conectado ao circuito através do módulo Bluetooth.
Guia de programação –
O aplicativo personalizado usado para controlar o movimento do robô é construído usando o MIT App Inventor. Existem também muitos aplicativos Bluetooth para Android disponíveis na Play Store que podem ser usados. Se algum aplicativo disponível na Play Store for usado, o esboço do Arduino precisará ser modificado ou alterado de acordo. O MIT App Inventor 2 é usado para construir o aplicativo.

Fig. 11: Captura de tela do aplicativo personalizado projetado usando o MIT App Inventor
O aplicativo MIT Inventor é uma plataforma fácil para criar um aplicativo Android. A plataforma usa blocos lógicos para criar um aplicativo. Um guia para usar o MIT app inventor 2 é fornecido no site oficial da plataforma. Existem também muitos tutoriais no YouTube disponíveis para referência. O aplicativo de controle do robô criado neste projeto possui as seguintes lógicas que são formadas com ajuda de blocos –

Fig. 12: Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor

Fig. 13: Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor
Mais recursos podem ser adicionados ao aplicativo incluindo blocos lógicos adicionais.
No circuito de controle do robô, o esboço do Arduino rodando no Pro Mini controla o mecanismo do robô. O esboço do Arduino começa com a declaração de constantes. As seguintes diretivas #define são usadas para determinar os pinos do Arduino que devem ser conectados ao IC do driver do motor.
#define LM1 2
#define LM23
#define RM17
#define RM2 8
O bloco de código a seguir lista os protótipos de função que são usados para determinar a tarefa do motor.
dados de caracteres = 0;
void avançar ;
void retroceder ;
void virar à esquerda ;
void virar à direita ;
void robostop ;
O seguinte bloco de código é a função setup onde é usada para determinar se os pinos conectados são usados como entrada ou saída e a comunicação serial com o módulo Bluetooth está habilitada. Aqui Serial.begin é usado para estabelecer uma comunicação serial entre o Bluetooth e o Arduino e os pinos conectados aos pinos de entrada do IC do driver do motor são declarados como saída.
configuração nula
{
Serial.begin(9600);
pinMode(LM1, SAÍDA);
pinMode(LM2, SAÍDA);
pinMode(RM1, SAÍDA);
pinMode(RM2, SAÍDA);
}
A operação principal no código é implementada por um loop de tomada de decisão que é chamado na função main . Ele verifica se os dados seriais estão disponíveis e, se algum dado estiver disponível, lê os dados seriais usando a interface UART. O método Read do objeto Serial é usado para ler dados e os dados são então armazenados em uma variável.
if(Serial.disponível >0)
{
dados = Serial.read ;
Serial.print(dados);
Serial.print(“n”);
Os dados seriais recebidos são comparados com comandos de string pré-determinados em instruções if e, consequentemente, a lógica nos pinos de entrada do IC do driver do motor é alterada. Como se os dados seriais recebidos fossem 'F', a função moveforward é chamada para avançar o robô.
O esboço completo do Arduino para o Spy Rover controlado por Bluetooth pode ser encontrado na guia do código-fonte.
Observação: Encontre o arquivo rar do aplicativo controlado por Bluetooth abaixo.
Código-fonte do projeto
###
//Program to #define LM1 2 //define the pins number for motor connection #define LM2 3 #define RM1 7 #define RM2 8 char data = 0; void moveforward ; //function prototype void movebackward ; void turnleft ; void turnright ; void robostop ; void setup //setup function to define pinmode is input or output { Serial.begin(9600); pinMode(LM1, OUTPUT); pinMode(LM2, OUTPUT); pinMode(RM1, OUTPUT); pinMode(RM2, OUTPUT); } void loop //Infinite loop function { if(Serial.available >0) //condition check for serial data is available or not { data = Serial.read ; //if available read the data Serial.print(data); Serial.print("n"); if(data == 'F') { Serial.println("Forward"); moveforward ; } else if(data == 'B') { Serial.println("Backward"); movebackward ; } else if(data == 'L') { Serial.println("Left"); turnleft ; } else if(data == 'R') { Serial.println("Right"); turnright ; } else if(data == 'S') { Serial.println("Stop"); robostop ; } } } void moveforward // function definition to move robot forward { digitalWrite(LM1, HIGH); digitalWrite(LM2, LOW); digitalWrite(RM1, HIGH); digitalWrite(RM2, LOW); } void movebackward // function definition to move robot backward { digitalWrite(LM1, LOW); digitalWrite(LM2, HIGH); digitalWrite(RM1, LOW); digitalWrite(RM2, HIGH); } void turnleft // function definition to turn robot left { digitalWrite(LM1, HIGH); digitalWrite(LM2, LOW); digitalWrite(RM1, LOW); digitalWrite(RM2, LOW); } void turnright // function definition to turn robot right { digitalWrite(LM1, LOW); digitalWrite(LM2, LOW); digitalWrite(RM1, HIGH); digitalWrite(RM2, LOW); } void robostop // function definition to stop the robot { digitalWrite(LM1, LOW); digitalWrite(LM2, LOW); digitalWrite(RM1, LOW); digitalWrite(RM2, LOW); }###
Diagramas de circuito
| Diagrama de Circuito-Arduino-Bluetooth-Controlado-Spy-Rover | ![]() |
