Controle Remoto de Carro com Arduino Uno e Bluetooth: Guia Passo a Passo
Componentes e Materiais
- 1x Arduino UNO
- 1x Driver de Motor Duplo H-Bridge L298 (SparkFun)
Ferramentas Necessárias
- Impressora 3D (genérica)
Aplicativos e Serviços Online
- MIT App Inventor 2
- Arduino IDE
Sobre o Projeto
Este projeto demonstra como controlar um carro robótico remotamente via Bluetooth usando um Arduino Uno. O sistema utiliza um módulo Bluetooth para receber comandos de um aplicativo Android criado com o MIT App Inventor 2, que então aciona os motores através do driver L298N.
O código no Arduino interpreta comandos de caractere único (A, B, C, D, etc.) para controlar direção e velocidade dos motores, permitindo movimentos para frente, ré, curvas e parada.
Código do Arduino
char buffer[67];
byte Pino02 = 2;
byte Pino03 = 3;
byte Pino04 = 4;
byte Pino05 = 5;
byte Pino06 = 6;
byte Pino07 = 7;
byte Pino12 = 12;
byte Pino13 = 13;
void setup() {
Serial.begin(9600);
Serial.flush();
pinMode(Pino02, OUTPUT);
pinMode(Pino03, OUTPUT);
pinMode(Pino04, OUTPUT);
pinMode(Pino05, OUTPUT);
pinMode(Pino06, OUTPUT);
pinMode(Pino07, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int index = 0;
delay(100); // permite o buffer encher
int numChar = Serial.available();
if (numChar > 65) numChar = 65;
while (numChar--) {
buffer[index++] = Serial.read();
}
splitString(buffer);
}
}
void splitString(char* data) {
Serial.print("Dados recebidos: ");
Serial.println(data);
char* parameter;
parameter = strtok(data, " ,");
while (parameter != NULL) {
setLED(parameter);
parameter = strtok(NULL, " ,");
}
// Limpa buffers
for (int x = 0; x < 66; x++) buffer[x] = '\0';
Serial.flush();
}
void setLED(char* data) {
// Comandos de movimento com diferentes velocidades e direções
// 'A' - Frente Esquerda
// 'C' - Frente Direita
// 'B', 'M', 'N', 'P', 'L' - Ré em velocidades crescentes
// 'D', 'H', 'I', 'K', 'L' - Frente em velocidades crescentes
// 'U' - Parada
// 'E' - Frente Lenta
// 'F' - Ré Lenta
if (data[0] == 'A') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'C') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'B') {
analogWrite(9, 25); analogWrite(10, 25);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, HIGH);
}
if (data[0] == 'M') {
analogWrite(9, 75); analogWrite(10, 75);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, HIGH);
}
if (data[0] == 'N') {
analogWrite(9, 125); analogWrite(10, 125);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, HIGH);
}
if (data[0] == 'P') {
analogWrite(9, 175); analogWrite(10, 175);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, HIGH);
}
if (data[0] == 'L') {
analogWrite(9, 225); analogWrite(10, 225);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, HIGH);
}
if (data[0] == 'D') {
analogWrite(9, 25); analogWrite(10, 25);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'H') {
analogWrite(9, 75); analogWrite(10, 75);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'I') {
analogWrite(9, 125); analogWrite(10, 125);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'K') {
analogWrite(9, 175); analogWrite(10, 175);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'L') {
analogWrite(9, 225); analogWrite(10, 225);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
if (data[0] == 'U') {
digitalWrite(Pino02, LOW); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, LOW);
}
if (data[0] == 'E') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
}
if (data[0] == 'F') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
}
}
Peças Personalizadas e Caixas
Arquivo APK para o aplicativo de controle: arduinoslider2_dxxyKBsRDa.apk
Processo de manufatura
- Sistema Integrado de Controle de Acesso com QR, RFID e Verificação de Temperatura
- Construa um Sistema Rápido e Confiável de Detecção de Incêndio com Samsung SAMI, Arduino UNO e Raspberry Pi
- Relógio em Tempo Real com Arduino para Horários de Oração Islâmica
- Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Controle Dois Motores de Passo com Arduino Nano e Joystick – Tutorial Simples
- Controlando Matriz de LED 8×8 com Arduino Uno: Guia Passo a Passo
- Construa um Cubo de LED 4x4x4 com Arduino Uno e 1Sheeld – Projeto Interativo de LED
- Matriz LED 8x8 com Bluetooth e Texto Rolante – Projeto Arduino
- Controle de Ventoinha PWM 4 Pinos 25 kHz com Arduino Uno – Montagem, Código e Teste