ESP32: 36 Free Guides for Sensors and Modules
There is a wide variety of sensors, modules, and peripherals compatible with the ESP32 boards. This article is a compilation of 36 free guides for ESP32 sensors and modules.
- Suitable forB.Tech/Diploma IoT/ESP32 students
- Build time1-2 weeks
- LevelBeginner
- Available atAjvika Labs, Kakinada
About this project
There is a wide variety of sensors, modules, and peripherals compatible with the ESP32 boards. We have tutorials for the most popular components. This article is a compilation of 36 free guides for ESP32 sensors and modules. Most guides cover programming the ESP32 using the Arduino core, but we also have tutorials for MicroPython.
We have a similar article for the ESP8266:
25 Free Guides for Sensors and Modules [ESP8266]
Here’s a quick list of the sensors/modules:
Environmental Sensors:
DS18B20 Temperature Sensor
Type-K Thermocouple Temperature Sensor
DHT11/DHT22 Temperature and Humidity Sensor
BME280 Temperature, Humidity, and Pressure Sensor
BME680 Environmental Sensor (Gas, Pressure, Humidity, Temperature)
BMP388 Altimeter Sensor (Pressure, Altitude, Temperature)
BMP180 Barometric Sensor (Pressure, Altitude, Temperature)
BH1750 Light Sensor
TDS Sensor (Total Dissolved Solids)
Anemometer (wind speed sensor)
APDS9960 Proximity, Light, RGB, and Gesture Sensor
Motion-Related Sensors:
PIR Motion Sensor
Door Sensor (reed switch)
HC-SR04 Ultrasonic Sensor
MPU6050 Accelerometer and Gyroscope
RCWL-0516 Microwave Radar Proximity Sensor
NEO-6M GPS Module
NEO-M8N GPS Module
Other Sensors/Modules/Peripherals:
microSD Card Module
Potentiometer
Relay Module
Load Cell with HX711 Amplifier
DS1307 Real Time Clock Module (RTC)
DS3231 Real Time Clock Module (RTC)
YX5300/YX6300 MP3 Player
Displays:
OLED Display (SSD1306)
I2C LCD (Liquid Crystal Display)
RGB LED Strip
TM1637 4-Digit 7-Segment Display
TFT LCD Touchscreen Display (2.8 inch ILI9341)
Communication:
LoRa Transceiver
I2C Multiplexer (TCA9548A)
MFRC522 RFID Reader
Motors:
Servo Motor
DC Motor
Stepper Motor
Environmental Sensors
1. DS18B20 Temperature Sensor
The DS18B20 temperature sensor is a one-wire digital temperature sensor. This means that it just requires one data line (and GND) to communicate with your ESP32. Each DS18B20 temperature sensor has a unique 64-bit serial code. This allows you to wire multiple sensors to the same data wire. So, you can get temperature from multiple sensors using just one GPIO.
The DS18B20 temperature sensor is also available in waterproof version.
To get started, you can follow the next tutorials:
Arduino core:
ESP32 DS18B20 Temperature Sensor with Arduino IDE (Single, Multiple, Web Server)
ESP32 with Multiple DS18B20 Temperature Sensors
MicroPython:
MicroPython: DS18B20 Temperature Sensor with ESP32 and ESP8266
Get a DS18B20 Temperature Sensor
Get a DS18B20 Temperature Sensor (waterproof version)
2. Type-K Thermocouple Temperature Sensor
A K-type thermocouple is a type of temperature sensor with a wide measurement range like −200 to 1260ºC (−326 to 2300ºF). To get the temperature from the thermocouple we need a thermocouple amplifier. We use the MAX6675 amplifier that is sold together with the thermocouple, but you can use any other amplifier, like the MAX31855.
To get started, follow the next tutorial:
Arduino core:
ESP32: K-Type Thermocouple with MAX6675 Amplifier
Get the Type-K Thermocouple temperature sensor.
3. DHT11/DHT22 Temperature and Humidity Sensor
The DHT11 and DHT22 sensors are used to measure temperature and relative humidity. These sensors contain a chip that does analog to digital conversion and spits out a digital signal with the temperature and humidity. This makes them very easy to use with any microcontroller.
To get started, follow the next tutorials:
Arduino Core:
ESP32 with DHT11/DHT22 Temperature and Humidity Sensor using Arduino IDE
MicroPython:
MicroPython: ESP32/ESP8266 with DHT11/DHT22 Temperature and Humidity Sensor
Get a DHT22 temperature and humidity sensor.
Get a DHT11 temperature and humidity sensor.
4. BME280 Temperature, Humidity, and Pressure Sensor
The
BME280 sensor
module reads barometric pressure, temperature, and humidity. Because pressure changes with altitude, you can also estimate altitude. There are several versions of this sensor module: some can communicate using only I2C communication protocol, and others have the additional option to use the SPI communication protocol. We usually use the I2C protocol with this sensor. This sensor is very versatile and we use it in many of our tutorials.
To get started, follow the next tutorials:
Arduino core:
ESP32 with BME280 Sensor using Arduino IDE (Pressure, Temperature, Humidity)
MicroPython:
MicroPython: BME280 with ESP32 and ESP8266 (Pressure, Temperature, Humidity)
Get a BME280 temperature, humidity, and pressure sensor.
5. BME680 Environmental Sensor (Gas, Pressure, Humidity, Temperature)
The BME680 is an environmental sensor that combines gas, pressure, humidity, and temperature sensors. The gas sensor can detect a broad range of gases like volatile organic compounds (VOC). For this reason, the BME680 can be used in indoor air quality control.
To get started, follow the next tutorials:
Arduino core:
ESP32: BME680 Environmental Sensor using Arduino IDE (Gas, Pressure, Humidity, Temperature)
MicroPython:
MicroPython: BME680 with ESP32 and ESP8266 (Temperature, Humidity, Pressure, Gas)
Get a BME680 environmental sensor.
6. BMP388 Altimeter Sensor (Pressure, Altitude, Temperature)
The
BMP388
is a precise, low-power, low-noise absolute barometric pressure sensor that measures absolute pressure and temperature. Because pressure changes with altitude, we can also estimate altitude with great accuracy. For this reason, this sensor is handy for drone navigation and other applications like vertical velocity calculation; internet of things; weather forecast, and weather stations; health care applications; fitness applications; and much more.
To get started, follow the next tutorial:
Arduino core:
ESP32 with BMP388 Barometric/Altimeter Sensor (Arduino IDE)
Get a BMP388 altimeter sensor.
7. BMP180 Barometric Sensor (Pressure, Altitude, Temperature)
The BMP180 is a digital pressure sensor and it measures the absolute pressure of the air around it. It features a measurement range from 300 to 1100hPa with an accuracy down to 0.02 hPa. Because temperature affects the pressure, the sensor comes with a temperature sensor to give temperature-compensated pressure readings.
Additionally, because the pressure changes with altitude, you can also estimate the altitude based on the current pressure measurement. The sensor communicates with a microcontroller using I2C communication protocol.
To get started, follow the next tutorial:
Arduino core:
ESP32 with BMP180 Barometric Sensor – Guide
Get a BMP180 barometric sensor.
8. BH1750 Light Sensor
The BH1750 is a 16-bit ambient light sensor that communicates via I2C protocol. It outputs luminosity measurements in lux (SI-derived unit of illuminance). It can measure a minimum of 1 lux and a maximum of 65535 lux. It can be used in a wide variety of projects. For example: to detect if it is day or night; to adjust or turn on/off LED’s brightness accordingly to ambient light; to adjust LCDs and screen’s brightness; to detect if an LED is lit; etc.
To get started, follow the next tutorial:
Arduino core:
ESP32 with BH1750 Ambient Light Sensor
Get a BH1750 ambient light sensor.
9. TDS Sensor (Total Dissolved Solids)
A TDS meter indicates the total dissolved solids like salts, minerals, and metals, in a solution. This parameter can be used to give you an idea of water quality and compare water from different sources. One of the main applications of a TDS meter is aquarium water quality monitoring.
To get started, follow the next tutorial:
Arduino core:
ESP32 with TDS Sensor (Water Quality Sensor)
Get a TDS (total dissolved solids) sensor.
10. Anemometer (Wind Speed Sensor)
An anemometer is a device that allows us to measure wind speed. It is commonly used in weather stations. Learn how to use it with the ESP32:
Arduino core:
ESP32 with an Anemometer: Measure Wind Speed (Arduino IDE)
MicroPython:
MicroPython: ESP32/ESP8266 with Anemometer (Wind Sensor)
Get a wind speed sensor compatible with the ESP32
11. APDS9960 Pr
We have a similar article for the ESP8266:
25 Free Guides for Sensors and Modules [ESP8266]
Here’s a quick list of the sensors/modules:
Environmental Sensors:
DS18B20 Temperature Sensor
Type-K Thermocouple Temperature Sensor
DHT11/DHT22 Temperature and Humidity Sensor
BME280 Temperature, Humidity, and Pressure Sensor
BME680 Environmental Sensor (Gas, Pressure, Humidity, Temperature)
BMP388 Altimeter Sensor (Pressure, Altitude, Temperature)
BMP180 Barometric Sensor (Pressure, Altitude, Temperature)
BH1750 Light Sensor
TDS Sensor (Total Dissolved Solids)
Anemometer (wind speed sensor)
APDS9960 Proximity, Light, RGB, and Gesture Sensor
Motion-Related Sensors:
PIR Motion Sensor
Door Sensor (reed switch)
HC-SR04 Ultrasonic Sensor
MPU6050 Accelerometer and Gyroscope
RCWL-0516 Microwave Radar Proximity Sensor
NEO-6M GPS Module
NEO-M8N GPS Module
Other Sensors/Modules/Peripherals:
microSD Card Module
Potentiometer
Relay Module
Load Cell with HX711 Amplifier
DS1307 Real Time Clock Module (RTC)
DS3231 Real Time Clock Module (RTC)
YX5300/YX6300 MP3 Player
Displays:
OLED Display (SSD1306)
I2C LCD (Liquid Crystal Display)
RGB LED Strip
TM1637 4-Digit 7-Segment Display
TFT LCD Touchscreen Display (2.8 inch ILI9341)
Communication:
LoRa Transceiver
I2C Multiplexer (TCA9548A)
MFRC522 RFID Reader
Motors:
Servo Motor
DC Motor
Stepper Motor
Environmental Sensors
1. DS18B20 Temperature Sensor
The DS18B20 temperature sensor is a one-wire digital temperature sensor. This means that it just requires one data line (and GND) to communicate with your ESP32. Each DS18B20 temperature sensor has a unique 64-bit serial code. This allows you to wire multiple sensors to the same data wire. So, you can get temperature from multiple sensors using just one GPIO.
The DS18B20 temperature sensor is also available in waterproof version.
To get started, you can follow the next tutorials:
Arduino core:
ESP32 DS18B20 Temperature Sensor with Arduino IDE (Single, Multiple, Web Server)
ESP32 with Multiple DS18B20 Temperature Sensors
MicroPython:
MicroPython: DS18B20 Temperature Sensor with ESP32 and ESP8266
Get a DS18B20 Temperature Sensor
Get a DS18B20 Temperature Sensor (waterproof version)
2. Type-K Thermocouple Temperature Sensor
A K-type thermocouple is a type of temperature sensor with a wide measurement range like −200 to 1260ºC (−326 to 2300ºF). To get the temperature from the thermocouple we need a thermocouple amplifier. We use the MAX6675 amplifier that is sold together with the thermocouple, but you can use any other amplifier, like the MAX31855.
To get started, follow the next tutorial:
Arduino core:
ESP32: K-Type Thermocouple with MAX6675 Amplifier
Get the Type-K Thermocouple temperature sensor.
3. DHT11/DHT22 Temperature and Humidity Sensor
The DHT11 and DHT22 sensors are used to measure temperature and relative humidity. These sensors contain a chip that does analog to digital conversion and spits out a digital signal with the temperature and humidity. This makes them very easy to use with any microcontroller.
To get started, follow the next tutorials:
Arduino Core:
ESP32 with DHT11/DHT22 Temperature and Humidity Sensor using Arduino IDE
MicroPython:
MicroPython: ESP32/ESP8266 with DHT11/DHT22 Temperature and Humidity Sensor
Get a DHT22 temperature and humidity sensor.
Get a DHT11 temperature and humidity sensor.
4. BME280 Temperature, Humidity, and Pressure Sensor
The
BME280 sensor
module reads barometric pressure, temperature, and humidity. Because pressure changes with altitude, you can also estimate altitude. There are several versions of this sensor module: some can communicate using only I2C communication protocol, and others have the additional option to use the SPI communication protocol. We usually use the I2C protocol with this sensor. This sensor is very versatile and we use it in many of our tutorials.
To get started, follow the next tutorials:
Arduino core:
ESP32 with BME280 Sensor using Arduino IDE (Pressure, Temperature, Humidity)
MicroPython:
MicroPython: BME280 with ESP32 and ESP8266 (Pressure, Temperature, Humidity)
Get a BME280 temperature, humidity, and pressure sensor.
5. BME680 Environmental Sensor (Gas, Pressure, Humidity, Temperature)
The BME680 is an environmental sensor that combines gas, pressure, humidity, and temperature sensors. The gas sensor can detect a broad range of gases like volatile organic compounds (VOC). For this reason, the BME680 can be used in indoor air quality control.
To get started, follow the next tutorials:
Arduino core:
ESP32: BME680 Environmental Sensor using Arduino IDE (Gas, Pressure, Humidity, Temperature)
MicroPython:
MicroPython: BME680 with ESP32 and ESP8266 (Temperature, Humidity, Pressure, Gas)
Get a BME680 environmental sensor.
6. BMP388 Altimeter Sensor (Pressure, Altitude, Temperature)
The
BMP388
is a precise, low-power, low-noise absolute barometric pressure sensor that measures absolute pressure and temperature. Because pressure changes with altitude, we can also estimate altitude with great accuracy. For this reason, this sensor is handy for drone navigation and other applications like vertical velocity calculation; internet of things; weather forecast, and weather stations; health care applications; fitness applications; and much more.
To get started, follow the next tutorial:
Arduino core:
ESP32 with BMP388 Barometric/Altimeter Sensor (Arduino IDE)
Get a BMP388 altimeter sensor.
7. BMP180 Barometric Sensor (Pressure, Altitude, Temperature)
The BMP180 is a digital pressure sensor and it measures the absolute pressure of the air around it. It features a measurement range from 300 to 1100hPa with an accuracy down to 0.02 hPa. Because temperature affects the pressure, the sensor comes with a temperature sensor to give temperature-compensated pressure readings.
Additionally, because the pressure changes with altitude, you can also estimate the altitude based on the current pressure measurement. The sensor communicates with a microcontroller using I2C communication protocol.
To get started, follow the next tutorial:
Arduino core:
ESP32 with BMP180 Barometric Sensor – Guide
Get a BMP180 barometric sensor.
8. BH1750 Light Sensor
The BH1750 is a 16-bit ambient light sensor that communicates via I2C protocol. It outputs luminosity measurements in lux (SI-derived unit of illuminance). It can measure a minimum of 1 lux and a maximum of 65535 lux. It can be used in a wide variety of projects. For example: to detect if it is day or night; to adjust or turn on/off LED’s brightness accordingly to ambient light; to adjust LCDs and screen’s brightness; to detect if an LED is lit; etc.
To get started, follow the next tutorial:
Arduino core:
ESP32 with BH1750 Ambient Light Sensor
Get a BH1750 ambient light sensor.
9. TDS Sensor (Total Dissolved Solids)
A TDS meter indicates the total dissolved solids like salts, minerals, and metals, in a solution. This parameter can be used to give you an idea of water quality and compare water from different sources. One of the main applications of a TDS meter is aquarium water quality monitoring.
To get started, follow the next tutorial:
Arduino core:
ESP32 with TDS Sensor (Water Quality Sensor)
Get a TDS (total dissolved solids) sensor.
10. Anemometer (Wind Speed Sensor)
An anemometer is a device that allows us to measure wind speed. It is commonly used in weather stations. Learn how to use it with the ESP32:
Arduino core:
ESP32 with an Anemometer: Measure Wind Speed (Arduino IDE)
MicroPython:
MicroPython: ESP32/ESP8266 with Anemometer (Wind Sensor)
Get a wind speed sensor compatible with the ESP32
11. APDS9960 Pr
Technologies used
Hardware components
- ESP32
- ESP8266
- Arduino
- DHT11
- DHT22
- BME280
- BMP180
- DS18B20
- HC-SR04
- PIR
- RFID
- RC522
Software & tools
- Arduino IDE
- MicroPython
What you get
- Working project / hardware kit, tested before delivery
- Complete source code with explanation
- Project demo and guidance for your viva
- Project report, PPT and IEEE paper support (on request)
Delivery & Payment
Delivery takes a minimum of two weeks from the date your inquiry is confirmed.
Payment is in two parts:
• 50% advance to start the project
• Remaining 50% before delivery
Note:
• Documentation and PPT are not included by default
• If you need documentation/PPT, it can be arranged for extra time and cost
We'll confirm the exact timeline and cost with you after reviewing your requirements.