| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 基于ZigBee+QT+Raspberry+MQTT+Tomcat+Servlet+MongoDB+Android的毕业作品——2022届物联网毕业生作品【基于QT的智能家居网关的设计与实现】 -> 正文阅读 |
|
[嵌入式]基于ZigBee+QT+Raspberry+MQTT+Tomcat+Servlet+MongoDB+Android的毕业作品——2022届物联网毕业生作品【基于QT的智能家居网关的设计与实现】 |
一、前言2022年6月18日的一场毕业典礼,意识到自己真的要离开学校了,真的要和四年的舍友说拜拜了,真的是最后一次在学校打篮球了,马上奔赴人生的下一个战场,多少有点不舍。 想用这篇博客简单记录一下大学四年努力学习的成果,四年的时光里,承认虚度过光阴,但也承认有在认真的努力学习。 一个在大学才拥有自己第一台笔记本电脑的计算机菜鸟,毕业设计能做得有多烂呢? 演示视频:https://www.bilibili.com/video/BV1Ft4y187zu/ 二、系统总体架构设计系统总体架构如下图所示,浅说一下整个系统的结构和通信链路吧,整个系统主要分为三层:
三、硬件接线参考图四、ZigBee心跳包原理实现原理描述:心跳包技术是一种用于检测子设备是否在线的常用技术,在本系统中,ZigBee协调器负责构建ZigBee网络,当ZigBee终端节点加入网络成功后,协调器就会给当前的终端节点的心跳值定时减一,而终端节点则会定时发送一个心跳包给协调器,当协调器收到终端节点的心跳包之后,则会把当前终端节点心跳值恢复到最大值,代表终端节点当前是在线的状态,反之就是离线状态。 本系统心跳包功能没有在视频中演示,后面有截图展示。具体效果是,关闭某个ZigBee节点后,在环境与控制模块中,就不能操作该节点的执行器(例如不能开灯)图标旁边也会有离线的字眼提醒。本系统心跳包实现的参考图:
五、传感器数据传输链路[外链图片转存失败,源站可能有防!在这里插入盗链机制,建描述]议将图片上https://传(imblog.csdnimg.cn/ffbc77bdeGFHV54a05bff4b106bf57a59.png81(https:/ 六、系统测试截图1、时钟和天气模块: 如果使用GEC6818开发板,获取时钟信息需要移植一个NTP服务,可以参考这位大佬的文章:https://blog.csdn.net/qq_41248872/article/details/83622146
天气模块的信息从一开始的手动获取,到后面改为了上电自动获取。源码里有两个免费的API接口,一个可用于定位当前网络IP的归属地,另一个接口则是利用该区域名称获取该地区的天气信息。 2、视频监控和播放器模块: 这里踩过一些坑,本以为QT的QMultiMedia(低版本的QT库没有该模块,需要自己编译移植)模块支持视频服务的,后面查了很多文章发现,仅支持对摄像头模块采集的画面进行截图而已。在指导老师的帮助下,最后采用opencv来获取视频流并显示到屏幕上。此时,使用的是树莓派来开发,安装opencv库都比较简单方便,如果还是用之前的GEC6818开发板,需要自己交叉编译opencv库,并移植上去。 视频播放器模块也是直接使用opencv库来做的,就是简单直接播放一个视频。一般视频都会用一些编解码的框架来处理,这一块实在太难了,只能替代一下,实现功能够了。之前也试过移植一个播放器来播放。 3、音乐播放器模块: 这里好像是移植了一个mplayer播放器来实现的,只要调用一些接口,就能实现暂停、播放、切割都功能,其实最难得是进度条的开发,包括视频播放器的进度条也一样,需要考虑的情况挺多的,而且还要实现拖动变化,点击变化等操作。 4、电子相册模块: 这一个功能就比较简单了,纯逻辑的一个模块,拿到路径中的图片,放到列表里,随意控制即可。 5、环境与控制模块: 这是整个系统中最难开发的一个功能了,首先从串口拿到数据,实时显示数据,并做成图表来查看数据的走势,然后就是控制部分了。例如,假设现在所有的节点都在线,点击其中一个节点的开灯按钮,网关会通过串口给ZigBee协调器发送开灯指令,这条指令包括了,要发送给哪个节点,操作的是这个节点上的哪个执行器,该执行器的状态要切换成什么,等这些信息。倘若是手机端的远程控制,则网关还要监听MQTT代理服务器发送过来的指令。 6、手机端功能展示: 远程控制是通过MQTT协议来实现的,和网关上的触控操作是一样的。历史数据下拉页面即可获取到最新的数据,原理是通过http协议访问WebAPI,按理说这种数据应该要做成按日期查询的,奈何安卓太难了。 七、总结以上就是我的毕业设计的大概描述,大家也看得出来,我是很简单的描述了几句而已,确实没时间描述太详细,本人也才疏学浅,专业术语懂的也不多,我的作品也没有拿到优,可见,计算机行业有多卷。 如果有人问,大学四年学到的东西对你现在工作有什么帮助呢? 工作之后接触到的技术完全和学校学的东西不一样了,在学校学到的技术和自己自学的技术,所做出来的作品都几乎开源了,而且这个毕业设计也几乎用上了我所学到的所有技术了。 开源也是为了更好奔赴人生的下一个战场,学习某个行业的全新技术,现在总算体会到了,人生的每一个阶段只会越来越难。 最后,感谢所有帮助过我的同学、老师和CSDN上的网友们,谢谢!!
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:42:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |