Note
Hello, welcome to the SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebook! Dive deeper into Raspberry Pi, Arduino, and ESP32 with fellow enthusiasts.
Why Join?
Expert Support: Solve post-sale issues and technical challenges with help from our community and team.
Learn & Share: Exchange tips and tutorials to enhance your skills.
Exclusive Previews: Get early access to new product announcements and sneak peeks.
Special Discounts: Enjoy exclusive discounts on our newest products.
Festive Promotions and Giveaways: Take part in giveaways and holiday promotions.
👉 Ready to explore and create with us? Click [here] and join today!
7.2 Room Temperature Meter¶
Using a thermistor and an I2C LCD1602, we can create a room temperature meter.
This project is very simple, it is based on 2.13 Thermometer with I2C LCD1602 to display the temperature.
Required Components
In this project, we need the following components.
It’s definitely convenient to buy a whole kit, here’s the link:
Name |
ITEMS IN THIS KIT |
LINK |
---|---|---|
Kepler Kit |
450+ |
You can also buy them separately from the links below.
SN |
COMPONENT |
QUANTITY |
LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro USB Cable |
1 |
|
3 |
1 |
||
4 |
Several |
||
5 |
1(10KΩ) |
||
6 |
1 |
||
7 |
1 |
Schematic
Wiring
Code
Note
Open the
7.2_room_temperature_meter.py
file under the path ofkepler-kit-main/micropython
or copy this code into Thonny, then click “Run Current Script” or simply press F5 to run it.Don’t forget to click on the “MicroPython (Raspberry Pi Pico)” interpreter in the bottom right corner.
For detailed tutorials, please refer to Open and Run Code Directly.
from lcd1602 import LCD
from machine import I2C, Pin
import utime
import math
# Initialize the thermistor (ADC on pin 28) and LCD display
thermistor = machine.ADC(28) # Analog input from the thermistor
# Initialize I2C communication for the LCD1602 display
i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
# Create an LCD object for controlling the LCD1602 display
lcd = LCD(i2c)
# Main loop to continuously read temperature and display it
while True:
# Read raw ADC value from the thermistor
temperature_value = thermistor.read_u16()
# Convert the raw ADC value to a voltage (0-3.3V range)
Vr = 3.3 * float(temperature_value) / 65535 # ADC value to voltage conversion
# Calculate the thermistor resistance (using a voltage divider with a 10kOhm resistor)
Rt = 10000 * Vr / (3.3 - Vr) # Rt = thermistor resistance
# Use the Steinhart-Hart equation to calculate the temperature in Kelvin
# The values used are specific to the thermistor (3950 is the beta coefficient)
temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Temperature in Kelvin
# Convert temperature from Kelvin to Celsius
Cel = temp - 273.15
# Display the temperature on the LCD in Celsius
string = " Temperature is \n " + str('{:.2f}'.format(Cel)) + " C" # Format string for the LCD
lcd.message(string) # Display the string on the LCD
utime.sleep(1) # Wait for 1 second
lcd.clear() # Clear the LCD for the next reading
The LCD will display the temperature value in the current environment after the program runs.
Note
If the code and wiring are fine, but the LCD still does not display content, you can turn the potentiometer on the back to increase the contrast.