ESP-IDF Components library
Components for Espressif ESP32 ESP-IDF framework and ESP8266 RTOS SDK.
Part of them ported from esp-open-rtos.
Supported versions of frameworks and devices
Chip | Framework | Versions |
---|---|---|
ESP32 | ESP-IDF | All officially supported versions (see Support Period Policy) and master |
ESP32-S2 [1] | ESP-IDF | All officially supported versions and master |
ESP32-C3 [1] | ESP-IDF | All officially supported versions and master |
ESP8266 [2] | ESP8266 RTOS SDK | master , v3.4 |
[1] Use "idf.py set-target esp32s2
" or "idf.py set-target esp32c3
" before "idf.py menuconfig
" to change
the chip type.
[2] Due to the incompatibility of ESP8266 drivers and hardware, some libraries are not supported on ESP8266 (see "ESP8266" column in the tables).
How to use
ESP32
Clone this repository somewhere, e.g.:
cd ~/myprojects/esp
git clone https://github.com/UncleRus/esp-idf-lib.git
Add path to components in your project makefile, e.g:
PROJECT_NAME := my-esp-project
EXTRA_COMPONENT_DIRS := /home/user/myprojects/esp/esp-idf-lib/components
include $(IDF_PATH)/make/project.mk
or in CMakeLists.txt:
cmake_minimum_required(VERSION 3.5)
set(EXTRA_COMPONENT_DIRS /home/user/myprojects/esp/esp-idf-lib/components)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(my-esp-project)
or with CMake FetchContent
cmake_minimum_required(VERSION 3.11)
include(FetchContent)
FetchContent_Declare(
espidflib
GIT_REPOSITORY https://github.com/UncleRus/esp-idf-lib.git
)
FetchContent_MakeAvailable(espidflib)
set(EXTRA_COMPONENT_DIRS ${espidflib_SOURCE_DIR}/components)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(my-esp-project)
ESP8266 RTOS SDK
Clone this repository somewhere, e.g.:
cd ~/myprojects/esp
git clone https://github.com/UncleRus/esp-idf-lib.git
Add path to components in your project makefile, e.g:
PROJECT_NAME := my-esp-project
EXTRA_COMPONENT_DIRS := /home/user/myprojects/esp/esp-idf-lib/components
EXCLUDE_COMPONENTS := max7219 mcp23x17 led_strip max31865 ls7366r max31855
include $(IDF_PATH)/make/project.mk
See GitHub examples or GitLab examples.
Documentation
Components
ADC/DAC libraries
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ads111x | Driver for ADS1113/ADS1114/ADS1115 and ADS1013/ADS1014/ADS1015 I2C ADC | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ads130e08 | Driver for ADS130E08 ADC | MIT | esp32 , esp32s3 |
Yes |
hx711 | Driver for HX711 24-bit ADC for weigh scales | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
mcp342x | Driver for 18-Bit, delta-sigma ADC MCP3426/MCP3427/MCP3428 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
mcp4725 | Driver for 12-bit DAC MCP4725 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
pcf8591 | Driver for 8-bit ADC and an 8-bit DAC PCF8591 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
sgm58031 | Driver for SGM58031 16-bit I2C ADC | ISC | esp32 , esp8266 , esp32s2 , esp32s3 , esp32c3 |
Yes |
Air quality sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ccs811 | Driver for AMS CCS811 digital gas sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
mhz19b | Driver for MH-Z19B NDIR CO₂ sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
scd30 | Driver for SCD30 CO₂ sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
scd4x | Driver for SCD40/SCD41 miniature CO₂ sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
sgp40 | Driver for SGP40 Indoor Air Quality Sensor for VOC Measurements | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Common libraries
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
color | Common library for RGB and HSV colors | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
esp_idf_lib_helpers | Common support library for esp-idf-lib | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
framebuffer | RGB framebuffer component | MIT | esp32 , esp32s2 , esp32c3 |
Yes |
i2cdev | ESP-IDF I2C master thread-safe utilities | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
lib8tion | Math functions specifically designed for LED programming | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
noise | Noise generation functions | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
onewire | Bit-banging 1-Wire driver | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
Current and power sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ina219 | Driver for INA219/INA220 bidirectional current/power monitor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ina260 | Driver for INA260 precision digital current and power monitor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ina3221 | Driver for INA3221 shunt and bus voltage monitor | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
GPIO expanders
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
mcp23008 | Driver for 8-bit I2C GPIO expander MCP23008 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
mcp23x17 | Driver for I2C/SPI 16 bit GPIO expanders MCP23017/MCP23S17 | BSD-3 | esp32 , esp32s2 , esp32c3 |
Yes |
pca9557 | Driver for PCA9537/PCA9557/TCA9534 remote 4/8-bit I/O expanders for I2C-bus | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
pcf8574 | Driver for PCF8574 remote 8-bit I/O expander for I2C-bus | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
pcf8575 | Driver for PCF8575 remote 16-bit I/O expander for I2C-bus | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tca95x5 | Driver for TCA9535/TCA9555 remote 16-bit I/O expanders for I2C-bus | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Gas sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ccs811 | Driver for AMS CCS811 digital gas sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
mhz19b | Driver for MH-Z19B NDIR CO₂ sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
scd30 | Driver for SCD30 CO₂ sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
scd4x | Driver for SCD40/SCD41 miniature CO₂ sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Humidity sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
aht | Driver for AHT10/AHT15/AHT20 temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
am2320 | Driver for AM2320 temperature and humidity sensor (I2C) | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bme680 | Driver for BME680 digital environmental sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
dht | Driver for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321), Itead Si7021 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
hdc1000 | Driver for HDC1000 temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
hts221 | Driver for HTS221 temperature and humidity sensor. | ISC | esp32 , esp32s2 , esp32c3 |
Yes |
sht3x | Driver for Sensirion SHT30/SHT31/SHT35 digital temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
sht4x | Driver for Sensirion SHT40/SHT41/SHT45 digital temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
si7021 | Driver for Si7013/Si7020/Si7021/HTU2xD/SHT2x and compatible temperature and humidity sensors | BSD-3 | esp32 , esp32c3 , esp8266 , esp32s2 , esp32c3 |
Yes |
Inertial measurement units
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
icm42670 | Driver for TDK ICM-42670-P 6-Axis IMU (found on ESP-RS board, https://github.com/esp-rs/esp-rust-board) | ICS | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Input device drivers
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
button | HW timer-based driver for GPIO buttons | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
encoder | HW timer-based driver for incremental rotary encoders | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ls7366r | Driver for LS7366R Quadrature Encoder Counter | MIT | esp32 , esp32s2 , esp32c3 |
Yes |
LED drivers
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ht16k33 | HT16K33 LED controller driver | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
led_strip | RMT-based driver for WS2812B/SK6812/APA106/SM16703 LED strips | MIT | esp32 , esp32s2 , esp32c3 |
Yes |
led_strip_spi | SPI-based driver for SK9822/APA102 LED strips | MIT | esp32 , esp32c3 , esp8266 , esp32s2 , esp32c3 |
Yes |
max7219 | Driver for 8-Digit LED display drivers, MAX7219/MAX7221 | BSD-3 | esp32 , esp32s2 , esp32c3 |
Yes |
Light sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
bh1750 | Driver for BH1750 light sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tsl2561 | Driver for light-to-digital converter TSL2561 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tsl2591 | Driver for light-to-digital converter TSL2591 | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tsl4531 | Driver for digital ambient light sensor TSL4531 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
veml7700 | Driver for VEML7700 ambient light sensor | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Magnetic sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
hmc5883l | Driver for 3-axis digital compass HMC5883L and HMC5983L | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
qmc5883l | Driver for QMC5883L 3-axis magnetic sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Other misc libraries
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ds3502 | Driver for nonvolatile digital potentiometer DS3502 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
example | An example component | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
hd44780 | Driver for HD44780 compatible LCD text displays | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
lc709203f | Driver for LC709203F battery fuel gauge | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
pca9685 | Driver for 16-channel, 12-bit PWM PCA9685 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
rda5807m | Driver for single-chip broadcast FM radio tuner RDA5807M | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tca9548 | Driver for TCA9548A/PCA9548A low-voltage 8-channel I2C switch | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tda74xx | Driver for TDA7439/TDA7439DS/TDA7440D audioprocessors | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ultrasonic | Driver for ultrasonic range meters, e.g. HC-SR04, HY-SRF05 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
wiegand | Wiegand protocol receiver | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
Pressure sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
bme680 | Driver for BME680 digital environmental sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bmp180 | Driver for BMP180 digital pressure sensor | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bmp280 | Driver for BMP280/BME280 digital pressure sensor | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
dps310 | Driver for DPS310 barometric pressure sensor | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ms5611 | Driver for barometic pressure sensor MS5611-01BA03 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Real-time clocks
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
ds1302 | Driver for DS1302 RTC module | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
ds1307 | Driver for DS1307 RTC module | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ds3231 | Driver for DS1337 RTC and DS3231 high precision RTC module | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
pcf8563 | Driver for PCF8563 real-time clock/calendar | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Temperature sensors
Component | Description | License | Supported on | Thread safety |
---|---|---|---|---|
aht | Driver for AHT10/AHT15/AHT20 temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
am2320 | Driver for AM2320 temperature and humidity sensor (I2C) | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bh1900nux | Driver for BH1900NUX temperature sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bme680 | Driver for BME680 digital environmental sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bmp180 | Driver for BMP180 digital pressure sensor | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
bmp280 | Driver for BMP280/BME280 digital pressure sensor | MIT | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
dht | Driver for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321), Itead Si7021 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
dps310 | Driver for DPS310 barometric pressure sensor | ISC | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ds18x20 | Driver for DS18B20/DS18S20 families of 1-Wire temperature sensor ICs | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
No |
hdc1000 | Driver for HDC1000 temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
hts221 | Driver for HTS221 temperature and humidity sensor. | ISC | esp32 , esp32s2 , esp32c3 |
Yes |
lm75 | Driver for LM75, a digital temperature sensor and thermal watchdog | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
max31725 | Driver for MAX31725/MAX31726 temperature sensors | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
max31855 | Driver for MAX31855 cold-junction compensated thermocouple-to-digital converter | BSD-3 | esp32 , esp32s2 , esp32c3 |
Yes |
max31865 | Driver for MAX31865 resistance converter for platinum RTDs | BSD-3 | esp32 , esp32s2 , esp32c3 |
Yes |
mcp960x | Driver for MCP9600/MCP9601, thermocouple EMF to temperature converter | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
mcp9808 | Driver for MCP9808 Digital Temperature Sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
ms5611 | Driver for barometic pressure sensor MS5611-01BA03 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
sht3x | Driver for Sensirion SHT30/SHT31/SHT35 digital temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
sht4x | Driver for Sensirion SHT40/SHT41/SHT45 digital temperature and humidity sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
si7021 | Driver for Si7013/Si7020/Si7021/HTU2xD/SHT2x and compatible temperature and humidity sensors | BSD-3 | esp32 , esp32c3 , esp8266 , esp32s2 , esp32c3 |
Yes |
sts21 | Driver for STS21 temperature sensor | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
tsys01 | Driver for precision digital temperature sensor TSYS01 | BSD-3 | esp32 , esp8266 , esp32s2 , esp32c3 |
Yes |
Library maintainers
Credits
- Tomoyuki Sakurai, developer of the LM75 and SK9822/APA102 drivers, author of the RTOS SDK ESP82666 support, master CI
- Gunar Schorcht, developer of SHT3x, BME680 and CCS811 drivers
- Brian Schwind, developer of TS2561 and TSL4531 drivers
- Andrej Krutak, developer of BH1750 driver
- Frank Bargstedt, developer of BMP180 driver
- sheinz, developer of BMP280 driver
- Jonathan Hartsuiker, developer of DHT driver
- Grzegorz Hetman, developer of DS18B20 driver
- Alex Stewart, developer of DS18B20 driver
- Richard A Burton, developer of DS3231 driver
- Bhuvanchandra DV, developer of DS3231 driver
- Zaltora, developer of INA3231 driver
- Bernhard Guillon, developer of MS5611-01BA03 driver
- Pham Ngoc Thanh, developer of PCF8591 driver
- Lucio Tarantino, developer of ADS111x driver
- Julian Dörner, developer of TSL2591 driver
- FastLED community, developers of
lib8tion
,color
andnoise
libraries - Erriez, developer of MH-Z19B driver
- David Douard, developer of MH-Z19B driver
- Nate Usher, developer of SCD30 driver
- Josh Kallus, developer of LS7366R driver
- saasaa, developer of HTS221 driver
- Timofei Korostelev, developer of HT16K33 driver
- Jose Manuel Perez, developer of LC709203F driver
- Weslley Duarte, developer of ADS130E08 driver
- Jan Veeh, developer of ICM42670 driver
- Marc Luehr, developer of VEML7700 driver