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