Robô Spy Rover implementado usando câmera IP que permite transmissão de longa distância

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 –

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

Diagrama de bloco –

Diagrama de blocos do Spy Rover controlado por Bluetooth baseado em Arduino
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ô.
Imagem mostrando Spy Rover controlado por Bluetooth
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 –
Tabela de listagem de conexões de circuito entre o módulo Bluetooth HC-05 e o Arduino Pro Mini
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:
Tabela de listagem de configuração de pinos do IC do driver do motor L293D
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:
Tabela verdade do IC do driver do motor L293D
Fig. 6: Tabela verdade do IC do driver do motor L293D
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.
Imagem do circuito de controle montado na carroceria do Spy Rover
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 –
Tabela de listagem de comandos de string usados ​​para movimento do robô Arduino
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 –
Tabela lógica do IC do driver do motor L293D para o robô Arduino
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.
Captura de tela do aplicativo personalizado projetado usando o MIT App Inventor
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 –
Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor
Fig. 12: Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor
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

Vídeo do projeto

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.