- Sensor Gyroscopic & Accelerometer MPU6050
- Sensor Flex
- Bersedia dengan ARM Robotik bercetak 3D:
- Komponen yang Diperlukan:
- Rajah Litar:
- Pemasangan MPU6050 & Flex Sensor ke Sarung Tangan
- Pengaturcaraan Arduino Nano untuk Robotic Arm
- Mengendalikan Robotic Arm yang dikendalikan oleh Gesture menggunakan Arduino
Robotic Arms adalah salah satu ciptaan kejuruteraan yang menarik dan selalu menarik untuk melihat perkara-perkara ini condong dan bergerak untuk menyelesaikan perkara-perkara yang kompleks seperti yang dilakukan oleh manusia. Lengan robotik ini biasa dijumpai di industri di barisan pemasangan yang melakukan kerja mekanikal yang sengit seperti pengelasan, penggerudian, pengecatan, dan lain-lain. Lengan robotik yang maju dengan ketepatan tinggi juga sedang dikembangkan untuk melakukan operasi pembedahan yang kompleks. Sebelum ini kami 3D mencetak Lengan robot dan membina lengan Robot Pick and Place DIY menggunakan Mikrokontroler ARM7. Kami sekali lagi akan menggunakan Lengan Robotik bercetak 3D yang sama untuk membuat ARM robotik gerak isyarat Tangan menggunakan Arduino Nano, MPU6050 Giroskop dan sensor flex.
Kedudukan lengan robotik bercetak 3D ini dikendalikan melalui sarung tangan yang dilekatkan dengan Giroskop MPU6050 dan sensor flex. Sensor Flex digunakan untuk mengawal servo gripper Arm Robotic dan MPU6050 digunakan untuk pergerakan robot dalam paksi X dan Y. Sekiranya anda tidak mempunyai pencetak, anda juga boleh membina lengan anda dengan kadbod sederhana seperti yang kami buat untuk Projek Lengan Robotik Arduino kami. Untuk mendapatkan inspirasi, anda juga boleh merujuk pada Arm and Robotic Record and Play yang kami bina sebelumnya menggunakan Arduino.
Sebelum membahas secara terperinci, pertama, mari kita pelajari mengenai sensor MPU6050 dan sensor flex.
Sensor Gyroscopic & Accelerometer MPU6050
MPU6050 didasarkan pada teknologi Sistem Mikro-Mekanikal (MEMS). Sensor ini mempunyai akselerometer 3 paksi, giroskop 3 paksi, dan sensor suhu terbina dalam. Ia dapat digunakan untuk mengukur parameter seperti Percepatan, Kecepatan, Orientasi, Perpindahan, dll. Kami sebelumnya telah menghubungkan MPU6050 dengan Arduino dan Raspberry pi dan juga membangun beberapa proyek menggunakannya seperti- Self Balancing robot, Arduino Digital Protractor, dan Arduino Inclinometer.
Ciri-ciri dalam Sensor MPU6050:
- Komunikasi: Protokol I2C dengan Alamat I2C yang boleh dikonfigurasi
- Bekalan Kuasa Input: 3-5V
- ADC 16-bit terbina dalam memberikan ketepatan yang tinggi
- DMP terbina dalam memberikan kuasa pengiraan yang tinggi
- Boleh digunakan untuk berinteraksi dengan peranti I2C lain seperti magnetometer
- Sensor suhu terbina dalam
Maklumat Pin-Out MPU6050:
Sematkan | Penggunaan |
Vcc | Memberi kuasa untuk modul, dapat + 3V hingga + 5V. Biasanya + 5V digunakan |
Tanah | Bersambung ke Ground of system |
Jam Bersiri (SCL) | Digunakan untuk menyediakan nadi jam untuk Komunikasi I2C |
Data Bersiri (SDA) | Digunakan untuk memindahkan Data melalui komunikasi I2C |
Data Siri Tambahan (XDA) | Boleh digunakan untuk antara muka modul I2C lain dengan MPU6050 |
Jam Bersiri Tambahan (XCL) | Boleh digunakan untuk antara muka modul I2C lain dengan MPU6050 |
AD0 | Sekiranya lebih daripada satu MPU6050 digunakan satu MCU, maka pin ini dapat digunakan untuk mengubah alamat |
Ganggu (INT) | Pin interrupt untuk menunjukkan bahawa data tersedia untuk dibaca oleh MCU |
Sensor Flex
Flex Sensor tidak lain adalah perintang yang berubah-ubah. Rintangan sensor lentur berubah apabila sensor dibengkokkan. Mereka biasanya terdapat dalam dua saiz 2.2 inci dan 4.5 inci.
Mengapa kita menggunakan sensor flex dalam projek kita?
Dalam Lengan Robotik terkawal Gerakan ini, sensor lentur digunakan untuk mengawal pencengkam lengan robotik. Apabila sensor flex pada sarung tangan dibengkokkan, motor servo yang terpasang pada gripper berputar dan gripper terbuka.
Sensor Flex dapat berguna dalam banyak aplikasi dan kami telah membina beberapa projek menggunakan sensor Flex seperti pengawal permainan, Penjana nada, dll.
Bersedia dengan ARM Robotik bercetak 3D:
Lengan Robotik bercetak 3D yang digunakan dalam tutorial ini dibuat dengan mengikuti reka bentuk yang diberikan oleh EEZYbotARM yang terdapat di Thingiverse. Prosedur lengkap untuk membuat lengan robot bercetak 3D dan perincian pemasangan dengan video terdapat dalam pautan Thingiverse, yang dikongsi di atas.
Di atas adalah gambar Lengan Robotik bercetak 3D saya setelah dipasang dengan 4 Servo Motors.
Komponen yang Diperlukan:
- Arduino Nano
- Sensor Flex
- Perintang 10k
- MPU6050
- Sarung Tangan Tangan
- Wayar Penyambung
- Papan roti
Rajah Litar:
Gambar berikut menunjukkan sambungan litar untuk Robotic Arm yang dikawal oleh isyarat Arduino .
Sambungan Litar antara MPU6050 & Arduino Nano:
MPU6050 |
Arduino Nano |
VCC |
+ 5V |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
Sambungan Litar antara Servo Motors & Arduino Nano:
Arduino Nano |
SERVO MOTOR |
Penyesuai kuasa |
D2 |
Servo 1 Orange (Pin PWM) |
- |
D3 |
Servo 2 Oren (Pin PWM) |
- |
D4 |
Servo 3 Oren (Pin PWM) |
- |
D5 |
Servo 4 Jeruk (Pin PWM) |
- |
GND |
Servo 1,2,3,4 Coklat (Pin GND) |
GND |
- |
Servo 1,2,3,4 Merah (Pin 5V) |
+ 5V |
A sensor flex mengandungi dua pin. Ia tidak mengandungi terminal terpolarisasi. Oleh itu pin satu P1 disambungkan ke Analog Pin A0 Arduino Nano dengan perintang penarik 10k dan pin dua P2 dibumikan ke Arduino.
Pemasangan MPU6050 & Flex Sensor ke Sarung Tangan
Kami memasang MPU6050 dan Flex Sensor pada sarung tangan. Di sini sambungan berwayar digunakan untuk menyambungkan Sarung Tangan dan lengan robot tetapi ia boleh dibuat tanpa wayar dengan menggunakan sambungan RF atau sambungan Bluetooth.
Selepas setiap sambungan, persediaan terakhir untuk Robotic Arm yang dikendalikan oleh isyarat kelihatan seperti gambar di bawah:
Pengaturcaraan Arduino Nano untuk Robotic Arm
Seperti biasa, kod lengkap bersama dengan video berfungsi diberikan pada akhir tutorial ini. Berikut adalah beberapa baris kod penting yang dijelaskan.
1. Pertama, sertakan fail perpustakaan yang diperlukan. Perpustakaan Wire.h digunakan untuk komunikasi I2C antara Arduino Nano & MPU6050 dan servo.h untuk mengawal motor servo.
#sertakan
2. Seterusnya, objek untuk servo kelas dinyatakan. Semasa kita 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. Seterusnya, alamat I2C MPU6050 & pemboleh ubah yang akan digunakan dinyatakan.
const int MPU_addr = 0x68; // MPU6050 I2C Alamat int16_t axis_X, axis_Y, axis_Z; int minVal = 265; int maxVal = 402; berganda x; berganda y; z double;
4. Selanjutnya dalam penyediaan kekosongan , kadar baud 9600 ditetapkan untuk komunikasi Serial.
Serial.begin (9600);
Dan komunikasi I2C antara Arduino Nano & MPU6050 terjalin:
Wire.begin (); // Memanfaatkan I2C Communication Wire.beginTransmission (MPU_addr); // Mulakan komunikasi dengan MPU6050 Wire.write (0x6B); // Menulis untuk Mendaftar 6B Wire.write (0); // Menulis 0 hingga 6B Daftar untuk Reset Wire.endTransmission (benar); // Menamatkan penghantaran I2C
Juga, empat pin PWM ditakrifkan untuk sambungan motor servo.
servo_1. Attach (2); // Maju / Reverse_Motor servo_2.tattach (3); // Atas / Bawah_Motor servo_3.tempel (4); // Gripper_Motor servo_4.attach (5); // Kiri / Kanan_Motor
5. Selanjutnya dalam fungsi gelung void , buat lagi sambungan I2C antara MPU6050 dan Arduino Nano dan kemudian mulailah membaca data X, Y, Z-Axis dari daftar MPU6050 dan simpan dalam pemboleh ubah yang sesuai.
Wire.beginTransmission (MPU_addr); Wire.write (0x3B); // Mulakan dengan regsiter 0x3B Wire.endTransmission (false); Wire.requestFrom (MPU_addr, 14, benar); // Baca 14 Daftar axis_X = Wire.read () << 8-Wire.read (); axis_Y = Wire.read () << 8-Wire.read (); axis_Z = Wire.read () << 8-Wire.read ();
Selepas itu, petakan nilai min dan maksimum data paksi dari sensor MPU6050 dalam lingkungan -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 formula berikut untuk mengira 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 baca data keluaran Analog sensor flex pada pin A0 Arduino Nano dan mengikut nilai digital sensor flex tetapkan sudut servo gripper. Oleh itu, jika data sensor flex lebih besar daripada 750 sudut motor servo gripper adalah 0 darjah dan jika kurang dari 750 ia adalah 180 darjah.
int gripper; int flex_sensorip = analogRead (A0); jika (flex_sensorip> 750) { gripper = 0; } lain { gripper = 180; } servo_3.write (gripper);
Kemudian pergerakan MPU6050 pada paksi-X dari 0 hingga 60 dipetakan dari segi 0 hingga 90 darjah untuk gerakan Forward / Reverse motor lengan Robotik.
jika (x> = 0 && x <= 60) { int mov1 = peta (x, 0,60,0,90); Serial.print ("Pergerakan dalam F / R ="); Serial.print (mov1); Serial.println ((char) 176); servo_1.write (mov1); }
Dan pergerakan MPU6050 pada paksi-X dari 250 hingga 360 dipetakan dari segi 0 hingga 90 darjah untuk lengan robotik gerakan UP / BAWAH servo motor.
lain jika (x> = 300 && x <= 360) { int mov2 = peta (x, 360,250,0,90); Serial.print ("Pergerakan ke Atas / Bawah ="); Serial.print (mov2); Serial.println ((char) 176); servo_2.write (mov2); }
Pergerakan MPU6050 pada paksi-Y dari 0 hingga 60 dipetakan dari segi 90 hingga 180 darjah untuk pergerakan kiri lengan servo motor Robotik.
jika (y> = 0 && y <= 60) { int mov3 = peta (y, 0,60,90,180); Serial.print ("Pergerakan di Kiri ="); Serial.print (mov3); Serial.println ((char) 176); servo_4.write (mov3); }
Pergerakan MPU6050 dalam paksi-Y dari 300 hingga 360 dipetakan dari segi 0 hingga 90 darjah untuk Pergerakan Kanan lengan robotik servo motor.
lain jika (y> = 300 && y <= 360) { int mov3 = peta (y, 360,300,90,0); Serial.print ("Pergerakan di Kanan ="); Serial.print (mov3); Serial.println ((char) 176); servo_4.write (mov3); }
Mengendalikan Robotic Arm yang dikendalikan oleh Gesture menggunakan Arduino
Akhirnya, muat naik kod ke Arduino Nano dan pakai sarung tangan yang dipasang dengan Sensor MPU6050 & Flex.
1. Sekarang gerakkan tangan ke bawah untuk menggerakkan lengan robot ke hadapan dan bergerak ke atas untuk menggerakkan lengan robot ke atas.
2. Kemudian condongkan tangan ke kiri atau kanan untuk memusingkan lengan robot ke kiri atau kanan.
3. Bengkokkan kabel lentur yang dilekatkan dengan jari sarung tangan untuk membuka genggaman dan kemudian lepaskan untuk menutupnya.
Kerja lengkap ditunjukkan dalam video yang diberikan di bawah.