Image
24.7.2019 0 Comments

IoT prakticky: Micro:bit Experiment Box na jednoduché pokusy s hardvérom

Súprava Experiment Kit uľahčí žiakom a mladým záujemcom o elektroniku prvé kroky pri poznávaní elektroniky a základov programovania. Využíva populárnu mikropočítačovú dosku BBC micro:bit Obsahuje LED diódu, RGB LED, servomotor, jednosmerný motor, snímače teploty a osvetlenia, motor, tlačidlo, bzučiak, spínací MOSFET tranzistor, RGB LED prstenec, potenciometer a rezistory.

Fungovanie príkladov je ukázané vo videu 

Na základnej doske, na ktorej sú sústredené všetky súčiastky je aj konektor typu GVS na pripojenie prípadných ďalších zariadení. Na zdierky, do ktorých sa zasunujú káble s banánikmi sú vyvedené porty 0, 1, 2, 8 a 12. V súprave je 12 prepojovacích káblikov s banánikmi dlhých 28 cm. Plastový kufrík je konštruovaný tak, že sa dá zavrieť bez toho aby bolo treba zapojenie rozpojiť.

ripomínam, že kód sa vytvára priamo na stránke https://makecode.microbit.org a výsledný hex súbor sa kopíruje na cez USB pripojený Micro:bit, ktorý sa voči počítaču javí ako externý USB disk. Námetom prvého pokusu bude pre mikrokontroléry klasická aplikácia blinky, ktorej cieľom je rozblikať LED diódu pripojenú k portu P0. LED dióda je pripojená k portu cez rezistor 100 Ohmov, ktorý obmedzuje prúd prechádzajúci diódou. P Ledku rozblikáte tak, že na porte P0  budete striedavo prepínať hodnoty logická 1 (3,3 V) a logická 0 (0 V).

JavaScript: 

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

Zapojenie rozšírime o tlačidlo pripojené k portu P2 a kód upravíme tak, aby LED diódy blikali iba vtedy, ak je stlačené tlačidlo. V tomto príklade bude potrebné vstupný pin inicializovať. Bude fungovať tak, že pri nestlačenom tlačidle bude na vstupnom porte logická 1 a po zatlačení logická Nula. Aby sme nemuseli ku tlačidlu pridávať rezistor pripojený na jeden vývod tlačidla a napájacie napätie 3,3 V nakonfigurujeme vstupný pin do režimu pull up, kedy sa aktivuje vnútorný rezistor.

JavaScript

pins.setPull(DigitalPin.P2, PinPullMode.PullUp)
basic.forever(function () {
    if (pins.digitalReadPin(DigitalPin.P2) == 0) {
       pins.digitalWritePin(DigitalPin.P0, 0)
       basic.pause(500)
       pins.digitalWritePin(DigitalPin.P0, 1)
    }
})

V ďalšom 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 udalosti zatlačenia tlačidla 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 () {
       
})

V ďalšom mini príklade sa presunieme do analógového sveta a ukážeme načítanie a jednoduché grafické znázornenie napätia na pine P0, ktorý v tomto prípade bude fungovať ako analógový vstup. Vstavaný prevodník prevádza analógovú hodnotu napätia na vstupe na interval číselných hodnôt 0 – 1024.

Nameranú hodnotu zobrazíme ako plošný graf na displeji, presnejšie na matici diód na doske micro:bit. Napätie budeme regulovať pomocou potenciometra 

JavaScript

basic.forever(function () {
   led.plotBarGraph(
   pins.analogReadPin(AnalogPin.P0),
    1023
    )
})

Modifikujeme predchádzajúci príklad tak, aby sme pomocou fotobunky mohli merať intenzitu okolitého osvetlenia. Softvérový kód zostane rovnaký, ako keď sme merali hodnotu napätia na potenciometri zapojenom ako napäťový delič.

Ukážeme aj obsluhu serva, ktoré často využívajú modelári a konštruktéri robotov. 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. Ovláda sa pomocou PWM. Frekvencia impulzov privádzaných na oranžový vodič je 50 Hz. Uhol natočenia sa ovláda šírkou impulzu. U modelárskeho serva SG90 je šírka pulzu 500 až 2500 μ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é. 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.

JavaScript: 

input.onButtonPressed(Button.A, function () {
   pins.servoWritePin(AnalogPin.P0, 0)
})
input.onButtonPressed(Button.B, function () {
   pins.servoWritePin(AnalogPin.P0, 180)
})
input.onButtonPressed(Button.AB, function () {
   pins.servoWritePin(AnalogPin.P0, 90)
})

Ukážeme aj ovládanie jednosmerného motora.  Obmedzíme sa len na zapnutie a vypnutie motora zopnutím logickej úrovne na porte P0. 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)
})

Nasleduje príklad s prstencom RGB LED diód pripojeným k portu P0. Aby ste ho mohli programovať, potrebujete pridať knižnicu Neopixel. 

JavaScript: 

let kruh = neopixel.create(DigitalPin.P0, 8, NeoPixelMode.RGB)
kruh.showRainbow(1, 360)
basic.forever(function () {
   kruh.show()
   kruh.rotate(1)
   basic.pause(100)
})
Zobrazit Galériu

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

Mohlo by Vás zaujímať

Mikrokontroléry

Robotika – ovládanie modelov Lego Technic mikropočítačom BBC Micro:bit 1 - servá pre Lego

23.08.2019 00:00

Vlani sme cez prázdniny v trojici článkov Robotický podvozok, Segway z Lega a Digitálne dvojča predstavili možnosti robotickej stavebnice Lego Mindstorms. Čitateľov možnosti tejto stavebnice zaujali, ...

Mikrokontroléry

Robotika: možnosti programovania a senzorová výbava pokročilého robota InO-Bot

17.08.2019 00:10

Postupne sme predstavili niekoľko robotov, ktoré sa používajú, alebo začínajú používať na školách, pri výučbe logického myslenia, algoritmizácie a následne programovania. Zatiaľ čo roboty Bee-Bot a Bl ...

Mikrokontroléry

IoT prakticky - programovanie Raspberry Pi v Pythone 6: 1-Wire zbernica

16.08.2019 00:01

Mini seriál je zameraný na obsluhu hardvéru pripojeného na dosku Raspberry PI. V tejto časti na praktických príkladoch ukážeme možnosti komunikácie pomocou zbernice 1-Wire.  Príklady sú v vo videu & ...

q

Žiadne komentáre

Vyhľadávanie

eFocus_2019

Najnovšie videá