Liceum Klasa III 45 minut PP: II.2 | s. 343

Lekcja 5: Elementy robotyki - sterowanie urzadzeniami cyfrowymi

Mikrokontrolery Arduino i micro:bit, czujniki, proste programy sterujace

📋 Podstawa programowa: II.2
Arduinoczujnikimicro:bitrobotykaurzadzenia cyfrowe
00:00
Wprowadzenie
5 min
00:05
Teoria
15 min
00:20
Cwiczenia
15 min
00:35
Podsumowanie
10 min
📚

Teoria

Czym jest robotyka?

Robotyka to interdyscyplinarna dziedzina laczaca informatyke, elektronike i mechanike. Zajmuje sie projektowaniem, budowa i programowaniem robotow - urzadzen zdolnych do wykonywania zadan w sposob autonomiczny lub polautonomiczny. Wspolczesne roboty sa wszechobecne: od robotow przemyslowych w fabrykach, przez odkurzacze automatyczne, po drony i pojazdy autonomiczne.

Trzy kluczowe elementy robota:
1. Czujniki (sensory) - zbieraja informacje z otoczenia (temperatura, swiatlo, odleglosc)
2. Jednostka sterujaca (mikrokontroler) - przetwarza dane i podejmuje decyzje
3. Elementy wykonawcze (aktuatory) - wykonuja dzialania (silniki, diody LED, buzery)

Mikrokontrolery - Arduino

Arduino to popularna platforma mikrokontrolerowa typu open-source. Sklada sie z plyty z procesorem oraz srodowiska programistycznego (Arduino IDE). Jest idealna do nauki, poniewaz jest tania, ma ogromna spolecznosc i mnóstwo materialow edukacyjnych.

// Przyklad Arduino - miganie dioda LED
// (jezyk oparty na C/C++)

void setup() {
    pinMode(13, OUTPUT);    // pin 13 jako wyjscie
}

void loop() {
    digitalWrite(13, HIGH);  // wlacz LED
    delay(1000);             // czekaj 1 sekunde
    digitalWrite(13, LOW);   // wylacz LED
    delay(1000);             // czekaj 1 sekunde
}

// Przyklad z czujnikiem temperatury
void loop() {
    int odczyt = analogRead(A0);
    float napiecie = odczyt * 5.0 / 1023.0;
    float temperatura = napiecie * 100.0;

    Serial.print("Temperatura: ");
    Serial.print(temperatura);
    Serial.println(" C");

    if (temperatura > 30) {
        digitalWrite(8, HIGH);  // wlacz wentylator
    } else {
        digitalWrite(8, LOW);   // wylacz wentylator
    }
    delay(2000);
}

Mikrokontrolery - BBC micro:bit

micro:bit to miniaturowy komputer edukacyjny opracowany przez BBC. Posiada wbudowane: wyswietlacz LED 5x5, dwa przyciski, czujnik ruchu (akcelerometr), kompas, Bluetooth, czujnik temperatury. Mozna go programowac w Pythonie (MicroPython), JavaScript lub blokach.

# Przyklad micro:bit - MicroPython
from microbit import *

# Wyswietlanie tekstu
display.scroll("Witaj!")

# Reagowanie na przyciski
while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
    elif button_b.is_pressed():
        display.show(Image.SAD)
    else:
        display.show(Image.HEART)
    sleep(100)

# Czujnik temperatury
while True:
    temp = temperature()
    display.scroll(str(temp) + "C")
    sleep(5000)

# Akcelerometr - wykrywanie wstrzasow
while True:
    if accelerometer.was_gesture("shake"):
        display.show(Image.SURPRISED)
        sleep(1000)
    display.clear()

Symulatory online

Jesli nie mamy fizycznych urzadzen, mozemy korzystac z symulatorow online:

  • Tinkercad Circuits - symulator Arduino w przegladarce (circuits.tinkercad.com)
  • micro:bit Simulator - wbudowany w edytor python.microbit.org
  • Wokwi - zaawansowany symulator Arduino i ESP32 (wokwi.com)

Zastosowania robotyki

  • Automatyka domowa - inteligentny dom, sterowanie oswietleniem, ogrzewaniem
  • Przemysl - roboty spawalnicze, montazowe, pakujace
  • Medycyna - roboty chirurgiczne, protezy bioniczne
  • Eksploracja - lodziki marsjanskiem, drony, roboty podwodne
  • Edukacja - zestawy LEGO Mindstorms, mBot, Thymio
✏️

Zadania

Latwe

Zadanie 1: Symulacja sygnalizacji swietlnej (Tinkercad)

W symulatorze Tinkercad Circuits stworz uklad z trzema diodami LED (czerwona, zolta, zielona) i zaprogramuj sekwencje sygnalizacji swietlnej: zielony (5s) -> zolty (2s) -> czerwony (5s) -> zolty (1s) -> zielony...

Pokaz rozwiazanie
// Arduino - Sygnalizacja swietlna
const int CZERWONA = 13;
const int ZOLTA = 12;
const int ZIELONA = 11;

void setup() {
    pinMode(CZERWONA, OUTPUT);
    pinMode(ZOLTA, OUTPUT);
    pinMode(ZIELONA, OUTPUT);
}

void loop() {
    // Zielone
    digitalWrite(ZIELONA, HIGH);
    delay(5000);
    digitalWrite(ZIELONA, LOW);

    // Zolte
    digitalWrite(ZOLTA, HIGH);
    delay(2000);
    digitalWrite(ZOLTA, LOW);

    // Czerwone
    digitalWrite(CZERWONA, HIGH);
    delay(5000);
    digitalWrite(CZERWONA, LOW);

    // Zolte (krotkie przed zielonym)
    digitalWrite(ZOLTA, HIGH);
    delay(1000);
    digitalWrite(ZOLTA, LOW);
}
Srednie

Zadanie 2: Termometr z alarmem (micro:bit)

Napisz program dla micro:bit (mozesz uzyc symulatora online), ktory: wyswietla temperature co 3 sekundy, pokazuje usmiechnieta buzie gdy temp < 25C, smutna gdy > 30C, i mruga wyswietlaczem gdy > 35C (alarm).

Pokaz rozwiazanie
# MicroPython dla micro:bit
from microbit import *

while True:
    temp = temperature()
    display.scroll(str(temp))

    if temp > 35:
        # Alarm - mruganie
        for i in range(5):
            display.show(Image.SKULL)
            sleep(300)
            display.clear()
            sleep(300)
    elif temp > 30:
        display.show(Image.SAD)
    else:
        display.show(Image.HAPPY)

    sleep(3000)
Srednie

Zadanie 3: Projekt koncepcyjny robota

Zaprojektuj na papierze (lub w edytorze) koncepcje prostego robota do wybranego zadania (np. robot podlewajacy kwiaty). Okresl: jakie czujniki potrzebuje, jakie elementy wykonawcze, jaki algorytm sterowania (schemat blokowy).

Pokaz rozwiazanie
PROJEKT: Robot podlewajacy kwiaty

CZUJNIKI:
- Czujnik wilgotnosci gleby (analogowy)
- Czujnik poziomu wody w zbiorniku
- Zegar RTC (real-time clock)

ELEMENTY WYKONAWCZE:
- Pompa wodna (mala, 5V)
- Dioda LED (status)
- Buzzer (alarm braku wody)

ALGORYTM (pseudokod):
1. Co 1 godzine:
   a. Odczytaj wilgotnosc gleby
   b. Jesli wilgotnosc < 30%:
      - Sprawdz poziom wody
      - Jesli woda dostepna:
        * Wlacz pompe na 10 sekund
        * Czekaj 5 minut
        * Sprawdz ponownie wilgotnosc
      - Jesli brak wody:
        * Wlacz buzzer na 3 sekundy
        * Zapal czerwona LED
   c. Jesli wilgotnosc >= 30%:
      - Zapal zielona LED
2. Powtorz
Trudne

Zadanie 4: Gra na micro:bit

Zaprogramuj prosta gre na micro:bit: na wyswietlaczu 5x5 porusza sie "gracz" (jasny piksel) sterowany przechylaniem plyty (akcelerometr). Cel: zlapac losowo pojawiajacy sie "skarb" (drugi piksel). Licz punkty.

Pokaz rozwiazanie
# MicroPython dla micro:bit - Gra "Zlapie skarb"
from microbit import *
import random

gracz_x = 2
gracz_y = 2
skarb_x = random.randint(0, 4)
skarb_y = random.randint(0, 4)
punkty = 0

while True:
    # Odczyt akcelerometru
    ax = accelerometer.get_x()
    ay = accelerometer.get_y()

    # Ruch gracza
    if ax > 300 and gracz_x < 4:
        gracz_x += 1
    elif ax < -300 and gracz_x > 0:
        gracz_x -= 1
    if ay > 300 and gracz_y < 4:
        gracz_y += 1
    elif ay < -300 and gracz_y > 0:
        gracz_y -= 1

    # Sprawdz zlapanie skarbu
    if gracz_x == skarb_x and gracz_y == skarb_y:
        punkty += 1
        display.scroll(str(punkty))
        skarb_x = random.randint(0, 4)
        skarb_y = random.randint(0, 4)

    # Rysowanie
    display.clear()
    display.set_pixel(gracz_x, gracz_y, 9)   # gracz jasny
    display.set_pixel(skarb_x, skarb_y, 4)   # skarb ciemniejszy

    sleep(200)
🎥

Materialy wideo

How to make a smokehouse controller for less than 50 zloty ;) Cook My Life
Radosław Pala - cook my life
5# Podstawy Automatyki - Pojęcie bitu
Techniczny Garaż
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 4: Algorytmy tekstowe Siatka godzinowa Lekcja 6: Dobor srodowisk →