Adafruit Unified Sensor Library

By | 11. Februar 2017

Um die vielen verschiedenen Sensoren verwenden zu können, müssen die Daten die die einzelnen Zellen leifern und in den Bausteinen als Roh-Daten gespeichert sind ausgelesen und aufbereitet werden. Dazu benötigt es dedizierte Treiber-Programme die diese Aufgabe übernehmen.

Um dies nicht für jeden neuen Sensor immer wieder neu entwickeln zu müssen, wurde von den Adafriut Entwicklern ein sogennanter “Unified Sensor Driver”entwicklet worden. Der Aufbau und die Funktion dieses Treibers soll im folgenden etwas näher betrachtet werden.

One Type to rule it all

Ziel der Entwickler war es, eine möglichst universell einsetzbare Bibliothek zu schaffen, die für möglichst viele verschiedene Sensor-Boards eingesetzt werden kann.

Für den Anwender vereinfacht diese Bibliothek die Nutzung und standardisiert gleichzeitig die Entwicklung verschiedener Sensor-Applikationen. Dazu gehört auch die Verwendung einheitlicher SI-Einheiten für die Sensor-Daten.

Funktionen der Klasse Adafruit_Sensor

Die entwickelte Klasse “Adafruit_Sensor” stellt zwei Methoden bzw. Funktionen zur Verfügung:

  • sensors_event_t – This type is used to encapsulate a specific sensor reading, called an ‘event’, and contains a data from the sensor from a specific moment in time.
  • sensor_t – This type is used to describe some basic details about this specific sensor, including the sensor name, the resolution and range of the sensor (in the SI units described above), as well as a unique ID that you can assign to this sensor

Um ein im Programmcode erzeugtes Sensor-Objekt mit Daten zu füllen, genügt es die Funktion void getEvent(sensors_event_t*)aufzurufen. Damit werden die Daten gelesen und automatisch in die oben beschrieben SI-Einheiten übertragen. Das folgende Beispiel eines Licht-Sensors soll diesen Mechanismus verdeutlichen:

Die zweite Funktion der Klasse liefert spezifische Informationen über den Sensor. Jeder Sensor bekommt eine eigenständige ID. Damit ist es möglich, auch zwischen mehrern gleichen Sensoren zu unterscheiden.