Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino

Komponen dan Perlengkapan

Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino
Arduino Mega 2560
× 1
Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino
Baterai 9V (Generic)
× 1
Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino
Sensor Ultrasonik SparkFun - HC-SR04
× 1
Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino
Motor Servo Mikro SG90
× 5

Tentang Proyek Ini

Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino

Baby Dino adalah robot dua kaki berbasis Arduino. Dasarnya menggunakan lima motor servo, dua untuk setiap kaki dan satu untuk kepala. Robot ini juga menggunakan sensor ultrasonik untuk mendeteksi dan menghindari halangan. Sekarang, mari kita lihat cara membuatnya!

Langkah 1: Pengantar

Langkah 2: Komponen yang Diperlukan

Langkah 3: Memasang Servo

fix.ino

Langkah 4: Desain

Langkah 5: Langkah Terakhir

Selesai!

uBipedino.ino

Kode

fix.inoArduino
#include <Servo.h> Servo s1; Servo s2; Servo s3; Servo s4; Servo s5; void setup() { s1.attach(8); s2.attach(9); s3.attach(10); s4.attach(11); s5.attach(12); } void loop() { s1.write(90); s2.write(90); s3.write(90); s4.write(90); s5.write(90); } 
bipedArduino
edit pin servo dan ultrasonic sesuai keinginan Anda
#include <Servo.h> #include <NewPing.h> // edit the pin according to your connection #define IRsensorPin 13// if you are using ir sensor insted of ultrasonic sensor #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. #define LEFTLEG 7 #define RIGHTLEG 10 #define LEFTFOOT 8 #define RIGHTFOOT 9 #define HEAD 6 #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. Servo Lleg; // create servo object to control a servo Servo Rleg; Servo Lfoot; Servo Rfoot; Servo Head; int Hcenter = 70; // variable to store the center servo position int RLcenter = 100; int RFcenter = 65; // variable to store the center servo position int LLcenter = 90; int LFcenter = 75; int tAngle = 30; // tilt angle int uAngle = 35; // turn angle int sAngle = 35; // swing angle int hAngle = Hcenter; void Forward(byte Steps, byte Speed){ Serial.println("Forward"); TiltRightUp(tAngle, Speed); for (byte j=0; j<Steps; ++j){ SwingRight(sAngle, Speed); TiltRightDown(tAngle, Speed); TiltLeftUp(tAngle, Speed); SwingRcenter(sAngle, Speed); SwingLeft(sAngle, Speed); TiltLeftDown(tAngle, Speed); TiltRightUp(tAngle, Speed); SwingLcenter(sAngle, Speed); } TiltRightDown(tAngle, Speed); } void TurnLeft(byte Steps, byte Speed){ Serial.println("TurnLeft"); TiltLeftUp(uAngle, Speed); delay(20); for (byte j=0; j<Steps; ++j){ LeftLegIn(sAngle, Speed); TiltLeftDown(uAngle, Speed); TiltRightUp(uAngle, Speed); delay(20); LeftLegIcenter(sAngle, Speed); RightLegOut(sAngle, Speed); TiltRightDown(uAngle, Speed); TiltLeftUp(uAngle, Speed); delay(20); RightLegOcenter(sAngle, Speed); } TiltLeftDown(uAngle, Speed); } void TurnRight(byte Stps, byte Speed){ Serial.println("TurnRight"); TiltRightUp(uAngle, Speed); delay(20); for (byte f=0; f<=Stps; ++f){ RightLegIn(sAngle, Speed); TiltRightDown(uAngle, Speed); TiltLeftUp(uAngle, Speed); delay(20); RightLegIcenter(sAngle, Speed); LeftLegOut(sAngle, Speed); TiltLeftDown(uAngle, Speed); TiltRightUp(uAngle, Speed); delay(20); LeftLegOcenter(sAngle, Speed); } TiltRightDown(uAngle, Speed); } void HeadRight() { Serial.println("HeadRight"); Head.write(Hcenter - 105); delay(1000); } void HeadLeft() { Serial.println("HeadLeft"); Head.write(Hcenter + 105); delay(1000); } void HeadCenter() { Serial.println("HeadCenter"); Head.write(Hcenter); delay(1000); } void TiltRightUp(byte ang, byte sp){ //tilt right up for (int i=0; i<=ang; i+=5){ Lfoot.write(LFcenter+i); Rfoot.write(RFcenter+i); delay(sp); } } void TiltRightDown(byte ang, byte sp){ //tilt right down for (int i=ang; i>0; i-=5){ Lfoot.write(LFcenter+i); Rfoot.write(RFcenter+i); delay(sp); } } void TiltLeftUp(byte ang, byte sp){ //tilt left up for (int i=0; i<=ang; i+=5){ Lfoot.write(LFcenter-i); Rfoot.write(RFcenter-i); delay(sp); } } void TiltLeftDown(byte ang, byte sp){ //tilt left down for (int i=ang; i>0; i-=5){ Lfoot.write(LFcenter-i); Rfoot.write(RFcenter-i); delay(sp); } } void LeftFootUp(char ang, byte sp){ //tilt left up for (int i=0; i<=ang; i+=5){ Lfoot.write(LFcenter-i); delay(sp); } } void LeftFootDown(byte ang, byte sp){ //tilt left down for (int i=ang; i>0; i-=5){ Lfoot.write(LFcenter-i); delay(sp); } } void RightFootUp(byte ang, byte sp){ //tilt right up for (int i=0; i<=ang; i+=5){ Rfoot.write(RFcenter+i); delay(sp); } } void RightFootDown(byte ang, byte sp){ //tilt right down for (int i=ang; i>0; i-=5){ Rfoot.write(RFcenter+i); delay(sp); } } void SwingRight(byte ang, byte sp){ //swing right for (int i=0; i<=ang; i+=5){ Lleg.write(LLcenter-i); Rleg.write(RLcenter-i); delay(sp); } } void SwingRcenter(byte ang, byte sp){ //swing r->center for (int i=ang; i>0; i-=5){ Lleg.write(LLcenter-i); Rleg.write(RLcenter-i); delay(sp); } } void SwingLeft(byte ang, byte sp){ //swing left for (byte i=0; i<=ang; i=i+5){ Lleg.write(LLcenter+i); Rleg.write(RLcenter+i); delay(sp); } } void SwingLcenter(byte ang, byte sp){ //swing l->center for (byte i=ang; i>0; i=i-5){ Lleg.write(LLcenter+i); Rleg.write(RLcenter+i); delay(sp); } } void RightLegIn(byte ang, byte sp){ //swing right for (int i=0; i<=ang; i+=5){ Rleg.write(RLcenter-i); delay(sp); } } void RightLegIcenter(byte ang, byte sp){ //swing r->center for (int i=ang; i>0; i-=5){ Rleg.write(RLcenter-i); delay(sp); } } void RightLegOut(byte ang, byte sp){ //swing right for (int i=0; i<=ang; i+=5){ Rleg.write(RLcenter+i); delay(sp); } } void RightLegOcenter(byte ang, byte sp){ //swing r->center for (int i=ang; i>0; i-=5){ Rleg.write(RLcenter+i); delay(sp); } } void LeftLegIn(byte ang, byte sp){ //swing left for (byte i=0; i<=ang; i=i+5){ Lleg.write(LLcenter+i); delay(sp); } } void LeftLegIcenter(byte ang, byte sp){ //swing l->center for (byte i=ang; i>0; i=i-5){ Lleg.write(LLcenter+i); delay(sp); } } void LeftLegOut(byte ang, byte sp){ //swing left for (byte i=0; i<=ang; i=i+5){ Lleg.write(LLcenter-i); delay(sp); } } void LeftLegOcenter(byte ang, byte sp){ //swing l->center for (byte i=ang; i>0; i=i-5){ Lleg.write(LLcenter-i); delay(sp); } } void setup() { Serial.begin(19200); Serial.println("Bipedino setup is running."); Lleg.attach(LEFTLEG); Rleg.attach(RIGHTLEG); Lfoot.attach(LEFTFOOT); Rfoot.attach(RIGHTFOOT); Head.attach(HEAD); CenterServos(); delay(500); for (int i = 0; i < 5; ++i) { GetSonar(); delay(1000); } Serial.println("Bipedino is ready."); } // setup() void loop() { unsigned int cmCenter = MAX_DISTANCE; unsigned int cmLeft = MAX_DISTANCE; unsigned int cmRight = MAX_DISTANCE; HeadCenter(); cmCenter = GetSonar(); if (cmCenter < 20) { HeadRight(); cmRight = GetSonar(); HeadCenter(); if (cmRight > 20) { TurnRight(1, 30); } else { HeadLeft(); cmLeft = GetSonar(); HeadCenter(); if (cmLeft > 20) { TurnLeft(1, 30); } } } else { int nSteps = cmCenter / 5; if (nSteps > 5) { nSteps = 5; } else { nSteps = 1; } Serial.print("Steps <"); Serial.print(nSteps); Serial.println(">"); for (int n = 0; n < nSteps; n++) { Forward(1, 30); } } } // loop() int GetSonar() { unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS). Serial.print("Ping: "); Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance and print result (0 = outside set distance range, no ping echo) Serial.println("cm"); return uS / US_ROUNDTRIP_CM; } // GetSonar() void CenterServos() { Lleg.write(LLcenter); // tell servo to go to position in variable 'center' Rleg.write(RLcenter); // tell servo to go to position in variable 'center' Lfoot.write(LFcenter); // tell servo to go to position in variable 'center' Rfoot.write(RFcenter); // tell servo to go to position in variable 'center' Head.write(Hcenter); // tell servo to go to position in variable 'center' delay(1000); // waits 100ms for the servos to reach the position } // CenterServos() 

Bagian Khusus dan Enclosure

Skematik

Membuat Robot Arduino Dua Kaki: Panduan DIY Baby Dino

Proses manufaktur

  1. Pelan Bayi: Desain, Standar Keselamatan, dan Wawasan Manufaktur
  2. Pembawa Bayi: Sejarah, Desain, dan Keamanan Pembawa Bayi
  3. Ilmu dan Pasar Pemutih Bayi: Bahan, Manufaktur, dan Tren Masa Depan
  4. Asi Bayi: Ilmu, Produksi, dan Prospek Masa Depan
  5. Evolusi dan Manufaktur Stroller Bayi: Dari Papan Tempur hingga Pram Modern
  6. Membuat Spybot Arduino yang Dikontrol melalui Bluetooth
  7. FlickMote: Remote IR Kendali Gestur untuk Rumah Cerdas
  8. DIY Arduino TV B-Gone: Remote Universal untuk Semua TV
  9. Bangun Jam Master LED Kustom dengan Alarm – Terlihat dari Jarak 12 Meter
  10. Robot Penghindar Halangan Direnkai Servo: Bangun dengan Arduino & HC-SR04