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