46
Android Remote Control IPA 2015 Autor Lukas Hofer Kandidaten Nummer 5404 Datum 20. April 2014 Dokument Version 1.0

Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / [email protected] . Experten: Hansruedi

  • Upload
    buidat

  • View
    215

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control IPA 2015

Autor Lukas Hofer

Kandidaten Nummer 5404

Datum 20. April 2014

Dokument Version 1.0

Page 2: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Autor: Lukas Hofer Berner Fachhochschule für Technik und Informatik Jlcoweg 1, CH-3400 Burgdorf +41 (34) 426 68 96 / [email protected]

Fachvorgesetzter: Martin Aebersold Berner Fachhochschule für Technik und Informatik Jlcoweg 1, CH-3400 Burgdorf +41 (34) 426 68 97 / [email protected]

Experten: Hansruedi Schoch +41 (33) 345 55 12 / [email protected] Andreas Kistler +41 (76) 200 76 21 / [email protected]

Page 3: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 3

Inhalt

1 Abbildungsverzeichnis ...................................................................................................... 6

2 Abstract ....................................................................................................................................... 7

3 Einleitung ................................................................................................................................... 8

3.1 Aufgabenstellung ........................................................................................................................................8

3.1.1 Detailliertere Arbeiten .................................................................................................. 9

3.2 Vorgehensweise ........................................................................................................................................ 10

3.2.1 Vorbereitungen ........................................................................................................... 10

3.2.2 Individuelle praktische Arbeit (IPA) ........................................................................... 10

3.3 Zielsetzung ................................................................................................................................................... 10

3.3.1 Optionale Erweiterungen ........................................................................................... 10

4 Verwendete Geräte & Software .................................................................................. 11

4.1 Hardware ....................................................................................................................................................... 11

4.2 Messgeräte ................................................................................................................................................... 11

4.3 Entwicklung ................................................................................................................................................. 11

4.4 Dokumentation .......................................................................................................................................... 11

5 Hardware ................................................................................................................................. 12

5.1 Beschreibung ............................................................................................................................................... 12

5.1.1 Funkbasis .................................................................................................................... 12

5.1.2 Bluetooth Modul ......................................................................................................... 13

5.1.3 WLAN Modul................................................................................................................ 15

5.2 Blockschaltbild ........................................................................................................................................... 18

5.2.1 Basis ............................................................................................................................ 18

5.2.2 Bluetooth Modul ......................................................................................................... 18

5.2.3 WLAN-Modul ............................................................................................................... 19

6 Pin Definitionen ................................................................................................................... 19

6.1 Basis ................................................................................................................................................................. 19

6.1.1 SWD ............................................................................................................................. 19

6.1.2 Taster .......................................................................................................................... 19

6.1.3 Akkuüberwachung ...................................................................................................... 19

6.1.4 Motoren ....................................................................................................................... 20

6.1.5 LEDs ............................................................................................................................. 20

Page 4: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 4

6.1.6 Lautsprecher ............................................................................................................... 20

6.1.7 MicroSD Karte ............................................................................................................. 20

6.1.8 Connector ................................................................................................................... 20

6.2 Bluetooth Modul ........................................................................................................................................ 21

6.2.1 Debugg Schnittstelle .................................................................................................. 21

6.2.2 Reset Taster ................................................................................................................ 21

6.2.3 Connector ................................................................................................................... 21

6.3 WLAN-Modul ................................................................................................................................................. 22

6.3.1 LED Status ................................................................................................................... 22

6.3.2 Connector ................................................................................................................... 22

7 Analyse und Realisierung .............................................................................................. 23

7.1 Grobanalyse ................................................................................................................................................. 23

7.2 Bluetooth Low Energy ............................................................................................................................ 23

7.2.1 Verbindungsaufbau Bluetooth ................................................................................... 24

7.2.2 Datenaustausch .......................................................................................................... 24

7.3 WLAN ................................................................................................................................................................ 25

7.3.1 Verbindungsaufbau WLAN ......................................................................................... 25

7.3.2 Datenaustausch über Socket ..................................................................................... 26

7.4 Interrupt ......................................................................................................................................................... 26

7.5 Timing ............................................................................................................................................................. 26

7.6 Variablenkonzept ..................................................................................................................................... 27

7.7 Bedienung ..................................................................................................................................................... 27

7.8 Ausgabe .......................................................................................................................................................... 28

7.8.1 Status LED ................................................................................................................... 28

7.8.2 User LED ...................................................................................................................... 28

8 Software ................................................................................................................................... 29

8.1 State Event Hauptprogramm ............................................................................................................. 29

8.1.1 Standalone .................................................................................................................. 29

8.1.2 Ready Mode ................................................................................................................ 30

8.1.3 WLAN Data Mode / Bluetooth Data Mode ................................................................. 30

8.1.4 Error Handler .............................................................................................................. 30

8.2 Unterprogramme ...................................................................................................................................... 30

8.2.1 Blink Time Handler ..................................................................................................... 30

8.2.2 Update Base ................................................................................................................ 30

8.2.3 Update Akkustand ...................................................................................................... 32

8.3 USART .............................................................................................................................................................. 32

8.4 Pulsweitenmodulation (PWM) ............................................................................................................ 33

Page 5: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 5

8.5 Analog-Digital-Wandler (ADC) ........................................................................................................... 34

8.5.1 Watchdog .................................................................................................................... 36

8.6 Digital-Analog-Wandler (DAC) ........................................................................................................... 36

8.6.1 DMA (Direct Memory Access Controller) .................................................................. 36

8.6.2 Lautsprecher ............................................................................................................... 37

8.7 Funktionen .................................................................................................................................................... 37

9 Schlusswort ........................................................................................................................... 38

9.1 Stand der Arbeit ........................................................................................................................................ 38

10 Probleme / Schwierigkeiten ................................................................................ 39

10.1 USART Initialisierung ............................................................................................................................. 39

10.2 Watchdog ADC ............................................................................................................................................ 39

10.3 Sinus mit DMA ausgeben ..................................................................................................................... 39

10.4 Benutzerfreundlicher Libraries erstellen ................................................................................... 39

11 Mögliche Erweiterungen ........................................................................................ 40

12 Erfahrungen .................................................................................................................. 41

13 Dank .................................................................................................................................. 41

14 Testprotokoll ................................................................................................................ 41

15 Bedienungsanleitung ............................................................................................... 41

16 Informationen .............................................................................................................. 42

16.1 Abkürzungen ............................................................................................................................................... 42

16.2 Glossar ............................................................................................................................................................ 43

16.3 Quellen ............................................................................................................................................................ 44

16.3.1 Internet ........................................................................................................................ 44

16.3.2 Literatur ....................................................................................................................... 45

16.3.3 Bilder ........................................................................................................................... 45

17 Anhang ............................................................................................................................. 46

Page 6: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 6

1 Abbildungsverzeichnis

Abbildung 1 Systemaufbau ............................................................................................................. 8 Abbildung 2 Funkbasis ................................................................................................................. 12 Abbildung 3 Hardwareschnittstelle für Funkmodule .................................................................. 13 Abbildung 4 Mikrocontroller STM32F405 ................................................................................... 13 Abbildung 5 Blockschema Mikrocontroller ................................................................................. 13 Abbildung 6 Bluetooth Modul BLE-113 ........................................................................................ 14 Abbildung 7 Bluetooth Modul ...................................................................................................... 15 Abbildung 8 WLAN Modul RN-171 ............................................................................................... 15 Abbildung 9 WLAN Modul ............................................................................................................. 16 Abbildung 10 Blockschaltbild Basis ............................................................................................. 18 Abbildung 11 Blockschaltbild Bluetooth Modul .......................................................................... 18 Abbildung 12 Blockschaltbild WLAN Modul ................................................................................ 19 Abbildung 13 Flussdiagramm Grober Programmablauf............................................................. 23 Abbildung 14 Verbindungsaufbau Bluetooth .............................................................................. 24 Abbildung 15 Verbindungsaufbau WLAN-Modul ........................................................................ 25 Abbildung 16 State Event Diagramm ........................................................................................... 29 Abbildung 17 Flussdiagramm Steuerung Auto ........................................................................... 31 Abbildung 18 User Interface für Remote Control ....................................................................... 32 Abbildung 19 Kenndaten USART1................................................................................................ 32 Abbildung 20 Flussdiagramm USART .......................................................................................... 33 Abbildung 21 Pulsweitenmodulation ........................................................................................... 34 Abbildung 22 Akkuüberwachung Mikrocontroller ...................................................................... 34 Abbildung 23 Akkuentladung 3 Zellen LiPo ................................................................................ 35 Abbildung 24 DAC Ansteuerung mit DMA .................................................................................. 36

Page 7: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 7

2 Abstract

Fernsteuerung und Vernetzung nehmen im heutigen Leben stetig zu. Bei der Forschung im Bereich der Home Automation zur Fernsteuerung von jeglichen elektronischen Geräten wird aktuell viel entwickelt. Im Rahmen der Individuellen praktischen Arbeit (IPA) im 4. Lehrjahr habe ich eine Android Remote Steuerung realisiert. Das Ziel dieser Arbeit ist die Fernsteuerung eines Modellautos von Lego. Das System soll von einem mobilen Gerät aus mit Android Betriebssystem bedienbar sein. Das Auto soll entweder über ein Bluetooth Modul oder ein WLAN Modul ansteuerbar sein. Mögliche Vor-und Nachteile der Technologien evaluieren und auszuwerten ist Teil der IPA. Bereits im Vorfeld wurde die Hardware dazu evaluiert und getestet. Als Resultat dieser Arbeit liegt eine unabhängige Basisstation vor, an welche verschiedene Funkmodule angeschlossen werden können. Zudem wurde ein WLAN Modul sowie ein Bluetooth Modul getestet und ausgewertet. Mit den beiden Modulen kann eine „End-to-End“-Verbindung demonstriert werden. Das heisst: Mit der entwickelten Android Applikation kann eine Verbindung zum WLAN- oder Bluetooth-Modul aufgebaut und Kommandos übermittelt werden, welche auf dem Mikrocontroller verschiedene Aktionen auslösen. Die Firmware unterstützt folgende Features: Version 1.0:

• Initialisieren des Systems • Akkuüberwachung • Bluetooth Modul Verbindungsaufbau • Android Device zu Bluetooth Modul Datenübertragung • WLAN Modul Verbindungsaufbau • Android Device zu WLAN Modul Datenübertragung • Ansteuerung Motoren • Audiosignal ausgeben

Page 8: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 8

3 Einleitung

Für Laborübungen an der Berner Fachhochschule soll im Bereich Embedded Android eine Hardware Basisstation mit einem STM32F405 zur Verfügung stehen. Diese Basisstation bietet eine definierte Hardwareschnittstelle zur Aufnahme verschiedener Funkmodule. Im Vorfeld wurden ein Bluetooth Modul sowie ein WLAN-Modul evaluiert und getestet.

Durch eine Android Applikation kann ein Modellauto von Lego angesteuert werden. Die übertragenen Daten werden mit Hilfe der UART-Schnittstelle vom Mikrocontroller empfangen und ausgewertet. Damit das Auto betrieben werden kann, werden Motoren von Lego verwendet. Als Speisung für die Basisstation wird ein Akku aus dem Hobbybau (Akku einer QRDrohne) eingesetzt. Die Basis verfügt über 1-User LED, 1-Status LED, einen Mikrocontroller (STM32F4), einen eingebauten Motorentreiber und einen Lautsprecher.

Die gesamte Hardware wurde bereits einzeln im Vorfeld entwickelt und getestet. Zudem wurde die Android Applikation in der Vorbereitung programmiert.

3.1 Aufgabenstellung

Die Aufgabe besteht darin, die Firmware für den Mikrocontroller STM32F405 zu programmieren. Mit dieser Firmware lassen sich die Motoren, die LEDs und der Lautsprecher via Funkschnittstelle steuern.

WLAN Modul

UART

Bluetooth Modul

STM32F407 Funk Basis

UART

UART

Motorentreiber

Lautsprecher

LEDs

Motor Antrieb

Motor Steuerung

RN-171

BLE-113

Akku

Speisung

Variante 1

Variante 2

Basisstation

Abbildung 1 Systemaufbau

Page 9: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 9

3.1.1 Detailliertere Arbeiten

Hardwareanalyse: Es soll eine detaillierte Hardwareanalyse erstellt werden. Diese beinhaltet auch Peripheriebausteine welche bei diesem Projekt nicht verwendet werden. Dies soll später die Inbetriebnahme von anderen Funkmodulen vereinfachen. Softwareanalyse: Die Softwareanalyse beinhaltet das State Event Diagramm des Hauptprogramms. Daneben wird zusätzlich ein Flussdiagramm für den Verbindungs- sowie für den Datenübertragungsablauf erstellt. Testprotokoll: Es werden alle Teillösungen aufgezeigt und dokumentiert. Sobald die Firmware fertig programmiert ist, soll ein ausführlicher Test am Modellauto durchgeführt werden. Der ganze Test beinhaltet die Steuerung der Motoren, der LEDs und des Lautsprechers. Zum Schluss sollen die Reichweite und der Stromverbrauch gemessen und dokumentiert werden.

Page 10: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 10

3.2 Vorgehensweise

Für die Entwicklung einer Hardware, die Fertigung, die Inbetriebnahme und das Schreiben der Software sind 84h zu kurz. Aus diesem Grund wurde das Projekt in zwei Phasen aufgeteilt.

3.2.1 Vorbereitungen

• Evaluierung einer geeigneten Hardware für kabellose Übertragung • Motorentreiber austesten • Entwicklung einer Android Applikation (Java Kenntnisse erarbeiten) • Schema und Layout für Funk Basis und zwei Funk Module (Bluetooth und WLAN) • Inbetriebnahme und Testsoftware

3.2.2 Individuelle praktische Arbeit (IPA)

In der Zweiten Phase wird nach Aufgabenstellung die Firmware für die Basis geschrieben, getestet und dokumentiert. Dies beinhaltet:

• Hardwareanalyse • Softwareanalyse • Firmware Programmierung • Testprotokoll

3.3 Zielsetzung

Am Schluss soll der BFH ein funktionsfähiges Funk Basis Modul zur Verfügung stehen. Über die Android-Applikation soll sich der Benutzer mit dem WLAN oder Bluetooth Modul verbinden und Daten austauschen können. Folgende Ziele sollen erreicht werden:

• Kommunikation Bluetooth Modul (Datenaustausch über UART) • Kommunikation WLAN Modul (Datenaustausch über UART) • PWM Ansteuerung für die Motoren • Akkuüberwachung • Audiosignal über Lautsprecher ausgeben

o Hier wird in einem ersten Schritt eine Sinuskurve ausgegeben. Das Ausgeben von ganzen Audio Dateien ist ein optionales Ziel.

3.3.1 Optionale Erweiterungen

• Micro SD-Karte auslesen und WAV.- Datei (Containerformat für Audiodateien) auf Lautsprecher ausgeben

• Akkuprozentwert über Bluetooth oder WLAN auf Android Gerät anzeigen

Page 11: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 11

4 Verwendete Geräte & Software

4.1 Hardware

- Basis Funk REV.B - Bluetooth Modul REV.C - WLAN Modul REV.C - Modell Auto Lego - ST-LINK/V2 in-circuit debugger/programmer - Android Gerät mit Extreme Cruiser App

4.2 Messgeräte

- Multimeter Fluke 87 True RMS MM 301.03 - Digital Oscilloscope Tektronix TDS 2024c MK 116-05

4.3 Entwicklung

- Desktop Computer Dell T1600 mit Windows 7 - OpenSource Entwicklungsumgebung CooCox CoIDe Version 1.7.8 - GCC OpenOCD GNU-ARM Toolchain Version 4.9 q4

4.4 Dokumentation

- Microsoft Office Word 2010 - Microsoft Office Visio 2010 - Microsoft Office Excel 2010 - Adobe Acrobat - Cadifra UML Editor 1.3

Page 12: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 12

5 Hardware

5.1 Beschreibung

5.1.1 Funkbasis

Top Ansicht Bottom Ansicht

Abbildung 2 Funkbasis

Spezifikationen:

• Mikrocontroller STM32F405RGT6 o 32-Bit Cortex-M4 CPU o 1Mbyte Flash o 194 KBytes SRAM o 17x Timers o 3x I2C Interface o 4x USARTs/2x UARTs o 3x SPI (42Mbit/s) o 2x CAN Interface o Debug Mode mit SWD oder JTAG Interface

• MicroSD Reader o SPI oder 4-Bit SD Modus

• Lautsprecher o Bis zu 1W Mono o Lautstärke mit Potentiometer

• Motorentreiber o 600mA Ausgangsstrom o PWM Ansteuerung mit FW/RW

• Akkuüberwachung

Die Basis kann mit einer Eingangsspannung von 9.6-14.1V betrieben werden. Auf der Basis ist ein Spannungsregler für 5V sowie für 3.3V eingebaut. Ein Anschluss für einen externen Akku ist ebenfalls vorhanden.

Die Akkuüberwachung des Basis Moduls wird mit einem Spannungsteiler auf die interne Referenzspannung von 3.3V geteilt. Da keine Z-Diode eingebaut ist, ist die Basis nicht von einer Überspannung geschützt.

Der Motorentreiber ist mit 4 LEDs ausgestattet. Sie signalisieren die Richtung des Motorenausgangs sowie den Pegel des Ausgangssignals.

Page 13: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 13

Die definierte Schnittstelle zur Aufnahme verschiedener Funkmodule ist mit zwei Stiftleisten im Raster 1.24mm ausgestattet.

Abbildung 3 Hardwareschnittstelle für Funkmodule

5.1.1.1 STM32F405 Der STM32F405 ist ein Mikrocontroller aus der Mikrocontroller-Familie von ST. Der Controller ist mit einer 32-Bit ARM Cortex-M4 CPU (Central Processing Unit) aufgebaut. Es bestehen für diesen Controller sehr viele umfangreiche und auch komplexe Dokumentationen und Bibliotheken.

Abbildung 4 Mikrocontroller STM32F405

Der Mikrocontroller ist mit der sogenannten Harvard Architektur aufgebaut. Das heisst es gibt einen separaten Speicher für das Programm und die Daten. Zudem erfolgt der Zugriff mit getrennten Steuersignal (Datenbus und Adressbus).

STM32F405

RAMDaten Eingänge

Timer

FlashProgramm

AusgängeCPU

Abbildung 5 Blockschema Mikrocontroller

5.1.2 Bluetooth Modul

Das BLE-113 ist ein Bluetooth-Smart-Modul von der Firma Bluegiga. Das Modul verfügt über einen eingebauten Bluetooth Stack mit GATT (General Attribute Profile)- basierten Profilen. Das Modul verbraucht im niedrigsten Stromsparmodus 500nA und hat eine Grösse von 15.8x8.15x2.1mm.

Page 14: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 14

Abbildung 6 Bluetooth Modul BLE-113

BLE-113

Verbindungen: • Bluetooth 4.0 (Low Energy) • Master und Slave Modus • Bis zu 8 Verbindungen im Master Mode

Energiespezifikationen: • TX: 18.2mA • Rx: 5mA

Reichweite: • Ca. 20m (im Freien)

Stack: • Integrierter Smart Stack • GAP, GATT, L2CAP und SMP • Bluetooth Smart Profile

Peripherie: • UART Hardware Schnittstelle • Integrierter Keramik Antenne

Applikationen • Sport und Fitness, Gesundheits- und Krankheitspflege, Home Automation

Folgende Betriebsarten sind möglich:

Standalone Modus Host Mode

Die Sensoren und die Peripherie werden direkt an die I/O Schnittstelle des Moduls angeschlossen. Es wird kein externer Mikrocontroller verwendet. Das Modul wird zum Beispiel mit einer einfachen Knopfzelle betrieben.

Die Sensoren und die Peripherie werden an den Mikrocontroller angeschlossen. Das BLE113 wird über die UART Schnittstelle des Mikrocontrollers angeschlossen.

Das im Vorfeld der IPA entworfene Modul besitzt ein Grösse von 26x41mm. Das Modul besitzt einen Debugger Anschlussstecker um die Firmware des Moduls bequem anpassen zu können. Das Modul kann in beiden Betriebsarten verwendet werden.

Page 15: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 15

Abbildung 7 Bluetooth Modul

5.1.3 WLAN Modul

Das RN-171 ist ein kleines und kompaktes WLAN Modul von Microchip (Früher Roving Networks). Es besitzt einen eingebetteten TCP/IP (Transmission Control Protocol / Internet Protocol) Stack. Das Modul besitzt lediglich eine Grösse von 27x18x3.1mm.

Abbildung 8 WLAN Modul RN-171

Wi-Fi zertifizierter 2.4GHz IEEE 802.11b/g Transceiver

RN-171

Energiespezifikationen:

• RX: 35mA • TX: 185mA 12dBm (Tx-Leistung konfigurierbar)

Reichweite • Ca. 40m (im Freien)

Stack: • Integrierter TCP/IP Stack • 1Mbit/s über UART, 2 Mbit/s Datenraten • Infrastruktur und SoftAP Modus

Peripherie: • UART und SPI Hardware Schnittstellen

Sicherheit: • WiFi Sicherheit: WEP-128, WPA-PSK (TKIP), WPA2-PSK (AES)

Features • Kompaktes SMT-Modul • Drahtloses Firmware Upgrade (FTP) • Speisung mit 3.3V • Mit einfachen ASCII-Kommandos konfigurierbar • Mehrere Antennenarten möglich: SMA Anschluss,

PCB Antenne oder Chip Antenne

BT-Modul BLE113

CC Debug Anschlussstecker

Reset Taster

Speisungsanschluss

Page 16: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 16

Folgende Betriebsarten sind möglich:

Infrastruktur Modus SoftAP Mode

Das WLAN – Modul kann sich mit einem Netzwerk verbinden oder in ein bestehendes eingebunden werden. Das Modul kann sich selbst mit einem Access Point verbinden.

Das WLAN Modul fungiert in diesem Modus selbst als Access Point. Es können sich nun bis zu 9 Geräte mit dem Modul verbinden. Es besteht dann allerdings keine Verbindung zum Internet, sofern das Modul keinen Internet Anschluss hat. Man spricht auch von einer End-to-End Verbindung.

Das im Vorfeld der IPA entwickelte Modul hat die folgenden Abmessungen: 50x40mm. Das Modul wird mit einer SMA (Sub-Miniature-A) Antenne verbunden. Es kann in beiden Betriebsarten betrieben werden.

Abbildung 9 WLAN Modul

Nach einem Bootvorgang befindet sich das WLAN-Modul im Data Mode. In diesem Modus können eingehende TCP-Verbindungsanfragen akzeptiert oder selbstständig Verbindungen initiiert werden. Die empfangenen Daten werden auf dem UART ausgegeben und können auf diesem zurückgesendet werden.

Mit der Escape-Sequenz „$$$“ befindet man sich im Command Mode. Mit einfachen ASCII-Befehlen können nun alle Parameter des Moduls ausgelesen und angepasst werden. Dieser Modus kann über TCP oder über die UART Schnittstelle aktiviert werden. Alle möglichen ASCII Befehle sind dem Reference Manual zu entnehmen.

Antennen Anschluss

Status LEDs

Speisungsanschluss

Page 17: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 17

5.1.3.1 LED Statusanzeige Durch 3 Status Leitungen, an denen zum Beispiel LEDs angeschlossen werden können, wird der Status des WLAN-Moduls angezeigt. Die genauen Beschreibungen der einzelnen Statusmöglichkeiten sind der Bedienungsanleitung zu entnehmen.

Zustand Blue LED (P4) Red LED (P1) Yellow LED (P2) Green LED (P3)

Eingeschaltet Not Used - - Connected over TCP

Schnelles Blinken (1Hz)

Not Used Nicht verbunden RX/TX Data Transfer

No IP Address

Langsames Blinken (2Hz)

Not Used Verbunden, kein Internet

- IP address OK

Ausgeschaltet Not Used Verbunden, Internet OK

- -

Page 18: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 18

5.2 Blockschaltbild

5.2.1 Basis

SPI2

Spannungsregler3.3V Power Supply

MikrocontrollerSTM32F405

SWD-Stecker SWD

User Taster GPIO

GPIO GPIO_[1..8]CooCoxPC

Reset Taster

Spannungsregler5V

Akku 11.1V

UART1

Status / User LED

MicroSD Karte

Lautsprecher

UART

I2C

SPISPI1

I2C

PWM

DAC2

2 4

4

2

4

ST-Link/V2

USB

8

4

Card Detect

Audio Enable

Motorentreiber2

2GPIO

6SDIO

Akkuüberwachung

RST

ADC1

LED ExternGPIO

GPIO 6

2

Motor Antrieb

Motor Steuerung

Abbildung 10 Blockschaltbild Basis

5.2.2 Bluetooth Modul

Extern: 3.3V Power Supply

Bluetooth ModulBLE113-A

Debugger SteckerPROG

WAKEUP WAKEUP

PC BLE Update Tool

Reset Taster

UART UART

I2CI2C

2

4

2

10

CC Debugger

USB

RST

UART

RST Reset Extern

Abbildung 11 Blockschaltbild Bluetooth Modul

Page 19: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 19

5.2.3 WLAN-Modul

Extern: 3.3V Power Supply

WLAN ModulRN-171

WAKEUP Force Awake

UART UART

Reset Extern RST

4 UART

SPI 4 SPI

Antenna Externe Antenne

GPIO_7 LED P4

GPIO_4 UART

LED Internet StatusGPIO_6

LED TCP Status

GPIO_5 LED Data

Abbildung 12 Blockschaltbild WLAN Modul

6 Pin Definitionen

6.1 Basis

6.1.1 SWD

Name Port[Pin] Funktion Aktiv SWDIO PA[13] SWDIO - SWDCLK PA[14] SWCLK -

6.1.2 Taster

Name Port[Pin] Funktion Aktiv USER_BUTTON PA[0] User Button Low

6.1.3 Akkuüberwachung

Die Akkuüberwachung wird mit Hilfe des Analog-Digital-Wandler (ADC) überwacht.

Name Port[Pin] Funktion Aktiv ADC_AKKU PA[1] ADC1 (IN1) -

Page 20: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 20

6.1.4 Motoren

Name Port[Pin] Funktion Aktiv PWMA PA[7] PWM Antrieb - PWMB PA[9] PWM Steuerung - DIRA PA[8] GPIO (Output) - DIRB PA[0] GPIO (Output) -

6.1.5 LEDs

6.1.5.1 Status LED Name Port[Pin] LED Nummer Farbe Aktiv STATUS_LED_BLUE PC[7] V202 Blau High STATUS_LED_GREEN PC[6] V202 Grün High STATUS_LED_RED PB[15] V202 Rot High

6.1.5.2 User LED Name Port[Pin] LED Nummer Farbe Aktiv USER_LED_BLUE PB[14] V201 Blau High USER_LED_GREEN PB[13] V201 Grün High USER_LED_RED PA[2] V201 Rot High

6.1.5.3 LED extern Name Port[Pin] Farbe Aktiv LED_EXTERN_1 PC[5] Beliebig High LED_EXTERN_2 PC[4] Beliebig High

6.1.6 Lautsprecher

Die Ausgabe eines Audio Signals erfolgt mit dem Digital-Analog-Wandler (DAC). Der DAC wird als Eingang definiert (AN). Dies wird von ST so vorgeschlagen, damit der Stromverbrauch sinkt. Bemerkung Mute: Wenn der Pin logisch auf „High“ ist, wird der Lautsprecher ausgeschaltet (gemutet).

Name Port[Pin] Funktion Aktiv SPEAKER1 PA[5] DAC2 (Analog Input) - AUDIO_MUTE PC[13] GPIO (Output) High

6.1.7 MicroSD Karte

Name Port[Pin] Funktion Aktiv SD_SPI_SCLK PB[10] SPI2 (SCK) - SD_SPI_CS PB[12] SPI2 (Slave Select) - SD_SPI_MISO PC[2] SPI2 (MISO) - SD_SPI_MOSI PC[3] SPI2 (MOSI) - SD_DAT0 PC[8] GPIO (Input) - SD_DAT1 PC[9] GPIO (Input) - SD_DAT2 PC[10] GPIO (Input) - SD_CD/DAT3 PC[11] GPIO (Input) - SD_CLK PC[12] Clock - SD_CMD PD[2] Commmand Line - SD_CardDetect PA[15] GPIO (Input) Low

6.1.8 Connector

6.1.8.1 USART1 Name Port[Pin] Funktion Aktiv USART1_CTS PA[11] USART1 (CTS) -

Page 21: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 21

USART1_RTS PA[12] USART1 (RTS) - USART1_TX PB[6] USART1 (TX) - USART1_RX PB[7] USART1 (RX) -

6.1.8.2 SPI1 Name Port[Pin] Funktion Aktiv SPI1_MISO PA[6] SPI1 (MISO) - SPI1_SCK PB[3] SPI1 (SCK) - SPI1_MOSI PB[5] SPI1 (MOSI) - SPI_NSS PA[4] SPI1 (Slave Select) Low

6.1.8.3 I2C Name Port[Pin] Funktion Aktiv I2C_SCL PB[8] I2C1 (SCL1) - I2C_SDA PB[9] I2C1 (SDA1) -

6.1.8.4 GPIO Name Port[Pin] Funktion Aktiv GPIO_1 PA[3] GPIO - GPIO_2 PA[10] GPIO - GPIO_3 PB[1] GPIO - GPIO_4 PB[2] GPIO - GPIO_5 PB[4] GPIO - GPIO_6 PB[11] GPIO - GPIO_7 PC[0] GPIO - GPIO_8 PC[1] GPIO -

6.2 Bluetooth Modul

Bemerkungen: Im Umfang dieser Arbeit wird die I2C Schnittstelle nicht verwendet. I2C ist jedoch für erweiterbare Anwendungen auf die Schnittstelle herausgeführt. Der Wakeup Pin wird ebenfalls nicht verwendet.

6.2.1 Debugg Schnittstelle

Name Port[Pin] Funktion Aktiv PROG_1 P2[1] PROG_1 - PROG_2 P2[2] PROG_2 -

6.2.2 Reset Taster

Name Name Funktion Aktiv RESET_BUTTON RESET Reset Low

6.2.3 Connector

6.2.3.1 UART Name Port[Pin] Funktion Aktiv UART_CTS P0[3] UART (CTS) - UART_RTS P0[2] UART (RTS) - UART_TX P0[5] UART (TX) - UART_RX P0[4] UART (RX) -

6.2.3.2 I2C Name Name Funktion Aktiv I2C_SCL SCL I2C (SCL) - I2C_SDA SDA I2C (SDA) -

Page 22: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 22

6.2.3.3 Externer Reset Name Port[Pin] Funktion Aktiv WAKEUP_BT P0[0] Not Used Low RESET RESET Reset Low

6.3 WLAN-Modul

Im Umfang dieser Arbeit wird die SPI Schnittstelle nicht verwendet. Jedoch ist die Schnittstelle für erweiterbare Anwendungen auf die definierte Hardware Schnittstelle herausgeführt.

6.3.1 LED Status

Die verschiedenen Status Anzeigen sind dem Kapitel -> Hardware -> WLAN Modul zu entnehmen.

Name Name Funktion Aktiv LED_TCP_ST GPIO_4 TCP Status Siehe

Hardware Spezifikationen

LED_DATA GPIO_5 Data Transfer LED_INTERNET_ST GPIO_6 Internet Status LED_P4 GPIO_7 Not Used

6.3.2 Connector

6.3.2.1 UART Name Name Funktion Aktiv UART_CTS GPIO_13 UART (CTS) - UART_RTS GPIO_12 UART (RTS) - UART_TX GPIO_11 UART (TX) - UART_RX GPIO_10 UART (RX) -

6.3.2.2 SPI Name Name Funktion Aktiv SPI1_MISO SPI_MISO SPI (MISO) - SPI1_SCK SPI_SCK SPI (SCK) - SPI1_MOSI SPI_MOSI SPI (MOSI) - SPI1_NSS FLASH_CS_N SPI (Slave Select) Low

6.3.2.3 Externer Reset Name Name Funktion Aktiv FORCE_AWAKE FORCE_AWAKE Not Used Low RESET RESET Reset Low

Page 23: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 23

7 Analyse und Realisierung

7.1 Grobanalyse

Das Hauptprogramm wird mit dem State-Event-Prinzip aufgebaut. Das heisst die Zustands-Maschine wird immer durchlaufen. Dies erlaubt einen flexibleren Aufbau der Software. Die Anzeige des Akkustands soll unabhängig vom Zustand zu jedem Zeitpunkt angezeigt werden.

Start

ADC Interrupt Flag gesetzt?

Ja

Nein

Zustandsmaschine abarbeiten

Zykluszeit abwarten

Initialisierung

Status LED anpassen

Abbildung 13 Flussdiagramm Grober Programmablauf

Das Flussdiagramm stellt den groben Ablauf des Programms dar. Der Interrupt für die Akkuüberwachung (ADC Interrupt Flag) erfolgt antiparallel zum Programmablauf. Das genaue State Event Diagramm befindet sich unter dem Kapitel „Software“.

7.2 Bluetooth Low Energy

Bluetooth ist eine Funktechnologie, die es erlaubt, Geräte wie z.B. Handys, Laptops, Headsets, Tastaturen und Mäuse über kurze Distanzen kabellos zu verbinden.

Page 24: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 24

Die Bluetooth Version 4.0 wurde am 30. Juni 2010 von der Bluetooth SIG (Bluetooth Special Interest Group) veröffentlicht. Die neue Version umfasst Classic Bluetooth, Bluetooth High Speed und Bluetooth Low Energy Protokolle.

Bluetooth benutzt das offene 2.4-GHz-ISM-Band (2.400 – 2.4835 GHz). Dieses ISM-Band wird von alltäglichen Geräten im Haushalt, der Industrie und der Wissenschaft verwendet.

Low Energy wurde hauptsächlich dafür entwickelt Geräte mit einem kleinen Energieverbrauch auf kurze Distanzen (<15m) miteinander ohne Kabel zu verbinden.

Alle gängigen Smartphone Typen haben standardmässig ein Bluetooth Modul eingebaut. Das Betriebssystem Android unterstützt Bluetooth Low Energy ab der Version 4.3.

7.2.1 Verbindungsaufbau Bluetooth

Die Firmware des Bluetooths Modul ist so eingestellt, dass sich jeder Benutzer mit dem Modul verbinden kann. Das Bluetooth Modul ist für alle Devices in der Umgebung sichtbar. Der Benutzer kann sich ohne Passwortanfrage mit dem Modul verbinden. Wenn man mit dem Modul verbunden ist, ist es keinem anderen Gerät möglich sich ebenfalls mit dem Modul zu verbinden oder den Datenaustausch abzufangen.

Abbildung 14 Verbindungsaufbau Bluetooth

Das Bluetooth Modul übernimmt den Verbindungsaufbau mit dem Master.

7.2.2 Datenaustausch

Der Datenaustausch erfolgt über die UART Schnittstelle des Bluetooth Moduls. Wenn der Datenaustausch bereit ist, wird am UART des Bluetooth Modul eine Hello Message an den Mikrocontroller gesendet. Die Verbindung abbrechen kann nur der Master. Wenn der Master die Verbindung beendet, wird ebenfalls eine Nachricht an den Mikrocontroller gesendet.

Der Datenaustausch erfolgt über das GATT (General Attirbute Profile). Dieses Protokoll wurde extra für Bluetooth 4.0 (Low Energy) spezifiziert. Im GATT Stack enthalten sind sogenannte Services. Services stellen verschiedene Funktionen für die Applikation zur Verfügung. Innerhalb der Services stehen verschiedene Charcteristics zur Verfügung. Eine Charcteristic beschreibt schlussendlich den Datentransfer zwischen Client und Server (Client = Android Device, Server = Bluetooth Modul). Das BLE-113 ist nun so programmiert, dass über einen

Page 25: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 25

Service eine Characteristic vorhanden ist, welche es erlaubt Daten vom Android Device auf das BLE-113 zu übertragen.

Das Bluetooth Modul fungiert in der Firmware als Standalone Module. Das heisst es werden vom Mikrocontroller keine Einstellungen geändert. Es werden lediglich die Daten vom UART empfangen und ausgewertet.

7.3 WLAN

Ein drahtloses Lokales Netzwerk (Wireless Local Area Network) wird heutzutage in fast allen Haushalten eingesetzt. Über einen AccessPoint ermöglicht das WLAN dem Benutzer sich ohne Kabel mit einem Netzwerk zu verbinden. Der Benutzer kann sich so Zugang zum Internet verschaffen. Zudem kann es mit allen anderen Computern und Geräten im Netzwerk kommunizieren. Auch die heutigen Smartphones sind standardmässig mit WLAN ausgestattet.

7.3.1 Verbindungsaufbau WLAN

Die Firmware des RN-171 beinhaltet einen sogenannten SoftAP Modus. SoftAP bedeutet Soft Access Point, was also wie ein Verbindungspunkt zu verstehen ist. Der Benutzer (Client) kann sich mit dem WLAN-Modul, welches im Access Point Mode eingestellt ist, verbinden. Die Verbindung wird über das TCP (Transmission Control Protocol) hergestellt. Der zeitliche Ablauf des Kommunikationsaufbaus sieht wie folgt aus:

Abbildung 15 Verbindungsaufbau WLAN-Modul

Dieser Verbindungsaufbau mit dem TCP wird bereits vom WLAN-Modul übernommen.

Bei vielen Netzwerken ist das WLAN passwortgeschützt. Für dieses Projekt wird auf eine Passwortanfrage verzichtet, da beim Datenaustausch keine sicherheitskritischen Daten übertragen werden. Bei einem ferngesteuerten Auto geht es gerade darum, sich möglichst schnell mit dem Auto verbinden zu können. Wenn allerdings das WLAN Modul im

Page 26: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 26

Automobilbereich oder in der Home Automation verwendet würde, ist eine Verschlüsselung unabdingbar.

Das Modul wird wie ein normales WLAN Netzwerk auf dem Smartphone oder Tablet angezeigt, mit welchem man sich jetzt verbinden kann. Das Modul kann sich maximal 7 Geräte „merken“, man spricht auch von „leasen“. Der Verbindungsaufbau dauert um einiges länger als beim Bluetooth Modul.

7.3.2 Datenaustausch über Socket

Ein Socket beschreibt eine Verbindungseinheit auf Netzwerkbasis. Die zu übermittelnden Daten werden in ein Protokoll verpackt und anschliessend übertragen. Das WLAN-Modul übernimmt die Verwaltung eines Sockets selbstständig. Ein neuer Socket wird immer vom Android Gerät geöffnet.

Währendem ein Datenaustausch (Socket geöffnet) ist, ist es einem anderen Client nicht möglich Daten mit dem WLAN-Modul auszutauschen.

Wenn ein neuer Socket geöffnet wurde, erhält der Client ein *HELLO*. Das RN-171 Modul gibt ein *OPEN* an den UART aus. Wird der Socket geschlossen, gibt das WLAN-Modul ein *CLOS* an den UART aus.

7.4 Interrupt

Ein Interrupt kann das laufende Programm unterbrechen um ein eingetroffenes Ereignis abzuarbeiten. Das ausgelöste Ereignis löst eine Unterbrechungsanforderung, auch Interrupt Request genannt, auf. Wenn das Ereignis erscheint, wird in die entsprechende ISR (Interrupt Service Routine) gewechselt. Danach wird das Programm dort fortgeführt wo es unterbrochen wurde.

Es werden drei verschiedene ISR verwendet:

Interrupt Interrupt Flag Beschreibung

SysTick SysTick_Handler Wird ausgelöst, wenn die Zykluszeit abgelaufen ist. -> siehe Timing

UART (Universal Asynchron Receiver Transmitter) Interrupt

USART_IT_RXNE Wird ausgelöst, wenn Daten an der UART Schnittstelle erscheinen

Analog-Digital Converter (ADC) Interrupt

ADC_IRQ Wird ausgelöst, wenn eine Umrechung vom analogen in den digitalen Wert abgeschlossen ist.

7.5 Timing

Die Zykluszeit wird mit dem SysTick auf 10ms eingestellt. Mit 10ms erreicht man eine saubere Flankendetektion eines Tasters. Die SysTick Interrupt Routine kann für sich wiederholende Abläufe oder Timer genutzt werden. Zudem werden in diesem SysTick 4 Software Timer initialisiert. Diese Software Timer werden für die Blinkzeiten der LEDs implementiert. Mit Hilfe der Timer Funktionen lässt sich ein Software Timer mit einer beliebigen Frequenz starten und stoppen.

Page 27: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 27

Die Funk Basis ist mit einem externen Quarz von 16MHz ausgestattet. Der STM32 besitzt zudem einen internen Quarz von 8MHz.

Für die Firmware habe ich den internen Quarz verwendet. Die Präzision ist beim internen Quarz kleiner als beim externen. Da jedoch bei meiner Applikation keine zeitkritischen Operationen durchgeführt werden, genügen die Geschwindigkeit und die Genauigkeit des internen Quarzes aus.

7.6 Variablenkonzept

Es gibt lokale und globale Daten. Die Daten welche global definiert sind, können aus jedem File angepasst werden.

Die Struktur, welche die Daten für den UART Empfang speichert, ist global definiert. Die Daten können so von jeder Funktion ausgelesen und geändert werden. Die Strukturen sind wie folgt aufgebaut:

WLAN Empfangs Buffer Bluetooth Empfangs Buffer

typedef struct{ char cWlan_Rx_Buffer[WLAN_RX_LEN]; volatile uint16_t Wlan_Received; }WLAN_BUFFER; WLAN_BUFFER wBuffer;

typedef struct{ char bt_Rx_Buffer[BT_RX_LEN]; volatile uint16_t bt_Rx_Cnt; }BT_BUFFER; BT_BUFFER btBuffer;

Die beiden Strukturen beinhalten ein Array und zusätzlich eine Zählvariable, welche die Anzahl der empfangenen Zeichen speichert.

Die restlichen Daten sind nicht global definiert.

7.7 Bedienung

Die Basis besitzt einen Reset Button und einen User Button.

Die Funktion des User Buttons ist frei wählbar. Die genaue Beschreibung zu der Firmware, welche für die IPA geschrieben wurde, befindet sich in der Bedienungsanleitung im Anhang.

Page 28: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 28

7.8 Ausgabe

7.8.1 Status LED

Die Status LED gibt den aktuellen Zustand des Akkus mit drei verschiedenen Farben an. Die verschiedenen Zuständen sind der Bedienungsanleitung oder dem Kapitel „Analog-Digital Converter (ADC)“ zu entnehmen.

7.8.2 User LED

Bemerkung: Wenn die User LED einmal in einem roten Zustand leuchtet, kann das Modul nur mit einem Reset neu gestartet werden. Es soll damit angezeigt werden, dass nicht die richtigen Daten vom Modul empfangen wurden.

Zustand Rot Grün Blau Eingeschaltet Modul bereit für

Kommunikations- Austausch

Android Gerät verbunden -> Kommunikation läuft

WAV File von MicroSD Karte gelesen und gespeichert

Schnelles Blinken (2Hz)

Kommunikationsfehler UART

- Keine WAV Datei auf MicroSD Karte

Langsames Blinken (1Hz)

- Externes Funk Modul verbunden -> Bereit zum Verbinden

Standalone Mode-> Keine SD Karte eingeschoben

Ausgeschaltet - - -

Page 29: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 29

8 Software

8.1 State Event Hauptprogramm

Die Zustandsmaschine wird alle 10ms durchlaufen. Zudem wird das ADC Interrupt Flag abgefragt. Tritt ein Error bei der SD-Karte auf, wird dies mit der Status LED angezeigt. Es wird nicht in den Error Handler State gewechselt. Bei einem Übertragungsfehler des UARTs wird jedoch in den Error Handler gewechselt. Das Programm bleibt nun im Error-Handler und kann nur mit einem Reset neu gestartet werden.

Abbildung 16 State Event Diagramm

8.1.1 Standalone

In diesem Zustand ist kein externes Modul angeschlossen. Später können hier individuelle Events und Aktionen hinzugefügt werden.

Wenn eine SD Karte eingeschoben wird, wird im File System der MicroSD Karte nach einer WAV Datei gesucht.

Mit einem Tastendruck wird nun signalisiert, dass ein Modul aufgesteckt wurde. Die Basis ist nun bereit für einen Verbindungsaufbau. Der Verbindungaufbau wird vom Bluetooth oder WLAN-Modul realisiert.

Je nachdem, ob das Modul angeschlossen ist oder nicht, wird die User LED gesetzt (Status Handling siehe-> Bedienung).

Page 30: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 30

8.1.2 Ready Mode

Die beiden Module sind nun bereit und man kann sich mit der Android App mit ihnen verbinden.

Folgende Events können nun auftreten:

• Neuer Socket wird geöffnet • Bluetooth Characteristic für Datenaustausch wird gestartet

Folgende Sequenzen werden ausgegeben wenn ein Modul verbunden ist:

• WLAN-Modul: „*OPEN*HELLO“ signalisiert, dass ein neuer Socket geöffnet wurde. Die State Machine wechselt in den WLAN Data Mode

• Bluetooth Modul: „HelloBT“ signalisiert, dass die Characteristic für den Datenaustausch gedrückt wurde. Die State Machine wechselt in den Bluetooth Data Mode

8.1.3 WLAN Data Mode / Bluetooth Data Mode

In diesen beiden Modi werden nun die Daten, welche über den UART Interrupt in einen Buffer gespeichert werden, ausgewertet. Das Programm wird alle 10ms durch die Zustandsmaschine aufgerufen. Genauere Beschreibungen zur Unterfunktion sind im Kapitel Unterprogramme/Update Base zu finden.

Wenn der Socket geschlossen wird, wird in den Ready Mode zurückgewechselt. Dasselbe gilt, wenn der Datenaustausch über Bluetooth beendet wird.

Wenn beim Empfang ein Fehler auftritt, wird in den Error Handler gewechselt. Dort wird der Error ausgewertet und die User LED blinkt entsprechend.

8.1.4 Error Handler

In diesem State werden alle Errors welche aufgetreten sind, gehandelt. Diesen Zustand kann man nur mittels Reset verlassen werden.

8.2 Unterprogramme

8.2.1 Blink Time Handler

In diesem Handler werden alle Blink Time Ereignisse angezeigt. Die verschiedenen „Zustände“ entsprechen der Tabelle für die User LED.

8.2.2 Update Base

Die verschiedenen Zustände sind in dieser Funktion geregelt. Das Unterprogramm wird dann aufgerufen, wenn ein Datenpacket für die Auswertung bereit ist. Die Daten, welche im Empfangsbuffer stehen, werden mit den vorgegeben Daten verglichen. Die Funktion der Steuerung wurde wie folgt definiert:

Page 31: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 31

Start

WLAN Data Mode?

Ende

Bluetooth Data Mode?

Input Buffer löschen

NeinNein

Input Buffer löschen

Error Flag setzen

Daten stimmen mit einem Wert überein?

Ja

Ja

Nein

Ausgänge anpassen Error Flag setzen Ausgänge anpassen

Daten stimmen mit einem Wert überein?Nein

Ja

Ja

Abbildung 17 Flussdiagramm Steuerung Auto

Zeichen Empfang Aktion

„0“ Stop Button

„1“ Vorwärts Button

„2“ Rückwärts Button

„3“ Rechts Button (Lenkung)

„4“ Rechts Button (Lenkung)

„5“ Linker Frontlicht Button

„6“ Rechter Frontlicht Button

„7“ Audio ein/aus

„Antrieb:“ Speichert den PWM Wert für den Antrieb (0-100)

“Lenkung:” Speichert den PWM Wert für die Lenkung (0-100)

Page 32: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 32

Abbildung 18 User Interface für Remote Control

Zu Beginn sind beide Motoren, die LEDs und auch der Lautsprecher ausgeschaltet.

Mit den beiden Buttons „Licht Links“ und „Links Rechts“ kann das linke resp. rechte Frontlicht getoggelt werden.

Der Stop Button schaltet beide Motoren aus (Button in der Mitte-> Viereck)

Wenn der Vorwärts Button gedrückt wird, wird der gespeicherte Wert des PWM ausgegeben. Zudem wird der PWM Ausgang für die Lenkung ausgeschaltet.

Wenn der Rechts oder Links Button gedrückt wird, wird der PWM Wert an den Lenkungsmotor ausgegeben. Die neue Geschwindigkeit wird erst angepasst, wenn der entsprechende Richtungspfeil gedrückt wird.

8.2.3 Update Akkustand

Dieses Unterprogramm wird ausserhalb der Zustandsmaschine ausgeführt. Sie wertet die verschiedenen Schwellen des ADC (Analog-Digital-Wandlers) aus und setzt entsprechend die Status LED.

8.3 USART

Der STM32 besitzt 4 synchrone/asynchrone UART Schnittstellen (USART1, USART2, USART3, USART6). Es gibt zusätzlich zwei asynchrone UART Schnittstellen (UART4, UART5). Beim USART1 und USART6 ist ein Speed von bis zu 10.5Mbit/s möglich. Die Kenndaten des USART sind folgende:

Abbildung 19 Kenndaten USART1

Da bei diesem Projekt nur sehr wenige Daten über UART übertragen werden, ist Flow Control (CTS und RTS) ausgeschaltet. Es ist allerdings zu beachten, dass dann CTS zwingend auf Low (GND) sein muss. Flow Control könnte bei zukünftigen Projekten ohne Probleme hinzugefügt werden, da die beiden Leitungen bereits auf die Schnittstelle geführt sind.

Page 33: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 33

Mit Hilfe des UART Interrupt wird ein Datenübertrag asynchron aufgerufen. Im Interrupt soll so wenig wie möglich angepasst werden, damit der Programmablauf nicht zu lange unterbrochen wird. Im Interrupt werden die Daten in einem Buffer gespeichert. Zusätzlich wird gezählt, wie viele Bits sich im Buffer befinden. Bei einem Carriage Return wird zusätzlich ein Flag gesetzt. Dieses Flag signalisiert nun der Zustandsmaschine, dass ein Packet bereit zum Auslesen der Daten ist.

EndbedingungEmpfangen?

Start / Interrupt Flag gesetzt

Ein Byte im Receive Buffer speichern

Ja Packet Flag setzen

ENDE

Interrupt Flag löschen

Nein

Abbildung 20 Flussdiagramm USART

Wenn das Packet Flag gesetzt ist, ist der Buffer mit den empfangenen Daten bereit und kann von der Unterfunktion updateBase() ausgewertet werden.

8.4 Pulsweitenmodulation (PWM)

Bei der Pulsweitenmodulation wird durch eine veränderbare Puls-Pausenlänge die Geschwindigkeit der Motoren geregelt. Der STM32 besitzt sehr viele Timer mit bis zu 4 Kanälen. Es kann also ein Timer mit einer Frequenz geladen werden. Es können dann bis zu 4 Vergleichswerte eingestellt werden, welche mit dem Timer verglichen werden. Stimmen die Werte im sogenannten Output Compare Register mit dem jeweiligen Timer überein, wird ein Interrupt ausgelöst. Durch das Handling mit dem Timer wird zudem die CPU nicht belastet. Der PWMA Ausgang wird hierbei mit dem Timer 3, der PWMB mit dem Timer 1 gehandelt. Der Verlauf der Spannung sieht dann folgendermassen aus:

Page 34: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 34

Abbildung 21 Pulsweitenmodulation

Am Ausgang erscheint die Frequenz mit welcher der Timer initialisert wird. Die Timerfrequenz wird beispielsweise auf 50Hz initialisiert. Das sogenannte Output Compare Register kann nun auf die gewünschte Pulsdauer eingestellt werden. Wenn der Timer den Wert des Compare Registers erreicht, wird der Ausgang auf Low geschaltet. Wenn der Timer wieder von vorne beginnt, wird der Ausgang auf High geschaltet. Somit erreicht man eine Pulsweitenmodulation.

8.5 Analog-Digital-Wandler (ADC)

Mit Hilfe des Analog-Digital-Wandlers kann die Spannung am Akku überwacht werden. Die Eingangsspannung wird mit einem Spannungsteiler auf die interne Referenzspannung von 3.3V geteilt. Da keine Z-Diode verbaut ist, ist die Schaltung nicht von einer Überspannung geschützt. Der C200 ist ein Glättungskondensator.

Abbildung 22 Akkuüberwachung Mikrocontroller

0

2

4

6

8

10

12

0 5 10 15 20

Tim

er W

ert

Time[ms]

Timer

Output Compare

0

1

2

3

4

0 5 10 15 20PWM

Aus

gang

Time[ms]

Spannung [V]

3.3V ADC

Page 35: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 35

Die Formel zur Berechnung der maximalen Spannung berechnet sich nach der Formel für einen nicht belasteten Spannungsteiler:

𝑈𝑈𝑈𝑈𝑈 = 𝑈𝑈𝑈𝑈 ∗𝑅204

𝑅204 + 𝑅203

Die maximale Eingangsspannung beträgt demnach 14.1V.

Der ADC des STM32F405 besitzt eine Auflösung von 12Bit. Dies ergibt eine mögliche Auflösung von etwa 2mV/Digit. Diese ist sehr genau und wird in meiner Applikation nicht so exakt benötigt.

Ein LiPo (Lithium-Polymer) Akku hat eine Entladeschlussspannung von 3,2V / Zelle. Die Akkus sollten nicht unter diesen Schwellwert fallen, da sie sonst Schaden nehmen können.

Damit der Benutzer der Funk Basis den Akku zum richtigen Zeitpunkt trennt, wird der Akkustand an der Status LED angezeigt. Der Spannungsverlauf eines Lithium-Polymer-Akkus sieht ungefähr so aus:

Abbildung 23 Akkuentladung 3 Zellen LiPo

Im grünen Bereich leuchtet die Status LED entsprechend Grün, im orangen Orange und im roten Bereich Rot. Folgende Schwellen wurden eingestellt, um dem Benutzer eine möglichst einfach verständliche Anzeige zu signalisieren:

Zustand Spannung Akku Wert ADC

Grüne LED leuchtet 14.1V-10.7V 4096-3100

Orange LED leuchtet 10.7V-9.8V 3099-2826

Rote LED leuchtet 9.8V-9.6V 2525-2771

Rote LED blinkt langsam (1Hz) 9.6V-9 V 2770-2597

Rote LED blinkt schnell (2Hz) 9V-0V 2596-0

Die Werte werden nun ständig mit dem analogen Wert verglichen und entsprechend die LED eingeschaltet.

Das Interrupt Register wird mit einem Wert geladen und ständig mit dem analogen resp. digitalen Wert am Eingang verglichen. Wird eine bestimmte Schwelle überschritten, wird ein Flag gesetzt.

8

8.5

9

9.5

10

10.5

11

11.5

Spannung Akku[V]

Spannung Akku[V]

Page 36: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 36

8.5.1 Watchdog

Mit einem Watchdog kann man eine untere und obere Schwelle einstellen, welche überwacht werden soll. Wird der Wert überschritten, wird ein Interrupt ausgelöst. Man spricht auch von einer sogenannten unteren resp. oberen Threshold-Schwelle. Praktisch ist, dass die CPU nicht belastet wird und der Controller das Handling für die Überwachung übernimmt.

8.6 Digital-Analog-Wandler (DAC)

Der Digital-Analog-Wandler beschreibt das Gegenteil eines ADC. Es kann ein digitaler Wert eingegeben werden, welcher dann ein analoges Ausgangssignal erzeugt.

Der STM32F405 besitzt zwei 12-Bit DAC Ausgänge. Es kann also ein Wert zwischen 0…4095 eingegeben werden. Die Referenzspannung ist gleich wie beim ADC 3.3V.

Es bestehen nun folgende Möglichkeiten um ein Sinussignal auszugeben:

Werte Ausgabe mit Interrupt Trigger Werte Ausgabe über DMA mit Trigger Interrupt

Mit dieser Ausgabe wird die CPU belastet. Bei jedem Interrupt wird der Wert angepasst.

Mit dieser Ausgabe wird die CPU nicht belastet. Die Triggerung erfolgt auch hier mit einem Timer. Jedoch übernimmt der Direct Memory Access (DMA) das übertragen der Daten.

STM32F405

CPU

RAM

DAC

Timer 6 TriggerDMA

X

Abbildung 24 DAC Ansteuerung mit DMA

8.6.1 DMA (Direct Memory Access Controller)

Wenn nun viele Daten ins RAM (Random Access Memory) geschrieben oder gelesen werden, belastet dies die CPU (Central Processing Unit). Um diese Überbelastung zu vermeiden, verfügen moderne Mikrocontroller über einen DMA (Direct Memory Access) Controller.

Es gibt folgende Transfermöglichkeiten mit DMA:

• Speicher zu Speicher • Speicher zu Peripherie • Peripherie zu Peripherie

Page 37: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 37

Der STM32F405 verfügt über zwei DMA mit je 8 Kanälen. Beide funktionieren nach dem FIFO (First In- First Out) Prinzip. Die Initialisierung von DMA ist relativ kompliziert. Jedoch verfügen beide DMA Controller über ein Buffer Managment. Man muss sich also nicht über die Buffergrösse Gedanken machen. Variablenfehler und Überläufe können nur schwer eruiert werden, da diese nichts über die CPU laufen.

8.6.2 Lautsprecher

Der Lautsprecher ist mit einem einfachen Audio Verstärker von ST aufgebaut. Ein RC-Tiefpass filtert das Audio Signal. Durch den Verstärker kann z.B ein Hupen erklingen. Mit Hilfe des eingebauten Potentiometers ist es möglich, die Lautstärke des Audio Signals zu verändern.

In einer Tabelle können die Werte gespeichert werden, welcher der DAC ausgibt. Die Werte nähern sich einer Sinuskurve an. Der Timer kann dann mit der gewünschten Frequenz geladen werden und das Audiosignal wird entsprechend getriggert.

8.7 Funktionen

Alle Funktionen, welche mit FUNK_BASIS beginnen, wurden während der IPA implementiert und getestet. Es wurde, wo nötig, ein Error Handling vorbereitet. Die Funktionen sollen für weitere Anwendungen genutzt werden können.

Die Funktionen sind im Anhang mit ausführlichen Kommentaren (Doxygen) zu finden.

Page 38: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 38

9 Schlusswort

9.1 Stand der Arbeit

Folgende Funktionen wurden mit der Firmware v1.0 für den Mikrocontroller getestet:

• Akkuüberwachung • PWM Ansteuerung • Ansteuerung Lautsprecher • Android Device kann über Bluetooth Auto steuern • Android Device kann über WLAN Auto steuern

Im Standalone Mode wird detektiert, ob eine SD Karte eingeschoben ist oder nicht. Jedoch wurde das Abspeichern des WAV Files noch nicht implementiert.

Page 39: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 39

10 Probleme / Schwierigkeiten

10.1 USART Initialisierung

Bei der Programmierung des USART1 ist mir im ersten Moment ein Softwarefehler unterlaufen. Um den Interrupt zu aktivieren, wird die Funktion NVIC_Interrupt() eingesetzt. Ich war der festen Überzeugung, dass mit der Funktion Interrupt_Config() der Interrupt bereits freigeschalten wird. Im Header der Funktion steht nämlich: Enable/Disable Interrupt. Nach einer relativ zeitintensiven Fehlersuche habe ich in einem Forum den Programmierungsfehler gefunden.

10.2 Watchdog ADC

Den Watchdog konnte ich initialisieren. Dennoch wurde nach einer Initialisierung der Interrupt nur dann ausgelöst, wenn sich die analoge Spannung oberhalb oder unterhalb der Threshold befand. Danach blieb das Programm ständig im Interrupt hängen, selbst wenn die Spannung sich innerhalb der Schwellen befand. Das Interrupt Flag wird im Interrupt gelöscht. Da ich zu wenig Zeit hatte, um dieses Problem zu lösen, habe ich meine eigenen Schwellen definiert. Nach der IPA werde ich versuchen, das Problem des Watchdog zu eruieren.

10.3 Sinus mit DMA ausgeben

Bei der Initialisierung des DAC ohne DMA gab es keine Probleme. Jedoch hatte ich bei der Initialisierung eines DMA Streams Mühe. Das Signal erschien zuerst nur am DAC1, den ich gebraucht hatte, um die Sinuskurve bequem auf dem Oszilloskop auszuwerten. Es gab zudem das Problem, dass ich nur eine bestimmte Frequenz ausgeben konnte. Nachdem ich mehr als einen halben Tag mit dem Problem verloren hatte, bat ich meinen Betreuer um Rat.

Mein Betreuer, Martin Aebersold hat dann festgestellt, dass die Struktur zum Initialisieren des DMA Streams global definiert werden muss. Die Struktur kann als Variable angesehen werden, welche auf dem Stack bei Aufruf der Funktion erstellt wird. Diese Variable wird offenbar überschrieben, so dass der DAC nur zufällig funktionieren kann. Wenn die Struktur nun global definiert ist, funktioniert die Ausgabe einwandfrei.

10.4 Benutzerfreundlicher Libraries erstellen

Ich habe das Zeitmanagment für die Erstellung benutzerfreundlicher Librarys unterschätzt. Beim Realisieren der Funktionen musste ich mehr Zeit für ein Error Handling investieren. Ich wäre besser damit gefahren, wenn ich bei den ersten Tests der Peripherie auch gleich die Librarys implementiert hätte.

Page 40: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 40

11 Mögliche Erweiterungen

Es sind viele verschiedene Möglichkeiten für Erweiterungen vorhanden. Durch die Unabhängigkeit des Basismoduls, kann jedes beliebige Funkmodul mit einer SPI, UART oder I2C Schnittstelle angesteuert werden können. Zudem sind vorprogrammierte Bibliotheken für die verwendete Peripherie vorhanden.

Mögliche Erweiterungen für die Steuerung des Autos:

• Anzeige des SD Folders • Steuerung über Gyro Sensor • User Interface mit Steuerrad • Sensoren zur Ansteuerung • Modellauto mit Live-Kamera

Page 41: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 41

12 Erfahrungen

Ich konnte das Thema für meine IPA selbst auswählen und habe dementsprechend auch etwas für mich Interessantes ausgewählt. So war ich stets motiviert an meiner IPA. Ich fand es toll, dass ich die Hardware für meine IPA selbst erstellen konnte. So war es mir möglich von Anfang an eine Android Remote Steuerung entwickeln. Zudem fand ich es spannend, einen kleinen Einblick in die Entwicklung von Embedded Android zu bekommen. Ich konnte Erfahrungen bei der Programmierung mit Java machen. Viel dazu gelernt habe ich bezüglich der Projektierung von grösseren Arbeiten.

Alle Erkenntnisse, die ich während meiner IPA gewonnen habe, werden mir in Zukunft sicherlich von grosser Hilfe sein.

13 Dank

Zum Schluss möchte ich mich ganz herzlich bei allen bedanken, die mich während meiner IPA unterstützten. Dies sind namentlich: Mein Fachvorgesetzter und Lehrmeister Martin Aebersold, sowie die beiden Experten Herr Schoch und Herr Kistler.

14 Testprotokoll

Das ausführliche Testprotokoll liegt im Anhang bei. Die ausführliche Auswertung der Reichweite und des Stromverbrauchs ist ebenfalls separat vorhanden.

15 Bedienungsanleitung

Die Bedienungsanleitung ist ebenfalls separat vorhanden.

Page 42: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 42

16 Informationen

16.1 Abkürzungen

Wort Beschreibung ADC Analog-Digital Converter CAN Controller Area Network, serielles Bussystem CPU Central Processing Unit, Hauptprozessor DAC Digital-Analog Converter, wandelt einen digitalen Wert in

eine analoge Spannung DMA Direct Memory Access I2C Inter-Integrated Circuit, ein von NXP Semiconductors

entwickelter Datenbus JTAG Joint Test Action Group, Methode zum Debuggern GAP General Access Profile, Zugriffsregelung Profile Bluetooth GPIO General Purpose Input Output, Allzweck Ein- oder -Ausgang GATT General Attribute Profile L2CAP Logical Link Control and Adaptation Protocol LED Light Emitting Diode MISO Master in Slave out MOSI Master out Slave in RX Receive PWM Pulsweiten-Modulation SMA Sub-Miniature-A, Steckerverbinder SMP Security Manager Protocol, Sicherheits Protokoll Bluetooth SRAM Static Random Access Memory, Speicherbaustein (flüchtig) SPI Serial Peripheral Interface, ein von Motorola entwickeltes

serielles Bussystem SWD Serial Wire Debug (2-Pin Alternative zu JTAG) TCP/IP Transmission Control Protocol / Internet Protocol, Netzwerk

Protokoll TX Transmit USART Universal Asynchronous/Synchronous Receiver Transmitter,

serielle, asynchrone Datenschnittstelle

Page 43: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 43

16.2 Glossar

Wort Beschreibung Access Point Elektronisches Gerät, dass als Schnittstellt für kabellose

Kommunikationsgeräte fungiert Baudrate Einheit für die Schrittgeschwindigkeit des UARTs (1 Baud

ist die Geschwindigkeit, wenn 1 Symbol pro Sekunde übertragen wird)

Bitrate Verhältnis einer Datenmenge zu einer Zeit, Einheit Bit/s Button Bedienelement der App oder Hardwaremässig Boot Aufstarten eines Geräts Client Software, die Daten oder Anwendungen bei Server

anfordert Debugger Ist ein Werkzeug zum Diagnostizieren von

Programmfehlern Flow Control Datenflusskontrolle um Verluste bei asynchronen

Datenübertragungen zu verhindern Firmware Software die in einer Hardware Komponente integriert ist Flash Programmspeicher des Mikrocontrollers Harvard Architektur Seperater Speicher für Daten und Befehle Gyro Sensor Registriert Drehbewegungen Interrupt Programmunterbruch High Logisch 1 (TRUE) Low Logisch 0 (FALSE) MircoSD Card Sehr kompaktes Flash-Speicherkatenformat Peripherie Alle Komponenten welche am Mikrocontroller

angeschlossen sind Pull-Down Paralleler Widerstand auf GND Pull-Up Paralleler Widerstand auf VCC Server Dienstleister, der Daten oder Ressourcen zur Verfügung

stellt Smartphone Mobiltelefon mit Bedieungsoptimierten Eigenschaften wie

z.B Touchscreen. Oft auch als transportabler Computer definiert

Stack Stapelspeicher Timer Eigenständiger Zähler im Mikrocontroller Toggeln Wechseln des Zustandes von True zu False oder

umgekehrt Watchdog Überwachung einer Komponente für das System

Page 44: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 44

16.3 Quellen

Hier werden alle Quellen, die bei dieser Arbeit verwendet wurden, aufgeführt.

16.3.1 Internet

Hardware Timers and Interrupt:

Link: http://visualgdb.com/tutorials/arm/stm32/timers/

Beschreibung: Detaillierte Übersicht zum Handling der Timers und Interrupts

DAC Ansteuerung über DMA:

Link: http://00xnor.blogspot.ch/2014/01/6-stm32-f4-dac-dma-waveform-generator.html

Beschreibung: Die Initialisierung der DMA stammt aus dieser Seite STM32 Tutorial:

Link: http://www.diller-technologies.de/stm32.html

Beschreibung: Detaillierte Übersicht über die Peripherie des STM32

STM32 Librarys Übersicht:

Link: http://mikrocontroller.bplaced.net/wordpress/

Beschreibung: Allgemeines zu den STM32F4-Librarys Bluetooth Smart:

Link: https://bluegiga.zendesk.com/entries/25053373--REFERENCE-BLE-master-slave-GATT-client-server-and-data-RX-TX-basics

Beschreibung: Beschreibung über Bluetooth Verbindung WLAN-Modul

Link: http://www.microchip.com/wwwproducts/Devices.aspx?product=RN171

Beschreibung: Beschreibungen über das WLAN-Modul

Page 45: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 45

16.3.2 Literatur

Nachschlagewerk für C:

Informatik V.2.4.1

Eine Einführung in die Programmiersprache C und die Grundlagen der Informatik

von Ivo Oesch – November 2011

16.3.3 Bilder

Mikrocontroller STM32:

http://www.electronics-eetimes.com/images/news_sync_images/2012-11-22-eeteu-pb-stm32.jpg

BLE-113:

http://www.alcom.nl/01/images/logos/logos_h50/Bluegiga-BLE113_CMYK.jpg

RN-171:

http://www.tenettech.com/content/images/thumbs/0006951_wifly_rn_171_80211bg_serial_module_roving_networks.jpeg

Page 46: Android Remote Control - tiergarten-lernende.bfh.chtiergarten-lernende.bfh.ch/admin/filesystem/projekte/25.128... · +41 (34) 426 68 97 / martin.aebersold@bfh.ch . Experten: Hansruedi

Android Remote Control

BFH-TI Burgdorf 46

17 Anhang

Alle Anhänge sind, aus ökologischen Gründen, auf der CD vorhanden und nicht in Papierform.

• Arbeitsjournal

• Zeitplan

• Hardwareanalyse (ausführlich)

• Schemas

• Layout

• Stückliste

• Source Code

• Android App (apk)

• Doxygen