Como fazer um Carrinho Robot com Arduino? Como controlar um Robot com o telemóvel?
Surgem muitas vezes a dúvida como controlar um Carro Robot feito com Arduino mas controlado através do nosso Smartphone?
E é isso que hoje vamos ver com todos os detalhes. Neste caso ainda vamos mais longe, tendo em conta que o nosso carrinho irá ter:
- Modo Automático: Onde ele autonomamente explora ao seu redor, desviando-se dos obstáculos;
- Modo Comando: Onde através de uma aplicação para Android, é possível comandar os seus movimentos;
- Modo Comando Giroscópio: Onde através da inclinação do seu telemóvel, poderá controlar os movimentos.
O controlo sem fios será realizado através de um modulo Bluetooth, e o Bluetooth do Smartphone.
Para ajudar a simplificar este processo, vamos dividir o circuito de montagem em 3 fases:
# Esquema de montagem Circuito Bluetooth:

# Esquema de montagem Circuito Motor:

# Esquema de montagem Sensor Distância:
# Código Utilizado no Arduino IDE:
Primeiro antes de programarmos podemos já carregar s biblioteca necessária para este projeto, a mesma pode ser descarregada no link: Ultrasonic
Agora vamos ao código, em que criamos 2 modos de funcionamento selecionaveis através de um interruptor ligado à porta 12 do nosso Arduino:
#include <Ultrasonic.h>
Ultrasonic ultrasonic(2,3); // (Trig PIN,Echo PIN)
const int motorPin1 = 9; // Pin 14 of L293
const int motorPin2 = 10; // Pin 10 of L293
const int motorPin3 = 6; // Pin 7 of L293
const int motorPin4 = 5;
int modo = 12;
int modoControlo;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}
void loop() {
modoControlo = digitalRead(modo); //interruptor para selecionar o modo
if (modoControlo == HIGH){
controloAutomato();
}
else{
controloBluetooth();
}
}
void controloAutomato(){ // Funcao automatico quando selecionada, o robot desvia-se sozinho dos obstaculos
if( ultrasonic.Ranging(CM) >= 8){
analogWrite(motorPin1, 0 );
analogWrite(motorPin2, 150);
analogWrite(motorPin3, 160);
analogWrite(motorPin4, 0);
}
else{
//Recuar durante 900 ms
analogWrite(motorPin1, 155);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 160);
delay(900);
//Virar para a direita durante 700ms
analogWrite(motorPin1, 150);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 160);
analogWrite(motorPin4, 0);
Serial.println("Esquerda");
delay(500);
}
}
void controloBluetooth(){ // Funcao manual ativada, ele aguarda comandos enviados pelo smartphone para se movimentar
if(Serial.available() > 0)
{
char data;
data = Serial.read();
Serial.write(Serial.read());
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 0);
switch (data)
{
case 'F': //FORWARD
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 150);
analogWrite(motorPin3, 160);
analogWrite(motorPin4, 0);
break;
case 'B': //REVERSE
analogWrite(motorPin1, 150);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 160);
break;
case 'L': //FORWARD LEFT
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 150);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 0);
break;
case 'R': //FORWARD RIGHT
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 160);
analogWrite(motorPin4, 0);
break;
default: //se o bluetooth não receber informação, ele permanesse imovel por razoes de segurança.
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 0);
}
}
}
# Lista de Material:
Arduino Uno (poderá ser outro como o Arduino Nano ou Arduino Mega)
Estrutura Robot Vermelha + Motores + Rodas + Roda Livre
Driver L298N para controlo de motores
Mini Interruptor (para selecionar Modo Automático ou Manual)
Todos os produtos foram adquiridos na loja de eletrónica e robótica ElectroFun.
# Aplicação para Android:
Podem ver aqui as diversas opções do APP:



Para facilitar o trabalho podem fazer download aqui: BT_Robot_RSDP.apk
Nota: poderão ter quer ativar no vosso telemóvel a opção “aceitar instalar aplicações de origem desconhecida”, para conseguirem instalar esta app.
Quem pretender desenvolver de raíz a aplicação para este tipo de prtojetos, deixamos abaixo umas dicas, na programação por blocos:
# Dúvidas:
Poderão esclarecer as vossas dúvidas não só destes projeto, mas todas as outras no nosso forum ou Grupo Facebook dedicado aos nossos leitores:
http://www.arduinoportugal.pt/forums/
https://www.facebook.com/groups/arduinoportugal/
Subscreva o nosso canal Arduino Portugal do Youtube! E fique a saber qual é o próximo projeto!





