Skip to content
/ smartgateway Public
  • Notifications You must be signed in to change notification settings
  • Fork 5
  • Star 8

License

8 stars 5 forks Branches Tags Activity
Star
Notifications You must be signed in to change notification settings

ldcowq/smartgateway

Branches Tags

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
SMGW
SMGW
 
 
SmartGateway
SmartGateway
 
 
android_app/SmartGateway
android_app/SmartGateway
 
 
build-SmartGateway-unknown-Debug
build-SmartGateway-unknown-Debug
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.en.md
README.en.md
 
 
README.md
README.md
 
 

Repository files navigation

SmartGateway_Base_on_QT

一、前言

2022年6月18日的一场毕业典礼,意识到自己真的要离开学校了,真的要和四年的舍友说拜拜了,真的是最后一次在学校打篮球了,马上奔赴人生的下一个战场,多少有点不舍。

想用这篇博客简单记录一下大学四年努力学习的成果,四年的时光里,承认虚度过光阴,但也承认有在认真的努力学习。

一个在大学才拥有自己第一台笔记本电脑的计算机菜鸟,毕业设计能做得有多烂呢?

演示视频: https://www.bilibili.com/video/BV1Ft4y187zu/

二、系统总体架构设计

系统总体架构如下图所示,浅说一下整个系统的结构和通信链路吧,整个系统主要分为三层:

  1. 底层:使用支持ZigBee协议的子设备负责采集和传输传感器的数据,并且负责控制该子设备自身的一下执行器(灯、蜂鸣器),一个协调器负责从ZigBee网络收集两个终端节点采集到的数据,然后协调器通过UART与上层的网关进行通信。
  2. 网络层:该层的核心设备使树莓派网关,给网关配了一块触控屏,外接了两个摄像头,这里的网关不仅仅是完成不同协议间的数据转换,还有更多的与人交互的功能。当然了,网关还得接入路由器。
  3. 应用层:主要是手机APP,实现一些远程控制和查看数据的功能,云端服务器作为一个数据中转和存储的角色。 在这里插入图片描述

三、硬件接线参考图

在这里插入图片描述

四、ZigBee心跳包原理实现

原理描述:心跳包技术是一种用于检测子设备是否在线的常用技术,在本系统中,ZigBee协调器负责构建ZigBee网络,当ZigBee终端节点加入网络成功后,协调器就会给当前的终端节点的心跳值定时减一,而终端节点则会定时发送一个心跳包给协调器,当协调器收到终端节点的心跳包之后,则会把当前终端节点心跳值恢复到最大值,代表终端节点当前是在线的状态,反之就是离线状态。

本系统心跳包功能没有在视频中演示,后面有截图展示。具体效果是,关闭某个ZigBee节点后,在环境与控制模块中,就不能操作该节点的执行器(例如不能开灯)图标旁边也会有离线的字眼提醒。本系统心跳包实现的参考图: 在这里插入图片描述

核心代码void zb_StartConfirm( uint8 status ) //加入ZigBee网络成功时调用
{
  if(status==ZSUCCESS) 
  {    
	  //发送加入网络的请求命令通知协调器
zb_SendDataRequest(0X0,SUBNODE_JOIN_NET_CMD_ID,
osal_strlen(deviceI),deviceID,0,FALSE,AF_DEFAULT_RADIUS);

//发送心跳包
     osal_start_timerEx(sapi_TaskID,HEART_BEAT_TIMEOUT_EVENT,1000);
  }
}


void zb_HandleOsalEvent( uint16 event )//处理用户自定义事件
{
if(event&READ_SENSOR_DATA_EVENT) //处理读取DHT11数据事件
{ 
uint8 temphumi[2];
if(Read_DHT11(temphumi,temphumi+1)==0)
{      
//发送传感器数据包
zb_SendDataRequest(0X0,GET_LIVINGROOM_NODE_DATA_CMD_ID,
osal_strlen(temphumi),temphumi,0,FALSE,AF_DEFAULT_RADIUS);

//定时3s触发心跳包发送事件
osal_start_timerEx(sapi_TaskID,HEART_BEAT_TIMEOUT_EVENT,3000);
		}
}

if(event&HEART_BEAT_TIMEOUT_EVENT)//处理心跳包事件
{    
//发送心跳包
zb_SendDataRequest(0X0,HEART_BEAT_CMD_ID,0,NULL,0,FALSE,AF_DEFAULT_RADIUS); 

//定时3s触发传感器发送事件
osal_start_timerEx(sapi_TaskID,READ_SENSOR_DATA_EVENT,3000);
}
}

五、传感器数据传输链路

[外链图片转存失败,源站可能有防!在这里插入盗链机制,建描述]议将图片上 https://传(imblog.csdnimg.cn/ffbc77bdeGFHV54a05bff4b106bf57a59.png81(https:/`在这里插入代码片`/img-blog.csdnimg.cn/ffbc77bdc3454a05bff4b106bf157a59.png)] 云端服务器中,数据流转的相关细节如下图所示,在Tomcat中部署的Web API是使用Java编写的一个servlet后台程序,如果MQTT代理服务器支出数据直接流转到数据库则可以省略此步骤。 在这里插入图片描述

六、系统测试截图

1、时钟和天气模块: 如果使用GEC6818开发板,获取时钟信息需要移植一个NTP服务,可以参考这位大佬的文章: https://blog.csdn.net/qq_41248872/article/details/83622146

ntpclient -s -d -c 1 -i 5 -h 111.230.50.201    //板子获取网络时间

天气模块的信息从一开始的手动获取,到后面改为了上电自动获取。源码里有两个免费的API接口,一个可用于定位当前网络IP的归属地,另一个接口则是利用该区域名称获取该地区的天气信息。

在这里插入图片描述

2、视频监控和播放器模块: 这里踩过一些坑,本以为QT的QMultiMedia(低版本的QT库没有该模块,需要自己编译移植)模块支持视频服务的,后面查了很多文章发现,仅支持对摄像头模块采集的画面进行截图而已。在指导老师的帮助下,最后采用opencv来获取视频流并显示到屏幕上。此时,使用的是树莓派来开发,安装opencv库都比较简单方便,如果还是用之前的GEC6818开发板,需要自己交叉编译opencv库,并移植上去。

在这里插入图片描述

视频播放器模块也是直接使用opencv库来做的,就是简单直接播放一个视频。一般视频都会用一些编解码的框架来处理,这一块实在太难了,只能替代一下,实现功能够了。之前也试过移植一个播放器来播放。

在这里插入图片描述

3、音乐播放器模块: 这里好像是移植了一个mplayer播放器来实现的,只要调用一些接口,就能实现暂停、播放、切割都功能,其实最难得是进度条的开发,包括视频播放器的进度条也一样,需要考虑的情况挺多的,而且还要实现拖动变化,点击变化等操作。

在这里插入图片描述

4、电子相册模块: 这一个功能就比较简单了,纯逻辑的一个模块,拿到路径中的图片,放到列表里,随意控制即可。

在这里插入图片描述

5、环境与控制模块: 这是整个系统中最难开发的一个功能了,首先从串口拿到数据,实时显示数据,并做成图表来查看数据的走势,然后就是控制部分了。例如,假设现在所有的节点都在线,点击其中一个节点的开灯按钮,网关会通过串口给ZigBee协调器发送开灯指令,这条指令包括了,要发送给哪个节点,操作的是这个节点上的哪个执行器,该执行器的状态要切换成什么,等这些信息。倘若是手机端的远程控制,则网关还要监听MQTT代理服务器发送过来的指令。

在这里插入图片描述

6、手机端功能展示: 远程控制是通过MQTT协议来实现的,和网关上的触控操作是一样的。历史数据下拉页面即可获取到最新的数据,原理是通过http协议访问WebAPI,按理说这种数据应该要做成按日期查询的,奈何安卓太难了。 在这里插入图片描述

七、总结

以上就是我的毕业设计的大概描述,大家也看得出来,我是很简单的描述了几句而已,确实没时间描述太详细,本人也才疏学浅,专业术语懂的也不多,我的作品也没有拿到优,可见,计算机行业有多卷。

如果有人问,大学四年学到的东西对你现在工作有什么帮助呢? 我会说,学了四年的计算机,对现在的工作有帮助的地方就是调试的能力,因为通常代码是写出来了,明明逻辑也没问题,但效果就是和你预期的不一样,另外调试就是一直在熬,挺考验耐心的。

工作之后接触到的技术完全和学校学的东西不一样了,在学校学到的技术和自己自学的技术,所做出来的作品都几乎开源了,而且这个毕业设计也几乎用上了我所学到的所有技术了。

开源也是为了更好奔赴人生的下一个战场,学习某个行业的全新技术,现在总算体会到了,人生的每一个阶段只会越来越难。

最后,感谢所有帮助过我的同学、老师和CSDN上的网友们,谢谢!!

About

No description, website, or topics provided.

Resources

Readme

License

Activity

Stars

8 stars

Watchers

1 watching

Forks

5 forks
Report repository

Releases

No releases published

Packages

No packages published

Languages

  • C++ 81.7%
  • C 9.6%
  • Makefile 5.6%
  • Java 2.8%
  • Other 0.3%

Footer

© 2024 GitHub, Inc.

玻璃钢生产厂家吉安个性化玻璃钢雕塑生产厂家北京常见商场美陈批发绍兴商场开业美陈玻璃钢小品雕塑生产本地玻璃钢雕塑厂家高品质的选择安徽个性化玻璃钢雕塑定做价格大象玻璃钢雕塑座椅商场美陈策划国庆 美陈 商场常宁玻璃钢牌匾雕塑咸宁玻璃钢考拉雕塑厂家加盟玻璃钢雕塑厂家珠海玻璃钢雕塑生产泉州玻璃钢仿真水果雕塑厂家天津玻璃钢景观雕塑施工厂家上海铭将玻璃钢雕塑厂河南火烈鸟玻璃钢雕塑定做济源玻璃钢卡通雕塑定制价格玻璃钢花盆改造房间橙子玻璃钢卡通雕塑订做福建玻璃钢雕塑批发大象玻璃钢卡通雕塑定做商场11周年店庆美陈布置广东景观玻璃钢雕塑图片玻璃钢花盆外模东至玻璃钢花盆花器河源人物玻璃钢动物雕塑濮阳玻璃钢动物雕塑公司凉山商场美陈淄博市玻璃钢人物雕塑批发厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化