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

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt

Komponenten und Zubehör

Komponente Menge Hinweis
Arduino UNO 1 Servo-Steuerung
Servomotor 3 3 Achsen (Yaw, Pitch, Roll)
Android-Gerät 1 Sensorquelle (Neigungssensor)
Geregelte Stromversorgungsplatine (12V, 5V, 3,3V) 1 Stabile Versorgung für Servos & Arduino

Benötigte Werkzeuge

Apps und Online-Dienste

Projektbeschreibung

Neues, günstiges Robotik-Projekt geplant. Servos & Teile waren früher zu teuer – jetzt 4 Servos für nur 13 $. LinkIt ONE Board und Arduino UNO bereits vorhanden.

Ziel: Roboterkopf, der wie ein menschlicher Kopf in allen 3 Achsen bewegt wird – günstig. Verschiedene Sensoren/Methoden evaluiert, letztlich Lösung mit vorhandenen Teilen gefunden. Kursiv markierte Begriffe = Lerneffekte während des Projekts.

Smartphone-Neigungssensor (Tilt-Sensor) steuert den Kopf.

Schritt 1: Benötigte Materialien

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt

Verwendete Materialien:

  1. Arduino UNO
  2. LinkIt ONE Board
  3. 3 Servomotoren
  4. SensoDuino (kostenlose Android-App, Download verfügbar)
  5. Geregelte Stromversorgungsplatine (12V, 5V, 3,3V)
  6. Lochrasterplatine
  7. PCB-Steckerleisten (Male)
  8. Aluminium-Profilreststück
  9. Heißklebepistole
  10. 12V & 5V Netzteil
  11. Dekomaterial

Warum LinkIt ONE UND Arduino UNO?

Schritt 2: Eigenes Servo-Shield

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Servo-Shield für Arduino bauen (Achtung: LinkIt ONE hat nur 2 PWM-Pins bei 3V-Servos).
  2. Lochrasterplatine als Shield ausgeführt.
  3. Steuerung von 6 Servos über Arduino-Pins 3, 5, 6, 9, 10, 11 möglich.
  4. 3-Leiter-Servos, Stromversorgung extern über 5V-Reglerplatine.
  5. Wichtig: Arduino über Netzteil versorgen, nicht USB! USB-Strom verursacht Vibrationen → Servo-Überhitzung & Schaden (ein Servo zerstört).

Schritt 3: LinkIt ONE Verbindung

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. LinkIt ONE muss mit Arduino kommunizieren (Servos steuern).
  2. TX (LinkIt ONE) → RX (Arduino) + gemeinsame GND.
  3. Empfangene Daten werden an Arduino weitergeleitet.

Hinweis: Mit Arduino Bluetooth-Shield entfällt LinkIt ONE.

Schritt 4: Servo-Nullposition

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Alle Servos auf 90° stellen. Code Servoposition.ino auf Arduino laden.
  2. Servo-Strom & Arduino-Strom an Reglerplatine (5V/12V).
  3. Servos an PCB-Stecker (Pins 3, 5, 6) anschließen.
  4. 12V-Netzteil an Reglerplatine → einschalten.
  5. Alle Motoren fahren auf 90°.
  6. Servos abziehen, mechanisch verbinden (ohne Rotor zu verdrehen).

Code: Servoposition.ino (siehe Code-Sektion).

Schritt 5: Mechanik planen

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Kopf dreht in 3 Achsen: X, Y, Z.
  2. Rotationen: Yaw (Links/Rechts), Pitch (Hoch/Runter), Roll (Seitenneigung).
  3. Doppelseitiges Klebeband für provisorische Servo-Positionierung.
  4. Aluminium-Profil zu L-Winkel biegen (oberer Servo → zweiter Servo).
  5. Servo-Hörner nach Plan montieren.
  6. Alle Servo-Mitten bei 90° gerade ausgerichtet.
  7. Alles mit Klebeband fixieren, Bewegungsfreiheit prüfen (keine Kollisionen).

Schritt 6: Endmontage

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Klebeband einzeln entfernen, endgültig mit Heißkleber fixieren.
  2. Servos nicht beschädigen.
  3. Servo-Stecker an Arduino, Versorgung einschalten.
  4. Prüfen: Alle stehen gerade (wie letztes Bild).

Schritt 7: Android-App (SensoDuino) einrichten

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. SensoDuino öffnen – listet alle Smartphone-Sensoren, kann Daten per Bluetooth senden.
  2. Nur verfügbare Sensoren wählbar.
  3. Menü → Connect Bluetooth.
  4. LinkIt ONE Bluetooth auswählen.
  5. Für Projekt: Orientierungssensor → erste Box an (aktiv), zweite Box an (Daten per BT senden).
  6. Menü → Performance → Messintervall einstellen (z. B. 100 ms).

Schritt 8: Programmierung

Zwei Codes: LinkIt ONE (Bluetooth → Serial an Arduino) & Arduino (Serial → Servos).

Funktionsweise:

  1. Orientierungssensor steuert Roboterkopf wie menschlichen Kopf.
  2. Yaw: 0–360° (magnetisch). Nutzung: 90–270°, wobei 180° = Servo-Mitte (90°). Handy bei 180° tragen (z. B. an Kappe).
  3. Pitch: -180° bis +180° (vorne hoch/runter). Nutzung: -90° bis +90°.
  4. Roll: 0→90→0→-90→0 (Seitenneigung). Nutzung: -90° bis +90°.

Codes: Linkitonehead.ino (LinkIt ONE), Arduinohead.ino (Arduino). Bei Bluetooth-Shield: Arduino-Code anpassen.

Schritt 9: Boards stapeln

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Beide Shields auf Mikrocontroller stecken.
  2. Mit Doppelseitigem Klebeband übereinander kleben.
  3. Keine Kurzschlüsse!

Schritt 10: Hand-Test

Alle Versorgungen an, Handy in Hand. Sich in Yaw-Richtung 180° drehen, Handy bewegt → alle 3 Servos folgen.

Schritt 11: Gesicht befestigen

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Weihnachtszeit → viele Weihnachtsmann-Puppen. Eine kaufen.
  2. Puppenkopf mit Doppelseitigem Klebeband auf oberen Servo-Hebel kleben.

Schritt 12: Steuer-Hut bauen

Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
Menschenkopf zum Roboter-Kopf: Arduino-gesteuertes DIY-Projekt
  1. Normale Mütze nehmen.
  2. Doppelseitiges Klebeband auf Vorderseite.
  3. Smartphone darauf kleben.

Schritt 13: Test-Video (Low Performance)

Sensorkrate: 250 ms (4 Hz).

Schritt 14: Finales Video (High Performance)

Sensorkrate: 100 ms (10 Hz).

Code

Servoposition.ino

#include <Servo.h>
Servo leftright;  // Yaw
Servo updown;     // Pitch
Servo shake;      // Roll

void setup() {
  Serial.begin(9600);
  leftright.attach(3);
  updown.attach(5);
  shake.attach(6);
  leftright.write(90);
  updown.write(90);
  shake.write(90);
}
void loop() {}

Linkitonehead.ino

#include <LBT.h>
#include <LBTServer.h>

int readval;
String inputString = "";
String outputString = "";
int firstpoint=0, secondpoint=0;

void setup() {
  if(!LBTServer.begin((uint8_t*)"Sivam_LIO")) return;
  Serial1.begin(9600); // Hardware Serial an Arduino
}

void loop() {
  uint8_t buf[64];
  int bytesRead;
  if(LBTServer.connected()) {
    while(true) {
      bytesRead = LBTServer.readBytes(buf, 32);
      if(!bytesRead) break;
      inputString = "";
      for(int j=0;j<32;j++) {
        char inChar = char(buf[j]);
        inputString += inChar;
      }
      Serial1.println(inputString); // An Arduino senden
    }
    delay(100);
  } else {
    LBTServer.accept(5); // Auf Verbindung warten
  }
}

Arduinohead.ino

#include <Servo.h>
Servo leftright;  // Yaw (Pin 3)
Servo updown;     // Pitch (Pin 5)
Servo shake;      // Roll (Pin 6)

String inputString = "";
boolean stringComplete = false;
String teststr2, sensorid, sensorrecid, sensorval1, sensorval2, sensorval3;
int S1, S2, S3, rot1, rot2, rot3;
int startchr=0, endchr=0;

void setup() {
  Serial.begin(9600);
  leftright.attach(3);
  updown.attach(5);
  shake.attach(6);
}

void loop() {}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    if (inChar != '\n') inputString += inChar;
  }
  
  startchr = inputString.indexOf('>');
  if (startchr >= 0) {
    endchr = inputString.indexOf('>', startchr+1);
    if (endchr > 0) {
      teststr2 = inputString.substring(startchr, endchr);
      inputString = inputString.substring(endchr);
      
      // Parsing: >sensorid,recid,val1,val2,val3>
      startchr = teststr2.indexOf(',');
      sensorid = teststr2.substring(1, startchr);
      endchr = teststr2.indexOf(',', startchr+1);
      sensorrecid = teststr2.substring(startchr+1, endchr);
      startchr = endchr;
      endchr = teststr2.indexOf(',', startchr+1);
      sensorval1 = teststr2.substring(startchr+1, endchr);
      startchr = endchr;
      endchr = teststr2.indexOf(',', startchr+1);
      sensorval2 = teststr2.substring(startchr+1, endchr);
      startchr = endchr;
      sensorval3 = teststr2.substring(startchr+1);
      
      S1 = sensorval1.toInt(); // Yaw 90-270
      S2 = sensorval2.toInt(); // Pitch -90 bis +90
      S3 = sensorval3.toInt(); // Roll 90 bis -90
      
      // Mapping auf Servo 0-180
      rot1 = map(S1, 90, 270, 180, 0);  // Yaw umgekehrt
      rot1 = constrain(rot1, 0, 180);
      
      rot2 = map(S2, -90, 90, 0, 180);  // Pitch
      rot2 = constrain(rot2, 0, 180);
      
      rot3 = map(S3, 90, -90, 0, 180);  // Roll umgekehrt
      rot3 = constrain(rot3, 0, 180);
      
      // Servos ansteuern (nur bei gültigen Werten)
      if (rot1 != 0 && rot1 != 180) leftright.write(rot1);
      if (rot2 != 0 && rot2 != 180) updown.write(rot2);
      if (rot3 != 0 && rot3 != 180) shake.write(rot3);
      
      delay(15); // Servo-Settling
    }
  }
}

Herstellungsprozess

  1. DIY Wall-E-inspirierter Raspberry Pi CD-Box-Roboter
  2. Rolling Alarm Robot: Intelligentes, mobiles Wecksystem mit Raspberry Pi und Google Kalender
  3. RasPiRobot Board V2: Raspberry Pi zum leistungsstarken Roboter-Controller erweitern
  4. Einen motorisierten Minecraft-Creeper-Roboter mit Arduino bauen
  5. Archimedes: Der emotionserkennende KI-Roboter-Eule
  6. Sprachgesteuerter Computer-Vision-Roboter auf Windows 10 IoT Core bauen
  7. ROS Roboter: Terminal-gesteuerte Navigation auf Raspberry Pi
  8. Microsoft Kinect mit Raspberry Pi integrieren für Echtzeit-Menschenerkennung am Sonbi Roboter
  9. Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
  10. Der wahre Wert: Humankapital im Fertigungsbetrieb