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

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Komponen dan Perlengkapan

Arduino UNO1
Arduino Nano R31
Penerima Penerima RF-4331
Pengode dan Dekoder HT121
Adafruit Akselerometer Analog: ADXL3351
Motor Shield untuk Uno1
Motor DC (umum)1

Alat dan Mesin yang Diperlukan

Pengkol (soldering iron umum)

Tentang Proyek Ini

Robot kontrol gerakan adalah salah satu jenis proyek yang paling umum dibuat oleh hobiis dan mahasiswa untuk memahami dan menerapkan pengetahuan mikrokontroler dalam proyek fisik dan praktis. Konsep di baliknya sederhana: orientasi telapak tangan mengontrol gerakan mobil robot. Bagaimana caranya, Anda tanya? Mari kita uraikan.

Untuk pemahaman yang baik, kita akan bergerak dengan memahami peran dan fungsi setiap komponen lalu menggabungkannya untuk mencapai kinerja yang diinginkan.

1. ADXL335 (Akselerometer)

Fungsi akselerometer sederhana: untuk merasakan orientasi pergelangan tangan. Akselerometer mengukur percepatan termasuk percepatan akibat gravitasi 'g' juga. Jadi kita dapat menggunakan akselerometer untuk merasakan orientasi pergelangan tangan dengan mengukur komponen 'g' pada sumbu tertentu ADXL335 seperti yang ditunjukkan pada gambar di bawah:

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Karena kemiringan tangan, sudut sumbu X dan/atau Y terhadap vertikal berubah dan sehingga komponen percepatan 'g' juga bekerja padanya yang dapat diukur dan menunjukkan orientasi tangan.

ADXL335 dapat mengukur hingga 3g percepatan dan dihubungkan dengan Arduino dengan menghubungkan pin sumbunya ke pin Analog Arduino. Akselerometer mengeluarkan nilai tegangan proporsional terhadap percepatan.

Dalam proyek ini, Akselerometer terhubung dengan Arduino Nano dan dipasang di telapak tangan. ADXL335 mengeluarkan tegangan dalam rentang 0 hingga Vcc (tegangan yang diterapkan biasanya 3.3V) dan dibaca oleh pin Analog Arduino. Jadi untuk pengguna, kita mendapatkan nilai dalam rentang 0 hingga 1024 (ADC 10-bit). Orientasi yang berbeda menghasilkan nilai analog yang berbeda untuk setiap sumbu yang kemudian dipetakan ke gerakan robot yang berbeda.

Diagram rangkaian untuk Akselerometer adalah:

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Kode uji untuk memahami cara kerja ADXL335 adalah sebagai berikut:

void setup() {
  pinMode(A0, INPUT); // sumbu x terhubung ke pin A0
  pinMode(A1, INPUT); // sumbu y terhubung ke pin A1
  pinMode(A2, INPUT); // sumbu z terhubung ke pin A2
  Serial.begin(9600); // untuk mencetak data ke Serial Monitor
}
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);
}

Anda dapat menjalankan program ini untuk melihat nilai apa yang Anda dapatkan untuk kemiringan telapak tangan dan pergelangan tangan ke depan, belakang, kiri dan kanan yang akan digunakan akhirnya untuk mengontrol robot.

2. Penerima Penerima RF-433

Fungsi modul RF sederhana: untuk mentransmisikan data perintah dari Arduino Nano di pergelangan tangan ke Arduino Uno yang mengontrol motor. Modul RF menggunakan gelombang radio pada frekuensi 433hz dan demikian nama RF-433. Mereka menggunakan Modulasi Amplitudo untuk mengirim data, tetapi tanpa masuk ke banyak teknikalitas dan menjaga hal-hal sederhana, mereka akan digunakan untuk mentransmisikan perintah ke robot, yaitu: bergerak ke depan, belakang, kanan atau kiri. Dan dalam kasus tidak ada data, diam saja. Mereka bekerja baik hingga jarak 10 meter.

Sekarang untuk memahami cara mengimplementasikan modul RF dalam proyek kita, mari kita bekerja pada rangkaian pemirim dan penerima secara berurutan.

Rangkaian Pemirim

Rangkaian pemirim terdiri dari dua bagian: Pemirim RF dan Pengode HT12E. Pemirim terdiri dari satu pin data, satu antena, satu ground dan daya. Tugas pengode HT12E adalah untuk menyediakan data ke pemirim. Pengode terdiri dari 4 pin data yang datanya dapat dikirim. Kami akan menggunakan 4 pin data ini untuk mewakili empat gerakan, HIGH pada pin ini secara individu akan mewakili salah satu dari empat gerakan dan LOW pada semua mewakili diam.

Diagram rangkaian adalah seperti ditunjukkan:

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Pin kiri (A0-A7) adalah pin alamat dan menentukan pasangan yang akan bertukar data (Pemirim dan Penerima yang memiliki alamat sama hanya akan berbagi data). Kami akan mengatur A0-A7 sebagai LOW (Grounded).

Pin Data In terhubung ke pin digital Arduino (dalam proyek ini 6 hingga 9) dan mereka akan mengeluarkan data perintah sebagai berikut:

Pin Digital Perintah (Saat HIGH)

9 Maju

10 Mundur

11 Kiri

12 Kanan

Kami akan digitalWrite pin digital sebagai HIGH berdasarkan input dari ADXL335 untuk melakukan gerakan yang diperlukan.

Rangkaian Penerima

Rangkaian penerima sepenuhnya mirip dengan rangkaian pemirim seperti ditunjukkan, tetapi alih-alih pin data menjadi output dari Arduino, dalam hal ini mereka akan dibaca sebagai input untuk menerima perintah untuk Arduino Uno dan menjalankan motor sesuai kebutuhan:

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Untuk menyederhanakan, Anda dapat menghubungkan LED secara seri di pin 17 dengan resistor 1K alih-alih rangkaian kompleks seperti yang ditunjukkan untuk menunjukkan koneksi yang benar dengan pemirim.

3. MOTOR SHIELD

Motor shield adalah bagian termudah untuk ditangani karena ketersediaan library AFMotor dari Adafruit, link: https://github.com/adafruit/Adafruit-Motor-Shield-library

Unduh dan salin library ke folder library Arduino agar dapat menyertakannya dalam sketsa program.

Contoh library AFMotor adalah sebagai berikut:

#include <AFMotor.h>
AF_DCMotor motor(4); // Sambungkan kabel motor ke titik Motor 4 pada shield
void setup() {
  Serial.begin(9600); // atur library Serial pada 9600 bps
  Serial.println("Motor test!"); // nyalakan motor
  motor.setSpeed(200);
  motor.run(RELEASE);
}
void loop() {
  uint8_t i;
  Serial.print("tick");
  motor.run(FORWARD);
  for (i = 0; i < 255; i++) {
    motor.setSpeed(i);
    delay(10);
  }
  for (i = 255; i != 0; i--) {
    motor.setSpeed(i);
    delay(10);
  }
  Serial.print("tock");
  motor.run(BACKWARD);
  for (i = 0; i < 255; i++) {
    motor.setSpeed(i);
    delay(10);
  }
  for (i = 255; i != 0; i--) {
    motor.setSpeed(i);
    delay(10);
  }
  Serial.print("tech");
  motor.run(RELEASE);
  delay(1000);
}

4. Menggabungkan Semua

Bagian terakhir dan akhir mencakup menggabungkan semua bagian di atas untuk membentuk robot lengkap yang mengikuti perintah tangan!

Karena motor shield menggunakan hampir semua pin digital, kita akan menggunakan pin analog Arduino Uno untuk membaca Data Penerima. Diagram Rangkaian Akhir adalah sebagai berikut:

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Motor shield menangani koneksi ke motor. Hubungkan baterai 9V ke input daya shield.

CATATAN: Saya pribadi lebih suka menghubungkan 2 atau bahkan 3 baterai 9V secara paralel ke input daya shield untuk memberikan cukup daya untuk menjalankan keempat motor. Saya telah menghubungkan keempat motor dalam kelompok 2 (motor dengan sisi yang sama terhubung secara paralel bersama-sama dan demikian hanya memerlukan titik motor 3 dan 4 untuk berjalan).

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Kode Akhir

Untuk Arduino Nano:

int x_axis = 0;
int y_axis = 0;
int forward = 9;
int backward = 10;
int right = 11;
int left = 12;
void setup() {
  pinMode(A0, INPUT); // Sumbu X
  pinMode(A3, OUTPUT); // Sumbu Y
  pinMode(forward, OUTPUT); // HIGH untuk Bergerak Maju
  pinMode(backward, OUTPUT); // HIGH untuk Bergerak Mundur
  pinMode(right, OUTPUT); // HIGH untuk Bergerak Kanan
  pinMode(left, OUTPUT); // HIGH untuk Bergerak Kiri
  Serial.begin(9600);
}
void loop() {
  x_axis = analogRead(A0);
  y_axis = analogRead(A3);
  Serial.print(" X = ");
  Serial.println(x_axis);
  Serial.print(" Y = ");
  Serial.println(y_axis);
  if (y_axis >= 390) {
    Serial.println("Maju");
    digitalWrite(forward, HIGH);
  } else {
    if (y_axis <= 310) {
      Serial.println("MUNDUR");
      digitalWrite(backward, HIGH);
    } else {
      if (x_axis >= 380) {
        Serial.println("KANAN");
        digitalWrite(right, HIGH);
      } else {
        if (x_axis <= 320) {
          Serial.println("KIRI");
          digitalWrite(left, HIGH);
        }
        Serial.println(" ");
      }
    }
  }
  delay(200);
  if (x_axis > 320 && x_axis < 380 && y_axis > 310 && y_axis < 390) {
    digitalWrite(forward, LOW);
    digitalWrite(backward, LOW);
    digitalWrite(right, LOW);
    digitalWrite(left, LOW);
  }
}

Untuk Arduino Uno:

#include<AFMotor.h>
AF_DCMotor motor_right(3);
AF_DCMotor motor_left(4);
int forward = 0;
int backward = 0;
int right = 0;
int left = 0;
void setup() {
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  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("Maju");
  }
  if (backward == HIGH) {
    motor_right.run(BACKWARD);
    motor_left.run(BACKWARD);
    Serial.println("Mundur");
  }
  if (right == HIGH) {
    motor_right.run(FORWARD);
    motor_left.run(RELEASE);
    Serial.println("KANAN");
  }
  if (left == HIGH) {
    motor_right.run(RELEASE);
    motor_left.run(FORWARD);
    Serial.println("KIRI");
  }
  if (left == LOW && right == LOW && forward == LOW && backward == LOW) {
    motor_right.run(RELEASE);
    motor_left.run(RELEASE);
  }
  delay(100);
}

Foto dan video tersedia di bawah ini:

Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri
Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri
Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri
Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri
Proyek Robot Dikontrol Gerakan: Bangun Robot Sensor Gerakan Sendiri

Proses manufaktur

  1. Bangun Tabung Pintar: Kendalikan Penerima Koin dengan Arduino Nano
  2. Pusat Kontrol Daya Arduino: Kit N-FET, P-FET, Relay & RTC
  3. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  4. Buat Robot Pengikuti Garis Otonom dengan Arduino UNO
  5. Buat Kalkulator Dasar dengan Arduino UNO – Proyek Mudah
  6. Pengontrol Kelembapan Arduino DIY dengan Relay – Pengaturan Tegangan Tinggi yang Aman
  7. Membangun Robot Kendali Suara dengan Arduino Nano
  8. Membuat Tampilan Persistence of Vision Portabel dengan Arduino UNO dan ATtiny85
  9. Kendali Jarak Jauh Mobil Menggunakan Arduino Uno & Bluetooth: Panduan Langkah demi Langkah
  10. Kontrol Kipas PWM 4 Pin 25 kHz dengan Arduino Uno – Bangun, Kode & Uji