教室管理系统(相关技术和设备:stm32、w5500、mqtt)

2023-11-14

背景

某学校对新建的实验楼有门禁管理需求,因此我们项目组借助KOB门锁(某宝销量较高的电吸锁和电插锁品牌),搭建了前端(微信小程序和网页),服务器(java服务器和mqtt服务器),单片机(基于stm32,用于控制电插锁),实现了一套完整的门禁管理系统。

项目背景

学校有自己的局域网、服务器和交换机,为了安全和可控的保证,要求必须把我们的服务器和设备都搭建在学校内网里。因此我们的单片机必须通过网口接入交换机,和服务器连接。

项目需求

  1. who? 知道开门的人是谁
  2. when? 知道开门的时间,以及开门的持续时间
  3. where? 知道开的是哪个门,房间号是多少
  4. how? 知道开门的原因

具体实现

  1. 单片机:使用stm32f103,和w5500,实现了基于以太网接入的设备,通过mqtt协议,完成对电插锁的控制;通过继电器,实现对教室电路的开关控制
  2. 服务器:使用java和emqx,通过定时器,实现了定时开关门锁;通过账户和权限系统,实现了每个账户名下拥有部分或全部门锁的权限,以及控制门锁开关。
  3. 前端:具体功能包括,注册登录、开关门锁、定时开关门锁、申请某个门锁的控制权、临时申请某个门锁的控制权。
  4. mqtt的主题设计,为了便于后期项目推广和复制,主题设计为
    /地区/学校名称/大楼名称/房间号/sub
    /地区/学校名称/大楼名称/房间号/pub
    其中pub主题用于向服务器推送门锁状态,
    sub主题用于接收来自服务器的开关锁指令

流程

首先是连接方式:
前端(websocket)<--------->(websocket)服务器(mqtt)<--------->(mqtt)控制设备<--------->(继电器)门锁

其次是通讯流程,
1.控制设备每间隔10秒发送一次心跳包,心跳包内容为门锁状态。
2.服务器每次接收到心跳包,转发至前端展示。
3.前端查看状态,发送开门关门指令
4.控制设备接收到开门关门指令,执行指令,并立即发送门锁状态

硬件设计

1.w5500,封装了tcp/ip协议,同时支持多种网络配置方式,本项目由于设备数量大,选择了DHCP方式,自动配置ip地址,
2.KOB门锁,主要有4根线,电源线12v,接地GND,控制线(高电平开门,低电平关门),状态检测线(检测到高电平说明门未闭合,低电平说明门闭合)。
3.继电器,用小电压控制大电压开关的一种元器件。从而实现用单片机的GPIO控制门锁开关和教师电源通断。
4.lcd屏幕2.4寸,为了绑定设备信息(楼层,房间号、MQTT主题、唯一设备名称)通过二维码源码,生成设备信息,用于微信小程序自动绑定设备,从而在服务器保存信息。

未完待续。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教室管理系统(相关技术和设备:stm32、w5500、mqtt) 的相关文章

  • 如何在 Laravel 7.x 中从控制器返回视图时传递 cookie?

    在 laravel 7 x 中 有什么方法可以在返回视图时将 cookie 传递给客户端吗 类似于 return view welcome gt cookie name value min 嗯 我做了一些研究 发现有一些方法 我熟悉的两个是
  • Spring集成MQTT发布订阅多个主题

    我正在尝试构建一个订阅多个 mqtt 主题的应用程序 获取信息 处理它并形成 xml 并在处理时触发一个事件 以便这些可以发送到某个云服务器 并将成功的响应从那里发送回MQTT 通道
  • 以编程方式设置 mosquitto 中的访问控制限制

    我正在开发一个将使用 mqtt 的应用程序 我将使用 python 库 我一直倾向于使用 mosquitto 但找不到以编程方式为其设置访问控制限制的方法 我正在编写的应用程序需要能够区分用户 并且只允许他们订阅某些主题 当前的解决方案看起
  • 当url中有空格时htaccess重定向

    我想从仍然出现在谷歌搜索中的旧网址重定向到新网址 旧的网址是这样的 http www marionettecolla org file 20 mostra milano mostra marionette milano htm 我想将其重定
  • URL中的gs_upl是什么意思?

    在任何谷歌搜索 URL 中 gs upl 是什么意思 例如 那么 gs upl 1045l1663l0l3648l4l4l0l0l0l0l258l682l0 3 1l4l0 在这里意味着什么 从构建的脚本gs upl j 我找到 funct
  • 如何将 html 输入到 Flask 中?

    我有这个 html 位
  • 从 Unity WebGL 调用 Angular2 函数

    目前 我正在使用 Angular2 版本 2 1 2 和 Unity 可视化工具 使用 Unity 5 5 构建 我需要做的是从 Unity 到 Angular2 进行通信 我正在使用类似于下面的代码 public void GetBill
  • 在 html 中创建子页面 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设我有一个网站http www example com http www example com 如何为此页面创建更多子页面 即 w
  • 使用内容安全策略防止 Internet Explorer 11 上的内联 JavaScript

    是否可以使用 ASP NET WebForm 上的 CSP 来阻止 Internet Explorer 11 上的内联 JavaScript 我知道 IE 11 不支持内容安全策略级别 2 但它支持级别 1 0 我尝试了很多方法 但没有明确
  • OPC-UA 的替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 作为访问由各种 PLC 组成的系统的过程数据的解决方案 是否有 OPC UA 的合适替代方案 独立于平
  • 对同一域发出 get 请求,出现 CORS 错误

    在浏览器扩展中 这是我的 ajax 调用 var xhr new XMLHttpRequest xhr open GET window location href true xhr responseType arraybuffer xhr
  • 单击链接时启动本地应用程序

    我正在开发一个内部 Web 应用程序 它允许我为客户存储远程控制凭据 每次我想要连接到客户计算机时 我都需要启动远程支持软件 复制并粘贴用户名和密码 然后单击 开始 按钮 该软件将具有可用的命令行参数 允许我立即启动会话 但是 我不知道如何
  • 为什么使用HTTP协议时需要指定端口号?

    即使我们使用HTTP协议 为什么还需要用IP地址指定端口号 例如 http xyz 8080 这到底是什么意思 我们已经知道 在使用 HTTP 时 请求将在端口 80 上提供服务 那么为什么我们要显式指定端口呢 HTTP 的默认端口为 80
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 诸如用于测试 HTTP 请求的虚拟 REST 服务器之类的东西? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在四处寻找 但找不到任何这样的网站 我想知道是否有一些虚拟服务器可以响应测试 GET 请求并返回
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • 重新加载更新的 javascript> 代码而不完全重新加载 html 页面

    我正在开发一个单页 Web 应用程序 它具有许多不同的功能和形式 当开发一个深度 我的意思是主页上没有的 功能时 我会经历这个循环 开发代码 编辑类和函数 刷新整个页面 一路点击 直到到达我需要测试的部分 有时加起来大约一分钟 测试新代码
  • 同源政策目的可疑

    正如我所读到的 同源策略是防止源自 邪恶 域 A 的脚本向 良好 域 B 发出请求 换句话说 跨站点请求伪造 玩了一下我了解到的Access Control Allow Origin标头和CORS据我了解 它允许从好域 B 指定服务器 域

随机推荐

  • 2022-渗透测试-6个最常用的工具

    目录 1 Wireshark 2 Metasploit 3 Nmap 4 Nessus 5 SQL Map 6 W3af 大家可以关注关注我的公众号 定期分享一些干货 直接搜索 小白渗透测试 或者扫描下面的二维码就可以了 1 Wiresha
  • selenium练习校验

    selenium校验 1 获取网站URL是否正确 print driver current url 得到当前页面URL 2 获取网站Title是否正确 print driver title 3 获取浏览器版本号 print driver c
  • 使用github搭建博客出现的问题:Jekyll主题下push文章到github上没有生效

    因为自己也用过github搭建免费的博客项目 由于搭建的日子距离现在已经有些久远了 现在又重新拾起来搞个人博客 遇到下面的问题 问题描述 在使用Jekyll主题的时候 在本地使用Ruby服务端能运行起来 但是将文件push到github上
  • 2021数维杯国际赛论文模板发布,LaTeX+Word

    对于数学建模竞赛 最后提交的结果就是一篇论文 先不说论文内容怎么样 首先论文的版式需要美观 漂亮 简洁 对于论文排版 LaTeX比word更便捷专业 使用LaTeX排版的论文清晰美观 可以得到阅卷老师的青睐 增加获奖几率 提前准备好模板是非
  • react ant icon的简单使用

    refer 快速上手 Ant Design 1 引入ant npm install antd save 2 在页面引用 import StarOutlined from ant design icons 如果想要引入多个icon 可以这样书
  • 使用vite + vue3 + ant-design-vue + vue-router + vuex 创建一个后台管理应用

    使用vite vue3 ant design vue vue router vuex 创建一个管理应用的记录 使用vite 创建项目 我创建的node 版本是 v16 17 1 使用NPM 或者 YARN 安装中选择模板和定义项目名称 np
  • Tokenview X-ray功能:深入探索EVM系列浏览器的全新视角

    Tokenview作为一家领先的多链区块浏览器 为了进一步优化区块链用户的使用体验 我们推出了X ray 余额透视 功能 该功能将帮助您深入了解EVM系列浏览器上每个地址的交易过程 以一种直观 简洁的方式呈现地址的进出账情况 让您轻松掌握资
  • 技术实践干货:从零开始创建Node.js应用

    作为一个程序员 我们常常会有很多想法和创意 然后用技术实现出来 这是一个很有成就感的事情 在实践过程中 会发现很多想法都不能很好地落地 可能是技术 可能是团队氛围等等 于是就开始想着能够不能有一个框架去承载这些想法 其实在Node js这个
  • 解决宝塔面板打开不了登录界面问题或xshell界面显示的宝塔登录地址是空的的问题

    问题描述 某天重开电脑之后 在浏览器打开宝塔面板页面时 提示请使用正确的入口登录面版 如下图 解决方案 正常情况下把查看面板入口的命令给复制到xshell里面 他就会返回给你登录地址 用户名 密码 然后你复制地址重新登录就可以了 如果你在x
  • Android完全退出应用程序 ,【Android面试题】

    activity finish activityStack remove activity activity null 获得当前栈顶Activity public Activity currentActivity Activity acti
  • Vue自定义指令的使用详解

    自定义指令 vue官方提供了v text v for v model v if等常用的指令 还允许开发者自定义指令 在使用自定义指令前 须在自定义名称前加v 名称 私有自定义指令
  • android audio/linux alsa音频-硬件

    接着以前的文章继续写音频方面的分析 因为学得快忘得也快 如果不加以总结和记录 很快自己也不记得了 要完全了解一个音频器件 如ES8396 wm8998 首先得了解它的硬件原理 一般在嵌入式领域 音频的编解码芯片主要有两种 1 在单片机应用方
  • I/O接口

    I O接口 结构和作用 数据缓冲寄存器DBR 暂存即将输入输出的数据 主机和外设的速度匹配 状态 控制寄存器 命令字 CPU对设备发出的具体命令 状态字 设备的状态信息 供CPU检查 串 并转换机构 数据格式的转换 I O控制逻辑 根据命令
  • 网络QoS解决方案

    网络QoS解决方案 在网络带宽不足时 对网络流量做区别服务 优先传输那些重要的 要求网络延迟小的 如果丢弃会导致更大业务代价的数据 并对不同应用的数据做合理的带宽分配与控制 如果一定需要丢弃一些数据 则丢弃那些代价比较低的 这就是网络 Qo
  • pnpm install出现:ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies

    使用 pnpm install 安装项目依赖时出现 ERR PNPM PEER DEP ISSUES Unmet peer dependencies 在 pnpm github issues 中找到相关解决方案 一 前言 完整日志 ERR
  • Git修改IP重新定位的方法

    进入已clone项目的 git文件夹 打开config文件 打开config 如图显示 修改url中的IP为192 168 6 102 然后保存 在项目上右击选择属性 R 然后选择Git 即可看到当前项目的跟踪远端网址 转载于 https
  • js vue上传文件判断文件格式 GIF JPG PNG

    根据文件识别头信息获取图片文件的类型 JPG 文件头标识 FF D8 文件尾标识 FF D9 PNG 文件头标识 8 bytes 89 50 4E 47 0D 0A 1A 0A GIF 文件头标识 6 bytes 47 49 46 38 3
  • 计算机二级试题及分值分布,计算机二级各部分分值分布

    计算机二级考试分选择题和操作题两大类 其中选择题10题 每题2分 一共20分 操作题分字处理题 电子表格题 演示文稿题三大类 其中字处理题30分 电子表格题30分 演示文稿题20分 共计80分 计算机二级各科目考试题型及分值 二级 MS O
  • java垃圾回收机制概述以及优缺点

    Java中的垃圾回收机制是自动内存管理的一部分 它负责在程序运行时自动回收不再使用的内存对象 以便为程序提供可用的内存空间 基于所谓的 垃圾收集器 它是Java虚拟机 JVM 的一部分 以下是Java垃圾回收机制的主要特点 1 对象生命周期
  • 教室管理系统(相关技术和设备:stm32、w5500、mqtt)

    背景 某学校对新建的实验楼有门禁管理需求 因此我们项目组借助KOB门锁 某宝销量较高的电吸锁和电插锁品牌 搭建了前端 微信小程序和网页 服务器 java服务器和mqtt服务器 单片机 基于stm32 用于控制电插锁 实现了一套完整的门禁管理