Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Gebarenbestuurde Robot: Bouw Je Eigen Bewegingssensende Bot

Onderdelen en Benodigdheden

OnderdeelAantal
Arduino UNO1
Arduino Nano R31
RF-433 Zender/Ontvanger Set1
HT12 Encoder/Decoder1
Adafruit ADXL335 Analoge Versnellingsmeter1
Motor Shield voor Uno (Adafruit)1
DC Motor (standaard)4 (2 paren parallel)

Benodigde Tools

  • Solderbout

Over dit Project

De gebarenbestuurde robot is een klassiek project voor hobbyisten en studenten om microcontroller-kennis praktisch toe te passen. De oriëntering van de handpalm bestuurt de beweging van de robotwagen. Hieronder wordt de werking per component uitgelegd.

1. ADXL335 Versnellingsmeter

De ADXL335 meet versnelling inclusief zwaartekracht 'g'. Door de kanteling van de hand verandert de hoek van de X- en Y-as ten opzichte van de verticale, waardoor een component van 'g' op die assen meetbaar is. Dit geeft de handoriëntatie aan.

De sensor meet tot 3g en wordt aangesloten op de analoge pinnen van de Arduino Nano (op de handpalm gemonteerd). De uitgangsspanning (0-3.3V) wordt gelezen als 0-1024 waarden (10-bit ADC). Verschillende kantelingen geven verschillende waarden per as, welke gemapt worden op robotbewegingen.

Testcode ADXL335:

void setup() {
  pinMode(A0, INPUT); // X-as
  pinMode(A1, INPUT); // Y-as
  pinMode(A2, INPUT); // Z-as
  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);
}

2. RF-433 Zender en Ontvanger

De RF-module (433 MHz, Amplitude Modulatie) verzendt commando's van de Arduino Nano (polshand) naar de Arduino Uno (robot). Bereik ca. 10 meter.

Zender Schakeling (met HT12E Encoder):

  • Adrespinnen A0-A7: allemaal LOW (GND)
  • Datapinnen (D0-D3) → Arduino Nano digitale pinnen 6-9
  • Pin 9 (D0) HIGH = Vooruit
  • Pin 10 (D1) HIGH = Achteruit
  • Pin 11 (D2) HIGH = Links
  • Pin 12 (D3) HIGH = Rechts
  • Alle LOW = Stilstand

Ontvanger Schakeling (met HT12D Decoder):

  • Identieke adresinstelling als zender
  • Datapinnen → Arduino Uno analoge pinnen A0-A3 (om digitale pinnen vrij te houden voor Motor Shield)
  • LED op pin 17 (met 1kΩ) voor verbindingscontrole

3. Motor Shield (Adafruit)

Gebruikt de AFMotor bibliotheek. Voorbeeld:

#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); }
  // ... etc
}

4. Alles Combineren

De Motor Shield gebruikt bijna alle digitale pinnen, dus de ontvangerdata wordt ingelezen op analoge pinnen A0-A3. De motoren worden in paren parallel aangesloten (linker/rechter zijde) op motor aansluitingen 3 en 4 van de shield. Voor voldoende stroom worden 2-3× 9V batterijen parallel aangesloten op de shield voeding.

Finale Code

Arduino Nano (Zender/Zijkant)

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

void setup() {
  pinMode(A0, INPUT);
  pinMode(A3, OUTPUT); // Let op: originele code had A3 als OUTPUT, waarschijnlijk A1 bedoeld voor Y-as
  pinMode(forward, OUTPUT);
  pinMode(backward, OUTPUT);
  pinMode(right, OUTPUT);
  pinMode(left, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  x_axis = analogRead(A0);
  y_axis = analogRead(A3); // Controleer pin!
  
  Serial.print("X = "); Serial.println(x_axis);
  Serial.print("Y = "); Serial.println(y_axis);
  
  if (y_axis >= 390) { digitalWrite(forward, HIGH); Serial.println("Vooruit"); }
  else if (y_axis <= 310) { digitalWrite(backward, HIGH); Serial.println("Achteruit"); }
  else if (x_axis >= 380) { digitalWrite(right, HIGH); Serial.println("Rechts"); }
  else if (x_axis <= 320) { digitalWrite(left, HIGH); Serial.println("Links"); }
  else {
    digitalWrite(forward, LOW);
    digitalWrite(backward, LOW);
    digitalWrite(right, LOW);
    digitalWrite(left, LOW);
  }
  delay(200);
}

Arduino Uno (Ontvanger/Robot)

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

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

void setup() {
  pinMode(A0, INPUT); // Vooruit
  pinMode(A1, INPUT); // Achteruit
  pinMode(A2, INPUT); // Rechts
  pinMode(A3, 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(A0);
  backward = digitalRead(A1);
  right = digitalRead(A2);
  left = digitalRead(A3);
  
  if (forward == HIGH) {
    motor_right.run(FORWARD);
    motor_left.run(FORWARD);
    Serial.println("Vooruit");
  }
  if (backward == HIGH) {
    motor_right.run(BACKWARD);
    motor_left.run(BACKWARD);
    Serial.println("Achteruit");
  }
  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);
}

Foto's en Video's

Meerdere afbeeldingen van het gebouwde robot en schakelingen beschikbaar op de projectpagina.

Productieproces

  1. Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
  2. Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
  3. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  4. Bouw Een Autonome Lijnvolgende Robot Met Arduino UNO
  5. Bouw een eenvoudige rekenmachine met Arduino UNO – Makkelijk project
  6. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  7. Bouw een Stemgecontroleerde Robot met Arduino Nano
  8. Een draagbaar Persistence-of-Vision-display bouwen met Arduino UNO en ATtiny85
  9. Arduino Uno & Bluetooth voor afstandsbediening van auto: stap-voor-stap handleiding
  10. Arduino robotarm besturen via speciale Android-app
  11. 25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test