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

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

Bloga geri dön

Yorum bırakın

Yorumların yayınlanmadan önce onaylanması gerekmektedir.