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

Buat Robot Arduino Pertama Anda: Panduan Lengkap untuk Pemula

Tentang Proyek Ini

Jika Anda pemula di Arduino dan berencana membuat robot pertama Anda, maka inilah tutorial untuk Anda. Lihat gambar dari apa yang akan Anda bangun, hari ini.

Dalam tutorial ini, saya akan menunjukkan cara membuat robot Arduino dengan berbagai fungsi. Kita dapat mempelajari penggunaan berbagai program untuk berbagai fungsi, terutama robot yang dikontrol ponsel pintar dengan penghindar rintangan, pengikut dinding, dan penyelesaian labirin. Atau Anda juga dapat membuatnya hanya untuk satu fungsi saja.

Bahan dan Alat

Berikut adalah komponen yang dibutuhkan:

Langkah 2: Membuat Chassis

Buat dua lubang untuk motor. Hubungkan dua motor. Buat tiga lubang untuk roda pelindung. Hubungkan roda pelindung. Buat dua lubang di setiap sisi kotak untuk menghubungkan motor dan tiga lubang di bawah untuk menghubungkan roda pelindung setelah mengukur dan menandai diameter yang benar. Kemudian pasang motor dan roda pelindung.

Baterai

Hubungkan baterai. Tempelkan baterai di dalam kotak di atas roda pelindung. Kemudian sambungkan secara paralel dan hubungkan saklar seperti yang ditunjukkan dalam diagram di atas.

Menghubungkan Arduino dan Motor Shield

Pasang motor shield di atas Arduino. Hubungkan kabel baterai ke terminal PWR motor shield. Hubungkan motor ke motor shield. Lepaskan jumper dari port ini. Pasang motor shield di atas Arduino dan letakkan di atas baterai. Kemudian sambungkan kabel dari motor dan baterai ke motor shield. Periksa diagram koneksi sebelum menghubungkan, karena ini sangat penting.

Instruksi kabeling:

Buat Dua Lubang dan Aktifkan Arduino

Tandai tempat untuk membuat lubang. Buat lubang. Hubungkan klips baterai ke jack DC macho ke baterai 9V. Letakkan baterai 9 volt ini di dalam kotak. Buat dua lubang untuk mengakses port USB dan port input DC Arduino. Ambil baterai 9 volt lain dan sambungkan klips baterai ke adaptor jack DC macho, lalu sambungkan jack DC macho ke port input DC Arduino, untuk menyala Arduino. Kemudian letakkan baterai di antara motor dan Arduino di dalam kotak.

Menghubungkan Modul Bluetooth dan Saklar

Hubungkan modul Bluetooth ke Arduino seperti yang ditunjukkan dalam diagram koneksi dan letakkan di dalam kotak. Kemudian buat lubang untuk memasang saklar di sisi belakang kotak dan sambungkan saklar.

Instruksi Kabeling Modul Bluetooth:

Diagram Sirkuit Keseluruhan

Pemasangan Sensor Ultrasonik

Ambil sensor ultrasonik dan tempelkan potongan plastik kecil berbentuk 'L' padanya dan tempelkan di atas kotak plastik (atau jika Anda tidak memiliki lem stik, gunakan lem double sided). Kemudian sambungkan kabel jumper seperti yang ditunjukkan dalam diagram sirkuit di atas.

Instruksi Kabeling Sensor Ultrasonik:

Sekarang kami telah menyelesaikan semua koneksi dan saatnya untuk memrogram.

Langkah Terakhir - Kode Arduino dan Pengeditan Aplikasi Bluetooth

Unggah "Final Sketch" yang disediakan di bagian kode. Jika Anda mengalami kesalahan, pastikan Anda telah menginstal perpustakaan AFmotor.

Sekarang, kami telah mempelajari cara memrogram Arduino dengan mudah. Saya telah menunjukkan beberapa program untuk membuat robot ini sebagai robot penghindar rintangan, pengikut dinding, dan dikontrol Bluetooth. Dan akhirnya saya menggabungkan ketiga fungsi ini bersama-sama. Tonton video untuk detail dan informasi lebih lanjut.

Memulai dengan Aplikasi Bluetooth

Beberapa kesenangan dengan Wall Follower & Obstacle Avoidance

Kunjungi blog saya di sini - robotechmaker.com

Jika Anda memiliki pertanyaan atau saran, silakan berkomentar di bawah.

Kode

Bluetooth (Controlled Robot) Sketch

/* Author: Marcelo Moraes */
#include <AFMotor.h>
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);
char dataIn = 'S';
char determinant;
char det;
int vel = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("ArduinoBymyself - ROVERBot");
  Serial.println(" AF Motor test!");
  motorRight.setSpeed(0);
  motorLeft.setSpeed(0);
  motorRight.run(RELEASE);
  motorLeft.run(RELEASE);
}

void loop() {
  det = check();
  switch (det) {
    case 'F': motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det = check(); break;
    case 'B': motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det = check(); break;
    case 'L': motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FORWARD); motorLeft.run(FORWARD); det = check(); break;
    case 'R': motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det = check(); break;
    case 'S': motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det = check(); break;
  }
}

int check() {
  if (Serial.available() > 0) {
    dataIn = Serial.read();
    if (dataIn == 'F') determinant = 'F';
    else if (dataIn == 'B') determinant = 'B';
    else if (dataIn == 'L') determinant = 'L';
    else if (dataIn == 'R') determinant = 'R';
    else if (dataIn == 'S') determinant = 'S';
    else if (dataIn == '0') vel = 0;
    else if (dataIn == '1') vel = 25;
    else if (dataIn == '2') vel = 50;
    else if (dataIn == '3') vel = 75;
    else if (dataIn == '4') vel = 100;
    else if (dataIn == '5') vel = 125;
    else if (dataIn == '6') vel = 150;
    else if (dataIn == '7') vel = 175;
    else if (dataIn == '8') vel = 200;
    else if (dataIn == '9') vel = 225;
    else if (dataIn == 'q') vel = 255;
  }
  return determinant;
}

Final Sketch (Final Code)

/* Author: Muhammed Azhar */
#include <AFMotor.h>
#define trigPin 14
#define echoPin 15
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);
char dataIn = 'S';
char determinant;
char det;
int vel = 255;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.println(" Mr.robot");
  Serial.println(" Reday for working!");
  motorRight.setSpeed(0);
  motorLeft.setSpeed(0);
  motorRight.run(RELEASE);
  motorLeft.run(RELEASE);
}

void loop() {
  det = check();
  switch (det) {
    case 'F': motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det = check(); break;
    case 'B': motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det = check(); break;
    case 'L': motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FORWARD); motorLeft.run(FORWARD); det = check(); break;
    case 'R': motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det = check(); break;
    case 'S': motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det = check(); break;
    case 'm':
      motorRight.setSpeed(vel);
      motorLeft.setSpeed(vel);
      long duration, distance;
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      duration = pulseIn(echoPin, HIGH);
      distance = (duration/2) / 29.1;
      if (distance < 30) {
        motorRight.setSpeed(vel);
        motorLeft.setSpeed(0);
        motorRight.run(FORWARD);
        motorLeft.run(RELEASE);
        delay(500);
      } else {
        motorRight.setSpeed(0);
        motorLeft.setSpeed(vel);
        motorRight.run(RELEASE);
        motorLeft.run(FORWARD);
      }
      break;
    case 'b':
      motorRight.setSpeed(vel);
      motorLeft.setSpeed(vel);
      long Aduration, Adistance;
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      Aduration = pulseIn(echoPin, HIGH);
      Adistance = (Aduration/2) / 29.1;
      if (Adistance < 25) {
        motorRight.setSpeed(vel);
        motorLeft.setSpeed(vel);
        motorLeft.run(BACKWARD);
        motorRight.run(FORWARD);
      } else {
        motorRight.setSpeed(vel);
        motorLeft.setSpeed(vel);
        motorRight.run(FORWARD);
        motorLeft.run(FORWARD);
      }
      break;
  }
}

int check() {
  if (Serial.available() > 0) {
    dataIn = Serial.read();
    if (dataIn == 'F') determinant = 'F';
    else if (dataIn == 'B') determinant = 'B';
    else if (dataIn == 'L') determinant = 'L';
    else if (dataIn == 'R') determinant = 'R';
    else if (dataIn == 'S') determinant = 'S';
    else if (dataIn == '0') vel = 0;
    else if (dataIn == '1') vel = 25;
    else if (dataIn == '2') vel = 50;
    else if (dataIn == '3') vel = 75;
    else if (dataIn == '4') vel = 100;
    else if (dataIn == '5') vel = 125;
    else if (dataIn == '6') vel = 150;
    else if (dataIn == '7') vel = 175;
    else if (dataIn == '8') vel = 200;
    else if (dataIn == '9') vel = 225;
    else if (dataIn == 'b') determinant = 'b';
    else if (dataIn == 'm') determinant = 'm';
  }
  return determinant;
}

Obstacle Avoider Sketch

/* Author: Muhammed Azhar */
#include <AFMotor.h>
#define trigPin 14
#define echoPin 15
int vel = 255;
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.println(" Mr.robot");
  Serial.println(" Reday for working!");
  motorRight.setSpeed(0);
  motorLeft.setSpeed(0);
  motorRight.run(RELEASE);
  motorLeft.run(RELEASE);
}

void loop() {
  motorRight.setSpeed(vel);
  motorLeft.setSpeed(vel);
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance < 25) {
    motorRight.setSpeed(vel);
    motorLeft.setSpeed(vel);
    motorLeft.run(BACKWARD);
    motorRight.run(FORWARD);
  } else {
    motorRight.setSpeed(vel);
    motorLeft.setSpeed(vel);
    motorRight.run(FORWARD);
    motorLeft.run(FORWARD);
  }
}

Wall Follower Sketch

/* Author: Muhammed Azhar */
#include <AFMotor.h>
#define trigPin 14
#define echoPin 15
int vel = 255;
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.println(" Mr.robot");
  Serial.println(" Reday for working!");
  motorRight.setSpeed(0);
  motorLeft.setSpeed(0);
  motorRight.run(RELEASE);
  motorLeft.run(RELEASE);
}

void loop() {
  motorRight.setSpeed(vel);
  motorLeft.setSpeed(vel);
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration / 2) / 29.1;
  if (distance < 30) {
    motorRight.setSpeed(vel);
    motorLeft.setSpeed(0);
    motorRight.run(FORWARD);
    motorLeft.run(RELEASE);
    delay(500);
  } else {
    motorRight.setSpeed(0);
    motorLeft.setSpeed(vel);
    motorRight.run(RELEASE);
    motorLeft.run(FORWARD);
  }
}

Proses manufaktur

  1. Aksesoris Terbaik untuk Melepaskan Potensi Penuh Raspberry Pi
  2. Praktik Terbaik Pelacakan Aset: Membuka Nilai Data Aset Anda
  3. Optimalkan Rantai Pasokan Anda untuk Ketahanan dan Efisiensi Hari Ini
  4. Kit Robot Navigasi Indoor Cerdas untuk Proyek Arduino
  5. Motor Mounts Dijelaskan: Cara Memilih Material Terbaik untuk Kendaraan Anda
  6. Panduan Lengkap Produk Pertanian Industri Primer
  7. Merek Crane Terbaik: Panduan Ahli untuk Profesional Konstruksi
  8. Panduan Pembelian 3D Printer Teratas untuk Bengkel Mesin – Tips & Pilihan Pakar
  9. CNC Wire EDM: Solusi Pemesinan Presisi Terbaik untuk Bengkel Anda
  10. Cara Memilih Mill Drill Ideal untuk Proyek Anda