Rádiózzunk micro:bit-tel!

A micro:bit központi egysége egy ARM alapú, nRF51 típusú un. alkalmazás processzor. Ez az eszköz kezeli a micro:bit hardver elemeit, a ledmátrixot, a gombokat, a szenzorokat, a GPIO csatlakozókat és végül, de nem utolsósorban a micro:bit 2,4GHz-es rádióját. A modul számos szabványos rádiótávközlési protokollt támogat, beleértve a szabadalmaztatott Nordic Gazell-t. Ez a protokoll nagyon egyszerű, kis csomagot sugárzó (small-packet broadcast) rádió interfészt biztosít más, azonos protokollt támogató eszközök közötti kommunikációhoz, mint például más mikro:bit eszközök.

Az összeköttetés fontosabb jellemzői:

A rádió modul programozása történhet a java scriptes block editorral, vagy micropython-ban. Ebben az esetben az első lépés a szükséges library meghívása, amit az alábbi módon tehetünk meg:

from microbit import *
import radio

Ezt követi az eszköz bekapcsolása:

radio.on()

A következő beállítandó paraméter az un. csatorna szám, amivel megadható, hogy az egymással kommunikáló eszközök melyik csatornát használják. Értéke 0 – 100 közötti szám.

radio.config(channel=19)

Megadható tovább az adás erőssége, azaz a hatótávolság módosítható. Értéke 0 (-30dbm) és 7 között (+4dbm) lehet.

radio.config(power=7)

Üzenet küldés és fogadás:
A fenti funkciókat a radio.send, illetve a radio.receive parancsokkal tudjuk megoldani, egy egyszerű példával:
küldés:

my_message = „micro:bit radio”
radio.send(my_message)

fogadás:

message_received = radio.receive()

A fentieket foglaljuk össze egy egyszerű mintaprogramban!

1. programpár

Program-1: az adó

from microbit import *
import radio

chnl = 10
radio.config(channel=chnl)
radio.on()


while True:
    a = button_a.is_pressed()
    b = button_b.is_pressed()
    if  a:
        display.show(Image.ARROW_N)
        radio.send("N")
    elif b:
        display.show(Image.ARROW_S)
        radio.send("S")
    sleep(20)

Program-2: a vevő

from microbit import *
import radio

chnl = 10
radio.config(channel=chnl)
radio.on()

while True:
    s = radio.receive()
    if s is not None:
        if s=="N":
            display.show(Image.ARROW_N)
        elif s=="S":
            display.show(Image.ARROW_S)
    sleep(20)

Az első program az adó, az „A” gomb lenyomásakor egy „N” karaktert küld a rádión, illetve megjelenít egy felfelé mutató nyilat a ledkijelzőn. A „B” gomb lenyomásakor egy „S” karakter a küldött üzenet, a megjelenített szimbólum pedig egy lefelé mutató nyíl.

A második program, a vevő folyamatosan „olvassa” az érkező „adást” és „N” karakter érkezésekor felfelé, „S” karakter érkezésekor lefelé mutató nyilat jelenít meg a kijelzőn.

2. programpár

A második mintaprogram egy „gyakorlatiasabb” példát mutat be, a vevőt megvalósító micro:bit a kimenetén egy fehér LED-et kapcsol be („A”-gomb) illetve ki („B”-gomb).

micro:bit adó/vevő pár

Az „adó” programja:

from microbit import *
import radio

chnl = 10
radio.config(channel=chnl)
radio.on()


while True:
    a = button_a.is_pressed()
    b = button_b.is_pressed()
    if  a:
        display.show(Image.ARROW_N)
        radio.send("N")
    elif b:
        display.show(Image.ARROW_S)
        radio.send("S")
    sleep(20)

A „vevő” programja:

from microbit import *
import radio

chnl = 10
radio.config(channel=chnl)
radio.on()

while True:
    s = radio.receive()
    if s is not None:
        if s=="ON":
            pin0.write_digital(1)
            display.scroll("ON")
        elif s=="OFF":
            pin0.write_digital(0)
            display.scroll("OFF")
    sleep(20)

Programunk működés közben:

A négy forráskód letölthető:

A cikkben használt micro:bit megvásárolható a MálnaPC Webshopjában!