====== 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:
* [[gf_informatik:microbit_programmieren_grundlagen#radio_nachrichten_ueber_ble_senden|Wiki-Eintrag über Radio-Modul]]
* [[https://microbit-micropython.readthedocs.io/en/v1.0.1/tutorials/radio.html|Offizielle Dokumentation]]
**Online-Editor:** https://python.microbit.org/v/2
==== 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
=== Aufgabe 4: Morsen ===
* Schreibe ein Programm, mit welchem du deiner Partnerin Morsecode übermitteln kannst
* Linke Taste: Lang (Strich) , Rechte Taste: Kurz (Punkt)
* Morsealphabet: https://www.kidstreff.ch/download/XjUbSs_fPR8/31_Geheimschriften_Morsen.pdf
* Beispiel: S.O.S: ooo---ooo
* Die Nachrichten sollen angezeigt werden ...
* ... und abgespielt werden
==== 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 5: 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 6: Maximale Distanz? ===
Was ist etwa die **maximale Distanz in Sichtweite**, über die zwei micro:bits miteinander kommunizieren können? Mache ein Experiment.