Tentang proyek ini
Pendahuluan
Saya benar-benar ingin mencoba merancang lengan robot sepenuhnya dari awal. Ada banyak desain open-source yang tersedia, tetapi saya pikir akan menyenangkan jika saya bisa mendesain, membangun, dan memprogram satu dari nol (dan memang begitu).
Saya akan berbicara tentang fase desain dan pemrograman. Tapi saya akan lebih fokus pada sisi pemrograman karena tidak hanya mengontrol sudut servo.
Berikut ini tautan ke video proyek akhir yang sedang beraksi - 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 mengendalikan lengan robot. Saya kemudian menambahkan kemampuan untuk mengontrol lengan robot dari mana saja secara praktis melalui ThingSpeak, platform IoT terbuka dengan analitik MATLAB.
Perlu Perangkat Keras
- Kayu lapis 15” x 20” 1/8 inci
- Jack barel DC ramah papan tempat memotong roti 2.1mm
- Catu daya jack barel DC 6 V
Perangkat lunak yang digunakan
- Paket Dukungan MATLAB untuk perangkat keras Arduino
- Paket Dukungan Simulink untuk perangkat keras Arduino
- Paket Dukungan MATLAB untuk ThingSpeak
Desain
Saya ingin menjaga biaya suku cadang tetap rendah, jadi saya merancang ini untuk servos hobi, khususnya model GS-9025MG. Ini berarti bahwa berat dan ukuran akhir terbatas. Ini karena servo mikro tidak dapat mengerahkan banyak torsi, dan akibatnya, tidak dapat mengangkat lengan tuas yang berat.
Saya mencoba membuat prototipe dengan kayu lapis 1/4 inci, yang terbukti terlalu berat untuk servos. Saya mengurangi panjang lengan dan menggunakan kayu lapis 1/8 inci, dan itu memperbaiki masalah kontrol servo. Saya menggambar desain menggunakan Fusion 360, dan mendownload desain sebagai file a.dxf, yang kemudian saya potong dengan laser.
Selain itu, memasok tegangan DC terus-menerus dari stopkontak terbukti perlu karena arus yang diambil dari paket baterai sangat tinggi dan mengurasnya dengan sangat cepat.
Mengenai pengontrolan motor, Arduino MKR1000 memiliki 4 pin PWM, tetapi saya membutuhkan 5 untuk mengontrol 5 servo. Saya menjadi kreatif dan menggunakan satu pin PWM untuk mengontrol 2 servo dan pin digital untuk beralih di antara dua servo dan mengontrol satu per satu.
Berikut adalah rangkaian yang menjelaskan bahwa:
Berikut adalah pengkabelan servos ke Arduino:
Pemrograman
Ada dua bagian pemrograman, fase prototyping di mana saya merakitnya dan memerintahkan servos ke lokasi tertentu, dan fase kontrol presisi di mana saya bisa memerintahkan lokasi ke servo menggunakan ThingSpeak.
Pembuatan prototipe
Dengan menggunakan penggeser dan blok konstan, saya dapat memerintahkan servos di Arduino untuk bergerak ke sudut tertentu. Saya menggunakan model ini untuk mengetahui bias antara sudut yang diperintahkan dan sudut sebenarnya dari lengan, serta kisaran sudut yang diizinkan untuk setiap servo.
Blok dengan roda gigi di atasnya adalah blok tulis PWM untuk memerintahkan servis ke sudut tertentu antara 0 dan 180.
Saya menggunakan kinematika terbalik untuk lengan dalam gerakan planar 2D untuk memecahkan sudut yang diperlukan untuk menggerakkan lengan ke koordinat XY. Saya menemukan bahwa tautan ini menjelaskan kinematika dengan cukup baik:https://appliedgo.net/roboticarm/
Kontrol yang Tepat
Meskipun ini terlihat lebih rumit dari yang lain, logikanya masih sama. Blok output masih merupakan blok tulis servo dengan roda gigi. Blok input sekarang bukan input slider/blok konstan tetapi sedang dibaca dari saluran ThingSpeak. Saya akan menguraikan nanti menggunakan ThingSpeak. Inputnya adalah posisi X dan Y dari lengan, yang menggunakan blok fungsi MATLAB loc2angles diubah menjadi sudut yang diperintahkan untuk lengan. Blok angle2loc di bagian atas model hanyalah cara memantau sistem untuk memastikan servo sudut diterjemahkan ke posisi input yang benar menggunakan kinematika maju. Salah satu alat keren dari Simulink yang saya gunakan dalam proyek ini adalah Mode Eksternal . Ini memungkinkan saya untuk memantau sistem saat sedang berjalan di Arduino itu sendiri.
Blok dengan awan abu-abu di atasnya adalah blok baca ThingSpeak yang dibangun ke dalam paket dukungan Simulink untuk Arduino. Saya memasukkan ID saluran, nomor bidang data yang ingin saya ambil, dan kunci baca API, dan itu mengeluarkan data dari saluran dan bidang itu. Jangan khawatir, jika Anda tidak terbiasa dengan istilah-istilah tersebut, saya akan menjelaskannya segera.
Menggunakan ThingSpeak:Membuat dan Menggunakan Saluran
1. Buka https://thingspeak.com/
2. Klik 'masuk' di sudut kanan atas, dan masuk menggunakan akun MathWorks gratis Anda.
3. Di halaman dasbor klik ‘Saluran Baru’
4. Isi data seperti di bawah ini. Data yang ditampilkan adalah semua yang perlu Anda isi.
5. Klik ‘Simpan saluran’ di bagian bawah
6. Sekarang 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 bidang yang ditentukan di saluran ThingSpeak. Anda dapat mengubah nilai dalam argumen kedua dari pemanggilan fungsi untuk mengubah nilai bidang terkait. Setelah mengubah nilainya, data saluran akan terlihat seperti ini:
Menjalankan Model
Ketika Anda selesai dengan menyiapkan saluran ThingSpeak, Anda dapat menjalankan model di Arduino dalam mode eksternal, atau dengan menyebarkan ke perangkat keras. Dalam model Simulink, buka 'Parameter Konfigurasi Model' dengan mengklik roda gigi kecil di panel menu atas, pilih 'Implementasi perangkat keras' dan pastikan 'Papan Perangkat Keras' adalah Arduino MKR 1000. Di bawah 'Sumber Daya Perangkat Keras Target' di tab yang sama, klik properti WiFi dan masukkan kredensial WiFi untuk mengakses jaringan.
Klik tombol run hijau untuk menjalankan model dalam mode eksternal atau tombol penerapan biru untuk menerapkannya ke perangkat keras.
Setelah model berjalan, Anda dapat menulis data baru ke bidang di saluran ThingSpeak dari MATLAB atau MATLAB ponsel di ponsel Anda dan lihat bagaimana ia menggerakkan lengan robot Anda!
Kode
https://www.mathworks.com/matlabcentral/fileexchange/68880-controlling-a-robotic-arm-from-anywhere-using-iot