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

Lengan Robot Terkendali Nunchuk (dengan Arduino)

Komponen dan persediaan

6 Lengan Robot DoF
× 1
Nunchuk
× 1
Arduino Mega 2560
× 1
Pelindung kontrol
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Lengan robot itu luar biasa! Pabrik di seluruh dunia memilikinya, tempat mereka mengecat, menyolder, dan membawa barang dengan presisi. Mereka juga dapat ditemukan dalam eksplorasi ruang angkasa, kendaraan yang dioperasikan dari jarak jauh di bawah laut, dan bahkan dalam aplikasi medis!

Dan sekarang Anda dapat memiliki versi yang lebih murah di rumah, kantor, atau lab Anda sendiri! Bosan melakukan pekerjaan yang berulang-ulang? Program robot Anda sendiri untuk membantu Anda... atau mengacaukan segalanya! :D

Dalam tutorial ini saya menunjukkan cara memasang lengan robot, dan cara memprogramnya menggunakan Arduino Mega. Untuk proyek ini saya juga ingin merasakan metode berbeda untuk mengendalikan lengan robot:menggunakan Nintendo Nunchuk! Mereka murah, mudah ditemukan, dan memiliki banyak sensor.

Ada beberapa cara Anda dapat menggunakan tutorial ini. Jika Anda tidak memiliki kit lengan robot (dan tidak ingin membeli atau membuatnya), Anda masih dapat menggunakannya untuk mempelajari sesuatu tentang pemrograman Arduino, dan cara menghubungkan Wii Nunchuk ke proyek Anda sendiri. Anda juga dapat menggunakannya untuk melatih keterampilan elektronik dan mekanik Anda.

Langkah 1:Alat dan Bahan

Alat dan bahan berikut digunakan dalam proyek ini:

Alat dan bahan:

  • Setrika dan kawat solder. Saya harus menyolder beberapa terminal ke kabel Nunchuk untuk menghubungkannya ke Arduino;
  • Penyusutan tabung. Beberapa potongan tabung menyusut digunakan untuk isolasi konduktor yang lebih baik;
  • Obeng. Struktur dipasang menggunakan beberapa baut dan mur;
  • Lengan robot desktop mekanik 6 sumbu (tautan). Kit yang luar biasa ini sudah dilengkapi dengan beberapa komponen seperti yang dijelaskan di bawah ini. Ini dapat diandalkan dan mudah untuk dirakit;
  • Supply daya 12V (2A atau lebih);
  • Pengontrol Nunchuk (tautan). Ini antarmuka ke papan Arduino, dan itu digunakan untuk mengontrol lengan robot;
  • Kabel jumper pria (4 kabel);
  • Arduino Mega (tautan / tautan / tautan). Perhatikan bahwa kit lengan robot yang saya gunakan juga memiliki papan dan bundel pengontrol yang sudah disertakan dengan papan Arduino ini. Jika Anda tidak menggunakan kit tersebut, Anda dapat menggunakan papan Arduino lain juga;

Saya kemudian diberi tahu bahwa ada adaptor Nunchuk yang membuat koneksi ke papan tempat memotong roti lebih mudah (tautan/tautan). Ini adalah pilihan yang baik jika Anda ingin waktu yang sama dalam menyolder dan tidak ingin merusak konektor asli seperti yang dijelaskan pada Langkah 9.

Lengan desktop mekanis 6-sumbu Sain Smart sudah dilengkapi dengan komponen berikut:

  • Arduino Mega 2560 R3 (tautan)
  • Pelindung papan kontrol (tautan)
  • Modul Transceiver Nirkabel NRF24L01+ (tautan)
  • Giroskop 3 sumbu MPU6050 dan akselerometer 3 sumbu (tautan)
  • Sekrup 71 x M3X8
  • 47 x mur M3
  • 2 x kurung siku
  • 5 x braket servo
  • Servo 4 x 9kg (tautan)
  • 2 x 20kg servo (tautan)
  • 6 x baki servo logam
  • 3 x kurung siku
  • 21 x kurung siku
  • 3 x bantalan flensa
  • 1 x gripper

Anda mungkin menemukan kit lengan robotik lainnya secara online, atau bahkan mendesain sendiri. Ada beberapa proyek keren yang bisa Anda cetak 3D, misalnya.

Dalam 7 langkah berikut, saya akan menunjukkan cara merakit kit lengan sebelum memasang kabel sirkuit. Jika Anda tidak memiliki kit serupa, silakan lakukan beberapa langkah. Anda dapat menggunakan kit lengan robotik lain, merakitnya, dan melompat langsung ke langkah elektronik dan pemrograman.

Di setiap langkah, ada gif animasi, yang menunjukkan bagaimana lengan robot saya dirakit. Ini hanya berjalan di versi desktop situs web.

Langkah 2:Merakit Lengan Robot Pt1 - Basis

Bagian pertama yang harus dirakit adalah dasar robot.

Ini terbuat dari dua braket berbentuk U, bergabung kembali ke belakang menggunakan empat baut dan mur M3, seperti yang ditunjukkan pada gambar. Ini mungkin bagian yang paling mudah untuk dipasang.

Langkah 3:Merakit Lengan Robot Pt2 - Servo #1

Servomotor pertama dipasang tegak lurus dengan alas, menggunakan braket servo. Profil ini dipasang ke alas menggunakan empat baut dan mur M3, seperti yang ditunjukkan pada gambar. Servo #1 ditempatkan di atasnya, dan dipasang menggunakan empat baut dan mur M3.

Tanduk logam melingkar dipasang pada sumbu servo. Kit ini dilengkapi dengan beberapa tanduk plastik. Mereka tidak akan digunakan untuk merakit robot.

Langkah 4:Merakit Lengan Robot Pt3 - Servo #2

Braket servo lain dipasang tegak lurus dengan yang sebelumnya. Terhubung ke klakson servo #1 menggunakan empat baut M3. Servo #2 dipasang dengan empat baut dan mur M3, dan juga menggunakan tanduk logam melingkar.

Braket U kemudian dipasang pada klakson menggunakan empat baut. Perhatikan bahwa baut M3 digunakan berlawanan dengan sumbu servo. Ini memberikan stabilitas pada struktur. Sebuah bantalan dipasang pada baut ini, dan terkunci pada posisinya menggunakan mur M3 lainnya. Dengan cara ini braket U terpasang erat ke sumbu tengah servo #2.

Langkah 5:Merakit Lengan Robot Pt4 - Servo #3

Braket U lainnya dipasang menggunakan empat baut dan mur M3.

Di ujung lain, servo # 3 dipasang, menggunakan tanduk logam melingkar dan empat baut. Braket servo terhubung ke motor servo, dan profil berbentuk L dihubungkan ke braket servo menggunakan beberapa baut dan mur.

Perhatikan bahwa bantalan lain digunakan berlawanan dengan sumbu servo, seperti yang dijelaskan sebelumnya.

Langkah 6:Merakit Lengan Robot Pt4 - Servo #4

Braket U lainnya dihubungkan ke profil berbentuk L menggunakan satu set empat baut dan mur M3. Sama seperti langkah sebelumnya, servo #4 dipasang ke braket U menggunakan empat baut. Braket servo lain terhubung ke servo.

Langkah 7:Merakit Lengan Robot Pt4 - Servo #5

Servo kelima terhubung tegak lurus dengan servo #4 menggunakan braket servo lain, dipasang menggunakan empat baut dan mur M3.

Langkah 8:Merakit Lengan Robot Pt4 - Servo #6

Gripper kemudian dihubungkan ke sumbu servo #5. Di atasnya, servo #6 dihubungkan menggunakan beberapa baut, mur, dan klakson logam. Gripper memiliki beberapa roda gigi, yang akan mengubah rotasi servo menjadi gerakan linier gripper.

Langkah 9:Mempersiapkan Pengontrol Nunchuk

Untuk proyek ini, saya memutuskan untuk menggunakan pengontrol Nintendo Nunchuk karena beberapa alasan:

  • Murah! Replika mungkin memiliki kualitas yang lebih rendah, tetapi saya tidak membutuhkan pengontrol yang kuat untuk proyek ini;
  • Mudah ditemukan! Ada beberapa replika asli dan murah secara online.
  • Ada banyak sensor! Setiap pengontrol memiliki dua tombol (tombol Z dan C), joystick dua sumbu (X dan Y) dan akselerometer tiga sumbu;
  • Ini memiliki perpustakaan Arduino. Robert Eisele merancang perpustakaan yang luar biasa dan mudah digunakan untuk membaca sensor Nunchuk. Lihat ini:https://www.xarg.org/2016/12/using-a-wii-nunchuk-with-arduino/

Sayangnya joystick Nunchuk memiliki konektor yang rumit, sulit untuk dihubungkan dengan elektronik lainnya. Untuk menghubungkannya ke Arduino, saya harus memotong kabelnya dan mengekspos kabelnya. Dengan cara ini, itu tidak akan bekerja dengan Nintendo Wii lagi... :/

Pertama saya harus memotong konektor joystick dan melepas isolasi kabel. Menggunakan multimeter, dan berdasarkan warna masing-masing kabel, saya menentukan fungsi masing-masing kabel (Vcc, GND, SCL dan SDA) berdasarkan skema konektor yang ditunjukkan pada gambar. Warna kabel tidak memiliki standar. Saya sudah mendengar tentang kemungkinan berikut:

Asli:

  • SDA =hijau
  • SCL =kuning
  • 3V3 =merah
  • GND =putih

Replika #1:

  • SDA =kuning
  • SCL =putih
  • 3V3 =hijau
  • GND =merah

Replika #2:

  • SDA =biru
  • SCL =putih
  • 3V3 =merah muda
  • GND =hijau

Saya menyolder kabel ke jumper pria, untuk koneksi yang lebih mudah ke papan Arduino. Untuk itu, saya menggunakan besi solder, dan beberapa tabung menyusut, seperti yang ditunjukkan pada gambar.

Saya diberitahu kemudian bahwa ada adaptor Nunchuk yang membuat koneksi ke breadboad lebih mudah (tautan/tautan). Ini adalah pilihan yang baik jika Anda ingin waktu yang sama dalam menyolder dan tidak ingin merusak konektor aslinya.

Langkah 10:Menghubungkan Sirkuit

Setelah struktur dirakit, dan konektor Nunchuk selesai, Anda akan siap untuk memasang sirkuit. Saya menggunakan pelindung papan kontrol yang disertakan dengan kit lengan robot saya. Itu membuat koneksi komponen lebih mudah, karena sudah dilengkapi dengan konektor khusus untuk servomotor, catu daya, dll.

Hubungkan komponen sebagai berikut:

Nunchuk:

  • Nunchuk pin 6 (SCL) => Arduino Mega Pin 21 (SCL) (pada pelindung)
  • Nunchuk pin 1 (SDA) => Arduino Mega Pin 20 (SDA) (pada pelindung)
  • Nunchuk pin 3 (Vcc) => Ardino Mega Pin 3V3 (pada pelindung)
  • Nunchuk pin 4 (Gnd) => Arduino Mega Pin Gnd (pada pelindung)

Jika Anda menggunakan Arduino Uno, pin SCL dan SDA Nunchuk harus dihubungkan ke pin Arduino yang berbeda, sebagai berikut:

  • Nunchuk pin 6 (SCL) => Pin Arduino Uno A5
  • Nunchuk pin 1 (SDA) => Pin Arduino Uno A4
  • Nunchuk pin 3 (Vcc) => Pin Ardino Uno 3V3
  • Nunchuk pin 4 (Gnd) => Pin Arduino Uno Gnd

Servo:

  • Terminal pelindung kontrol 11 => Servo #1
  • Terminal pelindung kontrol 12 => Servo #2
  • Terminal pelindung kontrol 13 => Servo #3
  • Terminal pelindung kontrol 8 => Servo #4
  • Terminal pelindung kontrol 9 => Servo #5
  • Terminal pelindung kontrol 10 => Servo #6

Jika Anda tidak menggunakan pelindung kontrol, Anda harus menggunakan konfigurasi pin berikut:

  • Pin Arduino 11 => Servo #1 (Sgn)
  • Pin Arduino 12 => Servo #2 (Sgn)
  • Pin Arduino 13 => Servo #3 (Sgn)
  • Arduino Pin 8 => Servo #4 (Sgn)
  • Pin Arduino 9 => Servo #5 (Sgn)
  • Pin Arduino 10 => Servo #6 (Sgn)
  • Arduino Gnd => Servos Gnd
  • Suplai daya 6V => Servos Vcc

Anda juga harus menghubungkan catu daya 12V eksternal. Saya menyarankan satu dengan lebih dari 2A output. Servo mengkonsumsi banyak daya, dan jika catu daya tidak cukup kuat, servo akan bergetar dan menjadi sangat panas. Mereka juga akan kehilangan kekuatannya.

Jangan sambungkan sumber daya sampai Anda mengunggah kode Arduino (ditunjukkan pada langkah selanjutnya). Ada tombol power di perisai. Tetap dalam posisi mati.

Colokkan kabel USB ke Arduino dan lanjutkan ke langkah berikutnya.

Langkah 11:Siapkan Arduino IDE

Setelah perangkat keras siap, saatnya mengerjakan kode Arduino.

1. Unduh dan instal Arduino IDE versi terbaru Anda dapat menemukan versi terbaru untuk Windows, Linux atau MAC OSX di situs web Arduino:https://www.arduino.cc/en/main/software

Unduh secara gratis, instal di komputer Anda dan luncurkan.

2. Menambahkan perpustakaan

Untuk proyek ini saya menggunakan perpustakaan Nunchuk Arduino yang luar biasa dari Robert Eisele! Anda dapat menemukan lebih banyak tentangnya di situs webnya:

https://www.xarg.org/2016/12/using-a-wii-nunchuk-with-arduino/

Unduh perpustakaan di https://github.com/infusion/Fritzing/tree/master/Wii-Nunchuk

Navigasikan ke Sketsa-> Sertakan Perpustakaan -> Kelola Perpustakaan ... pada Arduino IDE Anda untuk menambahkan perpustakaan.

Bagaimana cara kerja perpustakaan?

Pustaka Nunchuk dilengkapi dengan serangkaian fungsi untuk membaca sensor pengontrol:

nunchuk_buttonZ() :mengembalikan 1 jika tombol Z ditekan, atau 0 jika tidak; nunchuk_buttonC() :mengembalikan 1 jika tombol C ditekan, atau 0 jika tidak; nunchuk_joystickX() :mengembalikan nilai x joystick (antara -127 dan 127); nunchuk_joystickY() :mengembalikan nilai y dari joystick (antara -127 dan 127); nunchuk_pitch() :mengembalikan sudut pengontrol dalam radian (antara -180º dan 180º); nunchuk_roll() :mengembalikan sudut gulungan pengontrol dalam radian (antara -180º dan 180º).

Sudut dikembalikan dalam radian. Saya mengonversi nilai tersebut ke derajat dalam kode Arduino saya.

Langkah 12:Kode Arduino

Unduh file sketsa Arduino.

Colokkan kabel USB ke port USB komputer Anda dan unggah kodenya. Mengunggah kode membutuhkan waktu. Anda dapat menggunakan waktu itu untuk memberikan 'suka' dan 'bagikan' tutorial ini sambil menunggu! :D

Setelah pengunggahan selesai, cabut kabel USB, sambungkan catu daya dan nyalakan tombol daya. Kode akan segera dijalankan.

Peringatan:saat kode mulai berjalan, lengan robot akan bergerak sangat cepat ke posisi awalnya. Berhati-hatilah agar tidak terluka atau merusak peralatan di sekitar saat memulai!

Anda mungkin harus mengganti sudut awal setiap servomotor tergantung pada bagaimana servo Anda dipasang.

Kode dijelaskan:

Sebelum penyiapan, kode mengimpor pustaka yang digunakan pada sketsa (nunchuk.h, wire.h dan servo.h ).

Pin yang akan digunakan ditentukan, dan variabel global dideklarasikan. sudut# variabel integer menyimpan posisi awal untuk setiap servo. Jika Anda ingin robot Anda mulai dari posisi yang berbeda, ubah nilai pada variabel tersebut.

servo#_speed variabel menentukan kecepatan pergerakan setiap servo. Jika Anda ingin servo tertentu bergerak lebih cepat, tingkatkan nilainya. sudut#min dan sudut#maks variabel digunakan untuk membatasi sudut maksimum dan minimum untuk setiap servo. Anda dapat mengatur variabel-variabel tersebut untuk menghindari tabrakan antara sambungan robot yang berurutan.

//Sertakan library#include #include #include //define variabel#define SERV1 8 //servo 1 pada port digital 8#define SERV2 9 //servo 2 pada port digital 9#define SERV3 10 //servo 3 pada port digital 10#define SERV4 11 //servo 4 pada port digital 11#define SERV5 12 //servo 5 pada port digital 12#define SERV6 13 / /servo 6 pada port digital 13Servo s1; //servo 1Servo s2; //servo 2Servo s3; //servo 3Servo s4; //servo 4Servo s5; //servo 5Servo s6; //servo 6//menentukan sudut awal untuk setiap servo//memilih posisi yang aman untuk memulai dari//ia akan mencoba untuk bergerak secara instan ke posisi tersebut saat dihidupkan!//sudut tersebut akan bergantung pada sudut masing-masing servo selama sudut rakitan1 =90; //servo 1 sudut saat iniint angle2 =30; //servo 2 sudut saat iniint angle3 =0; //servo 3 sudut saat iniint angle4 =90; //servo 4 sudut sudut int saat ini5 =90; //servo 5 sudut saat iniint angle6 =45; //servo 6 sudut saat ini dengan servo1_speed =3; //servo 1 speedint servo2_speed =3; //servo 2 speedint servo3_speed =3; //servo 3 speedint servo4_speed =1; //servo 4 speedint servo5_speed =1; //kecepatan servo 5//menentukan batasan untuk setiap servo//sudut tersebut akan bergantung pada sudut setiap servo selama perakitan sudut1min =0; //servo 1 sudut minimum sudut1maks =180; //servo 1 sudut maksimum sudut2min =0; //servo 2 sudut minimum sudut2maks =180; //servo 2 sudut maksimum sudut3min =0; //servo 3 minimum angleint angle3max =180; //servo 3 sudut maksimum sudut4min =0; //servo 4 sudut minimum sudut4maks =180; //servo 4 sudut maksimum sudut5min =0; //servo 5 sudut minimum sudut5maks =180; //servo 5 sudut maksimum sudut6min =0; //servo 6 sudut minimum sudut6maks =180; //servo 6 maximum angleboolean display_angles =true; //boolean digunakan untuk memperbarui sudut setiap servo pada Serial Monitor 

Selama penyiapan, setiap servo dipasang ke pin khusus, dan posisinya dimulai.

Komunikasi serial (ke monitor Serial) dan komunikasi I2C dengan Nunchuk juga dimulai di sini.

//SETUPvoid ​​setup() { //pasang setiap servo ke pin dan mulai posisinya s1.attach(SERV1); s1.tulis(sudut1); s2.attach(SERV2); s2.tulis(sudut2); s3.attach(SERV3); s3.tulis(sudut3); s4.attach(SERV4); s4.tulis(sudut4); s5.attach(SERV5); s5.tulis(sudut5); s6.attach(SERV6); s6.menulis(angle6); //mulai komunikasi serial Serial.begin(9600); //mulai Nunchuk Wire.begin(); nunchuk_init();} 

Loop utama diulang berulang-ulang. Status Nunchuk dibaca pada setiap siklus. Tergantung pada pembacaan, perintah yang berbeda dilakukan.

void loop() { //membaca sensor Nunchuk if (nunchuk_read()) { int x =nunchuk_joystickX(); //joystick X posisi int y =nunchuk_joystickY(); //joystick posisi Y boolean z =nunchuk_buttonZ(); //z status tombol boolean c =nunchuk_buttonC(); //c status tombol float pitch =nunchuk_pitch(); //sudut pitch float roll =nunchuk_roll(); //sudut putar 

Joystick X akan digunakan untuk menggerakkan servo #1.

Blok kode berikut digunakan. Pertama memeriksa apakah nilai joystick cukup besar. Dengan cara ini, kebisingan dan variasi kecil diabaikan. Jika nilainya memenuhi persyaratan, sudut servo akan dinaikkan/diturunkan pada kecepatan tertentu.

//Belok kiri/kanan (dengan kecepatan tetap) //Belok kiri if (x> 90) { angle1 -=servo1_speed; tampilan_sudut =benar; if (angle1  sudut1maks) { sudut1 =sudut1maks; } } s1.tulis(sudut1); //perbarui posisi servo 

Blok serupa digunakan untuk joystick y. Ini digunakan untuk mengubah sudut servo #3. Servo #2 disimpan dalam kode ini.

Rotasi gripper diberikan oleh sudut roll dan pitch controller, diukur dengan accelerometer itu. Untuk membuat kontrol lengan lebih mudah, sudut gripper hanya diperbarui saat tombol C atau Z ditekan.

Ketika hanya tombol C yang ditekan, kode membaca sudut gulungan dan menggunakannya sebagai titik setel. servo #5 diputar hingga mencapai set point. Kecepatannya sebanding dengan kesalahan antara posisi aktual dan yang diinginkan. Kode serupa digunakan untuk servo #4, yang melacak sudut nada Nunchuk.

// Aktifkan akselerometer hanya saat tombol ditekan // Putar gripper (hanya tombol Z yang ditekan) if (c &&!z) { roll =roll * 57.0 + 90.0; //convert do derajat servo5_speed =abs(angle5 - roll)/10 + 1; //kecepatan proporsional melakukan kesalahan antara sudut aktual dan sudut yang diinginkan if (roll> angle5) { angle5 +=servo5_speed; tampilan_sudut =benar; } if (roll  

Gripper ditutup setiap kali tombol C dan Z ditekan. Saat salah satu tombol tersebut dilepaskan, robot akan membuka grippernya.

//Buka/tutup gripper (kedua tombol ditekan) if(z &&c) { s6.write(90); //tutup gripper display_angles =true; } else { s6.tulis(45); //buka gripper } 

Ada blok kode di akhir sketsa. Ini akan menampilkan pada Serial Monitor sudut sebenarnya dari setiap servomotor. Mungkin akan membantu untuk memilih sudut awal setiap motor.

nunchuk.ino

Langkah 13:Penggunaan

Sekarang semuanya sudah siap, nyalakan robot dan bersenang-senanglah!

Nunchuk digunakan untuk mengontrol lima gerakan yang ditunjukkan pada gambar:rotasi kanan/kiri, gerakan naik/turun, rotasi gripper, gerakan naik/turun gripper, dan gerakan buka/tutup gripper. Anda dapat menggabungkan gerakan tersebut untuk melakukan tugas yang berbeda.

Anda dapat memodifikasi kode untuk memiliki gerakan yang berbeda berdasarkan kombinasi tombol dan sudut joystick.

Kode

  • nunchuk.ino
nunchuk.inoArduino
Tidak ada pratinjau (hanya unduhan).
Github
https://github.com/infusion/Fritzing/tree/master/Wii-Nunchukhttps://github.com/infusion/Fritzing/tree/master/Wii-Nunchuk

Proses manufaktur

  1. Buat Robot Streaming Video Terkendali Internet Anda dengan Arduino dan Raspberry Pi
  2. Kontrol Penerima Koin dengan Arduino
  3. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  4. Mobil RC Terkendali Joystick
  5. Arduino dengan Bluetooth untuk Mengontrol LED!
  6. Arduino 3D-Printed Robotic Arm
  7. Robot yang Dikendalikan Bicara
  8. Robot Arm Dikendalikan Melalui Ethernet
  9. Peralatan yang Dikendalikan Suara Bluetooth dengan OK Google
  10. Lengan Robot Sederhana dan Cerdas Menggunakan Arduino