GenD-max / kuTang_Device_Control

基于SpringBoot+MybatisPlus+Redis+Pi4j+BaiduAi+Aliyun的库塘监测控制系统(树莓派运行后端)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

一、开发目的

为了降低自然灾害对农作物的影响,提高对塘坝农田管理效率。我们策划出了一种可远控的智慧库塘监测系统,塘主可以通过该系统巡检塘坝农田,系统实时更新后台数据,将水体的各项数据反馈给塘主。塘主则根据该结果,迅速做出行动,极大地降低了洪涝干涸对财产的损失,提高对塘坝农田管理效率,提高信息利用率。

二、系统方案

数据采集层

本系统水体数据由水位传感器、水温传感器、模拟TDS传感器和水质浊度传感器采集,设备数据由温湿度传感器、烟雾传感器和火焰传感器采集。各类传感器采集的数据最后Arduino串行通信传入树莓派主控程序存入云端数据库,部分传感器如下图所示。

模拟TDS传感器

水质浊度传感器

水位传感器

DS18B20水温传感器

数据存储层

本系统利用分布式存储架构根据数据场景及应用需求进行个性化存储,建立MySQL和Redis集群,为库塘监测到的实时数据提供存储支持。

实时处理层

基于Springboot异步任务多线程计算引擎,针对所采集的水体和设备数据进行数据清洗和数据解析,并将处理的结果如水体信息、设备信息、报警信号和时间戳等信息写入MySQL(历史数据)和Redis(实时数据)集群中。

业务服务层

塘主可以通过库塘管理系统的Web界面,实现对库塘水体实时监控、设备能耗分析,通过库塘远程控制系统实现库塘设备的远程控制,其他用户则可以通过库塘信息面板查看安徽省所有的库塘分布,对于使用本系统的库塘,可以查询到实时水体数据、具体位置和库塘所属用户等信息。硬件设施使用Spingboot开发了一套控制系统,遵循Restful风格,将具体功能映射成API接口,库塘管理系统通过Ajax调用接口渲染页面数据。

三、后端系统架构

传感器烧录程序使用Arduino IDE编写,得到目标数据。控制系统使用Springboot框架,Pi4j库操作树莓派,编写接口,供后台管理系统使用。

四、实现过程

使用Arduino Uno连接各类传感器,编写并烧录程序,从而得到我们需要的各种传感器数据(如水位、水温和浊度等),树莓派4B通过USB接口与Arduino建立串行通信,Arduino向串口写入实时数据,树莓派读取串口数据。树莓派作为主控单元,使用Java语言Pi4j库控制树莓派的GPIO和串口。例如,通过树莓派与4路继电器模块建立串行通信,使用Model Bus协议控制继电器开闭,完成水泵、水阀这种大功率电器的控制。此外,团队使用了Springboot框架遵循Restful风格将设备控制和各种功能映射成Http接口,供库塘远程控制系统调用,大大降低了耦合度。此外,团队使用了Maven构建工具在树莓派的Linux系统进行编译调试,最终完成了本项目,如图所示。

五、说明

  • 该项目曾获得第八届“华为杯”全国大学生物联网设计竞赛华东赛区二等奖安徽省高校物联网应用创新大赛二等奖“沃得杯”第七届国际大学生智能农业装备创新大赛国家优秀奖
  • 监测系统整体包括多个项目的整合,改项目仅为库塘监测系统的后端模块,其他代码由于本人参加IOT比赛等原因暂时不能开源
  • 如果这个项目对您有帮助,还请各位为此项目点一点star或者关注一下作者

About

基于SpringBoot+MybatisPlus+Redis+Pi4j+BaiduAi+Aliyun的库塘监测控制系统(树莓派运行后端)


Languages

Language:Java 100.0%