Qualitätsuntersuchung des Multi-Sensor-Systems Sensor Tag von TI: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Datei:SensorTag-teardown-dualband-03.gif|mini|800px|Abb. 1: Sensor Tag von texas Instruments]] | |||
'''Autoren:''' Dennis Bräker<br/> | '''Autoren:''' Dennis Bräker<br/> | ||
'''Betreuer:''' [[Benutzer:Ulrich_Schneider| Prof. Schneider]]<br/> | '''Betreuer:''' [[Benutzer:Ulrich_Schneider| Prof. Schneider]]<br/> | ||
Zeile 4: | Zeile 5: | ||
'''Projektlaufzeit:''' Dez. 18 - März 19 | '''Projektlaufzeit:''' Dez. 18 - März 19 | ||
== Thema == | == Thema == | ||
Zeile 29: | Zeile 29: | ||
* Projektvorstellung im Wiki | * Projektvorstellung im Wiki | ||
* Machen Sie ein tolles Videos, welches die Funktion visualisiert. | * Machen Sie ein tolles Videos, welches die Funktion visualisiert. | ||
== Lösung == | |||
=== Zielsetzung === | |||
Ziel dieses Projektes ist es, eine Lösung für den TI SensorTag zu entwickeln, welche das | |||
Abrufen und Speichern der Sensordaten, auch über längere Zeiträume, ermöglicht. Insbesondere | |||
die mögliche Verbindungstechnologie sowie die einsetzbare Software werden dabei | |||
genauer betrachtet. Ein solcher Datenlogger ermöglicht eine langfristige Überwachung der | |||
verfügbaren Sensoren über einen größeren Zeitraum. Des Weiteren sollen diese Daten neben | |||
der Aufzeichnung auch grafisch dargestellt werden. | |||
=== Kommunikation === | |||
[[Datei:HEX.JPG|mini|400px|Abb. 2: Bedeutung der HEX-Werte einer GATT-Übertragung]] | |||
Die Kommunikation zwischen PC und SensorTag erfolgt via Bluetooth Low Energy über ein vorbereitetes USB-Dongle. Dieses wurde im Rahmen des Projekts [[Projekt_53:_iBeacon_Indoor_Lokalisierung|iBeacon Indoor Lokalisierung]] bereits geflasht und vorbereitet.<br> | |||
In der Umsetzung des Codes zur Kommunikation von MatLab und SensorTag wird auf Sourcecode von ebendiesem und [https://github.com/sid5291/SensorTag-Matlab A Matlab program to interface with the Sensor tag using the CC2540] zurückgegriffen. Dieser Code wurde teilweise angepasst und im Rahmen der Realisierung des Datenloggers verwendet.<br> | |||
Mithilfe der Programme "BLE Device Monitor" [http://processors.wiki.ti.com/index.php/BLE_Device_Monitor_User_Guide] oder "btool" lassen sich definierte GATT-Nachrichten an den SensorTag senden sowie die empfangenen Antworten auslesen. Dies ermöglicht eine erleichterte Problemfindung und Überprüfung der Schnittstelle sowie des SensorTags. | |||
=== Vor der Programmausführung === | |||
Bevor die Software in Matlab (''ReadSensors_master.m'') gestartet wird, gilt es folgende Punkte zu beachten: | |||
* Die MAC-Adresse des SensorTag muss in der Datei ''initializeSensortag.m'' an folgender Stelle geändert werden. Die MAC-Adresse besteht hierbei aus den letzten 6 Werten in umgekehrter Reihenfolge. | |||
<source line lang="matlab" style="font-size:small"> | |||
GAP_connect = ['01'; '09'; 'FE'; '09'; '00'; '00'; '00' ;'07';'3C'; 'F7' ;'22' ;'91' ;'B0']; %B0:91:22:F7:3C:07 | |||
</source> | |||
<br> | |||
* Der COM-Port muss in ''ReadSensors_master.m'' an folgender Stelle angepasst werden. Herausfinden lässt sich dieser in Windows über die Bluetooth-Geräteeigenschaften | |||
<source line lang="matlab" style="font-size:small"> | |||
DisplayHex = 0; | |||
COMPORT = 'COM3'; | |||
interval = 60; %Intervall für das Abrufen der Daten | |||
</source> | |||
<br> | |||
* An dieser Stelle lässt sich die Ausgabe der übertragenen GATT-Nachrichten in der Kommandozeile in Matlab auch während der Messungen aktivieren sowie das Intervall zum Abrufen der Sensorwerte (in Sekunden) einstellen. | |||
=== Das Programm === | |||
[[Datei:ReadSensors master Ablauf.jpg|mini|200px|Abb. 3: Programmablauf des Hauptprogramms]] | |||
Nach dem Start des Programms erfolgt eine Abfrage, ob der SensorTag initialisiert werden soll. Wurde dieses bereits zuvor durchgeführt und der SensorTag nicht neu gestartet, so kann in diesem Fall der Schritt übersprungen werden. Diese Funktion erhöht die Flexibilität, da der Initialisierungsprozess einige Zeit in Anspruch nimmt und im Falle der vorhandenen Verbindung nicht notwendig ist.<br> | |||
Während der Ausführung des Programms wird die Kommunikation mit dem SensorTag in der Matlab-Kommandozeile dokumentiert (sofern diese Funktion nicht deaktiviert wurde). Dies erleichtert u.a. die Fehlersuche bei Problemen und macht das Programm nachvollziehbarer.<br> | |||
Eine Darstellung des Programmablaufs ist in Abbildung 3 zu sehen. | |||
=== Berechnung der Sensorwerte === | |||
Die Sensorwerte werden innerhalb des Programms ''GetSensorData.m'' mittels der Rohdaten berechnet. Der SensorTag liefert über die BLE-Schnittstelle unterschiedliche Rohdaten in Form von HEX-Werten, welche mithilfe definierter Berechnungen in einen Messwert umgerechnet werden müssen.<br> | |||
Die Berechnungen für die jeweiligen Sensoren sind [http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User%27s_Guide hier] dokumentiert.<br> | |||
Im Folgenden ist ein die Berechnung eines Temperaturwertes im Programm ''GetSensorData.m'' dargestellt | |||
<source line lang="matlab" style="font-size:small"> | |||
[result_data] = HCI_TXRX(GATT_ReadIRTemp,READ_TYPE); | |||
TempSensor = [0,0]; | |||
rawObjTemp = hex2dec([result_data(2,:), result_data(1,:)]); | |||
rawObjTemp = typecast(uint16(rawObjTemp), 'int16'); | |||
it = bitshift(rawObjTemp,-2,'int16'); | |||
t = double(it)*SCALE_LSB; | |||
TempSensor(1,1) = t; | |||
</source> | |||
=== Darstellung der Messdaten === | |||
[[Datei:Ergebnistabelle.JPG|mini|400px|Abb. 4: Ausgabe der Messdaten in MatLab als Tabelle]] | |||
Um den SensorTag als Datenlogger zu verwenden, wird die Software in Matlab so gestaltet, | |||
dass die Sensordaten in definierbaren Intervallen abgefragt und gespeichert werden. Da in | |||
Matlab Variablen als Matrizen vorliegen, werden die Sensordaten in Form einer Tabelle zugeordnet | |||
und abgespeichert. <br> | |||
Zusätzlich wird in einer zweiten Variablen die fortlaufende Nummer und die dazugehörige | |||
Uhrzeit abgespeichert, um die Werte bei länger anhaltenden Messungen zuordnen zu können. | |||
Die beiden Matrizen werden fortlaufend bei jedem Messzeitpunkt nach unten um eine Zeile | |||
erweitert, sodass ein beliebig großer Messumfang und -zeitraum möglich ist. Das Abspeichern | |||
in der Datei erfolgt nach jeder Messung, dementsprechend also im definierten Intervall von | |||
beispielsweise 5 Minuten.<br> | |||
[[Datei:SensorTagPlot.png|mini|200px|Abb. 5: Grafische Darstellung der Daten]] | |||
Des Weiteren werden die Abgefragten Sensorwerte während des laufenden Programms in Matlab grafisch dargestellt. Dies ist in Abbildung 5 zu sehen. | |||
== Abschätzung der Genauigkeit == | |||
[[Datei:SensorTag Messung.png|mini|400px|Abb. 6: Messreihe des SensorTag und Referenzwerte]] | |||
Abschließend galt es die Richtigkeit und Genauigkeit der ermittelten Sensordaten zu überprüfen. Dies dient zum Einen der Überprüfung der richtigen Berechnung der Werte im Code, zum Anderen zur Einschätzung der Genauigkeit des gesamten Messsystems und deren Nutzung für weitere Problemstellungen. Grundlage der Überprüfung ist eine Messreihe der Umgebungstemperatur im Umfang von 100 Werten. Parallel wird die Temperatur zu jedem Messzeitpunkt mit einem Referenzthermometer festgestellt und notiert. Das Referenzthermometer liefert dabei eine Genauigkeit von einer Nachkommastelle, was für eine erste Abschätzung der Genauigkeit der Sensorwerte ausreichend ist. Der Vergleich der beiden Werte ist in Abbildung 6 erkennbar. Eine konstante Temperatur konnte in diesem Fall, wie zu erkennen ist, nicht erreicht werden. Dennoch ist ein Vergleich der Messwerte möglich. So ergibt sich eine mittlere Messabweichung des SensorTags von 0,0811°C. Daraus lässt sich schließen, dass der SensorTag gut geeignet ist, um Temperaturwerte mit der Genauigkeit von einer Nachkommastelle zu erfassen. | |||
== Probleme und Herausforderungen == | |||
* Berechnung der Sensorwerte schwierig, insbesondere Helligkeit und Luftdruck | |||
* Geschwindigkeit: Die Kommunikation via COM-Port ist sehr langsam, BTool fragt die Werte schneller ab | |||
* Firmwareversion spielt eine wichtige Rolle | |||
* Teilweise kurzzeitige starke Schwankungen der Werte (auch in der App und BLE Device Monitor), Ursache unklar | |||
* Nähe zum PC -> Reichweite der Bluetooth Schnittstelle | |||
* Notwendigkeit einen PC mit Matlab zu nutzen (Ausblick: Handy-App) | |||
== Video == | == Video == | ||
[https://youtu.be/33oLH2z_imA Youtube-Video] | |||
== Anlagen == | |||
[http://193.175.248.52/wiki/index.php/Datei:Sourcecode_SensorTag_Datenlogger.zip Sourcecode] | |||
[http://193.175.248.52/wiki/index.php/Datei:Btool.zip BTool] | |||
[http://193.175.248.52/wiki/index.php/Datei:BLE_SensorTag_GATT_Server.pdf SensorTag GATT Tabelle] | |||
== Weblinks == | == Weblinks == | ||
# [http://www.ti.com/ww/en/wireless_connectivity/sensortag/tearDown.html# Sensor Tag im Detail] | # [http://www.ti.com/ww/en/wireless_connectivity/sensortag/tearDown.html# Sensor Tag im Detail] | ||
# [http://e2e.ti.com/support/wireless-connectivity/bluetooth/f/538/t/385776 Connect Sensortag with matlab] | |||
# [https://stackoverflow.com/questions/31961438/get-accelerometer-data-from-ti-sensortag-using-matlab-and-hci-command Get accelerometer data from ti sensortag using Matlab and HCI-command] | |||
# [https://github.com/sid5291/SensorTag-Matlab A Matlab program to interface with the Sensor tag using the CC2540] | |||
# [http://processors.wiki.ti.com/index.php/BLE_Device_Monitor_User_Guide BLE Device Monitor User Guide] | |||
# [http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User%27s_Guide Berechnung der Sensorwerte] | |||
== Siehe auch == | == Siehe auch == | ||
#[[Studentische_Arbeiten_bei_Prof._Schneider|Studentische Arbeiten bei Prof. Schneider]] | #[[Studentische_Arbeiten_bei_Prof._Schneider|Studentische Arbeiten bei Prof. Schneider]] | ||
#[[Anforderungen_an_eine_wissenschaftlich_Arbeit| Anforderungen an eine wissenschaftlich Arbeit]] | #[[Anforderungen_an_eine_wissenschaftlich_Arbeit| Anforderungen an eine wissenschaftlich Arbeit]] | ||
#[[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für Matlab]] | |||
#[[Projekt_53:_iBeacon_Indoor_Lokalisierung|iBeacon Indoor Lokalisierung]] | |||
#[https://svn.hshl.de/svn/Studentische_Arbeiten/trunk/Dennis_Braeker/ SVN Repositorium] | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Studentische_Arbeiten| Studentische Arbeiten]] | → zurück zum Hauptartikel: [[Studentische_Arbeiten| Studentische Arbeiten]] |
Aktuelle Version vom 11. Mai 2019, 16:04 Uhr
![](/wiki/images/thumb/3/37/SensorTag-teardown-dualband-03.gif/800px-SensorTag-teardown-dualband-03.gif)
Autoren: Dennis Bräker
Betreuer: Prof. Schneider
Art: PA
Projektlaufzeit: Dez. 18 - März 19
Thema
Datenaufzeichnung mit einem TI Sensor Tag
Ziel
Nutzen Sie das Multi-Sensor-Systems Sensor Tag von TI um einen Datenlogger zu realisieren. Die Daten sollen über einen längeren Zeitraum aufgezeichnet werden und die Qualität ausgewählter Sensoren bewertet werden. Hier kann beispielsweise ein PC mit Matlab zur Visualisierung und Auswertung verwendet werden.
Aufgabenstellung
- Einarbeitung in die Hardware
- Konzept zur Auswertung der Messdaten (z.B. BT LE)
- Realisierung der Schnittstelle
- Auslesen und Speichern der Messdaten von 4 Sensoren (Empfehlung: Temperatur und Luftfeuchte)
- Visualisierung der Messdaten z.B. mit Matlab
- Schätzen Sie anhand der Messdaten und einer geeigneten Referenz die Genauigkeit des Systems ab
- Wissenschaftliche Dokumentation als HSHL-Wiki Artikel
- Softwareentwicklung nach HSHL Standard in SVN.
- Funktionsnachweis als YouTube-Video
Anforderung
- Wissenschaftliche Vorgehensweise (Projektplan, etc.)
- Wöchentliche Fortschrittsberichte (informativ)
- Projektvorstellung im Wiki
- Machen Sie ein tolles Videos, welches die Funktion visualisiert.
Lösung
Zielsetzung
Ziel dieses Projektes ist es, eine Lösung für den TI SensorTag zu entwickeln, welche das Abrufen und Speichern der Sensordaten, auch über längere Zeiträume, ermöglicht. Insbesondere die mögliche Verbindungstechnologie sowie die einsetzbare Software werden dabei genauer betrachtet. Ein solcher Datenlogger ermöglicht eine langfristige Überwachung der verfügbaren Sensoren über einen größeren Zeitraum. Des Weiteren sollen diese Daten neben der Aufzeichnung auch grafisch dargestellt werden.
Kommunikation
Die Kommunikation zwischen PC und SensorTag erfolgt via Bluetooth Low Energy über ein vorbereitetes USB-Dongle. Dieses wurde im Rahmen des Projekts iBeacon Indoor Lokalisierung bereits geflasht und vorbereitet.
In der Umsetzung des Codes zur Kommunikation von MatLab und SensorTag wird auf Sourcecode von ebendiesem und A Matlab program to interface with the Sensor tag using the CC2540 zurückgegriffen. Dieser Code wurde teilweise angepasst und im Rahmen der Realisierung des Datenloggers verwendet.
Mithilfe der Programme "BLE Device Monitor" [1] oder "btool" lassen sich definierte GATT-Nachrichten an den SensorTag senden sowie die empfangenen Antworten auslesen. Dies ermöglicht eine erleichterte Problemfindung und Überprüfung der Schnittstelle sowie des SensorTags.
Vor der Programmausführung
Bevor die Software in Matlab (ReadSensors_master.m) gestartet wird, gilt es folgende Punkte zu beachten:
- Die MAC-Adresse des SensorTag muss in der Datei initializeSensortag.m an folgender Stelle geändert werden. Die MAC-Adresse besteht hierbei aus den letzten 6 Werten in umgekehrter Reihenfolge.
GAP_connect = ['01'; '09'; 'FE'; '09'; '00'; '00'; '00' ;'07';'3C'; 'F7' ;'22' ;'91' ;'B0']; %B0:91:22:F7:3C:07
- Der COM-Port muss in ReadSensors_master.m an folgender Stelle angepasst werden. Herausfinden lässt sich dieser in Windows über die Bluetooth-Geräteeigenschaften
DisplayHex = 0;
COMPORT = 'COM3';
interval = 60; %Intervall für das Abrufen der Daten
- An dieser Stelle lässt sich die Ausgabe der übertragenen GATT-Nachrichten in der Kommandozeile in Matlab auch während der Messungen aktivieren sowie das Intervall zum Abrufen der Sensorwerte (in Sekunden) einstellen.
Das Programm
![](/wiki/images/thumb/d/d1/ReadSensors_master_Ablauf.jpg/200px-ReadSensors_master_Ablauf.jpg)
Nach dem Start des Programms erfolgt eine Abfrage, ob der SensorTag initialisiert werden soll. Wurde dieses bereits zuvor durchgeführt und der SensorTag nicht neu gestartet, so kann in diesem Fall der Schritt übersprungen werden. Diese Funktion erhöht die Flexibilität, da der Initialisierungsprozess einige Zeit in Anspruch nimmt und im Falle der vorhandenen Verbindung nicht notwendig ist.
Während der Ausführung des Programms wird die Kommunikation mit dem SensorTag in der Matlab-Kommandozeile dokumentiert (sofern diese Funktion nicht deaktiviert wurde). Dies erleichtert u.a. die Fehlersuche bei Problemen und macht das Programm nachvollziehbarer.
Eine Darstellung des Programmablaufs ist in Abbildung 3 zu sehen.
Berechnung der Sensorwerte
Die Sensorwerte werden innerhalb des Programms GetSensorData.m mittels der Rohdaten berechnet. Der SensorTag liefert über die BLE-Schnittstelle unterschiedliche Rohdaten in Form von HEX-Werten, welche mithilfe definierter Berechnungen in einen Messwert umgerechnet werden müssen.
Die Berechnungen für die jeweiligen Sensoren sind hier dokumentiert.
Im Folgenden ist ein die Berechnung eines Temperaturwertes im Programm GetSensorData.m dargestellt
[result_data] = HCI_TXRX(GATT_ReadIRTemp,READ_TYPE);
TempSensor = [0,0];
rawObjTemp = hex2dec([result_data(2,:), result_data(1,:)]);
rawObjTemp = typecast(uint16(rawObjTemp), 'int16');
it = bitshift(rawObjTemp,-2,'int16');
t = double(it)*SCALE_LSB;
TempSensor(1,1) = t;
Darstellung der Messdaten
Um den SensorTag als Datenlogger zu verwenden, wird die Software in Matlab so gestaltet,
dass die Sensordaten in definierbaren Intervallen abgefragt und gespeichert werden. Da in
Matlab Variablen als Matrizen vorliegen, werden die Sensordaten in Form einer Tabelle zugeordnet
und abgespeichert.
Zusätzlich wird in einer zweiten Variablen die fortlaufende Nummer und die dazugehörige
Uhrzeit abgespeichert, um die Werte bei länger anhaltenden Messungen zuordnen zu können.
Die beiden Matrizen werden fortlaufend bei jedem Messzeitpunkt nach unten um eine Zeile
erweitert, sodass ein beliebig großer Messumfang und -zeitraum möglich ist. Das Abspeichern
in der Datei erfolgt nach jeder Messung, dementsprechend also im definierten Intervall von
beispielsweise 5 Minuten.
![](/wiki/images/thumb/3/3b/SensorTagPlot.png/200px-SensorTagPlot.png)
Des Weiteren werden die Abgefragten Sensorwerte während des laufenden Programms in Matlab grafisch dargestellt. Dies ist in Abbildung 5 zu sehen.
Abschätzung der Genauigkeit
![](/wiki/images/thumb/d/d0/SensorTag_Messung.png/400px-SensorTag_Messung.png)
Abschließend galt es die Richtigkeit und Genauigkeit der ermittelten Sensordaten zu überprüfen. Dies dient zum Einen der Überprüfung der richtigen Berechnung der Werte im Code, zum Anderen zur Einschätzung der Genauigkeit des gesamten Messsystems und deren Nutzung für weitere Problemstellungen. Grundlage der Überprüfung ist eine Messreihe der Umgebungstemperatur im Umfang von 100 Werten. Parallel wird die Temperatur zu jedem Messzeitpunkt mit einem Referenzthermometer festgestellt und notiert. Das Referenzthermometer liefert dabei eine Genauigkeit von einer Nachkommastelle, was für eine erste Abschätzung der Genauigkeit der Sensorwerte ausreichend ist. Der Vergleich der beiden Werte ist in Abbildung 6 erkennbar. Eine konstante Temperatur konnte in diesem Fall, wie zu erkennen ist, nicht erreicht werden. Dennoch ist ein Vergleich der Messwerte möglich. So ergibt sich eine mittlere Messabweichung des SensorTags von 0,0811°C. Daraus lässt sich schließen, dass der SensorTag gut geeignet ist, um Temperaturwerte mit der Genauigkeit von einer Nachkommastelle zu erfassen.
Probleme und Herausforderungen
- Berechnung der Sensorwerte schwierig, insbesondere Helligkeit und Luftdruck
- Geschwindigkeit: Die Kommunikation via COM-Port ist sehr langsam, BTool fragt die Werte schneller ab
- Firmwareversion spielt eine wichtige Rolle
- Teilweise kurzzeitige starke Schwankungen der Werte (auch in der App und BLE Device Monitor), Ursache unklar
- Nähe zum PC -> Reichweite der Bluetooth Schnittstelle
- Notwendigkeit einen PC mit Matlab zu nutzen (Ausblick: Handy-App)
Video
Anlagen
Weblinks
- Sensor Tag im Detail
- Connect Sensortag with matlab
- Get accelerometer data from ti sensortag using Matlab and HCI-command
- A Matlab program to interface with the Sensor tag using the CC2540
- BLE Device Monitor User Guide
- Berechnung der Sensorwerte
Siehe auch
- Studentische Arbeiten bei Prof. Schneider
- Anforderungen an eine wissenschaftlich Arbeit
- Programmierrichtlinien für Matlab
- iBeacon Indoor Lokalisierung
- SVN Repositorium
→ zurück zum Hauptartikel: Studentische Arbeiten