SAMSUNG_022024A Advertisement SAMSUNG_022024A Advertisement SAMSUNG_022024A Advertisement

Robotika – ovládanie modelov LEGO Technic mikropočítačom BBC Micro:bit 2

Mikrokontroléry
0

V prvej časti venovanej automatizácii výtvorov zo stavebnice LEGO Technic sme ukázali možnosti motorov a servomotorov určených na zakomponovanie do tejto stavebnice. Po doplnení o vhodnú riadiacu jednotku budú môcť žiaci a študenti naplno prejaviť svoju kreativitu. Vzhľadom k vekovej kategórii pre ktorú sú stavebnice LEGO Technic určené je najvhodnejšou riadiacou jednotkou mikropočítač BBC Micro:bit (14 eur) používaný v mnohých našich školách pri výučbe programovania a robotiky doplnenú o modul Elecfreaks Wukong, ktorý umožňuje riadiacu jednotku zakomponovať do Lega. 

Príklady sú vo videu



Rozširujúci modul Wukong nie je o mnoho väčší než samotný Micro:bit. Je konštruovaný tak, že sa dá zabudovať do platformy LEGO vybavené štandardným rámečkem 7 x 5. Vo vnútri platformy je 400 mAh akumulátor.

Pri stavbe modulu dbajte na to, aby pokiaľ možno bol viditeľný maticový displej, na ktorom sa dajú zobrazovať rôzne informácie a boli dostupné tlačidlá. Mimochodom názov Wukong je odvodený od postavy Opičieho kráľa z čínskej románovej tvorby. Opičiak (podobne ako tento modul pre Micro:bit) vynikal rôznymi schopnosťami a ovládal tiež rôzne premeny a kúzla. 

Wukong dokáže ovládať dva jednosmerné motory a osem serv. Môžete taktiež použiť ďalšie moduly s možnosťou pripojenia cez GVS, čiže tri vodiče: G – elektrická zem, V – napájacie napätie 3.3 V a S – signál z portu. Pripojiť môžete aj OLED modul, prípadne rôzne snímače, napríklad BME280. Priamo na doske Wukong sú 4 RGB LED diódy nae vytváranie farebných efektov, 8 modrých LED na vytvorenie efektného podsvietenia a bzučiak napríklad pre funkciu trúbenie. K modulu Wukong sú k dispozícii LEGO kompatibilné aktuátory a snímače, ako DC motory, serva a rôzne snímače.

Modely áut z Lega fungujú ako klasické autá a menia smer zatáčaním predných kolies. Väčšina modelov z Lega má diferenciál, takže na pohon stačí jediný motor. Je to teda iná filozofiu ovládania, než robotické podvozky predstavené v miniseriáli Robotika. Tie mali len dve kolesá a robot menil smer zmenou rýchlosti a smeru ich otáčania. V minulej časti sme ukázali, že miniatúrne servá napájané z modulu Wukong, ktorý má vstavanú batériu s pomerne nízkym napätím 3.7 V dokážu bez problémov rozpohybovať aj väčšie Lego modely a konštrukcie. 

Obrázok je prevzatý z Instagramu jeho tvorcu https://www.instagram.com/emmetbrickhacker/

Zakomponovanie servomotorov je otázkou kreativity a bude u každého modelu iné. V našom príklade sme napojili kontinuálne servo na hriadeľ poháňajúci zadné kolesá cez diferenciál a klasické servo, ktoré sa otáča o definovaný uhol na hriadeľ mechanizmu natáčania predných kolies. Skôr, než sme servá pripojili dosku Wukong, vyskúšali sme použiť na ich ovládanie súpravu na diaľkové ovládanie modelov a servá sme pripojili na modul, ktorý sa inštaluje do modelu auta, lietadla, či lode. Vo videu môžete vidieť, že autíčko  ovládané natáčaním predných kolies má menšie manévrovacie schopnosti ako robotický podvozok, čo je potrebné pri programovaní zohľadniť. Ak doplníte autíčko o senzor sledovania čiary, budú musieť byť oblúky väčšie - také, aby ich autíčko dokázalo prejsť. 

Pripomenieme, že Servo je k riadiacej jednotke pripojené pomocou troch vodičov. Na červenom vodiči je kladné napájacie napätie, na čiernom (niekedy hnedom) vodiči je zem a na oranžový vodič sa privádzajú signály. Oranžový vodič je vo vnútri serva pripojený na riadiacu elektroniku, nemá veľký prúdový odber, takže ho môžete pripojiť priamo na port. Ovláda sa pomocou PWM. Frekvencia impulzov privádzaných na oranžový vodič je 50 Hz, čo je čas trvania periódy 20 ms. Uhol natočenia sa ovláda šírkou impulzu. U klasického modelárskeho serva je šírka pulzu 0.5 až 2.5 ms a tejto hodnote zodpovedá uhol natočenia  0°až 180, prípadne 0 – 270 stupňov, podľa konštrukcie serva. Kontinuálne servomotory fungujú tak, že zmenou šírky impulzov sa mení rýchlosť otáčania.

V našich príkladoch bude servo na ovládanie natočenia predných kolies pripojené na port S0 a kontinuálne servo na pohon zadných kolies na port S1. Do prostredia MakeCode, je potrebné doinštalovať rozširujúcu knižnicu funkcií Wukong.

V prvom príklade nastavíme servo riadenia do východiskovej polohy, čiže do stredu. Nakoľko servo sa natáča v rozsahu 0 – 180°bude stredová poloha pri nastavenom uhle 90°. Po spustení programu sa servo pripojené na port S0 do tejto polohy natočí. Treba ho spojiť s hriadeľom tak, aby v tejto polohe smerovali kolesá rovno. Keďže modul Wukong má aj efektné modré LED diódy tak pre efekt ich nastavíme tak, aby sa v móde BREATH rozsvecovali a stmievali. Môžete taktiež nastaviť a meniť farby na štyroch RGB diódach v rohu dosky. Na tento účel použijete funkcie z knižnice Neopixel.

basic.showIcon(IconNames.Heart)
wuKong.setLightMode(wuKong.LightMode.BREATH)
 
input.onButtonPressed(Button.A, function () {
    wuKong.setServoAngel(wuKong.ServoList.S0, 90)
})

Aj druhý príklad bude na kalibráciu riadenia. Skúšajte nastavovať rozsah uhlov zodpovedajúci natočeniu prednej nápravy. Niektoré modely majú riadenie sprevodované viac, iné menej. V našom modeli sa osvedčilo nastavenie rozsahu 20°na každú stranu, čiže od 70 do 100°. Tlačidlom A sa riadenie vychýli do jednej a tlačidlom B do druhej strany. Súčasným zatlačením tlačidiel A+B sa nastaví uhol 90°

input.onButtonPressed(Button.A, function () {
    wuKong.setServoAngel(wuKong.ServoList.S0, 110)
})
input.onButtonPressed(Button.B, function () {
    wuKong.setServoAngel(wuKong.ServoList.S0, 70)
})
input.onButtonPressed(Button.AB, function () {
    wuKong.setServoAngel(wuKong.ServoList.S0, 90)
})

Rovnaký kód použijeme aj na vyskúšanie rýchlosti. Kontinuálne servo na porte S1 v polohe 90°stojí a v závislosti od uhla natočenie smerom k 0°, alebo 90°sa menia otáčky smerom dopredu, alebo dozadu. Pri takto nastavených hodnotách sa bude motor otáčať relatívne pomaly

basic.showIcon(IconNames.Square)
wuKong.setLightMode(wuKong.LightMode.BREATH)
wuKong.setServoAngel(wuKong.ServoList.S0, 90)
wuKong.setServoAngel(wuKong.ServoList.S1, 90)
 
input.onButtonPressed(Button.A, function () {
    wuKong.setServoAngel(wuKong.ServoList.S1, 110)
})
 
input.onButtonPressed(Button.B, function () {
    wuKong.setServoAngel(wuKong.ServoList.S1, 70)
})
 
input.onButtonPressed(Button.AB, function () {
    wuKong.setServoAngel(wuKong.ServoList.S1, 90)
})

Maximálne otáčky bu ste dosiahli nastavením hodnôt 

input.onButtonPressed(Button.A, function () {
    wuKong.setServoAngel(wuKong.ServoList.S1, 180)
})
 
input.onButtonPressed(Button.B, function () {
    wuKong.setServoAngel(wuKong.ServoList.S1, 0)
})

 

Skúsime jednoduchý program ktorý urobí pri pohybe dopredu niekoľko zatočení na jednu, alebo druhú stranu

basic.showIcon(IconNames.Square)
wuKong.setLightMode(wuKong.LightMode.BREATH)
wuKong.setServoAngel(wuKong.ServoList.S0, 90)
wuKong.setServoAngel(wuKong.ServoList.S1, 90)
 
input.onButtonPressed(Button.A, function () {
    wuKong.setServoAngel(wuKong.ServoList.S1, 70)
    for (let i = 0; i < 4; i++) {
        wuKong.setServoAngel(wuKong.ServoList.S0, 70)
        basic.pause(1000)
        wuKong.setServoAngel(wuKong.ServoList.S0, 110)
        basic.pause(1000)
    }
    wuKong.setServoAngel(wuKong.ServoList.S1, 90)
})

Program môžete upraviť tak, aby autíčko „autonómne“ zacúvalo na parkovacie miesto vymedzené dvomi papierovými škatuľkami a podobne. 

V modeli autíčka v príklade sme nepoužili jednosmerný motor. Ak by ste ho chceli použiť namiesto kontinuálneho serva, pripája sa na konektor určený pre motory.  Rýchlosť otáčania sa riadi pulzne šírkovou moduláciou s parametrom 0 – 100 a smer otáčania sa ovláda znamienkom

input.onButtonPressed(Button.A, function () {
    wuKong.setAllMotor(0, -100)
    basic.pause(1000)
    wuKong.setAllMotor(0, -50)
    basic.pause(1000)
    wuKong.setAllMotor(0, 0)
    basic.pause(1000)
    wuKong.setAllMotor(0, 50)
    basic.pause(1000)
    wuKong.setAllMotor(0, 100)
})
input.onButtonPressed(Button.B, function () {
    wuKong.stopAllMotor()
})

Veľmi zaujímavé je rádiové ovládanie modelu druhým Micro:bitom. Táto téma aj s príkladmi je podrobne popísaná v článku Joystick na ovládanie zariadení s Micro:bitom https://www.pcrevue.sk/a/Joystick-na-ovladanie-zariadeni-s-Micro-bitom

Program pre Micro:bit v joysticku môže zostať bezo zmeny avšak vzhľadom na iný princíp pvládania modelu musíte modifikovať program Micro:bitu ovládajúci servomotory

K modulu Wukong môžete pripájať akékoľvek príslušenstvo, ktoré sa pripája pomocou troch vodičov GVS

Zobrazit Galériu

Luboslav Lacko

Všetky autorove články
Lego Technic BBC micro:bit MicroBit robotika programovanie modely áut

Pridať komentár