Aus Raspberry Pi Geek 08/2022

RasPi, Pi Pico und Smartphone mit Bluetooth verbinden (Seite 3)

Unabhängig davon gibt es ein weiteres Problem: Sendet der Pi Pico nur hin und wieder Daten, etwa weil er Sensoren nur in größeren Zeitabständen ausliest, dann bekommt der RasPi die Daten nur bei einer ständig aktiven Verbindung zuverlässig übermittelt. In diesem Fall empfiehlt es sich, den RasPi und den Pico die Rollen tauschen zu lassen, sodass der Mikrocontroller die Verbindung aktiv erstellt. Auf dem RasPi läuft dann ein Service, der Verbindungsanfragen akzeptiert, anschließend die Daten entgegennimmt und sie dann wegschreibt.

Für dieses Szenario muss der HC-05 als Host agieren und die Verbindung aufbauen. Genau das stellt sich manchmal als große Hürde heraus. Das liegt daran, dass das Breakout in verschiedenen Versionen zur Verfügung steht. Viele Postings im Netz beschreiben das Vorgehen dabei mit einer Firmware von 2010. Auf allen Geräten des Autors befindet sich aber eine Firmware von 2017, die im Detail anders tickt. Das hier beschriebene Vorgehen muss also nicht unbedingt zum Erfolg führen. Die Firmware-Version fragen Sie im Kommandomodus mit dem Befehl AT+VERSION? ab.

Ebenfalls im Kommandomodus wechseln Sie die Rolle des HC-05. Die dazu notwendigen Befehle zeigt Listing 8. Das erste Kommando weist den Chip an, sich mit einer festen Adresse zu verbinden, das zweite setzt den Host-Modus und das dritte (BIND) die Zieladresse. Dabei handelt es sich um die Bluetooth-MAC-Adresse des RasPi, die Sie mit echo list | bluetoothctl abfragen. Statt durch Doppelpunkte getrennt benötigt das BIND-Kommando diese Information aber in einer etwas anderen Form. So wird aus 4D:65:4D:CA:66:12 beispielsweise der Wert 4D65,4D,CA6612.

Listing 8

Konfiguration als Host

AT+CMODE=0
AT+ROLE=1
AT+BIND=4D65,4D,CA6612

Vor einem Neustart sorgen Sie für die Verbindungsbereitschaft des Raspberry Pi. Das funktioniert genauso wie im ersten Anwendungsfall beschrieben. Da Mikrocontroller üblicherweise Daten senden und keine Kommandos, benötigen Sie auf der RasPi-Seite kein Anwendungsprogramm mit Logik, sondern im einfachsten Fall nur eine Umleitung in eine Datei (Listing 9).

Listing 9

Daten umleiten

$ sudo rfcomm watch hci0 1 cat /dev/rfcomm0 >> pico-daten.csv &

Startet jetzt der Pico mit angeschlossenem HC-05, sollten alle Daten auf dem Raspberry Pi landen. Steht der nicht bereit, bricht der HC-05 den Verbindungsaufbau ab. Selbst wenn der RasPi später online ist, kommt keine Verbindung mehr zustande, denn der HC-05 versucht von sich aus keinen Neuaufbau. Für ein robustes Verfahren muss also der Pi Pico den HC-05 per Transistor vor jedem Verbindungsversuch an- und danach wieder ausschalten. Wenn der Mikrocontroller Daten in festen Abständen aus einem Sensor ausliest und versendet, spart dieses Vorgehen zusätzlich noch Strom.

Soll der Raspberry Pi die Daten von mehreren Picos sammeln, erfordert das etwas mehr Aufwand. Als Blaupause könnte der RFCOMM-Server [4] dienen. Beachten Sie, dass der RasPi immer nur eine Verbindung gleichzeitig unterhält. Theoretisch wären zwar seitens Bluetooth und des Mini-Rechners mehr Verbindungen möglich, aber sowohl der HC-05 als auch die Android-Apps kontaktieren das Device immer auf dem für SPP üblichen Standardkanal 1. Für Sensoren, die nur gelegentlich kurz funken, genügt das aber, solange der Pi Pico die Verbindung nach dem Einliefern der Daten schnell wieder freigibt.

Fazit

Ab der dritten Generation bringt der Raspberry Pi Bluetooth schon mit. Damit kontrollieren Sie den Mini-Rechner einerseits von extern und steuern andererseits vom RasPi aus beliebige Mikrocontroller. Gute Dienste leistet dabei der HC-05, denn der Chip erspart das Abtauchen in die Untiefen der Bluetooth-Protokolle. Außer einer einmaligen Konfiguration fällt nur der Aufwand für die Verkabelung an. Ältere RasPis rüsten Sie für wenig Geld über einen USB-Bluetooth-Dongle nach.

Klassisches Bluetooth birgt allerdings auch Nachteile. Insbesondere der Stromverbrauch macht die Technologie für IoT-Geräte eher uninteressant. Hier springt Bluetooth Low Energy (BLE) ein, eine für minimalen Stromverbrauch optimierte neue Protokollvariante. Wie die Zusammenarbeit zwischen verschiedenen Geräten des heimischen IT-Zoos damit funktioniert, klärt ein Artikel in einer der nächsten Ausgaben. (tle)

Der Autor

Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder draußen unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleincomputer. Sie erreichen ihn unter mailto:[email protected].

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben