Robô controlado por telefone Android usando Arduino

Robô controlado por telefone Android usando Arduino

O telefone Android que fica na sua mão a maior parte do tempo é útil em muitos outros aplicativos além do Whatsapp, Facebook; eletrodomésticos; e monitorar seus parâmetros de saúde. E se ele pudesse controlar um robô para auxiliar no seu trabalho diário? Sim é possivel! Com este projeto você pode fazer um robô que pode ser controlado por um telefone Android, através de comunicação Bluetooth.

Protótipo de robô Arduino operado por dispositivos móveis

Figura 1: Protótipo de robô Arduino operado por dispositivos móveis

O robô é construído em torno Arduino fez interface com um receptor Bluetooth para receber comandos do telefone Android.

O diagrama de blocos básico do sistema é o seguinte:

Diagrama de blocos do robô Arduino operado por dispositivos móveis

Figura 2: Diagrama de blocos do robô Arduino operado por dispositivos móveis

Comunicação Bluetooth

Bluetooth é um padrão de tecnologia sem fio para troca de dados em distâncias curtas (usando ondas de rádio UHF de comprimento de onda curto na banda ISM de 2,4 a 2,485 GHz) de dispositivos fixos e móveis e construção de redes de área pessoal (PANs). Inventado pelo fornecedor de telecomunicações Ericsson em 1994, foi originalmente concebido como uma alternativa sem fio aos cabos de dados RS-232. Pode conectar vários dispositivos, superando problemas de sincronização.

O módulo HC-05 é um módulo Bluetooth SPP (Serial Port Protocol) fácil de usar, projetado para configuração transparente de conexão serial sem fio. HC-05 é um módulo de 6 pinos. O módulo possui 6 pinos rotulados na parte traseira, mas a maioria dos módulos possui apenas 4 deles preenchidos com pinos pogo. KEY & STATE parecem não ser necessários, pois KEY é usado para atualizar o dispositivo e STATE simplesmente indica se o dispositivo está ativo ou não. Então isso deixa apenas GND, VCC, TXD, RXD.

Imagem do Módulo Bluetooth HC-05

Figura 3: Imagem do Módulo Bluetooth HC-05

Para conectar o Módulo ao Arduino, precisamos utilizar os pinos Serial (Tx e Rx) fornecidos na placa.

Conexões com HC-04

Fazendo conexões com HC-05:

Alguns módulos possuem rotulagem VCC para tensões de trabalho de até ~6 volts e NÃO gostam de nada, exceto 3,3 volts na linha VCC. Devemos usar um conversor de nível para 3,3V na linha RXD. Use dois resistores, como divisor de tensão simples para fazer a conversão do nível TTL. Um resistor de 2,2k ohm ao terra, conectado a um resistor de 1k ohm, à linha TXD no MCU.
Conecte o pino RXD entre os dois resistores para obter uma saída de aproximadamente 3,4 volts.

Conecte o pino RXD do módulo ao TXD do Arduino (Pino Digital 1), através da configuração do divisor de tensão mostrada abaixo:

Diagrama de circuito da interface do módulo Bluetooth Arduino e HC-05

Figura 4: Diagrama de circuito da interface do módulo Bluetooth Arduino e HC-05

Agora conecte o TXD do módulo ao RXD do Arduino (Pino Digital 0).

Aplicativo Android para controlar robô

Existem muitos aplicativos na Play Store para controle do Arduino via Bluetooth que estão disponíveis gratuitamente. Para manter o código simples, usaremos o “Arduino Bluetooth Terminal”. Baixe e instale o mesmo e emparelhe o receptor Bluetooth com o celular. Uma captura de tela do aplicativo é fornecida abaixo:

Captura de tela do aplicativo Android mostrando a conexão Bluetooth com o robô

Figura 5:

Captura de tela do aplicativo Android mostrando a conexão Bluetooth com o robô

Captura de tela do aplicativo Android mostrando mensagens enviadas ao robô Arduino

Figura 6: Captura de tela do aplicativo Android mostrando mensagens enviadas ao robô Arduino

Interface de motor e montagem de robô

Os motores são interligados através do Motor Driver (tipo Dual H-Bridge), a versão comumente usada é L293D, que está disponível em DIP de 18 pinos.

Diagrama de pinos do IC do driver do motor L293D

Figura 7: Diagrama de pinos do IC do driver do motor L293D

A montagem do robô pode ser mostrada abaixo:

Imagem mostrando o projeto mecânico do Arduino Robot

Figura 8: Imagem mostrando o projeto mecânico do Arduino Robot

O aplicativo móvel Android para controlar o robô está disponível gratuitamente na Play Store.

As entradas do driver do motor são conectadas aos pinos 5 do Arduino; 6; 7 e 8 respectivamente.

Imagem mostrando chassi e corpo do Robô Arduino

Figura 9: Imagem mostrando chassi e corpo do Robô Arduino

Imagem do robô Arduino controlado pelo telefone Android

Figura 10: Imagem do robô Arduino controlado pelo telefone Android

Código-fonte do projeto

###



// Android Phone Controlled Robot
// Successfully Tested on Android App --> 'Arduino Bluetooth 
// Terminal'; it is available free on the Google Play Store
int state;
int flag=0;       
void stp ;
void fwd ;
void left ;
void right ;
void back ;
void setup 
{
    pinMode(7,OUTPUT);                  
    pinMode(8,OUTPUT);                  
    pinMode(5,OUTPUT);                  
    pinMode(6,OUTPUT);                  
Serial.begin(9600);                                         // Baud rate set to 9600bps
}
void loop  {
    if(Serial.available  > 0)      // Ckeck for command Recieved
    {    
      state = Serial.read ;
      Serial.println(state);  
      flag=0;
    }  
    if (state == '1')     // Checking Command from User
    {
        stp ;
        if(flag == 0){
          Serial.println("Stop");
          flag=1;
       }
    }
    else if (state == '2')
    {
        fwd ;
        if(flag == 0)
        {
          Serial.println("Forward");
          flag=1;
         }
    }
    else if (state == '3')
    {
        back ;
        if(flag == 0)
        {
          Serial.println("Backward");
          flag=1;
        }
    }
    else if (state == '4')
    {
        left ;
        if(flag == 0)
        {
          Serial.println("Left");
          flag=1;
         }
    }
   else if (state == '5')
  {
        right ;
        if(flag == 0)
        {
          Serial.println("Right");
          flag=1;
         }
    }
}                                           //loop  ends here
void fwd           // Forward
{
  digitalWrite(7,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(8,LOW);
}
void back           // Backward
{
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  digitalWrite(5,LOW);
}
void left           //LEFT
{
  digitalWrite(7,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(8,LOW);
  digitalWrite(6,LOW);
}
void right           // Right
{
  digitalWrite(7,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(6,LOW);
}
void stp             // Robot STops
{
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
}

###

Diagramas de circuito

Diagrama de circuito-L293D-Motor-Driver-Arduino-Robot
Circuito-Diagrama-Controlador-Circuito-Arduino-Robô

Voltar para o blog

Deixe um comentário

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