Pengalaman membuat robot pertama di Arduino (robot “hunter”)

Halo

Pada artikel kali ini saya ingin menjelaskan proses perakitan robot pertama saya menggunakan Arduino. Materi ini akan berguna bagi pemula lain seperti saya yang ingin membuat semacam “kereta yang bisa berjalan sendiri”. Artikel tersebut menjelaskan tahapan pengerjaan dengan tambahan saya pada berbagai nuansa. Tautan ke kode akhir (kemungkinan besar bukan yang paling ideal) diberikan di akhir artikel.

Pengalaman membuat robot pertama di Arduino (robot “hunter”)

Jika memungkinkan, saya melibatkan anak saya (8 tahun) untuk berpartisipasi. Apa sebenarnya yang berhasil dan apa yang tidak - Saya telah mendedikasikan sebagian artikel untuk ini, mungkin ini akan berguna bagi seseorang.

Gambaran umum robot

Pertama, beberapa kata tentang robot itu sendiri (ide itu). Saya tidak benar-benar ingin merakit sesuatu yang standar pada awalnya. Pada saat yang sama, rangkaian komponennya cukup standar - sasis, mesin, sensor ultrasonik, sensor garis, LED, tweeter. Awalnya, robot diciptakan dari “set sup” yang menjaga wilayahnya. Ia berkendara menuju pelaku yang telah melewati garis lingkaran, lalu kembali ke tengah. Namun, versi ini memerlukan garis yang ditarik, ditambah matematika ekstra agar tetap berada dalam lingkaran setiap saat.

Oleh karena itu, setelah beberapa pemikiran, saya mengubah ide tersebut dan memutuskan untuk membuat robot “pemburu”. Pada awalnya, ia memutar porosnya, memilih target terdekat (orang). Jika “mangsa” terdeteksi, “pemburu” menyalakan lampu berkedip dan sirene dan mulai bergerak ke arahnya. Ketika orang tersebut menjauh/melarikan diri, robot memilih target baru dan mengejarnya, dan seterusnya. Robot semacam itu tidak memerlukan lingkaran terbatas, dan dapat bekerja di area terbuka.

Seperti yang Anda lihat, ini seperti permainan mengejar ketinggalan. Meski pada akhirnya robot tersebut tidak cukup cepat, namun jujur ​​ia berinteraksi dengan orang-orang di sekitarnya. Anak-anak terutama menyukainya (terkadang, namun, seolah-olah mereka akan menginjak-injaknya, jantung mereka berdetak kencang...). Saya pikir ini adalah solusi yang baik untuk mempopulerkan desain teknis.

Struktur robot

Jadi, kami telah memutuskan idenya, mari kita lanjutkan tata letak. Daftar elemen tersebut dibentuk dari apa yang seharusnya dapat dilakukan robot. Semuanya disini sudah cukup jelas, jadi langsung saja kita lihat penomorannya:

Pengalaman membuat robot pertama di Arduino (robot “hunter”)

“Otak” robot tersebut adalah papan Arduino uno (1); ada dalam satu set yang dipesan dari China. Untuk keperluan kami, itu sudah cukup (kami fokus pada jumlah pin yang digunakan). Dari kit yang sama kami mengambil sasis yang sudah jadi (2), di mana dua roda penggerak (3) dan satu roda belakang (berputar bebas) (4) dipasang. Kit ini juga menyertakan kompartemen baterai siap pakai (5). Di depan robot terdapat sensor ultrasonik (HC-SR04) (6), di belakang terdapat driver motor (L298N) (7), di tengah terdapat LED flasher (8), dan sedikit untuk di sampingnya ada tweeter (9).

Pada tahap tata letak kita melihat:

- agar semuanya pas
- menjadi seimbang
- untuk ditempatkan secara rasional

Rekan-rekan kami di Tiongkok telah melakukan sebagian hal ini untuk kami. Jadi, tempat baterai yang berat ditempatkan di tengah, dan roda penggerak terletak kira-kira di bawahnya. Semua papan lainnya ringan dan dapat ditempatkan di pinggiran.

Nuansa:

  1. Sasis dari kit ini memiliki banyak lubang pabrik, tetapi saya masih belum mengetahui logika apa yang ada di dalamnya. Mesin dan baterai diamankan tanpa masalah, kemudian “penyesuaian” dimulai dengan mengebor lubang baru untuk mengamankan papan ini atau itu.
  2. Rak kuningan dan pengencang lainnya dari tempat penyimpanan sangat membantu (terkadang kami harus mengeluarkannya).
  3. Saya melewati busbar dari setiap papan melalui klem (sekali lagi, saya menemukannya di penyimpanan). Sangat nyaman, semua kabel terletak dengan baik dan tidak menjuntai.

Blok individu

Sekarang saya akan membahasnya blok dan saya akan memberi tahu Anda secara pribadi tentang masing-masingnya.

kompartemen baterai

Jelas bahwa robot harus memiliki sumber energi yang baik. Pilihannya mungkin berbeda-beda, saya memilih opsi dengan 4 baterai AA. Totalnya menghasilkan sekitar 5 V, dan tegangan ini dapat langsung diterapkan ke pin 5V papan Arduino (melewati stabilizer).

Tentu saja, saya berhati-hati, tetapi solusi ini cukup bisa diterapkan.

Karena daya dibutuhkan di mana-mana, untuk kenyamanan saya membuat dua konektor di tengah robot: satu “mendistribusikan” ground (di sebelah kanan), dan yang kedua - 5 V (di sebelah kiri).

Pengalaman membuat robot pertama di Arduino (robot “hunter”)

Motor dan supir

Pertama, soal pemasangan mesin. Mountnya buatan pabrik, tapi dibuat dengan toleransi yang besar. Dengan kata lain, mesinnya bisa bergoyang beberapa milimeter ke kiri dan ke kanan. Untuk tugas kita, hal ini tidak penting, tetapi di beberapa tempat mungkin berpengaruh (robot akan mulai bergerak ke samping). Untuk berjaga-jaga, saya mengatur mesin secara paralel dan memperbaikinya dengan lem.

Pengalaman membuat robot pertama di Arduino (robot “hunter”)

Untuk mengendalikan motor seperti yang saya tulis diatas digunakan driver L298N. Menurut dokumentasinya, ia memiliki tiga pin untuk setiap motor: satu untuk mengubah kecepatan dan sepasang pin untuk arah putaran. Ada satu hal penting di sini. Ternyata jika tegangan suplai 5 V, maka pengatur kecepatan tidak berfungsi! Artinya, tidak berputar sama sekali, atau berputar maksimal. Ini adalah fitur yang menyebabkan saya “membunuh” beberapa malam. Pada akhirnya, saya menemukan penyebutan di suatu tempat di salah satu forum.

Secara umum, saya memerlukan kecepatan putaran yang rendah saat memutar robot - agar robot memiliki waktu untuk memindai ruang. Namun, karena ide ini tidak menghasilkan apa-apa, saya harus melakukannya secara berbeda: belok kecil - berhenti - belok - berhenti, dll. Sekali lagi, tidak begitu elegan, tetapi bisa diterapkan.

Saya juga akan menambahkan di sini bahwa setelah setiap pengejaran, robot memilih arah acak untuk belokan baru (searah jarum jam atau berlawanan arah jarum jam).

Sensor ultrasonik

Pengalaman membuat robot pertama di Arduino (robot “hunter”)

Perangkat keras lain yang harus kami cari solusi komprominya. Sensor ultrasonik menghasilkan angka yang tidak stabil pada rintangan nyata. Sebenarnya, ini sudah diduga. Idealnya, ini berfungsi di suatu tempat dalam kompetisi di mana terdapat permukaan yang halus, rata, dan tegak lurus, tetapi jika kaki seseorang “berkedip” di depannya, pemrosesan tambahan perlu dilakukan.

Seperti pemrosesan yang saya atur penyaring median selama tiga hitungan. Berdasarkan pengujian terhadap anak-anak sebenarnya (tidak ada anak yang dirugikan selama pengujian!), ternyata cukup memadai untuk menormalkan data. Fisika di sini sederhana: kita memiliki sinyal yang dipantulkan diperlukan benda (memberikan jarak yang diperlukan) dan dipantulkan dari benda yang lebih jauh, misalnya dinding. Yang terakhir adalah emisi acak dalam pengukuran bentuk 45, 46, 230, 46, 46, 45, 45, 310, 46... Inilah yang terpotong oleh filter median.

Setelah semua proses dilakukan, kita mendapatkan jarak ke objek terdekat. Jika kurang dari nilai ambang batas tertentu, maka kita nyalakan alarm dan langsung menuju ke arah “penyusup”.

Flasher dan sirene

Mungkin elemen paling sederhana dari semua hal di atas. Mereka dapat dilihat pada foto-foto di atas. Tidak ada yang perlu ditulis tentang perangkat keras di sini, jadi sekarang mari kita lanjutkan kode.

Program kontrol

Saya tidak melihat gunanya menjelaskan kode secara detail, siapa yang membutuhkannya - tautannya ada di akhir artikel, semuanya cukup mudah dibaca di sana. Tapi alangkah baiknya jika menjelaskan struktur umumnya.

Hal pertama yang harus kami pahami adalah robot adalah perangkat real-time. Lebih tepatnya yang perlu diingat, karena dulu dan sekarang saya masih bekerja di bidang elektronik. Jadi, kita langsung melupakan tantangan itu menunda(), yang mereka suka gunakan dalam contoh sketsa, dan yang hanya “membekukan” program untuk jangka waktu tertentu. Sebaliknya, seperti saran orang berpengalaman, kami memperkenalkan pengatur waktu untuk setiap blok. Interval yang diperlukan telah berlalu - tindakan telah dilakukan (meningkatkan kecerahan LED, menyalakan mesin, dan sebagainya).

Timer dapat saling berhubungan. Misalnya tweeter bekerja serentak dengan flasher. Ini sedikit menyederhanakan program.

Secara alami, kami membagi semuanya menjadi beberapa fungsi terpisah (lampu berkedip, suara, putaran, gerakan maju, dan sebagainya). Jika Anda tidak melakukan ini, Anda tidak akan bisa mengetahui apa yang datang dari mana dan dari mana.

Nuansa pedagogi

Saya melakukan semua hal di atas di waktu luang saya di malam hari. Dengan santai, saya menghabiskan sekitar tiga minggu di robot. Ini bisa saja berakhir di sini, tapi saya juga berjanji untuk bercerita tentang bekerja dengan seorang anak. Apa yang bisa dilakukan pada usia ini?

Bekerja sesuai instruksi

Kami pertama-tama memeriksa setiap detail secara terpisah - LED, tweeter, motor, sensor, dll. Ada banyak contoh yang sudah jadi - beberapa ada di lingkungan pengembangan, yang lain dapat ditemukan di Internet. Hal ini tentu saja membuat saya bahagia. Kita ambil kodenya, sambungkan bagiannya, pastikan berfungsi, lalu kita mulai mengubahnya agar sesuai dengan tugas kita. Anak itu membuat hubungan sesuai dengan diagram dan di bawah pengawasan saya. Ini bagus. Anda juga harus bisa bekerja dengan ketat sesuai instruksi.

Urutan pekerjaan (“dari khusus ke umum”)

Ini adalah poin yang sulit. Anda perlu memahami bahwa proyek besar (“membuat robot”) terdiri dari tugas-tugas kecil (“menghubungkan sensor”, “menghubungkan motor”…), dan tugas-tugas tersebut, pada gilirannya, terdiri dari langkah-langkah yang lebih kecil (“menemukan program,” “sambungkan papan.” ", "unduh firmware"...). Dengan melakukan tugas-tugas tingkat bawah yang kurang lebih dapat dimengerti, kita “menutup” tugas-tugas tingkat menengah, dan dari situlah hasil keseluruhan terbentuk. Saya jelaskan, tapi menurut saya realisasinya tidak akan segera datang. Di suatu tempat, mungkin, pada masa remaja.

Instalasi

Pengeboran, benang, sekrup, mur, solder, dan bau damar - di mana kita tanpanya? Anak itu menerima keterampilan dasar "Bekerja dengan besi solder" - dia berhasil menyolder beberapa sambungan (saya membantu sedikit, saya tidak akan menyembunyikannya). Jangan lupa tentang penjelasan keamanannya.

Pekerjaan komputer

Saya menulis program untuk robot tersebut, tetapi saya masih berhasil mencapai beberapa hasil yang baik.

Pertama: Bahasa Inggris. Mereka baru saja memulainya di sekolah, jadi kami kesulitan memahami apa itu pishalka, migalka, yarkost, dan transliterasi lainnya. Setidaknya kami memahami hal ini. Saya sengaja tidak menggunakan kata-kata asli bahasa Inggris, karena kita belum mencapai level ini.

Kedua: kerja yang efisien. Kami mengajarkan kombinasi tombol pintas dan cara melakukan operasi standar dengan cepat. Secara berkala, ketika kami sedang menulis program, saya dan anak saya bertukar tempat, dan saya mengatakan apa yang perlu dilakukan (penggantian, pencarian, dll). Saya harus mengulanginya lagi dan lagi: “klik dua kali pilih”, “tahan Shift”, “tahan Ctrl” dan seterusnya. Proses pembelajaran di sini tidak cepat, tetapi menurut saya keterampilan tersebut secara bertahap akan disimpan “di subkorteks”.

Teks tersembunyiAnda dapat mengatakan bahwa hal di atas hampir jelas. Tapi sejujurnya, musim gugur ini saya mendapat kesempatan untuk mengajar ilmu komputer di kelas 9 di salah satu sekolah. Mengerikan. Siswa belum mengetahui hal-hal mendasar seperti Ctrl + Z, Ctrl + C dan Ctrl + V, memilih teks sambil menahan Shift atau mengklik dua kali pada sebuah kata, dan sebagainya. Padahal mereka berada di tahun ketiga belajar ilmu komputer... Buatlah kesimpulan Anda sendiri.

Ketiga: pengetikan sentuh. Komentar yang ada di kode tersebut saya titipkan kepada anak untuk diketik (biarkan dia berlatih). Kami segera meletakkan tangan kami dengan benar sehingga jari-jari kami sedikit demi sedikit mengingat letak tuts-tutsnya.

Seperti yang Anda lihat, kami masih baru memulai. Kita akan terus mengasah kemampuan dan pengetahuan kita agar berguna dalam kehidupan.

Ngomong-ngomong, tentang masa depan...

Pengembangan lebih lanjut

Robot dibuat, mengemudi, berkedip dan berbunyi bip. Apa sekarang? Terinspirasi oleh apa yang telah kami capai, kami berencana untuk menyempurnakannya lebih lanjut. Ada ide untuk membuat remote control - seperti penjelajah bulan. Akan menarik, dengan duduk di depan remote control, untuk mengontrol pergerakan robot yang sedang mengemudi di tempat yang sama sekali berbeda. Tapi itu akan menjadi cerita yang berbeda...

Dan pada akhirnya, para pahlawan artikel ini (video dengan mengklik):

Pengalaman membuat robot pertama di Arduino (robot “hunter”)

Terima kasih!

Tautan kode

Sumber: www.habr.com

Tambah komentar