Home » ESP32 and MCP9808 digital temperature sensor example

ESP32 and MCP9808 digital temperature sensor example

by shedboy71

In this example we connect the MCP9808 to the ESP32

The MCP9808 digital temperature sensor converts temperatures between -20°C and +100°C to a digital word with ±0.5°C (max.) accuracy. The MCP9808 comes with user-programmable registers that provide flexibility for temperature sensing applications. The registers allow user-selectable settings such as Shutdown or low-power modes and the specification of temperature Event and Critical output boundaries.

When the temperature changes beyond the specified boundary limits, the MCP9808 outputs an Event signal. The user has the option of setting the event output signal polarity as an active-low or active-high comparator output for thermostat operation, or as temperature event interrupt output for microprocessor-based systems. The event output can also be configured as a Critical temperature output. This sensor has an industry standard 2-wire, SMBus and Standard I2C™Compatible compatible (100kHz/400kHz bus clock) serial interface, allowing up to eight sensors to be controlled in a single serial bus.
Features

Accuracy:
±0.25°C (typical) from -40°C to +125°C
±0.5°C (maximum) from -20°C to +100°C

User Selectable Measurement Resolution:
0.5°C, 0.25°C, 0.125°C, 0.0625°C

User Programmable Temperature Limits:
Temperature Window Limit
Critical Temperature Limit

User Programmable Temperature Alert Output
Operating Voltage Range: 2.7V to 5.5V

More details about the sensor at http://www.microchip.com/wwwproducts/en/MCP9808

This typically comes in a breakout such as the one in the breakout below

mcp9808 breakout

mcp9808 breakout

Parts Required

Here are the parts I used

 

Name Link
ESP32
MCP9808
Connecting cables

Wiring

Connect Vin to Lolin32 3v3
Connect GND to Lolin32  Gnd
Connect SCL to Lolin32  22
Connect SDA to Lolin32 21

This layout should show you how to connect the module to the Lolin32

lolin32 and mcp9808

lolin32 and mcp9808

Code

You will need the adafruit MCP9808 library which is available at https://github.com/adafruit/Adafruit_MCP9808_Library/archive/master.zip

#include <Wire.h>
#include "Adafruit_MCP9808.h"

// Create the MCP9808 temperature sensor object
Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();

void setup() {
Serial.begin(9600);

if (!tempsensor.begin())
{
Serial.println("Couldn't find MCP9808!");
while (1);
}
}

void loop() {
// Read and print out the temperature, then convert to *F
float c = tempsensor.readTempC();
float f = c * 9.0 / 5.0 + 32;
Serial.print("Temp: ");
Serial.print(c);
Serial.print(" C\t");
Serial.print(f);
Serial.println(" F");
delay(250);

tempsensor.shutdown_wake(1);
delay(2000);
tempsensor.shutdown_wake(0);

}

 

Results

Open the serial monitor and you should see something like this

Temp: 28.75 C 83.75 F
Temp: 28.75 C 83.75 F
Temp: 28.69 C 83.64 F
Temp: 27.62 C 81.72 F
Temp: 27.06 C 80.71 F
Temp: 26.62 C 79.93 F
Temp: 26.25 C 79.25 F

 

You may also like

Leave a Comment

Adblock Detected

Please support us by disabling your AdBlocker extension from your browsers for our website.