RADIO VEZA NA MIKROBIT UREĐAJU
Mikrobit uređaj omogućava komunikaciju sa drugim mikrobitima putem radio veze, koristeći ugrađenu antenu koja se nalazi na zadnjoj strani uređaja. Ova funkcionalnost može biti korisna u projektima koji zahtevaju bežičnu razmenu podataka, kao što su igre sa više igrača, razmena poruka ili prenos senzornih podataka.
Primeri upotrebe radio veze
- Razmena poruka između uređaja – omogućava slanje i primanje kratkih tekstualnih ili numeričkih poruka.
- Sinhronizacija uređaja – idealno za kreiranje jednostavnih mreža ili grupe mikrobita koji rade sinhronizovano.
Komande u Radio paleti
- radio set group – podešava grupu kojoj mikrobit pripada. Samo uređaji u istoj grupi mogu međusobno da komuniciraju.
- radio send number – šalje broj drugim uređajima u istoj grupi.
- radio send string – šalje tekstualni niz putem radio signala.
- radio on received – izvršava se kada mikrobit primi broj ili tekst od drugog mikrobita u grupi.
- radio send value – šalje vrednost u formatu "ključ: vrednost", što može biti korisno za prenos kompleksnijih podataka.
- on radio received[receivedNumber] - Registruje kod koji će biti pokrenut kada se primi broj
- on radio received[name] [value] - Pokreće deo programa kada Micro:bit primi par-ime-vrijednost preko radija.
- on radio received[receivedString] - Registruje kod koji će biti pokrenut kada se primi string
- received packet [signal strength] - Preuzima jedno od svojstava iz poslednjeg primljenog radio paketa.
- radio set transmit power – podešava snagu prenosa signala (od 0 do 7), što utiče na domet komunikacije.
- radio set transmit serial number – omogućava slanje serijskog broja mikrobita zajedno sa porukama, što je korisno za identifikaciju pojedinačnih uređaja u mreži.
- radio set frequency band - Mijenja opseg prenosa i prijema radija na dati kanal. Podrazumijevano je 7.
- radio raise event from source with value - Šalje događaj preko radija da se podigne u sabirnici događaja drugog uređaja
Kako dva mikrobita razmenjuju poruke preko radio veze
Komunikacija između dva mikrobit uređaja pomoću radio veze omogućava da uređaji razmenjuju podatke bežično na jednostavan način. Ovo je posebno korisno za projekte koji uključuju daljinsko upravljanje, deljenje podataka, ili sinhronizaciju događaja. Evo detalja kako ovo funkcioniše i kako se može koristiti:
Ključni koraci za radio komunikaciju:
- Omogućavanje radio veze:
- Na svakom mikrobitu potrebno je pozvati funkciju radio.setGroup(groupNumber) da bi uređaji komunicirali unutar iste grupe. Broj grupe mora biti isti za sve uređaje koji žele da komuniciraju.
- Brojevi grupa se koriste kao "kanali" za komunikaciju i pomažu u izolaciji različitih komunikacija.
- Slanje podataka:
- Koristi se komanda radio.sendString("poruka") za slanje tekstualnih poruka.
- Alternativno, mogu se slati i brojevi pomoću radio.sendNumber(broj) ili prilagođeni podaci pomoću radio.sendValue("ime", vrednost).
- Prijem podataka:
- Mikrobit koristi događaje za prijem podataka:
- radio.onReceivedString(function (receivedString) {...}) za prijem tekstualnih poruka.
- radio.onReceivedNumber(function (receivedNumber) {...}) za prijem brojeva.
- radio.onReceivedValue(function (name, value) {...}) za prijem imenovanih vrednosti.
- Mikrobit koristi događaje za prijem podataka:
- Povezivanje udaljenosti:
- Radio komunikacija mikrobita ima domet od oko 10-20 metara u zatvorenom prostoru i do 50 metara na otvorenom, u zavisnosti od prepreka.
- Podešavanje snage signala (opciono):
- Komanda radio.setTransmitPower(powerLevel) (nivo snage od 0 do 7) se koristi za podešavanje snage signala.
Primeri praktične primene:
- Daljinsko upravljanje vozilom:
- Jedan mikrobit služi kao kontroler, dok drugi mikrobit na vozilu prima komande za kretanje (npr. „napred“, „nazad“, „levo“, „desno“).
- Razmena poruka:
- Dva mikrobita se koriste za razmenu tekstualnih poruka, gde korisnik pritiskom na dugme šalje poruku koja se prikazuje na ekranu drugog mikrobita.
- Merenje udaljenosti i alarm:
- Jedan mikrobit prikuplja podatke sa senzora (npr. ultrazvučnog senzora) i šalje ih drugom mikrobitu koji prikazuje ili reaguje na te podatke.
- Igre za više igrača:
- Na primer, igra "Potapanje brodova" gde svaki igrač koristi mikrobit za označavanje brodova i prijem podataka o napadima.
- Sinhronizacija uređaja:
- Jedan mikrobit šalje signal više uređaja za sinhronizaciju aktivnosti, kao što su paljenje svetala ili pokretanje motora.
Projekat 1: Merenje temperature na daljinu koristeći micro:bit uređaje
Opis problema:
Napraviti sistem koji koristi dva micro:bit uređaja za merenje spoljašnje temperature na udaljenosti. Jedan uređaj meri temperaturu pomoću ugrađenog senzora i šalje podatke putem radio veze, dok drugi uređaj prima te podatke i prikazuje ih na svom LED ekranu. Ovaj princip se može proširiti i za kreiranje kompletne meteorološke stanice.
Napraviti sistem koji koristi dva micro:bit uređaja za merenje spoljašnje temperature na udaljenosti. Jedan uređaj meri temperaturu pomoću ugrađenog senzora i šalje podatke putem radio veze, dok drugi uređaj prima te podatke i prikazuje ih na svom LED ekranu. Ovaj princip se može proširiti i za kreiranje kompletne meteorološke stanice.
Opis projekta:
- Cilj:
- Demonstracija upotrebe radio veze na microbit uređajima za razmenu podataka.
- Kreiranje jednostavnog sistema za merenje i prikaz temperature na daljinu.
- Potreban hardver:
- Dva microbit uređaja (jedan za merenje temperature, drugi za prikaz podataka).
Koraci u realizaciji
Kod za uređaj za merenje temperature ("Sender")
- Postaviti radio grupu (npr. grupa 1) pomoću komande radio.setGroup(1).
- Očitavati temperaturu pomoću komande input.temperature().
- Koristiti radio.sendNumber() za slanje očitane vrednosti drugom uređaju u redovnim intervalima (npr. svake sekunde).
Kod za uređaj za prikaz temperature ("Receiver")
- Postaviti istu radio grupu.
- Pomoću radio.onReceivedNumber() uhvatiti primljene podatke.
- Prikazati primljenu temperaturu na LED ekranu.
Proširenje projekta:
- Dodati alarm koji upozorava na ekstremne temperature (npr. preko 30°C ili ispod 0°C).
- Koristiti eksterni senzor temperature (kao što je DHT11 ili DS18B20) za preciznija merenja.
- Prikazati dodatne informacije, kao što su vlažnost vazduha, pritisak ili vreme poslednjeg očitavanja, koristeći dodatne radio poruke.
Kako ovo može postati meteorološka stanica?
- Uvećati broj senzora (za vlažnost, svetlost, pritisak) povezanih na "Sender" micro.
- Koristiti prilagođeni ekran (npr. LCD modul) na "Receiver" uređaju za prikaz više podataka.
- Implementirati slanje podataka na računar ili server za dugotrajno skladištenje i analizu.
Projekat: "Pazi, lopov!"
Opis projekta:
Cilj ovog projekta je da se napravi alarmni sistem koristeći dva micro:bit uređaja koji komuniciraju preko radio veze. Sistem funkcioniše tako da jedan micro:bit("Senzor") prati pokret kutije ili predmeta u kojoj se nalazi dragocenost, dok drugi micro("Alarm") obaveštava o mogućem pokušaju krađe. Kada akcelerometar na senzoru detektuje pokret, na njegovom ekranu se prikazuje ljuto lice, a poruka "Lopov!" se šalje alarmu, koji potom emituje zvuk sirene i upozorava na pomeranje.
Cilj ovog projekta je da se napravi alarmni sistem koristeći dva micro:bit uređaja koji komuniciraju preko radio veze. Sistem funkcioniše tako da jedan micro:bit("Senzor") prati pokret kutije ili predmeta u kojoj se nalazi dragocenost, dok drugi micro("Alarm") obaveštava o mogućem pokušaju krađe. Kada akcelerometar na senzoru detektuje pokret, na njegovom ekranu se prikazuje ljuto lice, a poruka "Lopov!" se šalje alarmu, koji potom emituje zvuk sirene i upozorava na pomeranje.
Uputstvo za realizaciju:
Potreban hardver:
- Dva micro:bit uređaja.
- Opcionalno: zvučnik povezan na pin microza emitovanje sirene.
Kod za microbit "Senzor":
Zadaci:
Glavne komande:
Zadaci:
- Detektovati pomeranje predmeta pomoću ugrađenog akcelerometra.
- Prikazati ljuto lice na LED ekranu kada se pomeranje otkrije.
- Poslati poruku "Lopov!" i uklučiti microbit "Alarm".
Glavne komande:
- input.acceleration(Dimension.Strength) za praćenje jačine ubrzanja.
- radio.setGroup() za usklađivanje radio grupe.
- radio.sendString() za slanje upozorenja.
Kod za micro:bit "Alarm":
Zadaci:
Objašnjenje funkcionalnosti:
- Detekcija pokreta pomoću ugrađenog senzora za gestove.
- Slanje radio poruke "lopovi" kada se pokret detektuje.
- Reagovanje na primanje poruke prikazivanjem ikone i puštanjem melodije.
Objašnjenje funkcionalnosti:
- Detekcija pokreta: Funkcija input.onGesture(Gesture.Shake, function () { ... }) detektuje tresenje uređaja. Kada se to desi, pokreće se alarm i šalje se radio poruka.
- Slanje i prijem poruka:
- Alarm:
- Postavljanje radio grupe:
radio.setGroup(1) osigurava da oba uređaja komuniciraju u istoj grupi.
Proširenje projekta:
- Dodati detekciju otvaranja kutije pomoću dodatnog senzora (npr. magnetnog prekidača).
- Prikazivati na ekranu micro"Alarm" broj uzastopnih pokušaja krađe.
- Implementirati različite zvučne alarme u zavisnosti od detektovanog događaja (npr. blagi ili hitni alarm).
Zaključak
Ovaj projekat pruža odličan primer kako se microbit uređaji mogu koristiti za bežičnu komunikaciju i praktične sisteme upozorenja. Pomoću dodatnih senzora ili modula, ovaj sistem se lako može proširiti i prilagoditi različitim potrebama.
Dodatni složeniji zadaci za vežbu
- Implementacija više kanala za komunikaciju:
- Zadatak: Neka dva mikrobita komuniciraju koristeći različite kanale za različite poruke (npr. kanal 1 za tekstualne poruke, kanal 2 za komande).
- Instrukcije: Definišite uslove za prebacivanje kanala i koristite različite brojeve kanala u funkcijama radio.setGroup(). Omogućite korisnicima da pritiskom na dugme biraju kanal.
- Šifrovanje poruka:
- Zadatak: Implementirajte jednostavno šifrovanje poruka pre slanja (npr. pomeranjem karaktera za određeni broj mesta u ASCII tabeli) i njihovo dešifrovanje pri prijemu.
- Instrukcije: Koristite funkcije za obradu stringova kako biste menjali tekst pre slanja, a na prijemnoj strani implementirajte obrnutu operaciju.
- Grupna komunikacija sa potvrdom:
- Zadatak: Kreirajte sistem gde više mikrobita šalje poruke, a primalac šalje potvrdu prijema (ACK).
- Instrukcije: Implementirajte mehanizam gde primalac automatski odgovara porukom "primljeno", a pošiljalac proverava odgovor.
- Igra "telefonski razgovor":
- Zadatak: Dva mikrobita komuniciraju naizmenično, simulirajući telefonski razgovor, gde svaki šalje poruku i čeka odgovor pre nego što pošalje sledeću.
- Instrukcije: Koristite zastavice ili promenljive za praćenje ko je na redu za slanje.
- Daljinsko upravljanje uređajem:
- Zadatak: Jedan mikrobit šalje komande za upravljanje LED diodama na drugom mikrobitu putem radio veze.
- Instrukcije: Definišite različite komande (npr. "ON", "OFF", "BLINK") i koristite uslovne naredbe za njihovu interpretaciju na prijemnoj strani.
- Merenje udaljenosti poruke:
- Zadatak: Istražite kako se jačina signala (radio.receivedPacket(RSSI)) može koristiti za procenu udaljenosti između mikrobita.
- Instrukcije: Prikazujte jačinu signala na LED ekranu, a učenici mogu istražiti promenu jačine signala u zavisnosti od udaljenosti i prepreka.
Dodatak za naprednije korisnike: Zadaci za samostalno rešavanje
Zadatak 1: Merenje jačine signala
Tekst zadatka: Napravite program koji meri jačinu signala primljenog radio paketom i prikazuje rezultat na ekranu. Ako je signal slabiji od -80, prikazuje tužan izraz lica, u suprotnom prikazuje srećan.
Instrukcije za rešavanje pomoću blokova:
Instrukcije za rešavanje pomoću blokova:
- Uključite radio set group blok i postavite grupu (npr. 1).
- Koristite blok on radio received iz Radio sekcije.
- Iz bloka received packet odaberite signal strength i sačuvajte rezultat u promenljivu, koristeći set variable blok.
- Dodajte uslov pomoću if...then bloka:
- Ako je signal slabiji od -80, koristite show icon za prikaz tužnog izraza.
- U suprotnom prikažite srećan izraz.
- Testirajte program pomoću dva micro:bit uređaja.
Zadatak 2: Podešavanje snage signala
Tekst zadatka: Napravite program koji smanjuje snagu prenosa signala na pritisak dugmeta B, a povećava na dugme A. Snaga signala se prikazuje na LED ekranu.
Instrukcije za rešavanje pomoću blokova:
Instrukcije za rešavanje pomoću blokova:
- Postavite radio set transmit power na početnu vrednost 3.
- Napravite promenljivu power i postavite je na 3.
- Koristite on button A pressed:
- Povećajte power za 1, ali ograničite maksimalnu vrednost na 7 (koristite if uslov).
- Ažurirajte radio set transmit power na vrednost promenljive.
- Dodajte blok on button B pressed za smanjivanje power (ograničite minimalnu vrednost na 0).
- Koristite show number da prikažete trenutnu vrednost power.
Zadatak 3: Identifikacija uređaja serijskim brojem
Tekst zadatka: Napravite program koji šalje jedinstvenu poruku sadržeći serijski broj uređaja. Kada drugi uređaj primi poruku, prikazuje serijski broj na ekranu.
Instrukcije za rešavanje pomoću blokova:
Instrukcije za rešavanje pomoću blokova:
- Omogućite slanje serijskog broja koristeći radio set transmit serial number.
- Postavite on button A pressed za slanje poruke pomoću radio send string (npr. "Hello").
- Na prijemnoj strani koristite on radio received:
- Prikažite received packet serial number pomoću show number.
Zadatak 4: Promena radio kanala
Tekst zadatka: Napravite program koji omogućava promenu radio kanala pritiskom na dugme. Trenutni kanal se prikazuje na LED ekranu.
Instrukcije za rešavanje pomoću blokova:
Instrukcije za rešavanje pomoću blokova:
- Napravite promenljivu channel i postavite je na početni kanal (npr. 7).
- Na dugme A postavite da povećava channel za 1 (ograničite maksimalnu vrednost na 13).
- Na dugme B postavite smanjivanje channel (minimalna vrednost 0).
- Koristite radio set group da ažurirate grupu prema vrednosti channel.
- Prikazujte trenutni channel pomoću show number.
Zadatak 5: Podizanje događaja preko radija
Tekst zadatka: Napravite program koji podiže događaj kada primi specifičnu poruku. Drugi uređaj detektuje događaj i prikazuje odgovarajuću poruku.
Instrukcije za rešavanje pomoću blokova:
Instrukcije za rešavanje pomoću blokova:
- Na uređaju pošiljaocu postavite radio send string (npr. "Event1") na pritisak dugmeta A.
- Na uređaju primaocu koristite on radio received:
- Ako je received string jednak "Event1", koristite radio raise event from source with value (npr. source=100, value=1).
- Koristite on event za detekciju događaja i prikaz poruke na ekranu.