Aus Raspberry Pi Geek 08/2022

RasPi, Pi Pico und Smartphone mit Bluetooth verbinden

© Elena Chepko / 123RF.com

Kommunikationsfreudig

Bernhard Bablok

Geht es um Smalltalk zwischen unterschiedlichsten Geräten, dann bietet sich Bluetooth als ideale Kommunikationslösung an.

Bluetooth dürften die meisten Nutzer zumindest vom Smartphone kennen. Für den Raspberry Pi gab es schon in Ausgabe 04/2016 einen Einführungsartikel zu diesem Thema [1]. Sie finden ihn auch in den Downloads zu diesem Artikel als PDF-Datei. Deshalb beschränken wir uns im Folgenden bei den Grundlagen auf das Nötigste. Im Zentrum stehen verschiedene Szenarien, in denen der Raspberry Pi, Pi Pico und Smartphones per Bluetooth miteinander kommunizieren. Der Pico steht dabei quasi repräsentativ für fast beliebige Mikrocontroller, solange diese die serielle Kommunikation beherrschen.

Grundlagen

Als Grundvoraussetzung für die Kommunikation per Bluetooth zwischen zwei Partnern gilt zum einen das Koppeln (Pairing) und zum anderen das Vertrauen (Trust) zwischen den Beteiligten. Beides stellen Sie einmalig her, die Geräte merken sich das Vertrauensverhältnis üblicherweise. Nach dem Koppeln kann jeder der beiden Partner eine Verbindung aufbauen. Den Initiator nennt man Master oder Host, das zweite Gerät Slave oder Device. Allerdings eignet sich jedes Gerät für beide Rollen.

Der auf dem Raspberry Pi verwendete Standard-Nutzer pi sollte als Mitglied den Gruppen bluetooth und dialout angehören, was Sie mit dem Befehl id überprüfen. Tut er das nicht, ändern Sie das mithilfe des Kommandos aus Listing 1 und melden sich dann ab und neu an.

Listing 1

Gruppenzugehörigkeit

$ sudo usermod -a -G bluetooth,dialout pi

Das Vorgehen für Pairing und Trust sehen Sie in Abbildung 1. Das Gegenüber muss dafür sichtbar sein. In Smartphones finden Sie die entsprechenden Einstellungen im Bluetooth-Bereich der Einstellungen. Für den RasPi nutzen Sie dazu das Kommando bluetoothctl. Es startet eine eigene kleine Shell mit einem beschränkten Satz an Kommandos. Über help rufen Sie eine Übersicht auf. Mit [Tab] vervollständigen Sie Kommandos und Bluetooth-MAC-Adressen, was sehr viel Tipparbeit spart.

Abbildung 1: Pairing und Trust mit <code>bluetoothctl</code>. Nach dem Einschalten und Scannen sehen Sie je nach Umgebung viele verschiedene Ger&auml;te und deren MAC-Adressen.

Abbildung 1: Pairing und Trust mit bluetoothctl. Nach dem Einschalten und Scannen sehen Sie je nach Umgebung viele verschiedene Geräte und deren MAC-Adressen.

Systemvoraussetzung

Zusätzlich zum individuellen Koppeln muss der Raspberry Pi ein paar Systemvoraussetzungen mitbringen. Die Kommunikation zwischen Smartphone, Pi Pico und RasPi erfolgt über das serielle Protokoll SPP, das auf RFCOMM über L2CAP aufsetzt. Dieser Protokoll-Stack dient als Teil des klassischen Bluetooth. Andere Profile wie FTP oder OBEX-Push setzen ebenfalls auf RFCOMM auf. Letzteres verwenden zum Beispiel Smartphones für den direkten Austausch von Dateien.

Damit RFCOMM auf dem Raspberry Pi bereitsteht, müssen Sie den Bluetooth-Daemon mit der Kompatibilitätsoption -C starten. Dazu kopieren Sie die Service-Definition aus /lib/systemd/system/bluetooth.service nach /etc/systemd/system. Dort ersetzen Sie die Anweisung ExecStart durch den Inhalt der beiden Zeilen aus Listing 2. Die zweite Zeile fügt dabei das SP-Profil in den Service-Katalog der verfügbaren Protokolle ein. Danach starten Sie den Daemon mit den Befehlen aus Listing 3 neu.

Listing 2

bluetooth.service

ExecStart=/usr/lib/bluetooth/bluetoothd -C
ExecStartPost=/usr/bin/sdptool add SP

Listing 3

Dienst neu starten

$ sudo systemctl daemon-reload
$ sudo systemctl restart bluetooth.service

Blaue Tastatur

Als erstes Anwendungsbeispiel dient der Mediaplayer am Fernseher im Wohnzimmer. Wenn er zickt, gilt es, den Server-Prozess neu zu starten. Unabhängig davon fällt auch gelegentlich die Kontrolle wichtiger Parameter an. Statt mit dem Notebook und SSH lässt sich das auch mit dem Smartphone oder Tablet erledigen. Auf Android-Geräten läuft dafür die App Serial Bluetooth Terminal [2], eine ähnliche App gibt es auch für iOS.

Über das Menü der App erreichen Sie die gekoppelten Geräte, ein Klick darauf startet den Verbindungsaufbau. Damit das klappt, muss der Raspberry Pi aber auf eine Verbindung warten. Das stoßen Sie mit dem Kommando sudo rfcomm listen hci0 & an. Das kaufmännische und (&) am Ende schickt den Befehl in den Hintergrund und macht die Konsole wieder eingabebereit.

Abbildung 2 zeigt das Prinzip der Kommunikation nach dem Verbindungsaufbau. Das Tablet (rechts) sendet Befehle (in Blau), der Raspberry Pi liest sie von /dev/rfcomm0 mit cat (links). Umgekehrt funktioniert es analog: Der RasPi schreibt per Echo auf /dev/rfcomm0, die Ausgabe erscheint auf dem Tablet (grün). Steht die Verbindung, spielt es keine Rolle, wer sie aufgebaut hat: Die Daten fließen immer bidirektional. Wegen eines Fehlers in der App erscheinen die Befehle des Tablets noch einmal als Antwort vom RasPi.

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