Bluetooth Module mit Arduino und MacOS

Von | Oktober 8, 2020

Die Kommunikation über Bluetooth in Verbindung mit dem Arduino ist vielfach in Internet-Artikeln zu finden. Meist im Zusammenhang mit einer Android App, über die Steuer-Signale über das Bluetooth-Modul an den Arduino und von dort an weitere Geräte gesendet werden. Mit nur wenigen Zeilen Code und einer entsprechenden App auf dem Smartphone schien das alles sehr einfach umsetzbar zu sein.

Da ich leider kein Android fähiges Smartphone besitze, versuchte ich es mit entsprechenden Apps für das iPhone …leider ohne Erfolg, da kein Modul von den verschiedenen Bluetooth Apps auf meinem iPhone erkannt wurden. Ob der Fehler auf meiner Seite oder auf Seite meiner Entwicklungsumgebungen lagen, habe ich nicht herausfinden können. Daher hatte ich die Module unangetastet im Regal liegen.

Nun wollte ich es aber wissen, und habe mich intensiver mit der Thematik befasst. Hauptsächlich weil ich wissen wollte, ob das mit meiner Mac-basierten Entwicklungsumgebung überhaupt funktioniert. Ich wollte über Bluetooth (bzw. ein entsprechendes Terminal-Programm) ein Bluetooth-Modul am Arduino nutzen, um einen Motor anzusteuern.

Die Idee war einfache Signale “v” für vorwärts, “r” für Rückwärts und “s” für Stopp zu übertragen und damit einen Motor zu steuern. Die Module unterschiedlicher Hersteller waren ja vorhabenden und so wollte ich mich in Ruhe mit der Aufgabe befassen. Nun galt es, die Funktionsweise zu verstehen und herauszuarbeiten, wie 2 Module als Sender und Empfänger in der Mac-Welt zusammen arbeiten konnten.

Funktionsweise der Bluetooth Module

Bluetooth ist ein Industriestandard gemäß IEEE 802.15.1 für die Datenübertragung zwischen Geräten über kurze Distanz per Funktechnik (WPAN). Dabei sind verbindungslose sowie verbindungsbehaftete Übertragungen von Punkt zu Punkt und Ad-hoc- oder Piconetze möglich. Bluetooth nutzt das ISM-Band zwischen 2,402 GHz und 2,480 GHz. Die Reichweite beträgt je nach Leistung und Klasse zwischen 1-100m, meist jedoch um die 10m.

In der Maker-Community haben sich vor allem die HC-05 und HC-06 Bluetooth Module etabliert. Sie sind für  wenige Euros in Online Elektronikshops erhältlich. Neben HC-05 und HC-06 trifft man noch auf HC-08 und HM-10 Module. Letztere sollen auch für IOS Betriebssysteme geeignet sein. Die Verkabelung und die Ansteuerung sollte sich aber nicht unterscheiden.

 

Ich verwende für meine Versuche Module der Firma SparcFun, die folgende Eigenschaften aufweisen:

This version of the popular BlueSMiRF uses the RN-42 module which has a bit less range than the RN-41 module used in the BlueSMiRF Gold. These modems work as a serial (RX/TX) pipe. Any serial stream from 2400 to 115200bps can be passed seamlessly from your computer to your target.

The remote unit can be powered from 3.3V up to 6V for easy battery attachment. All signal pins on the remote unit are 3V-6V tolerant. No level shifting is required. Do not attach this device directly to a serial port.

Mein Testaufbau besteht aus einem Arduino Uno, an den ich das oben genannte Bluetooth Modul und einen Motortreiber Baustein angeschlossen habe.

Ich verwende eine aktuelle Arduino IDE um folgendes Programm auf den Arduino zu laden:

Nun haben wir also einen Arduino mit BT-Modul, der in der Lage ist, Bluetooth Signale zu empfangen und auszuwerten, dass damit eine LED an- und ausgeschaltet werden kann und zusätzlich ein Motor gesteuert werden kann.

Nun besteht die nächste Aufgabe darin, diesem BT-Module Signale zu senden. Da ich wie oben beschrieben, keine funktionsfähige Smartphone App für mein iPhone gefunden habe, habe ich einen zusätzlichen Mac verwendet und diesen über die BT-Systemeinstellungen mit dem angezeigten Modul verbunden.

Dies klappe erst nach dem ich in den Optionen den wohl Standard Code “1234” eingegeben habe. Nun hatte ich also an meinem Mac 1 einen Arduino und den Arduino Monitor mit angeschlossenem Motor und dem BT-Modul. Daneben einen Mac 2 mit einer Verbindung zum BT-Modul hergestellt.

 

Um nun Daten zu übertragen öffnete ich auf dem Mac 2 eine weitere Arduino IDE und wählte als Port das BT-Modul aus. Über den Monitor konnten dann über den Seriellen Kanal des BT-Moduls Nachrichten gesendet werden.

Der Monitor auf dem ersten Mac zeigt die gesendeten Informationen an (Serial.print(data)) und steuert nach der Auswertung weitere Aktionen, wie in unserem Beispiel die Steuerung eines Elektromotors.