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

Lengan Robot Arduino DIY – Dikendalikan oleh Gerakan Tangan

Komponen dan persediaan

Arduino UNO
× 1
JLCPCB PCB yang Disesuaikan
× 1
Motor Servo, MG996R
× 6
Paket Baterai 5V
× 1
Perangkat Kontrol Nasional PCA9685 8-Channel 8W 12V FET Driver Proportional Valve Pengontrol dengan Antarmuka I2C
× 1
Modul Bluetooth HC-05
× 2
Papan driver motor SparkFun Stepper A4988
× 1
Motor Stepper NEMA-17
× 1
Breadboard (generik)
× 1
Unit Pengukuran Inersia (IMU) (6 derajat kebebasan)
× 1
Arduino Nano R3
× 1
Sensor Fleksibel
× 1

Alat dan mesin yang diperlukan

Printer 3D (generik)

Tentang proyek ini

Memperkenalkan Lengan Robot DIY yang dikendalikan oleh Gerakan Manusia.

Film Blockbuster seperti Pacific Rim, Avatar, dan Film Sci-Fi lainnya telah mengisyaratkan kemampuan untuk bersinergi dengan Robot – di mana gerakan Anda dapat ditingkatkan dengan bantuan Robot.

Bagaimana jika kita dapat membuat Robot industri yang sama, tetapi dalam skala yang lebih kecil?

Proyek ini adalah upaya untuk mencapainya.

Ini adalah Lengan Robot Arduino yang dapat diprogram atau bahkan dikendalikan oleh Gerakan Tangan.

Tetap setia pada konvensi setelan Iron man, setiap iterasi akan dikenal sebagai Mark. Prototipe ini akan dikenal sebagai MARK 1. Kita dapat mengharapkan lebih banyak iterasi untuk meningkatkan lengan robot asli.

Lihat Tutorial Lengan Robot DIY Lengkap (dikendalikan oleh Gerakan Tangan) Di Sini

Ikhtisar

Dalam tutorial ini, kita akan membuat Robot enam sumbu yang dikendalikan oleh gerakan Tangan menggunakan Sarung Tangan Robot. Dan dengan meniru gerakan alami manusia seperti mencubit, atau memutar pergelangan tangan ke kiri, Anda akan dapat membuka/menutup atau memutar lengan robot ke kiri dan ke kanan. Akibatnya, mengendalikan Lengan Robot secara manual.

Temukan Lebih Detail di artikel asli

Tandai 1 Fitur:

  • Rotasi 6 Sumbu
  • Portabel
  • Kontrol Robot dengan Gerakan Manusia
  • Dapat diprogram untuk menjalankan fungsi dasar
  • Dapat dikontrol secara nirkabel dari jarak jauh
  • Dapat menahan beban 600g (Max Load 1kg)

Daftar Bagian

Lengan Robot sepenuhnya dapat disesuaikan. Anda dapat membeli sendiri atau mencetak 3d Anda sendiri. Jika Anda memilih untuk mencetak 3D, jangan khawatir. Ada daftar Robot berbeda yang menggunakan motor servo, jadi teori yang kami buat masih berlaku.

Untuk proyek ini, prototipe ini (Tanda 1)  akan dicetak 3D karena memberi saya lebih banyak ruang untuk membuat suku cadang khusus.

Lengan Robot: Lengan Robot Cetak Thingiverse 3D (kredit:Wonder Tiger):

  • Bagian 1:Bagian Gripper
  • Bagian 2:Basis dan Meja Putar
  • Bagian 3:Lengan Inti Robot

Anda dapat menemukan informasi lebih lanjut tentang bangunan ini, bersama dengan jenis sekrup dari bagian di atas. Waktu yang dibutuhkan untuk mencetak bisa sampai 40 jam. Namun, ini menghemat biaya untuk membeli Lengan Robot.

Sarung Tangan Robot : File Robotic Glove.STL (kredit:Roman 13)

Sarung Tangan Robot adalah tambahan estetika untuk proyek ini, tetapi Anda juga dapat menggunakan sarung tangan pembangun untuk menerapkan Lengan Robot.

Catatan: untuk tangan yang lebih besar, cetak pada skala 105%

Cara Kerjanya

Secara keseluruhan, kami mengirimkan sinyal (melalui Bluetooth) dari Robotic Glove ke motor servo. Ketika nilai telah diterima, driver servo akan mengirimkan sinyal ke motor servo tertentu yang menggerakkan Lengan Robot.

Sekarang, jika kita menambahkan beberapa servo dan lebih banyak sensor, kita dapat mengontrol setiap Motor. `

Jika kita menganggap Lengan Robot sebagai rangkaian motor servo yang saling berkoordinasi untuk menjalankan suatu fungsi, kita dapat membuat lengan robot yang dikendalikan oleh sarung tangan Robot.

Arduino Sarung Tangan Robot menggunakan sensor untuk berkomunikasi dengan Lengan Robot Arduino dan mengirimkan data untuk memindahkan Servo ke sudut yang diinginkan.

Anda mungkin bertanya-tanya, sensor apa yang digunakan Sarung Tangan Robot?

Untuk MARK 1, kami akan menggunakan Flex Sensors dan accelerometer (MPU6050)

  • Sensor Fleksibel – Berdasarkan derajat kelengkungan potongan plastik ini, hambatan berubah, mempengaruhi arus. Pengukuran ini kemudian digunakan untuk mendeteksi perubahan gerakan tangan.
  • Akselerometer – Untuk gerakan yang lebih alami, akselerometer dapat mendeteksi perubahan pada rotasi lengan dan pergelangan tangan.

Kami menggunakan sensor ini untuk mendeteksi perubahan dalam isyarat. Kami kemudian dapat mengirim nilai tertentu yang dipetakan dari gerakan ke Lengan Robot untuk mengontrol motor servo melalui Bluetooth. Dan Dengan gerakan yang cukup, lengan robot menjadi hidup!

Pemetaan Lengan Robot

Berikut ini merupakan tabel pemetaan nilai yang dikirim ke Lengan Robot oleh Sarung Tangan. Ini dapat ditemukan di Artikel asli. Dengan masing-masing memiliki kunci untuk mencirikan fungsinya. (P – Kelingking, L – Kanan, dll.)

Catatan: Kapital "F" (jari) mewakili arah yang berlawanan dari putaran motor servo

Perakitan Bagian

Lengan Robot – Perakitan

Membeli Lengan Robot bisa sangat mahal. Untuk menjaga lengan robot ini tetap dalam Anggaran, pencetakan 3D Lengan Robot adalah pilihan terbaik.

Ini membantu dalam jangka panjang, karena ada banyak contoh lengan robot cetak 3D yang dapat disesuaikan, misalnya, menambahkan LED, membuat Penjepit dudukan kamera:

Seperti disebutkan sebelumnya, Lengan Robot dimodelkan di sekitar Lengan Robot di Thingyverse. Saya telah memilih contoh ini karena ini adalah desain yang sangat baik yang menyediakan enam sumbu, terdokumentasi dengan baik, dan memiliki kekuatan/kekokohan. Anda dapat mengakses Lengan Robot Wonder Tiger dari daftar Bagian.

Anda juga dapat menemukan remix saya untuk Stand Kamera Lengan Robot. Kami akan membahas ini lebih lanjut di rilis mendatang. Namun, untuk mencetak semua suku cadang, diperlukan waktu setidaknya 40 jam untuk mengumpulkan semua suku cadang.

Anda juga dapat menemukan banyak alternatif Robotic Arm 3D Printed lainnya.

Memperkenalkan motor servo dan Driver

Mengingat bahwa Lengan Robot idealnya merupakan rangkaian motor yang saling berkoordinasi, secara teoritis kita dapat memasang beberapa motor yang semuanya dapat ditenagai oleh Arduino. Dalam proyek ini, kami akan menggunakan Driver Servo PCA9685 untuk memberi daya pada Servo MG966R.

Catatan: Gunakan catu daya eksternal saat menyalakan setiap Motor. Arduino tidak dapat memasok daya yang cukup untuk mengontrol semua motor. Dalam proyek ini, Baterai RC 5V, 2200 mAh digunakan.

Pengkabelan diagram Arduino akan terlihat seperti di bawah ini:

NEMA-17 untuk rotasi dasar

Karena Robot mulai bertambah sedikit beratnya, dan motor servo MG966R tidak cukup kuat untuk memutar Lengan Robot di pangkalan. Untuk memutar Lengan Robot, motor yang lebih kuat daripada motor servo perlu digunakan

Motor Stepper (NEMA-17) dapat digunakan karena presisi dan torsinya yang tinggi, membantu Lengan Robot berputar dengan mulus ke kontrol gerakan.

Driver NEMA-17 dan A4988 digunakan untuk mengontrol arah Motor, dapat dilihat dari diagram di bawah ini:

Dan akhirnya, diagram berikut menunjukkan perakitan diagram pengkabelan akhir dari Lengan Robot lengkap.

Perakitan Sirkuit

Diagram pengkabelan di bawah ini menunjukkan perakitan akhir semua komponen elektronik untuk membuat lengan Robot, termasuk modul Bluetooth. Kami akan membahas proses pengupas di bawah.

Sensor Fleksi Manusia

Sesuai dengan estetika Lengan Robot, Anda dapat mencetak Sarung Tangan Eksoskeleton Cetak 3D untuk digunakan sebagai Sarung Tangan Robot Anda.

Namun, Anda dapat menggunakan Sarung Tangan Pembuat standar untuk membuat prototipe Sarung Tangan Robot. Desain 'Robot Glove Exoskeleton' ini berpadu sempurna dengan desain Lengan Robot.

Sarung Tangan Robot terdiri dari komponen berikut:

  • Sensor Fleksibel –  Berdasarkan tekukan jari, arus berubah yang bisa kita gunakan untuk mengirim sinyal ke Motor
  • Akselerometer (MPU6050 ) – Kita dapat mengontrol Motor dengan memetakan gerakan manusia dari bidang X, Y, Z
  • LED – LED akan menyala ketika kontrol gerakan manusia telah dikirim ke Arduino
  • Modul Bluetooth (HC-05) – Mengirim data ke Penerima Robotic Arm HC-05
  • Arduino Nano – Mikrokontroler akan berfungsi sebagai otak dari Robotic Glove

Diagram berikut bagus untuk menguji sensor fleksibel dan Akselerometer.

Penting: Lengan Robot hanya akan seakurat kontrol Sarung Tangan robot, Jadi ini layak dilakukan dengan benar.

Mengonfigurasi Bluetooth (Master dan Penerima)

Lengan Robot Arduino berkomunikasi melalui Bluetooth menggunakan modul HC-05. Di bawah ini soroti informasi penting.

Modul

Konfigurasi

Sarung Tangan Robot HC-05   Master Lengan Robot HC-05  Budak

Catatan:

Baud Rate ditetapkan pada 4800

Pemrograman Arduino

Anda dapat mengunduh kode berikut di bawah ini:

Catatan: Semua kode uji lainnya dan versi terbaru dapat ditemukan di Arduino Robotic Arm Git Repo

Memprogram Lengan Robot

Kode Lengan Robot memanfaatkan Perpustakaan HCPCA9685 (untuk Driver Servo). Dengan cara ini, kita dapat menyalakan beberapa motor servo, semuanya dikendalikan oleh Arduino. Dalam kode, kita bisa mulai dengan menambahkan library ini dan mendeklarasikan variabel servo.

Variabel berikut digunakan untuk mencari sebelumnya/kenaikan dan mendapatkan posisi Servo saat ini.

* Sertakan library HCPCA9685 */
#include "HCPCA9685.h"
/* Alamat slave I2C untuk perangkat/modul. Untuk HCMODU0097 alamat I2C default
adalah 0x40 */
#define I2CAdd 0x40
/* Buat instance perpustakaan */
HCPCA9685 HCPCA9685(I2CDad);
//posisi parkir awal motor
const int servo_joint_L_parking_pos =60;
//Derajat sensitivitas servo robot - Interval
int servo_joint_L_pos_increment =20;
// Pantau terus nilai posisi motor saat ini
int servo_joint_L_parking_pos_i =servo_joint_L_parking_pos;
//Sudut minimum dan maksimum motor servo
int servo_joint_L_min_pos =10;
int servo_joint_L_max_pos =180;

Inisialisasi Port Serial pada Baud Rate 4800 untuk memulai komunikasi Bluetooth

Serial.begin(4800); // Inisialisasi kecepatan komunikasi default modul Bluetooth 

Di bagian loop(), kami terus memeriksa apakah ada data yang berasal dari sarung tangan robot. Jika benar, kami akan menyimpan data yang masuk dalam variabel 'status'. Dan tergantung pada karakter yang diberikan, kami akan menggunakan ini untuk menggerakkan motor.

Bagian berikut menguraikan kode:

Kode Lengan Robot dapat dilihat sebagai serangkaian motor servo yang bekerja bersama untuk mensimulasikan gerakan manusia. Kodenya sama, dengan Servo digerakkan oleh Driver Servo berdasarkan nilai Bluetooth.

//Mendefinisikan driver servo. 0x40 Alamat adalah Alamat I2C default.
#define I2CAdd 0x40
int response_time =5; //Menerima nilai dari interval Robotic Glove
// Memeriksa apakah data berasal dari port serial

if (Serial.available()> 0) {
state =Serial .Baca(); // Membaca data dari port serial
Serial.print(state); // Mencetak nilai yang dikirim
//Blok kode fungsi motor
}

Berdasarkan 'nilai keadaan' saat ini, Driver servo akan mengirim sinyal ke Motor masing-masing.

Misalnya, jika kita menekuk jari kita. Nilai 'f' akan dikirim oleh sarung tangan robot (melalui Bluetooth) dimana Lengan Robot akan membaca data ini dan memicu fungsi untuk memutar motor servo masing-masing. Proses ini diulang dalam lingkaran tak terbatas.

if (Serial.available()> 0) { // Memeriksa apakah data berasal dari port serial
state =Serial.read(); // Membaca data dari port serial
Serial.print(state); // Mencetak nilai yang dikirim
//Untuk penamaan motor, lihat artikel / tutorial
//Move (Rotasi Basis) Motor Stepper Kiri
if (status ==' S') {
baseRotateLeft();
delay(waktu_respon);
}
}

Catatan: Kode tersebut menerapkan penghentian keras, untuk menghentikan Motor agar tidak melebihi sudut maksimumnya, yang dapat melucuti roda gigi motor.

HPCCA9685.Servo(0, servo_joint_L_parking_pos_i); // Menggerakkan motor servo pada saluran 0 ke sudut yang diinginkan.
//Pindahkan Motor Cakar Ke Bawah
if (status =='f') {
if (servo_joint_3_parking_pos_i HPCCA9685.Servo(4, servo_joint_3_parking_pos_i);
delay(waktu_respon);
Serial.println(servo_joint_3_parking_pos_i);
servo_joint_3_parking_pos_i =servo_joint_3_parking_pos_i}>}
void baseRotateLeft() {
digitalWrite(stepPin, RENDAH); //Putar ke arah berdasarkan TINGGI, RENDAH
delayMicroseconds(stepDelay); //Mengubah kecepatan motor Stepper
}

Jika nilai motor servo kurang dari putaran maksimum, terus berputar. Jika sudah mencapai putaran maksimal 180 derajat, berhentilah.

servo_joint_3_parking_pos_i  

Dimana servo_joint_3_max_pos adalah posisi maksimum Motor.

Catatan: Kode tersebut menerapkan penghentian keras untuk menghentikan Motor agar tidak melebihi sudut maksimumnya, yang dapat melucuti roda gigi motor.

Memprogram Sensor Fleksibel

Kode Lengan Robot dapat ditemukan di GitHub. Jika Anda mengerjakan proyek tersebut, sumbangkan versi Anda sendiri ke Git Repo. Ini akan membantu membangun indeks berbagai versi dan fungsi Lengan Robot.

Kode telah didokumentasikan (Juga tersedia di Git). Namun, kami akan membahas poin-poin utamanya:

Kami akan mendefinisikan lima sensor:

//LED PADA PIN 3
int pinkie_Data =A1;
int finger_Data =A2;
int thumb_Data =A3;
//const int MPU_addr =0x68;
const int MPU2 =0x69, MPU1 =0x68;

Catatan: 0x68 dan 0x69 mewakili Alamat I2C dari 2 Akselerometer MPU6050

//Seberapa sering mengirim nilai ke Lengan Robot
int response_time =1000;

Kode berikut menguraikan Arduino membaca nilai sensor:

// membaca nilai dari Flex Sensors ke Arduino
kelingking =analogRead(pinkie_Data);
finger =analogRead(finger_Data);
thumb =analogRead(thumb_Data);

Baca posisi Akselerometer saat ini:

GetMpuValue1(MPU1);
GetMpuValue2(MPU2);

Mengkalibrasi nilai:

Kode berikut dikalibrasi untuk menemukan batas atas dan bawah Sensor Flex. Untuk mengkalibrasi ulang sarung tangan fleksibel, tekan tombol reset pada Arduino.

if (bool_caliberate ==false ) {
delay(1000);
thumb_high =(thumb * 1.15);
thumb_low =(thumb * 0.9);
finger_high =(finger * 1.03);
finger_low =(finger * 0.8);
kelingking_high =(kelingking * 1.06);
kelingking_low =(kelingking * 0.8);
bool_caliberate =benar;
}

Kami akan terus memeriksa apakah nilai saat ini telah melebihi batas atas atau bawah flex yang ditentukan berdasarkan kalibrasi. Jika sensor flex berada di atas atau di bawah nilai ini, data dikirim ke Lengan Robot untuk menggerakkan motor servo tertentu ke arah tertentu.

// finger 1 - Claw Bend/Open
if (finger>=finger_high) {
Serial.print("F");
delay(response_time);
}
if (jari <=finger_low) {
Serial.print("f");
delay(waktu_respon);
}

Memprogram Lengan Robot

Hasil – Pembayaran

Lengan Robot cukup akurat untuk memindahkan objek. Namun, itu akan membutuhkan beberapa pekerjaan untuk memindahkan objek yang kompleks, atau bahkan bersaing dengan 'sejuta tahun lebih' yang dimiliki manusia dalam hal ketangkasan ... meskipun menghabiskan lebih banyak waktu untuk mengerjakan kode, presisi Robot dapat bekerja seperti yang dimaksudkan untuk MARK 1i . Meskipun Lengan dapat ditingkatkan dapat ditingkatkan secara signifikan.

Jika Anda ingin meningkatkan kode, berkontribusi pada Arduino Robot Arm Git Repo dan bangun lengan Anda. Mari kita buat ini terbuka untuk dikembangkan orang lain!

Terakhir, Kami juga dapat mengontrol Robot melalui gerakan tangan dan memprogram Robot untuk mengotomatiskan tugas-tugas dasar.

Langkah Selanjutnya

Dan itu saja untuk orang-orang MARK 1! Jika Anda menyukai proyek ini, pertimbangkan untuk mendukung halaman Patreon saya.

Kode

  • Cuplikan kode #1
  • Cuplikan kode #3
  • Cuplikan kode #4
  • Cuplikan kode #5
  • Cuplikan kode #7
  • Cuplikan kode #11
  • Cuplikan kode #12
Cuplikan kode #1Teks biasa
* Sertakan library HCPCA9685 */#include "HCPCA9685.h"/* Alamat slave I2C untuk perangkat/modul. Untuk HCMODU0097, alamat I2C default adalah 0x40 */#define I2CAdd 0x40/* Buat instance perpustakaan */HCPCA9685 HCPCA9685(I2CAdd);//posisi parkir awal motorconst int servo_joint_L_parking_pos =60;//Derajat servo robot sensitivitas - Intervalsint servo_joint_L_pos_increment =20;//Melacak nilai posisi motor saat iniint servo_joint_L_parking_pos_i =servo_joint_L_parking_pos;//Sudut minimum dan maksimum motor servoint servo_joint_L_min_pos =10;int servo_joint_L_max_pos 
Cuplikan kode #3Teks biasa
//Mendefinisikan driver servo. 0x40 Alamat adalah Alamat I2C default.#define I2CAdd 0x40 int response_time =5; //Menerima nilai dari interval Robotic Glove// Memeriksa apakah data berasal dari port serial if (Serial.available()> 0) { state =Serial.read(); // Membaca data dari port serial Serial.print(state); // Mencetak nilai yang dikirim // Blok kode fungsi motor}
Cuplikan kode #4Teks biasa
if (Serial.available()> 0) { // Memeriksa apakah data berasal dari status port serial =Serial.read(); // Membaca data dari port serial Serial.print(state); // Mencetak nilai yang dikirim //Untuk penamaan motor, lihat artikel / tutorial //Memindahkan (Rotasi Basis) Motor Stepper ke Kiri if (status =='S') { baseRotateLeft(); delay(waktu_respon); }}
Cuplikan kode #5Teks biasa
HPCCA9685.Servo(0, servo_joint_L_parking_pos_i); // Arahkan motor servo pada saluran 0 ke sudut yang diinginkan.//Pindahkan Motor Cakar Ke Bawah if (status =='f') { if (servo_joint_3_parking_pos_i  
Cuplikan kode #7Teks biasa
//LED PADA PIN 3int pinkie_Data =A1;int finger_Data =A2;int thumb_Data =A3;//const int MPU_addr =0x68;const int MPU2 =0x69, MPU1 =0x68;
Cuplikan kode #11Teks biasa
 if (bool_caliberate ==false ) { delay(1000); jempol_tinggi =(jempol * 1.15); jempol_rendah =(jempol * 0.9); finger_high =(jari * 1,03); finger_low =(jari * 0.8); kelingking_tinggi =(kelingking * 1,06); kelingking_rendah =(kelingking * 0.8); bool_caliberate =benar; }
Cuplikan kode #12Teks biasa
 // jari 1 - Claw Bend/Open if (jari>=finger_high) { Serial.print("F"); delay(waktu_respon); } if (jari <=finger_low) { Serial.print("f"); delay(waktu_respon); }
Github
http://github.com/EbenKouao/arduino-robot-armhttp://github.com/EbenKouao/arduino-robot-arm
Github
https://github.com/EbenKouao/arduino-robotic-armhttps://github.com/EbenKouao/arduino-robotic-arm

Suku cadang dan penutup khusus

Thingiverse
https://www.thingiverse.com/thing:1748596File CAD di thingiverse.com
Thingiverse
https://www.thingiverse.com/thing:1750025File CAD di thingiverse.com
Thingiverse
https://www.thingiverse.com/thing:1838120File CAD di thingiverse.com
Thingiverse
https://www.thingiverse.com/thing:1982745File CAD di thingiverse.com

Skema

Robot Arm Git Repo
https://github.com/EbenKouao/arduino-robot-arm

Proses manufaktur

  1. Robot Raspberry Pi dikendalikan melalui Bluetooth
  2. Membuat Mesin Tulis Pekerjaan Rumah DIY di Rumah
  3. Mainan yang Dikendalikan Android Menggunakan Raspberry Motor Shield
  4. Hambatan Menghindari Robot Dengan Motor Servo
  5. Robot Pengikut Baris
  6. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  7. Robot yang Dikendalikan Bicara
  8. Robot Arm Dikendalikan Melalui Ethernet
  9. MobBob:Robot Arduino DIY Dikendalikan oleh Smartphone Android
  10. Robot untuk navigasi dalam ruangan yang sangat keren