MicroPython — radio komunikacija između micro:bit uređaja
Jedna od najzanimljivijih mogućnosti micro:bit uređaja je bežična komunikacija pomoću ugrađenog radija. Na ovaj način dva ili više micro:bit-a mogu da razmenjuju poruke.
U ovoj lekciji naučićeš:
- kako se koristi
radiomodul u MicroPython-u - kako se šalju i primaju poruke
- kako napraviti jednostavnu komunikaciju između dva uređaja
Uključivanje radio modula
Da bi micro:bit mogao da komunicira, potrebno je da uključiš radio modul.
from microbit import *
import radio
radio.on()
radio.config(group=1)
Svi micro:bit uređaji koji su u istoj radio grupi mogu međusobno da komuniciraju.
Slanje poruke
U sledećem primeru micro:bit šalje poruku kada se pritisne dugme A.
from microbit import *
import radio
radio.on()
radio.config(group=1)
while True:
if button_a.was_pressed():
radio.send("Zdravo!")
display.show(Image.HAPPY)
sleep(500)
display.clear()
Primanje poruke
Drugi micro:bit može da primi poruku pomoću funkcije radio.receive().
from microbit import *
import radio
radio.on()
radio.config(group=1)
while True:
poruka = radio.receive()
if poruka:
display.scroll(poruka)
Ako nema poruke, funkcija radio.receive() vraća None.
Primer: slanje brojeva
Radio se može koristiti i za slanje brojeva, na primer za igre ili bodovanje.
radio.send("5")
Na prijemnoj strani poruku možeš pretvoriti u broj:
poruka = radio.receive()
if poruka:
broj = int(poruka)
display.show(broj)
Poređenje sa MakeCode okruženjem
Ako si ranije radio u MakeCode-u, radio blokovi koje si koristio ovde su zamenjeni funkcijama:
radio.on()→ uključi radioradio.send()→ pošalji porukuradio.receive()→ primi poruku
MicroPython omogućava više kontrole i lakše pravljenje naprednih projekata.
Dublje razumevanje radio komunikacije
Radio komunikacija na micro:bit-u funkcioniše slično kao mala lokalna mreža. Svi uređaji:
- moraju imati uključen radio (
radio.on()) - moraju biti u istoj grupi (
radio.config(group=broj))
Grupa je kao „kanal komunikacije“. Ako su uređaji u različitim grupama — ne čuju se.
Važno: radio.receive() i None
Funkcija radio.receive() stalno proverava da li je stigla poruka.
Ako nema poruke, vraća None.
poruka = radio.receive()
if poruka is not None:
display.scroll(poruka)
Ovo je primer rada sa vrednošću None, što je važno u Python-u.
Primer 1 — Dvosmerna komunikacija
Jedan micro:bit šalje „PING“, drugi odgovara „PONG“.
Uređaj A
from microbit import *
import radio
radio.on()
radio.config(group=5)
while True:
if button_a.was_pressed():
radio.send("PING")
Uređaj B
from microbit import *
import radio
radio.on()
radio.config(group=5)
while True:
poruka = radio.receive()
if poruka == "PING":
display.show(Image.YES)
radio.send("PONG")
Ovo je osnova za klijent–server komunikaciju.
Primer 2 — Bežinski prekidač svetla
Jedan micro:bit je daljinski upravljač, drugi upravlja LED-om ili relejem.
Predajnik
if button_a.was_pressed():
radio.send("ON")
if button_b.was_pressed():
radio.send("OFF")
Prijemnik
poruka = radio.receive()
if poruka == "ON":
pin0.write_digital(1)
if poruka == "OFF":
pin0.write_digital(0)
Ovo je osnova za pametnu kuću.
Primer 3 — Slanje podataka sa senzora
Jedan micro:bit meri temperaturu i šalje je drugom uređaju.
Predajnik (senzor)
t = temperature()
radio.send(str(t))
sleep(2000)
Prijemnik (displej)
poruka = radio.receive()
if poruka:
temp = int(poruka)
display.scroll(str(temp) + "C")
Ovde se koristi:
- pretvaranje broja u tekst (
str()) - pretvaranje teksta u broj (
int())
Kombinovanje sa prethodnim lekcijama
Radio + akcelerometar
x = accelerometer.get_x()
if x > 500:
radio.send("DESNO")
elif x < -500:
radio.send("LEVO")
Drugi micro:bit prikazuje strelice na osnovu primljene poruke.
Radio + kompas
Možeš poslati pravac kretanja drugom uređaju.Radio + brojač
Slanje rezultata igre ili broja koraka.Mini projekat — Bežinska igra refleksa
Jedan uređaj šalje signal „START“. Drugi mora brzo da pritisne dugme i pošalje vreme reakcije.
Ovo kombinuje:- radio komunikaciju
- promenljive
- merenja vremena
- logiku poređenja
Napredna podešavanja radio modula
Možeš podesiti:
radio.config(
group=3,
power=7,
channel=10,
length=32
)
- group — grupa uređaja
- power — jačina signala (0–7)
- channel — frekvencijski kanal
- length — maksimalna dužina poruke
Česte greške učenika
- Zaborave
radio.on() - Uređaji nisu u istoj grupi
- Zaborave proveru da li je poruka None
- Pokušaju da šalju broj bez
str()
Zadaci za samostalan rad
Zadatak 1
Napravi bežinski semafor (jedan šalje signal, drugi menja svetla).Zadatak 2
Napravi sistem bodovanja za igru (pošalji broj poena).Zadatak 3 (napredni)
Napravi bežinski alarm:- Jedan uređaj detektuje pokret
- Drugi prikazuje upozorenje
Zadatak 4 (izazov)
Pošalji više podataka u jednoj poruci:"25,450"(temperatura i svetlo u isto vreme) Na prijemnoj strani razdvoj poruku.
Izazov za tebe — Možeš li ovo da rešiš?
Napravi sistem sa dva micro:bit uređaja:
- Prvi meri temperaturu i šalje vrednost preko radija.
- Drugi prikazuje temperaturu samo ako je veća od 25°C.
Pokušaj da napišeš program samostalno. Razmisli:
- Kako šalješ broj preko radija?
- Kako pretvaraš primljeni tekst u broj?
- Kako koristiš
ifuslov?
Ako ti treba pomoć ili želiš dodatne primere radio komunikacije, pogledaj detaljnije objašnjenje ovde:
□ Radio veza na micro:bit-u — dodatni primeri i objašnjenja
Tamo ćeš pronaći:
- proširene primere komunikacije
- objašnjenje konverzije podataka (str ↔ int)
- ideje za napredne projekte
Pokušaj prvo sam — pa tek onda klikni □
Mini projekat — Bežična kontrola svetla
U ovom projektu koristićemo radio komunikaciju između dva micro:bit uređaja. Jedan uređaj šalje komande, a drugi reaguje i uključuje ili isključuje svetlo.
Uređaj 1 — Predajnik (šalje komande)
Kada pritisneš dugme A šalje se poruka "ON", a kada pritisneš dugme B šalje se poruka "OFF".
from microbit import *
import radio
radio.on()
while True:
if button_a.is_pressed():
radio.send("ON")
display.show(Image.ARROW_N)
sleep(300)
if button_b.is_pressed():
radio.send("OFF")
display.show(Image.ARROW_S)
sleep(300)
Uređaj 2 — Prijemnik (prima komande)
Ovaj uređaj prima poruku i reaguje:
- Ako primi "ON" → uključi LED ili prikaži znak ✔
- Ako primi "OFF" → isključi LED ili prikaži znak ✖
from microbit import *
import radio
radio.on()
while True:
poruka = radio.receive()
if poruka == "ON":
display.show(Image.YES)
pin0.write_digital(1) # uključi LED
elif poruka == "OFF":
display.show(Image.NO)
pin0.write_digital(0) # isključi LED
sleep(200)
Šta učiš ovim projektom?
- Kako funkcioniše
radio.send()iradio.receive() - Kako se poruke mogu koristiti za upravljanje uređajem
- Kako povezati radio komunikaciju sa GPIO pinovima
- Osnovu za IoT i bežične sisteme
Ideje za proširenje projekta
- Dodaj servo motor umesto LED svetla
- Dodaj lozinku (npr. samo poruka "ON123" aktivira uređaj)
- Pošalji vrednosti senzora drugom uređaju
- Napravi mini bežični alarm sistem
Ovaj mini projekat predstavlja osnovu za ozbiljnije STEM i takmičarske projekte koji uključuju bežičnu komunikaciju između uređaja.
Napredni projekat — Bežični alarm sistem sa senzorom
U ovom projektu kombinuješ radio komunikaciju i senzor. Jedan micro:bit meri vrednost senzora i šalje upozorenje kada pređe određeni prag. Drugi micro:bit prima poruku i aktivira alarm (LED, buzzer ili servo).
Uređaj 1 — Predajnik (senzor)
Ovaj uređaj očitava analogni senzor (npr. senzor svetla ili potenciometar). Kada vrednost pređe zadati prag, šalje poruku "ALARM".
from microbit import *
import radio
radio.on()
radio.config(group=23) # ista grupa na oba uređaja
PRAG = 700
while True:
vrednost = pin0.read_analog()
if vrednost > PRAG:
radio.send("ALARM")
display.show(Image.SKULL)
sleep(500)
else:
display.clear()
sleep(200)
Uređaj 2 — Prijemnik (alarm)
Ovaj uređaj prima poruku i aktivira alarmni sistem.
from microbit import *
import radio
radio.on()
radio.config(group=23)
while True:
poruka = radio.receive()
if poruka == "ALARM":
display.show(Image.NO)
pin1.write_digital(1) # uključi LED ili buzzer
sleep(1000)
pin1.write_digital(0)
display.clear()
sleep(200)
Šta ovaj projekat uvodi?
- Kombinovanje senzora i radio komunikacije
- Korišćenje
radio.config(group=...) - Slanje poruka kao signal za događaj
- Osnove bežičnih sigurnosnih sistema
Ideje za takmičenja i napredne radove
- Dodaj više tipova poruka: "ALARM", "RESET", "STATUS"
- Pošalji numeričku vrednost senzora umesto teksta
- Napraviti mrežu od 3 ili više micro:bit uređaja
- Dodaj šifrovanje jednostavnom lozinkom
Ovaj projekat je odlična osnova za STEM takmičenja, IoT demonstracije i napredne MicroPython projekte.
Skriveni mini kviz — Radio komunikacija
Proveri da li razumeš: radio modul, slanje i primanje poruka, grupe i rad sa podacima.
Otvori kviz
Mini kviz: Radio komunikacija
1. Koja komanda uključuje radio modul?
2. Šta znači ako su dva uređaja u različitim radio grupama?
3. Šta vraća radio.receive() ako nema poruke?
4. Zašto koristimo str() pri slanju broja?
5. Analiziraj kod:
poruka = radio.receive()
if poruka:
display.scroll(poruka)
6. Koja linija podešava radio grupu?
Napredni mini kviz — Radio komunikacija i senzori
Proveri svoje znanje o radio komunikaciji, slanju više tipova podataka i kombinovanju sa senzorima. Ovaj kviz je izazovniji i zahteva razmišljanje.
Otvori kviz
Napredni kviz: Radio + senzori
1. Šta je ispravan način da proverimo da li je primljena poruka sa radio modula?
poruka = radio.receive()
2. Kako možemo poslati i broj i nagib X akcelerometra u jednoj poruci?
3. Kako na prijemnoj strani razdvojimo broj i nagib?
4. Ako želimo da pošaljemo samo kada je temperatura veća od 30°C, gde stavljamo uslov?
5. Koja opcija je primer kombinovanja radio signala i kompas senzora?
6. Šta je prednost podešavanja radio grupe (radio.config(group=...))?
7. Koja linija koda omogućava da micro:bit šalje brojeve preko radija?
Povezane lekcije i korisni resursi
Ako želiš da proširiš znanje o MicroPython-u i micro:bit uređaju, pogledaj sledeće lekcije na našem sajtu:
□ Povezane lekcije na SvetProgramiranja.com
-
MicroPython — Petlje i vreme
Nauči kako funkcionišuwhilepetlje isleep()komanda. -
MicroPython — Ugrađeni senzori
Rad sa akcelerometrom, dugmadima i temperaturama. -
MicroPython — Dodatni senzori i aktuatori
Povezivanje spoljašnjih modula i kontrola servo motora. -
MicroPython — Kompas i temperatura
Očitavanje pravca i rad sa senzorima okruženja.
□ Korisni spoljašnji resursi
-
Zvanični micro:bit sajt
Dokumentacija, projekti i zvanične smernice. -
Online MicroPython editor
Pokreni i testiraj MicroPython kod direktno u pregledaču. -
MicroPython dokumentacija za micro:bit
Detaljno objašnjenje funkcija poputradio.send()iradio.receive().
Preporuka: kombinuj radio komunikaciju sa senzorima i aktuatorima kako bi napravio kompletan bežični sistem. Tako razvijaš razumevanje IoT koncepata i praktične primene MicroPython-a.