Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

Salam

Bu yazıda Arduino istifadə edərək ilk robotumun yığılması prosesini təsvir etmək istəyirəm. Material mənim kimi bir növ "özünü idarə edən araba" etmək istəyən digər yeni başlayanlar üçün faydalı olacaq. Məqalə müxtəlif nüanslar üzərində mənim əlavələrimlə işləmə mərhələlərinin təsviridir. Son koda keçid (çox güman ki, ən ideal deyil) məqalənin sonunda verilmişdir.

Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

İmkan daxilində oğlumu (8 yaşında) iştiraka cəlb etdim. Bununla dəqiq nə işlədi və nə etmədi - məqalənin bir hissəsini buna həsr etdim, bəlkə də kiməsə faydalı olar.

Robotun ümumi təsviri

Əvvəlcə robotun özü haqqında bir neçə söz (fikir). Başlanğıcda standart bir şey yığmaq istəmədim. Eyni zamanda, komponentlər dəsti kifayət qədər standart idi - şassi, mühərriklər, ultrasəs sensoru, xətt sensoru, LED-lər, tweeter. Əvvəlcə ərazisini qoruyan bu “şorba dəsti”ndən robot icad edilmişdir. O, dairə xəttini keçən cinayətkarın üzərinə sürür, sonra isə mərkəzə qayıdır. Bununla belə, bu versiya hər zaman dairədə qalmaq üçün çəkilmiş xətt və əlavə riyaziyyat tələb edirdi.

Buna görə də, bir qədər fikirləşdikdən sonra fikrimi bir qədər dəyişdim və “ovçu” robotu düzəltməyə qərar verdim. Başlanğıcda yaxınlıqdakı hədəfi (insan) seçərək öz oxu ətrafında fırlanır. "Yırtıcı" aşkar edilərsə, "ovçu" yanıb-sönən işıqları və sirenləri yandırır və ona doğru sürməyə başlayır. İnsan uzaqlaşdıqda/qaçdıqda, robot yeni hədəf seçir və onu təqib edir və s. Belə robotun məhdud dairəyə ehtiyacı yoxdur və o, açıq yerlərdə işləyə bilir.

Gördüyünüz kimi, bu, tutma oyununa çox bənzəyir. Sonda robot kifayət qədər sürətli olmasa da, ətrafındakı insanlarla vicdanla ünsiyyət qurur. Xüsusilə uşaqların xoşuna gəlir (bəzən elə bil, tapdalamaq üzrədirlər, ürəyi döyünür...). Hesab edirəm ki, bu, texniki dizaynı populyarlaşdırmaq üçün yaxşı bir həlldir.

Robot quruluşu

Beləliklə, ideya üzərində qərar verdik, keçək layout. Elementlərin siyahısı robotun bacarmalı olduğu şeylərdən formalaşır. Burada hər şey olduqca aydındır, ona görə də dərhal nömrələməyə baxaq:

Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

Robotun “beyni” arduino uno lövhəsidir (1); çindən sifarişlə yığılıb. Məqsədlərimiz üçün kifayət qədərdir (istifadə olunan sancaqların sayına diqqət yetiririk). Eyni dəstdən iki sürücü təkəri (2) və bir arxa (sərbəst fırlanan) (3) quraşdırılmış hazır bir şassi (4) götürdük. Dəstə həmçinin hazır batareya bölməsi (5) daxil idi. Robotun qabağında ultrasəs sensoru (HC-SR04) (6), arxada motor sürücüsü (L298N) (7), mərkəzdə LED flaşörü (8) və bir az yan tərəfdə bir tvit (9) var.

Layout mərhələsində biz baxırıq:

- hər şey uyğun olsun
- balanslı olmaq
- rasional olaraq yerləşdirilməlidir

Çinli həmkarlarımız bunu bizim üçün artıq qismən ediblər. Beləliklə, ağır batareya bölməsi mərkəzə yerləşdirilir və sürücü təkərləri təxminən altında yerləşir. Bütün digər lövhələr yüngüldür və periferiyaya yerləşdirilə bilər.

Nuances:

  1. Dəstdən olan şassidə çoxlu zavod deşikləri var, amma mən hələ də məntiqin nə olduğunu başa düşməmişəm. Mühərriklər və batareya paketi problemsiz təmin edildi, sonra "tənzimləmə" bu və ya digər lövhəni təmin etmək üçün yeni deliklərin qazılması ilə başladı.
  2. Saxlama yerlərindəki pirinç rəflər və digər bağlayıcılar böyük kömək idi (bəzən onları çıxarmaq məcburiyyətində qaldıq).
  3. Hər bir lövhədən şinləri sıxaclardan keçirdim (yenidən onları anbarda tapdım). Çox rahatdır, bütün naqillər gözəl yatır və sallanmır.

Fərdi bloklar

İndi keçəcəyəm bloklar və hər biri haqqında sizə şəxsən danışacağam.

batareya bölməsi

Aydındır ki, robotun yaxşı enerji mənbəyi olmalıdır. Seçimlər fərqli ola bilər, mən 4 AA batareyası olan variantı seçdim. Ümumilikdə onlar təxminən 5 V verirlər və bu gərginlik birbaşa arduino lövhəsinin 5V pininə tətbiq oluna bilər (stabilizatordan yan keçməklə).

Əlbəttə ki, bir az ehtiyatlı idim, amma bu həll olduqca işləkdir.

Hər yerdə güc lazım olduğundan, rahatlıq üçün robotun mərkəzində iki bağlayıcı düzəltdim: biri zəmini "paylayır" (sağda), ikincisi - 5 V (solda).

Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

Motorlar və sürücü

Birincisi, mühərriklərin quraşdırılması haqqında. Montaj zavod istehsalıdır, lakin böyük toleranslarla hazırlanmışdır. Başqa sözlə, mühərriklər bir neçə millimetr sola və sağa yırğalana bilir. Bizim vəzifəmiz üçün bu kritik deyil, lakin bəzi yerlərdə təsir göstərə bilər (robot yan tərəfə keçməyə başlayacaq). Hər halda, mühərrikləri ciddi şəkildə paralel qoydum və yapışqan ilə düzəltdim.

Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

Mühərrikləri idarə etmək üçün, yuxarıda yazdığım kimi, L298N sürücüsü istifadə olunur. Sənədlərə görə, hər bir mühərrik üçün üç pin var: biri sürəti dəyişdirmək üçün və bir cüt fırlanma istiqaməti üçün. Burada bir vacib məqam var. Belə çıxır ki, təchizatı gərginliyi 5 V-dirsə, sürət tənzimləyicisi sadəcə işləmir! Yəni ya heç dönmür, ya da maksimuma çevrilir. Bu, bir-iki axşam “öldürməyimə” səbəb olan xüsusiyyətdir. Sonda forumların birində bir qeyd tapdım.

Ümumiyyətlə, robotu döndərən zaman mənə aşağı fırlanma sürəti lazım idi ki, onun məkanı skan etməyə vaxtı olsun. Amma bu fikirdən heç nə gəlmədiyi üçün bunu başqa cür etməli oldum: kiçik dönmə - dayan - dön - dayan və s. Yenə o qədər də zərif deyil, amma işləkdir.

Onu da əlavə edəcəyəm ki, hər təqibdən sonra robot yeni dönüş üçün təsadüfi istiqamət seçir (saat əqrəbi və ya saat yönünün əksinə).

Ultrasonik sensor

Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

Kompromis həll yolu axtarmalı olduğumuz başqa bir aparat parçası. Ultrasəs sensoru real maneələrdə qeyri-sabit nömrələr çıxarır. Əslində bu gözlənilən idi. İdeal olaraq, hamar, bərabər və perpendikulyar səthlərin olduğu yarışlarda bir yerdə işləyir, lakin kiminsə ayaqları qarşısında "yanırsa", əlavə emal tətbiq edilməlidir.

Belə emal kimi mən müəyyən orta filtr üç say üçün. Həqiqi uşaqlar üzərində aparılan testlərə əsasən (testlər zamanı heç bir uşaq zərər görmədi!), məlumatların normallaşdırılması üçün kifayət qədər olduğu ortaya çıxdı. Burada fizika sadədir: əks olunan siqnallarımız var zəruri obyektlər (lazım olan məsafəni vermək) və daha uzaqlardan, məsələn, divarlardan əks olunur. Sonuncular 45, 46 formasında ölçmələrdə təsadüfi emissiyalardır, 230, 46, 46, 45, 45, 310, 46... Məhz bunlar median filtri kəsir.

Bütün emaldan sonra ən yaxın obyektə qədər olan məsafəni əldə edirik. Müəyyən bir hədd dəyərindən azdırsa, siqnalı işə salırıq və birbaşa "təxribatçı" tərəfə sürürük.

Flaş və siren

Bəlkə də yuxarıda göstərilənlərin hamısının ən sadə elementləri. Onları yuxarıdakı fotoşəkillərdə görmək olar. Burada aparat haqqında yazacaq bir şey yoxdur, indi keçək kod.

Nəzarət proqramı

Kodu ətraflı təsvir etməyin mənasını görmürəm, kimə lazımdır - link məqalənin sonundadır, orada hər şey olduqca oxunaqlıdır. Amma ümumi quruluşu izah etmək yaxşı olardı.

Anlamalı olduğumuz ilk şey robotun real vaxt cihazı olması idi. Daha doğrusu, xatırlamaq lazımdır, çünki həm əvvəl, həm də indi elektronikada işləyirəm. Beləliklə, problemi dərhal unuduruq gecikmə (), onlar nümunə eskizlərdə istifadə etməyi sevən və proqramı sadəcə müəyyən bir müddət ərzində “dondurur”. Bunun əvəzinə, təcrübəli insanların tövsiyə etdiyi kimi, hər blok üçün taymerlər təqdim edirik. Lazımi interval keçdi - hərəkət edildi (LED-in parlaqlığını artırdı, mühərriki işə saldı və s.).

Taymerlər bir-birinə bağlana bilər. Məsələn, tvitter flaşörlə sinxron işləyir. Bu, proqramı bir az sadələşdirir.

Təbii ki, biz hər şeyi ayrı-ayrı funksiyalara bölürük (sönən işıqlar, səs, dönmə, irəliləmə və s.). Bunu etməsəniz, nəyin haradan və haradan gəldiyini anlaya bilməyəcəksiniz.

Pedaqogikanın nüansları

Axşamlar boş vaxtlarımda yuxarıda göstərilən hər şeyi etdim. Rahat şəkildə robota təxminən üç həftə sərf etdim. Bu burada bitə bilərdi, amma mən də sizə uşaqla işləmək barədə danışmağa söz verdim. Bu yaşda nə etmək olar?

Təlimatlara uyğun işləyin

Əvvəlcə hər bir detalı ayrıca yoxladıq - LEDlər, tvitlər, mühərriklər, sensorlar və s. Çox sayda hazır nümunə var - bəziləri düz inkişaf mühitində, digərləri isə İnternetdə tapıla bilər. Bu, şübhəsiz ki, məni sevindirir. Kodu götürürük, hissəni birləşdiririk, işlədiyinə əmin oluruq, sonra tapşırığımıza uyğun olaraq dəyişdirməyə başlayırıq. Uşaq diaqrama uyğun və bəzi nəzarətim altında əlaqələri qurur. Bu yaxşıdır. Həm də təlimatlara uyğun olaraq ciddi şəkildə işləməyi bacarmalısınız.

İş qaydası (“xüsusidən ümumiyə”)

Bu çətin məqamdır. Siz öyrənməlisiniz ki, böyük bir layihə (“robot hazırlamaq”) kiçik tapşırıqlardan (“sensoru birləşdirin”, “mühərrikləri birləşdirin”...) ibarətdir və onlar da öz növbəsində daha kiçik addımlardan ibarətdir (“robot tapın”). proqram," "board birləşdirin." ", "proshivka proqramı yükləyin"...). Aşağı səviyyənin az-çox başa düşülən tapşırıqlarını yerinə yetirməklə, biz orta səviyyənin tapşırıqlarını “bağlayırıq” və onlardan ümumi nəticə formalaşır. Mən izah etdim, amma düşünürəm ki, reallaşma tezliklə gəlməyəcək. Haradasa, yəqin ki, yeniyetməlik dövründə.

Quraşdırma

Qazma, saplar, vintlər, qoz-fındıq, lehimləmə və rozin qoxusu - onsuz biz harada olardıq? Uşaq "Lehimləmə dəmiri ilə işləmək" əsas bacarığını aldı - bir neçə əlaqəni lehimləməyi bacardı (bir az kömək etdim, gizlətməyəcəyəm). Təhlükəsizlik izahatını unutma.

Kompyuter işi

Robot üçün proqram yazdım, amma yenə də bəzi əlverişli nəticələr əldə edə bildim.

Birincisi: İngilis dili. Məktəbdə yenicə başlamışdılar, ona görə də pisalka, miqalka, yarkost və digər transliterasiyaların nə olduğunu anlamaqda çətinlik çəkirdik. Ən azından bunu başa düşdük. Hələ bu səviyyəyə çatmamışıq deyə mən bilərəkdən doğma ingiliscə sözlərdən istifadə etməmişəm.

İkincisi: səmərəli iş. Biz isti düymələrin birləşmələrini və standart əməliyyatları necə tez yerinə yetirməyi öyrətdik. Vaxtaşırı proqramı yazarkən oğlumla yerləri dəyişdik, nə etmək lazım olduğunu söylədim (dəyişdirmə, axtarış və s.). Dəfələrlə təkrar etməli oldum: “seçimi iki dəfə klikləyin”, “Shift-i saxlayın”, “Ctrl-i saxlayın” və s. Burada öyrənmə prosesi sürətli deyil, amma düşünürəm ki, bacarıqlar tədricən “subkorteksdə” yerləşdiriləcək.

Gizli mətnDeyə bilərsiniz ki, yuxarıdakılar demək olar ki, aydındır. Amma düzü, bu payızda bir məktəbdə 9-cu sinifdə informatikadan dərs demək imkanım oldu. Bu dəhşətlidir. Tələbələr Ctrl + Z, Ctrl + C və Ctrl + V, Shift düyməsini basıb saxlayaraq mətn seçmək və ya sözün üzərinə iki dəfə klikləmək və s. kimi sadə şeyləri bilmirlər. Bu onların informatika fakültəsinin üçüncü kursunda olmasına baxmayaraq... Özünüz nəticə çıxarın.

Üçüncüsü: toxunaraq yazmaq. Koddakı şərhləri yazmağı uşağa həvalə etdim (məşq etsin). Əllərimizi dərhal düzgün yerləşdirdik ki, barmaqlarımız yavaş-yavaş düymələrin yerini xatırlasın.

Gördüyünüz kimi, biz hələ yeni başlayırıq. Bacarıqlarımızı və biliklərimizi təkmilləşdirməyə davam edəcəyik, onlar həyatda faydalı olacaqlar.

Yeri gəlmişkən, gələcək haqqında...

Əlavə inkişaf

Robot hazırlanır, sürür, yanıb-sönür və siqnal verir. İndi nə? Əldə etdiklərimizdən ruhlanaraq, onu daha da təkmilləşdirməyi planlaşdırırıq. Uzaqdan idarə etmək ideyası var - bir ay roveri kimi. Pultda oturaraq tamam başqa yerdə hərəkət edən robotun hərəkətini idarə etmək maraqlı olardı. Amma bu başqa hekayə olacaq...

Və sonunda, əslində, bu məqalənin qəhrəmanları (klikləməklə video):

Arduino-da ilk robotun yaradılması təcrübəsi (robot-"ovçu")

Diqqətiniz üçün təşəkkür edirik!

Kod bağlantısı

Mənbə: www.habr.com

Добавить комментарий