Isi kandungan:

Platform Robotik Arduino Mudah !: 5 Langkah
Platform Robotik Arduino Mudah !: 5 Langkah

Video: Platform Robotik Arduino Mudah !: 5 Langkah

Video: Platform Robotik Arduino Mudah !: 5 Langkah
Video: Belajar Robot Mulai dari Sini #2: Dasar Pemrograman Arduino 2024, November
Anonim
Platform Robotik Arduino Mudah!
Platform Robotik Arduino Mudah!
Platform Robotik Arduino Mudah!
Platform Robotik Arduino Mudah!

Saya baru mendapat Arduino setelah bermain-main dengan beberapa mikrokontroler AVR semasa mesyuarat pasukan Robotik. Saya menyukai idea cip yang dapat diprogramkan dengan harga yang sangat murah dan boleh menggunakan apa sahaja dari antara muka komputer yang sederhana, jadi saya mendapat Arduino kerana ia sudah mempunyai antara muka papan dan USB yang bagus. Untuk projek Arduino pertama saya, saya menggali kit Robotik Vex yang pernah saya buat dari beberapa pertandingan yang saya lakukan di sekolah menengah. Saya selalu mahu membuat platform robotik yang dikendalikan oleh komputer tetapi mikrokontroler Vex memerlukan kabel pengaturcaraan yang tidak saya miliki. Saya memutuskan untuk menggunakan Arduino baru saya (dan mungkin kemudian cip AVR yang kosong jika saya berjaya) untuk memacu platform. Akhirnya saya mahu mendapatkan netbook dan kemudian saya dapat memandu robot menggunakan WiFi dan melihat webcamnya dari jauh.

Saya berjaya mendapatkan protokol bersiri yang baik dan contoh mudah yang menggerakkan robot menggunakan pengawal Xbox 360 yang disambungkan ke PC Linux.

Langkah 1: Apa Yang Boleh Dilakukannya…

Apa Yang Boleh Dilakukannya …
Apa Yang Boleh Dilakukannya …
Apa Yang Boleh Dilakukannya …
Apa Yang Boleh Dilakukannya …

Arduino adalah platform yang sangat serba boleh. Tujuan asas saya adalah untuk mendapatkan Arduino untuk menghubungkan dua motor Vex ke PC, tetapi saya mempunyai banyak pin input / output yang tersisa dan memutuskan untuk menambahkan beberapa barang tambahan. Sekarang saya mempunyai LED RGB untuk status port bersiri (hijau jika paket bagus, merah jika buruk) dan kipas PC yang didorong oleh transistor. Saya juga boleh menambah suis dan sensor tetapi saya belum memasukkannya. Perkara terbaik ialah anda boleh menambahkan apa sahaja yang anda mahukan ke robot Arduino. Hanya memerlukan sedikit kod antara muka untuk mengawal barang tambahan dan mendapatkan input ke komputer.

Langkah 2: Bahagian

Bahagian
Bahagian
Bahagian
Bahagian
Bahagian
Bahagian

Untuk robot saya, saya menggunakan beberapa bahagian yang berbeza. Sebilangan besar bahagiannya adalah dari barang lama yang saya letakkan di sekitar ruang bawah tanah saya.1) Arduino Duemilanove w / ATMega328Ini adalah Arduino terbaru, dan kerana saya baru mendapatkannya beberapa hari yang lalu, saya mempunyai yang terbaru. Walau bagaimanapun, kodnya cukup kecil sehingga sesuai dengan Arduino mana pun. Ia mungkin boleh digunakan pada ATTiny (jika saya membina pengawal robot selain dari Arduino, ATTiny 2313 kelihatan seperti pilihan yang baik, lebih kecil dan lebih murah tetapi masih mempunyai banyak output dan antara muka UART bersiri) 2) Vex Robotics PlatformI mendapat kit Vex beberapa tahun yang lalu untuk membina robot yang dikendalikan radio untuk mengambil barang untuk pertandingan sekolah menengah. Saya membina pangkalan "bot persegi" asas yang mempunyai 4 roda yang digerakkan oleh dua motor. Anda boleh menggantikan pangkalan robot lain jika anda mempunyai platform lain yang ingin anda pandu. Perkara penting yang perlu diperhatikan adalah bahawa motor Vex pada dasarnya adalah servo putaran berterusan, mereka menggunakan modulasi lebar nadi untuk memberi isyarat seberapa cepat dan ke arah mana untuk berpusing. Motor Vex bagus kerana mempunyai voltan operasi yang tinggi, antara 5 hingga 15 volt. Saya menggunakan 12V kerana saya mempunyai bateri 12V. Untuk kebanyakan pelayan hobi standard, anda memerlukan voltan yang lebih rendah (selalunya 6 volt).3) Bateri Robot tidak berguna tanpa bekalan kuasa. Untuk pengujian saya menggunakan penyesuai wall-wart standard 9V dari RadioShack, tetapi untuk operasi tanpa wayar, saya menjumpai pek bateri NiMH 12V di komputer riba kuno. Walaupun tidak mempunyai cukup caj untuk menjalankan komputer riba, ia menggerakkan robot Vex saya dengan baik. Ia juga dapat menghidupkan Arduino menggunakan pin input Vin pada penyambung kuasa, Arduino akan mengatur 12V ke bawah hingga 5 dan bahkan mengeluarkannya keluar pin output 5V pada penyambung kuasa. 4) Papan Roti Asas Saat ini saya menggunakan papan roti untuk kawat semuanya. Akhirnya saya akan mendapatkan papan prototaip yang lebih baik dan pemateri pada beberapa sambungan yang lebih kekal tetapi buat masa ini papan roti memudahkan untuk menukar sesuatu. Papan roti saya adalah "papan roti asas" SparkFun, hanya papan roti di plat logam dengan 3 terminal.5) Penukar RS232-TTL berasaskan MAX232Jika anda ingin menggerakkan robot anda menggunakan sambungan port bersiri RS-232 (berbanding dengan Arduino yang dibina dalam USB) anda boleh menggunakan penukar RS232-TTL. Saya menggunakan MAX232 kerana beberapa dari mereka berbaring dan saya menyoldernya pada sekeping papan prototaip kecil dengan kapasitor yang diperlukan. Saya memerlukan RS-232 kerana komputer riba lama saya hanya mempunyai satu port USB dan saya menggunakannya untuk pengawal permainan untuk menggerakkan robot.6) Bahagian tambahan seperti yang dikehendaki Untuk memudahkan proses debug protokol bersiri, saya meletakkan LED RGB di atasnya (mendapat satu dengan pesanan Arduino saya kerana mereka terdengar sejuk). Lampu berkedip merah, hijau, biru secara berurutan ketika Arduino melakukan boot untuk menunjukkan robot telah dihidupkan semula dan kemudian menyala Hijau apabila paket motor telah diterima, Biru ketika paket kipas telah diterima, dan Merah ketika buruk atau tidak diketahui paket telah diterima. Untuk menggerakkan kipas, saya menggunakan transistor NPN standard (yang sama seperti yang saya tunjukkan dalam Instructable terakhir saya) dan perintang di antara transistor dan Arduino (transistor menarik arus terlalu banyak dan memanaskan Arduino, jadi saya meletakkan had perintang untuk menghentikannya).

Langkah 3: Pengaturcaraan Arduino dan PC

Pengaturcaraan Arduino dan PC
Pengaturcaraan Arduino dan PC

Untuk memprogram Arduino, anda pasti memerlukan perisian Arduino dan kabel USB. Anda juga dapat memprogram Arduino menggunakan port bersiri dan penukar tahap TTL jika PC anda mempunyai port bersiri. Perhatikan bahawa antara muka bersiri USB tidak akan berkomunikasi dengan pemproses ATMega Arduino jika terdapat penukar tahap yang disambungkan ke pin bersiri Arduino (pin 0 dan 1) jadi putuskan sambungannya sebelum menggunakan USB. Pada Arduino, kami memerlukan antara muka bersiri yang membolehkan PC untuk mengawal motor. Kami juga memerlukan sistem pemacu servo PWM untuk menghantar isyarat yang betul ke motor Vex dan memastikannya menuju ke arah yang betul apabila diberi nilai yang tepat. Saya juga menambahkan beberapa LED sederhana yang berkelip, terutamanya untuk petunjuk status tetapi juga kerana kelihatannya keren. Pada PC kita perlu membuka port bersiri dan menghantar bingkai data yang akan difahami oleh program Arduino. PC juga perlu dilengkapi dengan nilai motor. Cara mudah untuk melakukannya adalah dengan menggunakan pad permainan USB atau kayu bedik, saya menggunakan pengawal Xbox 360. Pilihan lain adalah menggunakan komputer berangkaian (sama ada netbook atau papan ITX mini kecil) pada robot itu sendiri untuk memandu tanpa wayar. Dengan netbook, anda bahkan dapat menggunakan kamera web onboard untuk menstrimkan kembali suapan video dan menggerakkan robot anda dari jauh. Saya menggunakan sistem soket Linux untuk melakukan pengaturcaraan rangkaian untuk persediaan saya. Satu program ("pelayan joystick") dijalankan pada PC berasingan yang mempunyai pengawal terpasang ke dalamnya, dan program lain ("klien") dijalankan di netbook yang disambungkan ke Arduino. Ini menghubungkan kedua-dua komputer dan menghantar maklumat joystick ke netbook, yang kemudian menghantar paket bersiri ke Arduino yang menggerakkan robot. Untuk menyambung ke Arduino menggunakan PC Linux (dalam C ++), anda mesti terlebih dahulu membuka port bersiri di sebelah kanan baud rate dan kemudian hantarkan nilai menggunakan protokol yang juga anda gunakan pada kod Arduino. Format bersiri saya ringkas dan berkesan. Saya menggunakan 4 bait per "bingkai" untuk menghantar dua kelajuan motor (masing-masing adalah satu bait). Byte pertama dan terakhir adalah nilai yang dikodkan keras yang digunakan untuk mengelakkan Arduino menghantar bait yang salah ke kod PWM dan menyebabkan motor menjadi gila. Ini adalah tujuan utama LED RGB, ia berkedip merah ketika bingkai berseri tidak lengkap. 4 bait adalah seperti berikut: 255 (bait "permulaan" berkod keras),, 200 (bait "akhir" berkod keras) Untuk memastikan penerimaan data yang boleh dipercayai, pastikan anda meletakkan kelewatan yang cukup di antara gelung program. Sekiranya anda menjalankan kod PC anda terlalu cepat, ia akan membanjiri port dan Arduino mungkin mula turun atau bahkan membaca byte yang salah. Walaupun tidak menjatuhkan maklumat, ia juga dapat melimpah penyangga port bersiri Arduino. Untuk motor Vex, saya menggunakan perpustakaan Arduino Servo. Oleh kerana motor Vex hanyalah motor putaran berterusan, mereka menggunakan isyarat yang sama persis yang digunakan oleh servos. Namun, bukannya 90 darjah menjadi titik tengah, ia adalah titik berhenti di mana motor tidak berputar. Menurunkan "sudut" menyebabkan motor mula berputar ke satu arah, sementara menaikkan sudut menjadikannya berputar ke arah yang lain. Semakin jauh dari titik tengah anda, semakin cepat motor akan berputar. Walaupun tidak akan mematahkan apa-apa jika anda menghantar nilai lebih dari 180 darjah ke motor, saya sarankan untuk membatasi nilai dari 0 hingga 180 darjah (yang dalam hal ini adalah kenaikan kelajuan). Oleh kerana saya mahukan lebih banyak kawalan dan kawalan robot yang kurang dikendalikan, saya menambahkan "had laju" perisian pada program saya yang tidak membenarkan kelajuan meningkat melebihi 30 "darjah" di mana-mana arah (jarak 90 +/- 30). Saya bercadang untuk menambahkan perintah port bersiri yang mengubah had laju, sehingga komputer dapat menghilangkan had dengan cepat jika anda ingin pergi dengan cepat (Saya telah menguji di bilik kecil jadi saya tidak mahu ia mempercepat dan merempuh dinding, terutamanya dengan netbook di atasnya). Untuk maklumat lebih lanjut, muat turun kod yang dilampirkan pada akhir Instructable ini.

Langkah 4: Tambahkan Netbook untuk Meneroka Dunia Tidak Dikenal Dari Jauh

Tambahkan Netbook untuk Meneroka Dunia Tidak Dikenal Dari Jauh
Tambahkan Netbook untuk Meneroka Dunia Tidak Dikenal Dari Jauh
Tambahkan Netbook untuk Meneroka Dunia Tidak Dikenal Dari Jauh
Tambahkan Netbook untuk Meneroka Dunia Tidak Dikenal Dari Jauh

Dengan komputer penuh di atas robot Arduino anda, anda dapat menggerakkan robot anda sejauh yang boleh dicapai oleh WiFi anda tanpa kabel untuk menghadkan robot ke satu kawasan. Calon yang baik untuk pekerjaan ini adalah netbook, kerana netbook kecil, ringan, mempunyai bateri terpasang, mempunyai WiFi, dan kebanyakan malah mempunyai kamera web yang boleh digunakan untuk mengalirkan pandangan robot kembali ke tempat yang selamat di mana anda dapat mengawalnya. Sekiranya netbook anda dilengkapi dengan perkhidmatan jalur lebar mudah alih, rangkaian anda hampir tidak terhad. Dengan bateri yang mencukupi, anda boleh menggerakkan robot anda ke tempat pizza tempatan dan membuat pesanan melalui kamera web (tidak digalakkan, robot biasanya tidak dibenarkan di tempat pizza, walaupun mereka mungkin akan mencuba robot dan mungkin malah pizza). Mungkin juga cara yang baik untuk menjelajahi kedalaman gelap ruang bawah tanah anda dari keselesaan kerusi pejabat anda, walaupun menambah beberapa lampu depan mungkin sangat membantu dalam kes ini.

Terdapat banyak cara untuk membuat ini berfungsi, mungkin banyak yang lebih mudah daripada saya, walaupun saya tidak biasa dengan Pemprosesan atau bahasa berasaskan skrip jadi saya memilih untuk menggunakan Linux dan C ++ untuk membuat pautan kawalan tanpa wayar antara stesen pangkalan saya (aka ThinkPad lama) dan netbook Lenovo IdeaPad baru saya yang disambungkan ke pangkalan pemacu Arduino. Kedua-dua PC ini menjalankan Ubuntu. ThinkPad saya dipasang ke LAN sekolah saya dan IdeaPad saya disambungkan ke titik akses WiFi saya yang juga disambungkan ke LAN sekolah (saya tidak dapat mendapatkan aliran video yang boleh dipercayai dari WiFi sekolah kerana orang lain menggunakannya, jadi saya menetapkan buat penghala saya sendiri untuk menyediakan sambungan yang baik). Sambungan yang baik sangat penting dalam kes saya kerana saya belum melaksanakan pemeriksaan ralat atau tamat masa. Sekiranya sambungan rangkaian tiba-tiba terputus, robot terus berjalan sehingga menabrak sesuatu atau saya menjalankan dan menghentikannya. Ini adalah faktor utama di sebalik keputusan saya untuk melambatkan pemanduan baik dengan menggerakkan motor ke bawah dan menerapkan had kelajuan perisian.

Langkah 5: Dapatkan Suapan Video

Setelah penjelajah robot anda dapat memandu tanpa wayar, anda mungkin mahu mendapatkan suapan video dari netbook supaya anda dapat mengetahui di mana robot anda. Sekiranya anda menggunakan Ubuntu (atau walaupun tidak!) Saya cadangkan menggunakan VLC Media Player untuk melakukan streaming. Sekiranya anda belum memasangnya, anda benar-benar ketinggalan, jadi pasang dengan menggunakan perintah "sudo apt-get install vlc", cari VLC di Pusat Perisian Ubuntu (9.10 sahaja), atau muat turun pemasang di videolan. org jika anda menggunakan Windows. Anda memerlukan VLC berjalan pada kedua-dua PC. VLC mampu melakukan streaming serta memainkan aliran pada rangkaian. Di netbook (robot komputer) terlebih dahulu pastikan kamera web anda (sama ada terbina dalam atau disambungkan USB) berfungsi dengan mengklik Buka Tangkap Peranti dan mencuba Video untuk Linux 2 (beberapa peranti lama mungkin memerlukan Video untuk Linux dan bukannya versi 2 yang baru). Anda harus melihat paparan kamera di skrin netbook. Untuk mengalirkannya, pilih Streaming dari menu File dan kemudian pilih tab Capture Device di bahagian atas tetingkap yang muncul. Ingatlah bahawa Ubuntu (dan banyak distro Linux lain) membiarkan anda menahan Alt untuk mengklik dan menyeret tetingkap yang terlalu besar untuk skrin anda (terutama berguna pada netbook lama, walaupun IdeaPad saya mempunyai resolusi 1024x576 yang ganjil tanpa sebab yang jelas). Untuk mengurangkan kelewatan, klik pada "Show More Options" dan turunkan nilai cache. Jumlah yang boleh anda turunkan kadang-kadang bergantung pada peranti, ia akan menjadi tidak stabil jika anda menurunkannya terlalu banyak. Pada 300ms anda mungkin mendapat sedikit kelewatan tetapi tidak terlalu buruk.

Seterusnya, klik Stream untuk pergi ke menu seterusnya. Klik Seterusnya, kemudian pilih dan tambahkan HTTP sebagai destinasi baru. Sekarang sediakan Transkoding untuk menjadikan aliran lebih kecil. Saya membuat profil tersuai yang menggunakan M-JPEG pada 60kb / s dan 8fps. Ini kerana menggunakan codec lanjutan seperti MPEG atau Theora akan memakan masa CPU yang besar pada pemproses Atom netbook dan ini boleh menyebabkan suapan video anda berhenti tanpa sebab yang jelas. MJPEG adalah codec ringkas yang mudah digunakan pada bitrate rendah. Setelah memulakan aliran anda, buka VLC pada PC anda yang lain, buka aliran rangkaian, pilih HTTP, dan kemudian taipkan alamat IP dari netbook anda (sama ada tempatan atau Internet bergantung pada bagaimana anda menyambung) diikuti dengan ": 8080". Anda perlu menentukan port untuk beberapa alasan yang ganjil, jika tidak, ia memberikan kesilapan. Sekiranya anda mempunyai sambungan yang baik, anda harus melihat suapan kamera web anda pada PC anda yang lain, tetapi sedikit kelewatan (sekitar satu saat). Saya tidak tahu dengan tepat mengapa kelewatan ini berlaku, tetapi saya tidak dapat mengetahui bagaimana menyingkirkannya. Sekarang buka aplikasi kawalan dan mulakan memandu robot netbook anda. Rasa bagaimana kelewatan berfungsi semasa memandu sehingga anda tidak akan mengalami apa-apa. Sekiranya berjaya, robot netbook anda sudah selesai.

Disyorkan: