There are numerous tiny embedded systems that can gather data from sensors, analyze it, and then either act appropriately or communicate the data to another system for processing.
The possibility that components you used today may no longer be in production tomorrow or that system needs may change and you may need to select a different sensor, later on, is one of the many difficulties in designing embedded systems.
New driver development is comparatively simple, but since sensors rarely utilize the same measurement units, integrating new drivers into existing systems is error-prone and time-consuming.
The same sensor types output values that are comparable with every other similar sensor by consolidating all data into a single sensor event t "type" and choosing distinct, standard SI units for each sensor family. This makes it possible to change sensor types with hardly any negative effects on the rest of the system, which can assist reduce some of the risks and issues associated with sensor availability and code reuse.
Due to the fact that there is only one well-known form of sensor that can be logged or sent over the wire or air, the unified sensor abstraction layer is also helpful for data transmission.
Unified Sensor Drivers
The following drivers are based on the Adafruit Unified Sensor Driver:
Accelerometers
Adafruit_ADXL345
Adafruit_LSM303DLHC
Adafruit_MMA8451_Library
Gyroscope
Adafruit_L3GD20_U
Light
Adafruit_TSL2561
Adafruit_TSL2591_Library
Magnetometers
Adafruit_LSM303DLHC
Adafruit_HMC5883_Unified
Barometric Pressure
Adafruit_BMP085_Unified
Adafruit_BMP183_Unified_Library
Humidity & Temperature
DHT-sensor-library
Humidity, Temperature, & Barometric Pressure
Adafruit_BME280_Library
Orientation
Adafruit_BNO055
All-in-one device
Adafruit_LSM9DS0 (accelerometer, gyroscope, magnetometer)
Adafruit_LSM9DS1 (accelerometer, gyroscope, magnetometer)
How Does it Work?
The Adafruit Sensor base class is implemented by all drivers that support the Adafruit unified sensor abstraction layer. Adafruit Sensor.h defines two primary typedefs and one enum that are employed to "abstract" away the specifics and values of the sensor: