【ESP32-S31 Function coreboard-1开发板】物联网温湿度计
本文介绍了 ESP32-S31 Function coreboard-1 开发板结合 DHT11 和 OLED 模块以及 WiFi 功能,实现物联网温湿度计的项目设计。
项目介绍
制作一款 DHT11 物联网温湿度计。
准备工作:硬件连接、环境搭建;
工程测试:传感器驱动、OLED驱动、流程图、工程代码;
效果演示:物联网 IoT 平台配置、MQTT 上传、OLED 显示实时显示。

硬件连接
DHT11 传感器模块与 ESP32-S31 接线
| DHT11 | ESP32-S31 | Note |
| Data | GPIO1 | Data |
| GND | GND | Ground |
| VCC | 3V3 | Power |
OLED 屏幕与 ESP32-S31 接线
| OLED | ESP32-S31 | Note |
| SCL | GPIO47 | Serial Clock Line |
| SDA | GPIO48 | Serial Data Line |
| GND | GND | Ground |
| VCC | 3V3 | Power |
实物图


环境搭建
烧录 MicroPython 固件至开发板;
下载并安装 Thonny IDE 软件;
详见:【ESP32-S31_Function_coreboard-1开发板】介绍、环境搭建、工程测试 .
流程图

工程代码
运行 Thonny IDE 新建文件,添加如下代码
import machine
import dht
import time
import network
from umqtt.simple import MQTTClient
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
# ========== 配置信息 ===========
# WiFi
WIFI_SSID = "xxx"
WIFI_PASSWORD = "xxx"
# 物联网平台 MQTT 配置
MQTT_CLIENT_ID = "dht11" # 自定义ID
MQTT_BROKER = "iot.kittenbot.cn"
MQTT_PORT = 1883
# 发布主题
TOPIC_TEMP = "xxx/dht11/temperature"
TOPIC_HUMI = "xxx/dht11/humidity"
# ==== Initialized IIC OLED ====
i2c=I2C(0,sda=Pin(48), scl=Pin(47), freq=400000)
oled_width = 128
oled_height = 64
oled = SSD1306_I2C(oled_width, oled_height, i2c)
def display_TH(temp,humi):
oled.fill(0)
oled.text("Temperature:", 0, 0)
oled.text("{:.1f} C".format(temp), 20, 15)
oled.text("Humidity:", 0, 35)
oled.text("{:.1f} %".format(humi), 20, 50)
oled.rotate(0)
oled.show()
# DHT11 传感器
d = dht.DHT11(machine.Pin(1))
# WiFi 连接
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("正在连接WiFi...")
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
while not wlan.isconnected():
time.sleep(0.5)
print("WiFi连接成功!IP:", wlan.ifconfig()[0])
# MQTT 连接
def connect_mqtt():
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, port=MQTT_PORT)
try:
client.connect()
print("MQTT连接小猫物联网平台成功!")
return client
except Exception as e:
print("MQTT连接失败:", e)
return None
# 主程序
def main():
connect_wifi() # 连接WiFi
client = connect_mqtt() # 连接MQTT
if not client:
print("MQTT连接失败,程序退出")
return
print("开始上传温湿度数据...")
while True:
try:
# 读取 DHT11 数据
d.measure()
t = d.temperature()
h = d.humidity()
# 串口打印
print('Temperature: {}°C'.format(t))
print('Humidity: {}%'.format(h))
# OLED 显示
display_TH(t,h)
# 发布到 MQTT
client.publish(TOPIC_TEMP, str(t))
client.publish(TOPIC_HUMI, str(h))
print("数据上传成功")
except OSError as e:
print("读取传感器失败,正在重试...")
# 出错后重连 MQTT
client = connect_mqtt()
# 延时
time.sleep(2)
# 运行主程序
if __name__ == "__main__":
main()保存代码。
效果演示
运行程序,接入 WiFi,连接物联网平台 MQTT 服务器;
连续上传 DHT11 温湿度数据;


OLED 显示实时温湿度数据;


使用 MQTTX 测试云端接收消息;


物联网
打开物联网 IoT 服务器平台 https://kzone2.kittenbot.cn/iot-studio
进入 话题中心 模块,新建话题;
编辑话题,包括 ID、Topic、描述备注等;
进入 可视化面板 标签页,点击右上角 新建项目 按钮;
创建空白面板,在组件库中找到图表下的仪表盘图标,拖拽至主面板,并配置参数,点击 运行 按钮;
接收到 ESP32-S31 上传的温湿度数据,面板实时更新;


点击右上角的显示器按钮,打开 话题监视器 ,即可获取文本消息内容;


总结
本文介绍了 ESP32-S31 Function coreboard-1 开发板结合 DHT11 和 OLED 模块以及 WiFi 功能,实现物联网温湿度计的项目设计,为相关产品在物联网 IoT 等领域的快速开发和应用设计提供了参考。
我要赚赏金
