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.
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:
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.
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 do módulo ao TXD do Arduino (Pino Digital 1), através da configuração do divisor de tensão mostrada abaixo:
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:Figura 5:
Captura de tela do aplicativo Android mostrando a conexão Bluetooth com o robô
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.Figura 7: Diagrama de pinos do IC do driver do motor L293D
A montagem do robô pode ser mostrada abaixo:
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.
Figura 9: Imagem mostrando chassi e corpo do Robô Arduino
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ô | ![]() |