第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云

esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云

时间:2021-09-05 04:21:12

相关推荐

esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云

1 课设目的

本课设是通过esp32板子搭配DHT11传感器,检测温度和湿度数据通过MQTT协议实时传输到阿里云物联网开发平台,实现设备上云。

2 阿里云环境准备

2.1开通物联网平台

我们先需要注册阿里云账号,然后开通物联网平台

网址:https://iot./lk/summary/new

2.2 创建产品

当我们成功产品之后呢,将我们需要的信息记录下来:设备名以及地域名,本文提供完整的阿里云地域和可用区列表。每个地域完全独立。每个可用区完全隔离,但同一个地域内的可用区之间使用低时延链路相连。

地域和可用区之间的关系如下图所示:

我的设备所在地域是华北2,所以Region ID: cn-beijing

2.3查看 ProductKey, DeviceName,DeviceSecret信息

根据MQTT-TCP官方文档我们需要得知一机一密规则:

YourProductKey.iot−as−mqtt.{YourProductKey}.iot-as-mqtt.YourProductKey.iot−as−mqtt.{YourRegionId}.:1883。这个是接入域名规则,其中:

${YourProductKey}:替换为设备所属产品的ProductKey。

${YourRegionId}:替换成我的设备区域ID

因此得到独一的接入域名

官方说明:

机一密、一型一密预注册认证方式:

使用设备证书(ProductKey、DeviceName和DeviceSecret)连接

mqttClientId:clientId+"|securemode=3,signmethod=hmacsha1,timestamp=13|"

mqttUsername: deviceName+"&"+productKey

mqttPassword: sign_hmac(deviceSecret,content)

根据格式要求就可以得出

CLIENT_ID = 123456|securemode=3,signmethod=hmacsha1|

username=‘mqtt_temp&g38qyn3gRew’

password=‘3484F5004B2392AE9C30B5CFDFD4D87802D3145E’

password需要用到一个密码生成工具,也可以用其他工具生成

file:///D:/Desktop/MQTT_Password/sign.html

2.4带通配符的自定义Topic

![在这里插入图片描述](https://img-/0314003006357.png)

自定义主题中标识符是自己设定的,设定好之后不能更改,在后面的代码会用到。

2.5查看主题

当自定义完主题后会生成一个主题,将${deviceName}更改一下。

一个是设备属性上报,一个是云端相应属性上报,既就是每上报一条数据,平台会给个回复。

将以上内容都完成之后,就完成了环境的准备。

MQTT-TCP连接通信协议规范文档

3 本课设用到esp32 + DHT11

ESP32需要使用到MQTT库,使用网上开源的umqtt:/micropython/micropython-lib/blob/master/umqtt.simple/umqtt/simple.py需要把这个文件导入到ESP32中。

温湿度:MicroPython本身内置了dht模块,支持DHT11、DHT22。

硬件连接

VCC <------>3V3

GND<------>GND

DAT <------>G4(根据自己定)

4 代码实现

from umqtt.simple import MQTTClientfrom machine import Pinimport networkimport timeimport machineimport dhtfrom machine import TimerSSID="LAPTOP-5G"PASSWORD="lihuan12345"SERVER ='106.15.83.29'#域名CLIENT_ID = "123456|securemode=3,signmethod=hmacsha1|" #设备ID#PORT:端口号,库里面默认使用处理username='mqtt_temp&g38qyn3gRew'password='3484F5004B2392AE9C30B5CFDFD4D87802D3145E'publish_TOPIC = '/sys/g38qyn3gRew/mqtt_temp/thing/event/property/post'subscribe_TOPIC='/sys/g38qyn3gRew/mqtt_temp/thing/event/property/post_reply'client=Nonemydht=Nonedef sub_cb(topic, msg):print((topic, msg))def ConnectWifi(ssid,passwd):global wlanwlan=network.WLAN(network.STA_IF) #create a wlan objectwlan.active(True)#Activate the network interfacewlan.disconnect()#Disconnect the last connected WiFiwlan.connect(ssid,passwd) #connect wifiwhile(wlan.ifconfig()[0]=='0.0.0.0'):time.sleep(1)print(wlan.ifconfig())def apptimerevent(mytimer):try:sensordata=ReadTemHum()mymessage='{"params": {"CurrentTemperature": %d ,"CurrentHumidity": %d }, "method": "thing.event.property.post"}'%(sensordata[0],sensordata[1])client.publish(topic=publish_TOPIC,msg= mymessage, retain=False, qos=0)except Exception as ex_results2:print('exception',ex_results2)mytimer.deinit()def ReadTemHum():mydht.measure()tem=mydht.temperature()hum=mydht.humidity()data=[tem,hum]print(data)return dataif __name__=='__main__':try:mydht=dht.DHT11(machine.Pin(4)) ConnectWifi(SSID,PASSWORD)client = MQTTClient(CLIENT_ID, SERVER,0,username,password,60)#create a mqtt clientprint(client)client.set_callback(sub_cb)#set callbackclient.connect()#connect mqttclient.subscribe(subscribe_TOPIC) #client subscribes to a topicmytimer=Timer(0)mytimer.init(mode=Timer.PERIODIC, period=5000,callback=apptimerevent)while True:client.wait_msg() #wait messageexcept Exception as ex_results:print('exception1',ex_results)finally:if(client is not None):client.disconnect()wlan.disconnect()wlan.active(False)

4 总结

本次课设让我懂得了如何让设备上云的流程,DHT11传感器传感器用途,在这个艰辛的历程中,我在网上找到过很多教程,但是版本各有不同,在查阅资料的过程我是理解设备上云的流程吧,利用阿里云物联网平台的说明文档,配合书本,大概清楚是怎么回事,代码也出现很多BUG,最终也一一解决了,总的来说,我觉得这一次真是学到了东西,接下来我会利用这个物联网平台的数据接口,做一个APP或者微信小程序,将数据真正利用起来,再而就是加多的传感器做一个小项目。

参考文献…

[1]MicroPython入门 电子工业出版社

[2] /freemote/article/details/105322722

[3]阿里云物联网平台说

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。