Android Remote Control IPA 2015
Autor Lukas Hofer
Kandidaten Nummer 5404
Datum 20. April 2014
Dokument Version 1.0
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]
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
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
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
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
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
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
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.
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
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
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.
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.
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.
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
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
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
- -
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
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) -
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) -
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) -
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
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.
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
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
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.
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.
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 - - -
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).
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:
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)
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.
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:
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
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]
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
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.
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.
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.
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
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.
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
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
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
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
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