Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

Salom.

Ushbu maqolada men Arduino yordamida birinchi robotimni yig'ish jarayonini tasvirlamoqchiman. Material menga o'xshab "o'z-o'zidan ishlaydigan arava" qilishni xohlaydigan boshqa boshlanuvchilar uchun foydali bo'ladi. Maqolada turli nuanslar bo'yicha qo'shimchalarim bilan ishlash bosqichlarining tavsifi. Maqolaning oxirida yakuniy kodga havola (ehtimol eng ideal emas) berilgan.

Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

Imkoniyat bo'lsa, o'g'limni (8 yosh) ishtirok etishga jalb qildim. U bilan nima ishladi va nima ishlamadi - men maqolaning bir qismini bunga bag'ishladim, ehtimol bu kimgadir foydali bo'ladi.

Robotning umumiy tavsifi

Birinchidan, robotning o'zi haqida bir necha so'z (fikr). Men boshida standart narsalarni yig'ishni xohlamadim. Shu bilan birga, komponentlar to'plami juda standart edi - shassi, dvigatellar, ultratovush sensori, chiziqli sensor, LEDlar, tweeter. Dastlab, o'z hududini qo'riqlaydigan ushbu "sho'rva to'plami" dan robot ixtiro qilingan. U aylana chizig'ini kesib o'tgan huquqbuzar tomon yuradi va keyin markazga qaytadi. Biroq, bu versiyada har doim aylanada qolish uchun chizilgan chiziq va qo'shimcha matematika kerak edi.

Shuning uchun, biroz o'ylab, men fikrni biroz o'zgartirdim va "ovchi" robotini yaratishga qaror qildim. Boshida u o'z o'qi atrofida aylanadi, yaqin atrofdagi nishonni (odamni) tanlaydi. Agar "o'lja" aniqlansa, "ovchi" miltillovchi chiroqlar va sirenani yoqadi va unga qarab harakat qila boshlaydi. Odam uzoqlashganda/qochib ketganda, robot yangi nishonni tanlaydi va uni ta'qib qiladi va hokazo. Bunday robotga cheklangan doira kerak emas va u ochiq joylarda ishlashi mumkin.

Ko'rib turganingizdek, bu o'yinni qo'lga olish o'yiniga o'xshaydi. Garchi oxir-oqibat robot etarlicha tez bo'lmasa ham, u atrofdagi odamlar bilan halol muloqot qiladi. Ayniqsa, bolalarga yoqadi (ba'zida ular oyoq osti qilmoqchi bo'lganga o'xshaydi, yuragi urib ketadi...). Menimcha, bu texnik dizaynni ommalashtirish uchun yaxshi yechim.

Robot tuzilishi

Shunday qilib, biz g'oyaga qaror qildik, keling, davom etamiz tartib. Elementlar ro'yxati robot nima qila olishi kerakligidan tuziladi. Bu erda hamma narsa aniq, shuning uchun darhol raqamlashni ko'rib chiqaylik:

Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

Robotning "miyalari" arduino uno taxtasi (1); Xitoydan buyurtma qilingan to'plamda edi. Bizning maqsadlarimiz uchun bu juda etarli (biz ishlatilgan pinlar soniga e'tibor qaratamiz). Xuddi shu to'plamdan biz tayyor shassisni (2) oldik, unga ikkita qo'zg'aysan g'ildiragi (3) va bitta orqa (erkin aylanadigan) (4) biriktirilgan. To'plamga tayyor batareya bo'linmasi ham kiritilgan (5). Robotning oldida ultratovush sensori (HC-SR04) (6), orqada motor drayveri (L298N) (7), markazda LED miltillovchi (8) va biroz yon tomonda tvitter (9) mavjud.

Dizayn bosqichida biz quyidagilarni ko'rib chiqamiz:

- hamma narsa mos bo'lishi uchun
- muvozanatli bo'lish
- oqilona joylashish

Xitoylik hamkasblarimiz buni biz uchun qisman qilishgan. Shunday qilib, og'ir batareya bo'linmasi markazga joylashtirilgan va haydovchi g'ildiraklari taxminan uning ostida joylashgan. Boshqa barcha taxtalar engil va atrof-muhitga joylashtirilishi mumkin.

Nuances:

  1. To'plamdagi shassisda juda ko'p zavod teshiklari bor, lekin men hali ham ularda qanday mantiq borligini tushunmadim. Dvigatellar va batareyalar to'plami muammosiz xavfsiz holatga keltirildi, keyin "sozlash" bu yoki boshqa taxtani mustahkamlash uchun yangi teshiklarni burg'ulash bilan boshlandi.
  2. Saqlash joylaridan guruch tokchalar va boshqa mahkamlagichlar katta yordam berdi (ba'zan biz ularni tashqariga chiqarishimiz kerak edi).
  3. Men har bir taxtadan shinalarni qisqichlar orqali o'tkazdim (yana ularni saqlash joyida topdim). Juda qulay, barcha simlar yaxshi yotadi va osmaydi.

Shaxsiy bloklar

Endi men o'tib ketaman bloklar va men sizga har biri haqida shaxsan aytib beraman.

batareya bo'limi

Robot yaxshi energiya manbaiga ega bo'lishi kerakligi aniq. Variantlar farq qilishi mumkin, men 4 ta AA batareyali variantni tanladim. Hammasi bo'lib ular taxminan 5 V ni beradi va bu kuchlanish to'g'ridan-to'g'ri arduino platasining 5V piniga (stabilizatorni chetlab o'tib) qo'llanilishi mumkin.

Albatta, men biroz ehtiyot bo'ldim, ammo bu yechim juda samarali.

Quvvat hamma joyda kerak bo'lganligi sababli, qulaylik uchun men robotning markazida ikkita ulagich yasadim: biri yerni "tarqatadi" (o'ngda), ikkinchisi - 5 V (chapda).

Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

Dvigatellar va haydovchi

Birinchidan, dvigatellarni o'rnatish haqida. O'rnatish zavodda ishlab chiqarilgan, ammo katta toleranslar bilan qilingan. Boshqacha qilib aytganda, dvigatellar bir necha millimetr chapga va o'ngga silkitishi mumkin. Bizning vazifamiz uchun bu juda muhim emas, lekin ba'zi joylarda bu ta'sir qilishi mumkin (robot yon tomonga o'ta boshlaydi). Har holda, men dvigatellarni qat'iy parallel ravishda o'rnatdim va ularni elim bilan mahkamladim.

Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

Dvigatellarni boshqarish uchun, yuqorida yozganimdek, L298N drayveri ishlatiladi. Hujjatlarga ko'ra, har bir dvigatel uchun uchta pin mavjud: biri tezlikni o'zgartirish uchun va aylanish yo'nalishi uchun bir juft pin. Bu erda bir muhim jihat bor. Ma'lum bo'lishicha, agar ta'minot kuchlanishi 5 V bo'lsa, tezlikni boshqarish shunchaki ishlamaydi! Ya'ni, yoki u umuman aylanmaydi, yoki maksimal darajaga aylanadi. Bir-ikki oqshomni "o'ldirishimga" sabab bo'lgan xususiyat. Oxir-oqibat, men forumlardan birida zikr topdim.

Umuman olganda, robotni aylantirishda menga past aylanish tezligi kerak edi, shunda u bo'sh joyni skanerlash uchun vaqt topdi. Lekin, bu fikrdan hech narsa kelmagani uchun, men buni boshqacha qilishim kerak edi: kichik burilish - to'xtash - burilish - to'xtash va hokazo. Yana juda oqlangan emas, lekin ishlash mumkin.

Yana shuni qo'shimcha qilamanki, har bir ta'qibdan so'ng robot yangi burilish uchun tasodifiy yo'nalishni tanlaydi (soat yo'nalishi bo'yicha yoki soat miliga teskari).

Ultrasonik sensor

Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

Murosa echimini izlashimiz kerak bo'lgan yana bir uskuna. Ultrasonik sensor haqiqiy to'siqlarda beqaror raqamlarni ishlab chiqaradi. Aslida, bu kutilgan edi. Ideal holda, u silliq, tekis va perpendikulyar yuzalar mavjud bo'lgan musobaqalarda bir joyda ishlaydi, lekin uning oldida birovning oyoqlari "miltillasa" qo'shimcha ishlov berishni joriy qilish kerak.

Bunday ishlov berish sifatida men o'rnatdim median filtri uchta hisob uchun. Haqiqiy bolalarda o'tkazilgan testlarga asoslanib (sinovlar davomida hech qanday bola zarar ko'rmagan!), ma'lumotlarni normallashtirish uchun etarli bo'ldi. Bu erda fizika oddiy: bizda aks ettirilgan signallar bor zarur ob'ektlar (kerakli masofani berish) va uzoqroq bo'lganlardan, masalan, devorlardan aks ettirilgan. Ikkinchisi 45, 46 shaklidagi o'lchovlardagi tasodifiy emissiyalar, 230, 46, 46, 45, 45, 310, 46... Aynan shular median filtrni kesib tashlaydi.

Barcha ishlov berishdan so'ng biz eng yaqin ob'ektga masofani olamiz. Agar u ma'lum bir chegara qiymatidan past bo'lsa, biz signalni yoqamiz va to'g'ridan-to'g'ri "buzg'unchi" tomon harakat qilamiz.

Chiroq va sirena

Ehtimol, yuqorida aytilganlarning eng oddiy elementlari. Ularni yuqoridagi fotosuratlarda ko'rish mumkin. Bu erda apparat haqida yozish uchun hech narsa yo'q, shuning uchun endi unga o'tamiz kod.

Nazorat qilish dasturi

Kodni batafsil tavsiflashning ma'nosini ko'rmayapman, kimga kerak - havola maqolaning oxirida, u erda hamma narsani o'qish mumkin. Ammo umumiy tuzilmani tushuntirish yaxshi bo'lardi.

Biz tushunishimiz kerak bo'lgan birinchi narsa robotning real vaqtda ishlaydigan qurilma ekanligi edi. Aniqrog'i, eslash kerak, chunki men oldin ham, hozir ham elektronikada ishlayman. Shunday qilib, biz qiyinchilikni darhol unutamiz kechikish (), ular misol eskizlarida foydalanishni yaxshi ko'radilar va dasturni ma'lum vaqt davomida oddiygina "muzlatadi". Buning o'rniga, tajribali odamlar maslahat berganidek, biz har bir blok uchun taymerlarni joriy qilamiz. Kerakli oraliq o'tdi - harakat amalga oshirildi (LED yorqinligini oshirdi, dvigatelni yoqdi va hokazo).

Taymerlarni bir-biriga ulash mumkin. Misol uchun, tweeter miltillovchi bilan sinxron ishlaydi. Bu dasturni biroz soddalashtiradi.

Tabiiyki, biz hamma narsani alohida funktsiyalarga ajratamiz (miltillovchi chiroqlar, ovoz, burilish, oldinga siljish va hokazo). Agar buni qilmasangiz, unda nima qaerdan va qaerdan kelganini aniqlay olmaysiz.

Pedagogikaning nuanslari

Kechqurun bo'sh vaqtimda yuqorida tavsiflangan hamma narsani qildim. Bemalol robotda uch hafta vaqt sarfladim. Bu shu erda tugashi mumkin edi, lekin men sizga bola bilan ishlash haqida aytib berishga va'da berdim. Bu yoshda nima qilish mumkin?

Ko'rsatmalarga muvofiq ishlang

Biz birinchi navbatda har bir tafsilotni alohida tekshirdik - LEDlar, tweeterlar, motorlar, sensorlar va boshqalar. Ko'p sonli tayyor misollar mavjud - ba'zilari to'g'ridan-to'g'ri ishlab chiqish muhitida, boshqalari Internetda topilishi mumkin. Bu, albatta, meni xursand qiladi. Biz kodni olamiz, qismni ulaymiz, uning ishlashiga ishonch hosil qilamiz, keyin uni vazifamizga mos ravishda o'zgartirishni boshlaymiz. Bola sxema bo'yicha va ba'zi nazoratim ostida ulanishlarni amalga oshiradi. Bu yaxshi. Bundan tashqari, siz ko'rsatmalarga muvofiq qat'iy ishlay olishingiz kerak.

Ish tartibi ("alohidadan umumiygacha")

Bu qiyin nuqta. Katta loyiha (“robot yasash”) kichik vazifalardan (“datchikni ulash”, “motorlarni ulash”...) iboratligini va ular, o‘z navbatida, kichikroq bosqichlardan iborat (“robotni topish”) ekanligini bilib olishingiz kerak. dastur," "bortni ulash." "", "proshivkani yuklab olish"...). Pastki darajadagi ko'proq yoki kamroq tushunarli vazifalarni bajarish orqali biz o'rta darajadagi vazifalarni "yopib qo'yamiz" va ulardan umumiy natija hosil bo'ladi. Men tushuntirdim, lekin menimcha, amalga oshishi tez orada kelmaydi. Bir joyda, ehtimol, o'smirlik davrida.

O'rnatish

Burg'ulash, iplar, vintlardek, yong'oqlar, lehim va rozin hidi - ularsiz qaerda bo'lardik? Bola "Lehimli temir bilan ishlash" asosiy mahoratini oldi - u bir nechta ulanishlarni lehimlashga muvaffaq bo'ldi (men ozgina yordam berdim, buni yashirmayman). Xavfsizlik haqida tushuntirishni unutmang.

Kompyuterda ishlash

Men robot uchun dastur yozdim, lekin baribir ijobiy natijalarga erisha oldim.

Birinchisi: ingliz tili. Ular buni maktabda boshlagan edilar, shuning uchun biz pishalka, migalka, yarkost va boshqa transliteratsiyalar nima ekanligini tushunishga qiynalardik. Hech bo'lmaganda biz buni tushundik. Men ataylab ona inglizcha so'zlarni ishlatmadim, chunki biz hali bu darajaga yetmaganmiz.

Ikkinchidan: samarali ish. Biz tezkor tugmalar birikmalarini va standart operatsiyalarni qanday tezda bajarishni o'rgatganmiz. Vaqti-vaqti bilan, dasturni yozayotganimizda, o'g'lim va men joylarni almashtirdik va men nima qilish kerakligini aytdim (almashtirish, qidirish va h.k.). Men qayta-qayta takrorlashim kerak edi: "tanlovni ikki marta bosing", "Shiftni ushlab turing", "Ctrl" ni ushlab turing va hokazo. Bu erda o'quv jarayoni tez emas, lekin menimcha, ko'nikmalar asta-sekin "subkorteksda" saqlanadi.

Yashirin matnAytish mumkinki, yuqorida aytilganlar deyarli aniq. Lekin, rostini aytsam, shu kuzda bitta maktabda 9-sinfda informatika fanidan dars berish imkoniga ega bo‘ldim. Bu dahshatli. Talabalar Ctrl + Z, Ctrl + C va Ctrl + V, Shift tugmachasini bosib turib matn tanlash yoki so'z ustiga ikki marta bosish va hokazo kabi asosiy narsalarni bilishmaydi. Bu ular informatika bo‘yicha uchinchi kursda o‘qishlariga qaramay... O‘zingiz xulosa chiqaring.

Uchinchisi: teginish orqali yozish. Men koddagi izohlarni yozishni bolaga ishonib topshirdim (u mashq qilsin). Barmoqlarimiz kalitlarning joylashishini asta-sekin eslab qolishlari uchun biz darhol qo'limizni to'g'ri joylashtirdik.

Ko'rib turganingizdek, biz hali endi boshlaymiz. Biz o'z mahorat va bilimlarimizni oshirishda davom etamiz, ular hayotda foydali bo'ladi.

Aytgancha, kelajak haqida ...

Keyingi rivojlanish

Robot yaratilgan, harakat qiladi, miltillaydi va signal beradi. Endi nima? Biz erishgan narsalarimizdan ilhomlanib, uni yanada takomillashtirishni rejalashtirmoqdamiz. Masofadan boshqarish pultini yasash g'oyasi bor - xuddi oy roveri kabi. Masofadan boshqarish pultida o‘tirib, butunlay boshqa joyda harakatlanayotgan robotning harakatini boshqarish qiziq bo‘lardi. Ammo bu boshqa hikoya bo'ladi ...

Va oxirida, aslida, ushbu maqolaning qahramonlari (videoni bosish orqali):

Arduino-da birinchi robotni yaratish tajribasi (robot "ovchi")

E'tiboringiz uchun tashakkur!

Kod havolasi

Manba: www.habr.com

a Izoh qo'shish