Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Controle Remoto de Carro com Arduino Uno e Bluetooth: Guia Passo a Passo

Componentes e Materiais

Ferramentas Necessárias

Aplicativos e Serviços Online

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

  1. Sistema Integrado de Controle de Acesso com QR, RFID e Verificação de Temperatura
  2. Construa um Sistema Rápido e Confiável de Detecção de Incêndio com Samsung SAMI, Arduino UNO e Raspberry Pi
  3. Relógio em Tempo Real com Arduino para Horários de Oração Islâmica
  4. Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
  5. Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
  6. Controle Dois Motores de Passo com Arduino Nano e Joystick – Tutorial Simples
  7. Controlando Matriz de LED 8×8 com Arduino Uno: Guia Passo a Passo
  8. Construa um Cubo de LED 4x4x4 com Arduino Uno e 1Sheeld – Projeto Interativo de LED
  9. Matriz LED 8x8 com Bluetooth e Texto Rolante – Projeto Arduino
  10. Controle de Ventoinha PWM 4 Pinos 25 kHz com Arduino Uno – Montagem, Código e Teste