【毕设参考】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

相关文章
|
18天前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
105 61
|
2天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
6天前
|
机器学习/深度学习 数据采集 存储
使用Python实现智能农业灌溉系统的深度学习模型
使用Python实现智能农业灌溉系统的深度学习模型
42 6
|
10天前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现智能生态系统监测与保护的深度学习模型
使用Python实现智能生态系统监测与保护的深度学习模型
39 4
|
16天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
30 3
|
3月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的电影订票管理系统
该项目是基于Python+Vue开发的电影订票管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的电影订票管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
26 1
|
3月前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
108 4
|
3月前
|
存储 数据采集 数据可视化
基于Python flask+MySQL+echart的电影数据分析可视化系统
该博客文章介绍了一个基于Python Flask框架、MySQL数据库和ECharts库构建的电影数据分析可视化系统,系统功能包括猫眼电影数据的爬取、存储、展示以及电影评价词云图的生成。
|
3月前
|
数据采集 存储 数据可视化
基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化
本文介绍了一个基于Python Flask框架开发的猫眼电影票房数据分析可视化系统,该系统集成了数据爬取、存储处理、可视化展示和用户交互功能,使用户能够直观地分析和展示电影票房数据,具有高度定制性。
130 0
基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于Python flask的豆瓣电影数据分析可视化系统,功能多,LSTM算法+注意力机制实现情感分析,准确率高达85%
本文介绍了一个基于Python Flask框架的豆瓣电影数据分析可视化系统,该系统集成了LSTM算法和注意力机制进行情感分析,准确率高达85%,提供了多样化的数据分析和情感识别功能,旨在帮助用户深入理解电影市场和观众喜好。
124 0