MicroPython — dodatni senzori i aktuatori


Pored ugrađenih senzora (akcelerometar, kompas, temperatura), micro:bit možemo povezati sa spoljnim senzorima i aktuatorima. Ovo omogućava izradu ozbiljnijih projekata i uvod u elektroniku.


U ovoj lekciji upoznaćemo se sa:

  • digitalnim i analognim ulazima
  • radom sa senzorima rastojanja
  • servo motorima i drugim aktuatorima

GPIO pinovi na micro:bit-u


Micro:bit ima GPIO pinove (P0, P1, P2…) preko kojih komunicira sa spoljnim komponentama.

Pinovi mogu biti:

  • ulazni — čitanje senzora
  • izlazni — upravljanje aktuatorima

□ Referenca: MicroPython pin dokumentacija


Primer: analogno očitavanje senzora


Mnogi senzori (npr. potenciometar, senzor svetla, vlage) vraćaju analognu vrednost.



from microbit import *

while True:
    vrednost = pin0.read_analog()
    display.scroll(vrednost)
    sleep(500)

Funkcija read_analog() vraća vrednost od 0 do 1023.


Senzor rastojanja (ultrasonični)


Ultrasonični senzor meri rastojanje pomoću zvučnih talasa. Često se koristi u robotici i pametnim sistemima.


Osnovna ideja:

  • jedan pin šalje impuls (TRIG)
  • drugi pin prima odjek (ECHO)

□ Ovaj senzor se često obrađuje detaljnije u višim razredima, ali je važno razumeti koncept.


□ MakeCode simulacija: https://makecode.microbit.org


Aktuatori — servo motor


Aktuatori su uređaji koji nešto rade:

  • pokreću motor
  • pale LED
  • proizvode zvuk

Servo motor se kontroliše pomoću PWM signala.



from microbit import *

while True:
    pin1.write_analog(30)
    sleep(1000)
    pin1.write_analog(120)
    sleep(1000)

Promenom vrednosti menjamo ugao serva.


Kombinovanje senzora i aktuatora


Najzanimljiviji projekti nastaju kada:

  • senzor meri stanje okoline
  • program donosi odluku
  • aktuator reaguje

Primer ideje:

  • ako je temperatura visoka → uključi motor
  • ako je rastojanje malo → oglasi alarm

Mini zadatak


Poveži jedan senzor (npr. potenciometar ili taster) i napiši program koji:

  • očita vrednost senzora
  • na osnovu vrednosti uključi ili isključi aktuator

Ne moraš imati pravu komponentu — razmišljaj algoritamski.


Veza sa narednim lekcijama


Ovo znanje koristićemo u:

  • mini-projektima
  • algoritmima i logici odlučivanja
  • povezivanju sa računarom (Processing / serial)


Razlika: digitalni i analogni signal


Digitalni signal ima samo dve vrednosti:

  • 0 (isključeno)
  • 1 (uključeno)

Analogni signal ima opseg vrednosti:

  • 0 – 1023 (Micro:bit)

Grafičko objašnjenje

Digitalni signal:

1  ────────      ────────
0          ──────
     vreme →

Analogni signal:

1023 |        /\      
 800 |       /  \     
 500 |      /    \    
 200 |_____/      \____
     0___________________
           vreme →

Primer — Kontrola jačine LED pomoću potenciometra



from microbit import *

while True:
    vrednost = pin0.read_analog()

    # Skaliranje sa 0–1023 na 0–9 (LED jačina)
    jacina = vrednost // 114

    display.set_pixel(2, 2, jacina)
    sleep(100)

Što više okreneš potenciometar — LED svetli jače.


Mini projekat — Parking senzor


Ideja:

  • Senzor meri rastojanje
  • Ako je prepreka blizu → uključi alarm

Pošto nemamo pravi ultrasonični kod u ovoj verziji, simuliraćemo rastojanje analognim ulazom.


from microbit import *

while True:
    rastojanje = pin0.read_analog()  # simulacija

    if rastojanje < 300:
        display.show(Image.SKULL)
    else:
        display.show(Image.YES)

    sleep(200)

Mini projekat — Automatska rampa


Ako se objekat približi — rampa se podiže.


from microbit import *

while True:
    vrednost = pin0.read_analog()

    if vrednost < 400:
        pin1.write_analog(120)  # podignuta rampa
    else:
        pin1.write_analog(30)   # spuštena rampa

    sleep(200)

Mini projekat — Pametni ventilator


Ako je temperatura visoka — uključi motor.


from microbit import *

while True:
    t = temperature()

    if t > 28:
        pin1.write_digital(1)
    else:
        pin1.write_digital(0)

    sleep(500)

Kako radi pametni sistem?

SENZOR (meri podatak)
        ↓
PROGRAM (donosi odluku)
        ↓
AKTUATOR (reaguje)

Primer:

Temperatura = 30°C
        ↓
Da li je > 28 ?
        ↓
DA
        ↓
Uključi ventilator

Izazov — Robot čuvar


Ako senzor detektuje pokret ili blizinu:

  • Prikaži alarm
  • Pokreni servo

from microbit import *

while True:
    vrednost = pin0.read_analog()

    if vrednost < 300:
        display.show("!")
        pin1.write_analog(120)
    else:
        display.clear()
        pin1.write_analog(30)

    sleep(200)

Skriveni mini kviz — Senzori i aktuatori

Proveri da li razumeš rad sa: akcelerometrom, kompasom, temperaturom i GPIO pinovima.

Otvori kviz

Mini kviz: Senzori i aktuatori

1. Koja funkcija meri nagib po X osi?




2. Koju vrednost vraća temperature()?




3. Šta predstavlja vrednost 90° kod kompas senzora?




4. Koja funkcija čita analognu vrednost sa pina?




5. Ako napišemo:


if svetlo < 400:
    pin1.write_digital(1)

Šta se dešava?




6. Šta rade aktuatori?








Zadaci za samostalan rad


Zadatak 1

Napraviti sistem gde:

  • Ako je svetlo slabo → uključi LED
  • Ako je svetlo jako → isključi LED

Zadatak 2

Napraviti sistem sa tri nivoa:

  • nisko
  • srednje
  • visoko

Zadatak 3 (napredni)

Kombinovati temperaturu i senzor rastojanja:

  • Ako je temperatura > 30°C i objekat blizu → alarm

Zadatak 4 (izazov)

Napraviti mini semafor sa servo motorom i senzorom.

Skriveni napredni kviz — Kombinovani uslovi i logika senzora

Ovaj kviz proverava da li razumeš: AND / OR uslove, više senzora istovremeno, logiku odlučivanja i analizu MicroPython koda.

Otvori napredni kviz

Napredni kviz: Logika i senzori

1. Šta radi sledeći kod?


svetlo = pin0.read_analog()
t = temperature()

if svetlo < 400 and t > 25:
    display.show("H")



2. Koji uslov uključuje alarm ako je pokret detektovan ILI je temperatura previsoka?




3. Šta će prikazati program?


pravac = compass.heading()

if pravac > 170 and pravac < 190:
    display.show(Image.ARROW_S)



4. Analiziraj kod:


if svetlo < 400:
    if pokret < 300:
        display.show("A")



5. Šta će se desiti ako je:


nocni_rezim = True

if nocni_rezim and pokret < 300:
    display.show("!")



6. Gde je logička greška?


if svetlo < 400 or svetlo > 200:
    display.show("X")







Mini projekat — Pametna kuća


U ovom projektu micro:bit postaje mali kontroler „pametne kuće“. Sistem koristi više senzora i upravlja više aktuatora.

  • Senzor svetla (analogni ulaz)
  • Senzor temperature (ugrađeni)
  • Senzor pokreta / blizine (analogni ulaz)
  • LED ili relej (svetlo)
  • Servo motor (vrata / prozor)
  • Zvučni alarm

Logika sistema

AKO je mrak → uključi svetlo
AKO je temperatura visoka → uključi ventilaciju
AKO je detektovan pokret → aktiviraj alarm

Osnovna verzija programa


from microbit import *

while True:

    # 1. Senzor svetla (analogni ulaz)
    svetlo = pin0.read_analog()

    if svetlo < 400:
        pin1.write_digital(1)   # uključi svetlo
    else:
        pin1.write_digital(0)   # isključi svetlo

    # 2. Temperatura → ventilacija (servo)
    t = temperature()

    if t > 28:
        pin2.write_analog(120)  # otvoren prozor
    else:
        pin2.write_analog(30)   # zatvoren prozor

    # 3. Pokret → alarm
    pokret = pin0.read_analog()

    if pokret < 300:
        display.show("!")
    else:
        display.clear()

    sleep(300)

Važno — Struktura pametnog sistema

        SENZORI
   (svetlo, temp, pokret)
             ↓
         ODLUKA (if)
             ↓
         AKTUATORI
  (LED, servo, alarm)

Proširena verzija — Noćni režim

Dodajemo režim rada pomoću dugmeta A:

  • Noćni režim → alarm je aktivan
  • Dnevni režim → alarm isključen

nocni_rezim = False

while True:

    if button_a.was_pressed():
        nocni_rezim = not nocni_rezim

    pokret = pin0.read_analog()

    if nocni_rezim and pokret < 300:
        display.show(Image.SKULL)
    else:
        display.clear()

    sleep(200)

Vizuelno objašnjenje sistema

          [Svetlo] ----\
          [Temp]  -----→  micro:bit  →  [LED]
          [Pokret] ----/              →  [Servo]
                                        →  [Alarm]

Napredna verzija — Energetska efikasnost

Dodaj uslov:

  • Ako je dan → svetlo se nikada ne pali
  • Ako je noć i neko je u sobi → uključi svetlo
To uvodi složene uslove (AND, OR).

Izazov za učenike

Zadatak 1

Dodaj prikaz statusa sistema na LED ekranu:

  • S — svetlo uključeno
  • V — ventilacija uključena
  • A — alarm aktivan

Zadatak 2

Dodaj brojač koliko puta je alarm aktiviran.

Zadatak 3 (napredni)

Kombinuj temperaturu i svetlo:

  • Ako je toplo i sunčano → zatvori prozor
  • Ako je hladno i mračno → uključi grejanje (simulacija)

Organizacija časa

  • Rad u grupama (3–4 učenika)
  • Svaka grupa dobija jedan deo sistema
  • Na kraju se sistemi kombinuju

Šta učenici uče?

  • Rad sa više senzora istovremeno
  • Složene uslove (AND / OR)
  • Projektno i sistemsko razmišljanje
  • Osnove IoT logike
  • Modelovanje realnih sistema