Skip to content

naranyala/awesome-hardware-sensors

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Awesome Hardware Sensors

A curated list of hardware sensor resources: tools, utilities, libraries, frameworks, reference data, and development platforms.

Resources are organized by function. Entries include objective specifications (interface, accuracy, range, protocol) where available. Open-source projects indicate license type.

Contents


Hardware Monitoring

Linux

Tool Metrics Interface Notes
lm-sensors Temperature, voltage, fan speed hwmon sysfs, I²C Uses kernel hwmon subsystem
s-tui CPU temperature, frequency, power, utilization Terminal (ncurses), cpuidle, rapl Stress testing with real-time graphs
Psensor Temperature, fan speed lm-sensors, XNVCtrl, NVML GTK-based graphical frontend for lm-sensors
ipmitool BMC/IPMI sensor data IPMI over LAN/USB Server management; reads SDR repository
nvme-cli NVMe temperature, health, SMART NVMe IOCTL Provides nvme smart-log for drive sensors
smartmontools Drive SMART attributes ATA/NVMe ioctl smartctl for HDD/SSD health monitoring
PowerTOP Power consumption per device sysfs, tracepoints Intel-developed; diagnoses power issues
turbostat CPU frequency, C-states, power, temperature MSR, cpuid Part of linux-tools; reads MSRs directly
thermald Thermal zones, cooling devices sysfs thermal/ Intel thermal management daemon; prevents throttling
radeontop GPU utilization, VRAM, bus /sys/class/drm/ AMD GPU monitoring
intel_gpu_top Intel GPU engines, frequency, power perf, sysfs Part of igt-gpu-tools
nvidia-smi GPU temp, utilization, memory, power NVML NVIDIA proprietary; part of driver package
Glances System-wide sensors psutil, lm-sensors, IPMI Extensible via plugins; REST API available
Netdata System metrics, sensors, applications /proc, /sys, plugins Real-time web dashboard; 1-second granularity
hardinfo Hardware inventory /proc, DMI, sysfs System profiler with sensor section
i7z CPU frequency, C-states, temperature MSR, cpuid Intel Core i3/i5/i7/i9 specific
zenmonitor AMD CPU voltage, frequency, power k10temp, zenpower AMD Ryzen specific
zenpower AMD CPU temperature, power, SVI2 MSR Kernel module for Ryzen SVI2 power data
jetson_stats Jetson CPU/GPU temp, clock, power sysfs, I²C NVIDIA Jetson platform monitoring
raspi-config / vcgencmd SoC temperature, voltage, clock Broadcom mailbox Raspberry Pi firmware interface

Windows

Tool Metrics Architecture Notes
HWiNFO Comprehensive: temp, voltage, power, current, clock Ring0 kernel driver Reads from SMBus, EC, MSR, ACPI; supports 300+ motherboards
Libre Hardware Monitor Temp, voltage, fan, load, clock WinRing0, Ring0 Open-source fork of Open Hardware Monitor; C#
Open Hardware Monitor Temp, voltage, fan, load, clock WinRing0 Original open-source project; less actively maintained
HWMonitor Temp, voltage, fan, clock CPUID driver Proprietary; from CPUID (makers of CPU-Z)
Core Temp CPU core temperature, load, power MSR, driver Per-core digital thermal sensor readings
RealTemp CPU temperature (Intel) MSR Reads Intel DTS/TjMax; last updated 2014
GPU-Z GPU temp, clock, memory, power, fan vendor SDKs, NVML BIOS info, sensor logging to file
MSI Afterburner GPU/CPU temp, utilization, FPS, clock RTSS overlay Includes RivaTuner Statistics Server for OSD
SpeedFan Temp, voltage, fan, S.M.A.R.T. Custom driver Can control fan speeds via PWM; last updated 2017
Argus Monitor Temp, fan, S.M.A.R.T. Driver Fan control with temperature-based curves; proprietary
AIDA64 Full system sensors Driver Commercial; includes stability test
Speccy Hardware inventory, temperatures WMI, driver From Piriform; read-only reporting
OpenHardwareMonitorLib Sensor data via .NET API Library Can be embedded in other applications

Cross-Platform

Tool Platforms Language Notes
btop Linux, macOS, Windows C++ Terminal UI; uses /sys, NtQuerySystemInformation, or /proc
bottom Linux, macOS, Windows Rust Terminal UI; sensor support via sysinfo crate
rvictl / PowerMetrics macOS Apple sudo powermetrics reads SMC sensor data
HardwareMonitoring Linux (x86/ARM64), Windows Python Uses Libre Hardware Monitor, psutil, gputil, NVIDIA SMI
prometheus-node-exporter Linux, macOS, Windows Go hwmon collector, IPMI, thermal zones; exports to Prometheus

Sensor Libraries & Drivers

C / C++ (Manufacturer Official)

Library Sensor(s) Interface Repository
Bosch Sensortec BME280 Temperature, humidity, pressure I²C, SPI github.com/boschsensortec/BME280_SensorAPI
Bosch Sensortec BME680 Temperature, humidity, pressure, gas resistance I²C, SPI github.com/boschsensortec/BME680_SensorAPI
Bosch Sensortec BMP388 Barometric pressure I²C, SPI github.com/boschsensortec/BMP3-SensorAPI
Bosch Sensortec BNO055 9-DoF absolute orientation (sensor fusion on-chip) I²C, UART github.com/boschsensortec/BNO055_SensorAPI
Bosch Sensortec BMI323 6-DoF IMU (accelerometer + gyroscope) I²C, SPI github.com/boschsensortec/BMI323_SensorAPI
Sensirion SCD4x CO₂, temperature, humidity (NDIR) I²C github.com/Sensirion/arduino-i2c-scd4x
Sensirion SPS30 Particulate matter PM1.0/2.5/4/10 UART, I²C github.com/Sensirion/embedded-sps
Sensirion SHT4x Temperature, humidity I²C github.com/Sensirion/i2c-sht4x-arduino
STMicroelectronics LPS22HB Barometric pressure (260–1260 hPa) I²C, SPI github.com/STMicroelectronics/lps22hb-pid
STMicroelectronics LIS2DH 3-axis accelerometer I²C, SPI github.com/STMicroelectronics/lis2dh-pid
STMicroelectronics VL53L1X Time-of-Flight ranging (up to 4m) I²C github.com/stm32duino/VL53L1X
TE Connectivity MS5837 Pressure (for water depth) I²C github.com/bluerobotics/BlueRobotics_MS5837_Library
ScioSense ENS160 TVOC, eCO₂ I²C github.com/sciosense/ENS160_driver
ams OSRAM AS7341 11-channel visible light spectrum I²C github.com/ams-osram/AS7341
Melexis MLX90640 32×24 IR thermal array I²C github.com/melexis/mlx90640-library

Arduino

Library Sensor(s) Interface Repository
Adafruit Unified Sensor Base class for all Adafruit sensors github.com/adafruit/Adafruit_Sensor
DHT sensor library DHT11, DHT22, AM2302 Single-wire github.com/adafruit/DHT-sensor-library
OneWire DS18B20, DS18S20, DS2438 OneWire github.com/PaulStoffregen/OneWire
DallasTemperature DS18B20, DS18S20 (via OneWire) OneWire github.com/milesburton/Arduino-Temperature-Control-Library
Adafruit BME280 BME280 I²C, SPI github.com/adafruit/Adafruit_BME280_Library
Adafruit BMP280 BMP280, BMP180 I²C, SPI github.com/adafruit/Adafruit_BMP280_Library
Adafruit BNO055 BNO055 I²C, UART github.com/adafruit/Adafruit_BNO055
Adafruit MPU6050 MPU6050 I²C github.com/adafruit/Adafruit_MPU6050
MPU6050 (jrowberg) MPU6050, MPU9150 I²C github.com/jrowberg/i2cdevlib
RTClib DS1307, DS3231, PCF8523, PCF8563 I²C github.com/adafruit/RTClib
TinyGPS++ NMEA GPS modules UART github.com/mikalhart/TinyGPSPlus
Adafruit SSD1306 OLED displays (for sensor readout) I²C, SPI github.com/adafruit/Adafruit_SSD1306
BH1750 BH1750 ambient light I²C github.com/claws/BH1750
HX711 Arduino HX711 load cell ADC Digital (clock+data) github.com/bogde/HX711
Ultrasonic HC-SR04, HC-SR05 Digital trigger/echo github.com/JRodrigoTech/Ultrasonic-HC-SR04
LiquidCrystal_I2C LCD via I²C backpack I²C github.com/johnrickman/LiquidCrystal_I2C
SensorManager Multi-sensor scheduling github.com/SensorManager/sensor-manager
RunningAverage Running average for smoothing github.com/RobTillaart/RunningAverage
ClosedCube SHT30 SHT30 sensor library I²C github.com/closedcube/ClosedCube_SHT30_Arduino
ClosedCube HDC1000 HDC1000 temperature/humidity I²C github.com/closedcube/ClosedCube_HDC1000_Arduino
ClosedCube TMP112 TMP112 temperature sensor I²C github.com/closedcube/ClosedCube_TMP112_Arduino
ClosedCube TSYS01 TSYS01 temperature sensor I²C github.com/closedcube/ClosedCube_TSYS01_Arduino
ClosedCube OPT3001 OPT3001 ambient light sensor I²C github.com/closedcube/ClosedCube_OPT3001_Arduino
SparkFun Qwiic Scale (NAU7802) NAU7802 24-bit load cell ADC I²C github.com/sparkfun/SparkFun_Qwiic_Scale_Library_NAU7802
SparkFun LSM6DSO LSM6DSO IMU I²C, SPI github.com/sparkfun/SparkFun_LSM6DSO_Arduino_Library
SparkFun SGP40 SGP40 VOC index gas sensor I²C github.com/sparkfun/SparkFun_SGP40_Arduino_Library
SparkFun AS7341 AS7341 11-channel spectral sensor I²C github.com/sparkfun/SparkFun_AS7341_Arduino_Library
Seeed SHT35 SHT35 high-precision humidity I²C github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor
Seeed SGP30 SGP30 gas sensor I²C github.com/Seeed-Studio/Grove_SGP30_Air_Quality_Sensor
Seeed PMSA003I PMSA003I PM2.5 sensor I²C, UART github.com/Seeed-Studio/Seeed_Arduino_PM2_5
DFRobot SEN0193 Capacitive Soil Moisture Capacitive soil moisture Analog github.com/DFRobot/DFRobot_CAP_MOISTURE
Bosch BSEC2 Library BME680/BME688 IAQ processing I²C, SPI github.com/boschsensortec/Bosch-BSEC2-Library
AirGradient Air Quality PMS5003, SCD40, SGP30, BME680 I²C, UART github.com/airgradienthq/arduino
EnviroDIY ModularSensors Environmental sensor interface Various github.com/EnviroDIY/ModularSensors
SensorHub I²C sensor communication hub I²C github.com/styropyr0/SensorHub

ESP-IDF (ESP32)

Library Description Repository
esp-idf-lib 100+ sensor and peripheral drivers for ESP-IDF and ESP8266 RTOS SDK Supports BME280, BMP280, DHT, DS18B20, MPU6050, HMC5883L, and more
esp32-camera ESP32 camera driver (OV2640, OV3660, OV5640, OV7670, OV7725) DVP interface; JPEG hardware encoder support
ESP-IDF BME680 BME680 driver for ESP-IDF I²C, SPI
ESP-IDF SHT3x SHT30/SHT31/SHT35 driver for ESP-IDF I²C
ESP-IDF VL53L0X VL53L0X ToF driver for ESP-IDF I²C
ESP-IDF ADC Built-in ADC1/ADC2 with calibration 12-bit SAR ADC
ESP-IDF TWAI Two-Wire Automotive Interface (CAN bus) ESP-IDF CAN driver

Raspberry Pi / Linux SBC

Library Language Description Repository
gpiozero Python High-level GPIO interface; built-in classes for DHT22, MCP3008, motion sensor, distance sensor github.com/gpiozero/gpiozero
pigpio C, Python GPIO library with hardware PWM, waveforms, I²C, SPI, serial Daemon-based; supports multiple clients
wiringPi C Arduino-like Wiring API for Raspberry Pi Deprecated by author; alternatives exist
RPi.GPIO Python Basic GPIO access for Raspberry Pi Low-level; basis for other libraries
smbus2 Python SMBus/I²C user-space library Drop-in replacement for smbus
spidev Python SPI user-space library via /dev/spidev Uses Python C extension
Adafruit CircuitPython (Blinka) Python CircuitPython compatibility layer on Linux SBCs Enables 300+ CircuitPython drivers on Pi
pigpiod GPIO daemon providing socket interface Supports I²C, SPI, serial, PWM

Python

Library Purpose Repository
pyserial Serial port (UART) communication github.com/pyserial/pyserial
smbus2 I²C/SMBus access via /dev/i2c-* github.com/kplindegaard/smbus2
spidev SPI access via /dev/spidev github.com/doceme/py-spidev
Adafruit CircuitPython Libraries 300+ sensor drivers (BME280, MPU6050, etc.) github.com/adafruit/Adafruit_CircuitPython_Bundle
python-evdev Read input devices (includes some sensor inputs) github.com/gvalkov/python-evdev
psutil System/hardware sensor info (CPU temp, battery, fans) github.com/giampaolo/psutil
OpenBCI_Python EEG/EMG/EKG data from OpenBCI boards github.com/OpenBCI/OpenBCI_Python
PyVISA Control test instruments (multimeters, scopes) via GPIB/USB github.com/pyvisa/pyvisa

ROS / Robotics

Package Sensor Type Repository
robot_localization IMU, GPS, odometry fusion github.com/cra-ros-pkg/robot_localization
imu_tools IMU visualization and filtering github.com/ccny-ros-pkg/imu_tools
urg_node Hokuyo URG/UTM LIDAR github.com/ros-drivers/urg_node
velodyne Velodyne LIDAR github.com/ros-drivers/velodyne
camera_info_manager Camera calibration data github.com/ros-perception/image_common
DepthAI OAK AI cameras (stereo depth + NN) github.com/luxonis/depthai-core
realsense-ros Intel RealSense depth cameras github.com/IntelRealSense/realsense-ros
xsens_mti_ros_node Xsens MTi IMU/AHRS github.com/xsens/xsens_mti_ros_node
nmea_navsat_driver GPS NMEA parsing github.com/ros-drivers/nmea_navsat_driver
pointcloud_to_laserscan 3D to 2D conversion github.com/ros-perception/pointcloud_to_laserscan
laser_filters LIDAR filter processing github.com/ros-perception/laser_filters
imu_complementary_filter Complementary filter for IMU github.com/ccny-ros-pkg/imu_complementary_filter
sensor_filters Generic sensor filter chain github.com/ros-perception/sensor_filters
diagnostic_aggregator Hardware diagnostics aggregation github.com/ros/diagnostics
phidgets Phidgets sensor drivers github.com/ros-drivers/phidgets_drivers
wiimote Nintendo Wiimote sensors github.com/ros-drivers/wiimote

Communication Protocols

Protocol Specifications

Protocol Type Max Speed Max Devices Bus Length Notes
I²C Synchronous serial, master-slave 3.4 MHz (Hs-mode) 112 (7-bit address) ~1 m; up to 30 m with bus extenders Two-wire (SDA, SCL); pull-up resistors on each line
SPI Synchronous serial, full-duplex master-slave 50+ MHz Limited by CS pins ~1 m (board-level) Four-wire minimum (MOSI, MISO, SCK, CS); no addressing
UART Asynchronous serial, point-to-point 1–4 Mbps (typical) 2 (TX↔RX) ~15 m (RS-232); 1200 m (RS-485) No clock; requires agreed baud rate
OneWire Asynchronous, half-duplex 16.3 kbps ~75 per bus ~300 m; longer with extenders Single data line + ground; parasitic power possible
CAN bus Differential serial, multi-master 1 Mbps (CAN 2.0) 110+ (practical limit) 40 m at 1 Mbps; 6 km at 50 kbps ISO 11898; fault-tolerant
Modbus RTU Serial (RS-485), master-slave 19.2 kbps–115.2 kbps 247 nodes 1200 m (RS-485) Application layer protocol over serial
Modbus TCP Ethernet, client-server 100 Mbps+ Limited by network Ethernet limits Modbus ADU over TCP port 502
PWM Digital signal, duty-cycle encoded 1 per pin Short (board-level) Used for distance (HC-SR04 echo), servo position, fan speed
SDI-12 Asynchronous serial 1200 bps 10+ per bus 60 m Single data line
4–20 mA current loop Analog current 1 per loop 1000+ m Noise-immune; self-powered

Bus Tools & Utilities

Tool Protocol Platform Function
i2c-tools I²C Linux i2cdetect, i2cget, i2cset, i2cdump — user-space I²C bus operations
spi-tools SPI Linux spi-config, spi-pipe — configure and transfer data via /dev/spidev
can-utils CAN Linux candump, cansend, canplayer, candecode — SocketCAN user-space tools
python-can CAN Cross-platform Python CAN bus library (SocketCAN, PCAN, IXXAT, Vector backends)
libmodbus Modbus RTU/TCP C library Modbus client/server library; supports RTU, ASCII, TCP modes
pymodbus Modbus RTU/TCP Python Full Modbus protocol stack; client and server implementations
OWFS OneWire Linux Filesystem interface for OneWire devices; exposes sensors as /sys entries
digitemp OneWire Linux, Windows Command-line tool for DS18B20/DS18S20 temperature reading
modpoll Modbus RTU/TCP Cross-platform Command-line Modbus master simulator
QModBus Modbus RTU/TCP Windows, Linux Qt-based Modbus master test application
socketcan-utils CAN Linux Kernel-level CAN networking; ip link set can0 up type can bitrate 500000
cantact CAN Cross-platform Open-source USB-to-CAN adapter with Python/C++ API
SavvyCAN CAN Cross-platform CAN bus analysis and reverse engineering tool
QModMaster Modbus RTU/TCP Linux, Windows Qt-based Modbus master application
RS-485 HAT (Raspberry Pi) RS-485/CAN Raspberry Pi Hardware interface for industrial sensor buses

Protocol Analyzers

Tool Type Price Protocols Notes
Saleae Logic USB logic analyzer Commercial ($109–$599) I²C, SPI, UART, CAN, SWD, JTAG Protocol analyzers built into software; 24 MHz sample rate (Logic 8)
sigrok/PulseView Open-source logic analyzer suite Free 300+ protocol decoders including I²C, SPI, UART, CAN Supports 60+ hardware devices; cross-platform
DSView Open-source logic analyzer Free (with DSLogic hardware) I²C, SPI, UART, CAN, 1-Wire Qt-based; fork of sigrok
Kingst VIS USB logic analyzer software Free (with Kingst hardware) I²C, SPI, UART, CAN Chinese manufacturer; affordable hardware ($10–$50)
Total Phase Beagle I²C/SPI protocol analyzer Commercial ($599–$1899) I²C, SPI, MDIO, I3C Bus monitoring with real-time decode; non-intrusive
Total Phase Aardvark SPI/I²C host adapter Commercial ($399) I²C, SPI Program I²C/SPI devices from PC; not a passive analyzer
24 MHz USB Logic Analyzer Clone of Saleae Logic 8 ~$5–$15 I²C, SPI, UART (via sigrok); uses Cypress FX2 chip

Sensor Types

Temperature & Humidity

Sensor Range Accuracy Interface Notes
DS18B20 −55°C to +125°C ±0.5°C (−10°C to +85°C) OneWire 12-bit resolution; waterproof versions available; unique 64-bit ROM
DHT22 / AM2302 −40°C to +80°C, 0–100% RH ±0.5°C, ±2% RH Single-wire 14-bit resolution; slow sample rate (0.5 Hz)
BME280 −40°C to +85°C, 0–100% RH, 300–1100 hPa ±1°C, ±3% RH, ±1 hPa I²C, SPI Temperature, humidity, pressure in one package
SHT31 −40°C to +125°C, 0–100% RH ±0.3°C, ±2% RH I²C Sensirion's accuracy class; 100 ms measurement time
SHT40 −40°C to +125°C, 0–100% RH ±0.2°C, ±1% RH I²C Pin-compatible with SHT31; uses different command set
SHT85 −40°C to +125°C, 0–100% RH ±0.1°C, ±1% RH I²C Reflow solderable
AHT20/AHT21 −40°C to +85°C, 0–100% RH ±0.3°C, ±2% RH I²C Aosong (same manufacturer as DHT)
MCP9808 −40°C to +125°C ±0.25°C (typical) I²C 13-bit resolution; programmable alert output
TMP117 −55°C to +150°C ±0.1°C (−20°C to +50°C) I²C Used in medical devices
MLX90614 −40°C to +125°C (object), −40°C to +85°C (ambient) ±0.5°C (body temp range) I²C (PWM optional) Non-contact IR thermometer; 10-bit ADC
LM35 −55°C to +150°C ±0.5°C (at 25°C) Analog (10 mV/°C) Linear output; requires ADC
MAX31865 Depends on RTD (PT100: −200°C to +850°C) Depends on RTD class SPI RTD-to-digital converter; supports PT100/PT1000
MAX6675 0°C to +1024°C (K-type thermocouple) ±3°C (0°C to +700°C) SPI K-type thermocouple amplifier with 12-bit ADC
AM2320 −40°C to +80°C, 0–99.9% RH ±0.5°C, ±3% RH I²C AOSUNG; I²C interface

Pressure & Barometric

Sensor Range Accuracy Interface Notes
BMP280 300–1100 hPa ±1 hPa (950–1050 hPa, 25°C) I²C, SPI Altitude resolution ~0.17 m
BMP388 300–1250 hPa ±0.5 Pa (~±4 cm altitude) I²C, SPI 3.4 μA at 1 Hz; altimeter reference
BMP390 300–1250 hPa ±0.25 Pa (relative) I²C, SPI Same package as BMP388; different noise characteristics
LPS22HB 260–1260 hPa ±0.025 hPa (relative) I²C, SPI Waterproof (IP68-rated package); 1 Hz to 200 Hz ODR
LPS28DFW 260–1260 hPa ±0.5 Pa RMS I²C, SPI Waterproof up to 100 m water depth; for wearables
DPS310 300–1200 hPa ±0.002 hPa (relative) I²C, SPI 24-bit ADC; 64x oversampling
MS5611 10–1200 mbar ±1.5 mbar (0°C to +50°C) I²C, SPI 24-bit ADC; used in drones/altimeters
MPX5010 0–10 kPa ±5% full scale Analog Piezoresistive; single supply; for low-pressure applications

Gas & Air Quality

Sensor Target Range Interface Notes
BME680 VOC (gas resistance) 1 kΩ–1000 kΩ I²C, SPI Integrated temperature, humidity, pressure, gas; IAQ output via BSEC library
BME688 VOC (gas resistance) 1 kΩ–1000 kΩ I²C, SPI AI-supported gas identification via BSEC 2.0
CCS811 TVOC, eCO₂ TVOC: 0–1187 ppb; eCO₂: 400–8192 ppm I²C Integrated MCU; requires burn-in (48 hours)
SGP30 TVOC, eCO₂ TVOC: 0–60000 ppb; eCO₂: 400–60000 ppm I²C Multi-pixel MOX; baseline tracking
SGP40 VOC index VOC index: 0–500 I²C VOC index output; operates without external MCU
SCD30 CO₂ (NDIR) 400–10000 ppm I²C, UART NDIR technology; includes temperature and humidity
SCD40/SCD41 CO₂ (NDIR) 400–2000 ppm I²C Photoacoustic NDR; SCD41 extends to 4000 ppm
ENS160 TVOC, eCO₂, AQI TVOC: 0–65072 ppb; eCO₂: 400–65535 ppm I²C, SPI ScioSense; standalone operation; 5000 h lifetime
PMS5003 PM1.0, PM2.5, PM10 0–500 μg/m³ UART Plantower; laser scattering; 1 L/min airflow
SDS011 PM2.5, PM10 0–999.9 μg/m³ UART, PWM Nova Fitness; ±15% accuracy
PMSA003I PM1.0, PM2.5, PM10 0–500 μg/m³ I²C, UART Plantower; same sensing principle as PMS5003; smaller form factor
SPS30 PM1.0, PM2.5, PM4, PM10 0–1000 μg/m³ I²C, UART Sensirion; laser scattering; 0.1 μm to 10 μm; self-cleaning
SM-UART-04L PM2.5 0–999 μg/m³ UART Winsen; electrochemical; low power
MQ-2 LPG, i-butane, propane, smoke, H₂ 300–10000 ppm (LPG) Analog Metal oxide semiconductor; requires heater (5V)
MQ-135 NH₃, NOx, alcohol, benzene, smoke, CO₂ 10–1000 ppm Analog Air quality sensor; sensitive to multiple gases
MQ-7 Carbon monoxide (CO) 20–2000 ppm Analog Metal oxide; 5V heater; requires 1.8V bias for sensor voltage
MQ-303A Alcohol, smoke 50–5000 ppm Analog Low heater voltage (1.5V); for portable devices
ZE08-CH₂O Formaldehyde (CH₂O) 0–5 ppm UART, analog, PWM Winsen; electrochemical; ±0.05 ppm
ME3-C2H5 Ethanol 0–500 ppm Analog Electrochemical; 6-series electrochemical sensor with built-in amplifier
4 Series electrochemical sensors O₂, CO, H₂S, NH₃, CL₂, etc. Various Analog Winsen; 4-series industrial gas sensors; requires amplifier board
MiCS-6814 NH₃, NO₂, CO NO₂: 0.05–5 ppm; NH₃: 1–500 ppm Analog ams SGX; 3-channel MOX sensor; includes CO prefilter

Motion & Orientation (IMU)

Sensor Axes Components Interface Notes
MPU6050 6 3-axis gyro + 3-axis accelerometer I²C (400 kHz) 16-bit ADC; DMP (Digital Motion Processor) for sensor fusion
MPU9250 9 3-axis gyro + 3-axis accelerometer + 3-axis magnetometer (AK8963) I²C, SPI AK8963 magnetometer via internal I²C passthrough
ICM-20948 9 3-axis gyro + 3-axis accelerometer + 3-axis magnetometer (AK09918) I²C, SPI 9-axis; AK09918 magnetometer
BMI160 6 3-axis gyro + 3-axis accelerometer I²C, SPI Low power (850 μA gyro, 410 μA accel); step counter built-in
BMI323 6 3-axis gyro + 3-axis accelerometer I²C, SPI Integrated FIFO; AIROC™ features
BNO055 9 Accelerometer + gyro + magnetometer + sensor fusion on-chip I²C, UART Outputs absolute orientation (quaternion, Euler angles); no external fusion needed
BNO080/BNO085 9 Accelerometer + gyro + magnetometer + Hillcrest sensor fusion I²C, SPI, UART Hillcrest sensor fusion on-chip; reports rotation vector, game rotation, gravity
LSM6DSO 6 3-axis gyro + 3-axis accelerometer I²C, SPI ST "always-on 3D" accelerometer + gyro; machine learning core
LSM9DS1 9 3-axis gyro + 3-axis accelerometer + 3-axis magnetometer I²C, SPI ST 9-axis IMU
ADXL345 3 3-axis accelerometer (±2/±4/±8/±16 g) I²C, SPI 13-bit resolution; tap/double-tap detection; free-fall detection
LIS3DH 3 3-axis accelerometer (±2/±4/±8/±16 g) I²C, SPI Ultra-low-power (2 μA); 10-bit to 12-bit; embedded FIFO
HMC5883L 3 3-axis magnetometer (compass) I²C 12-bit; ±1.3–8.1 Gauss; widely cloned (QMC5883L is clone)
QMC5883L 3 3-axis magnetometer I²C HMC5883L clone; common in cheap modules
IST8310 3 3-axis magnetometer I²C Integrated with some IMU modules
MMC5603NJ 3 3-axis magnetometer I²C MEMSIC; 18-bit resolution; automotive-grade
AK8963 3 3-axis magnetometer I²C Asahi Kasei; used in MPU9250/MPU6500; 16-bit
RM3100 3 3-axis magnetometer I²C MEMSIC; Anisotropic Magnetoresistive (AMR); higher sensitivity than Hall effect
FXOS8700 6 3-axis accelerometer + 3-axis magnetometer I²C NXP; integrated 9-DoF; ±2/±4/±8 g accelerometer
LSM303AGR 6 3-axis accelerometer + 3-axis magnetometer I²C ST; ultra-low power; ±2/±4/±8/±16 g accelerometer
ISM330DHCX 6 3-axis gyro + 3-axis accelerometer I²C, SPI ST; industrial IMU; always-on; machine learning core; 1.5 mA
BMI270 6 3-axis gyro + 3-axis accelerometer I²C, SPI Bosch; gesture and context recognition; integrated AI
IAM-20680 6 3-axis gyro + 3-axis accelerometer I²C TDK InvenSense; automotive-grade; ±125/±250/±500/±1000/±2000 dps
ICM-42688-P 6 3-axis gyro + 3-axis accelerometer I²C, SPI TDK; high-performance; ±2/±4/±8/±16 g; ±125 to ±2000 dps
ICM-42605 6 3-axis gyro + 3-axis accelerometer I²C, SPI TDK; previous generation; similar specs to ICM-42688-P
BMI055 6 3-axis gyro + 3-axis accelerometer I²C, SPI Bosch; compact package; discontinued but still available

Light & Optical

Sensor Type Range Interface Notes
BH1750 Ambient light (lux) 1–65535 lx I²C 16-bit ADC; spectral response ≈ human eye
TSL2561 Ambient light (lux) 0.1–40000 lx I²C Dual-channel (visible + IR); 16-bit
TSL2591 Ambient light (lux) 188 μlx–88000 lx I²C High dynamic range; 600M:1 range
VEML7700 Ambient light (lux) 0–120000 lx I²C Vishay; 16-bit; low power consumption
OPT3001 Ambient light (lux) 0.01–83000 lx I²C TI; 23-bit effective; matches human eye response
AS7341 Spectral (11-channel) 380–1000 nm I²C ams OSRAM; visible light spectrum analysis; flicker detection
MLX90614 IR thermometer −40°C to +125°C I²C Non-contact temperature; 10-bit ADC
MLX90640 IR thermal array (32×24) −40°C to +300°C I²C (up to 1 MHz) 768 pixels; up to 64 Hz frame rate
AMG8833 Grid-EYE IR thermal array (8×8) 0°C to +80°C I²C Panasonic; 64 pixels; 10 Hz frame rate
TEMPer1F USB temperature sensor −10°C to +85°C USB HID Microdia USB thermometer; works with tempered on Linux
APDS9960 Gesture + ambient light + proximity I²C Broadcom/ams OSRAM; gesture recognition; RGB and clear channel
VCNL4040 Proximity + ambient light 0–20 cm (proximity), 0–16777 lx I²C Vishay; IR emitter + photodiode; interrupts on threshold
[LTR-329ALS-01](https:// Liteon.com/product/LTR-329ALS-01) Ambient light 0.01–64k lx I²C LiteOn; dual photodiodes; 22-bit
ISL29020 Ambient light 0.001–10k lx I²C Intersil/Renesas; 16-bit
Si1145 UV index + ambient light + proximity UV 0–11 index I²C Silicon Labs; IR, visible, UV sensing
MAX44009 Ambient light 0.045–188,000 lx I²C Maxim; 22-bit; ultra-low power (0.65 μA)
OPT101 Photodiode + transimpedance amp Analog TI; integrated photodiode and amplifier; single supply
TEMPerED USB temperature sensor −40°C to +85°C USB HID Various TEMPer USB dongles; uses tempered driver

Distance & Proximity

Sensor Type Range Accuracy Interface Notes
HC-SR04 Ultrasonic 2–400 cm ±3 mm Digital trigger/echo 5V operation; 40 kHz ultrasonic
VL53L0X Time-of-Flight (IR laser) 30–2000 mm ±3% (at 1 m) I²C ST; 940 nm VCSEL; up to 50 Hz
VL53L1X Time-of-Flight (IR laser) 40–4000 mm ±3% (at 1 m) I²C 4 m range; 50 Hz; programmable ROI
VL6180X Time-of-Flight + ambient light 0–10 mm (ranging), 0.5–65535 lux (ALS) ±1 mm I²C Designed for smartphone proximity detection
TFMini-Plus LiDAR (IR laser) 0.1–12 m ±5 cm (at 3 m) UART, I²C Benewake; 100 Hz measurement rate; 650 nm laser
LiDAR-Lite v3/v4 LiDAR (IR laser) Up to 40 m (v4) ±5 cm I²C, PWM Garmin/LEDAR; used in drones and robotics
GP2Y0A21YK Infrared (PSD) 10–80 cm Analog (voltage) Sharp; position-sensitive detector; non-linear output
GP2Y0A02YK Infrared (PSD) 20–150 cm Analog (voltage) Sharp; longer range version
GP2Y0AF30X Infrared (PSD) 4–30 cm Analog (voltage) Sharp; short-range high resolution
SRF05 Ultrasonic 1–400 cm ±1% Digital trigger/echo Robot Electronics; 5V; compatible with HC-SR04 code
SRF08 Ultrasonic 3–600 cm ±3 cm I²C Robot Electronics; includes light sensor (Lux); 43 kHz
SRF10 Ultrasonic 4–600 cm ±1 cm I²C Robot Electronics; 40 kHz; 5V supply
MaxBotix I2CXL-MaxSonar Ultrasonic 20–765 cm 1-inch resolution UART, PWM, analog MaxBotix; industrial-grade; temperature-compensated
Garmin LIDAR-Lite v3 LiDAR (IR laser) 0–40 m ±2.5 cm I²C, PWM Garmin; 900 mW peak power; 100 Hz
Garmin LIDAR-Lite v4 LiDAR (IR laser) 0–10 m ±1 cm I²C Garmin; smaller; lower power than v3; 30 Hz
RPLIDAR A1 2D LiDAR (laser) 0.15–12 m ±1% UART Slamtec; 360° scanning; 8k Hz sample rate
RPLIDAR A2 2D LiDAR (laser) 0.15–18 m ±1% UART Slamtec; 360°; 12 Hz (A2M8); 16 Hz (A2M12)
YDLIDAR X2 2D LiDAR (laser) 0.1–10 m ±2 cm UART YDLIDAR; 360° scanning
UExtension Ultrasonic 4–500 cm 1 cm UART, PWM, I²C DFRobot; includes temperature compensation; 40 kHz

Current, Voltage & Power

Sensor Type Range Interface Notes
ACS712 Hall-effect current ±5 A / ±20 A / ±30 A variants Analog (185/100/66 mV/A) Allegro; 2.1 kV RMS isolation; 80 kHz bandwidth
ACS723 Hall-effect current ±5 A to ±50 A Analog (400/200/100/80 mV/A) Allegro; 2.1 kV RMS isolation
INA219 Shunt voltage + bus voltage 0–26 V bus; ±320 mV shunt I²C TI; 12-bit ADC; calculates power; programmable calibration
INA226 Shunt voltage + bus voltage 0–36 V bus; ±81.92 mV shunt I²C TI; 16-bit ADC
INA260 Current, voltage, power (integrated shunt) 0–36 V; ±15 A I²C TI; integrated shunt resistor; 0.6% current accuracy
INA3221 3-channel shunt voltage + bus voltage 0–26 V bus; ±163.84 mV shunt I²C TI; 3 simultaneous channels; used on Jetson carrier boards
PZEM-004T AC voltage, current, power, energy, frequency, power factor 80–260 V AC; 0–100 A UART (Modbus) Peacefair; 1% accuracy; used in energy monitoring
PZEM-016 AC current 0–300 A UART (Modbus) Peacefair; external CT sensor; 1% accuracy
PZEM-003 AC current 0–100 A UART (Modbus) Peacefair; 80 A CT included
ADC121C021 12-bit ADC 0–VDD I²C TI; auto-ranging; 1-channel; 188 kSPS
ADC122S021 2-channel 12-bit ADC 0–VDD SPI TI; dual channel; 100 kSPS
MCP3421 18-bit ADC with PGA ±2.048 V I²C Microchip; 18-bit; built-in PGA; 1, 2, 4, 8x gain
MCP3426/7/8 Multi-channel 18-bit ADC ±2.048 V I²C Microchip; 2/4/8 channels; 18-bit resolution
LTC2497 24-bit ADC ±Vref I²C Analog Devices; 16-channel; 730 SPS
ADS1115 4-channel 16-bit ADC Depends on voltage divider/shunt I²C TI; programmable gain; for analog sensor reading
MCP3008 8-channel 10-bit ADC 0–VDD SPI Microchip; common with Raspberry Pi for analog sensors
MCP3208 8-channel 12-bit ADC 0–VDD SPI Microchip; SPI interface; 100 kSPS
MCP3304 4-channel 13-bit ADC 0–VDD SPI Microchip; differential; ±4.096 V range
MAX11300 12-bit ADC + 10-bit DAC + GPIO Mixed-signal SPI Analog Devices; PIXI configurable; 20-channel
MAX11410 24-bit ADC ±Vref SPI Analog Devices; 8-channel; 1.2 mW
CS5463 Energy measurement IC 0–VRMS SPI Cirrus Logic; voltage, current, power, energy; 24-bit
ADE7953 Single-phase energy measurement 0–0.5 V I²C Analog Devices; measures active/reactive/apparent energy
AD7366/AD7367 16-bit ADC ±Vref SPI Analog Devices; true RMS-to-DC conversion; 1.4 mW

Magnetic & Compass

Sensor Type Range Interface Notes
HMC5883L 3-axis magnetometer ±1.3–±8.1 Gauss I²C Honeywell; 12-bit; cloned as QMC5883L
QMC5883L 3-axis magnetometer ±2/±8 Gauss I²C HMC5883L clone; requires different library
MMC5603NJ 3-axis magnetometer ±30 Gauss I²C MEMSIC; 18-bit resolution
IST8310 3-axis magnetometer ±16 Gauss I²C Integrated with some IMU modules

GPS & GNSS

Module Constellations Accuracy Interface Notes
u-blox NEO-M8N GPS, GLONASS, Galileo, BeiDou 2.0–2.5 m CEP UART, I²C, SPI, USB 72-channel; supports SBAS (WAAS, EGNOS, MSAS)
u-blox NEO-M9N GPS, GLONASS, Galileo, BeiDou 1.5 m CEP UART, I²C, SPI 4 concurrent GNSS; low power (17.5 mW)
u-blox ZED-F9P GPS, GLONASS, Galileo, BeiDou 2 cm (RTK) UART, USB, SPI RTK (Real-Time Kinematic) capable; dual-frequency L1/L2
u-blox ZED-F9H GPS, GLONASS, Galileo, BeiDou, QZSS 1.5 m CEP UART, USB, SPI High-precision; dual-frequency; RTK-ready
u-blox CAM-M8Q GPS, GLONASS, Galileo 2.5 m CEP UART Concurrent GNSS; ceramic patch antenna
ATGM336H GPS, BeiDou, GLONASS 2.5 m CEP UART Chinese module; B1 + L1 band
NEO-6M GPS 2.5 m CEP UART Ublox legacy module; widely available on breakout boards
NEO-7M GPS, GLONASS 2.5 m CEP UART 50+ channels
NEO-M10S GPS, GLONASS, Galileo 1.5 m CEP UART u-blox M10 generation; low power
Adafruit Ultimate GPS GPS 2.5 m CEP UART PA6H chip; 10 Hz update; battery-backed RAM
Grove GPS GPS 2.5 m CEP UART Seeed; based on u-blox NEO-7M
Beitian BE-220 GPS, GLONASS, Galileo 2.5 m CEP UART Compatible with NEO-M8N protocols
Quectel L76B GPS, GLONASS, BeiDou 2.5 m CEP UART Multi-GNSS; 33 tracking channels
Quectel L89 GPS, GLONASS, Galileo 1.5 m CEP UART Smaller form factor
SkyTraq S1315F GPS, GLONASS, Galileo, BeiDou 2.5 m CEP UART Supports raw output
SIM28/SIM39 GPS 2.5 m CEP UART SIMCom; integrated modules
LOCOSYS LS2003X GPS, GLONASS 2.5 m CEP UART LOCOSYS; 3-component solution
MediaTek MT3339 GPS 2.5 m CEP UART MediaTek; used in many USB GPS dongles

Biometric & Physiological

Sensor Type Output Interface Notes
MAX30102 Pulse oximeter (SpO₂) + heart rate IR + Red photoplethysmography I²C Integrated LEDs; 18-bit ADC; finger/earlobe placement
MAX30100 Pulse oximeter (SpO₂) + heart rate IR + Red photoplethysmography I²C Older version of MAX30102; lower sample rate
MAX30001 ECG + bioimpedance Raw ECG waveform SPI 12-lead ECG capable; pacemaker detection
MAX30003 Single-lead ECG Raw ECG waveform SPI Lower cost; 1-lead ECG
AD8232 ECG/heart rate front-end Analog output Analog (requires ADC) Single-lead ECG; instrumentation amplifier; built-in RLD
ADS1299 8-channel EEG/EMG 24-bit ADC SPI TI; biomedical-grade; built-in programmable gain
ADS131M08 8-channel 24-bit ADC 24-bit SPI TI; low-power; standalone ECG/EEG
OpenBCI Cyton EEG/EMG/EKG 8-channel 24-bit ADC Radio (dongle) or BT Open-source hardware and firmware; uses ADS1299
OpenBCI Ganglion EEG/EMG/EKG 4-channel 24-bit ADC BLE, USB OpenBCI; lower channel count; wireless
OpenBCI CytonDaisy EEG/EMG/EKG 16-channel 24-bit ADC Radio (dongle) or BT Extended Cyton; 16 channels
AS608 Optical fingerprint Match score, template ID UART Grow-Inc; 160×160 pixel; FAR <0.001%
R307 Optical fingerprint Match score, template ID UART Higher resolution than AS608; 192×192 pixel
R503 Optical fingerprint Match score, template ID UART Smaller; 160×160 pixel
GT-511C3 Optical fingerprint Match score, template ID UART ADH; 187×96 pixel
MLX90640 32×24 IR thermal array Temperature matrix (768 pixels) I²C Melexis; usable for fever screening with calibration
MLX90641 16×12 IR thermal array Temperature matrix (192 pixels) I²C Lower resolution than MLX90640; smaller package
AMG8833 8×8 IR thermal array Temperature matrix (64 pixels) I²C Panasonic; 10 Hz; used in human detection
A矽睿 QMA8981 Accelerometer for fall detection 3-axis I²C Used in wearable fall detection

Soil & Water Moisture

Sensor Type Range Interface Notes
SEN0193 (DFRobot Capacitive) Capacitive soil moisture 0–3000 ADC units Analog Corrosion-resistant; coated surface
YL-69 / HL-69 Resistive soil moisture 0–1023 ADC Analog Low cost; corrosion-prone electrodes
v1.2 Capacitive Soil Moisture Capacitive soil moisture 0–VDD Analog Open-source design; 555 timer-based frequency output
TEROS 10 Volumetric water content 0–100% VWC Analog (SDI-12 option) Research-grade; ±3% accuracy
SM300 Soil moisture 0–100% VWC Analog (0–1V) Delta-T; ±2.5% accuracy
Hydros 21 Soil moisture + EC + temperature 0–700 MPa SDI-12 Meter Group; matric potential + EC
Capacitive Soil Moisture v2.0 Capacitive soil moisture 0–VDD Analog LM555-based frequency output; open-source

Sound & Acoustic

Sensor Type Range Interface Notes
INMP441 MEMS microphone (omnidirectional) −26 dB sensitivity I²S 24-bit; 65 dBA SNR; bottom port
ICS43434 MEMS microphone (omnidirectional) −26 dB sensitivity I²S 24-bit; 65 dBA SNR; TDK InvenSense
MP34DT01 MEMS microphone (omnidirectional) −26 dB sensitivity PDM ST; 63 dB SNR; top port
SPH0645LM4H MEMS microphone −26 dB sensitivity I²S Diodes Inc; bottom port
MAX9814 Electret microphone amplifier 40–60 dB gain Analog (AGC) Maxim; auto gain control; 20–20 kHz
KY-037 / KY-038 Sound level detector Threshold detection Digital + Analog LM393 comparator; adjustable threshold
MSBG2718 Sound level meter module 30–130 dBA UART IEC 61672-2 Class 2; A-weighting
Adafruit I2S MEMS Microphone (ICS43434) MEMS microphone breakout −26 dB I²S Adafruit breakout; 3.3V
Adafruit Electret Microphone Amplifier (MAX4466) Electret mic + amplifier 20–20 kHz Analog Adjustable gain; 2.4–5V
Seeed Grove Sound Sensor Sound intensity detection Threshold Analog LM358 op-amp; Grove connector
PDM Microphone Library PDM-to-PCM conversion PDM Arduino library for PDM MEMS mics

Force, Weight & Torque

Sensor Type Range Interface Notes
HX711 24-bit load cell ADC ±40 mV Digital (clock+data) 2-channel; PGA; 10/80 SPS
NAU7802 24-bit load cell ADC ±20 mV I²C Nuvoton; Qwiic-compatible
Single-point load cell Strain gauge load cell 1–50 kg Analog (Wheatstone bridge) Requires HX711 or NAU7802
S-type load cell Tension/compression load cell 1–100 kg Analog (Wheatstone bridge) S-shaped; 1 mV/V output
FSR402 Force-sensing resistor 0–10 kg Analog (resistance) Interlink Electronics; 0.5" sensing area
FSR406 Force-sensing resistor 0–50 kg Analog (resistance) Interlink Electronics; 1.5" sensing area
FlexiForce A201 Thin-film force sensor 0–25 lbs (various) Analog (resistance) Tekscan; 0.205" sensing area
Load Cell Combiner (SparkFun) HX711 + load cell interface Digital (clock+data) SparkFun; combines 4 load cells
TAL220 Miniature load cell 0–5 kg Analog (Wheatstone bridge) Low-profile; 1 mV/V

Radiation & UV

Sensor Type Range Interface Notes
Si1145 UV index + visible + IR UV index 0–11+ I²C Silicon Labs; 3-channel
VEML6075 UVA + UVB sensor UVA/UVB mW/cm² I²C Vishay; 16-bit; calculates UV index
ML8511 UV intensity 0–15 mW/cm² Analog (voltage) SparkFun breakout; 3.3–5V
GUVA-S12SD UVA sensor 0–500 mW/cm² Analog (current) UV photodiode; requires transimpedance amp
Geiger counter (J305γ tube) Ionizing radiation (gamma, beta) 0–100 mR/h Digital (pulse count) J305γ GM tube; pulse output
RadiationD v1.1 (CAJOE) Ionizing radiation Pulse counting Digital Connects to GM tube; pulse counter
TSL2561 Ambient light (visible + IR) 0.1–40000 lx I²C Dual-channel; 16-bit

pH, Conductivity & Water Quality

Sensor Type Range Interface Notes
DFRobot Analog pH Sensor pH electrode amplifier pH 0–14 Analog (0–3.5V) BNC connector; ±0.1 pH accuracy
DFRobot Gravity: Analog EC Sensor Conductivity sensor 0–20 mS/cm Analog K=1 probe; 0–3.3V output
Industrial pH electrode (E201) Glass pH electrode pH 0–14 Analog (mV, requires amplifier) BNC connector; ±0.01 pH
Conductivity probe (DJS-1) Platinum conductivity sensor 0–20 mS/cm Analog (resistance) K=1 electrode; for water quality
Atlas Scientific EZO pH pH sensor module pH 0–14 UART, I²C, analog Isolated; ±0.002 accuracy
Atlas Scientific EZO EC Conductivity sensor module 0–200 mS/cm UART, I²C, analog Isolated; 5 ranges
Atlas Scientific EZO DO Dissolved oxygen sensor 0–50 mg/L UART, I²C, analog Isolated; optical sensing
Gravity: DS18B20 Waterproof (for water temp) Waterproof temperature −55°C to +125°C OneWire Stainless steel probe

Encoder & Position

Sensor Type Range Interface Notes
EC11 Rotary Encoder Incremental rotary encoder 360° (continuous) Digital (quadrature) 20 PPR; with pushbutton
AS5600 Magnetic rotary encoder 0–360° I²C, PWM, analog 12-bit (4096 positions); magnet-based
AS5048A Magnetic rotary encoder 0–360° SPI, PWM 14-bit (16384 positions)
AS5047P Magnetic rotary encoder 0–360° SPI, ABI 14-bit; automotive-grade
MT6701 Magnetic rotary encoder 0–360° I²C, SPI, ABI 14-bit; MagnTek
HEDS-5540 Optical rotary encoder 360° Quadrature Broadcom; 512/1024 PPR
Linear potentiometer Linear position 0–100 mm (various) Analog (voltage divider) Slider-type; 10 kΩ
VL53L0X (as linear position) Time-of-Flight linear 30–2000 mm I²C ST; non-contact linear position

Vibration & Acceleration (Dedicated)

Sensor Type Range Interface Notes
ADXL335 3-axis accelerometer (analog) ±3 g Analog (300 mV/g) Analog Devices; low-power; 3-axis
ADXL377 3-axis accelerometer (analog) ±200 g Analog (650 mV/g) High-g; shock/vibration
MMA7361 3-axis accelerometer (analog) ±1.5 g / ±6 g Analog (800 mV/g) NXP; selectable range; low-power
SW-420 Vibration switch Threshold Digital LM393 comparator; adjustable sensitivity
Piezo vibration sensor Piezoelectric vibration mV output Analog (requires amplifier) SparkFun; disc piezo
ADXL1002 Single-axis accelerometer (high bandwidth) ±50 g Analog (100 mV/g) ADI; 11 kHz bandwidth; low noise (25 μg/√Hz)
IEPE/ICP accelerometer Industrial vibration sensor ±5 g to ±1000 g IEPE (constant current) PCB Piezotronics; 4–20 mA or IEPE output
ADMP401 Omnidirectional MEMS microphone −42 dBV/Pa Analog ADI; MEMS; 100 Hz to 15 kHz

Sensor Fusion & Filtering

Algorithm / Library Description Language Repository
Kalman Filter Optimal recursive filter for linear systems with Gaussian noise Mathematical framework; many implementations
Extended Kalman Filter (EKF) Kalman filter linearized for non-linear systems Used in robot_localization ROS package
Madgwick Filter Gradient-descent IMU sensor fusion (gyro + accel + mag → quaternion) C, MATLAB github.com/arduino-libraries/MadgwickAHRS
Mahony Filter Complementary filter-based IMU fusion C Same repository as Madgwick
Complementary Filter Weighted combination of high-pass (gyro) and low-pass (accel) C, Python Simple; low computational overhead
RTIMULib C++/Python 9-DoF sensor fusion (Kalman, EKF, DCM) C++, Python github.com/RPi-Distro/RTIMULib
SensorFusion (ARM) Mbed OS sensor fusion library C++ github.com/ARMmbed/sensor-fusion
arduinoFFT Fast Fourier Transform for Arduino C++ github.com/kosme/arduinoFFT
RunningAverage Running average and running median for smoothing C++ github.com/RobTillaart/RunningAverage
KalmanFilter (TKJElectronics) Kalman filter for IMU gyro + accel angle estimation C++ github.com/TKJElectronics/KalmanFilter
scipy.signal Signal processing: filters, FFT, spectral analysis Python Part of SciPy
statsmodels Statistical models, time-series analysis Python For sensor data analysis

Signal Conditioning & ADC

Component Type Resolution Interface Notes
ADS1115 4-channel ADC 16-bit I²C TI; programmable gain amplifier; ±256 mV to ±6.144 V ranges
ADS1015 4-channel ADC 12-bit I²C TI; 3.3 kSPS sample rate
MCP3008 8-channel ADC 10-bit SPI Microchip; used with Raspberry Pi for analog sensors
MCP3208 8-channel ADC 12-bit SPI Microchip; same pinout as MCP3008
HX711 24-bit load cell ADC 24-bit Digital (clock+data) For strain gauge/weight sensors; built-in PGA
INA219 Current shunt + bus voltage monitor 12-bit I²C Measures current through shunt resistor
XTR115/XTR116 4–20 mA current loop transmitter Analog TI; converts voltage to industrial 4–20 mA signal
AD620 Instrumentation amplifier Analog Low-noise; for bridge sensor amplification (load cells, strain gauges)
AD8421 Instrumentation amplifier Analog ADI; low noise; high CMRR for sensor signal conditioning
OP07 Precision operational amplifier Analog Low offset voltage; for sensor amplification circuits
Voltage divider Passive analog circuit Scales sensor output voltage to ADC input range
Low-pass RC filter Passive analog filter Removes high-frequency noise from sensor signals

Data Logging & Sensor Data Collection

Tool Type Platform Notes
Adafruit SD Card Breakout Stand-alone data logger Embedded Logs sensor data to microSD without host PC
OpenLog Serial data logger Embedded SparkFun; logs UART data to microSD card
OpenLog Artemis Sensor data logger Embedded SparkFun; onboard sensors; microSD logging
InfluxDB Telegraf Metrics collector Cross-platform 200+ input plugins; collects sensor data from various sources
sensorLogger Arduino sensor logger Arduino Logs sensor data to SD card with timestamps
SdFat SD card library Arduino Fast FAT/exFAT library for sensor data logging
Low-Power Logger Power-optimized logging Arduino Minimal power consumption for long-term sensor logging
EnviroDIY Mayfly Environmental data logger Arduino-based Open-source environmental sensor logger platform
SODAQ SFF Solar-powered sensor logger Embedded Open-source; solar-powered environmental monitoring

Industrial & Automotive Sensors

Industrial Automation

Sensor Type Interface Notes
Industrial RTD (PT100/PT1000) Temperature (2/3/4-wire) Analog, Modbus IEC 60751 accuracy classes; 100 Ω (PT100) or 1000 Ω (PT1000) at 0°C
Thermocouple (K/J/T/E/N/R/S/B) Temperature Analog, cold-junction compensation IEC 60584; K-type most common (−200°C to +1300°C)
4–20 mA current loop Analog signal transmission Current 4 mA = zero, 20 mA = full scale; self-powered
0–10 V signal Analog signal Voltage Legacy industrial; requires separate power supply
Industrial pressure transducer Pressure 4–20 mA, 0–10 V, Modbus IP65/IP67 rated; ceramic/stainless steel
Industrial load cell Weight/force 4–20 mA, Modbus, CAN Hermetically sealed; OIML certified
Proximity sensor (inductive) Metal detection NPN/PNP, 4–20 mA Non-contact; sensing distance 1–50 mm
Proximity sensor (capacitive) Material detection NPN/PNP, 4–20 mA Detects non-metallic materials; 1–30 mm
Photoelectric sensor Object detection NPN/PNP, relay Through-beam, retroreflective, diffuse
Encoder (rotary) Angle/position Incremental, absolute (SSI, BiSS, SPI) Optical or magnetic; 1–65536 PPR
Industrial ultrasonic sensor Distance/fluid level 4–20 mA, 0–10 V, switching IP67 rated; 50 mm to 10 m range
Vibration sensor (industrial) Vibration/condition monitoring 4–20 mA, IEPE Accelerometer with integrated electronics
Leak detection Fluid/gas leak Switching, 4–20 mA Cable or point sensors
Flow meter (electromagnetic) Fluid flow 4–20 mA, Modbus Faraday's law; requires conductive fluid
Flow meter (ultrasonic) Fluid flow 4–20 mA, Modbus Clamp-on or inline; no pressure drop

Automotive (OBD-II / CAN)

Sensor Interface Notes
OBD-II PID CAN bus (ISO 15765-4) Parameter IDs for vehicle data; Mode $01 (real-time), $02 (freeze frame)
ELM327 OBD-II adapter AT command interface; USB/Bluetooth
STN1110 OBD-II adapter
OBD tester software PC software Torque Pro (Android), ScanTool.net (PC)
CAN bus (ISO 11898) Differential serial 500 kbps typical; 11-bit or 29-bit identifiers
SAE J1939 CAN bus 250 kbps
OBD-II via ELM327 Python libraries python-OBD, obd (Ruby)

Modbus Sensors

Sensor Type Interface Notes
Temperature/humidity Environmental Modbus RTU (RS-485) Industrial; 0–100% RH, −40°C to +80°C
Pressure transducer Pressure Modbus RTU (RS-485) 0–400 bar; 0.25% accuracy
Energy meter Power/energy Modbus RTU/TCP 0–600 V, 0–1000 A; 0.5% accuracy
Level sensor Fluid level Modbus RTU Ultrasonic; 0–10 m
pH sensor pH Modbus RTU Industrial; 0–14 pH
Conductivity sensor Conductivity Modbus RTU 0–500 mS/cm

Sensor Firmware & Embedded Platforms

Platform Type Notes
ESPHome ESP firmware framework YAML configuration; compiles to ESP-IDF/Arduino; 300+ sensor components
Tasmota ESP firmware Pre-compiled; web UI; sensor drivers for BME280, SHT3x, DS18B20, etc.
ESPEasy ESP firmware Web interface; plugin-based sensor support; MQTT/HTTP output
MicroPython sensor drivers Python for microcontrollers Built-in I²C, SPI, ADC classes; community sensor drivers
CircuitPython sensor bundle Python for microcontrollers 300+ Adafruit sensor drivers; plug-and-play on supported boards
Zephyr sensor subsystem RTOS sensor framework Unified sensor API; drivers for 100+ sensors
MySensors Wireless sensor network framework NRF24L01/RFM69 radio; Arduino-compatible; gateway to MQTT
The Things Network / LoRaWAN LoRaWAN sensor network Long-range sensor data; TTN MQTT integration; open LoRaWAN stack
LoRaMac-node LoRaWAN stack Semtech reference implementation; sensor node firmware
RuuviTag firmware BLE environmental sensor Open-source; BME280, accelerometer, nRF52-based
OpenSensorFirmware Multi-sensor firmware Unified framework for environmental sensor nodes
SensorFusion (ARM Mbed) Mbed OS sensor fusion C++; 9-DoF IMU fusion for Mbed platforms

Simulation & Virtual Hardware

Tool Type Platform Notes
Wokwi Online simulator Web browser Simulates Arduino, ESP32, STM32, Raspberry Pi Pico; virtual sensors (DHT22, ultrasonic, keypad, etc.)
Tinkercad Circuits Online circuit simulator Web browser Autodesk; Arduino Uno with virtual sensors; block-based and text code
SimulIDE Desktop circuit simulator Cross-platform Open-source; simulates Arduino, PIC, AVR; includes sensor components
Proteus Circuit simulation Windows Commercial; microcontroller simulation with sensor models; PCB design
Renode IoT system simulator Cross-platform Antmicro; simulates full IoT systems including sensor peripherals; used for CI testing
QEMU Machine emulator Cross-platform Can simulate ARM/MIPS/RISC-V boards; limited sensor peripheral simulation
Virtual Breadboard Breadboard simulator Windows Visual microcontroller and sensor simulation
PySim Sensor simulation library Python Various community implementations for virtual sensor testing
MATLAB/Simulink Model-based design Cross-platform Commercial; sensor modeling, signal processing, hardware-in-the-loop
Fritzing Breadboard view + PCB design Cross-platform Not a simulator; visual wiring reference for sensor connections

Sensor Hardware Platforms & Breakout Boards

Sensor Breakout Boards (I²C/SPI)

Board Sensor Interface Manufacturer Notes
Adafruit BME280 BME280 I²C, SPI Adafruit 3.3V logic; voltage regulator; level shifters
Adafruit BME680 BME680 I²C, SPI Adafruit Environmental (temp, humidity, pressure, gas)
Adafruit SHT31-D SHT31-D I²C Adafruit ±2% RH; 3-5V compatible
Adafruit CCS811 CCS811 I²C Adafruit TVOC/eCO₂; interrupt pin
Adafruit SGP40 SGP40 I²C Adafruit VOC index; STEMMA QT connector
Adafruit INA219 INA219 I²C Adafruit Current/voltage/power; 3.3-5V compatible
Adafruit MLX90614 MLX90614 I²C Adafruit Non-contact IR temperature; 3.3V
Adafruit APDS9960 APDS9960 I²C Adafruit Gesture, proximity, ambient light, color
Adafruit AS7341 AS7341 I²C Adafruit 11-channel visible light spectrum
Adafruit VCNL4040 VCNL4040 I²C Adafruit Proximity + ambient light
Adafruit MAX31855 MAX31855 SPI Adafruit K-type thermocouple amplifier
Adafruit MAX31865 MAX31865 SPI Adafruit PT100/PT1000 RTD amplifier
SparkFun Qwiic BME280 BME280 I²C SparkFun Qwiic connector; 3.3V
SparkFun Qwiic SCD4x SCD41 I²C SparkFun NDIR CO₂; Qwiic connector
SparkFun Qwiic MLX90640 MLX90640 I²C SparkFun 32x24 thermal camera; Qwiic
SparkFun Qwiic GPS (ZOE-M8Q) ZOE-M8Q I²C, UART SparkFun Concurrent GNSS; Qwiic; patch antenna
SparkFun Qwiic Scale (NAU7802) NAU7802 I²C SparkFun 24-bit load cell ADC; Qwiic
Seeed Grove BME280 BME280 I²C Seeed Grove connector; 3.3-5V
Seeed Grove SCD40 SCD40 I²C Seeed NDIR CO₂; Grove connector
Seeed Grove IMU 9DOF (ICM20600 + AK09918) ICM20600 + AK09918 I²C, SPI Seeed 9-DoF IMU; Grove connector
Seeed Grove PM2.5 (PMSA003I) PMSA003I I²C, UART Seeed Particulate matter; Grove connector
DFRobot Gravity: BME280 BME280 I²C DFRobot Gravity connector; 3.3-5V
DFRobot Gravity: SHT31 SHT31 I²C DFRobot ±2% RH; Gravity connector
DFRobot Gravity: SEN0193 Capacitive Soil Moisture Capacitive soil moisture Analog DFRobot Corrosion-resistant; Gravity connector
Pololu VL53L1X VL53L1X I²C Pololu Time-of-Flight; 4m range; 3.3V
Pololu LSM6DSO LSM6DSO I²C, SPI Pololu 6-DoF IMU; 3.3V; compact
Pimoroni BME680 Breakout BME680 I²C, SPI Pimoroni Environmental; pHAT/SHIM compatible
Pimoroni LTR-559 LTR-559 I²C Pimoroni Ambient light + proximity

Multi-Sensor Boards

Board Sensors Interface Platform Notes
Adafruit Sense HAT (RPi) BME280, LSM9DS1, HTS221, LPS25H, TCS3472, APDS9960 I²C Raspberry Pi 6 sensors on one HAT
Pimoroni Enviro+ BME280, LTR-559, MICS6814, MSM4210, PMS5003 I²C, UART, ADC Raspberry Pi Environmental + particulate matter
Pimoroni Breakout Garden Various I²C breakouts I²C Raspberry Pi Stackable sensor board system
Seeed Wio Terminal Light, microphone, accelerometer, IR Analog, I²C, PDM ATSAMD51 Built-in sensors; expansion slots
M5Stack AtomS3 IR temperature, accelerometer I²C ESP32-S3 Compact sensor node
M5Stack ENV III Unit BME280, SHT30, BMP280 I²C M5Stack/Qwiic Environmental sensor module
M5Stack Air Quality Unit SGP30 I²C M5Stack/Qwiic TVOC/eCO₂
RuuviTag BME280, LIS2DH12, nRF52 temp I²C nRF52832 BLE beacon; open-source firmware
SensorTag CC2650 TMP007, OPT3001, HDC1000, BMP280, MPU9250 I²C CC2650 TI reference design; BLE
micro:bit sensor boards Various Edge connector BBC micro:bit Multiple sensor add-ons

Sensor Interface Boards

Board Purpose Interface Notes
Adafruit STEMMA QT boards I²C sensor connectivity I²C (JST-SH) Plug-and-play I²C sensors; 3.3V
SparkFun Qwiic boards I²C sensor connectivity I²C (JST-SH) Standardized I²C connector
Seeed Grove boards Sensor connectivity Analog, I²C, UART, SPI 4-pin connector standard
DFRobot Gravity boards Sensor connectivity Analog, I²C, UART 3-pin connector; 3.3-5V compatible
mikroBUS boards Sensor/ peripheral connectivity SPI, I²C, UART, analog, PWM MikroElektronika; 1600+ click boards
Adafruit FeatherWing sensor boards Sensor add-ons for Feather I²C, SPI, analog Stack on Feather boards
Raspberry Pi Sense HAT Multi-sensor HAT I²C IMU, pressure, humidity, temperature, joystick
Raspberry Pi AI Camera Camera + ML CSI Sony IMX500 with on-sensor AI

Sensor-Specific Tools

Tool Purpose Notes
BSEC (Bosch Software Environmental Cluster) BME680/BME688 IAQ processing Converts raw gas resistance to IAQ, CO₂-eq, VOC-eq
BSEC 2.0 BME688 AI gas identification Machine-learning-based gas classification
Sensirion Sensor Bridge Sensirion sensor configuration I²C configuration and data readout
STSW-IMP001 (LSM6DSO) LSM6DSO configuration STMicroelectronics; IMU setup
u-center (u-blox) GNSS module configuration Windows tool for u-blox GPS modules
RTCM (Real-Time Correction Message) GNSS RTK correction data Standard for differential GPS corrections
SensorCal Multi-sensor calibration Community tools for IMU, temperature, humidity calibration
imu-tools IMU filtering and visualization ROS; Madgwick/Mahony fusion; RViz display
OpenLog Artemis Sensor data logger SparkFun; SAMD21-based; SD card logging
EnviroDIY Sensor Library Environmental sensor drivers Arduino library for Mayfly data logger
SDI-12 Library SDI-12 protocol Arduino library for SDI-12 sensors
Sensor Data Logger (Raspberry Pi) RPi sensor data collection Python; multiple sensor support; CSV output

Calibration

Tool / Method Purpose Notes
Reference thermometer Temperature sensor calibration Ice bath (0°C) and boiling water (100°C at sea level) method
Reference hygrometer Humidity sensor calibration Salt solution method (75% RH at 25°C with NaCl saturated solution)
Kalibr Camera + IMU calibration ETH Zurich; multiple camera and IMU intrinsic/extrinsic calibration
ROS camera_calibration Camera intrinsic calibration ROS package; checkerboard-based; monocular, stereo, IR
Allan Variance IMU noise characterization Used to determine gyro/accel bias instability and random walk
Six-position calibration Accelerometer calibration Place IMU in 6 orientations (±X, ±Y, ±Z) to estimate bias and scale factor
Fluke MET/TEMP II Automated temperature calibration Commercial; batch testing; calibration certificates
Spektra Dresden Vibration sensor calibration Commercial; integrated sensor database; calibration report generation
Two-point calibration General sensor calibration Establish slope and offset using two known reference points

Standards & Specifications

Standard Scope Organization Notes
IEEE 1451 Smart Transducer Interface Standards IEEE Defines network-capable smart transducers; includes TEDS (Transducer Electronic Data Sheet)
IEC 60751 Industrial Platinum Resistance Thermometers (PT100) IEC Defines PT100 accuracy classes (AA, A, B)
IEC 60584 Thermocouples IEC Defines thermocouple types (K, J, T, E, N, R, S, B) and tolerances
ISO 11898 CAN Bus ISO Road vehicles — Controller area network (CAN)
IEC 61131 Programmable Controllers (includes sensor I/O) IEC Industrial automation
SDI-12 Serial Digital Interface at 1200 baud SDI-12 Support Committee Geophysical measurements
4–20 mA Current Loop Analog signal transmission IEC 60381 Industrial process control; noise-immune; long-distance
Pmod Interface Specification Peripheral module interface Digilent 6-pin or 12-pin connector
Grove Connector 4-pin JST connector Seeed Studio VCC, GND, and two signal pins
QWIIC/STEMMA QT 4-pin JST I²C connector SparkFun / Adafruit VCC (3.3V), GND, SDA, SCL; plug-and-play I²C sensors

Reference Material

Datasheets & Component Search

Resource Type URL
Octopart Component search engine with datasheets octopart.com
FindChips Component availability and pricing findchips.com
LCSC Electronics Component distributor with datasheets lcsc.com
Digi-Key Component distributor; parametric search digikey.com
Mouser Component distributor; datasheets and reference designs mouser.com
Alldatasheet Datasheet search engine alldatasheet.com
Bosch Sensortec Downloads Official Bosch sensor drivers and datasheets bosch-sensortec.com
Sensirion Downloads Official Sensirion drivers and application notes sensirion.com
TI Sensor Products TI sensor product catalog ti.com/sensors
Analog Devices Sensors ADI sensor products and signal conditioning references analog.com

Kernel & Driver Documentation

Resource Topic URL
Linux hwmon kernel API Hardware monitoring kernel subsystem docs.kernel.org/hwmon
Linux hwmon sysfs interface sysfs attribute naming convention kernel.org
Linux I²C subsystem I²C kernel documentation docs.kernel.org/i2c
Linux SPI subsystem SPI kernel documentation docs.kernel.org/spi
Linux Industrial I/O (IIO) subsystem IIO kernel subsystem for ADC/DAC sensors docs.kernel.org/iio
Linux thermal subsystem Thermal zone and cooling device sysfs docs.kernel.org/thermal
Linux CAN/SocketCAN CAN bus kernel networking kernel.org
lm-sensors ArchWiki lm-sensors configuration and troubleshooting wiki.archlinux.org

Technical Tutorials

Resource Topic URL
Adafruit Learning System Sensor wiring guides, code examples, theory learn.adafruit.com
SparkFun Learn Sensor hookup guides, tutorials learn.sparkfun.com
Random Nerd Tutorials ESP32/ESP8266 sensor projects randomnerdtutorials.com
DroneBot Workshop In-depth sensor videos and articles dronebotworkshop.com
All About Circuits Electronics fundamentals, sensor interfacing allaboutcircuits.com
SensorWiki Open knowledge base about sensors sensorwiki.org
EEVBlog Forum Electronics engineering discussions eevblog.com/forum
Kernel.org Documentation Linux kernel subsystem documentation docs.kernel.org

Contributing

Contributions should include:

  • A direct link to the project, repository, or product page
  • A factual description of what the tool/sensor does
  • Technical specifications where applicable (interface, accuracy, range)
  • The license (for open-source projects)

Please open an issue or submit a pull request with additions or corrections.

License

CC0

This work is dedicated to the public domain under CC0 1.0 Universal.

About

A curated list of hardware sensor resources: tools, utilities, libraries, frameworks, reference data, and development platforms.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors