【毕设参考】使用ESP32 + HaaS Python 通过 Modbus 控制强电工业设备 实现低碳节能系统
时间:2022-09-22 17:00:00
低碳节能系统
?? 下图是本案例除硬件连接外的两步导师。请参考图中的说明,每个步骤中实现的功能。
注意事项
1.本案涉及某些强电,仅用于演示,未进行详细的用电安全保护。请保护具体的商业使用。
2.如何使用案例指导nodemcu32s通过Modbus控制外围slave设备。
简介
?? 2020年9月22日,中国首次提出中国将加强国家自主贡献,采取更有力的政策措施,努力在2030年达到峰值,努力在2060年实现碳中和。低碳节能已成为国家的战略决策,日常生活中节能是最好的低碳节能方式。
背景知识
?? 该系统的核心是监控某一区域是否有人员。如果没有人员,电气设备将自动关闭。当有人员存在时,打开电气设备,实现电气开关是否与人员相关,最大限度地节约电能。
?? 本案采用红外传感器,通过继电器控制实现人员检测和电路开关,可满足本案所需的监测范围和条件。
准备
本案例需要以下硬件。
硬件连线图
?? 如下图所示:硬件连线图:
开发物联网平台
开放公共实例
?? 对于第一次使用物联网平台的读者来说,他们需要使用物联网平台功能的实例,这里可以使用免费的公共实例进行开发。
?? 在物联网平台中,左上角选择华东2-上海,点击公共实例即可打开。
?? 物联网平台功能开通后,云设备的创建需要完成以下三个步骤:
- 创建云产品
- 创建产品属性(物模型)
- 创建云设备(获取三元组)
创建云产品
?? 点击上图中的公共实例进入控制台创建产品。然后点击 创建产品
按钮,如下图所示。
?? 如下图所示,在新产品设置页面上设置产品名称,选择自定义类别(自定义类别模型为空,需要自己创建,或通过导入外部模型),节点类型选择直接连接设备,网络模式选择Wi-Fi数据格式选择ICA选择默认设置标准数据格式、检验类型和认证方法。还可以根据开发者自己的需求在“产品描述”页面添加针对此产品的描述。
?? 选择后,单击确认按钮完成产品创建。返回产品页面后,您可以看到新创建的低碳节能系统产品将出现在产品类别表中,如下图所示。
创建产品属性(物模型)
?? 点击上图中的查看按钮,即可查看产品信息,Topic与产品相关的功能设置,如列表、功能定义、数据分析等。点击功能定义标签页,可以看到设备模型的定义。
?? 标识符是设备端上报设备属性状态的消息中需要使用的标识符,只有设备上报的属性符合要求数据定义中的数据取值范围的时候才会被物联网平台记录,否则会被物联网平台认定为非法属性而过滤掉。
?? 在本节中,我们选择创建自定义模型来创建系统所需的物体模型信息,点击上图中的编辑草稿按钮。然后根据下图中的步骤选择添加自定义功能。
然后按下图添加属性。
?? 添加物模型成功后,可以看到我们刚刚创建的物模型属性出现在网页上。is_person_exist代表监控区是否有人。点击确认后,点击发布在线按钮,按照系统提示一步一步完成之前创建的物体模型属性设置。功能定义完成后,单击 发布
按钮完成发布。
?? 该产品的设备可以在产品及其物体模型创建后创建。
创建云设备(获取三元组)
?? 点击产品列表页面 低碳节能系统
后的 管理设备
,进入设备管理页面。单击添加设备按钮进入设备页面, 设置添加设备页面deviceName在这里,开发人员可以填写他们想要设置的设备名称(我们在这里填写设备名称)power1)系统可以自动生成设备名称,无需填写任何内容。
?? 点击 确认 弹出下面的添加完成提示框,单击 前往查看
按钮可以看到设备端的详细信息。
?? 有两种信息需要与设备端开发相匹配:
- 三元组(点击下图中的查看和三元组信息)
- 物体模型属性信息
获取设备三元组
?? 如上图所示,点击查看按钮,可以看到设备的三元组信息(如下图所示)。三元组是物联网设备端与物联网云设备相关的唯一标志符。当设备端连接到云时,将使用三元组信息和云进行识别。识别通过后,云将认为设备已被激活并在线。
查看设备属性信息
?? 设备详情信息页中的“物模型数据”标签页中可以看到设备的所有属性信息、设备事件上报情况及设备服务调用情况,如下图所示。待物联网设备按照设备属性对应的标识符上报设备属性的时候,本图片中的“监控区域内是否有人”属性值就会显示设备最新的属性信息。
创建产品和设备的过程是根据面向对象的想法设计的,其中创建产品可以看作是一个新的类别,物体模型是类别的对象,创建设备是类别的实例。
设备端开发
开发环境
下一步前请确保ESP32开发环境已建成。详情请参考ESP开发环境的说明。
开发原理
(1)人体红外传感器检测到固定区域内是否有人,并给出两种状态变化:无人存在->有人存在,有人存在->无人存在; (2)设备端分别判断两种状态变化并发送Modbus命令通知继电器开/关; (3)继电器与家用电器连接,实现家用电器的开关控制,最终实现低碳节能;
创建解决方案
?? 如下图所示,打开VS Code之后在新建一个基础hellworld的python设置工程名称,设置工程名称(power_saver
)工作区路径后,选择硬件类型nodemcu32s,点击立即创建,创建一个Python轻应用解决方案。
案例代码
?? 下载本案例代码并解压复制所有文件后,覆盖新创建的文件power_saver
工程根目录下的文件。main.py代码区如下图所示:
Python详情请参考脚本嵌入的文字版注释
- 修改路由器名称和密码
?? 修改epidemic_control工程里main.py中wifiSsid和wifiPassword值是读者实际连接的路由器的名称和密码(请注意名称和密码都需要放在里面""符号中间)。
# Wi-Fi SSID和Password设置 wifiSsid = "请填写您的路由器名称" wifiPassword = "请填写您的路由器密码"
?? 修改完成后get_wifi_status函数中的nm.connect(wifiSsid, wifiPassword) 句子将连接读者自己设置的路由器。
- 修改设备端三元组
?? 修改本工程main.py中productKey、deviceName和deviceSecret的为读者创建的物联网设备的三元组信息,具体获取方式如下:
- 修改设备端上报数据所用标识符
power_saver工程里main.py中下面的代码实现的是上传入户门开关状态到云端的功能。其中is_person_exist便是监控区域内是否有人员存在的标识符。
thisIRExist = irDev.irDetect()
print('thisIRExist = ', thisIRExist)
if(lastIRExist != thisIRExist):
# 生成上报到物联网平台的属性值字串,此处的属性标识符"is_person_exist"必须和物联网平台的属性一致
# "is_person_exist" - 表示入户门开关状态
upload_data = {'params': ujson.dumps({
'is_person_exist': thisIRExist,
})
}
# 上传状态到物联网平台
device.postProps(upload_data)
if(thisIRExist == 1):
open_relay(0)
else:
close_relay(0)
lastIRExist = thisIRExist
utime.sleep(CHECK_PERIOD_SEC) # 打印完之后休眠3秒
确保这个标识符和物联网产品的物模型中属性标识符是一样的,如下图所示:
本地查看
推送此脚本到ESP32之后并运行。当监控区域内有人员出现或者无人员出现的时候,设备会监控相关状态并控制家用电器的开关。串口会周期性的打印如下日志:
>>>
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
('192.168.3.196', '255.255.255.0', '192.168.3.1', '192.168.3.1')
establish tcp connection with server(host='xxxxxxxx.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
sleep for 1 s
tcp_connect: can only connect from state CLOSED
success to establish tcp, fd=54
物联网平台连接成功
sleep for 2s
thisIRExist = 0
thisIRExist = 1
thisIRExist = 1
thisIRExist = 1
thisIRExist = 0
thisIRExist = 0
同时我们也能够听到继电器的开合,看到继电器控制的灯泡的亮灭。
物联网平台端设备信息查看
物联网设备的系统启动成功并连接到物联网平台之后,物联网平台上对应的设备状态会从“未激活状态”变为“上线”,在物模型数据标签页上会显示设备上报到物联网平台的属性值。
通过点击"查看数据"按钮也可以看到一段时间监测到的区域内是否有人员存在的相关状态。
到此为止,低碳节能系统的案例就已经完成了。
来这里发现更多有趣案例
HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。https://haas.iot.aliyun.com/solution