Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug

Bauteile und Zubehör

Arduino Nano R31
SparkFun Dual H-Brücke L2981
Ultraschallsensor HC-SR041
HC-05 Bluetooth-Modul1
RGB-LED (Common Anode)1
Logic Level Converter (bidirektional)1
Widerstand 330 Ω1
Steckbrett1
Breadboard-Stromversorgung 5 V/3,3 V1
DC-Motor 12 V2
Jumper-Kabel (Männlich/Weiblich)1

Apps und Online-Dienste

Über das Projekt

Ein Smartphone steuert den Roboter per Bluetooth. Nach 12 Jahren Pause baute ich während des Covid-19-Lockdowns meinen ersten Arduino-Roboter. Elektronik & Robotik sind meine Hobbys.

Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug

Der HC-05 empfängt Befehle aus der ArduinoBlueControl-App und leitet sie per serieller Kommunikation an den Arduino Nano weiter. Dieser steuert über den L298N-Treiber zwei Getriebemotoren für Vorwärts, Rückwärts, Links, Rechts.

Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug
Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug
Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug

Ein Logic Level Converter verbindet HC-05 (3,3 V) mit Arduino Nano (5 V). Der HC-SR04 misst Entfernungen; bei Hindernis < 20 cm stoppt der Roboter. Eine RGB-LED zeigt den Status an.

Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug

Chassis: 2-Rad-Plattform mit zwei Getriebemotoren. Schaltung auf Steckbrett mit 3,3 V/5 V Versorgung. Der L298N treibt die Motoren an (PWM an ENA/ENB für Geschwindigkeit).

Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug
Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug

Kurzes Video zeigt den Roboter in Aktion. Er lässt sich für Home Automation, fahrerlose Transportsysteme etc. erweitern.

Code

/* Bluetooth Controlled Obstacle Avoidance Robot
   Prepared by: Alok Talukdar, Date: 09.05.2020 */
#include <SoftwareSerial.h>

#define IN1 5  // right motor
#define IN2 4
#define IN3 3  // left motor
#define IN4 2
#define ENA 9  // PWM right
#define ENB 10 // PWM left

#define redLED 8
#define greenLED A0
#define blueLED 11

const int trigPin = 6;
const int echoPin = 7;
int i, j, k = 0;
float duration, distance;

SoftwareSerial mySerial(12, 13); // RX, TX
String data;
int btVal;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  mySerial.begin(9600);
  pinMode(IN1, OUTPUT); 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); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
  analogWrite(redLED, 255); // RGB Common Anode: HIGH = aus
  digitalWrite(blueLED, HIGH);
  digitalWrite(greenLED, HIGH);
}

void loop() {
  while (mySerial.available()) {
    data = mySerial.readStringUntil('\n');
  }
  btVal = data.toInt();
  switch (btVal) {
    case 1: forward(); setLED(0, 255, 1); dist(); break; // grün
    case 2: reverse(); setLED(255, 0, 0); break; // rot
    case 3: left(); break;
    case 4: right(); break;
    case 5: stoprobot(); setLED(255, 0, 1); break; // blau
    default: setLED(255, 255, 1); break; // weiß
  }
}

void setLED(int r, int g, int b) {
  analogWrite(redLED, r);
  digitalWrite(greenLED, g);
  digitalWrite(blueLED, b);
}

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); delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration * 0.0343) / 2; // cm
  if (distance < 20) {
    stoprobot(); setLED(255, 0, 1); // blau = Stopp
  }
  delay(1000);
}

Schaltplan

Bluetooth-gesteuerter Hindernisvermeidungs-Roboter: Smartes Ferngesteuertes Fahrzeug

Herstellungsprozess

  1. Visionsbasierter Hindernis-vermeidender Mobiler Roboter auf Raspberry Pi
  2. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  3. Internet-gesteuerter Video-Streaming-Roboter mit Arduino & Raspberry Pi bauen
  4. Gesten-gesteuerter Roboter mit Raspberry Pi
  5. WLAN-gesteuerter Roboter mit Raspberry Pi & Android Smartphone bauen
  6. Sprachgesteuerter Roboter mit Windows 10 IoT Core auf Raspberry Pi 2 bauen
  7. WLAN-gesteuerter Raspberry Pi Roboter mit Python bauen – Schritt-für-Schritt
  8. ROObockey: Präzisionsunterstützter ferngesteuerter Street-Hockey-Roboter
  9. KI-gestütztes Hindernisvermeidungssystem mit Arduino und Ultraschallsensoren
  10. Sprachgesteuerter Roboter mit Arduino Nano bauen