Arch Linux: Per Bluetooth mit Arduino kommunizieren

Bluetooth-Module, die eine serielle Schnittstelle zur Verfügung stellen, lassen sich leicht in ein Mikrocontroller-Projekt integrieren und sind bei Bastlern beliebt. In diesem Beitrag wird gezeigt wie die Verbindung zwischen einem Computer und einem Arduino per Bluetooth realisiert wird.

Ausgehend von dem Artikel "Raspberry Pi mit Arduino per Bluetooth verbinden" wird an dieser Stelle beschrieben, wie von einem System mit Arch Linux eine Verbindung zu einem Arduino per Bluetooth aufgebaut werden kann. Als Ausgang wird für den Arduino die gleiche Konfiguration und die gleiche Software wie aus dem vorangegangenen Artikel verwendet. Das Beispiel sollte sich auch auf andere Systeme bei denen BlueZ in Version 5 enthalten ist wie zum Beispiel Fedora 20 anwenden lassen.

Bevor mit der Installation und Konfiguration begonnen wird. Sollte geprüft werden ob der Nutzer in der uucp Gruppe ist. Dies ist notwendig, damit er später auf die serielle Schnittstelle zugreifen kann.

$ sudo usermod -a -G uucp phibo

Tipp: Ist der Nutzer während er zur Gruppe hinzugefügt wird angemeldet, sollte er sich zur Sicherheit noch einmal ab- und wieder anmelden, damit der Zugriff möglich wird.

Im nächsten Schritt wird die Installation aller Pakete durchgeführt.

$ sudo pacman -S bluez bluez-utils

Anschließend wird der Bluetooth Dienst gestartet.

$ sudo systemctl start bluetooth

Damit dieser beim Systemstart automatisch gestartet wird, kann folgender Befehl ausgeführt werden.

$ sudo systemctl enable bluetooth

Jetzt kann mit Hilfe der bluetoothctl Anwendung per Konsole nach Bluetooth-Geräten gesucht werden. Dazu wird die Anwendung gestartet und die Ausgabe signalisiert, dass der lokale Computer bereits erkannt wurde.

$ bluetoothctl
[NEW] Controller 66:55:44:33:22:11 arch-linux [default]

Anschließend wird der Agent registriert.

[bluetooth]# agent on
Agent registered

Danach wird der Bluetooth Adapter bzw. Dongle aktiviert.

[bluetooth]# power on
[CHG] Controller 66:55:44:33:22:11 Class: 0x00010c
Changing power on succeeded
[CHG] Controller 66:55:44:33:22:11 Powered: yes

War bis jetzt alles erfolgreich kann jetzt mit der Suche nach Bluetooth-Geräten in der Umgebung begonnen werden. Zu sehen ist, dass das gewünschte Gerät mit dem Namen HC-06 gefunden wurde.

[bluetooth]# scan on
Discovery started
[CHG] Controller 66:55:44:33:22:11 Discovering: yes
[NEW] Device 11:22:33:44:55:66 11-22-33-44-55-66
[CHG] Device 11:22:33:44:55:66 LegacyPairing: no
[CHG] Device 11:22:33:44:55:66 Name: HC-06
[CHG] Device 11:22:33:44:55:66 Alias: HC-06
[CHG] Device 11:22:33:44:55:66 LegacyPairing: yes

Nach einem kurzen Moment kann mit dem Befehl devices eine Liste der gefundenen Bluetooth-Geräte angezeigt werden.

[bluetooth]# devices
Device 11:22:33:44:55:66 HC-06

Anschließend ist es möglich die Verbindung zwischen Computer und Bluetooth-Gerät anzulegen. Bei diesem Schritt ist bei den meisten Geräten die Eingabe einer PIN notwendig. Jedoch muss dieser Schritt pro Gerät nur beim ersten Mal gemacht werden.

[bluetooth]# pair 11:22:33:44:55:66
Attempting to pair with 11:22:33:44:55:66
[CHG] Device 11:22:33:44:55:66 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 11:22:33:44:55:66 UUIDs has unsupported type
Pairing successful
[CHG] Device 11:22:33:44:55:66 Connected: no

War bis hier hin alles erfolgreich, kann die serielle Schnittstelle über Bluetooth angelegt werden.

$ sudo rfcomm bind 0 11:22:33:44:55:66

Anschließend sollte die serielle Schnittstelle als /dev/rfcomm0 zur Verfügung stehen.

Hinweis: Zunächst sind der Computer und das Bluetooth-Modul noch nicht miteinander verbunden. Die Verbindung wird erst aufgebaut, wenn der serielle Port /dev/rfcomm0 geöffnet wird. Die Verbindung bleibt so lange bestehen, bis der serielle Port wieder geschlossen wird.

Test

Für die Tests wird der "Serielle Monitor" über die Arduino IDE geöffnet und eine Baud-Rate von 57600 eingestellt.

Anschließend werden Daten in den Seriellen-Anschluss des Bluetooth-Dongels geschrieben. Diese Daten sollten in der Arduino IDE angezeigt werden.

$ echo "test" > /dev/rfcomm0

Im zweiten Test werden Daten über den Bluetooth-Dongle gelesen. Wird jetzt etwas in den Seriellen Monitor geschrieben und abgesendet sollte es auf der Konsole angezeigt werden.

$ cat /dev/rfcomm0

Verwandte Artikel