ESP32 - Temperature Sensor

This tutorial instructs you how to use ESP32 to read the temperature from DS18B20 temperature sensor and print it to Serial Monitor.

Hardware Used In This Tutorial

1×ESP-WROOM-32 Dev Module
1×Micro USB Cable
1×Temperature Sensor DS18B20
1×Jumper Wires
1×(Optional) 5V Power Adapter
1×(Optional) DC Power Jack
1×(Optional) ESP32 Screw Terminal Adapter

One of the following breadboard:

1×Full-sized 830-Point Breadboard
1×Half-sized 400-point Breadboard
1×Mini-sized 170-point Breadboard
1×All-sized Breadboard Kit
Disclosure: some of these links are affiliate links. We may earn a commission on your purchase at no extra cost to you. We appreciate it.

Introduction to One Wire Temperature Sensor - DS18B20

DS18B20 Temperature Sensor Pinout

DS18B20 temperature sensor has three pins:

  • GND pin: connect this pin to GND (0V)
  • VCC pin: connect this pin to VCC (5V or 3.3V)
  • DATA pin: is 1-Wire Data Bus. It should be connected to a digital pin on ESP32.

The DS18B20 sensor has two forms:

  • TO-92 package (looks similar to a transistor)
  • Waterproof probe. We use this form in this tutorial.
DS18B20 temperature sensor Pinout

Connecting a DS18B20 temperature sensor with an Arduino often requires a pull-up resistor, which can be a hassle. However, some manufacturers have made the process simpler by offering a wiring adapter with a built-in pull-up resistor and a screw terminal block for easy connection.

Wiring Diagram between DS18B20 Temperature Sensor and ESP32

  • With breadboard
ESP32 Temperature Sensor Wiring Diagram

This image is created using Fritzing. Click to enlarge image

  • Wiring diagram with adapter (recommended)
ESP32 DS18B20 Wiring Diagram

This image is created using Fritzing. Click to enlarge image

  • Real wiring diagram with adapter
ESP32 DS18B20 adapter wiring diagram

This image is created using Fritzing. Click to enlarge image

For ease of connection, it's advisable to purchase a DS18B20 sensor that comes with a wiring adapter equipped with a built-in resistor, eliminating the need for an additional resistor in the wiring.

ESP32 Code

/* * This ESP32 code is created by esp32io.com * * This ESP32 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-temperature-sensor */ #include <OneWire.h> #include <DallasTemperature.h> #define SENSOR_PIN 17 // ESP32 pin GIOP17 connected to DS18B20 sensor's DATA pin OneWire oneWire(SENSOR_PIN); DallasTemperature DS18B20(&oneWire); float tempC; // temperature in Celsius float tempF; // temperature in Fahrenheit void setup() { Serial.begin(9600); // initialize serial DS18B20.begin(); // initialize the DS18B20 sensor } void loop() { DS18B20.requestTemperatures(); // send the command to get temperatures tempC = DS18B20.getTempCByIndex(0); // read temperature in °C tempF = tempC * 9 / 5 + 32; // convert °C to °F Serial.print("Temperature: "); Serial.print(tempC); // print the temperature in °C Serial.print("°C"); Serial.print(" ~ "); // separator between °C and °F Serial.print(tempF); // print the temperature in °F Serial.println("°F"); delay(500); }

Quick Instructions

  • If this is the first time you use ESP32, see how to setup environment for ESP32 on Arduino IDE.
  • Do the wiring as above image.
  • Connect the ESP32 board to your PC via a micro USB cable
  • Open Arduino IDE on your PC.
  • Select the right ESP32 board (e.g. ESP32 Dev Module) and COM port.
  • On Arduino IDE, Navigate to Tools Manage Libraries
ESP32 add library
  • Type “OneWire” on the search box, then look for the OneWire library by Paul Stoffregen
  • Click Install button to install OneWire library.
ESP32 onewire library
  • Type “Dallas” on the search box, then look for the DallasTemperature library by Miles Burton.
  • Click Install button to install DallasTemperature library.
ESP32 Dallas Temperature library
  • Copy the above code and paste it to Arduino IDE.
  • Compile and upload code to ESP32 board by clicking Upload button on Arduino IDE
  • Make the sensor hotter or colder by gripping the DS18B20 temerature sensor on your hand, or embedding it on hot and cold water.
  • See the result on Serial Monitor. It looks like the below:.
COM6
Send
Temperature: 26.31°C ~ 79.36°F Temperature: 26.44°C ~ 79.59°F Temperature: 26.50°C ~ 79.70°F Temperature: 26.56°C ~ 79.81°F Temperature: 27.06°C ~ 80.71°F Temperature: 27.75°C ~ 81.95°F Temperature: 28.37°C ~ 83.07°F Temperature: 29.00°C ~ 84.20°F Temperature: 29.56°C ~ 85.21°F Temperature: 30.00°C ~ 86.00°F Temperature: 30.31°C ~ 86.56°F Temperature: 30.62°C ~ 87.12°F Temperature: 30.87°C ~ 87.57°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Making video is a time-consuming work. If the video tutorial is necessary for your learning, please let us know by subscribing to our YouTube channel , If the demand for video is high, we will make the video tutorial.

※ OUR MESSAGES