TI Sensortag mit Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 37: Zeile 37:
== Schritte der Signalverarbeitung ==
== Schritte der Signalverarbeitung ==
===Primärsensor===
===Primärsensor===
[[Bild:Ti sensortag primärsensor.jpg|thumb|450px|left|Abb. 1: TI Sensortag]]
[[Bild:Ti sensortag primärsensor.jpg|thumb|300px|left|Abb. 1: TI Sensortag]]
In diesem Kapitel soll der TI Sensortag von Texas Instruments, aus Abbildung 1, vorgestellt und erläutert werden.
In diesem Kapitel soll der TI Sensortag von Texas Instruments, aus Abbildung 1, vorgestellt und erläutert werden.


<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>





Version vom 4. Juli 2018, 07:06 Uhr

Autor: Dominik Kai Meyer
Betreuer: Prof. Dr. Ulrich Schneider
Sensor: SensorTag

Einleitung

  1. Auswahl eines Primärsensors
    1. Wie funktioniert der Sensor?
    2. Welche Rohsignale liefert der Sensor?
  2. Signalvorverarbeitung
    1. Sollen Messwerte oder vorverarbeitete Daten übertragen werden?
    2. Wie lässt sich eine Vorverarbeitung umsetzen?
    3. Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?
  3. Analog-Digital-Umsetzer
    1. Wie werden die analogen Signale umgesetzt?
    2. Welcher ADU kommt zum Einsatz?
    3. Welche Gründe sprechen für diesen ADU? Alternativen?
  4. Bussystem
    1. Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt?
    2. Wenn ja, wie funktioniert dieses Bussystem?
  5. Digitale Signalverarbeitung
    1. Welche Verarbeitungsschritte sind notwendig?
    2. Welche Filter werden angewendet?
    3. Bestimmen Sie Auflösung, Empfindlichkeit und Messunsicherheit des Sensors.
  6. Darstellung der Ergebnisse
    1. Welche Fehler treten in welchem Verarbeitungsschritt auf?
    2. Stellen Sie die Messunsicherheit bzw. das Vertrauensintervall dar.

Lernziele und Projektplanung

Lernziele

Projektplanung

Zur Strukturierung dieses Projekts, wurde ein Projektplan mit Excel erstellt. Dieser

Schritte der Signalverarbeitung

Primärsensor

Abb. 1: TI Sensortag

In diesem Kapitel soll der TI Sensortag von Texas Instruments, aus Abbildung 1, vorgestellt und erläutert werden.
























Funktionsweise der eingebauten Sensoren

Abb. 2: Sensoren SensorTag [1]
Abb. 3: Sensoren SensorTag [1]




Der SensorTag hat IoT Schnittstellen für die folgenden Sensoren:
          *IR Temperatur, sowohl Objekt- als auch Umgebungstemperatur
          *Bewegung, 9 Achsen (Beschleunigungssensor, Gyroskop, Magnetometer)
          *Luftfeuchtigkeit, sowohl relative Luftfeuchtigkeit und Temperatur
          *Barometer, sowohl Druck als auch Temperatur
          *Optisch, Lichtintensität




Sensor Überblick
Sensor Name Datengröße Hersteller
IR Temperatur TMP007 2 x 16bit Texas Instruments
Bewegung MPU9250 9 x 16 bit InvenSense
Feuchtigkeit HDC1000 2 x 16bit Texas Instruments
Druck BMP280 2 x 24bit Bosch
Optisch OPT3001 1 x 16bit Texas Instruments

Der SensorTag kann so konfiguriert werden, dass er Benachrichtigungen für jeden Sensor sendet, indem er 0x0001 in die charakteristische Konfiguration & lt; GATT_CLIENT_CHAR_CFG_UUID & gt; Für die entsprechenden Sensordaten werden die Daten dann gesendet, sobald die Daten aktualisiert wurden. Die Sensoren werden aktiviert, indem 0x01 (NB: Der Bewegungssensor verwendet eine Bitmap zur Steuerung einzelner Achsen) in das entsprechende Merkmal 'configuration' geschrieben und dann durch Schreiben von 0x00 deaktiviert wird. Zur regelmäßigen Datenerfassung verwendet der SensorTag keine von den Sensoren bereitgestellten Interrupt-Funktionen, sondern der Bewegungssensor (MPU9250) verwendet Interrupt für die Wake-on-Bewegung (Shake-Erkennung).

Der SensorTag verwendet I2C als Schnittstelle zu den Sensoren. Dem MPU9250 ist ein eigener I2C-Bus (Bus # 1) zugeordnet, der auch separat versorgt wird. Beachten Sie auch, dass der MPU9250 aus zwei separaten Geräten im selben Paket besteht. Das Magnetometer hat eine eigene I2C-Adresse. Der Bewegungssensor verfügt über eine WOM-Funktion (Wake-On-Motion), die optional verwendet werden kann, sodass Bewegungsdaten nur gemeldet werden, wenn das Gerät berührt wird. Wenn WOM aktiviert ist, meldet der SensorTag Bewegungsdaten für 10 Sekunden, nachdem das Gerät eine Bewegung erkannt hat.

IR Temperatur Sensor

Der am SensorTag verwendete Temperatursensor ist von Texas Instruments. Der IR-Temperatursensor ist mit der folgenden Quellcodedatei implementiert:
Applikation: sensortag_tmp.c
Driver: SensorTmp007.c
Profile: irtempservice.c

IR Temperature Sensor
Type UUID Access Size (bytes) Beschreibung
Daten AA01* R/N 4 Objekt [0:7], Objekt [8:15], Umgebungstemperatur [0:7], Umgebungstemperatur [8:15]
Benachrichtigung 2902 R/W 2 0x0001, um Benachrichtigungen zu aktivieren, 0x0000, um zu deaktivieren.
Konfiguration AA02* R/W 1 Sie 0x01, um die Datenerfassung zu aktivieren, 0x00, um sie zu deaktivieren.
Bereich AA03* R/W 1 Auflösung 10 ms. Bereich 300 ms (0x1E) bis 2.55 Sekunden (0xFF). Standard 1 Sekunde (0x64)
Signalverarbeitung

Wenn ein Freigabebefehl (0x01) in die Eigenschaft 'configuration' geschrieben wird, beginnt der Sensor jede Sekunde Messungen durchzuführen (Mittelwert über vier Messungen) und die Daten werden in der Eigenschaft 'data' gespeichert. Wenn der Deaktivierungsbefehl (0x00) ausgegeben wird, wird der Sensor in den Stand-by-Modus versetzt und die fehlenden Daten werden gelöscht und nicht mehr gemeldet.

Rohsignale des Sensors

Um Daten zu erhalten, verwenden Sie entweder Benachrichtigungen oder lesen Sie die Daten direkt aus. Der Rohdatenwert, der von diesem Sensor gelesen wird, sind zwei vorzeichenlose 16-Bit-Werte, einer für die (Umgebungs-) Temperatur und einer für die Objekttemperatur. Um die Temperatur in Grad (Celsius) zu konvertieren, wird folgenden Algorithmus verwendet:

void sensorTmp007Convert(uint16_t rawAmbTemp, uint16_t rawObjTemp, float *tAmb, float *tObj)
{
  const float SCALE_LSB = 0.03125;
  float t;
  int it;

  it = (int)((rawObjTemp) >> 2);
  t = ((float)(it)) * SCALE_LSB;
  *tObj = t;

  it = (int)((rawAmbTemp) >> 2);
  t = (float)it;
  *tAmb = t * SCALE_LSB;
}

[2]

Bewegungssensor

Der Bewegungssensor auf dem SensorTag heißt MPU925 [3] und ist von InvenSense. Der Bewegungssensor ist mit den folgenden Quellcodedateien implementiert:
Applikation: sensortag_mov.c
Treiber: SensorMpu9250.c
Profil: movementservice.c

Bewegung
Type UUID Access Size (bytes) Beschreibung
Daten AA81* R/N 18 Gyroskop X[0:7], Gyroskop X[8:15], Gyroskop Y[0:7], Gyroskop Y[8:15], Gyroskop Z[0:7], Gyroskop Z[8:15], Beschleunigung X[0:7], Beschleunigung X[8:15], Beschleunigung Y[0:7], Beschleunigung Y[8:15], Beschleunigung Z[0:7], Beschleunigung Z[8:15], Magnetometer X[0:7], Magnetometer X[8:15], Magnetometer Y[0:7], Magnetometer Y[8:15], Magnetometer Z[0:7], Magnetometer Z[8:15]
Benachrichtigung 2902 R/W 2 0x0001, um Benachrichtigungen zu aktivieren, 0x0000, um zu deaktivieren.
Konfiguration AA82* R/W 2 Ein Bit für jede Gyro- und Beschleunigungsmesserachse (6), Magnetometer (1), Nachlauffreigabe (1), Beschleunigungsmesserbereich (2). Beliebige Bitkombination, um die gewünschten Funktionen zu aktivieren. Mit 0x0000 wird das Gerät ausgeschaltet.
Bereich AA83* R/W 1 Auflösung 10 ms. Bereich 100 ms (0x0A) bis 2.55 Sekunden (0xFF). Standard 1 Sekunde (0x64).
Signalverarbeitung

Die Konfiguration wird genutzt, um festzustellen, welche Daten (Achse) aktiviert werden sollen, wenn der Wake-on-Motion aktiviert werden soll und der Bereich des Beschleunigungsmessers (2, 4, 8 und 16 G).

Bits Usage
0 Gyroskop z axis enable
1 Gyroskop y axis enable
2 Gyroskop x axis enable
3 Beschleunigungsmesser z-Achse an
4 Beschleunigungsmesser y-Achse an
5 Beschleunigungsmesser x-Achse an
6 Magnetometer an (Alle Achsen)
7 Wake-On-Motion an
8:9 Beschleunigungsmesser Bereich (0=2G, 1=4G, 2=8G, 3=16G)
10:15 Wird nicht benutzt

Die Wake-On-Motion (WOM)-Funktion ermöglicht es, dass der MPU nur mit aktiviertem Beschleunigungsmesser arbeitet, unterbricht den SensorTag CC2650 jedoch, wenn eine Bewegung erkannt wird. Nachdem ein Wackeln festgestellt wurde, stellt der SensorTag Bewegungsdaten für 10 Sekunden bereit, bevor er in den MPU-WOM-Zustand mit niedriger Leistung eintritt.

Rohsignale des Sensors

Die Rohdaten bestehen aus neun 16-Bit-Werten. Die Daten werden in folgender Reihenfolge ausgegeben: Gyroskop, Beschleunigungsmesser und Magnetometer.

Die Daten vom Gyroskop befinden sich an den Stellen 0-5 im Array. Jede Achse, X, Y, und Z bestehen aus jeweils zwei Bytes, die als ganze Zahl codiert sind.

float sensorMpu9250GyroConvert(int16_t data)
{
  //-- calculate rotation, unit deg/s, range -250, +250
  return (data * 1.0) / (65536 / 500);
}

Referenzfehler: Ungültige Verwendung von <ref>: Der Parameter „name“ ist ungültig oder zu lang.

Beschleunigungsmesser-Rohdaten bilden die Bytes 6-11 der Daten des Bewegungsdienstes in der Reihenfolge X-, Y-, Z-Achse. Daten von jeder Achse bestehen aus zwei Bytes, die als eine ganze Zahl mit Vorzeichen codiert sind.

// Beschleunigungsmesser Bereiche
#define ACC_RANGE_2G      0
#define ACC_RANGE_4G      1
#define ACC_RANGE_8G      2
#define ACC_RANGE_16G     3

float sensorMpu9250AccConvert(int16_t rawData)
{
  float v;

  switch (accRange)
  {
  case ACC_RANGE_2G:
    //-- calculate acceleration, unit G, range -2, +2
    v = (rawData * 1.0) / (32768/2);
    break;

  case ACC_RANGE_4G:
    //-- calculate acceleration, unit G, range -4, +4
    v = (rawData * 1.0) / (32768/4);
    break;

  case ACC_RANGE_8G:
    //-- calculate acceleration, unit G, range -8, +8
    v = (rawData * 1.0) / (32768/8);
    break;

  case ACC_RANGE_16G:
    //-- calculate acceleration, unit G, range -16, +16
    v = (rawData * 1.0) / (32768/16);
    break;
  }

  return v;
}

Referenzfehler: Ungültige Verwendung von <ref>: Der Parameter „name“ ist ungültig oder zu lang.

Magnetometer-Rohdaten bilden Bytes 12-17 der Daten vom Bewegungsdienst auch in der Reihenfolge X-, Y- und Z-Achse. Daten von jeder Achse bestehen aus zwei Bytes, die als eine ganze Zahl mit Vorzeichen codiert sind. Die Maßeinheit ist uT (Mikro-Tesla).

float sensorMpu9250MagConvert(int16_t data)
{
  //-- calculate magnetism, unit uT, range +-4900
  return 1.0 * data;
}

[2]


Feuchtigkeitssensor

Der auf dem SensorTag verwendete Feuchtigkeitssensor ist von Texas Instruments. Der Feuchtesensor wird mit folgenden Quellcodedateien implementiert:
Anwendung: sensortag_hum.c
Treiber: SensorHdc1000.c
Profil: humidityservice.c


Feuchtigkeitssensor
Type UUID Access Size (bytes) Beschreibung
Daten AA21* R/N 4 Temperatur [0:7], Temperatur [8:15], Feuchtigkeit [0:7], Feuchtigkeit [8:15]
Benachrichtigung 2902 R/W 2 0x0001, um Benachrichtigungen zu aktivieren, 0x0000, um zu deaktivieren.
Konfiguration AA22* R/W 1 0x01, um die Datenerfassung zu aktivieren, 0x00, um sie zu deaktivieren.
Bereich AA23* R/W 1 Auflösung 10 ms. Bereich 100 ms (0x0A) bis 2.55 Sekunden (0xFF). Standard 1 Sekunde (0x64).
Signalverarbeitung

Wenn ein Freigabebefehl (0x01) in die Eigenschaft Konfiguration geschrieben wird, beginnt der Sensor jede Sekunde Messungen durchzuführen und die Daten werden in der Eigenschaft Daten gespeichert. Wenn der Deaktivierungsbefehl (0x00) ausgegeben wird, wird der Messzyklus des Sensors gestoppt, die Daten werden gelöscht und nicht mehr gemeldet.

Rohsignale des Sensors

Die Daten vom Feuchtesensor bestehen aus zwei 16-Bit-Ganzzahlen ohne Vorzeichen: die Temperatur in den Bytes 0 und 1 und der Druck in den Bytes 2 und 3. Die Umrechnung auf Temperatur und relative Feuchte erfolgt wie unten gezeigt. Die Temperatureinheit ist Grad Celsius (° C), die Luftfeuchtigkeit ist relative Luftfeuchtigkeit (% RH).

void sensorHdc1000Convert(uint16_t rawTemp, uint16_t rawHum,
                        float *temp, float *hum)
{
  //-- calculate temperature [°C]
  *temp = ((double)(int16_t)rawTemp / 65536)*165 - 40;

  //-- calculate relative humidity [%RH]
  rawHum &= ~0x0003; // entferne status bits
  *hum = ((double)rawHum / 65536)*100;
}

[2]


Luftdrucksensor

Der am SensorTag verwendete Drucksensor ist von Bosch Sensortec. Der Luftdrucksensor ist mit den folgenden Quellcodedateien implementiert:
Anwendung: sensortag_bar.c
Treiber: SensorBmp280.c
Profil: barometerservice.c

Luftdrucksensor
Type UUID Access Size (bytes) Description
Data AA41* R/N 6 Temperatur [0:7], Temperatur [8:15], Temperatur [16:23], Druck [0:7], Druck [8:15], Druck [16:23]
Benachrichtigung 2902 R/W 2 0x0001, um Benachrichtigungen zu aktivieren, 0x0000, um zu deaktivieren.
Konfiguration AA42* R/W 1 0x01 zum Aktivieren der Datenerfassung, 0x00 zum Deaktivieren.
Bereich AA44* R/W 1 Auflösung 10 ms. Bereich 100 ms (0x0A) bis 2.55 Sekunden (0xFF). Standard 1 Sekunde (0x64).
Signalverarbeitung

Wenn ein Freigabebefehl (0x01) in die Eigenschaft Konfiguration geschrieben wird, beginnt der Sensor jede Sekunde Messungen durchzuführen und die Daten werden in der Eigenschaft Daten gespeichert. Wenn der Deaktivierungsbefehl (0x00) ausgegeben wird, wird der Messzyklus des Sensors gestoppt, die Daten werden gelöscht und nicht mehr gemeldet.

Rohsignale des Sensors

Die Daten vom Drucksensor bestehen aus zwei vorzeichenlosen 24-Bit-Ganzzahlen: die Temperatur in Bytes 0-2, der Druck in den Bytes 3-5. Die Umwandlungs- und Einstellungsberechnungen werden in der Firmware durchgeführt, so dass die Anwendung nur die eingehenden Werte durch 100 teilen muss. Die Umrechnung auf Temperatur und Druck erfolgt wie unten gezeigt. Die Temperatureinheit ist Grad Celsius, der Druck in Hektopascal (hPa).

float sensorBmp280Convert(uint32_t rawValue)
{
  return rawValue / 100.0f;
}

[2]

Optischer Sensor

Der auf dem SensorTag verwendete optische Sensor ist von Texas Instruments. Der optische Sensor ist mit den folgenden Quellcodedateien implementiert:
Anwendung: sensortag_opt.c
Treiber: SensorOpt3001.c
Profil: opticservice.c

Optischer Sensor
Type UUID Access Size (bytes) Beschreibung
Daten AA71* R/N 2 LightLSB:LightMSB
Benachrichtigung 2902 R/W 2 0x0001, zum Aktivieren von Benachrichtigungen, 0x0000 zum Deaktivieren
Konfiguration AA72* R/W 1 0x01, um die Datenerfassung zu aktivieren, 0x00, um sie zu deaktivieren.
Bereich AA73* R/W 1 Auflösung 10 ms. Bereich 100 ms (0x0A) bis 2.55 Sekunden (0xFF). Standard ist 800 Millisekunden (0x50).
Signalverarbeitung

Wenn ein Freigabebefehl (0x01) 'Konfiguration' 'geschrieben wird, beginnt der Sensor alle 800 Millisekunden Messungen durchzuführen und die Daten werden in der Eigenschaft Daten gespeichert. Wenn der Deaktivierungsbefehl (0x00) ausgegeben wird, wird der Messzyklus des Sensors gestoppt, die Daten werden gelöscht und nicht mehr gemeldet.

Rohsignale des Sensors

Die Daten vom optischen Sensor bestehen aus einer einzelnen 16-Bit-Ganzzahl ohne Vorzeichen. Die Umwandlung in Lichtintensität (LUX) wird unten gezeigt.

float sensorOpt3001Convert(uint16_t rawData)
{
    uint16_t e, m;

    m = rawData & 0x0FFF;
    e = (rawData & 0xF000) >> 12;

    /** e on 4 bits stored in a 16 bit unsigned => it can store 2 << (e - 1) with e < 16 */
    e = (e == 0) ? 1 : 2 << (e - 1);

    return m * (0.01 * e);
}

[2]


IO-Service

Der IO-Service ist eine Schnittstelle zu digitalen IO-Leitungen am SensorTag und zu den Power-On-Self-Testergebnissen. Die IOs, die von diesem Dienst gesteuert werden können, sind die zwei LEDs und der Buzzer. Das Einschalt-Selbsttest-Ergebnis ist eine Bitmap von 7 Bits, wobei jedes Bit den Bestanden/ Fehlgeschlagen-Status eines Sensors darstellt. Der IO-Service wird mit den folgenden Quellcodedateien implementiert:
Anwendung: sensortag_io.c
Treiber: PIN TI Treiber
Profil: ioservice.c


IO Service
Type UUID Access Size (bytes) Description
Data AA65 * R/W 1 Abhängig von dem im Konfigurationsmerkmal eingestellten Modus.
Konfiguration AA66 * R/W 1 0: Lokaler Modus, 1: Remote-Modus, 2: Testmodus
Signalverarbeitung

Dieser Dienst wird in drei Modi betrieben, die durch die Einstellung der Eigenschaft Konfiguration definiert werden.

IO Service
Mode Name Description
0 Lokal Im lokalen Modus steuert die Anwendung selbst die Verwendung der LEDs. Standardmäßig blinkt die grüne LED bei der Werbung und wird auch beim Start verwendet, um einen erfolgreichen Selbsttest anzuzeigen.

Die rote LED wird verwendet, um einen Fehler beim Selbsttest beim Einschalten anzuzeigen. Im normalen Betrieb wird sie nicht verwendet. Der Buzzer wird von keiner eingebauten Funktionalität der Firmware verwendet.

1 Fernbedienung Im Remote-Modus überschreibt der BLE-Host die IO-Nutzung und kann die LEDs und den Buzzer direkt aktivieren. - 2 Prüfung Im Testmodus können die Werte des Power-On-Self-Tests gelesen werden.

Das Lesen des Merkmals liefert immer den Wert, der zuvor darauf geschrieben wurde. Nach dem erstmaligen Anschluss enthält es das Selbsttest-Ergebnis.

Signalvorverarbeitung

Da die SensorTag-Referenzplattform die Rohdaten, nicht kalibrierten Sensorausgaben an den IoT-aktivierten BLE-Client (z. B. Smart Device Application) liefert, muss die notwendige Kalibrierung für die beabsichtigte Betriebsumgebung implementiert und durchgeführt werden. Die Implementierung erfordert die Zusammenarbeit mit den spezifischen Sensor-Lieferanten. Um beispielsweise eine Präzisionsbewegungssensorlösung, z. B. einen MPU9250-Schwingungserfassungsalgorithmus, zu implementieren, muss eine Verbindung mit der InvenSense-Entwicklerecke hergestellt werden.

Analog-Digital-Umsetzer

Gründe für ein ADU/Alternativen

Bussystem

Der SensorTag verwendet I2C als Schnittstelle für die Sensoren. Der MPU9250 ist ein eigener I2C-Bus zugeordnet, der auch separat mit Strom versorgt wird. Der MPU9250 besteht aus zwei separaten Geräten im selben Paket: Das Magnetometer hat eine eigene I2C-Adresse. Der Bewegungssensor verfügt über eine WOM-Funktion (Wake-On-Motion), die optional verwendet werden kann, sodass Bewegungsdaten nur gemeldet werden, wenn das Gerät berührt wird. Wenn WOM aktiviert ist, meldet der SensorTag Bewegungsdaten für 10 Sekunden, nachdem das Gerät eine Bewegung erkannt hat.


Filteranwendung

Digitale Signalverarbeitung

Auflösung,Empfindlichkeit und Messunsicherheit

IR Temperatur Sensor

Auflösung: 10 ms.
Bereich 300 ms bis 2.55 Sekunden.
Standard 1 Sekunde (0x64)

Bewegungssensor

Auflösung: 10 ms.
Bereich 100 ms bis 2.55 Sekunden.
Standard 1 Sekunde.

Luftdrucksensor

Auflösung 10 ms.
Bereich 100 ms bis 2.55 Sekunden.
Standard 1 Sekunde.

Feuchtigkeitssensor

Auflösung 10 ms.
Bereich 100 ms bis 2.55 Sekunden.
Standard 1 Sekunde.

Bewegungssensor

Auflösung 10 ms.
Bereich 100 ms bis 2.55 Sekunden.
Standard 1 Sekunde.

Darstellung der Ergebnisse

Zusammenfassung

Video

Ablage

Literatur

  1. 1,0 1,1 Simplelink SensorTag. Abgerufen am 03. Juli 2018.
  2. 2,0 2,1 2,2 2,3 2,4 "SensorTag User Guide". Abgerufen am 03. Juli 2018. Referenzfehler: Ungültiges <ref>-Tag. Der Name „SensorTag User Guide“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert. Referenzfehler: Ungültiges <ref>-Tag. Der Name „SensorTag User Guide“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert. Referenzfehler: Ungültiges <ref>-Tag. Der Name „SensorTag User Guide“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert. Referenzfehler: Ungültiges <ref>-Tag. Der Name „SensorTag User Guide“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert.
  3. MPU9250 . Abgerufen am 03. Juli 2018.

→ zurück zum Hauptartikel: Signalverarbeitende Systeme