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

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

Componentes e Materiais Necessários

Componente Quantidade
Arduino Nano R3 1
Driver de Motor Dual H-Bridge SparkFun L298 1
Sensor Ultrassônico HC-SR04 (Genérico) 1
Módulo Bluetooth HC-05 1
RGB Difuso Anodo Comum 1
Conversor de Nível Lógico Bidirecional SparkFun 1
Resistor 330 ohm 1
Protoboard (genérica) 1
Fonte para Protoboard SparkFun 5V/3.3V 1
Motor DC 12V 2
Jumpers Macho/Fêmea 1

Aplicativos e Serviços Online

Sobre o Projeto

O projeto usa um telefone celular para se comunicar com um robô via bluetooth. Sempre quis construir um robô e controlá-lo via telefone celular. Após um longo intervalo de mais de 12 anos, retomei a tarefa de construir um robô e operá-lo. Este também é meu primeiro projeto no Arduino Project Hub. Eletrônica e robótica são um dos meus hobbies favoritos e, portanto, assumi a tarefa de construir o robô durante este período de lockdown devido à Covid-19.

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

O robô detecta sinais bluetooth transmitidos do telefone celular. Ele usa o módulo bluetooth HC-05 para detectar os sinais de comando do telefone celular e controla o robô. Usei o aplicativo ArduinoBlueControl para controlar o robô.

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente
Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente
Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

O coração do robô é o Arduino Nano. Ele recebe os sinais do módulo HC-05 via comunicação serial e controla os motores via módulo driver de motor L298N para movimento nas direções frente, ré, esquerda e direita.

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

Deve-se ter cuidado ao conectar os pinos TX e RX do módulo HC-05 com o Arduino Nano. Um conversor de nível lógico é usado para isso.

O robô usa o módulo sensor ultrassônico HC-SR04 para detectar obstáculos em seu caminho. Ao detectar qualquer obstáculo durante seu movimento para frente, o robô para. Um LED RGB é usado para mostrar o status do robô.

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

O robô é montado em uma base de 2 rodas consistindo de dois motores de engrenagem. A circuitaria é montada sobre uma protoboard com fonte de alimentação (3.3v e 5v). O Arduino Nano não pode acionar os motores diretamente devido à necessidade de corrente muito maior para os motores. Portanto, o módulo driver de motor L298N é usado para acionar os motores. Os sinais PWM do Arduino Nano são usados para controlar a velocidade dos motores via pinos ENA e ENB do driver de motor L298N.

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente
Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

Aqui está um vídeo curto do robô em operação:

Espero que tenham gostado do meu robô com evitamento de obstáculos controlado por bluetooth. Este robô pode ser modificado e estendido para usos em automação residencial, veículos de evitamento de obstáculos para chão de fábrica etc. e muitos outros usos.

Código

Código Arduino do Robô Controlado por Bluetooth

/* Robô com Evitamento de Obstáculos Controlado por Bluetooth
   Preparado por: Alok Talukdar
   Data: 09.05.2020 */

#include <SoftwareSerial.h> // Para usar qualquer pino no Arduino para comunicação serial.

// Define os pinos digitais para o módulo de controle de motor L298.
#define IN1 5 // para motor direito
#define IN2 4 // para motor direito
#define IN3 3 // para motor esquerdo
#define IN4 2 // para motor esquerdo
#define ENA 9 // Enable A para controle PWM do motor direito
#define ENB 10 // Enable B para controle PWM do motor esquerdo

// Define os pinos digitais para controle do LED RGB
#define redLED 8
#define greenLED A0
#define blueLED 11

// Configura o módulo sensor ultrassônico HC-SR04
const int trigPin = 6; // pino TRIG conectado ao pino D6 do Arduino Nano
const int echoPin = 7; // pino ECHO conectado ao pino D7 do Arduino Nano

int i, j, k = 0;
float duration, distance; // variáveis para medição de distância

// Configura o módulo Bluetooth HC05
SoftwareSerial mySerial(12, 13); // (12 --> RX , 13 --> TX)
String data; // variáveis para controle Bluetooth
int btVal;

void setup() {
  // Coloque seu código de configuração aqui, para rodar uma vez:
  pinMode(trigPin, OUTPUT); // Configura pino D6 para transmitir pulsos ultrassônicos
  pinMode(echoPin, INPUT); // Configura pino D7 para receber pulsos ultrassônicos
  mySerial.begin(9600); // Configura a serial software na taxa de 9600 baud
  
  pinMode(IN1, OUTPUT); // Configura IN1 - IN4 como OUTPUT para controlar motores
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  
  pinMode(redLED, OUTPUT);
  pinMode(blueLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  
  digitalWrite(IN1, LOW); // Configura o status de IN1 - IN4 como LOW
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  
  analogWrite(redLED, 255); // Desliga LEDs. LED RGB é do tipo anodo comum.
  digitalWrite(blueLED, HIGH);
  digitalWrite(greenLED, HIGH);
}

void loop() {
  // Coloque seu código principal aqui, para rodar repetidamente:
  while (mySerial.available()) {
    data = mySerial.readStringUntil('\n');
  }
  
  btVal = (data.toInt());
  
  switch (btVal) {
    case 1:
      forward();
      digitalWrite(greenLED, LOW);
      analogWrite(redLED, 255);
      digitalWrite(blueLED, HIGH);
      dist();
      break;
    case 2:
      reverse();
      digitalWrite(greenLED, HIGH);
      analogWrite(redLED, 255);
      digitalWrite(blueLED, LOW);
      break;
    case 3:
      left();
      break;
    case 4:
      right();
      break;
    case 5:
      stoprobot();
      digitalWrite(greenLED, HIGH);
      analogWrite(redLED, 0);
      digitalWrite(blueLED, HIGH);
      break;
    default:
      digitalWrite(greenLED, HIGH);
      analogWrite(redLED, 255);
      digitalWrite(blueLED, HIGH);
      break;
  }
  
  if (mySerial.available() < 0) {
    // Serial.println("Sem Dados Bluetooth");
  }
}

// Declarações das funções de controle de motor
void forward() {
  for(i=0; i<=100; i++) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
  }
}

void reverse() {
  for(j=0; j<=100; j++) {
    analogWrite(ENA, j);
    analogWrite(ENB, j);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
  }
}

void left() {
  analogWrite(ENA, 127);
  analogWrite(ENB, 0);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, HIGH);
}

void right() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 127);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

void stoprobot() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

void dist() {
  digitalWrite(trigPin, LOW); // para enviar um pulso via pino TRIG do HC-SR04
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); // lê a duração do pulso
  distance = (duration * 0.0343) / 2; // mede a distância em cm. Velocidade do som é 340 m/s ou 0.0343 cm/us
  
  if(distance < 20) // se distância < 20 cm, PARA robô
  {
    stoprobot();
    digitalWrite(greenLED, HIGH);
    analogWrite(redLED, 0);
    digitalWrite(blueLED, HIGH);
  }
  delay(1000);
}

Esquemáticos

Diagrama do circuito do robô.

Robô com Evitamento de Obstáculos Controlado por Bluetooth: Construa um Veículo Inteligente Operado Remotamente

Processo de manufatura

  1. Robô Móvel Evita-Obstáculos Baseado em Visão no Raspberry Pi
  2. Construa um Robô Raspberry Pi Controlado por Bluetooth com Feedback de Áudio
  3. Construa um Robô de Streaming de Vídeo Controlado por Internet com Arduino e Raspberry Pi
  4. Robô Controlado por Gestos Alimentado por Raspberry Pi
  5. Construa um Robô Controlado por WiFi com Raspberry Pi e Smartphone Android
  6. Construa um Robô Controlado por Fala com Windows 10 IoT Core no Raspberry Pi 2
  7. Construa Robô Raspberry Pi Controlado por Wi-Fi com Python – Guia Passo a Passo
  8. ROObockey: Robô de Hockey de Rua com Assistência de Precisão e Controle Remoto
  9. Sistema de Desvio de Obstáculos com IA usando Arduino e Sensores Ultrassônicos
  10. Construa um Robô Controlado por Voz com Arduino Nano