**Dies ist eine alte Version des Dokuments!**
Stellvertretung sca 1Mab FS22 micro:bits Radio
Theorie: Radio
- Radio (BLE)-Modul: Funk-Kommunikation zwischen mehreren micro:bits
- BLE (Bluetooth Low Energy) vs. Standard Bluetooth:
- Weniger Daten
- Weniger Energie
- Zwei Optionen für ‘private’ Kommunikation:
- Kanal: Kommunikation über nur 1 Kanal/Frequenz
- Gruppe: Kommunikation über alle Kanäle/Frequenzen, aber mit Zusatzinfo
Für mehr Info siehe hier:
Code-Beispiel
from microbit import * import radio radio.on() while True: messageIn = radio.receive() if messageIn: display.scroll(messageIn) if button_a.is_pressed(): radio.send("Ciao!")
Aufgaben I
Arbeitet in 2er Gruppen. Einigt euch darauf, auf welchem Kanal oder in welcher Gruppe ihr (hoffentlich) ungestört kommunizieren wollt.
Aufgabe 1: Geheime Nachricht
Schicke deiner Partnerin eine geheime Nachricht.
Aufgabe 2: Symbol verschicken
Schicke deiner Partnerin ein Symbol:
Achtung, dies ist nicht so einfach, da man nur Strings, nicht aber ein Symbol versenden kann. Möglichkeit: Einigt euch z.B. darauf, dass wenn man eine «1» versendet, ein HAPPY-Smiley und bei einer «2» ein SAD-Smiley anzeigen soll
Zusatzaufgabe: Finde eine Möglichkeit, wie man wirklich ein beliebiges Bild per BLE übertragen kann. Achtung, es ist ein bisschen tricky. Frage die Lehrperson nach Tipps.
Aufgabe 3A: Gemütszustand
Mit linker Taste: zwischen 3 Smiley (HAPPY,MEH,SAD) toggeln können
Achtung: hat noch nichts mit Radio zu tun
Aufgabe 3B: Gemütszustand
- Code von 3A erweitern
- Mit rechter Taste ausgewählten Smiley an Partner schicken
Theorie: Stärke des Signals & Distanzmessungen
Bisher haben wir mit message_in = radio.receive()
Nachrichten empfangen. Es gibt aber noch eine zweite Möglichkeit: Mit radio.receive_full()
empfängt man nicht nur die eigentliche Textnachricht, sondern auch die Signalstärke. Diese ist auch ein Indiz für die Distanz zwischen zwei micro:bits.
Das folgende Code-Beispiel zeigt, wie man die Textnachricht und die Signalstärke aus der erhaltenen Nachricht herauslesen kann:
message_full = radio.receive_full() if message_full: text = message_full[0] signal_strength = message_full[1]
Die Signalstärke (hier signal_strength
) ist einfach eine Zahl, die grösser wird, je stärker das Signal ist. Tipp: Printe die Signalstärke in die Konsole (print(signal_strength)
und Show serial klicken, um Konsole anzuzeigen) und verfolge, wie sich der Wert verändert, wenn die Distanz verändert wird.
Aufgaben II
Arbeite wieder in 2er Gruppen. Die Aufgaben können in beliebiger Reihenfolge gelöst werden.
Aufgabe 4: micro:bits in love
Die beiden micro:bits sollen beide ein HAPPY, MEH oder SAD-Smiley anzeigen - je nachdem wie weit sie auseinander sind. Da sie verliebt ineinander sind, sollen sie HAPPY sein, wenn sie möglichst nahe beieinander sind.
Aufgabe 5: Maximale Distanz?
Was ist etwa die maximale Distanz in Sichtweite, über die zwei micro:bits miteinander kommunizieren können? Mache ein Experiment.