物联网毕业设计
使用技术
后端:java11、springboot
前端:Hbuilder开发小程序
ui设计:墨刀工具设计
硬件:MicroPython框架
前言
居家工作状态监测系统旨在为用户提供一个实时的居家环境监测服务,让用户能够了解自己周围的环境变化,并采取相应的措施保护自己的健康。该系统将采集光敏、温湿度、人体红外、超声波等传感器数据,通过摄像头配合运动识别算法来识别用户运动状态,以及通过一定的软硬件逻辑监测低头距离和持续时间、室内光线控制,最后通过小程序提供实时数据显示和记录分析等功能。【嗯,单纯是我毕设自己构思的简单功能】
功能需求分析
(1)实时数据采集:后台系统需要在不影响用户正常使用的情况下,实时采集各个传感器的数据,并能储存和处理这些数据。
(2)软件端数据显示和分析:小程序端需要将采集的数据以可视化的方式呈现给用户,提供用户针对实时数据可视化展示、历史数据查询等功能。
(3)光敏控制LED:系统需要根据采集的光敏数据控制LED的亮度和开关。
(4)小程序控制LED:小程序端可以通过发送指令来控制LED灯的开关。
(5)久坐时长统计:系统需要记录用户的久坐时长,并通过小程序向用户提供活动建议和提醒,以降低久坐风险。
(6)摄像头拍照:摄像头需要每一秒抓拍图片并把图片推送到小程序端给用户查看。
(7)用户拉伸次数统计:通过对摄像头对用户的运动请求进行分析并记录拉伸运动次数,以便为用户的健康提供建议。
(8)低头时长监测:检查用户久坐时的久坐情况,并给予适当的提示,让其纠正过近的距离
(9)光敏强度监测:系统需要监测周围环境的光强度,并提醒用户适当调整照明设备或避免长时间在电子屏幕前工作造成眼睛疲劳。
系统架构
数据库的选择
系统用户操作数据------mysql
用来存储系统必要的数据,如:硬件标识相关数据,用户登录数据,用户工作记录数据
硬件感知数据------InfluxDB
考虑到硬件采集数据都是按秒甚至毫秒为单位做数据采集,这里我打算使用InfluxDB这个时序数据库来实时收集硬件端收集到的数据并及时记录入库。毕竟这个数据库它专为快速、高效地存储、查询和处理大型时间序列数据而设计,可以存储高容量、高吞吐量的时序数据,并有丰富的聚合函数、特殊函数和数据采样函数,用以支持高效的数据查询和分析。
图片数据------七牛云存储
系统中会有摄像头采集到的图片、以及用户登录后的头像图片等相关图片数据要做存储,为了让图片可以公网访问,而不是仅在本地可看的情况,我这里选择的是云存储的方式,通过自己提供的域名+相应的图片路径来实现图片的公网访问
传输协议选择
为了实现软硬件数据的互通,我这里选择的是MQTT协议进行数据传输。MQTT是一种轻量级、发布/订阅模型的协议,能够支持大量的传感器设备进行数据传输。这样,您的项目就可以轻松地添加新的传感器设备,而不用担心传输和处理的性能问题。
演示效果
这里只是做部分功能的大致介绍啊,详细的写有点多,我就长话短说啦
登录
LED灯控制
按钮点击开灯
可以看到硬件的led灯亮起
温湿度及低头距离统计
摄像头监控
逻辑是这样的实现的
效果如下:
用户运动拉伸统计
通过摄像头的运动识别算法来检测镜头中的用户是否有活动的行为
当久坐超过一定时间,会通过小程序来进行消息提醒,如图
传感器心跳包监控
通过监测各个传感器发送数据的情况来判定该传感器是否正常工作,如图所示,红色心跳表示传感器不工作或者异常,绿色心跳则是传感器正常工作的情况
可以优化的地方
- 登录只是做了简单的登录,重心更多放在了硬件数据和用户行为的解析上了
- 硬件没有做跟用户绑定的关系逻辑
- 硬件的使用程度不高,只是简单的要求其数据采集上传到软件端,并没有在硬件端做过多的逻辑实现及数据处理
- 小程序的ui交互欠佳,更多是类似于一个数据展示的地方,后续改进可以引入更多的需求的功能
- 软件后端没有做一个公共的数据接收逻辑来兼容不同类型的数据,或者说规定好数据格式来针对不同的传感器数据样式,这是后期可以优化的地方
- 硬件端容易因为频繁的数据采集导致硬件设备僵死
- 系统的日志记录和数据统计有待完善,目前只是简单做了一个初版