Arduino per Bluetooth mit s4a und Snap4Arduino verbinden (Linux)

Arduino und Bluetooth vorbereiten

1. Arduino vorbereiten

Der Arduino muss mit einer Firmware bespielt werden, um mit s4a oder Snap4Arduino über die serielle Schnittstelle zu kommunizieren. Für Snap4Arduino wird diese Firmware bereits mit der Arduino Entwicklungsumgebung mitgeliefert.

Verbinde Arduino per USB-Kabel mit dem Computer und starte die Arduino-IDE. Unter "Datei/Beispiele/Firmata" findet sich die StandardFirmata, welche auf den Arduino geladen wird. Vergiss nicht unter "Werkzeuge" das richtige Board (Arduino UNO) sowie die richtige serielle Schnittstelle auszuwählen. Oft erkennt die Arduino-IDE diese automatisch.

Ist die Firmata-Firmware auf den Arduino geladen, kannst Du sie sofort mit Snap4Arduino verwenden. In der grafischen Snap-Oberfläche klickst Du auf "Arduino" und "mit Arduino verbinden". Erscheint die Meldung "Ein Arduino Board wurde verbunden. Fröhliche Prototyping" ist die Umgebung für erste Versuche eingerichtet.

Ähnlich funktioniert das mit s4a, wobei du hier eine andere Firmware benutzen musst. Diese findest Du auf der s4a-Website unter "Downloads".

2. Bluetooth-Board vorbereiten

Das Bluetooth-Shield ITead BT-Shield V2.2 ist im Grunde bereits vorbereitet. Bei mir kam es mit einer voreingestellten Baut-Rate (Datenübertragungsgeschwindigkeit) von 38400 Baud, die auch die s4a-Firmware benutzt. Sollte dies allerdings nicht der Fall sein, musst Du die Baud-Rate selbst einstellen. Darüber hinaus kannst Du den Namen des Bluetooth-Modul verändern, um es zu personalisieren und zB. erkennbar zu machen wenn Du mehrere der Module im selben Raum verwendest. Es gibt noch einige andere Einstellungen, die wir ignorieren können.

Arduino und ITead BT-Shield V2.2

Für Snap4Arduino benötigst Du allerdings eine Übertragungsrate von 57600 Baud. Möchtest Du diese Programmierumgebung benutzen, musst Du also die Baudrate anpassen – entweder im Quellcode der Firmata-Firmware, oder auf dem Bluetooth-Board. Da wir dem Bluetooth-Board sowieso einen eigenen Namen geben wollen, zeige ich hier diese Variante.

Bluetooth-Shield mit dem Computer verbinden

Auf dem Bluetooth-Board findest Du einen Schalter mit der Beschriftung CMD und DAT. Um das Board anzupassen benötigen wir den Command-Modus, der Schalter wird also in Richtung CMD geschoben. Außerdem müssen die Jumper in die richtige Position gebracht werden, damit das Board mit dem FTDI-Chip des Arduino und nicht mit dem Arduino Microcontroller kommuniziert. Auf dem Foto siehst Du die richtige Einstellung hierfür.

Nun wird es etwas fummelig. Aus dem Arduino-Board musst Du vorsichtig den Microcontroller entfernen. Dies gelingt am besten mit einem kleinen Schraubendreher und langen Fingernägeln. Pass auf, dass keine der Füße abbrechen, sonst kannst Du ihn später nicht mehr einsetzen. Außerdem solltest Du dich vor dieser Arbeit kurz „Erden“. Damit ist keine Meditation gemeint, du musst nur ein unisoliertes Heizungsrohr anfassen. Durch Reibung bei Bewegung ist dein Körper elektrisch geladen. Diese Ladung kann den Chip beschädigen. Durch das Berühren eines großen Metallgegenstandes, der mit der Erde verbunden ist, wird dein Körper entladen und du kannst sicher mit dem Chip hantieren.

Mit einem kleinen Schraubenzieher hebst Du den Chip auf einer Seite ein wenig an, dann tust Du dasselbe auf der anderen Seite. Schritt für Schritt in Micrometerschritten hebelst Du den Controller langsam aus der Halterung bis du ihn mit den Fingern herausziehen kannst.

Arduino mit herausgelöstem Microcontroller

Jetzt wird das Bluetooth-Board auf den Arduino aufgesteckt und per USB-Kabel mit dem Computer verbunden. Nun startest Du die Arduino-Umgebung. Kontrolliere, ob das richtige Board und der richtige Port ausgewählt ist.

Mit dem eingebauten Serial Monitor kannst Du nun so genannte AT-Befehle an dein Bluetooth-Board senden. Mit diesen lässt sich das Board einstellen. Stelle unten Links im Serial Monitor die Verbindungsgeschwindigkeit auf 38400 Baud, und den Modus daneben auf "Sowohl NL als auch CR" ein.

Wenn Du nun in die Befehlszeile oben "AT" eingibst und die Enter-Taste drückst, sollte im Ausgabefeld ein OK erscheinen. Nun kannst Du deinem Bluetooth-Board Befehle erteilen:

1. Namen verändern:

mit dem Befehl AT+NAME? wird er aktuelle Name des Boards ausgegeben. Willst Du ihn z.B. in "KLARA" ändern, tippe

AT+NAME=KLARA

2. Baudrate verändern

Wenn Du Snap4Arduino verwenden willst, musst Du die Bautrate mit folgendem Befehl anpassen:

AT+UART=57600,0,0

Mit dem Befehl AT+UART? überprüfst Du die Werte nochmal, dann kannst Du den Seriellen Monitor schließen und die USB-Verbindung wieder lösen.

Vorsichtig kannst Du nun den Microcontroller wieder in dein Arduino-Board einsetzen. Beachte, dass die kleine Kerbe an der richtigen Seite ist. Sie korrespondiert mit einer kleinen Kerbe in der Halterung. Richtig herum zeigt sie auf die gegenüberliegende Seite vom USB-Anschluss.

Pairing

Nun muss der Computer per Bluetooth mit dem Modul verbunden werden. Der Prozess nennt nich "Pairing". Zunächst ändern wir die Jumperposition wieder wie auf dem Bild zu sehen und der kleine Schalter wird auf die Position DAT gestellt. Das Shield wird auf den Arduino aufgesteckt und dieser per USB mit Strom versorgt. Dies kann nun auch mit einem Netzteil erfolgen, denn die Verbindung wird ja nun über Funk hergestellt.

Unter Linux starten wir den Bluetooth-Manager (grafische Oberfläche). Wenn ein Bluetooth-Device im Computer eingebaut ist, erscheit es als blaues Bluetooth-Symbol in der Task-Leiste (z.B. unter Ubuntu oder Linux Mint). Der Rechner scannt die Umgebung nach aktiven Bluetooth-Geräten und irgendwo sollte in der Liste unser Modul mit dem vorher vergebenen Namen auftauchen. Nach einem Doppelklick darauf werden wir aufgefordert, einen Pin einzugeben. Wenn dieser nicht im letzten Schritt per AT-Befehl verändert wurde, ist er "1234".

Arduino mit aufgestecktem Bluetooth Shield

Neben dem Namen in der Liste erscheint dann kurz "connected" und anschließend wieder "disconnected", doch dies ist kein Problem. Die Verbindung bauen wir später wieder auf.

Rechner und Bluetooth-Shield sind nun "gepaired".

Serielle Verbindung unter Linux einrichten

Nun gehts auf der Kommandozeile weiter. Wir öffnen ein Terminal-Fenster und tippen:

hcitool scan

Dieser Befehl gibt uns eine Liste von Bluetooth-Geräten mit ihren MAC Adressen aus. In der Liste sollte auch unser Modul zu finden sein. Wir benötigen die MAC-Adresse für den nächsten Schritt:

sudo rfcomm bind /dev/rfcomm0 MAC-Adresse

wobei "MAC-Adresse" durch die lange, mit Doppelpunkten bestückte Nummer ersetzt wird. Mit dem Root-Passwort weisen wir uns als berechtigter Superuser aus.

Workaround für s4a (funktioniert nicht richtig)

s4a scannt beim Start auf der Suche nach dem Arduino-Modul die Standard-Ports für eine USB-Verbindung. Es gibt leider keine eingebaute Möglichkeit s4a eine andere Verbindung beizubringen. Deshalb behelfen wir uns mit einem kleinen Hack, der allerdings (das muss ich vorausschieben) nicht richtig funktioniert.

Um s4a vorzugaukeln mit einer USB-Verbindung zu kommunizieren setzen wir einen Symlink von der Bluetooth-Adresse zu einer Fake-USB Adresse:

sudo sudo ln -s /dev/rfcomm0 /dev/ttyACM0

Wenn anschließend s4a gestartet wird, findet es tatsächlich den Arduino über Bluetooth – zu erkennen über die sich verändernden Werte der analogen Inputs.

Dieser Hack ist aber alles andere als stabil, weshalb ich letztendlich von s4a Abstand genommen habe und mich für Snap4Arduino entschieden hab.

Snap4Arduino – Bluetooth-Verbindung herstellen

In Snap4Arduino kann nämlich ein Verbindungsport ausgewählt werden. Aus dem Arduino-Menü wählen wir den Baustein "verbinde Arduino mit Port []" (siehe Bild) und ziehen ihn ins Scripte-Fenster. In das Eingabefeld schreiben wir die Adresse unseres Bluetooth-Geräts:

/dev/rfcomm0

Arduino Portauswahl

Durch einen Klick auf diesen Baustein wird nun eine Bluetooth-Verbindung aufgebaut und wir können endlich "Hello World" sagen:

hello world


0 Antworten auf „Arduino per Bluetooth mit s4a und Snap4Arduino verbinden (Linux)“


  1. Keine Kommentare

Antwort hinterlassen

XHTML: Du kannst diese Tags benutzen: <a href=""> <abbr title=""> <acronym title=""> <b> <blockquote> <code> <em> <i> <strike> <strong>


fünf + sieben =