Remote-Control fürs Ferienhaus Android und Arduino mal anders einsetzen Marco Knüttel marco.knuettel@adorsys.de www.adorsys.de 1
Profil! Software-Entwickung! JavaEE, JavaScript, Ruby, Perl,...! Verteilte Anwendungen! Webbasierte Client/Server Architekturen! Linux/UNIX basierte Betriebssysteme! Hardwarebegeisterung! Mobile Endgeräte! Mikrocontroller! Sensorik / Messdatenerfassung 2
Intentionen! Leer stehendes Haus! Temperaturen! Bilder! Bewegungen! Fernbedienung für Standheizung zu teuer! Temperaturen! Batterieüberwachung! Positions-Tracking! Auslesen von OBD Werten 3
Überwachungs- / Steuerungshardware Auf dem Markt existieren Lösungen mit beschränktem Einsatz! Conrad GSM Fernschalt-/Mess-/Alarm-System GX106! Die MIRO GSM 52530 Marco Knüttel Copyright 2012 MATHEMA Software GmbH 4
Eigene Ideen und Erweiterbarkeit! Mehr IO-Kanäle nötig! Genauere Steuerung der einzelnen IO-Ports! Verschiedene Sensortypen müssen angeschlossen werden können! Unterschiedliche Bus-Systeme und Protokolle! Stromsparende Lösung! Aktuelle Stromspar-PCs zwischen 10 und 20 Watt! Mobile Endgeräte je nach Einsatz < 5 Watt 5
Frühjahr 2011! Google veröffentlicht USB-Accessories auf der GoogleIO 6
Hardware Arduino! OpenSouce-Plattform! OpenHardware! Erweiterungen ohne Probleme möglich! http://de.wikipedia.org/wiki/freie_hardware 7
Arduino Duemilanove / MEGA / Shield 8
Adruino MEGA - ADK! Integrierter USB-HOST-Support 9
Hardware - Shields! shieldlist.org Unterschiedliche Hersteller! USB-Host! USB-Host-2! LAN! NFC! LAN! Display! IO-Platinen 10
Hardware - Android! Android! 1.x Cupcake / Donut (02.2009)! 2.0.x / 2.1.x Eclair (10.2009)! 2.2.x Froyo (05.2010)! 2.3.x Gingerbread (12.2010)! 3.x Honeycomb (02.2011)! 4.x Ice Cream Sandwitch (ICS) (10.2011)! http://www.cyanogenmod.com/! CM7.1 Android 2.3.7 (10.2011)! CM9 Android 4.0.3 (repo-build) 11
USB-Accessory Support Accessory ab 2.3.4 als Backport / Host ab 3.x geräteabhängig 12
Kommunikation - Datentypen Beim Austausch von Daten zwischen Arduino und Android kommt es manchmal zu kleinen Problemen! Nur byte-arrays! float 4 byte Arduino / 4 byte Android! int 2 byte (2er-Komplement) Arduino / 4 byte Android 13
Kommunikation - Netzwerk! Latenz! Auch bekannt als Ping-Zeit! Wie lange dauert ein Paketdurchlauf! Bandbreite! Wie viele Pakete könnten denn pro Sekunde über die Leitung gehen! Masquerading! In Heim oder Firmennetzen Standard! Im Mobilfunkbereich durch IPv4 Problem nötig 14
Kommunikation WLAN/LAN! Dicke Bandbreite! LAN 100 MBit/s / 1000MBit/s! WLAN 802.11n bis 600MBit/s! Niedrige Latenz! Niedrigste Ping-Zeiten für kürzeste Eventreaktionen! Nicht "global" verfügbar! Kein Masquerading zwischen den Geräten! Nur in Heim oder Firmennetzen verfügbar Optimale Bedingungen für Remotesteuerungen 15
Kommunikation - UMTS! Zellenwechsel! Spontane Verbindungsabrisse! Teilweise sehr hohe Latenz! Durchaus sehr geringe Bandbreite! Eventuell hohe Traffic-Kosten / Traffic-Limit! Bei vielen Providern gibt es nur noch Masquerading Schlechte Bedingungen für Remotesteuerungen 16
Verbinungsmöglichkeiten Android/Arduino! Bluetooth (sicherheitstechnisch nicht zu empfehlen)! GerätePIN nicht sicher / Andere Daten können sichtbar sein! WLAN! AP-Mode ab Android 2.2! Sicherung durch WPA2! USB! Host (erst ab Android 3.x und nicht bei allen Geräten)! Client (ab Android 2.3.4 als Backport)! MicroBridge (auch schon ab Android 1.6 möglich)! Für die Kommunikation wird die adb-schnittstelle missbraucht 17
Kommunikation Arduino/Android Im Arduino dreht sich das Hauptprogramm im Kreis und ermittelt bei jedem mal die Werte der IO-Ports. Der ermittelte IST-Zustand wird gesendet und mit dem SOLL-Zustand beantwortet.! Ständige Kommunikation (10ms delay)! Austausch von einzelnen bytes pro channel! Bei Empfang Umwandlung zur JAVA-Objektstruktur mit Typisierung 18
Kommunikation zum Server Die Daten werden vom mobilen Endgerät zum Server im Internet transportiert.! Einfache JAXB-Serialisierung nach XML! Maximaler Overhead! Serialisierung nach JSON! Reduzierung des Overhead! Festbreitenformat! Sehr aufwändige Wandlung zwischen den Repräsentationen! DataOutputStream-Serialisierung! Bitkombinationen können zum Abbruch der Übertragung führen 19
Infrastruktur - Stabile Grundversorgung! Handy-Ladegeräte (1-2 A)! KFZ-USB-Adapter (500 ma)! USV / Eigene USV! Autobatterie mit kleinem Ladegerät! 7.2 Ah GEL! RC-Ladegerät! Step UP/DOWN-Wandler! SD-50A-12 - DC/DC-Wandler, 9-18V, 12V, 50W! SD-50A-5 - DC/DC-Wandler, 9-18V, 5V, 50W 20
Architektur Arduino Reiner C-Code struct ist das Maximale "! Import der zusätzlichen Libraries! setup! loop! eigene Funktionen 21
Architektur Android JAVA VM in abgespekter Version alle zusätzlichen APIs mit Einschränkungen möglich! Activity! Service! Intents! ContentProvider! BroadcastReceiver 22
Entwicklungsumgebung! Arduino Studio! libraries! SDK - Android Development Kit! eclipse-plugin! SDK Manager! Plattformen! Extensions (maps / usb) 23
Android Plattformen 24
Software Arduino Laden der Libraries Setup des Mikrocontrollers 25
Software Arduino Statusprüfung und möglicher Datentransfer 26
Software Android Android 2.3.4 3.0 27
Software Android 28
Software Android Android 3.x / 4.x 29
Software Android 30
Datentransfer / Android Push Intents! "zyklischer" Poll -> keine Lösung! SMS! Offener Socket! WebSockets! Comet! eigene Implementierung mit Threads 31
Arduino native Features Nach dem Auspacken stehen direkt verschiedene Anschlusstypen zur Verfügung! PWM Outputs! Digital IO! Analog IO! Serieller Port! I2C Bus-System 32
Sensoren! Bewegungsmelder! OneWire! Temperaturen - DS1820! Einfache Widerstände "Spannungsteiler! Strom/Spannungsmessung! Ladeüberwachung von Batterien! aktuelle Verbrauchsanzeigen! serieller Port! OBD-Adapter! XBee/Zigbee 33
Zur finalen Version Jedes Spielprojekt endet irgendwann fritzing.org 34
Interessante Projekte! Womo-Monitoring/Steuerung! Haus-Automatisierung/Überwachung! Faschingskostüm "! NASA! Quadrocopter! Google Labyrinth 35
WOMO Steuerung! 36
NASA! Android und Google ADK Board im Space-Shuttle 37
Links! http://arduino.cc - Open-Plattform-Seite! http://www.seeedstudio.com/ - Hersteller! http://www.dfrobot.com/ - Hersteller! http://www.exp-tech.de/ - deutscher sehr fähiger Händler! http://www.mikrocontroller.net/ - Unendlich viel Tips! http://developer.android.com/ - Android! http://www.cyanogenmod.com/ - richtige Versionen ;-) 38
Fragen? Vielen Dank! marco.knuettel@adorsys.de 39