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!