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.
- Hardware Monitoring
- Sensor Libraries & Drivers
- Communication Protocols
- Sensor Types
- Temperature & Humidity
- Pressure & Barometric
- Gas & Air Quality
- Motion & Orientation (IMU)
- Light & Optical
- Distance & Proximity
- Current, Voltage & Power
- Magnetic & Compass
- GPS & GNSS
- Biometric & Physiological
- Soil & Water Moisture
- Sound & Acoustic
- Force, Weight & Torque
- Radiation & UV
- pH, Conductivity & Water Quality
- Encoder & Position
- Vibration & Acceleration
- Sensor Fusion & Filtering
- Signal Conditioning & ADC
- Data Logging & Sensor Data Collection
- Industrial & Automotive Sensors
- Sensor Firmware & Embedded Platforms
- Simulation & Virtual Hardware
- Sensor Hardware Platforms & Breakout Boards
- Sensor-Specific Tools
- Calibration
- Standards & Specifications
- Reference Material
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 | 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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) |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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.
This work is dedicated to the public domain under CC0 1.0 Universal.
