资讯详情

【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统

?? 下图是本案四步导学。

简介

?? 目前,许多办公楼、酒店等入口采用自动感应开关。当有人靠近时,门会自动打开,远离时会自动关闭;有时,自动门需要设置常开状态。例如,当你需要多次进出门来搬运货物时,你不需要关上门;或者在夜间和假期,除非人工解,否则自动门需要设置常闭状态。本案例采用ESP结合红外感应、舵机和阿里云物联网平台,32开发板可以构建一个简单的应用场景来模拟自动感应门的功能。

准备

  1. ESP32开发板 一套
  2. SG90舵机 一个
  3. 红外避障传感器 一个
  4. 连接线 若干

所涉及的硬件采购链接如下,仅供参考,不负责商家发货的质量保证等问题!

名称 数量 参考链接
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

标签: 传感器pwd12

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台