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

Gesteuerter Roboter per Gestensteuerung – Bauen Sie Ihren eigenen Motion-Sensing-Bot

Komponenten und Zubehör

KomponenteMenge
Arduino UNO1
Arduino Nano R31
RF-433 Sender/Empfänger Modul1
HT12 Encoder & Decoder1
Adafruit ADXL335 Analog-Beschleunigungssensor1
Motor Shield für Uno1
DC-Motoren4 (2 Paare parallel)

Benötigte Werkzeuge

Projektbeschreibung

Der gesten-gesteuerte Roboter ist ein klassisches Hobby- und Studentenprojekt, um Mikrocontroller-Wissen praktisch anzuwenden. Das Konzept: Die Handflächen-Orientation steuert die Bewegung des Roboter-Autos.

1. ADXL335 Beschleunigungssensor

Der Sensor misst die Beschleunigung einschließlich der Erdbeschleunigung g. Durch Neigung der Hand ändert sich der Winkel der X/Y-Achsen zur Vertikalen, wodurch eine Komponente von g auf diese Achsen wirkt – messbar als Orientierung.

Der ADXL335 misst bis zu 3g und wird über seine Achsen-Pins an die analogen Eingänge des Arduino Nano angeschlossen. Er liefert Spannungswerte proportional zur Beschleunigung (0–3,3V → ADC-Werte 0–1023).

Testcode für ADXL335:

void setup() {
  pinMode(A0, INPUT);  // X-Achse
  pinMode(A1, INPUT);  // Y-Achse
  pinMode(A2, INPUT);  // Z-Achse
  Serial.begin(9600);
}

void loop() {
  Serial.print(" X= "); Serial.println(analogRead(A0));
  Serial.print(" Y= "); Serial.println(analogRead(A1));
  Serial.print(" Z= "); Serial.println(analogRead(A2));
  delay(1000);
}

Führen Sie diesen Code aus, um die Werte für Vorwärts, Rückwärts, Links, Rechts zu ermitteln.

2. RF-433 Sender & Empfänger

Überträgt Steuerbefehle vom Handgelenk (Nano) zum Roboter (Uno) per 433 MHz Funk (Amplitudenmodulation, Reichweite ~10 m).

Sender-Schaltung (Handgelenk-Seite)

Besteht aus RF-Sender und HT12E-Encoder. Der Encoder hat 4 Dateneingänge (Pins 6–9 am Nano), die die 4 Bewegungen codieren: HIGH = Befehl, alle LOW = Stillstand. Adress-Pins A0–A7 auf GND (gleiche Adresse bei Sender & Empfänger).

Empfänger-Schaltung (Roboter-Seite)

Spiegelbildlich zum Sender, aber Dateneingänge als Eingänge am Uno (analoge Pins, da Motor Shield fast alle digitalen Pins belegt).

3. Motor Shield

Verwendet Adafruit AFMotor-Library (GitHub). Beispiel:

#include 
AF_DCMotor motor(4);
void setup() {
  Serial.begin(9600);
  motor.setSpeed(200);
  motor.run(RELEASE);
}
void loop() {
  motor.run(FORWARD);
  for (int i=0; i<255; i++) { motor.setSpeed(i); delay(10); }
  for (int i=255; i>0; i--) { motor.setSpeed(i); delay(10); }
  motor.run(BACKWARD);
  // ... analog rückwärts
  motor.run(RELEASE);
  delay(1000);
}

4. Alles zusammenfügen

Da das Motor Shield fast alle digitalen Pins belegt, werden die Empfänger-Daten an den analogen Pins A2–A5 des Uno eingelesen. Der finale Schaltplan zeigt die komplette Verdrahtung.

Stromversorgung: 9V-Batterie an Motor Shield. Der Autor empfiehlt 2–3 9V-Batterien parallel für ausreichend Strom bei 4 Motoren (je 2 Motoren pro Seite parallel an Motor-Ausgänge 3 & 4).

Finaler Code

Arduino Nano (Sender-Seite)

int x_axis = 0, y_axis = 0;
int forward = 9, backward = 10, right = 11, left = 12;

void setup() {
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);  // Hinweis: Original nutzt A3 für Y, hier A1 korrigiert
  pinMode(forward, OUTPUT);
  pinMode(backward, OUTPUT);
  pinMode(right, OUTPUT);
  pinMode(left, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  x_axis = analogRead(A0);
  y_axis = analogRead(A1);
  
  Serial.print(" X = "); Serial.println(x_axis);
  Serial.print(" Y = "); Serial.println(y_axis);
  
  // Alle Ausgänge zuerst LOW
  digitalWrite(forward, LOW);
  digitalWrite(backward, LOW);
  digitalWrite(right, LOW);
  digitalWrite(left, LOW);
  
  if (y_axis >= 390) {
    Serial.println("Vorwärts");
    digitalWrite(forward, HIGH);
  } else if (y_axis <= 310) {
    Serial.println("Rückwärts");
    digitalWrite(backward, HIGH);
  } else if (x_axis >= 380) {
    Serial.println("Rechts");
    digitalWrite(right, HIGH);
  } else if (x_axis <= 320) {
    Serial.println("Links");
    digitalWrite(left, HIGH);
  }
  
  delay(200);
}

Arduino Uno (Empfänger/Roboter-Seite)


#include 

AF_DCMotor motor_right(3);
AF_DCMotor motor_left(4);

int forward=0, backward=0, right=0, left=0;

void setup() {
  pinMode(A2, INPUT);  // Vorwärts
  pinMode(A3, INPUT);  // Rückwärts
  pinMode(A4, INPUT);  // Rechts
  pinMode(A5, INPUT);  // Links
  
  Serial.begin(9600);
  motor_right.setSpeed(255);
  motor_left.setSpeed(255);
  motor_right.run(RELEASE);
  motor_left.run(RELEASE);
}

void loop() {
  forward = digitalRead(A2);
  backward = digitalRead(A3);
  right = digitalRead(A4);
  left = digitalRead(A5);
  
  if (forward == HIGH) {
    motor_right.run(FORWARD);
    motor_left.run(FORWARD);
    Serial.println("Vorwärts");
  }
  if (backward == HIGH) {
    motor_right.run(BACKWARD);
    motor_left.run(BACKWARD);
    Serial.println("Rückwärts");
  }
  if (right == HIGH) {
    motor_right.run(FORWARD);
    motor_left.run(RELEASE);
    Serial.println("Rechts");
  }
  if (left == HIGH) {
    motor_right.run(RELEASE);
    motor_left.run(FORWARD);
    Serial.println("Links");
  }
  if (left==LOW && right==LOW && forward==LOW && backward==LOW) {
    motor_right.run(RELEASE);
    motor_left.run(RELEASE);
  }
  delay(100);
}

Fotos & Videos

Im Originalprojekt sind mehrere Abbildungen des Aufbaus und der Funktionsweise enthalten.

Herstellungsprozess

  1. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  2. Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
  3. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  4. Autonomer Linienfolger-Roboter mit Arduino UNO
  5. Einfacher Taschenrechner mit Arduino UNO – Einsteigerprojekt
  6. DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
  7. Sprachgesteuerter Roboter mit Arduino Nano bauen
  8. Tragbares Persistence-of-Vision-Display mit Arduino UNO und ATtiny85 bauen
  9. Arduino Uno & Bluetooth: Fernsteuerung eines Autos – Schritt-für-Schritt-Anleitung
  10. 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test