Pengalaman menciptakan robot pertama di Arduino (pemburu robot)

Halo

Pada artikel ini, saya ingin menggambarkan proses perakitan robot Arduino pertama saya. Materi itu akan berguna bagi pendatang baru lainnya, seperti saya, yang ingin membuat semacam “kereta yang berjalan sendiri”. Artikel tersebut adalah deskripsi tahapan kerja dengan tambahan saya pada berbagai nuansa. Tautan ke kode yang dihasilkan (kemungkinan besar bukan yang paling ideal) diberikan di akhir artikel.



Sejauh mungkin saya melibatkan putra saya (8 tahun). Apa yang sebenarnya terjadi padanya dan apa yang tidak - untuk ini saya menyoroti bagian dari artikel, mungkin seseorang akan berguna.

Deskripsi umum tentang robot


Pertama, beberapa kata tentang robot itu sendiri ( ide ). Saya tidak benar-benar ingin mengumpulkan sesuatu yang khas pada awalnya. Pada saat yang sama, rangkaian komponennya cukup standar - sasis, mesin, sensor ultrasonik, sensor garis, LED, tweeter. Pada awalnya, dari "set sup" ini, sebuah robot ditemukan yang melindungi wilayahnya. Dia pergi ke penyusup, yang melintasi garis lingkaran, dan kemudian kembali ke tengah. Namun, dalam versi ini, garis yang ditarik diperlukan, ditambah matematika tambahan untuk terus berada di lingkaran.

Oleh karena itu, setelah beberapa pertimbangan, saya mengubah ide sedikit dan memutuskan untuk membuat robot "pemburu". Pada awalnya, ia memutar porosnya, memilih target (orang) di dekatnya. Jika "korban" ditemukan, "pemburu" menyalakan flasher dan sirene, dan mulai menaikinya. Ketika seseorang bergerak / melarikan diri, robot memilih target baru dan mengejarnya, dan seterusnya. Robot seperti itu tidak membutuhkan lingkaran terbatas, dan dapat bekerja di area terbuka.

Seperti yang Anda lihat, ini seperti permainan mengejar ketinggalan. Meskipun pada akhirnya robot itu ternyata tidak cukup cepat, tetapi secara jujur ​​berinteraksi dengan orang-orang di sekitarnya. Terutama anak-anak menyukainya (kadang-kadang, bagaimanapun, tampaknya mereka akan menginjak-injaknya, sudah terlewati hati ...). Saya pikir ini adalah solusi yang baik untuk mempopulerkan desain teknis.

Struktur robot


Jadi, kami memutuskan idenya, mari beralih ke tata letak . Daftar elemen dibentuk dari apa yang seharusnya dapat dilakukan robot. Semuanya cukup jelas di sini, jadi segera lihat penomorannya:



"Otak" robot - board arduino uno (1); dalam satu set dipesan dari Cina. Untuk keperluan kami, itu sudah cukup (kami fokus pada jumlah pin yang digunakan). Dari set yang sama, kami mengambil sasis jadi (2), di mana dua roda penggerak (3) dan satu belakang (berputar bebas) terpasang (4). Juga dalam kit adalah kompartemen baterai siap pakai (5). Di bagian depan robot terdapat sensor ultrasonik (HC-SR04) (6), di bagian belakang adalah driver mesin (L298N) (7), di bagian tengah adalah flasher LED (8), dan sedikit di samping adalah tweeter (9).

Pada tahap membangun, kita melihat:

- agar semuanya cocok
- menjadi seimbang
- Untuk ditempatkan secara rasional

Sebagian, kolega Cina kami sudah melakukan ini untuk kami. Jadi, kompartemen baterai yang berat ditempatkan di tengah, dan kira-kira di bawahnya ada roda penggerak. Semua papan lainnya ringan, mereka dapat ditempatkan di pinggiran.

Nuansa:

  1. Ada banyak lubang pabrik di sasis dari himpunan, tetapi apa logika di dalamnya - saya masih belum menemukan jawabannya. Mesin dan paket baterai diperbaiki tanpa masalah, kemudian "cocok" dimulai dengan pengeboran lubang baru untuk memperbaiki satu atau lain papan.
  2. Rak kuningan dan pengencang lain dari ruang penyimpanan cukup diselamatkan (kadang-kadang mereka harus keluar).
  3. Saya melewati ban dari masing-masing papan melalui klem (sekali lagi, saya menemukannya di ruang penyimpanan). Sangat nyaman, semua kabel indah dan tidak nongkrong.

Blok individual


Sekarang saya akan melalui blok dan memberitahu Anda secara pribadi tentang masing-masing.

Kompartemen baterai

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

Tentu saja, saya memiliki beberapa kekhawatiran, tetapi solusi ini cukup bisa diterapkan.

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



Mesin dan pengemudi

Pertama, tentang pemasangan mesin. Mount adalah pabrik, tetapi dibuat dengan toleransi besar. Dengan kata lain, mesin dapat "bergoyang" beberapa milimeter ke kiri-kanan. Untuk tugas kita, ini tidak kritis, tetapi di suatu tempat ia dapat mempengaruhi (robot akan mulai menjauh). Untuk jaga-jaga, saya mengatur mesin sejajar dan diperbaiki dengan lem.



Untuk mengontrol mesin, seperti yang saya tulis di atas, driver L298N digunakan. Menurut dokumentasi, ia memiliki tiga pin untuk setiap mesin: satu untuk mengubah kecepatan dan sepasang pin untuk arah rotasi. Ada satu poin penting. Ternyata jika tegangan suplai 5 V, maka kontrol kecepatan tidak berfungsi! Artinya, tidak memutar sama sekali, atau memuntir secara maksimal. Berikut adalah fitur seperti itu, karena itu saya "membunuh" beberapa malam. Pada akhirnya, saya menemukan sebutan di suatu tempat di salah satu forum.

Secara umum, saya membutuhkan kecepatan rotasi rendah saat memutar robot - sehingga memiliki sedikit waktu untuk memindai ruang. Tetapi, karena tidak ada yang muncul dari ide semacam itu, saya harus melakukannya secara berbeda: belokan kecil-kecil-kecil-lagi, dll. Sekali lagi, itu tidak begitu elegan, tetapi efisien.

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

Sensor ultrasonik



Sepotong besi, di mana saya harus mencari solusi kompromi. Sensor ultrasonik pada hambatan nyata memberikan angka yang tidak stabil. Sebenarnya, itu sudah diduga. Idealnya, ini bekerja di suatu tempat di kompetisi di mana ada permukaan yang halus, rata dan tegak lurus, tetapi jika kaki seseorang "berkedip" di depannya, maka Anda perlu memperkenalkan pemrosesan tambahan.

Sebagai pemrosesan seperti itu, saya mengatur filter median ke tiga sampel. Berdasarkan tes pada anak sungguhan (tidak ada anak yang terluka selama tes!), Ternyata cukup untuk menormalkan data. Fisika di sini sederhana: kita memiliki sinyal yang dipantulkan dari objek yang diperlukan (memberikan jarak yang diperlukan) dan dipantulkan dari jarak yang lebih jauh, misalnya dinding. Yang kedua adalah semburan acak dalam pengukuran bentuk 45, 46, 230 , 46, 46, 45, 45, 310 , 46 ... Filter median mereka yang terputus.

Setelah semua pemrosesan, kami mendapatkan jarak ke objek terdekat. Jika kurang dari nilai ambang tertentu, maka kita menyalakan alarm dan langsung ke "penyusup".

Flasher dan sirene

Mungkin elemen paling sederhana dari semua hal di atas. Mereka dapat dilihat di foto-foto di atas. Tidak ada yang bisa ditulis tentang besi di sini, jadi sekarang mari kita beralih ke kode .

Program manajemen


Saya tidak melihat titik menuliskan kode secara terperinci, siapa yang membutuhkannya - tautannya ada di akhir artikel, semuanya cukup mudah dibaca di sana. Tetapi struktur umum akan lebih baik untuk dijelaskan.

Hal pertama yang harus saya pahami: robot adalah perangkat waktu nyata. Lebih tepatnya, ingat, karena sebelumnya, dan sekarang saya masih melakukan elektronik. Ini berarti bahwa kami segera melupakan panggilan delay () , yang kami suka gunakan dalam sketsa contoh, dan yang hanya “membekukan” program untuk jangka waktu tertentu. Alih-alih, seperti yang disarankan orang yang berpengalaman, kami memperkenalkan penghitung waktu untuk setiap blok. Interval yang diperlukan telah berlalu - mereka melakukan aksinya (meningkatkan kecerahan LED, menyalakan mesin, dan sebagainya).

Pengatur waktu dapat saling berhubungan. Jadi, misalnya, tweeter bekerja serentak dengan flasher. Ini membuat program sedikit lebih mudah.

Secara alami, kami membagi semuanya menjadi fungsi yang terpisah (flasher, suara, rotasi, gerakan maju, dan sebagainya). Jika Anda tidak melakukan ini, maka Anda tidak akan mengerti dari mana atau dari mana.

Nuansa pedagogi


Semua yang dijelaskan di atas, saya lakukan di waktu luang saya di malam hari. Dalam mode santai, saya menghabiskan sekitar tiga minggu di robot. Ini bisa saja berakhir, tetapi saya juga berjanji untuk memberi tahu Anda tentang bekerja dengan seorang anak. Apa yang layak pada usia ini?

Kerjakan instruksi

Kami pertama-tama memeriksa setiap detail secara terpisah - LED, tweeter, motor, sensor, dll. Ada banyak contoh siap pakai - beberapa langsung di lingkungan pengembangan, yang lain dapat ditemukan di Internet. Ini tidak diragukan lagi menyenangkan. Kami mengambil kode, menghubungkan bagian, memastikan bahwa itu berfungsi, maka kami sudah mulai berubah untuk tugas kami. Koneksi sesuai dengan skema dan di bawah kendali saya anak membuat sendiri. Ini bagus. Anda harus dapat bekerja dengan jelas sesuai dengan instruksi.

Urutan pekerjaan ("dari pribadi ke umum")

Ini adalah poin yang sulit. Penting untuk mengajarkan bahwa proyek besar ("membuat robot") terdiri dari tugas-tugas kecil ("sambungkan sensor", "sambungkan motor" ...), dan yang pada gilirannya, terdiri dari langkah-langkah yang bahkan lebih kecil ("cari program", " hubungkan papan ”,“ unduh firmware ”...). Melakukan tugas yang kurang lebih dimengerti dari tingkat bawah, kami "menutup" tugas tingkat menengah, dan hasil umum sudah dibuat dari mereka. Dia menjelaskan, tetapi, saya pikir, kesadaran tidak akan segera datang. Di suatu tempat, mungkin, hingga remaja.

Instalasi

Pengeboran, ulir, sekrup, mur, solder dan bau rosin - di mana tanpanya. Anak itu menerima keterampilan dasar "Bekerja dengan besi solder" - Saya berhasil menyolder beberapa sendi (saya membantu sedikit, saya tidak akan bersembunyi). Jangan lupakan penjelasan keamanannya.

Pekerjaan komputer

Saya menulis sebuah program untuk robot, tetapi saya berhasil mencapai semacam hasil terkait.

Pertama: Bahasa Inggris. Itu baru dimulai di sekolah, jadi kami "mencicit" memilah apa pishalka, migalka, yarkost dan terjemahan lainnya. Setidaknya kami mengerti itu. Saya sengaja tidak menggunakan kata-kata bahasa Inggris asli saya, karena kami belum mencapai tingkat ini.

Kedua: kerja efektif. Mereka mengajarkan kombinasi tombol pintas bagaimana cara cepat melakukan operasi tipikal. Secara berkala, ketika mereka menulis program, kami berganti tempat dengan putra saya, dan saya mengatakan apa yang perlu dilakukan (penggantian, pencarian, dll.). Saya harus mengulangi lagi dan lagi: "klik dua kali", "tahan Shift", "tahan Ctrl" dan seterusnya. Proses pembelajaran di sini tidak cepat, tetapi, saya pikir, keterampilan itu secara bertahap akan dikesampingkan.

Teks tersembunyi
Anda dapat mengatakan bahwa di atas hampir jelas. Tapi, jujur, musim gugur ini saya mendapat kesempatan untuk melakukan ilmu komputer di kelas 9 di sekolah yang sama. Ini horor. Murid tidak tahu hal-hal dasar seperti Ctrl + Z, Ctrl + C dan Ctrl + V, pemilihan teks dengan Shift-diadakan atau klik dua kali pada sebuah kata, dan banyak lagi. Ini terlepas dari kenyataan bahwa mereka berada di tahun ketiga studi dalam ilmu komputer ... Buat kesimpulan sendiri.

Ketiga: pengetikan sentuh. Saya mempercayakan komentar dalam kode untuk mengetik anak (biarkan dia berlatih). Segera letakkan tangan kanan sehingga jari-jari secara bertahap mengingat lokasi kunci.

Seperti yang Anda lihat, kita masih baru mulai. Kami akan mengasah keterampilan dan pengetahuan kami lebih lanjut dan akan berguna dalam kehidupan.

Ngomong-ngomong, tentang prospek ...

Pengembangan lebih lanjut


Robot itu dibuat, wahana, berkedip dan mencicit. Apa sekarang? Terinspirasi oleh apa yang telah dicapai, kami berencana untuk memperbaikinya lebih lanjut. Ada ide untuk membuat kendali jarak jauh - seperti penjelajah bulan. Akan menarik, duduk di konsol bersyarat, untuk mengontrol pergerakan robot, yang bergerak di tempat yang sama sekali berbeda. Tapi ini akan menjadi cerita yang berbeda ...

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



Terima kasih atas perhatian anda!

Tautan ke kode

Source: https://habr.com/ru/post/id436118/


All Articles