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

   下图是本案例的四步导学。

简介

   目前很多写字楼、酒店等入口都采用自动感应的方式开门、关门,当有人靠近时,门就会自动打开,远离时会自动关门;有时候也需要将自动门设置常开状态,比如需要多次进出大门搬卸货物的时候,不需要让门关闭;或者夜晚、放假时,需要将自动门设置常闭状态,不允许任何人进入,除非人为设置解锁为正常状态。本案例采用ESP32开发板结合红外感应、舵机以及阿里云物联网平台,只需4步,就可以搭建简单的应用场景来模拟自动感应门的功能。

准备

  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固件并且其开发环境已经搭建完毕。详情请参考ESP32开发环境的说明。

创建解决方案

   如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“auto_control_door”)及工作区路径之后,硬件类型选择"nodemcu32s",点击”立即创建“,创建一个Python轻应用的解决方案。

  下载本案例代码并解压将所有文件复制后覆盖“auto_control_door”工程根目录原有文件,然后进行如下设定完成设备端代码的开发。

Python脚本的详细说明请参考脚本内嵌的文字注释

  1. 修改路由器名称及密码

   修改auto_control_door工程里main.py中SSID和PWD的值为开发者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在''符号中间)。

# Wi-Fi SSID和Password设置
SSID='Your-AP-SSID'
PWD='Your-AP-Password'

   修改完成之后connect_wifi函数就会连接开发者自己设定的路由器。

  1. 修改设备的三元组信息

   按照创建产品、设备步骤获取三元组信息,填入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
link 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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值