ANTIK_2024 ANTIK_2024 ANTIK_2024

Robotika – doplnky k podvozku Ring:bit pre Micro:bit na sledovanie čiary a farebné efekty

Mikrokontroléry
0

článku  sme predstavili stavebnicu robotického podvozku Ring: bit V2, ktorý je riadený populárnym jednodoskovým mikropočítač BBC micro:bit, ktorý sa používa na výučbu programovania aj v mnohých našich školách. Micro:bit sa k doske elektroniky pripevní pomocou piatich skrutiek, ktoré zároveň tvoria elektrické prepojenie pre tri porty P0, P1 a P2, napájacie napätie 3.3 V a elektrickú zem GND. Dva GPIO porty P1 a P2 sú určené na ovládanie servomotorov poháňajúcich kolesá a tretí port P0 sa dá použiť na iný účel, napríklad nárazník s farebnými diódami, optický senzor na sledovanie čiary, ktoré sa dajú upevniť zospodu na pomocnú dosku elektroniky,  prípadne ultrazvukový senzor na meranie vzdialenosti ktorý vhodne mechanicky upevní v hornej časti podvozku. 

Video ukazuje, ako fungujú všetky príklady v článku

Pripomíname, že v online vývojovom prostredí https://makecode.microbit.orgje potrebné do projektu importovať rozšírenie “ringbitcar”.

Ako prvý predstavíme RGB LED dúhový nárazník, ktorý obsahuje 8 RGB LED Neopixel WS2812B s vysokou intenzitou svietenia a jeho tvar výborne poslúži pri posúvaní rôznych predmetov, napríklad lopty pri futbale robotov.

Príklad obsahuje len kód na rozblikanie nárazníka, nerieši pohyb ani ovládanie robota. Prepínač na spodnej doske musí byť v polohe Rainbow LED. V prvom riadky programu v JaveScripte si všimnite, že sa inicializuje 10 LED diód, napriek tomu, že ma nárazníku je ich len 8. ďalšie dve sú na pomocnej doske elektroniky zospodu.

JavaScript

let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB)
strip.showRainbow(1, 360)
basic.forever(function () {
   strip.rotate(1)
   strip.show()
   basic.pause(100)
})

V ďalšom príklade budeme realizovať jednu z najobľúbenejších funkcií robotických podvozkov – sledovanie čiary. Snímač čiary pre robota Ring: bit V2 dokáže sledovať čiernu čiaru na svetlej podložke, alebo detegovať hranu stola, po ktorom sa pohybuje. Snímač čiary je vybavený dvoma infra senzormi, ktoré dokážu rozpoznať čiernu čiaru alebo hranu povrchu na vzdialenosť 2 ÷ 12 mm. Princíp je jednoduchý, od svetlého povrchu sa infračervený signál odrazí a čierny povrch ho pohltí, takže sa neodrazí. Podobne to funguje napríklad po dosiahnutí hrany svetlého stola. 

Najskôr si podmienky v aplikáci odladíme tak, že budeme identifikovať kedy sa program nachádza v ktorej vetve podmienky. V prípade ak sú obidva snímače senzora, ľavý aj pravý na čiernej čiare bude na displeji zobrazená číslica 0.  Ak bude robot v polohe, že bude ľavý senzor (pri pohľade spredu) mimo čiernej čiary zobrazí sa 1 a ak bude mimo čiary pravý senzor, zobrazí sa 2. Prepínač na spodnej doske musí byť v polohe Other Modules.

JavaScript

RingbitCar.init_wheel(AnalogPin.P1, AnalogPin.P2)
basic.showNumber(0)
basic.forever(function () {
    if (RingbitCar.tracking(RingbitCar.TrackingStateType.Tracking_State_2)) {
       basic.showNumber(2)
       basic.pause(200)
    }
    if (RingbitCar.tracking(RingbitCar.TrackingStateType.Tracking_State_1)) {
       basic.showNumber(1)
       basic.pause(200)
    }
   basic.showNumber(0)
})

Teraz po odladení podmienok, budeme namiesto zobrazovania číslic aktivovať pohon pravého, alebo ľavého kolesa, aby sa robotický podvozok vrátil na čiernu čiaru. Pripomíname, že ľavé koleso robotického podvozku je pripojené na porte P1 a pravé koleso na porte P2. Program funguje tak, že ak sa ľavá časť snímača čiary odkloní od čiernej čiary, potom sa pravé koleso zastaví a ľavé koleso zaistí návrat späť na čiaru rýchlosťou 50. Pravá časť snímača funguje rovnakým spôsobom akurát obrátene. Ak obe časti snímača detegujú čiernu čiaru otáčajú sa obidva kolesá rovnakým smerom rýchlosťou 100, takže robotický podvozok ide po čiare dopredu.

JavaScript

RingbitCar.init_wheel(AnalogPin.P1, AnalogPin.P2)
RingbitCar.forward()
basic.forever(function () {
    if (RingbitCar.tracking(RingbitCar.TrackingStateType.Tracking_State_2)) {
       RingbitCar.freestyle(50, 0)
       basic.pause(100)
    }
    if (RingbitCar.tracking(RingbitCar.TrackingStateType.Tracking_State_1)) {
        RingbitCar.freestyle(0, 50)
       basic.pause(100)
    }
   RingbitCar.freestyle(100, 100)
})

 

Snímač čiary pre robota Ring: bit V2 má dva senzory, ľavý a pravý. Ak by ste si modul na sledovanie čiary vyrábali sami, mohli by ste si úlohu zjednodušiť a použiť len jeden senzor, čiže jeden pár svietiacej a snímacej infračervenej diódy umiestnený v strede.  Vyskúšame aj tento variant s tým, že na snímači použijeme v aplikácii len jeden senzor.   Aplikácia je veľmi jednoduchá, avšak pohyb robotického podvozku bude tak trochu viac „cik-cak“.  Keďže teraz máme „akože“ iba jeden svetelný senzor, budeme sledovať hranu čiernej čiary, napríklad pravú. Predpokladajme, že pri štarte je senzor nad čiernou čiarou. Robot sa pohne dopredu a keďže potrebujeme sledovať hranu vždy keď je senzor nad čiernou čiarou   necháme ho vychýliť doprava. Akonáhle sa dostane nad svetlú plochu začne sa otáčať doľava až kým sa nevráti nad čiaru. Tento cyklus sa opakuje, takže robot de facto nejde priamo  po čiare, ale ide kmitavým pohybom okolo pravej hrany čiary.   

JavaScript

RingbitCar.init_wheel(AnalogPin.P1, AnalogPin.P2)
RingbitCar.forward()
basic.forever(function () {
    if (RingbitCar.tracking(RingbitCar.TrackingStateType.Tracking_State_1)) {
       RingbitCar.freestyle(0, 50)
       basic.pause(100)
    } else {
       RingbitCar.freestyle(50, 0)
       basic.pause(100)
    }
})

Na testovanie sme úmyselne použili dráhu na ktorej je čiernou čiarou na bielom podklade vykreslená veľká osmička.

Vo videu vidíte rozdiel pri použití jedného a dvoch senzorov. Ak použijete dva senzory, robotický podvozok bude jazdiť po celej osmičke. Ak použijete jeden senzor, ktorý sleduje vnútornú hranu, bude robot krúžiť iba v jednej časti osmičky. Ak robota umiestnite tak, aby sledoval bonkajšiu hranu osmičky bude jeho pohyb v mieste kde sa obidve sľušky osmičkovej dráhy pretínajú väčšinou chaotický.

V budúcom pokračovaní predstavíme ultrazvukový merač vzdialenosti pre Micro:bit, ktorý umožní vášmu robotickému podvozku orientáciu v priestore, napríklad na úlohy typu prechod labyrintom, alebo pomocou neho môžete merať vzdialenosti od objektov. 

 

Zobrazit Galériu

Luboslav Lacko

Všetky autorove články
BBC micro:bit ring:bit robotika hw kitchen robotický podvozok informatika programovanie

Pridať komentár