Internet of Things - Projektvortrag Dennis Müller Hochschule RheinMain 1. Februar 2017 Charge Monitor Dennis Müller 1/22
Gliederung 1 Einführung 2 Lösungsansätze zu Problemstellungen 3 Umsetzung 4 Evaluation Charge Monitor Dennis Müller 2/22
Die Idee Mobile Geräte benutzen USB-Kabel zum Aufladen Spezielles Kabel/Setup, um Stromverbrauch zu messen Verbrauch verschiedener Geräte speichern Weiterverarbeitung: Prädiktive Ladestation, Stromverbrauchzähler? Charge Monitor Dennis Müller 3/22
Problemstellung Stromfluß durch ein USB-Verlängerungskabel messen? Universelle Messtation. Geräte identifizieren? Speichern der Daten? Charge Monitor Dennis Müller 4/22
Einführung Lösungsansätze zu Problemstellungen Umsetzung Evaluation Strommessung USB-Kabel aufschneiden und Messgerät in Reihe der VCC-Leitung schalten. ACS712 mit 5A Reichweite für einfachen Setup des Prototypen. (Nicht optimal, da USB maximal 1,5A zulässt, und das auch nur im C-Standard) Benötigt Analog-Digital-Wandler zum Auslesen. Abbildung 1: Seziertes USB3.0Verlängerungskabel Abbildung 2: ACS712 Charge Monitor Dennis Müller 5/22
Einführung Lösungsansätze zu Problemstellungen Umsetzung Evaluation Identifikation Klassische IoT-Umsetzung zum Identifizieren von Objekten: RFID Weit verbreiteter Tag-Leser für DIY-Anwendungen: MF RC522 Kommunikation via SPI-Bus Abbildung 3: Mifare RC522 RFID-Tag Reader Charge Monitor Dennis Müller 6/22
Datenspeicherung Übertragung der Daten an einen Dienst Einfache Massendatenspeicherung Eventuelle integrierte Analysetools Lediglich Internetverbindung für Prototypen benötigt Für den Prototypen wird Keen.IO als Dienst verwendet, da es vollkommen dynamisch Events in verschiedenen Kanälen aufnehmen kann. Charge Monitor Dennis Müller 7/22
Internetverbindung Ethernet-Kabel? Weiteres Kabel, das verbunden werden muss, zusätzlich zur Versorgung des Prototypen und zum USB-Verlängerungskabel WLAN? Lediglich AP in der Nähe benötigt, günstige Option besteht im ESP8266. Kann via serieller Kommunikation über 2 Pins mit Kommando-Set angesteuert werden. Abbildung 4: Espressif ESP8266 WLAN-Chip Charge Monitor Dennis Müller 8/22
Verbinden der Lösungsansätze Abbildung 5: Verbinden der Ansätze? Charge Monitor Dennis Müller 9/22
Arduino als Arbiter Der Arduino Uno bietet alle benötigten Hardware-Schnittstellen. Darübehinaus gibt es viele Libraries, teilweise von Dritten, die das Prototyping erleichtern. Abbildung 6: Arduino Uno 1 1 Quelle: http://www.arduino.org/media/k2/galleries/90/a000073- Arduino-Uno-SMD-1front.jpg Charge Monitor Dennis Müller 10/22
Umsetzung ACS712 ACS712 wird durch Arduino versorgt, da die Versorgungsspannung kritisch für das Auslesen ist. 5A Version des ACS712 hat Mess-Sensibilität von 186mV/A bei 25 Grad Celsius, der ADC des Arduino eine Auflösung von 10 Bit. 0A entsprechen beim Output des ACS712 Vcc/2(Richtung wird unterschieden). Der Stromfluss ergibt sich somit aus: volt = (A0 512) Vcc/1023.0 amp = volt/0.186 Amn.: 0A-Output kann von 512 abweichen, durch Mittelung der ersten Werte im Startzustand kann ein besserer Wert bestimmt werden. Charge Monitor Dennis Müller 11/22
Umsetzung MFRC522 Anschließen des Tag-Readers an den SPI-Bus des Arduino. Kommunikation mittels MFRC522-Library von Miguel Balboa, welche auf der SPI-Lib von Arduino aufbaut. Abbildung 7: Initialisierung der MFRC522 Lib Ermöglicht Scannen nach neuen Karten in der Nähe über gekapselte Funktionen und Auslesen des ID-Blockes. Charge Monitor Dennis Müller 12/22
Umsetzung Datenspeicherung ESP8266 wird über serielle Schnittstelle angesteuert, um mit Keen.IO zu kommunizieren. Durch die serielle Schnittstelle bieten sich GET-Requests über die REST-API an, um Daten zu pushen. Keen.IO nimmt nur JSON-Daten an, für GET-Requests werden diese in Base64 kodiert und an folgende URL verschickt: https://api.keen.io./projects/<proj_id>/events/<rfid>?api_key=<write_key >&data=<data> Base64-Encoding kann mit Drittpartei-Libs umgesetzt werden. 2 2 Hier verwendet: Base64 von Arturo Guadalupi, https://github.com/agdl/base64 Charge Monitor Dennis Müller 13/22
Abläufe Abbildung 8: Setup des Arduino Charge Monitor Dennis Müller 14/22
Abläufe Abbildung 9: Kontinuierlicher Ablauf Charge Monitor Dennis Müller 15/22
Messgenauigkeit des ACS712 Eine gelesene Einheit am ADC des Arduino entspricht: 5[V ]/1023/0.186[ V A ] = 0.26[A] Die Auflösung für den Anwendungsfall mit bis zu 500mA (900mA mit USB3.0) fällt somit recht gering, aber ausreichend aus. Hinzu kommt das Rauschen des ACS712, welches ±2 Leseeinheiten am ADC des Arduino ausmachen. Charge Monitor Dennis Müller 16/22
Testmessungen Zur Evaluation der Messung und zum besseren Verstehen des Rauschverhaltens werden zusätzlich zu den Testgeräten zwei Dummy -Sitzungen gemessen. Daraus ergeben sich folgende 4 Testszenarien: 1 Kein Verbraucher angeschlossen, nur das Rauschen wird aufgenommen 2 0,5W 56 Ohm Widerstand 3 Testgerät: Fiio X1 4 Testgerät: Samsung S2 Galaxy Charge Monitor Dennis Müller 17/22
Dummy-Messungen Abbildung 10: Messwerte ohne Verbraucher Charge Monitor Dennis Müller 18/22
Dummy-Messungen Abbildung 11: Messwerte mit konstantem Verbraucher Anm.: Spannung fiel am 56 Ohm Widerstand ab, sodass 80mA flossen. Charge Monitor Dennis Müller 19/22
Test-Messungen Abbildung 12: Fiio X1 Charge Monitor Dennis Müller 20/22
Test-Messungen Abbildung 13: Samsung S2 Galaxy Charge Monitor Dennis Müller 21/22
Ausblick ACS712 rauscht relativ stark, kann jedoch rausgerechnet werden Mittelung bereits im Messknoten kann Ergebnisse verbessern Besseres Ansteuern des ESP8266 für erhöhte zeitliche Auflösung NFC-fähigen Tag-Reader benutzen, Ausnutzen von Datenblöcken auf Tags Identifier an USB-Port abgreifen Charge Monitor Dennis Müller 22/22