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

Robot Arm Dikendalikan Melalui Ethernet

Komponen dan persediaan

Arduino 101
× 1
WIZnet WIZ750SR
× 1
Perangkat Android
× 1
Lengan Robot
Anda dapat menggunakan lengan robot lainnya, tetapi Anda mungkin perlu menyesuaikan kode jika lengan robot Anda terlalu berbeda
× 1
Servo Mikro Metal Gear
× 4

Aplikasi dan layanan online

Arduino IDE
Alat Konfigurasi WIZnet S2E
Android Studio

Tentang proyek ini

Pendahuluan

Saya suka lengan robot. Saya suka bahwa Anda hanya memerlukan beberapa bagian mekanis sederhana, beberapa servos atau motor, perangkat lunak yang bagus, dan Anda bisa mendapatkan perangkat yang tidak hanya spektakuler dan menyenangkan, tetapi juga sangat berguna. Saya ingin membuatnya karena saya memiliki kursus robotika yang sangat saya sukai.

Anda dapat belajar banyak saat membuat lengan robot, jadi menurut saya ini adalah proyek tingkat menengah yang bagus untuk memperdalam pengetahuan Anda dalam robotika. Mari kita mulai!

Lengan Robot

Anda dapat membeli lengan robot dari sekitar $ 20. Untuk bereksperimen, saya ingin memulai dengan yang lebih murah. Nanti saya akan membuat atau membeli lengan robot yang lebih serius tapi untuk saat ini saya akan mengerjakan lengan robot DIY 25$ ini dari Banggood.

Ini adalah lengan robot 4DoF (Degrees of Freedom), di mana 3 servo digunakan untuk bergerak dan satu untuk efektor (saya menyebutnya gripper dalam proyek). Artinya gripper dapat dipindahkan ke posisi mana pun di area tertentu tetapi sudutnya tidak dapat diubah. Ini adalah batasan yang signifikan, tetapi tidak apa-apa untuk saat ini dan masih bagus untuk banyak hal.

Kit DIY datang dengan 4 servos, jadi sebenarnya Anda mendapatkan setiap komponen untuk membuat lengan robot selain pengontrol. Servo ini tidak buruk, tetapi saya lebih suka ini:

Servo ini lebih cepat daripada yang biru dan ini menggunakan roda gigi logam, bukan plastik.

Bagian robot datang dalam 4 lembar plastik. Anda harus menghapus bagian-bagian dari lembaran ini.

Kit lengan robot terdiri dari banyak bagian. Saya sarankan Anda untuk menonton video berikut. Dalam video ini seorang pria Rusia sedang membangun jenis lengan robot yang sama. Bagian bangunan dimulai pada 7:43.

Saya mendapat tautan pada paket tentang cara membuat lengan robot, tetapi kualitasnya sangat rendah baik dalam gambar maupun instruksi. Video itu jauh lebih baik. Mungkin Anda dapat mengetahui apa itu, tetapi jika Anda melakukan ini, Anda akan berakhir dalam lingkaran perakitan, pembongkaran, pemasangan kembali yang hampir tak terbatas.

Berhati-hatilah saat Anda memasukkan servos. Desain dengan jenis plastik ini cenderung mudah pecah saat Anda mengencangkan sekrup. Kekencangan sekrup yang optimal juga penting pada beberapa bagian robot lainnya. Buat terlalu kencang dan Anda tidak bisa menggerakkan segmen lengan robot dengan servos.

Setelah beberapa bangunan, Anda akan mendapatkan lengan robot Anda sendiri.

Servo pemosisian memiliki kabel yang cukup panjang, tetapi gripper membutuhkan kabel yang lebih panjang. Saya membongkar servo itu, melepas solder kabel lama dan saya menggunakan kabel setidaknya dua kali lebih panjang.

Otak

Baiklah, lengan robot sudah siap, tetapi kemungkinan besar Anda ingin mengendalikannya entah bagaimana. Saya membutuhkan mikrokontroler untuk itu dan saya memilih Arduino 101 saya untuk pekerjaan ini.

Ini adalah satu-satunya papan Arduino resmi yang menggunakan mikrokontroler Intel (Intel Curie). Ini memiliki giroskop dan akselerometer bawaan. Ini juga memiliki Bluetooth, jadi ini memberi saya kemungkinan untuk mengontrol robot melalui BLE di masa depan. Fitur lain yang sangat berguna dari board ini adalah cara kerja komunikasi serial. Tidak seperti kebanyakan Arduino, serial USB dan UART pada pin 1 dan 0 (TX dan RX) tidak sama. Ini memiliki manfaat seperti saya tidak perlu memutuskan sirkuit komunikasi lain dari pin 0 dan 1 ketika saya memprogram ulang Arduino. Ini juga berguna untuk tujuan debugging.

Jika Anda ingin menggunakan serial port USB maka Anda harus menggunakan 'Serial' dan jika Anda ingin menggunakan pin GPIO0 dan GPIO1 maka Anda memiliki 'Serial1'

Arduino 101 memiliki 4 GPIO berkemampuan PWM (GPIO3, GPIO5, GPIO6, dan GPIO9) dan saya menggunakan semuanya untuk mengontrol servo.

Komunikasi

Lengan robot saya dapat dikontrol melalui serial (Serial1 untuk lebih spesifik). Saya menggunakan modul komunikasi terbaru saya, WIZ750SR untuk tujuan ini.

Ini adalah modul Ethernet kecil dengan MCU Cortex-M0. Dalam fungsi dasarnya, ini adalah modul Serial to Ethernet, tetapi Anda dapat dengan mudah memprogram ulang modul untuk memenuhi kebutuhan Anda. Anda dapat mengubah papan ini menjadi papan I2C ke Ethernet jika Anda mau.

Fitur yang sangat keren adalah server TCP onboard (atau klien). Menggunakan server TCP, Anda dapat mengontrol Arduino dari jarak jauh, seperti yang Anda lakukan melalui serial USB, tetapi dari mana saja di dunia! Di sisi Arduino itu benar-benar transparan. Anda tidak perlu menambahkan kode tambahan ke sketsa Anda untuk menggunakan modul ini.

Saya juga memiliki papan evaluasi WIZ750SR-TTL-EVB. Saya dapat menyalakan WIZ750SR dan memiliki port USB debug, tetapi saya tidak menggunakannya selain beberapa percobaan awal.

Baik Arduino 101 dan WIZ750SR menggunakan 3.3V dan karenanya saya tidak perlu menggunakan pemindahan level untuk pin TX dan RX. Arduino juga memberi daya pada modul Ethernet dari catu dayanya. Rangkaian ini sangat sederhana dan Anda dapat menemukannya di bagian Skema proyek ini. Servo memiliki catu daya 5V sendiri.

Menyiapkan Modul

Untuk menggunakan board ini Anda harus mengkonfigurasinya terlebih dahulu. Saya tidak akan mendokumentasikan ulang bagian ini karena orang-orang WIZnet sudah melakukannya di sini dan Anda dapat yakin bahwa Anda selalu mendapatkan dokumentasi terbaru di sana.

Dokumentasi mereka sangat bagus, tetapi saya memiliki beberapa informasi yang baik untuk diketahui dan saya memiliki beberapa masalah (yang diselesaikan) yang layak untuk dibagikan.

Pertama, Anda dapat menyalakan papan dari port USB papan evaluasi, tetapi selain itu, port ini digunakan terutama untuk debugging dan flashing. Saya percaya bahwa Anda tidak dapat berkomunikasi dengan server TCP WIZ750SR menggunakan port USB, tetapi Anda akan menerima informasi debug jika Anda terhubung ke port COM ini. Itu membuat saya bingung di awal karena saya tidak tahu apa yang diharapkan.

Kedua, jika LED biru menyala saat WIZ750SR terhubung ke jaringan Anda, maka papan Anda seharusnya berfungsi dengan benar, lanjutkan dengan Alat Konfigurasi, papan tersebut akan ditemukan.

Masalah terbesar saya terjadi pada saat ini ketika saya mencoba mencari perangkat di Alat Konfigurasi. Pada awalnya itu bekerja dengan sangat baik, tetapi kemudian saya tidak punya waktu, jadi saya berhenti di sana. Setelah dua minggu saya mencoba melakukannya lagi, tetapi tidak dapat menemukan papan lagi di bawah banyak OS dan komputer di banyak jaringan.

Saya melakukan reflash melalui port USB debug dari papan evaluasi dengan firmware terbaru dan berhasil. PC Windows saya masih tidak dapat menemukannya, tetapi versi Python di bawah Ubuntu bisa. Saya tidak yakin apa masalahnya, tetapi langkah-langkah ini akhirnya menyelesaikan masalah saya. Setelah berhasil mengonfigurasi WIZ750SR, PC Windows saya juga dapat menemukannya kembali sehingga saya melanjutkan pekerjaan.

Saat saya membaca, VM dengan panggilan adaptor jaringan virtualnya juga mengacaukan pencarian, jadi jika Anda mengalami masalah dengan pencarian, Anda harus melihatnya.

Alat yang hebat untuk menguji komunikasi TCP adalah NetCat. Dengan menggunakan perangkat lunak ini, Anda dapat terhubung ke server TCP di WIZ750SR. Setelah Anda menginstal NetCat gunakan perintah ini untuk menghubungkan:

nc [tcp_server_ip] [tcp_server_port]  

Setelah itu Anda bisa langsung mengirim dan menerima data dari WIZ750SR. Saya sering menggunakan alat ini.

Berpindah dari A ke B

Untuk menggerakkan lengan robot, Anda harus memberi tahu pengontrol apa yang Anda inginkan. Cara paling sederhana adalah dengan memperbarui semua sudut servo secara langsung. Memperbarui sudut sambungan dapat dilakukan dengan beberapa percobaan dan kesalahan dan itu benar-benar dapat bekerja dengan baik.

Dalam proyek lengan robot saya berikutnya, saya akan menggunakan kinematika terbalik untuk mengontrol lengan robot dengan koordinat dunia, tetapi untuk saat ini saya akan mengontrol robot hanya menggunakan sudut sambungan.

Kecepatan sistem adalah poin kunci di sini. Servo sangat cepat tetapi masih membutuhkan waktu untuk mencapai posisi yang diterima. Di sisi lain, kabel jumper tidak menyukai gerakan yang terlalu cepat, jadi saya harus memperlambatnya. Baik pada bagian hardware maupun software.

Saya membuat ini dengan membuat perhitungan jalur ke sistem dan memasukkan penundaan. Saat Anda mengirim sudut sambungan baru untuk lengan robot, Anda harus memberikan parameter tambahan:kecepatan (mDelay). Pada dasarnya Anda memberi tahu pengontrol lengan robot waktu langkah minimum loop. Kalkulator jalur akan menghitung ukuran langkah opsional untuk setiap servo pemosisian. Ini berarti bahwa semua servos akan mencapai tujuannya pada waktu yang hampir bersamaan dan kecepatannya tergantung pada penundaan. Hasilnya adalah gerakan linier yang sangat bagus dan mulus setiap saat.

Efektor bekerja dengan cara yang berbeda. Pada dasarnya itu hanya dapat memiliki keadaan terbuka atau tertutup (dengan 3 tingkat kekuatan tertutup yang berbeda), tanpa transisi yang mulus. Jelas Anda ingin mengambil objek itu sesegera mungkin, sementara gerakannya harus mulus dan bagus.

Ada 2 jenis perintah dalam sistem ini saat ini. Ini contoh keduanya:

  • G 1 --> Menutup Gripper, ringan. 0 artinya buka
  • A 10 130 120 110 --> Menggerakkan Lengan robot dengan waktu langkah 10 mdtk, sudut sambungan atas 130º, sudut sambungan bawah 120º, dan sudut rotator dasar 110º.

Aplikasi Android untuk Kontrol Jarak Jauh

Baiklah, jadi pada titik ini saya dapat mengontrol lengan robot dari mana saja di dunia, tetapi saya harus menulis setiap perintah baru secara manual. Tidak terlalu menyenangkan dengan cara ini. Saya membutuhkan cara yang lebih ramah pengguna untuk mengontrol lengan robot, jadi saya membuat aplikasi Android untuk melakukan hal itu.

Aplikasi ini memiliki klien TCP, sehingga dapat langsung terhubung ke server TCP WIZ750SR. Lengan robot tidak menyimpan plot untuk gerakan lama dan masa depan. Itu hanya tahu posisi tujuan saat ini. Artinya, aplikasi tidak hanya mengirim seluruh plot gerakan ke lengan robot, tetapi secara berkala mengirim posisi baru ke lengan robot, berdasarkan umpan balik posisi. Jika Anda menutup aplikasi atau memutuskan sambungan dari WIZ750SR, lengan robot akan berhenti bergerak segera setelah mencapai posisi terakhir yang diterima.

Setelah Anda terhubung ke lengan robot, Anda akan tiba di layar Konfigurasi. Ini berisi 3 halaman. Yang pertama adalah Run (lebih lanjut tentang itu nanti), yang kedua adalah Init dan yang ketiga adalah Loop. Init dan Loop pada dasarnya sama, yang membedakan hanya tempat menyimpan posisi.

Layar berisi 4 bilah pencarian dan tombol gripper di samping tombol simpan. Slider ini digunakan untuk mengatur posisi dan kecepatan gerakan, sedangkan tombol gripper digunakan untuk membuka atau menutup efektor. Semua perubahan terjadi seketika, jadi Anda akan segera melihat posisi baru di lengan robot, namun Anda harus mengklik tombol simpan untuk menambahkannya ke plot. Berikut demonstrasi singkatnya:

Jika Anda mengubah status gripper dan posisi lengan robot, maka itu akan disimpan sebagai dua perintah yang berbeda. Perintah gripper terlebih dahulu dan kemudian perintah posisi.

Seperti yang Anda harapkan, jalannya plot akan dimulai dengan init. Init dan loop bekerja seperti fungsi setup dan loop Arduino. Init bagus untuk gerakan yang tidak akan terulang lagi nanti. Ketika perintah init selesai, perintah loop akan mengikuti. Perintah loop akan diulang selamanya, atau setidaknya sampai Anda menghentikan plot. Jika Anda tidak membutuhkan loop atau init, biarkan bidang itu kosong.

Bidang ini adalah bidang EditText, artinya Anda dapat mengedit atau menghapus kontennya dengan mudah. Jika Anda tidak ingin menggunakan bilah geser, Anda dapat menulis perintah dengan tangan. Anda juga dapat menyalin dan menempelkan plot. Aplikasi akan mengingat plot terakhir yang Anda jalankan untuk digunakan nanti.

Baris pertama di bawah "Konfigurasi" digunakan sebagai umpan balik visual untuk pengujian. Bagian kiri menunjukkan posisi gawang terbaru untuk lengan robot (S - terkirim), sedangkan bidang kanan adalah posisi saat ini (R - diterima). Aplikasi akan mengirimkan posisi gawang baru ke lengan robot segera setelah posisi gawang dan posisi saat ini sama.

Seperti yang Anda lihat, ketika hanya ada init, lengan robot berhenti segera setelah menyelesaikan perintah init.

Dengan aplikasi saya, Anda dapat melakukan beberapa hal, tetapi ada banyak kemungkinan untuk perbaikan di masa mendatang. Saya berencana menggunakan fungsi, kontrol bersyarat, loop dengan argumen, dll di plot.

Jika Anda ingin membuat robot serupa, Anda dapat menemukan kode Arduino dan aplikasi Pengontrol Lengan Robot di segmen Kode proyek ini.

Hasil

Saya menggunakan perintah init dan loop dan memungkinkan saya untuk melakukan beberapa tugas yang cukup rumit. Berikut adalah video tentang bagaimana lengan robot saya mengatur beberapa bebek karet (init) kemudian mulai menggerakkannya satu per satu di sekitarnya, selamanya (loop).

Seperti yang Anda lihat jika Anda mempertimbangkan bahwa ini adalah lengan robot yang sangat murah dengan keterbatasan terkait perangkat keras yang serius, gerakannya sangat halus, berkelanjutan, dan akurat.

Kesimpulan

Perangkat lunak saya bekerja sangat baik dan di masa depan saya pasti akan bekerja untuk meningkatkan lengan robot ini, atau saya akan membangun yang lebih maju. Saya mencapai semua yang saya rencanakan untuk proyek ini dan tanpa masalah pemblokiran yang serius.

Arduino 101 sangat bagus untuk tujuan ini. Satu-satunya batasan papan adalah hanya 4 GPIO yang mampu PWM. Mungkin akan menjadi masalah di masa depan jika saya membuat lengan robot baru dengan lebih banyak derajat kebebasan, tetapi serial USB dan serial GPIO yang terpisah sangat berguna selama pengembangan dan board ini juga dapat menyediakan banyak daya komputasi.

Saya pikir aplikasi Android adalah ide yang bagus, namun saya harus membuatnya lebih kuat, ramah pengguna dan meningkatkan fungsinya. Ini adalah versi alfa saat ini.

WIZ750SR adalah kejutan yang sangat menyenangkan. Saya khawatir saya akan memiliki lebih banyak masalah dengan papan ini, tetapi setelah konfigurasi, itu bekerja dengan sempurna. Itu benar-benar transparan dan saya tidak memiliki masalah dengannya. Ini adalah perangkat yang sangat mudah digunakan dan modul Ethernet terbaik yang pernah saya gunakan dengan mikrokontroler saya.

Bekerja dengan lengan robot sangat menyenangkan, jadi saya pasti akan belajar lebih banyak tentangnya dan kemudian berbagi pengetahuan saya dengan Anda di masa depan! Terima kasih telah membaca!

Kode

Editor Web Arduino
Anda dapat menggunakan Arduino Web Editor untuk mengakses dan langsung mengunggah kode Arduino proyek saya
Kode Arduino dan Android
https://github.com/abysmalsb/Robot-Arm-Controller

Skema

Saat ini sistem menggunakan dua sumber daya terpisah. Satu dari port USB Arduino dan sumber 5V lainnya yang digunakan untuk memindahkan servos.

Proses manufaktur

  1. Robot Raspberry Pi dikendalikan melalui Bluetooth
  2. Robot Terkendali Gerakan Menggunakan Raspberry Pi
  3. Windows 10 IoT Core :Robot Terkendali Ucapan
  4. Robot Terkendali Wifi Menggunakan Raspberry Pi
  5. ROObockey:Robot Hoki Jalanan yang Dikendalikan dari Jarak Jauh
  6. Robot SCARA Lengan Ganda
  7. MeArm Robot Arm - Robot Anda - V1.0
  8. LED Terkendali Alexa Melalui Raspberry Pi
  9. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  10. Robot yang Dikendalikan Bicara