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

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

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




简介

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


准备

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


创建解决方案

  如下图所示,打开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

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打印或亚克力外壳裁剪拼接)。


来这里发现更多有趣案例

————————————————

版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HaaSTech/article/details/124444498

相关文章
|
4天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
21 4
|
1月前
|
机器学习/深度学习 数据采集 供应链
Python实现深度学习模型:智能库存管理系统
【10月更文挑战第5天】 Python实现深度学习模型:智能库存管理系统
163 9
|
1月前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
118 61
|
19天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
11天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
43 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
11天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
52 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
23天前
|
机器学习/深度学习 数据采集 存储
使用Python实现智能农业灌溉系统的深度学习模型
使用Python实现智能农业灌溉系统的深度学习模型
114 6
|
27天前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现智能生态系统监测与保护的深度学习模型
使用Python实现智能生态系统监测与保护的深度学习模型
79 4
|
1月前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
41 3
|
1月前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
27 2
下一篇
无影云桌面