Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

Hello

Dalam artikel ini saya ingin menerangkan proses memasang robot pertama saya menggunakan Arduino. Bahan ini akan berguna kepada pemula lain seperti saya yang ingin membuat sejenis "kereta berjalan sendiri". Artikel itu adalah penerangan tentang peringkat bekerja dengan penambahan saya pada pelbagai nuansa. Pautan ke kod akhir (kemungkinan besar bukan yang paling ideal) diberikan pada penghujung artikel.

Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

Seboleh-bolehnya, saya melibatkan anak saya (8 tahun) untuk mengambil bahagian. Apa sebenarnya yang berkesan dengannya dan apa yang tidak - Saya telah mendedikasikan sebahagian daripada artikel untuk ini, mungkin ia berguna kepada seseorang.

Penerangan umum robot

Pertama, beberapa perkataan tentang robot itu sendiri (idea). Saya tidak benar-benar mahu memasang sesuatu yang standard pada mulanya. Pada masa yang sama, set komponen agak standard - casis, enjin, sensor ultrasonik, sensor garis, LED, tweeter. Pada mulanya, robot telah dicipta daripada "set sup" ini yang menjaga wilayahnya. Dia memandu ke arah pesalah yang telah melepasi garisan bulatan, dan kemudian kembali ke tengah. Walau bagaimanapun, versi ini memerlukan garis yang dilukis, ditambah dengan matematik tambahan untuk kekal dalam bulatan pada setiap masa.

Oleh itu, selepas beberapa pemikiran, saya mengubah idea itu dan memutuskan untuk membuat robot "pemburu". Pada permulaannya, ia memusingkan paksinya, memilih sasaran (orang) yang berdekatan. Jika "mangsa" dikesan, "pemburu" menghidupkan lampu berkelip dan siren dan mula memandu ke arahnya. Apabila orang itu menjauh/lari, robot memilih sasaran baharu dan mengejarnya, dan seterusnya. Robot sedemikian tidak memerlukan bulatan terhad, dan ia boleh berfungsi di kawasan terbuka.

Seperti yang anda lihat, ini adalah seperti permainan mengejar. Walaupun pada akhirnya robot itu ternyata tidak cukup pantas, ia secara jujur ​​berinteraksi dengan orang di sekelilingnya. Kanak-kanak terutamanya menyukainya (kadang-kadang, bagaimanapun, nampaknya mereka akan memijaknya, jantung mereka berdegup kencang...). Saya fikir ini adalah penyelesaian yang baik untuk mempopularkan reka bentuk teknikal.

Struktur robot

Jadi, kami telah memutuskan idea itu, mari kita teruskan susun atur. Senarai elemen dibentuk daripada apa yang robot sepatutnya boleh lakukan. Segala-galanya di sini agak jelas, jadi mari kita segera melihat penomboran:

Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

"Otak" robot ialah papan arduino uno (1); berada dalam satu set yang ditempah dari China. Untuk tujuan kami, ia sudah cukup (kami memberi tumpuan kepada bilangan pin yang digunakan). Dari kit yang sama kami mengambil casis siap pakai (2), di mana dua roda pemacu (3) dan satu belakang (berputar bebas) (4) dipasang. Kit ini juga termasuk petak bateri siap pakai (5). Di hadapan robot terdapat sensor ultrasonik (HC-SR04) (6), di belakang terdapat pemandu motor (L298N) (7), di tengah terdapat flasher LED (8), dan sedikit untuk sebelah ada tweeter (9).

Pada peringkat susun atur kita melihat:

- supaya semuanya sesuai
- supaya seimbang
- untuk diletakkan secara rasional

Rakan sekerja Cina kami telah melakukan sebahagiannya untuk kami. Jadi, petak bateri berat diletakkan di tengah, dan roda pemacu terletak kira-kira di bawahnya. Semua papan lain adalah ringan dan boleh diletakkan di pinggir.

Nuansa:

  1. Casis dari kit mempunyai banyak lubang kilang, tetapi saya masih belum mengetahui apa logiknya. Enjin dan pek bateri telah diamankan tanpa masalah, kemudian "pelarasan" dimulakan dengan menggerudi lubang baru untuk mengamankan papan ini atau itu.
  2. Rak loyang dan pengikat lain dari kawasan penyimpanan sangat membantu (kadangkala kami terpaksa mengeluarkannya).
  3. Saya melepasi busbar dari setiap papan melalui pengapit (sekali lagi, saya dapati mereka dalam simpanan). Sangat mudah, semua wayar terletak dengan baik dan tidak menjuntai.

Blok individu

Sekarang saya akan lalui blok dan saya akan memberitahu anda secara peribadi tentang setiap satu.

petak bateri

Jelas bahawa robot itu mesti mempunyai sumber tenaga yang baik. Pilihan mungkin berbeza-beza, saya memilih pilihan dengan 4 bateri AA. Secara keseluruhan mereka memberikan kira-kira 5 V, dan voltan ini boleh terus digunakan pada pin 5V papan arduino (memintas penstabil).

Sudah tentu, saya mempunyai sedikit berhati-hati, tetapi penyelesaian ini agak boleh dilaksanakan.

Oleh kerana kuasa diperlukan di mana-mana, untuk kemudahan saya membuat dua penyambung di tengah robot: satu "mengedarkan" tanah (di sebelah kanan), dan yang kedua - 5 V (di sebelah kiri).

Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

Motor dan pemandu

Pertama, mengenai pemasangan enjin. Lekap itu dibuat kilang, tetapi dibuat dengan toleransi yang besar. Dalam erti kata lain, enjin boleh bergoyang beberapa milimeter ke kiri dan kanan. Untuk tugas kami ini tidak kritikal, tetapi di beberapa tempat ia mungkin mempunyai kesan (robot akan mula bergerak ke tepi). Untuk berjaga-jaga, saya menetapkan enjin selari dengan ketat dan membetulkannya dengan gam.

Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

Untuk mengawal motor, seperti yang saya tulis di atas, pemacu L298N digunakan. Menurut dokumentasi, ia mempunyai tiga pin untuk setiap motor: satu untuk menukar kelajuan dan sepasang pin untuk arah putaran. Terdapat satu perkara penting di sini. Ternyata jika voltan bekalan adalah 5 V, maka kawalan kelajuan tidak berfungsi! Iaitu, sama ada ia tidak bertukar sama sekali, atau ia bertukar kepada maksimum. Ini adalah ciri yang menyebabkan saya "membunuh" beberapa malam. Akhirnya, saya menemui sebutan di suatu tempat di salah satu forum.

Secara umumnya, saya memerlukan kelajuan putaran yang rendah apabila memusing robot - supaya ia mempunyai masa untuk mengimbas ruang. Tetapi, memandangkan tiada apa-apa yang datang dari idea ini, saya terpaksa melakukannya secara berbeza: pusingan kecil - berhenti - pusing - berhenti, dsb. Sekali lagi, tidak begitu elegan, tetapi boleh dilaksanakan.

Saya juga akan menambah di sini bahawa selepas setiap pengejaran robot memilih arah rawak untuk pusingan baharu (mengikut arah jam atau lawan jam).

Penderia ultrasonik

Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

Satu lagi perkakasan di mana kami terpaksa mencari penyelesaian kompromi. Sensor ultrasonik menghasilkan nombor yang tidak stabil pada halangan sebenar. Sebenarnya, ini telah dijangkakan. Sebaik-baiknya, ia berfungsi di suatu tempat dalam pertandingan yang terdapat permukaan licin, sekata dan berserenjang, tetapi jika kaki seseorang "berkelip" di hadapannya, pemprosesan tambahan perlu diperkenalkan.

Seperti pemprosesan yang saya tetapkan penapis median untuk tiga kiraan. Berdasarkan ujian ke atas kanak-kanak sebenar (tiada kanak-kanak yang dicederakan semasa ujian!), ternyata cukup untuk menormalkan data. Fizik di sini adalah mudah: kami mempunyai isyarat yang dipantulkan perlu objek (memberi jarak yang diperlukan) dan dipantulkan dari yang lebih jauh, sebagai contoh, dinding. Yang terakhir adalah pelepasan rawak dalam ukuran bentuk 45, 46, 230, 46, 46, 45, 45, 310, 46... Penapis median inilah yang terputus.

Selepas semua pemprosesan, kami mendapat jarak ke objek terdekat. Jika ia kurang daripada nilai ambang tertentu, maka kami menghidupkan penggera dan memandu terus ke arah "penceroboh".

Flasher dan siren

Mungkin elemen paling mudah dari semua perkara di atas. Mereka boleh dilihat dalam gambar di atas. Tiada apa-apa untuk ditulis tentang perkakasan di sini, jadi sekarang mari kita teruskan kod.

Program kawalan

Saya tidak nampak guna menerangkan kod secara terperinci, siapa yang memerlukannya - pautannya ada di penghujung artikel, semuanya boleh dibaca di sana. Tetapi lebih baik untuk menerangkan struktur umum.

Perkara pertama yang perlu kita fahami ialah robot ialah peranti masa nyata. Lebih tepat lagi, untuk diingati, kerana dahulu dan sekarang saya masih bekerja dalam bidang elektronik. Jadi, kita segera melupakan cabaran itu kelewatan (), yang mereka suka gunakan dalam contoh lakaran, dan yang hanya "membekukan" atur cara untuk tempoh masa tertentu. Sebaliknya, seperti yang dinasihatkan oleh orang berpengalaman, kami memperkenalkan pemasa untuk setiap blok. Selang yang diperlukan telah berlalu - tindakan telah dilakukan (meningkatkan kecerahan LED, menghidupkan enjin, dan sebagainya).

Pemasa boleh disambungkan. Sebagai contoh, tweeter berfungsi serentak dengan flasher. Ini memudahkan sedikit program.

Sememangnya, kami memecahkan segala-galanya kepada fungsi berasingan (lampu berkelip, bunyi, berpusing, bergerak ke hadapan, dan sebagainya). Jika anda tidak melakukan ini, maka anda tidak akan dapat mengetahui apa yang datang dari mana dan dari mana.

Nuansa pedagogi

Saya melakukan semua yang diterangkan di atas pada masa lapang saya pada waktu malam. Secara santai, saya menghabiskan kira-kira tiga minggu pada robot itu. Ini mungkin berakhir di sini, tetapi saya juga berjanji untuk memberitahu anda tentang bekerja dengan seorang kanak-kanak. Apa yang boleh dilakukan pada usia ini?

Bekerja mengikut arahan

Kami mula-mula menyemak setiap butiran secara berasingan - LED, tweeter, motor, penderia, dll. Terdapat sejumlah besar contoh siap - beberapa betul dalam persekitaran pembangunan, yang lain boleh didapati di Internet. Ini sudah tentu membuatkan saya gembira. Kami mengambil kod, menyambung bahagian, pastikan ia berfungsi, kemudian kami mula mengubahnya untuk disesuaikan dengan tugas kami. Kanak-kanak membuat sambungan mengikut rajah dan di bawah beberapa pengawasan saya. Ini baik. Anda juga perlu boleh bekerja dengan ketat mengikut arahan.

Susunan kerja (“dari khusus kepada umum”)

Ini adalah perkara yang sukar. Anda perlu mengetahui bahawa projek besar ("membuat robot") terdiri daripada tugas-tugas kecil ("menyambungkan penderia," "menyambung motor"...), dan projek itu pula terdiri daripada langkah-langkah yang lebih kecil lagi ("mencari program,” “sambungkan papan.” ", "muat turun perisian tegar"...). Dengan melaksanakan tugas yang lebih atau kurang difahami di peringkat bawah, kami "menutup" tugas peringkat pertengahan, dan daripada mereka hasil keseluruhan terbentuk. Saya menjelaskan, tetapi saya fikir kesedaran itu tidak akan datang tidak lama lagi. Di suatu tempat, mungkin, pada masa remaja.

Pemasangan

Penggerudian, benang, skru, kacang, pematerian dan bau rosin - di manakah kita tanpanya? Kanak-kanak itu menerima kemahiran asas "Bekerja dengan besi pematerian" - dia berjaya memateri beberapa sambungan (saya membantu sedikit, saya tidak akan menyembunyikannya). Jangan lupa tentang penjelasan keselamatan.

Kerja komputer

Saya menulis program untuk robot itu, tetapi saya masih berjaya mencapai beberapa hasil yang menggalakkan.

Pertama: Bahasa Inggeris. Mereka baru sahaja memulakannya di sekolah, jadi kami bergelut untuk mengetahui apa itu pishalka, migalka, yarkost dan transliterasi lain. Sekurang-kurangnya kita faham perkara ini. Saya sengaja tidak menggunakan perkataan bahasa Inggeris asli, kerana kita masih belum mencapai tahap ini.

Kedua: kerja yang cekap. Kami mengajar kombinasi hotkey dan cara melaksanakan operasi standard dengan cepat. Secara berkala, semasa kami menulis program, anak saya dan saya bertukar tempat, dan saya berkata apa yang perlu dilakukan (penggantian, carian, dll.). Saya terpaksa mengulangi berulang kali: "klik dua kali pilih", "tahan Shift", "tahan Ctrl" dan seterusnya. Proses pembelajaran di sini tidak pantas, tetapi saya rasa kemahiran itu akan disimpan secara beransur-ansur "dalam subkorteks."

Teks tersembunyiAnda boleh mengatakan bahawa perkara di atas hampir jelas. Tetapi, secara jujurnya, musim gugur ini saya berpeluang untuk mengajar sains komputer di tingkatan 9 di satu sekolah. Itu mengerikan. Pelajar tidak tahu perkara asas seperti Ctrl + Z, Ctrl + C dan Ctrl + V, memilih teks sambil menahan Shift atau klik dua kali pada perkataan, dan sebagainya. Ini walaupun pada hakikatnya mereka berada di tahun ketiga belajar sains komputer... Buat kesimpulan anda sendiri.

Ketiga: menaip sentuh. Saya mengamanahkan komen dalam kod kepada kanak-kanak untuk menaip (biar dia berlatih). Kami segera meletakkan tangan kami dengan betul supaya jari kami secara beransur-ansur mengingati lokasi kunci.

Seperti yang anda lihat, kami masih baru bermula. Kami akan terus mengasah kemahiran dan pengetahuan kami; ia akan berguna dalam kehidupan.

By the way, tentang masa depan...

Perkembangan selanjutnya

Robot dibuat, memandu, berkelip dan berbunyi bip. Apa sekarang? Diilhamkan oleh apa yang telah kami capai, kami merancang untuk memperhalusinya lagi. Terdapat idea untuk membuat alat kawalan jauh - seperti rover bulan. Ia akan menjadi menarik, duduk di alat kawalan jauh, untuk mengawal pergerakan robot yang memandu di tempat yang sama sekali berbeza. Tetapi itu akan menjadi cerita yang berbeza ...

Dan pada akhirnya, sebenarnya, wira artikel ini (video dengan mengklik):

Pengalaman mencipta robot pertama pada Arduino (robot "pemburu")

Thank you!

Pautan ke kod

Sumber: www.habr.com

Tambah komen