MicroPython — Mini projekti
U ovoj lekciji naučićeš kako da micro:bit šalje podatke računaru putem USB/serial veze i kako da te podatke vizualizuješ u Python Processing aplikaciji u realnom vremenu
U prethodnim lekcijama naučio si kako koristiti:
- LED matricu i prikaz teksta/slika
- Dugmad A i B
- Senzore: ubrzanje, nagib, kompas, temperaturu
- Radio komunikaciju između uređaja
Sada je vreme da sve to integrisano primeniš u mini projektima i igrama.
Mini projekti predstavljaju prelaz sa pojedinačnih komandi na stvarne funkcionalne aplikacije. Kroz njih učenici razvijaju:
- logičko razmišljanje
- kombinovanje više koncepata u jednom programu
- razumevanje komunikacije između uređaja
- kreativnost i eksperimentisanje
Za razliku od ranijih primera koji su demonstrirali jednu funkcionalnost, ovde ćeš raditi projekte koji istovremeno koriste:
- petlje (
while True) - uslove (
if,elif,else) - rad sa dugmadima
- radio komunikaciju
- prikaz na LED matrici
- nasumične vrednosti (
random)
Cilj nije samo da kopiraš kod, već da:
- razumeš kako funkcioniše
- menjaš parametre
- dodaješ nove funkcionalnosti
- kreiraš sopstvenu verziju projekta
Kako raditi mini projekte?
Pre nego što pokreneš kod:
- Pažljivo pročitaj opis projekta
- Proveri da li imaš sve potrebne uređaje
- Razmisli šta će se desiti pre nego što pokreneš program
Nakon pokretanja:
- Testiraj različite situacije
- Namerno napravi grešku i posmatraj šta se dešava
- Pokušaj da dodaš barem jednu novu funkciju
Na ovaj način projekti postaju mali istraživački zadaci, a ne samo gotova rešenja.
Koncept standardizovanog mini projekta
Radi lakšeg razumevanja, svaki mini projekat je predstavljen kroz istu strukturu:
- □ Naslov projekta
- □ Kratak opis
- □ Zahtjevi (uređaji, pinovi, moduli)
- □ Kod (funkcionalan primer)
- □ Objašnjenje (šta radi svaka važna linija)
- □ Proširenja (ideje za dalje razvijanje)
Ovakva struktura omogućava:
- lakše praćenje lekcije
- brže snalaženje u kodu
- jasnu organizaciju znanja
- postepeno napredovanje ka složenijim projektima
□ Igra “Skriveni broj”
Kratak opis: Jedan micro:bit „misli“ broj, a drugi pokušavaju da pogode koristeći radio komunikaciju.
Zahtjevi: 2 micro:bit uređaja, radio veza.
# Uređaj koji misli broj
from microbit import *
import radio
import random
radio.on()
radio.config(group=1)
tajni_broj = random.randint(1, 9)
while True:
poruka = radio.receive()
if poruka:
pokusaj = int(poruka)
if pokusaj == tajni_broj:
radio.send("Pogodak!")
elif pokusaj < tajni_broj:
radio.send("Veci!")
else:
radio.send("Manji!")
# Uređaj koji pogađa
from microbit import *
import radio
import random
radio.on()
radio.config(group=1)
while True:
if button_a.was_pressed():
broj = random.randint(1, 9)
radio.send(str(broj))
poruka = radio.receive()
if poruka:
display.scroll(poruka)
Objašnjenje:
- Radio modul šalje i prima poruke između uređaja.
- Petlja
while Truestalno proverava stanje dugmadi i poruka. - Random funkcija određuje tajni broj i pogađanje.
Proširenja: Dodati više igrača, tajmer ili animacije kada igrač pogodi broj.
4. Integrisani izazovi (viši nivo)
Sada pokušaj projekte koji kombinuju više senzora + radio + logiku odlučivanja. Ovo su zadaci za učenike koji žele izazov više.
Projekt 1 — Pametni alarm
- Ako je temperatura veća od 28°C → pošalji radio upozorenje
- Ako se uređaj protrese → aktiviraj alarmnu animaciju
- Drugi micro:bit prima poruku i prikazuje upozorenje
Koncepti: senzori + uslovi + radio + animacija
Projekt 2 — Timovski brojač koraka
- Svaki uređaj broji svoje korake
- Periodično šalje broj preko radija
- Jedan uređaj sabira rezultate celog tima
Koncepti: promenljive + radio + obrada podataka
Projekt 3 — Digitalni kompas igra
- Igrač mora da okrene uređaj ka severu
- Kada pogodi pravac → šalje radio poruku
- Prvi koji pošalje poruku dobija poen
Koncepti: kompas + radio + bodovanje
5. Struktura ozbiljnog mini projekta
Kada praviš veći projekat, razmišljaj u koracima:
- Šta je cilj projekta?
- Koje senzore koristim?
- Ko donosi odluku (if/else)?
- Kako uređaji komuniciraju?
- Kako testiram svaki deo posebno?
Ovo je pravi uvod u inženjerski način razmišljanja.
6. Projekti za samostalan rad (bez gotovog koda)
Pokušaj da sam osmisliš rešenje za sledeće ideje:
- Mini vremenska stanica sa radio prenosom podataka
- Igra refleksa (prvi pritisne dugme nakon signala)
- Radio detektor pokreta (javi ako se uređaj pomeri)
- Sistem za glasanje (A ili B preko radija)
Ne traži odmah gotov kod. Prvo napiši algoritam:
- Koje promenljive su potrebne?
- Koji uslovi?
- Koje radio poruke?
7. Šta si zapravo naučio?
- Rad sa hardverom (senzori i dugmad)
- Rad sa komunikacijom (radio)
- Logiku odlučivanja
- Strukturu većih programa
- Osnove distribuiranih sistema
Sada si spreman za:
- veće timske projekte
- napredne igre
- robotiku
- IoT sisteme
MicroPython više nije samo niz naredbi — postaje alat za pravljenje sistema.
Završni izazov — Veliki sistem sa 3 micro:bit uređaja
Sada praviš pravi mali distribuirani sistem. Tri micro:bit uređaja imaju različite uloge i međusobno komuniciraju.
Koncept sistema
- Uređaj 1 — Senzor (meri podatke)
- Uređaj 2 — Kontroler (donosi odluke)
- Uređaj 3 — Izvršilac (reaguje)
Sistem funkcioniše kao pravi IoT model:
Senzor → Kontroler → Aktuator
Primer scenarija — Pametna bezbednosna stanica
Uređaj 1 (Senzor pokreta)
- Detektuje tresenje ili nagib
- Šalje poruku: "POKRET"
Uređaj 2 (Centralni kontroler)
- Prima poruku
- Proverava temperaturu
- Ako je temperatura visoka → šalje "ALARM"
Uređaj 3 (Alarm sistem)
- Ako primi "ALARM" → prikazuje upozorenje
- Može aktivirati servo ili LED signal
Primer osnovne strukture (Uređaj 1)
from microbit import *
import radio
radio.on()
radio.config(group=7)
while True:
if accelerometer.was_gesture("shake"):
radio.send("POKRET")
display.show(Image.SQUARE)
sleep(500)
display.clear()
Primer strukture (Uređaj 2)
from microbit import *
import radio
radio.on()
radio.config(group=7)
while True:
poruka = radio.receive()
if poruka == "POKRET":
if temperature() > 25:
radio.send("ALARM")
Primer strukture (Uređaj 3)
from microbit import *
import radio
radio.on()
radio.config(group=7)
while True:
poruka = radio.receive()
if poruka == "ALARM":
display.show(Image.SKULL)
Napredni izazovi (za najjače učenike)
- Dodaj identifikaciju uređaja (ID)
- Dodaj potvrdu prijema poruke (ACK)
- Dodaj više tipova alarma
- Dodaj vremensko ograničenje
- Dodaj reset sistema
Pitanja za razmišljanje
- Šta ako kontroler ne primi poruku?
- Kako izbeći lažne alarme?
- Kako testirati sistem deo po deo?
- Kako skalirati sistem na 5 ili 10 uređaja?
Šta si ovim savladao?
- Radio komunikaciju
- Rad sa senzorima
- Logiku odlučivanja
- Distribuirane sisteme
- Osnove IoT arhitekture
Ovo više nije samo školski zadatak — ovo je model pravog pametnog sistema.
Mini projekti — Sekcija 1
□ Digitalni termometar sa grafikom
Kratak opis: Prikaz temperature sa micro:bit senzora i vizualizacija na LED matrici ili u Python Processing grafici.
Zahtjevi: Micro:bit, senzor temperature, USB konekcija (ili serijski port za grafiku), opcionalno Python Processing za grafički prikaz.
from microbit import *
import time
while True:
t = temperature()
display.scroll(str(t) + "C")
sleep(1000)
Objašnjenje:
- Funkcija
temperature()vraća vrednost u stepenima Celzijusa. - LED matrica prikazuje trenutnu temperaturu ili indikator trenda.
- U kombinaciji sa Python Processing-om može se crtati grafikon temperature u realnom vremenu.
Proširenja: Dodati zapis u CSV fajl, prikaz minimum/maksimum vrednosti, grafički prikaz trenda.
□ Radio multiplayer — Napredni projekat
Kratak opis: Dva ili više micro:bit uređaja učestvuju u igri, šaljući podatke međusobno putem radio signala. Može biti igra bodovanja ili interaktivni izazov.
Zahtjevi: 2+ micro:bit uređaja, radio modul, LED matrica, dugmad A i B.
from microbit import *
import radio
radio.on()
radio.config(group=10)
score = 0
while True:
if button_a.was_pressed():
score += 1
radio.send(str(score))
incoming = radio.receive()
if incoming:
display.scroll("Opponent: " + incoming)
Objašnjenje:
- Petlja stalno proverava dugmad i primljene poruke.
- Radio modul šalje trenutni rezultat drugom uređaju.
- LED matrica prikazuje rezultat protivnika u realnom vremenu.
Proširenja: Dodati više nivoa igre, različite vrste interakcija, zvukove i animacije.
Mini projekti — Sekcija 2
□ IoT meteo stanica
Kratak opis: Micro:bit meri temperaturu, vlažnost i eventualno druge senzore, a podatke šalje u realnom vremenu na računar ili server za dalju analizu.
Zahtjevi: Micro:bit, senzor temperature i vlažnosti, USB konekcija, opcionalno Wi-Fi modul ili serijska veza sa Python programom.
from microbit import *
import radio
import dht
sensor = dht.DHT11(pin0)
radio.on()
radio.config(group=5)
while True:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
radio.send("T:{}C H:{}%".format(temp, hum))
sleep(2000)
Objašnjenje:
- Čitanje senzora vrši se u redovnim intervalima.
- Radio šalje podatke drugim micro:bit uređajima ili Python programu za vizualizaciju.
- Podaci se mogu beležiti u CSV i prikazivati grafički.
Proširenja: Dodati više senzora (pritisak, svetlost), prikaz grafikona u realnom vremenu, alarm za ekstremne vrednosti.
□ Robotika sa servo motorima
Kratak opis: Micro:bit kontroliše servo motore, omogućavajući osnovne robotičke funkcionalnosti kao što su pokretanje ruku, vrata ili kotača.
Zahtjevi: Micro:bit, 1-4 servo motora, napajanje, kablovi, eventualno robot šasija.
from microbit import *
import neopixel
from microbit import pin0
import machine
# primer za servo na pin0
from machine import Pin, PWM
servo = PWM(Pin(0))
servo.freq(50)
def set_angle(angle):
duty = int((angle / 180 + 0.05) * 1023)
servo.duty(duty)
while True:
if button_a.was_pressed():
set_angle(0)
if button_b.was_pressed():
set_angle(180)
Objašnjenje:
- Pritiskom na dugmad servo menja ugao pozicije.
- Funkcija
set_angle()omogućava preciznu kontrolu kuta. - Moguće je dodati više serva za koordinisane pokrete.
Proširenja: Automatizovane sekvence pokreta, senzor pokreta za aktivaciju, integracija sa micro:bit igrama ili vizualizacijom u Processing-u.
Mini projekti — Sekcija 3
□ micro:bit kao kontroler za Python Processing igru
Kratak opis: Koristeći micro:bit kao džojstik ili kontroler, igrač može upravljati objektima u Processing Python igri preko serijske ili radio veze.
Zahtjevi: Micro:bit, USB veza sa računarom, Processing 4 (Python Mode), opcionalno radio modul za bežičnu kontrolu.
# Micro:bit kod
from microbit import *
import serial
while True:
x = accelerometer.get_x()
y = accelerometer.get_y()
# šalje podatke na Processing program
serial.write("{},{}\n".format(x, y))
sleep(100)
# Processing Python kod
# Prikaz kretanja objekta prema micro:bit podacima
from serial import Serial
ser = Serial('COM3', 115200) # promeniti port
x_pos = 250
y_pos = 250
def setup():
size(500, 500)
def draw():
global x_pos, y_pos
background(200)
if ser.in_waiting:
line = ser.readline().decode('utf-8').strip()
parts = line.split(',')
if len(parts) == 2:
x_pos = int(parts[0])
y_pos = int(parts[1])
ellipse(map(x_pos, -1024, 1024, 0, width),
map(y_pos, -1024, 1024, 0, height), 50, 50)
Objašnjenje:
- Micro:bit koristi akcelerometar da detektuje nagibe uređaja.
- Podaci se šalju serijski u Processing Python program, koji ih mapira na koordinate ekrana.
- Igrač može pomerati objekt naginjanjem micro:bit-a.
Proširenja: Dodati više micro:bit kontrolera za multiplayer, koristiti dugmad za dodatne funkcije, integrisati senzor pokreta za posebne akcije u igri.
Povezane lekcije i korisni resursi
Ako želiš da proširiš znanje o korišćenju micro:bit-a u kombinaciji sa Python Processing-om, pogledaj sledeće lekcije i resurse.
□ Srodne lekcije na SvetProgramiranja.com
-
MicroPython — Radio komunikacija
Osnovni principi slanja i primanja poruka između micro:bit uređaja. -
MicroPython — Ugrađeni senzori
Rad sa akcelerometrom, dugmadima i senzorima. -
Python Processing — Prvi sketch i koordinatni sistem
Osnove crtanja i rada sa koordinatama na ekranu. -
Python Processing — Interakcija sa mišem i tastaturom
Kako kontrolisati objekte u Processing-u pomoću ulaza. -
Python Processing — Mini projekat: Pong
Primer integracije animacije i kontrole u igrici.
□ Korisni spoljašnji resursi
-
Zvanični micro:bit sajt
Projekti, dokumentacija i edukativni materijali. -
Online MicroPython editor za micro:bit
Pokreni i testiraj kod direktno u pregledaču. -
Processing zvanični sajt
Dokumentacija, tutorijali i primjeri za Python Mode.
Kombinovanjem micro:bit senzora, radio komunikacije i Processing-a možeš napraviti interaktivne igre, simulacije i IoT projekte, kao i pripremiti zanimljive radove za školu i takmičenja.