Kontrol Robotik Arm Custom Secara Jarak Jauh melalui IoT
Komponen dan perlengkapan
Arduino MKR1000
×
1
Alat dan mesin yang diperlukan
Laser cutter (generik)
Aplikasi dan layanan online
MATLAB
Arduino IDE
Tentang proyek ini
Pengantar
Saya benar-benar ingin mencoba merancang lengan robotik sepenuhnya dari nol. Tersedia banyak desain open-source, tetapi saya pikir akan memuaskan jika saya dapat merancang, membangun, dan memprogram satu dari nol (dan memang demikian).
Saya akan membahas baik tahap desain maupun pemrograman. Namun saya akan lebih fokus pada sisi pemrograman karena ini tidak hanya tentang mengontrol sudut servo.
Berikut adalah tautan ke video proyek akhir dalam aksi - https://www.mathworks.com/videos/how-to-control-a-robotic-arm-from-a-remote-location-using-iot-1538564659095.html.
Saya menggunakan Simulink untuk memprogram Arduino MKR1000 yang merupakan MCU yang mengontrol lengan robotik. Kemudian saya menambahkan kemampuan untuk mengontrol lengan robot dari hampir mana saja melalui ThingSpeak, platform IoT open-source dengan analitik MATLAB.
Hardware yang diperlukan
Plywood 15” x 20” 1/8 inci
Arduino MKR1000
5x servo GS9025MG
DC barrel jack 2.1mm ramah breadboard
Suplai daya DC barrel jack 6 V
Kabel jumper
3x Transistor 2n2222a
10x Mur M2
10x Baut M2 x 10
40x Mur M3
40x Baut M3 x 25
Perangkat lunak yang digunakan
MATLAB
Simulink
Paket Dukungan MATLAB untuk hardware Arduino
Paket Dukungan Simulink untuk hardware Arduino
Paket Dukungan MATLAB untuk ThingSpeak
Desain
Saya ingin menjaga biaya bagian tetap rendah, jadi saya merancang ini untuk servo hobi, khususnya model GS-9025MG. Ini berarti bobot dan ukuran akhir terbatas. Ini karena servo mikro tidak dapat memberikan torsi yang besar, dan sebagai akibatnya, tidak dapat mengangkat lengan berat.
Saya mencoba prototipe dengan plywood 1/4 inci, yang ternyata terlalu berat untuk servo. Saya mengurangi panjang lengan dan menggunakan plywood 1/8 inci, dan itu memperbaiki masalah kontrol servo. Saya menggambar desain menggunakan Fusion 360, dan mengunduh desain sebagai file .dxf, yang kemudian saya potong dengan laser.
Selain itu, menyuplai tegangan DC kontinu dari kontak dinding terbukti diperlukan karena arus yang ditarik dari paket baterai sangat tinggi dan mengosongkannya sangat cepat.
Regarding controlling the motors, the Arduino MKR1000 has 4 PWM pins, but I needed 5 to control the 5 servos. I got creative and used one PWM pin to control 2 servos and a digital pin to toggle between the two servos and control one at a time.
Berikut adalah rangkaian yang menggambarkan hal itu:
Berikut adalah penyaluran servo ke Arduino:
Pemrograman
Ada dua bagian pemrograman, tahap prototipe tempat saya merakitnya dan mendapatkan servo untuk bergerak ke lokasi tertentu, dan tahap kontrol presisi tempat saya dapat memerintahkan lokasi ke servo menggunakan ThingSpeak.
Prototipe
Menggunakan slider dan blok konstan saya dapat memerintahkan servo pada Arduino untuk bergerak ke sudut tertentu. Saya menggunakan model ini untuk menemukan bias antara sudut yang diperintahkan dan sudut aktual lengan, serta rentang sudut yang diizinkan untuk setiap servo.
Blok dengan gear pada mereka adalah blok tulis PWM untuk memerintahkan servo ke sudut tertentu antara 0 dan 180.
Saya menggunakan kinematika terbalik untuk lengan dalam gerak datar 2D untuk menyelesaikan sudut yang diperlukan untuk menggerakkan lengan ke koordinat XY. Saya menemukan bahwa tautan ini menjelaskan kinematika dengan cukup baik: https://appliedgo.net/roboticarm/
Kontrol Presisi
Meski ini terlihat lebih rumit dari yang lain, logikanya tetap sama. Blok output tetaplah blok tulis servo dengan gear. Blok input sekarang bukan lagi input slider/konstan tetapi dibaca dari saluran ThingSpeak. Saya akan menjelaskan lebih lanjut tentang penggunaan ThingSpeak nanti. Inputnya adalah posisi X dan Y lengan, yang menggunakan blok fungsi MATLAB loc2angles dikonversi menjadi sudut yang diperintahkan untuk lengan. Blok angles2loc di atas model hanyalah cara untuk memantau sistem untuk memastikan sudut servo diterjemahkan ke posisi input yang benar menggunakan kinematika maju. Salah satu alat keren dari Simulink yang saya gunakan dalam proyek ini adalah External Mode. Ini memungkinkan saya untuk memantau sistem saat berjalan pada Arduino itu sendiri.
Blok dengan awan abu-abu pada mereka adalah blok baca ThingSpeak yang built-in dalam paket dukungan Simulink untuk Arduino. Saya memasukkan ID saluran, nomor kolom data yang ingin saya ambil, dan kunci baca API, dan itu mengeluarkan data dari saluran dan kolam tersebut. Jangan khawatir, jika Anda tidak terbiasa dengan istilah-istilah tersebut, saya akan menjelaskan segera.
Menggunakan ThingSpeak: Membuat dan Menggunakan Saluran
1. Kunjungi https://thingspeak.com/
2. Klik ‘sign in’ di sudut kanan atas, dan masuk menggunakan akun MathWorks gratis Anda.
3. Di halaman dasbor klik ‘New Channel’
4. Isi data seperti di bawah ini. Data yang ditunjukkan adalah semua yang perlu Anda isi.
5. Klik ‘Save channel’ di bagian bawah
6. Anda telah membuat saluran ThingSpeak
7. Di jendela perintah MATLAB atau menggunakan aplikasi seluler MATLAB, Anda dapat memasukkan perintah yang terlihat seperti:thingSpeakWrite(chID, [0.6963.94 -12 0 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);
Ini menulis data baru ke kolom yang ditentukan dalam saluran ThingSpeak. Anda dapat mengubah nilai di argumen kedua dari pemanggilan fungsi untuk mengubah nilai kolom yang sesuai. Setelah mengubah nilai, data saluran harus terlihat seperti ini:
Menjalankan Model
Setelah Anda selesai menyiapkan saluran ThingSpeak, Anda dapat menjalankan model pada Arduino dalam mode eksternal, atau dengan menyebarkannya ke hardware. Di model Simulink, buka ‘Model Configuration Parameters’ dengan mengklik roda gigi kecil di panel menu atas, pilih ‘Hardware implementation’ dan pastikan ‘Hardware Board’ adalah Arduino MKR 1000. Di bawah ‘Target Hardware Resources’ di tab yang sama, klik properti WiFi dan masukkan kredensial WiFi untuk mengakses jaringan.
Klik tombol hijau run untuk menjalankan model dalam mode eksternal atau tombol biru deploy untuk menyebarkannya ke hardware.
Setelah model berjalan, Anda dapat menulis data baru ke kolom dalam saluran ThingSpeak dari MATLAB atau MATLAB seluler di ponsel Anda dan melihat bagaimana itu menggerakkan lengan robot Anda!