【毕设参考】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实现智能食品安全追溯系统的深度学习模型
22 4
|
19天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
12天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
43 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
12天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
52 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
机器学习/深度学习 编解码 达摩院
HaaS轻应用(Python):基于HaaS-AI的图像分类
HaaS 即 Hardware as a Service, 它是加速AIoT开发者创新的一个积木平台。Python轻应用是跑在HaaS积木平台上的一套应用框架。他是基于MicroPython进行开发,继承了python优美简介的语法,同时提供了便捷的嵌入式硬件操作库。
HaaS轻应用(Python):基于HaaS-AI的图像分类
|
5天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
11天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
11天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
11天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
2天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
下一篇
无影云桌面