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
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