目录

ESP32开发之旅基于ESP32的室内空气质量检测系统

ESP32开发之旅——基于ESP32的室内空气质量检测系统

ESP32开发之旅——基于ESP32的室内空气质量检测系统

前言

  • 本文主要是我课设项目的一个备忘,部分资料来源于网上收集。
  • 本设计以ESP32作为控制核心,用DHT11温湿度传感器对空气中的温度和湿度进行采集,MQ135模块对空气中的污染物进行监测,然后将采集到的数据传送给ESP32控制器进行处理,由ESP32将采集到数据整合后通过MQTT协议上传到阿里云IOT平台,由阿里云平台根据数据进行相应的处理,并将数据进行可视化显示。

成果展示

1. web端界面

https://i-blog.csdnimg.cn/blog_migrate/0b394a92666095b335ed9e98ef86cb22.png

2.硬件端

https://i-blog.csdnimg.cn/blog_migrate/e2faa390b4168e6212bbe4c7666e25ce.png

核心代码

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())

结尾

懒人包下载链接: