ESP32开发之旅基于ESP32的室内空气质量检测系统
目录
ESP32开发之旅——基于ESP32的室内空气质量检测系统
ESP32开发之旅——基于ESP32的室内空气质量检测系统
前言
- 本文主要是我课设项目的一个备忘,部分资料来源于网上收集。
- 本设计以ESP32作为控制核心,用DHT11温湿度传感器对空气中的温度和湿度进行采集,MQ135模块对空气中的污染物进行监测,然后将采集到的数据传送给ESP32控制器进行处理,由ESP32将采集到数据整合后通过MQTT协议上传到阿里云IOT平台,由阿里云平台根据数据进行相应的处理,并将数据进行可视化显示。
成果展示
1. web端界面
2.硬件端
核心代码
MQTT部分
####阿里云配置
SERVER = '106.15.83.29' # 域名
####三元组
ProductKey = ""
DeviceName = ""
password = '' ###根据DeviceSecret在第三方平台上计算
CLIENT_ID = DeviceName + "|securemode=3,signmethod=hmacsha1|" # 设备ID
username = DeviceName +'&' + ProductKey
publish_TOPIC = '/sys/'+ProductKey+'/'+DeviceName+'/thing/event/property/post'
subscribe_TOPIC = '/sys/'+ProductKey+'/'+DeviceName+'/thing/event/property/post_reply'
client = None
def sub_cb(topic, msg): ###接收aliyun发送过来的消息
msg = bytes.decode(msg) ###将接收到的bytes类型数据转换成字符串
msg = eval(msg)
temp = msg.get("params") ###提取返回的信息
print(temp)
if temp != None: ###对硬件进行操作
AIR.value(temp.get("air"))
Gl.value(temp.get("LED"))
def apptimerevent(mytimer): ###将获取到的数据上传到aliyun上
try:
sensordata = ReadTemHum()
mymessage = '{"params": {"CurrentTemperature": %d ,"CurrentHumidity": %d ,"AQI":%d}, "method": "thing.event.property.post"}' % (
sensordata[0], sensordata[1], sensordata[2]) ##和阿里云上设置的属性相同
client.publish(topic=publish_TOPIC, msg=mymessage, retain=False, qos=0)
except Exception as ex_results2:
print('exception', ex_results2)
mytimer.deinit()
def on_message(client, userdata, msg):
'''处理message回调'''
print('topic: {}'.format(msg.topic))
print('message: {}'.format(str(msg.payload)))
获取传感器数据部分
def ReadTemHum(): ###获取传感器的数据
mydht.measure() ###读取温湿度传感器数据
qt_data = mymq.read() ###读取MQ135空气质量传感器数据
tem = mydht.temperature() ###提取温度数据
hum = mydht.humidity() ###提取湿度数据
if qt_data >= 2000: ###防止将MQ135产生的异常数据上传
qt_data = 0
data = [tem, hum, qt_data] ###将数据整合到列表里面,方便上面函数调用
print(data)
return data
连接WiFi部分
#######WIFI配置
SSID = " "
PASSWORD = " "
def ConnectWifi(ssid, passwd): ###用来建立wifi连接
global wlan
wlan = network.WLAN(network.STA_IF) # create a wlan object
wlan.active(True) # Activate the network interface
wlan.disconnect() # Disconnect the last connected WiFi
wlan.connect(ssid, passwd) # 进行连接
while (wlan.ifconfig()[0] == '0.0.0.0'):
time.sleep(1)
print(wlan.ifconfig())
结尾
懒人包下载链接: