Nachrichten unter Windows/Android empfangen

In Open Roberta Lab gibt es die Möglichkeit Nachrichten auf verschiedenen Kanälen zu senden. Das Empfangen auf einem zweiten Calliope scheint einfach zu sein, jedoch haben wir zum Einstieg erstmal nur einen bestellt. Um meiner Tochter die Funk-Anbindung zu zeigen möchte ich gerne eine Reaktion unter Windows oder Android zeigen. Es reicht dabei dass das gesendete wieder erkannt wird (z.B. in einem Log ähnlich einem Terminalprogramm als einfacher Text).
Ist der Empfang von Nachrichten generell unter Windows/Android möglich und falls ja wie?

Bluetooth würde am Laptop/Smartphone generell auch funktionieren. Ist das einfacher und lässt sich in Open Roberta Lab (ohne Code) lösen - meine Tochter ist er in der dritten Klasse und soll das Senden nachvollziehen können. Auch hier wäre ein Programm oder Link mit einfacher Schritt-für-Schritt-Anleitung toll.

  1. Soweit ich es verstanden habe, funktioniert „Funk“ nur zwischen zwei Calliope (bzw. auch zwischen micro:bit und Calliope, falls Ihr Euch noch ein günstiges ‚Zweitgerät‘ anschaffen wollt). Überall, wo eine „Funk-Verbindung“ zwischen Microprozessor und Computer beschrieben wird, ist es immer so, dass zwei Calliope (bzw.micro:bit) über Funk miteinander kommunizieren, aber nie direkt mit dem PC. Der PC ist immer über Kabel mit einem der beiden Microprozessoren verbunden (und kommuniziert wahrscheinlich seriell mit diesem). Bleibt also noch Bluetooth.

  2. Wiederum soweit ich weiß, gibt es für OpenRoberta kein Bluetooth-Modul (habe ich auch einmal hier im Forum erfragt). Aber im Makecode-Editor!

  3. Falls Ihr das also über Makecode mal austesten wollt, könnt Ihr Folgendes probieren:

  • Im Makecode-Editor über „Fortgeschritten“->„Paket hinzufügen“ das Paket „bluetooth“ hinzufügen (wobei das Paket „Radio“ ersetzt wird)
  • In der Schleife „Dauerhaft“ kann man z.B. den Block „Bluetooth-Temperatur-Dienst“ einfügen.
  • In den „Projekteinstellungen“ (im „Zahnrad“-Menü) am besten die Option „No pairing required: Anyone can connect“ auswählen. Damit kann sich ein Gerät direkt mit dem Calliope verbinden, ohne das umständliche Pairing durchzuführen.
  • Um die gesendeten Daten auf einem Android-Gerät zu sehen, braucht man eine App, die die Bluetooth-Daten auslesen und anzeigen kann. Z.B. „nRF Connect for Mobile“ von NordicSemiconductor.
  • Ich habe die App gerade nicht zur Hand, aber mit dieser muss man sich mit dem Calliope verbinden. Je nach Software-Version Eures Calliope nennt er sich im Bluetooth-Netz noch „BBC microbit“. Nach dem Verbinden kann man sich die verschiedenen Bluetooth-Dienste anschauen, die der Calliope annonciert. Mit dem oben vorgeschlagenen Programm sollet ihr den Temperaturservice auslesen können. Also mal den Calliope in den Kühlschrank legen und mit dem Handy/Tablet die Temperatur ablesen!
  • Mit den Blöcken „Bluetooth-UART-Dienst“ und „Bluetooth-UART schreibe Text ‚…‘“ kann man auch beliebige Nachrichten verschicken.
  1. Wenn ich es richtig verstanden habe (wieder!), sind die in normalen Laptops verwendeten Bluetooth-Sender/Empfänger nicht mit BLE (wie es der Calliope verwendet) kompatibel, und man bräuchte einen speziellen BLE-Stick (zumindest ist das bei dem Lego-Boost-System, das ebenfalls BLE verwendet, so).

Viel Erfolg!

1 „Gefällt mir“

Hallo Markus,

vielen Dank für die ausführliche Rückmeldung.

Der erste Test mit „nRF Connect for Mobile" und den Diensten hat funktioniert. Mit den Makros werden z.B. die betätigten Taster angezeigt und LED-Ausgaben wie eine Uhr funktionieren ebenfalls.
Mit den Blöcken „Bluetooth-UART-Dienst“ und „Bluetooth-UART schreibe Text ‚…‘“ können auch Tete übertragen werden. Die Daten werden aber nach 20 Zeichen abgeschnitten - vielleicht auch nur in der Anzeige der App.
Sobald ich den Block „Bluetooth wenn Daten Empfangen …“ ergänze zeigt der Compiler „Programmfehler: pxsim.bluetooth.onUartDataReceived is not a function“, überträgt aber das Programm und dieses reagiert auch auf empfangene Daten. Leider bin ich blind und finde keine Möglichkeit die Daten auch in einer Variable zu speichern. Hast Du hier noch einen Tip für mich?

Jörn Alraun hat mich per PM noch über die Möglichkeit informiert, dass mit angeschlossenem USB-Kabel auch die Möglichkeit besteht die Daten seriell auszugeben und z.B. in Putty auszugeben. Auch das klappt, jedoch suche ich auch dort noch die Möglichkeit Daten an den Calliope zurückzusenden.

Viele Grüße
Manfred

  1. Die Fehlermeldung beim „Bluetooth wenn Daten empfangen…“-Block, kannst Du ignorieren. Wie Du schon gemerkt hast, funktioniert er trotzdem. Das ist ein Fehler im Makecode-Editor, der in der nächsten Version nicht mehr da sein wird.
  2. Das mit den 20 Zeichen ist wahrscheinlich eine feste Beschränkung im Calliope. Auch im LED-Display werden nur Texte bis 20 Zeichen ausgegeben.
  3. Um die Daten in einer Variable zu speichern, nimmst Du den „Bluetooth-UART lesen bis ‚…‘“-Block, den Du im Bluetooth-Menü unter „mehr…“ findest. Den kombinierst Du mit dem Variablen-Block „Setze ‚Platzhalter‘ auf“.
  4. Serielle Kommunikation über das USB-Kabel habe ich noch nicht gemacht. Aber wenn Du die Begriffe Fernbedienung/Funk/microbit googelst, findest Du möglicherweise etwas. Ich erinnere mich schwach, dass es ein Projekt gibt, wo ein Kran über die Kombination PC-seriell-microbit-Funk-microbit-Kran gesteuert wird.

Hallo Markus,

Auf der seriellen Schnittstelle habe ich definitiv längere (verkettete) Texte ausgeben können, es scheint also nicht generell nach 20 Zeichen Schluss zu sein.

Das „mehr…“ habe war irgendwie bei meinen Tests plötzlich weg. Danke für den Hinweis, jetzt ist der Block plötzlich wieder da. Wirklich komisch… Danke! :wink:

Ich denke ich komme nun mit Debug-Nachrichten in Putty und den BT-Eingaben für den Anfang gut klar. Damit habe ich für meine Tochter erstmal genug Möglichkeiten zum Üben.

Vielen Dank
Manfred