?? 下图是本案四步导学。
简介
?? 目前,许多办公楼、酒店等入口采用自动感应开关。当有人靠近时,门会自动打开,远离时会自动关闭;有时,自动门需要设置常开状态。例如,当你需要多次进出门来搬运货物时,你不需要关上门;或者在夜间和假期,除非人工解锁,否则自动门需要设置常闭状态。本案例采用ESP结合红外感应、舵机和阿里云物联网平台,32开发板可以构建一个简单的应用场景来模拟自动感应门的功能。
准备
- ESP32开发板 一套
- SG90舵机 一个
- 红外避障传感器 一个
- 连接线 若干
所涉及的硬件采购链接如下,仅供参考,不负责商家发货的质量保证等问题!
名称 | 数量 | 参考链接 |
ESP32开发板 | 1套 | ESP32开发板一套 |
SG90角度舵机 | 1个 | 舵机一个 |
红外避障传感器 | 1个 | 一个红外避障传感器 |
母对母杜邦线 | 若干 | 母对母杜邦线 请选用10cm长即可 |
公对母杜邦线 | 若干 | 公对母杜邦线 请选用10cm长即可 |
?? 如下图所示:硬件连线图:
云端开发
注册阿里云账号
?? 进入阿里云官网,注册阿里云账号 。注册后登录官网。如果您已经有阿里云账号,可以直接登录。
创建产品和设备
?? 进入阿里云IoT控制台,进入公共实例,创建产品和设备。
?? 然后进入设备管理模块,选择创建设备,输入设备的唯一标志。创建后,您可以在设备详细信息页面上查看设备证书,即设备的三元组信息(产品)ProductKey、设备名称DeviceName、设备密钥DeviceSecret)
?? 创建产品和设备后,开始创建产品模型。请访问阿里巴巴云物联网平台。本案例创建了2个属性,一个是设备上报累计人员数量“total_person_count另一种是云设置设备的门禁状态属性door_status”。具体操作流程如下,也可参考下载模型定义文件后直接导入上线。
?? 点击下载模型文件,直接导入,选择在线发布。
IoT Stuido创建移动应用
?? 进到IoT Studio控制台主页,选择项目管理,新建空白项目,如这里创建的项目名称为自动门禁控制。
?? 点击自动门禁控制项目,进入项目配置,关联产品设备
?? 然后,选择移动应用程序立一个新的移动应用。
?? 进入应用程序编辑,选择组件->基础组件->图表->实时曲线
?? 选择要检测的产品和设备,并报告设备的人员统计数量属性
?? 然后继续添加单选组件,选择样式->配置静态数据源。
?? 修改组件名称为门禁状态设置
详细的静态数据内容与上述模型定义的门禁状态一致
[ { "label": "正常", "value": "1" }, { "label": "常闭", "value": "-1" }, { "label": "常开", "value": "1" } ]
?? 然后切换到交互,增加交互,事件为值变化,行动为设置设备属性,然后配置与设备相关的产品和设备。可点击设置设备上的门禁状态door_status配置门禁常开、常闭、正常状态的值。常闭闭状态下,即使红外感觉到有人靠近,舵机也不会转动操作开门;常开状态时,舵机即使没有人,也不会回转操作关门。这种交互意味着页面选择一个值时,选择属性值将自动发送到设备。比如选择常开,会自动向设备发送消息,设置door_status=1“。
?? 点击页面右上角的保存->预览
设备端开发
开发环境准备
?? 下一步前请确保ESP32中烧录HaaS Python固件及其开发环境已建成。详情请参考ESP开发环境的说明。
创建解决方案
?? 如下图所示,打开VS Code之后在新建一个基础helloworld的python设置工程名称(auto_control_door工作区路径后,选择硬件类型"nodemcu32s",点击立即创建Python轻应用解决方案。
??下载本案例代码并解压复制所有文件并覆盖auto_control_door”工程根目录原有文件,然后进行如下设定完成设备端代码的开发。
Python请参考脚本中嵌入的文本注释
?? 修改auto_control_door工程里main.py中SSID和PWD该值是开发者实际要连接的路由器的名称和密码(请注意,所有的名称和密码都需要放在符号中间)。
# Wi-Fi SSID和Password设置 SSID='Your-AP-SSID' PWD='Your-AP-Password'
?? 修改完成后connect_wifi函数将连接开发者自己设置的路由器。
?? 按照创建产品和设备的步骤获取三元组信息,填写main.py中:
# HaaS设备三元组 productKey = "Your-ProductKey" deviceName = "Your-devicename" deviceSecret = "Your-deviceSecret"
?? 导入代码后的目录结构和更新Wi-Fi三元组位置如下截图
?? 最后点击VSCode中HaaS Studio选择相应的端口运行或串口,选择相应的端口编号烧录程序。详见烧录方法:ESP32开发环境说明。烧录后串口执行log如下:
Wi-Fi is connecting... Wi-Fi is connecting... Wi-Fi is connected IP: xxx.xxx.xxx.xxx NTP start... NTP done establish tcp connection with server(host='xxx.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443]) tcp_connect: can only connect from state CLOSED success to establish tcp, fd=54 lnk platform connected init ir... ir inited! init servo... buzzer inited! open the door object detected, count = 1 累计人员数量上报成功 object detected, count = 2 累计人员数量上报成功 object detected, count = 3 累计人员数量上报成功 object detected, count = 4 累计人员数量上报成功 no object detected close the door no object detected no object detected object detected, count = 5 累计人员数量上报成功 object detected, count = 6 累计人员数量上报成功 door_status set value : 1 object detected, count = 7
端云连调
云端查看设备上报结果
此时如果用物体遮挡红外感应器,舵机则会立即转动90度,隔5秒后会自动再转回原位置。同时可以看到云端实时曲线展示截止当前累计人员流量曲线图。
接着通过云端设置状态为“常开”,也可以手机扫码设置,此时在VSCode可以看到如下log显示,同时舵机会自动转动90度。之后如果用物体遮挡红外,舵机不会再转动,物体远离红外,舵机也不会再转回原位置。
object detected, count = 26 累计人员数量上报成功 door_status set value : 1 #手机端页面设置“常开”状态时收到的指令日志 object detected, count = 27
扫描二维码后,开启设备进行拍摄,此时在手机端就可以看到如下监控曲线,同时也可以选中门禁状态,会自动向设备端发送状态设置,日志和上面的PC页面设置时一样。这里的二维码有效期24小时,如需发布长期使用,请在阿里云域名注册申请独立域名后在Iot Studio配置才可。
后记
笔者这里实现了软件和硬件的开发,实际产品还需要结构设计,读者完成此案例之后可以尝试设计此自动开门系统的结构设计(可以用3D打印或亚克力外壳裁剪拼接)。
来这里发现更多有趣案例
HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。https://haas.iot.aliyun.com/solution