Daftar Isi:

Platform Robotika Arduino Sederhana!: 5 Langkah
Platform Robotika Arduino Sederhana!: 5 Langkah

Video: Platform Robotika Arduino Sederhana!: 5 Langkah

Video: Platform Robotika Arduino Sederhana!: 5 Langkah
Video: 5 PROJECT ARDUINO MUDAH DAN SEDERHANA 2024, November
Anonim
Platform Robotika Arduino Sederhana!
Platform Robotika Arduino Sederhana!
Platform Robotika Arduino Sederhana!
Platform Robotika Arduino Sederhana!

Saya baru saja mendapatkan Arduino setelah bermain-main dengan beberapa mikrokontroler AVR selama pertemuan tim Robotika. Saya menyukai ide chip yang dapat diprogram yang sangat murah yang dapat menjalankan apa saja dari antarmuka komputer yang sederhana, jadi saya mendapatkan Arduino karena sudah memiliki papan dan antarmuka USB yang bagus. Untuk proyek Arduino pertama saya, saya menggali kit Vex Robotics yang saya miliki dari beberapa kompetisi yang saya lakukan di sekolah menengah. Saya selalu ingin membuat platform robotika yang digerakkan komputer tetapi mikrokontroler Vex membutuhkan kabel pemrograman yang tidak saya miliki. Saya memutuskan untuk menggunakan Arduino baru saya (dan mungkin nanti chip AVR kosong jika saya membuatnya berfungsi) untuk menggerakkan platform. Akhirnya saya ingin mendapatkan netbook dan kemudian saya bisa mengendarai robot menggunakan WiFi dan melihat webcam-nya dari jarak jauh.

Saya berhasil mendapatkan protokol serial yang layak dan contoh sederhana yang menggerakkan robot menggunakan pengontrol Xbox 360 yang terhubung ke PC Linux.

Langkah 1: Apa yang Dapat Dilakukan…

Apa yang Dapat Dilakukan…
Apa yang Dapat Dilakukan…
Apa yang Dapat Dilakukan…
Apa yang Dapat Dilakukan…

Arduino adalah platform yang sangat serbaguna. Tujuan dasar saya adalah hanya untuk membuat Arduino menghubungkan dua motor Vex ke PC, tetapi saya memiliki banyak pin input/output yang tersisa dan memutuskan untuk menambahkan beberapa hal tambahan. Saat ini saya memiliki LED RGB untuk status port serial (hijau jika paket bagus, merah jika buruk) dan kipas PC yang digerakkan oleh transistor. Saya juga dapat menambahkan sakelar dan sensor tetapi saya belum memasangnya. Hal terbaiknya adalah Anda dapat menambahkan apa pun yang Anda inginkan ke robot Arduino. Hanya dibutuhkan sedikit kode antarmuka untuk mengontrol hal-hal tambahan dan mendapatkan input ke komputer.

Langkah 2: Bagian

Bagian
Bagian
Bagian
Bagian
Bagian
Bagian

Untuk robot saya, saya menggunakan beberapa bagian yang berbeda. Sebagian besar suku cadang berasal dari barang lama yang saya letakkan di sekitar ruang bawah tanah saya.1) Arduino Duemilanove dengan ATMega328Ini adalah Arduino terbaru, dan karena saya baru mendapatkannya beberapa hari yang lalu, saya memiliki yang terbaru. Namun, kodenya cukup kecil sehingga mudah dipasang di Arduino mana pun. Bahkan mungkin bisa muat pada ATTiny (jika saya membuat pengontrol robot selain dari Arduino, ATTiny 2313 terlihat seperti pilihan yang baik, lebih kecil dan lebih murah tetapi masih memiliki banyak output dan antarmuka UART serial)2) Platform Robotika VexI mendapat kit Vex beberapa tahun yang lalu untuk membangun robot yang dikendalikan radio untuk mengambil barang-barang untuk kompetisi sekolah menengah. Saya membangun dasar "bot persegi" yang memiliki 4 roda yang digerakkan oleh dua motor. Anda dapat mengganti basis robot lain jika Anda memiliki platform lain yang ingin Anda kendarai. Hal penting yang perlu diperhatikan adalah bahwa motor Vex pada dasarnya adalah servos rotasi kontinu, mereka menggunakan modulasi lebar pulsa untuk memberi sinyal seberapa cepat dan ke arah mana harus berbelok. Motor Vex bagus karena memiliki rentang tegangan operasi yang tinggi, antara 5 hingga 15 volt. Saya menggunakan 12V karena saya memiliki baterai 12V. Untuk sebagian besar servos hobi standar, Anda memerlukan tegangan yang lebih rendah (seringkali 6 volt).3) Baterai Robot tidak berguna tanpa catu daya. Untuk pengujian saya menggunakan adaptor kutil dinding 9V standar dari RadioShack, tetapi untuk pengoperasian tanpa kabel saya menemukan paket baterai NiMH 12V di laptop kuno. Meskipun tidak cukup untuk menjalankan laptop, itu menggerakkan robot Vex saya dengan baik. Itu juga dapat memberi daya pada Arduino menggunakan pin input Vin pada konektor daya, Arduino akan mengatur 12V ke 5 dan bahkan mengeluarkannya dari pin output 5V pada konektor daya.4) Breadboard DasarSaat ini saya menggunakan papan tempat memotong roti untuk kawat semuanya. Akhirnya saya akan mendapatkan papan prototyping yang lebih bagus dan menyolder pada beberapa koneksi yang lebih permanen tetapi untuk saat ini papan tempat memotong roti memudahkan untuk mengubah banyak hal. Papan tempat memotong roti saya adalah "papan tempat memotong roti dasar" SparkFun, hanya papan tempat memotong roti di atas pelat logam dengan 3 terminal.5) Konverter RS232-TTL berbasis MAX232Jika Anda ingin menggerakkan robot Anda menggunakan koneksi port serial RS-232 (berlawanan dengan yang dibangun Arduino di USB) Anda dapat menggunakan konverter RS232-TTL. Saya menggunakan MAX232 karena saya memiliki beberapa dari mereka yang tergeletak di sekitar dan saya menyoldernya pada sepotong kecil papan prototyping dengan kapasitor yang diperlukan. Saya membutuhkan RS-232 karena laptop lama saya hanya memiliki satu port USB dan saya menggunakannya untuk pengontrol permainan untuk menggerakkan robot.6) Bagian tambahan seperti yang diinginkanUntuk memudahkan debugging protokol serial, saya memasang LED RGB di atasnya (dapatkan satu dengan pesanan Arduino saya karena mereka terdengar keren). Lampu berkedip merah, hijau, biru secara berurutan ketika Arduino boot untuk menunjukkan robot telah di-boot ulang dan kemudian menyala Hijau ketika paket motor telah diterima, Biru ketika paket kipas telah diterima, dan Merah ketika buruk atau tidak dikenal paket sudah diterima. Untuk menggerakkan kipas, saya menggunakan transistor NPN standar (yang sama yang saya tunjukkan di Instruksi terakhir saya) dan resistor di antara transistor dan Arduino (transistor menarik terlalu banyak arus dan memanaskan Arduino, jadi saya membatasi resistor untuk menghentikannya).

Langkah 3: Pemrograman Arduino dan PC

Pemrograman Arduino dan PC
Pemrograman Arduino dan PC

Untuk memprogram Arduino, Anda jelas membutuhkan perangkat lunak Arduino dan kabel USB. Anda juga dapat memprogram Arduino menggunakan port serial dan konverter level TTL jika PC Anda memiliki port serial. Perhatikan bahwa antarmuka serial USB tidak akan berkomunikasi dengan prosesor ATMega Arduino jika ada konverter level yang terhubung ke pin serial Arduino (pin 0 dan 1) jadi putuskan sambungannya sebelum menggunakan USB. Pada Arduino kita akan membutuhkan antarmuka serial yang memungkinkan PC untuk mengontrol motor. Kami juga akan membutuhkan sistem penggerak servo PWM untuk mengirim sinyal yang benar ke motor Vex dan memastikan mereka menuju ke arah yang benar ketika diberi nilai yang benar. Saya juga menambahkan beberapa LED berkedip sederhana, terutama untuk indikasi status tetapi juga karena terlihat keren. Pada PC kita perlu membuka port serial dan mengirim bingkai data yang akan dipahami oleh program Arduino. PC juga perlu menghasilkan nilai motor. Cara mudah untuk melakukannya adalah dengan menggunakan USB game pad atau joystick, saya menggunakan pengontrol Xbox 360. Pilihan lainnya adalah menggunakan komputer jaringan (baik netbook atau papan ITX mini kecil) pada robot itu sendiri untuk mengemudi secara nirkabel. Dengan netbook, Anda bahkan dapat menggunakan webcam onboard untuk mengalirkan kembali umpan video dan menggerakkan robot Anda dari jarak jauh. Saya menggunakan sistem soket Linux untuk melakukan pemrograman jaringan untuk pengaturan saya. Satu program ("server joystick") dijalankan pada PC terpisah yang memiliki pengontrol yang terpasang di dalamnya, dan program lain ("klien") dijalankan pada netbook yang terhubung ke Arduino. Ini menghubungkan dua komputer dan mengirimkan informasi joystick ke netbook, yang kemudian mengirimkan paket serial ke Arduino yang menggerakkan robot. Untuk terhubung ke Arduino menggunakan PC Linux (dalam C++) Anda harus terlebih dahulu membuka port serial di tempat yang benar. baud rate dan kemudian mengirim nilai menggunakan protokol yang juga telah Anda gunakan pada kode Arduino. Format serial saya sederhana dan efektif. Saya menggunakan 4 byte per "bingkai" untuk mengirim dua kecepatan motor (masing-masing satu byte). Byte pertama dan terakhir adalah nilai hard-coded yang digunakan untuk menjaga Arduino agar tidak mengirimkan byte yang salah ke kode PWM dan menyebabkan motor menjadi gila. Ini adalah tujuan utama dari LED RGB, berkedip merah ketika bingkai serial tidak lengkap. 4 byte tersebut adalah sebagai berikut:255 (byte "start" berkode keras),,, 200 (byte "akhir" berkode keras)Untuk memastikan penerimaan data yang andal, pastikan Anda menempatkan penundaan yang cukup di antara loop program. Jika Anda menjalankan kode PC Anda terlalu cepat, itu akan membanjiri port dan Arduino mungkin mulai menjatuhkan atau bahkan salah membaca byte. Bahkan jika tidak menjatuhkan informasi, itu juga dapat membanjiri buffer port serial Arduino. Untuk motor Vex, saya menggunakan perpustakaan Arduino Servo. Karena motor Vex hanyalah motor rotasi kontinu, mereka menggunakan sinyal yang sama persis dengan yang digunakan servo. Namun, alih-alih 90 derajat menjadi titik pusat, itu adalah titik berhenti di mana motor tidak berputar. Menurunkan "sudut" menyebabkan motor mulai berputar ke satu arah, sementara menaikkan sudut membuatnya berputar ke arah lain. Semakin jauh dari titik pusat Anda, semakin cepat motor akan berputar. Meskipun tidak akan merusak apa pun jika Anda mengirim nilai lebih besar dari 180 derajat ke motor, saya akan menyarankan untuk membatasi nilai dari 0 hingga 180 derajat (yang dalam hal ini adalah peningkatan kecepatan). Karena saya ingin lebih banyak kontrol dan lebih sedikit mengemudi robot di luar kendali, saya menambahkan perangkat lunak "batas kecepatan" ke program saya yang tidak memungkinkan kecepatan meningkat di atas 30 "derajat" di kedua arah (kisaran adalah 90 +/- 30). Saya berencana menambahkan perintah port serial yang mengubah batas kecepatan, sehingga komputer dapat menghapus batas dengan cepat jika Anda ingin cepat (saya sudah menguji di kamar kecil jadi saya tidak ingin mempercepat dan menabrak dinding, terutama dengan netbook di atasnya). Untuk informasi lebih lanjut, unduh kode terlampir di akhir Instruksi ini.

Langkah 4: Tambahkan Netbook untuk Menjelajahi Dunia Tak Dikenal Dari Jarak Jauh

Tambahkan Netbook untuk Menjelajahi Dunia Tak Dikenal Dari Jarak Jauh
Tambahkan Netbook untuk Menjelajahi Dunia Tak Dikenal Dari Jarak Jauh
Tambahkan Netbook untuk Menjelajahi Dunia Tak Dikenal Dari Jarak Jauh
Tambahkan Netbook untuk Menjelajahi Dunia Tak Dikenal Dari Jarak Jauh

Dengan PC lengkap yang terpasang di robot Arduino Anda, Anda dapat mengemudikan robot Anda sejauh yang dapat dijangkau WiFi Anda tanpa kabel apa pun untuk membatasi robot ke satu area. Kandidat yang baik untuk pekerjaan ini adalah netbook, karena netbook kecil, ringan, memiliki baterai internal, memiliki WiFi, dan sebagian besar bahkan memiliki webcam bawaan yang dapat digunakan untuk mengalirkan tampilan robot kembali ke tempat yang aman di mana Anda dapat mengontrolnya. Juga, jika netbook Anda dilengkapi dengan layanan mobile broadband, jangkauan Anda praktis tidak terbatas. Dengan baterai yang cukup, Anda dapat mengendarai robot Anda ke tempat pizza lokal dan memesan melalui webcam (tidak disarankan, robot biasanya tidak diizinkan di tempat pizza, bahkan jika mereka adalah orang yang mungkin akan mencoba mencuri robot dan mungkin bahkan pizza). Ini mungkin juga cara yang baik untuk menjelajahi kedalaman gelap ruang bawah tanah Anda dari kenyamanan kursi kantor Anda, meskipun menambahkan beberapa lampu depan mungkin sangat membantu dalam kasus ini.

Ada banyak cara untuk membuatnya bekerja, banyak yang mungkin jauh lebih mudah daripada saya, meskipun saya tidak terbiasa dengan Pemrosesan atau bahasa berbasis skrip jadi saya memilih untuk menggunakan Linux dan C++ untuk membuat tautan kontrol nirkabel antara stasiun pangkalan saya (alias ThinkPad lama) dan netbook Lenovo IdeaPad baru saya yang terhubung ke basis drive Arduino. Kedua PC menjalankan Ubuntu. ThinkPad saya terhubung ke LAN sekolah saya dan IdeaPad saya terhubung ke titik akses WiFi saya yang juga terhubung ke LAN sekolah (saya tidak bisa mendapatkan streaming video yang andal dari WiFi sekolah karena semua orang menggunakannya, jadi saya mengaturnya up router saya sendiri untuk menyediakan koneksi yang baik). Koneksi yang baik sangat penting dalam kasus saya karena saya belum menerapkan pemeriksaan kesalahan atau batas waktu. Jika koneksi jaringan tiba-tiba terputus, robot terus berjalan hingga menabrak sesuatu atau saya menjalankan dan menghentikannya. Ini adalah faktor utama di balik keputusan saya untuk memperlambat drivetrain baik dengan menurunkan kecepatan motor dan menerapkan batas kecepatan perangkat lunak.

Langkah 5: Dapatkan Umpan Video

Setelah penjelajah robot Anda dapat mengemudi secara nirkabel, Anda mungkin ingin memiliki umpan video dari netbook sehingga Anda dapat mengetahui di mana robot Anda berada. Jika Anda menggunakan Ubuntu (atau bahkan jika tidak!) Saya sarankan menggunakan VLC Media Player untuk streaming. Jika Anda belum menginstalnya, Anda benar-benar ketinggalan, jadi instal menggunakan perintah "sudo apt-get install vlc", telusuri VLC di Pusat Perangkat Lunak Ubuntu (hanya 9.10), atau unduh penginstal di videolan. org jika Anda menggunakan Windows. Anda perlu menjalankan VLC di kedua PC. VLC mampu streaming serta memutar streaming di jaringan. Pada netbook (robot PC) pertama-tama pastikan webcam Anda (baik built-in atau USB terhubung) berfungsi dengan mengklik Open Capture Device dan mencoba Video for Linux 2 (beberapa perangkat lama mungkin memerlukan Video for Linux daripada versi 2 yang baru). Anda akan melihat tampilan kamera di layar netbook. Untuk melakukan streaming, pilih Streaming dari menu File lalu pilih tab Capture Device di bagian atas jendela yang muncul. Ingat bahwa Ubuntu (dan banyak distro Linux lainnya) memungkinkan Anda menahan Alt untuk mengklik dan menyeret jendela yang terlalu besar untuk layar Anda (terutama berguna pada netbook lama, meskipun IdeaPad saya memiliki resolusi 1024x576 yang aneh tanpa alasan yang jelas). Untuk mengurangi penundaan, klik "Show More Options" dan turunkan nilai caching. Jumlah yang dapat Anda turunkan terkadang tergantung pada perangkat, itu menjadi tidak stabil jika Anda menurunkannya terlalu banyak. Pada 300ms Anda mungkin mendapatkan sedikit penundaan tetapi itu tidak terlalu buruk.

Selanjutnya klik Stream untuk menuju ke menu selanjutnya. Klik Next, lalu pilih dan tambahkan HTTP sebagai tujuan baru. Sekarang atur Transcoding untuk membuat aliran lebih kecil. Saya membuat profil khusus yang menggunakan M-JPEG pada 60kb/s dan 8fps. Ini karena menggunakan codec canggih seperti MPEG atau Theora akan menghabiskan banyak waktu CPU pada prosesor Atom netbook dan ini dapat menyebabkan umpan video Anda berhenti tanpa alasan yang jelas. MJPEG adalah codec sederhana yang mudah digunakan pada bitrate rendah. Setelah memulai streaming Anda, buka VLC di PC Anda yang lain, buka aliran jaringan, pilih HTTP, lalu ketikkan alamat IP netbook Anda (baik lokal atau Internet tergantung pada bagaimana Anda terhubung) diikuti dengan ":8080". Anda perlu menentukan port untuk beberapa alasan aneh, jika tidak, itu memberi Anda kesalahan. Jika Anda memiliki koneksi yang layak, Anda akan melihat umpan webcam Anda di PC lain, tetapi akan ada sedikit penundaan (sekitar satu detik). Saya tidak tahu persis mengapa penundaan ini terjadi, tetapi saya tidak tahu bagaimana cara menghilangkannya. Sekarang buka aplikasi kontrol dan mulai mengemudikan robot netbook Anda. Rasakan bagaimana penundaan bekerja saat mengemudi sehingga Anda tidak akan menabrak apa pun. Jika berhasil, robot netbook Anda selesai.

Direkomendasikan: