AM 10: Bluetooth und App

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom Fachpraktikum Elektrotechnik im 5. Semester Mechatronik absolviert wurde. Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht.

Autoren: Tim Kolem, Patrick Heinrichsmeier

Betreuer: Prof. Schneider


Aufgabe

Schnittstelle zu einem Android Handy


Erwartungen an die Projektlösung

  • Einarbeitung in die bestehenden Ardumowers-Unterlagen
  • Planung und Beschaffung der Bauteile
  • Aufbau der BT-Verbindung
  • Darstellung der Messdaten und Ansteuerung des Mähers
  • Darstellung und Bewertung der Ergebnisse im Vergleich zur Referenz
  • Erstellen Sie ein faszinierendes Video, welches die Funktion visualisiert.
  • Test und wiss. Dokumentation

Schwierigkeitsgrad

  • Mechanik:
  • Elektrotechnik: *
  • Informatik: **

Einleitung

Die Teilaufgabe "AM10: Bluetooth und App" hat darin bestanden, eine Datenschnittstelle zwischen einem Ardumower und einem mobilen Android Endgerät zu erstellen. Zur Datenübertragung dient ein "HC-05" Bluetoothmodul. Die Datenschnittstelle zwischen dem Android-Endgerät und dem Ardumower soll es ermöglichen, die einzelnen Parameter des Ardumowers auszulesen und zu modifizieren.

Projektdurchführung

Das Teilprojekt "AM10: Bluetooth und App" wird in der Gruppe "Software" eingeordnet. Zu Beginn des Projekts als die Teile der BOM noch nicht verfügbar gewesen sind, bestand die hauptsächliche Aufgabe darin, sich mit "Android-Studio" und der Java Programmierung vertraut zu machen. Als das "HC-05" Bluetooth-Modul mit den Teilen der BOM angekommen ist, musste dieses als erstes richtig mit dem Arduino verkabelt und in Betrieb genommen werden. Danach bestand der Großteil der Aufgabe in der Programmierung der graphischen Nutzeroberfläche und der Bluetooth-Schnittstelle.

Datenübertragung

Zuerst muss eine Schnittstelle vom Arduino zum "HC-05" Bluetooth-Modul hergestellt werden. Diese Schnittstelle ist eine gewöhnliche serielle Schnittstelle.

Verkablung

Der "VCC" Anschluss des "HC-05" Moduls muss an den 3,3V Anschluss des Arduinos angeschlossen werden. Der "GND" Anschluss des "HC-05" Moduls muss an den Ground Anschluss des Arduinos angeschlossen werden.

Zu der eigentlichen Datenübertragung dienen die Anschlüsse "RXD" und "TXD". Um Daten per Arduino an das "HC05" Modul senden zu können sind folgende Schritte notwendig.

  • Das Verbinden der "RXD" und "TXD" Anschlüsse mit zwei Anschlüssen des Arduinos.
  • Das Einbinden der "SoftwareSerial" Bibliothek in das Arduino-Programm mithilfe des Ausdrucks "#include <SoftwareSerial.h>".
  • Das "Erstellen" einer seriellen Schnittstelle im C-Programmcode des Arduinos. Dies geschieht beispielsweise mit folgendem Ausdruck: "SoftwareSerial btSerial(rxPin, txPin);". Zu beachten ist, dass "rxPin" die Nummer des Anschlusses ist, mit welchem der "TX" Anschluss des "HC-05" Moduls verbunden ist. Und "txPin" die Nummer des Anschlusses ist, mit welchem der "RX" Anschluss des "HC-05" Moduls verbunden ist. Der Name "btSerial" ist dabei völlig willkürlich gewählt, die Schnittstelle kann auch anders genannt werden.
  • Das "Starten" der seriellen Verbindung mit einer Baudrate von 9600. Die geschieht mit dem Befehl "btSerial.begin(9600);"

Wenn alle diese Schritte erfolgreich ausgeführt worden sind, können beliebige Strings mit dem Befehl "Serial.println(btData);" an das Android-Endgerät gesendet werden, sofern dieses mit dem "HC-05" Modul verbunden ist.

Empfangen von Daten

Folgende Parameter können mit folgenden Nachrichten auf dem Android-Endgerät dargestellt werden:

  • Der Akku in Prozent: "a" + 3 Ziffern + "\r", Bsp.: Bei einem gesendeten "a056\r" wird auf dem Display des Android-Endgerätes angezeigt, dass der Akkustand bei 56% liegt. Wichtig ist, dass nur Ziffern übertragen werden und diese im Wertebereich von 0 - 100 liegen.
  • Die Spannung des Akkus in Volt: "A" + 4 Ziffern + "\r", Bsp.: Bei einem gesendeten "A1446\r" wird auf dem Display des Android-Endgeräts angezeigt, dass die Spannung des Akkus bei 14,46 Volt liegt.
  • Motorauslastung in Prozent: "v" + 3 Ziffern + "\r", Bsp.: Bei einem gesendeten "v087\r" wird auf dem Display des Android-Engeräts angezeigt, dass der Motor zu 87% ausgelastet ist. Auch hier ist es wichtig, dass die Ziffern zusammen einen Wert ergeben, der im Bereich von 0 - 100 liegt.
  • Mähwerk Status: "m" + "0" oder "1" + "\r", Bsp.: Bei einem gesendeten "m0\r" wird auf dem Display des Android-Smartphones dargestellt, dass das Mähwerk ausgeschaltet ist. Bei einem gesendeten "m1\r" wird auf dem Android-Endgerät angezeigt, dass das Mähwerk aktiv ist.
  • Anhebeschutz Status "h" + "0" oder "1" + "\r", Bsp.: Bei einem gesendeten "h1\r" wird auf dem Display des Android-Endgerätes dargestellt, dass der Anhebeschutz des Ardumowers zur Zeit aktiviert ist.
  • Einzelne Nachrichten loggen "l" + beliebiger String + "\r", Bsp.: Bei einem gesendeten "lAkku Fehler\r" wird der String "Akku Fehler" in dem dafür vorgesehenen Textfeld innerhalb der App dargestellt. Diese Funktion ist zum Auslesen von Fehlern und zum Debuggen der Arduino Software vorgesehen.
  • Status des Ardumowers "s"+ "0" oder "1" oder "2". Die "1" bedeutet, dass der Ardumower voll funktionsfähig und bereit ist. In diesem Fall wird ein "OK" in der Statustextzeile des Ardumowers geschrieben.

Die "0" bedeutet, dass der Ardumower zur Zeit wartet, Beispielsweise wenn er an der Laddestation wartet. Es wird ein "WAIT" in der Statustextzeile geschrieben. Die "2" steht für einen Fehler, der den Ardumower am seiner Arbeit behindert. Hier wird ein "ERROR" in die Statustextzeile des Ardumowers geschrieben.

Senden von Daten

Es ist möglich mithilfe der Funktion "private void sendeNachricht(String msg)" der Activity "ArdumowerMainActivity" Nachrichten an den Arduino zu senden. Jedoch werden zur Zeit keine Nachrichten gesendet, da noch unklar ist welche Daten überhaupt vom Mobiltelefon zum Arduino übertragen werden sollen.

  • Achtung: Wenn die Funktion "private void sendeNachricht(String msg)" in späteren Versionen der App integriert werden soll, sollte diese auf einem separaten Thread ausgeführt werden, da der "ReentrantLock"-Mechanismus unter Umständen den "UIThread" anhalten kann. Dies kann unter Umständen zu Performanceproblemen oder einem direkten Absturz führen.


Projektplan

Zu Beginn des Projektes konnten wir uns lediglich in das Android-Framework einarbeiten und unsere Fähigkeiten auf dem Gebiet der Programmierung mit Java erweitern, da das "HC-05" Modul erst später mit den anderen Materialien der BOM angekommen ist. Zudem haben wir noch bevor das Bluetoothmodul für uns verfügbar gewesen ist damit begonnen, ein erstes Layout für die App festzulegen.

Nachdem das "HC-05" Bluetooth-Modul für uns verfügbar gewesen ist konnten wir mit der eigentlichen Arbeit beginnen. Diese beinhaltete folgende Tätigkeiten:

  • 1: Inbetriebnahme des "HC-05" Bluetooth-Moduls
  • 2: Programmierung der graphischen Benutzeroberfläche der App
  • 3: Programmierung der Bluetoothschnittstelle der App
  • 4: Programmierung eines Programms für den Arduino um die Bluetooth-Kommunikation zu testen
  • 5: Fehlersuche und Verbesserung des Programmcodes

Projektplan der Ardumower App

Verwendete Bauteile

  • Arduino Uno: Zum Übertragen der Daten an das "HC-05" Modul, damit dieses die zu sendenden Daten über Bluetooth senden kann.
  • HC-05 Bluetooth-Modul: Das "HC-05" Bluetooth-Modul stellt die eigentliche Bluetoothfunktionalität des Ardumowers bereit

Ergebnis

Es ist problemlos möglich eine Verbindung zwischen dem Android-Endgerät und dem "HC-05" Modul des Ardumowers herzustellen. Zu dem momentanen Zeitpunkt können beliebige Daten zwischen Ardumower und Android-Endgerät ausgetauscht werden, jedoch ist die App darauf ausgelegt, die im Hauptteil aufgeführten Daten zu visualisieren. Die App kann aber auch leicht auf neue Daten angepasst und erweitert werden.

Die erste Seite der Ardumower App
Die zweite Seite der Ardumower App

Zusammenfasung

Das Teilprojekt "AM 10:Bluetooth und App" verlief erfolgreich, da die App in ihren Grundzügen fertiggestellt ist. Es hat jedoch relativ wenig Kommunikation mit den anderen Teams aus der Software-Gruppe gegeben. Aus diesem Grund sind die darzustellenden Parameter willkürlich von uns festgelegt worden und das Senden der Parameter noch nicht in die Software des Ardumowers integriert. Jedoch sollte sich die Integration der App in die Software des Arduinos relativ problemlos gestalten lassen.

Ausblick

Die Bluetooth-App muss in Zukunft in den eigentlichen Ardumower integriert werden. Dies bedeutet, dass vor allem die Software des Ardumowers auf die Kommunikation zum Android-Endgerät angepasst werden muss.

Zudem sollte die App auch optisch modifiziert werden, da bis zu dem momentanen Zeitpunkt relativ wenig Wert auf Äußerlichkeiten gelegt worden ist.

Selbstverständlich kann die App um zusätzliche Funktionen erweitert werden. Beispielsweise könnte der Ardumower um eine interne Rasterkarte erweitert werden, welche auf der App visualisiert werden könnte.

Weiterführende Links

Unterlagen

YouTube-Video


→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 16/17)