Klassenarbeit NWT 10 – Mikrocontroller: Was du wissen musst
Diese Übersicht fasst alle Themen zusammen, die in der Klassenarbeit vorkommen können. Grundlage sind der Unterricht, die praktischen Arbeiten am Breadboard und die beiden Anleitungen:
- Teil 1: XIAO ESP32S3 mit MicroPython und Thonny (Flashen, LED)
- Teil 2: Erweiterung: Taster als Ein/Aus-Schalter
Am Ende jedes Abschnitts steht eine Checkliste. Hake ab, was du sicher kannst – der Rest ist dein Lernplan.
1. Grundlagen von Mikrocontrollern
Was ist ein Mikrocontroller?
Ein Mikrocontroller ist ein kleiner Computer auf einem einzigen Chip: Prozessor, Speicher und Ein-/Ausgänge (Pins) sind zusammen verbaut. Er steuert Geräte wie Waschmaschinen, Fernbedienungen oder Roboter.
Das EVA-Prinzip
Jedes Mikrocontroller-Programm folgt dem Muster Eingabe → Verarbeitung → Ausgabe.
| Begriff | Bedeutung | Beispiele |
|---|---|---|
| Sensor | nimmt etwas aus der Umwelt auf und wandelt es in ein elektrisches Signal | Taster, Lichtsensor, Temperatursensor, Mikrofon, Beschleunigungssensor |
| Aktor | setzt ein elektrisches Signal in eine Wirkung um | LED, Lautsprecher/Summer, Motor, Display |
Merke: Sensor = Eingabe (Information hinein), Aktor = Ausgabe (Wirkung heraus).
Unsere Boards
| micro:bit | Seeed XIAO ESP32S3 | |
|---|---|---|
| Programmierung | MakeCode (Blöcke) | MicroPython (Text) in Thonny |
| Eingebaut | LED-Matrix (Smileys), Taster A/B, Lautsprecher | kleine gelbe LED (GPIO21), BOOT- und RST-Taster |
| Spannung | 3,3 V | 3,3 V |
Checkliste
- Ich kann das EVA-Prinzip an einem Beispiel erklären.
- Ich kann Sensoren und Aktoren unterscheiden und je drei Beispiele nennen.
- Ich kann erklären, was ein Mikrocontroller ist.
2. Einstieg: micro:bit und MakeCode
Mit dem micro:bit haben wir in MakeCode mit Blöcken programmiert:
- Symbole und Smileys auf der LED-Matrix anzeigen
- auf die Taster A und B reagieren
- Töne und Melodien abspielen
Wichtige Blöcke und ihre Bedeutung:
| MakeCode-Block | Bedeutung | Entspricht in MicroPython ungefähr |
|---|---|---|
| beim Start | läuft einmal beim Einschalten | Code vor der Schleife |
| dauerhaft | läuft immer wieder | while True: |
| wenn Knopf A gedrückt | Ereignis: wird ausgelöst, wenn etwas passiert | Taster abfragen mit if |
Checkliste
- Ich kann erklären, was ein Ereignis (Event) ist.
- Ich kann den Unterschied zwischen beim Start und dauerhaft erklären.
3. Grundlagen der Programmierung
Variablen und Datentypen
Eine Variable ist ein Name für einen gespeicherten Wert.
| Datentyp | Bedeutung | Beispiel |
|---|---|---|
int |
ganze Zahl | anzahl = 6 |
float |
Kommazahl (mit Punkt!) | wartezeit = 0.5 |
str (String) |
Text in Anführungszeichen | name = "LED" |
bool |
Wahrheitswert: nur True oder False |
gedrueckt = True |
Achtung:
=weist einen Wert zu.==vergleicht zwei Werte.
Kontrollstrukturen
1. Sequenz – Befehle werden der Reihe nach von oben nach unten ausgeführt.
pythonled.on()
time.sleep(0.5)
led.off()
2. Schleife mit range – wiederholt einen Block eine bestimmte Anzahl von Malen.
pythonfor nummer in range(1, 7): # nummer = 1, 2, 3, 4, 5, 6
print("Blink", nummer)
range(1, 7)zählt von 1 bis 6 – die obere Grenze ist nicht mehr dabei.range(5)zählt 0, 1, 2, 3, 4.
3. Endlosschleife – while True: läuft immer weiter (typisch für Mikrocontroller). Abbruch in Thonny mit dem roten Stop-Knopf.
4. Verzweigung mit if – der Code wird nur ausgeführt, wenn eine Bedingung erfüllt ist.
pythonif taster.value() == 1:
led.on()
else:
led.off()
Einrückung ist Pflicht! In Python zeigt die Einrückung (4 Leerzeichen), welche Befehle zu einer Schleife oder zu einem
ifgehören.
Wichtige MicroPython-Befehle
pythonfrom machine import Pin # Pins steuern
import time # Wartezeiten
led = Pin(2, Pin.OUT) # Pin GPIO2 als Ausgang
taster = Pin(4, Pin.IN) # Pin GPIO4 als Eingang
led.on() # LED an (gleich: led.value(1))
led.off() # LED aus (gleich: led.value(0))
led.toggle() # umschalten an ↔ aus
taster.value() # liest 0 oder 1
time.sleep(0.5) # 0,5 Sekunden warten
time.sleep_ms(200) # 200 Millisekunden warten
print("Text") # Ausgabe in der Thonny-Shell
Checkliste
- Ich kenne die vier Datentypen
int,float,str,boolund kann Beispiele nennen. - Ich kann sagen, wie oft eine
for-Schleife mitrange(...)durchläuft. - Ich kann ein kurzes Programm lesen und sagen, was es tut (z. B. wie oft eine LED blinkt).
- Ich kann ein kurzes Programm mit Schleife und
ifselbst schreiben. - Ich kann Fehler in einem Programm finden (Einrückung,
=statt==, Doppelpunkt vergessen).
4. Arbeit mit dem XIAO ESP32S3 und Thonny
Wichtige Grundregeln
- Der XIAO arbeitet mit 3,3 V. Niemals 5 V an einen GPIO-Pin anschließen!
- Ein Datenkabel ist nötig – ein reines Ladekabel funktioniert nicht.
- Flashen = MicroPython-Firmware auf den Mikrocontroller schreiben. Dazu muss der XIAO im Flash-Modus sein (BOOT-Taste beim Einstecken gedrückt halten).
Pins: Aufdruck und GPIO-Nummer
Auf dem Board steht z. B. D1, im Code braucht man aber die GPIO-Nummer.
| Aufdruck | GPIO | im Code | Verwendung bei uns |
|---|---|---|---|
D1 |
GPIO2 | Pin(2, ...) |
rote LED |
D3 |
GPIO4 | Pin(4, ...) |
Taster |
| – | GPIO21 | Pin(21, ...) |
gelbe LED auf dem Board |
Programm ausführen oder speichern?
| Was passiert? | |
|---|---|
| Ausführen (grüner Knopf) | Code wird nur zum Testen übertragen, nach Reset weg |
Speichern als main.py auf dem MicroPython device |
Programm startet automatisch nach jedem Einschalten – auch ohne PC |
Checkliste
- Ich weiß, warum man nie 5 V an einen GPIO-Pin anschließen darf.
- Ich kann erklären, was Flashen bedeutet.
- Ich kann aus Aufdruck und Pin-Tabelle die richtige GPIO-Nummer für den Code ablesen.
- Ich weiß, wie ein Programm automatisch beim Einschalten startet (
main.py).
5. Elektrische Grundlagen und Breadboard
Größen und Einheiten
| Größe | Formelzeichen | Einheit |
|---|---|---|
| Spannung | U | Volt (V) |
| Stromstärke | I | Ampere (A); 1 mA = 0,001 A |
| Widerstand | R | Ohm (Ω); 1 kΩ = 1000 Ω |
Ohmsches Gesetz: U = R · I bzw. R = U / I bzw. I = U / R
Breadboard
- Die Löcher einer Spalte (a–e bzw. f–j) sind innen miteinander verbunden.
- Die Mittelrinne trennt die obere und untere Hälfte.
- Die langen Schienen am Rand (+ und −) sind über die ganze Zeile verbunden – praktisch für GND.
LED richtig anschließen
- Anode (+): längeres Bein → Richtung GPIO-Pin
- Kathode (−): kürzeres Bein, abgeflachte Gehäuseseite → Richtung GND
- Eine LED leitet nur in eine Richtung. Falsch herum leuchtet sie nicht.
- Nie ohne Vorwiderstand an einen Pin anschließen!
Farbcode-Beispiele
| Widerstand | Farbringe |
|---|---|
| 1 kΩ | braun – schwarz – rot – gold |
| 10 kΩ | braun – schwarz – orange – gold |
Checkliste
- Ich kann das Ohmsche Gesetz anwenden und Einheiten umrechnen (mA ↔ A, kΩ ↔ Ω).
- Ich weiß, welche Löcher auf dem Breadboard verbunden sind.
- Ich kann eine LED richtig gepolt einbauen und Anode/Kathode erkennen.
6. Vorwiderstand einer LED berechnen
Der Vorwiderstand begrenzt den Strom durch die LED. LED und Widerstand liegen in Reihe: Durch beide fließt derselbe Strom, die Spannungen teilen sich auf.
Unser Beispiel aus dem Unterricht:
- Spannung am Pin: U = 3,3 V
- Schwellenspannung der roten LED: U_LED = 1,5 V
- maximale Stromstärke: I = 2 mA = 0,002 A
Schritt 1 – Spannung am Widerstand: U_R = U − U_LED = 3,3 V − 1,5 V = 1,8 V
Schritt 2 – Widerstand berechnen: R = U_R / I = 1,8 V / 0,002 A = 900 Ω
Schritt 3 – Normwert wählen: 900 Ω gibt es nicht zu kaufen. Man nimmt den nächstgrößeren Normwert, also 1 kΩ. Dann ist der Strom etwas kleiner als das Maximum: I = 1,8 V / 1000 Ω = 1,8 mA. ✔
Merke: Immer den nächstgrößeren Widerstand nehmen. Ein kleinerer Widerstand würde den Strom über das erlaubte Maximum steigen lassen.
Hinweis: In der Klassenarbeit können andere Zahlen vorkommen (andere LED-Farbe, anderer Strom). Der Rechenweg bleibt gleich!
Checkliste
- Ich kann erklären, warum eine LED einen Vorwiderstand braucht.
- Ich kann den Vorwiderstand in drei Schritten berechnen (mit Einheiten!).
- Ich kann begründen, warum man den nächstgrößeren Normwert wählt.
7. Spannungsteiler
Zwei Widerstände in Reihe teilen sich die Gesamtspannung auf.
text3,3 V ──[ R1 ]──┬──[ R2 ]── GND
│
Spannung U2 an R2
Die Regeln
- Durch beide Widerstände fließt derselbe Strom I = U_ges / (R1 + R2).
- Die Teilspannungen addieren sich: U_ges = U1 + U2
- Am größeren Widerstand fällt die größere Spannung ab. Genauer: Die Spannungen verhalten sich wie die Widerstände: U1 / U2 = R1 / R2
Rechenbeispiel
U_ges = 3,3 V, R1 = 1 kΩ, R2 = 2 kΩ
- I = 3,3 V / 3000 Ω = 0,0011 A = 1,1 mA
- U1 = R1 · I = 1000 Ω · 0,0011 A = 1,1 V
- U2 = R2 · I = 2000 Ω · 0,0011 A = 2,2 V
- Probe: 1,1 V + 2,2 V = 3,3 V ✔ – an R2 (doppelt so groß) fällt die doppelte Spannung ab.
Der Schalter als Widerstand
| Schalter | Widerstand | Spannung am Schalter |
|---|---|---|
| offen | unendlich groß | die gesamte Spannung fällt am Schalter ab |
| geschlossen | null (Kurzschluss) | 0 V am Schalter |
Anwendung: Taster mit Pull-down-Widerstand (Teil 2)
Der Taster am XIAO ist genau so ein Spannungsteiler aus Taster und 10-kΩ-Widerstand:
text3V3 ── Taster ──┬── D3 / GPIO4
└── 10 kΩ ── GND
| Taster | „Widerstand“ des Tasters | Spannung am Pin | taster.value() |
|---|---|---|---|
| losgelassen (offen) | unendlich groß → ganze Spannung am Taster | ≈ 0 V | 0 |
| gedrückt (geschlossen) | 0 Ω → ganze Spannung am 10-kΩ-Widerstand | ≈ 3,3 V | 1 |
- Ohne den Widerstand „schwebt“ der Eingang (engl. floating) und liefert zufällige Werte.
- Beim internen Pull-up ist es umgekehrt: Taster nach GND, gedrückt =
0(active-low). - Prellen: Ein mechanischer Taster schaltet beim Drücken mehrmals kurz hin und her. Lösung per Software: nach dem Erkennen kurz warten (z. B. 50 ms) = Entprellen.
Checkliste
- Ich kann die Teilspannungen eines Spannungsteilers berechnen.
- Ich kann ohne Rechnung sagen, an welchem Widerstand mehr Spannung abfällt.
- Ich kann erklären, welche Spannung an einem offenen bzw. geschlossenen Schalter abfällt.
- Ich kann erklären, wozu der Pull-down-Widerstand beim Taster dient.
- Ich kann erklären, was Prellen ist und wie man es behebt.
8. PWM – Helligkeit steuern ⭐ WICHTIG
Ein GPIO-Pin kennt nur an (3,3 V) oder aus (0 V). Trotzdem kann man eine LED dimmen: mit PWM (Pulsweitenmodulation).
Das Prinzip
Der Pin wird sehr schnell an- und ausgeschaltet. Das Auge ist zu träge, um das Flackern zu sehen – es sieht nur die durchschnittliche Helligkeit.
textDuty-Cycle 25 % Duty-Cycle 50 % Duty-Cycle 75 %
┌┐ ┌┐ ┌┐ ┌─┐ ┌─┐ ┌─┐ ┌──┐┌──┐┌──┐
││ ││ ││ │ │ │ │ │ │ │ ││ ││ │
─┘└──┘└──┘└── ─┘ └─┘ └─┘ └─ ─┘ └┘ └┘ └─
dunkel mittel hell
Begriffe
| Begriff | Bedeutung |
|---|---|
| Periodendauer T | Zeit für einmal „an + aus“ |
| Frequenz f | Anzahl der Perioden pro Sekunde: f = 1 / T (Einheit Hz) |
| Pulsdauer t_an | Zeit, in der das Signal „an“ ist |
| Duty-Cycle (Tastgrad) | Anteil der An-Zeit an der Periode: Duty-Cycle = t_an / T · 100 % |
- 0 % = immer aus, 100 % = immer an, 50 % = halb so lange an wie die ganze Periode
- Mittlere Spannung ≈ Duty-Cycle · 3,3 V (bei 50 % also etwa 1,65 V)
PWM in MicroPython (Beispiel)
pythonfrom machine import Pin, PWM
led = PWM(Pin(2), freq=1000) # PWM an GPIO2 mit 1000 Hz
led.duty_u16(32768) # ca. 50 % (Höchstwert 65535 = 100 %)
Messung mit dem Oszilloskop
Das Oszilloskop zeigt den Spannungsverlauf über der Zeit.
- waagerecht (x-Achse): Zeit – Einstellung Zeit pro Kästchen (z. B. 0,5 ms/DIV)
- senkrecht (y-Achse): Spannung – Einstellung Volt pro Kästchen (z. B. 1 V/DIV)
So liest du ein PWM-Signal ab:
- Höhe des Signals in Kästchen zählen × V/DIV → Spannung (bei uns ≈ 3,3 V)
- Länge einer ganzen Periode in Kästchen zählen × Zeit/DIV → Periodendauer T
- Länge des „An“-Teils in Kästchen zählen × Zeit/DIV → t_an
- Duty-Cycle = t_an / T · 100 %
- Frequenz f = 1 / T
Rechenbeispiel: Zeit/DIV = 0,2 ms. Eine Periode ist 5 Kästchen lang, das Signal ist davon 2 Kästchen „an“.
- T = 5 · 0,2 ms = 1 ms = 0,001 s → f = 1 / 0,001 s = 1000 Hz
- t_an = 2 · 0,2 ms = 0,4 ms → Duty-Cycle = 0,4 ms / 1 ms · 100 % = 40 %
Checkliste
- Ich kann erklären, warum eine LED mit PWM gedimmt erscheint.
- Ich kann die Begriffe Periodendauer, Frequenz und Duty-Cycle erklären.
- Ich kann zu einem Duty-Cycle (z. B. 25 %) das passende Signal skizzieren.
- Ich kann an einem Oszilloskop-Bild T, f und den Duty-Cycle in Prozent ablesen und berechnen.
- Ich weiß, was die Einstellungen V/DIV und Zeit/DIV bedeuten.
9. Umgang mit KI-Systemen
Datenschutz und Privatheit
- Keine persönlichen Daten in KI-Chats eingeben: kein voller Name, keine Adresse, Telefonnummer, Passwörter, Fotos von dir oder anderen, keine Gesundheitsdaten.
- KI-Anbieter sammeln Daten: Eingaben können gespeichert, ausgewertet und zum Training weiterer Modelle verwendet werden.
- Digitaler Fußabdruck: Alles, was du im Netz eingibst, hinterlässt Spuren, die sich oft nicht mehr löschen lassen und zu einem Profil von dir zusammengesetzt werden können.
Sinnvoll mit KI lernen
- KI als Erklärhilfe nutzen („Erkläre mir…“, „Gib mir ein Beispiel…“) – nicht nur fertige Lösungen abschreiben.
- Lösungen selbst nachvollziehen und ausprobieren (z. B. Code auf dem XIAO testen).
- KI kann sich irren: Antworten immer kritisch prüfen und mit Unterricht oder Quellen vergleichen.
- Selbst denken bleibt wichtig: In der Klassenarbeit hilft dir keine KI.
Checkliste
- Ich kann Beispiele für Daten nennen, die nicht in eine KI eingegeben werden sollten.
- Ich kann erklären, was der digitale Fußabdruck ist.
- Ich kann beschreiben, wie man KI sinnvoll zum Lernen nutzt – und wie nicht.
10. Praxis: Das solltest du auch können
Ein Teil des Unterrichts war praktische Arbeit. In der Klassenarbeit können Aufgaben dazu kommen, z. B.:
- einen Schaltplan zeichnen (LED mit Vorwiderstand, Taster mit Pull-down)
- einen Steckplan lesen und Fehler darin finden
- Fehlersuche: Die LED leuchtet nicht – woran kann es liegen? (Polung, falscher Pin im Code, Widerstand nicht in Reihe, GND fehlt)
Viel Erfolg! 🍀
Lerntipp: Gehe alle Checklisten durch. Für jeden Punkt, den du nicht abhaken kannst: Unterlagen und Anleitungen nachlesen, Rechenbeispiele selbst noch einmal ohne Vorlage rechnen und Programme Zeile für Zeile erklären.