- MPU6050 Sensor Giroskop & Akselerometer
- Sensor Fleksibel
- Mempersiapkan ARM Robot cetak 3D:
- Komponen yang Dibutuhkan:
- Diagram Sirkuit:
- Memasang MPU6050 & Sensor Fleksibel ke Sarung Tangan
- Pemrograman Arduino Nano untuk Lengan Robot
- Pengerjaan Gesture dikendalikan Robotic Arm menggunakan Arduino
Lengan Robot adalah salah satu kreasi teknik yang menarik dan selalu menarik untuk melihat benda-benda ini miring dan bergeser untuk menyelesaikan hal-hal rumit seperti yang dilakukan lengan manusia. Lengan robotik ini umumnya dapat ditemukan di industri di jalur perakitan yang melakukan pekerjaan mekanis intensif seperti pengelasan, pengeboran, pengecatan, dll., Lengan robotik canggih baru-baru ini dengan presisi tinggi juga sedang dikembangkan untuk melakukan operasi bedah yang kompleks. Sebelumnya kami mencetak 3D lengan robot dan membuat lengan Robot Pick and Place DIY menggunakan Mikrokontroler ARM7. Kami akan kembali menggunakan Lengan Robot cetak 3D yang sama untuk membuat gerakan Tangan yang dikendalikan robot ARM menggunakan Arduino Nano, Giroskop MPU6050, dan sensor fleksibel.
Posisi lengan robotik cetak 3D ini dikontrol melalui sarung tangan yang dipasangkan dengan Giroskop MPU6050 dan sensor fleksibel. Sensor Flex digunakan untuk mengontrol servo gripper dari Robotic Arm dan MPU6050 digunakan untuk pergerakan robot pada sumbu X dan Y. Jika Anda tidak memiliki printer, Anda juga dapat membangun lengan Anda dengan karton sederhana seperti yang kami buat untuk Proyek Lengan Robot Arduino kami. Untuk inspirasi, Anda juga bisa merujuk ke Rekam dan Mainkan Lengan Robot yang kami buat sebelumnya menggunakan Arduino.
Sebelum masuk ke detailnya, mari kita pelajari dulu tentang sensor MPU6050 dan sensor fleksibel.
MPU6050 Sensor Giroskop & Akselerometer
MPU6050 didasarkan pada teknologi Micro-Mechanical Systems (MEMS). Sensor ini memiliki akselerometer 3 sumbu, giroskop 3 sumbu, dan sensor suhu internal. Dapat digunakan untuk mengukur parameter seperti Akselerasi, Kecepatan, Orientasi, Perpindahan, dll. Sebelumnya kami telah menghubungkan MPU6050 dengan Arduino dan Raspberry pi dan juga membangun beberapa proyek dengan menggunakannya seperti- robot Self Balancing, Arduino Digital Protractor, dan Arduino Inclinometer.
Fitur dalam MPU6050 Sensor:
- Komunikasi: Protokol I2C dengan Alamat I2C yang dapat dikonfigurasi
- Catu Daya Input: 3-5V
- ADC 16-bit internal memberikan akurasi tinggi
- DMP internal memberikan daya komputasi yang tinggi
- Dapat digunakan untuk berinteraksi dengan perangkat I2C lain seperti magnetometer
- Sensor suhu internal
Rincian Pin-Out MPU6050:
Pin | Pemakaian |
Vcc | Memberikan daya untuk modul, dapat + 3V hingga + 5V. Biasanya + 5V digunakan |
Tanah | Terhubung ke Ground sistem |
Serial Clock (SCL) | Digunakan untuk menyediakan pulsa clock untuk Komunikasi I2C |
Data Serial (SDA) | Digunakan untuk mentransfer Data melalui komunikasi I2C |
Data Serial Bantu (XDA) | Dapat digunakan untuk menghubungkan modul I2C lainnya dengan MPU6050 |
Jam Serial Bantu (XCL) | Dapat digunakan untuk menghubungkan modul I2C lainnya dengan MPU6050 |
AD0 | Jika lebih dari satu MPU6050 digunakan untuk satu MCU, maka pin ini dapat digunakan untuk mengubah alamat |
Interupsi (INT) | Pin interupsi untuk menunjukkan bahwa data tersedia untuk dibaca MCU |
Sensor Fleksibel
Sensor Flex tidak lain adalah resistor variabel. Resistensi sensor fleksibel berubah saat sensor dibengkokkan. Mereka biasanya tersedia dalam dua ukuran 2,2 inci dan 4,5 inci.
Mengapa kami menggunakan sensor fleksibel dalam proyek kami?
Dalam Lengan Robot yang dikendalikan Gerakan ini, sensor fleksibel digunakan untuk mengontrol penjepit lengan robot. Saat sensor flex pada hand glove dibengkokkan, motor servo yang terpasang pada gripper berputar dan gripper terbuka.
Sensor fleksibel dapat berguna dalam banyak aplikasi dan kami telah membangun beberapa proyek menggunakan sensor Flex seperti pengontrol game, generator Nada, dll.
Mempersiapkan ARM Robot cetak 3D:
Lengan Robot cetak 3D yang digunakan dalam tutorial ini dibuat dengan mengikuti desain yang diberikan oleh EEZYbotARM yang tersedia di Thingiverse. Prosedur lengkap untuk membuat lengan robot cetak 3D dan detail perakitan dengan video ada di tautan Thingiverse, yang dibagikan di atas.
Di atas adalah gambar Lengan Robot cetak 3D saya setelah dirakit dengan 4 Servo Motors.
Komponen yang Dibutuhkan:
- Arduino Nano
- Sensor Fleksibel
- 10k Resistor
- MPU6050
- Sarung tangan
- Menghubungkan Kabel
- Papan tempat memotong roti
Diagram Sirkuit:
Gambar berikut menunjukkan koneksi sirkuit untuk Lengan Robot yang dikontrol gerakan berbasis Arduino .
Koneksi Sirkuit antara MPU6050 & Arduino Nano:
MPU6050 |
Arduino Nano |
VCC |
+ 5V |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
Koneksi Sirkuit antara Motor Servo & Arduino Nano:
Arduino Nano |
MOTOR SERVO |
Adaptor daya |
D2 |
Servo 1 Oranye (Pin PWM) |
- |
D3 |
Servo 2 Orange (Pin PWM) |
- |
D4 |
Servo 3 Orange (Pin PWM) |
- |
D5 |
Servo 4 Orange (Pin PWM) |
- |
GND |
Servo 1,2,3,4 Coklat (GND Pin) |
GND |
- |
Servo 1,2,3,4 Merah (+ 5V Pin) |
+ 5V |
Sebuah sensor fleksibel berisi dua pin. Itu tidak mengandung terminal terpolarisasi. Jadi pin satu P1 dihubungkan ke Arduino Nano's Analog Pin A0 dengan resistor pull-up 10k dan pin dua P2 di-ground-kan ke Arduino.
Memasang MPU6050 & Sensor Fleksibel ke Sarung Tangan
Kami telah memasang MPU6050 dan Sensor Flex pada sarung tangan. Di sini koneksi kabel digunakan untuk menghubungkan Glove dan lengan robot tetapi dapat dibuat nirkabel dengan menggunakan koneksi RF atau koneksi Bluetooth.
Setelah setiap koneksi, pengaturan terakhir untuk Lengan Robot yang dikontrol gerakan terlihat seperti gambar di bawah ini:
Pemrograman Arduino Nano untuk Lengan Robot
Seperti biasa, kode lengkap bersama dengan video yang berfungsi diberikan di akhir tutorial ini. Di sini beberapa baris kode penting dijelaskan.
1. Pertama, sertakan file perpustakaan yang diperlukan. Library Wire.h digunakan untuk komunikasi I2C antara Arduino Nano & MPU6050 dan servo.h untuk mengendalikan motor servo.
#include
2. Selanjutnya, objek untuk servo kelas dideklarasikan. Saat kami menggunakan empat motor servo, empat objek seperti servo_1, servo_2, servo_3, servo_4 dibuat.
Servo servo_1; Servo servo_2; Servo servo_3; Servo servo_4;
3. Selanjutnya, alamat I2C MPU6050 & variabel yang akan digunakan dideklarasikan.
const int MPU_addr = 0x68; // MPU6050 I2C Alamat int16_t axis_X, axis_Y, axis_Z; int minVal = 265; int maxVal = 402; ganda x; ganda y; z ganda;
4. Selanjutnya di penyetelan kosong , baud rate 9600 disetel untuk komunikasi Serial.
Serial.begin (9600);
Dan komunikasi I2C antara Arduino Nano & MPU6050 terjalin:
Wire.begin (); // Inisiasi Kabel Komunikasi I2C.beginTransmission (MPU_addr); // Mulai komunikasi dengan MPU6050 Wire.write (0x6B); // Menulis untuk Mendaftarkan 6B Wire.write (0); // Menulis 0 menjadi 6B Daftar untuk Mengatur Ulang Wire.endTransmission (true); // Mengakhiri transmisi I2C
Juga, empat pin PWM ditentukan untuk koneksi motor servo.
servo_1.attach (2); // Forward / Reverse_Motor servo_2.attach (3); // Atas / Bawah Motor servo_3.attach (4); // Gripper_Motor servo_4.attach (5); // Motor Kiri / Kanan
5. Selanjutnya dalam fungsi void loop , buat lagi koneksi I2C antara MPU6050 dan Arduino Nano dan kemudian mulai membaca data X, Y, Z-Axis dari register MPU6050 dan menyimpannya dalam variabel yang sesuai.
Wire.beginTransmission (MPU_addr); Wire.write (0x3B); // Mulailah dengan regsiter 0x3B Wire.endTransmission (false); Wire.requestFrom (MPU_addr, 14, true); // Baca 14 Registers axis_X = Wire.read () << 8-Wire.read (); axis_Y = Wire.read () << 8-Wire.read (); axis_Z = Wire.read () << 8-Wire.read ();
Setelah itu petakan nilai min dan max data sumbu dari sensor MPU6050 pada kisaran -90 hingga 90.
int xAng = peta (axis_X, minVal, maxVal, -90,90); int yAng = peta (axis_Y, minVal, maxVal, -90,90); int zAng = peta (axis_Z, minVal, maxVal, -90,90);
Kemudian gunakan rumus berikut untuk menghitung nilai x, y, z dari 0 hingga 360.
x = RAD_TO_DEG * (atan2 (-yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng) + PI);
Kemudian membaca data keluaran analog sensor fleksibel pada pin A0 Arduino Nano dan sesuai dengan nilai digital dari sensor fleksibel mengatur sudut servo gripper. Jadi jika data sensor fleksibel lebih besar dari 750 sudut motor servo gripper adalah 0 derajat dan jika kurang dari 750 itu adalah 180 derajat.
int gripper; int flex_sensorip = analogRead (A0); if (flex_sensorip> 750) { gripper = 0; } lain { gripper = 180; } servo_3.write (gripper);
Kemudian pergerakan MPU6050 pada sumbu X dari 0 hingga 60 dipetakan dalam istilah 0 hingga 90 derajat untuk gerakan Maju / Mundur Lengan Robot dari motor servo.
jika (x> = 0 && x <= 60) { int mov1 = peta (x, 0,60,0,90); Serial.print ("Pergerakan di F / R ="); Serial.print (mov1); Serial.println ((char) 176); servo_1.write (mov1); }
Dan gerakan MPU6050 pada sumbu X dari 250 ke 360 dipetakan dalam istilah 0 hingga 90 derajat untuk gerakan lengan robotik NAIK / TURUN motor servo.
lain jika (x> = 300 && x <= 360) { int mov2 = peta (x, 360.250,0,90); Serial.print ("Gerakan ke Atas / Bawah ="); Serial.print (mov2); Serial.println ((char) 176); servo_2.write (mov2); }
Gerakan MPU6050 pada sumbu Y dari 0 hingga 60 dipetakan dalam sudut 90 hingga 180 derajat untuk Gerakan Kiri Lengan Robot dari motor servo.
jika (y> = 0 && y <= 60) { int mov3 = peta (y, 0,60,90,180); Serial.print ("Gerakan di Kiri ="); Serial.print (mov3); Serial.println ((char) 176); servo_4.write (mov3); }
Gerakan MPU6050 di sumbu Y dari 300 ke 360 dipetakan dalam istilah 0 hingga 90 derajat untuk Gerakan Kanan lengan Robot motor servo.
lain jika (y> = 300 && y <= 360) { int mov3 = peta (y, 360.300,90,0); Serial.print ("Gerakan di Kanan ="); Serial.print (mov3); Serial.println ((char) 176); servo_4.write (mov3); }
Pengerjaan Gesture dikendalikan Robotic Arm menggunakan Arduino
Terakhir, unggah kode ke Arduino Nano dan kenakan sarung tangan yang dipasang dengan MPU6050 & Flex Sensor.
1. Sekarang gerakkan tangan ke bawah untuk menggerakkan lengan robot ke depan dan ke atas untuk menggerakkan lengan robot ke atas.
2. Kemudian miringkan tangan ke kiri atau ke kanan untuk memutar lengan robot ke kiri atau kanan.
3. Tekuk kabel fleks yang terpasang dengan jari sarung tangan untuk membuka gripper lalu lepas untuk menutupnya.
Pekerjaan lengkap ditunjukkan dalam video yang diberikan di bawah ini.