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 True stalno 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:

  1. Šta je cilj projekta?
  2. Koje senzore koristim?
  3. Ko donosi odluku (if/else)?
  4. Kako uređaji komuniciraju?
  5. 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



□ Korisni spoljašnji resursi



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.