Image
10.4.2019 0 Comments

IoT prakticky – micro:bit obsluha udalostí od hardvéru, pripojenie serva a motorčeka

Dosiaľ sme programovali mikropočítačovú dosku klasicky tak, že hlavný program ktorý niečo jednoduché robil periodicky bežal v nekonečnej slučke vytvorenej pomocou cyklu forever. Ak vytvárate aplikáciu, ktorá reaguje na podnety od používateľa, alebo od senzorov monitorujúcich veličiny z okolia, alebo nejakého procesu, bolo by monitorovanie týchto udalostí v slučke trochu komplikované na naprogramovanie podmienok. Kód by bol neprehľadný a hlavne mikroprocesor by musel stále bežať v normálnom režime a spotrebovávať adekvátne množstvo energie a to aj v prípade, ak by sa pol dňa, prípadne dlhšie nedialo vôbec nič.  Oveľa jednoduchšie a pri správnom naprogramovaní aj energeticky úspornejšie je vytvoriť udalosťami riadený program a naprogramovať obsluhu udalostí generovaných hardvérom. Všetky príklady z tohoto dielu sú názorne ukázané v našom videu

Obsluha udalostí od používateľa rozlišuje interný hardvér, napríklad ak používateľ zatlačí niektoré z tlačidiel A a B integrovaných priamo na doske, prípadne ich zatlačí súčasne, prípadne udalosť od niektorého senzora, napríklad akcelerometra, snímača teploty, či osvetlenia a externý hardvér pripojený na zbernicu dosky micro:bit. V princípe v tom nie je žiadny rozdiel, akurát interný hardvér je možné vo vývojovom prostredí aj emulovať a graficky znázorniť. Nová verzia vývojového prostredia dokáže znázorniť aj fungovanie niektorých knižníc obsluhujúcich externý hardvér pripojený na zbernicu, napríklad servomotor.

V prvom príklade ukážeme rozsvietenie RGB LED, ktorej tri vývody sú pripojené k portom P0, P1 a P2. Farba LED sa nastaví podľa toho, či používateľ stlačil tlačidlo A, tlačidlo B, alebo obidva tlačidlá súčasne. Všimnite si, že hlavná slučka, čiže cyklus forever neobsahuje žiadny kód, všetko sa odohráva v obsluhe udalostí zatlačenia tlačidiel input.onButtonPressed.

JavaScript: 

input.onButtonPressed(Button.A, function () {
   pins.digitalWritePin(DigitalPin.P0, 1)
   pins.digitalWritePin(DigitalPin.P1, 0)
   pins.digitalWritePin(DigitalPin.P2, 0)
})
input.onButtonPressed(Button.B, function () {
   pins.digitalWritePin(DigitalPin.P0, 0)
   pins.digitalWritePin(DigitalPin.P1, 1)
   pins.digitalWritePin(DigitalPin.P2, 0)
})
input.onButtonPressed(Button.AB, function () {
   pins.digitalWritePin(DigitalPin.P0, 0)
   pins.digitalWritePin(DigitalPin.P1, 0)
   pins.digitalWritePin(DigitalPin.P2, 1)
})
 
basic.forever(function () {
       
})

Druhý príklad v ktorom tlačidlom s aretáciou zapíname a vypíname LED diódu je zdanlivo nezmyselný. Stačilo by zapojiť do série zdroj napätia, LED diódu, obmedzovací odpor a tlačidlo a zapínanie LED diódy by fungovalo aj bez mikropočítačovej dosky. Zmysel príkladu je v tom, rozlíšiť pri spínaní, alebo impulzoch reakciu softvéru na nábežnú hranu a zostupnú hranu a softvérovo obslúžiť príslušné udalosti

JavaScript: 

control.onEvent(EventBusSource.MICROBIT_ID_IO_P0, EventBusValue.MICROBIT_PIN_EVT_FALL, function () {
   pins.digitalWritePin(DigitalPin.P2, 1)
})
 
control.onEvent(EventBusSource.MICROBIT_ID_IO_P0, EventBusValue.MICROBIT_PIN_EVT_RISE, function () {
   pins.digitalWritePin(DigitalPin.P2, 0)
})
 
pins.setEvents(DigitalPin.P0, PinEventType.Edge)
pins.setPull(DigitalPin.P0, PinPullMode.PullUp)

Okrem obsluhy udalostí, ukážeme aj ďalšie hardvérové možnosti. V nasledujúcom príklade je generovanie zvuku. Vo videu si všimnite ako sa interaktívne dajú nastaviť tóny buď podľa hudobnej stupnice, klaviatúry klavíra, alebo zadaním frekvencie. Nakoľko bzučiak má väčší prúdový odber, nepripojíme ho priamo na port P0, ale cez NPN tranzistor.

JavaScript: 

basic.forever(function () {
   music.ringTone(262)
   basic.pause(100)
   music.ringTone(330)
   basic.pause(100)
   music.ringTone(392)
   basic.pause(100)
   music.ringTone(330)
   basic.pause(100)
})

Ukážeme aj obsluhu serva, ktoré často využívajú modelári a konštruktéri robotov. Servo je komplexná súčiastka umožňujúca pootočenie osky s ramenom. Môžete si ho predstaviť ako motor s prevodovkou, so spätnoväzobným potenciometrom, ktorým sa meria uhol natočenia a riadiacim obvodom.

Pomocou PWM impulzov, čiže impulzov so šírkovou moduláciou môžete regulovať uhol jeho natočenia. Servo je k riadiacej jednotke pripojené pomocou troch rôznofarebných 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.

Frekvencia impulzov privádzaných na oranžový vodič je 50 Hz. Uhol natočenia sa ovláda šírkou pozitívneho pinu. Napríklad u modelárskeho serva SG90 je šírka pulzu 500 až 2400 μs a tejto hodnote zadpovedá uhol natočenia  0°až 180. Na prvý pohľad to znie zložito, ale vďaka knižnici integrovanej do vývojového prostredia je ovládanie servomotorov veľmi jednoduché. Servomotor má väčší odber, než je schopná doska dodať pri napájaní cez USB, preto je potrebné napájať dosku z batérií. 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. Pre servo pripojené na port P0 sa graficky zobrazuje emulácia jeho natáčania.

JavaScript: 

basic.forever(function () {
   pins.servoWritePin(AnalogPin.P0, 0)
   basic.pause(2000)
   pins.servoWritePin(AnalogPin.P0, 180)
   basic.pause(2000)
})

No a na záver ovládanie jednosmerného motore. Smer otáčania jednosmerných motorov závisí od polarity privedeného napätia. Preto v niektorom z ďalších dielov ukážeme ako sa dá smer otáčania jednosmerných motorov meniť pomocou takzvaného H-mostíka. V tejto časti sa obmedzíme len na zapnutie a vypnutie motora zopnutím logickej úrovne na porte P0. Saj v tomto prípade motor má väčší odber, než je schopná doska dodať pri napájaní cez USB, preto je potrebné napájať dosku z batérií a motor sa spína cez NPN tranzistor.

JavaScript: 

pins.digitalWritePin(DigitalPin.P0, 1)
basic.forever(function () {
   pins.digitalWritePin(DigitalPin.P0, 0)
    basic.pause(1000)
   pins.digitalWritePin(DigitalPin.P0, 1)
   basic.pause(1000)
})

 

V budúcom pokračovaní predstavíme sadu Grove pre Microbit (na obrázku v pozadí)

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Technológie

Robotika - čo dokážu roboty Blue-Bot a Pro-Bot

18.07.2019 00:10

V tomto dielu prázdninového seriálu venovaného robotike predstavíme možnosti dvoch robotov od britskej firmy TTS. Blue-Bot sa programuje zadávaním sekvencie krokov, pričom krok je buď pohyb v danom sm ...

Technológie

IoT prakticky – UniPi 1.1 Lite s Raspberry Pi pre smarthome a automatizáciu

17.07.2019 00:10

UniPi 1.1 Lite je nadstavba pre populárnu mikropočítačovú dosku Raspberry Pi, s ktorou tvorí jednoduchou programovateľnú riadiacu jednotku využiteľnú pre jednoduchšie projekty riadenia napríklad intel ...

Technológie

Roboty Bee-Bot a Blue-Bot pre mladších žiakov

16.07.2019 00:10

Náš prázdninový seriál venovaný robotike sme začali štyrmi dielmi popisujúcimi konštrukciu a programovanie jednoduchých a lacných robotických podvozkov. Inak povedané – témy pre učiteľov informatiky a ...

q

Žiadne komentáre

Vyhľadávanie

eFocus_2019

Najnovšie videá