# 边云协同的设备状态监测与远程控制系统 **Repository Path**: zheng_home/gra-design-code ## Basic Information - **Project Name**: 边云协同的设备状态监测与远程控制系统 - **Description**: 该库存储的是本人的毕业设计,是一款边云协同的设备状态监测与远程控制的系统 - **Primary Language**: Java - **License**: EPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2023-06-12 - **Last Updated**: 2024-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GraDesignCode ### 致谢 - 在本系统中引入了 [XUI](https://github.com/xuexiangjys/XUI) 来优化可视化平台UI界面,在此非常感谢 [XUI](https://github.com/xuexiangjys/XUI) 的作者 [薛翔](https://github.com/xuexiangjys) 。 - 同时感谢开源项目 [SmartTable](https://github.com/huangyanbin/smartTable) 的作者 [huangyanbin](https://github.com/huangyanbin) 与 [MPAndroidChart](https://github.com/PhilJay/MPAndroidChart) 的作者 [Philipp Jahoda](https://github.com/PhilJay),让我在可视化平台的设计中可以使用更优美的图表库 ## 1、介绍 该库存储的是本人的毕业设计,是一款边云协同的设备状态监测与远程控制的系统。 ### 系统设计 在本系统中主要分为边缘平台(树莓派)、云服务平台(远程服务器CentOS平台/本机Windows平台)、可视化平台(安卓APP) 各平台功能如图: image-20230612202803415 总体设计图: image-20230612203733611 ### 项目代码结构 - VisualizedPlatform 该部分为安卓APP的源代码部分 - - CloudServicePlatform 该部分为云服务平台的源代码部分 进入src>main>java>com>zgradesign>gradesign - - EdgePlatform 该部分为边缘平台的源代码部分 - CreateDataBase.sql 该文件为数据库备份文件 - imgs 该部分为该项目的图源 ## 2、使用 ### 2.1、项目环境 - 边缘平台 - Python 3+ - 树莓派 4B - 云服务平台 - Java 11.0.12 - SpringBoot 2.3.7.RELEASE - Mybatis 2.1.4 - Mysql 5.6.50 - Nginx 1.22.0 - 可视化平台 - Android 10.0(Q) - UI测试 Redmi k20 pro - Java 1.8.0_341 ### 2.2、硬件平台搭建 > 树莓派各引脚连接表 > > image-20230615144931511 树莓派,接线如下 | 树莓派 | 树莓派BCM编码 | B端 | | ------ | ------------- | ------------------------------------- | | SDA.1 | 2 | PCF8591的SDA | | SCL.1 | 3 | PCF8591的SCL | | GPIO.0 | 17 | L298N电机驱动的ENB | | GPIO.2 | 27 | L298N电机驱动的IN4 | | GPIO.3 | 22 | L298N电机驱动的IN3 | | 5V | | 热敏电阻A端、PCF8591的VCC、HX711的VCC | | GND | | 外接电源GND、PCF8591的GND、HX711的GND | | GPIO.1 | 18 | 继电器IN | | GPIO.4 | 23 | HX711的ST | | GPIO.5 | 24 | HX711的SCK | | GPIO.6 | 25 | 警示LED灯的IN | 外置电源,接线如下 | 外置电源 | 树莓派 | 警示LED灯 | 继电器 | L298N电机驱动 | 热敏电阻电路 | | :------: | :----: | :-------: | :----: | :-----------------: | :----------: | | 5V | - | VCC | DC+ | 12V供电口、5V供电口 | - | | GND | GND | GND | DC- | 供电GND | B端 | 热敏电阻电路如下 image-20230615152509114 另外连接上电机、压力传感器、MC172、振动传感器即可。(较为简单) ### 2.3、软件启动 > 对于源码修改,假设如下: > > - 云服务器的IP地址为:120.48.84.83 > - 域名为:zcenter.top > - 数据库名字:gradesign > - SpringBoot项目端口:8080 #### 2.3.1、边缘平台启动 > 手动启动 在保证接线正确与互联网接入(一般需打开网络共享)的情况下,运行 `MainCode.py` 源代码即可。 > ==注意:源代码中需要修改IP地址== > > 第28-29行 > > ```py > ip = "120.48.84.83" > ``` #### 2.3.2、云服务平台启动 本云服务平台是搭建到云服务器上的,当然你可以根据自己的需求,将该系统搭建在局域网中。 首先需要配置Nginx,对80端口进行管理,可根据需求自行配置,笔者配置如下 > 该步骤并非必须,只是为了实现多项目通过80一个端口而不发生冲突的配置而已 ##### nginx配置 - 配置通过 `www.zcenter.top` 到达 服务器的8090端口 - 配置通过 `www.zcenter.top/pi` 到达 服务器的8080端口 - 配置通过 `pi.zcenter.top` 到达 服务器的8080端口(本系统只用带此配置,其他只是做配置演示) ```shell worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.zcenter.top; location /pi/ { proxy_pass http://127.0.0.1:8080/; # 特别注意8080后面的/,否则404错误 } location / { root html; index index.html index.htm; proxy_pass http://127.0.0.1:8090; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name pi.zcenter.top; location / { root html; index index.html index.htm; proxy_pass http://127.0.0.1:8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } ``` 其后重启nginx即可 ```shell ./nginx -s quit 安全退出 ./nginx -s reload 重新加载配置文件#我们在修改配置文件后就需要重新加载 ./nginx 启动 ``` ##### 数据库配置 由于本系统接入了数据库,故首先应该对数据库进行配置。 1. 数据库创建文件已经放置于 `CreateDatabsse.sql` 文件中,对其在 `Mysql` 数据库中进行创建导入即可。 2. 修改SpringBoot项目中的数据库配置文件: > 文件路径:src>main>resources>application.properties > > 配置你的数据库名字、用户名、密码即可 > > ```properties > spring.datasource.url=jdbc:mysql://localhost:3306/数据库名字(如上假设此处为gradesign)?serverTimezone=GMT%2B8&useUnicode=true&useSSL=false&characterRnCoding=utf8 > spring.datasource.username=xxx > spring.datasource.password=****** > ``` ##### SpringBoot项目源码对应修改 除了上面的数据库配置修改外,你可以修改启动端口号,增加安全机制等。如果没有可跳过。 ##### SpringBoot项目启动 在保证Java环境的情况下对target中的Jar包进行启动即可 有如下启动方式: ```shell (1)直接启动,控制台退出则关掉应用 java -jar uap-register-server-1.0.0.jar (2)后台启动,控制台退出不会关掉应用 nohup java -jar uap-register-server-1.0.0.jar & (3)后台启动并且输出日志,控制台退出不会关掉应用 nohup java -jar uap-register-server-1.0.0.jar >> ./register.log 2>&1 & (4)后台启动(加内存)并且输出日志,控制台退出不会关掉应用 nohup java -jar -Xms1024m -Xmx2048m uap-register-server-1.0.0.jar>> ./register.log 2>&1 & ``` 停止方式: ```shell (1)查询java应用程序 ps -ef|grep java (2)强制杀掉进程 kill -9 xxx ``` #### 2.3.3、可视化平台启动 ##### 源代码修改 需要修改域名将其映射到指定的IP地址。 ##### 启动 可视化平台,使用手机连接Android Studio,通过对源码编译安装即可。 ## 3、不足与展望 本项目仅仅完成了简单的系统搭建,在设计上仍有许多不足。笔者在此列举,望补充: - 边缘平台 **实物并不完善**,待完成PCB的打板等操作。 - **安全性问题**,本系统的API暴露在互联网情况下,并无任何安全措施。 - 系统 **稳定性待提高** ,云服务平台与边缘平台在长期连接下(逻辑上)可能会出现无响应的问题。 - 温度传感器采集准确度问题。 如有需要,可联系笔者交流讨论: - QQ:852780228 - 微信:zxh_852780228 - 邮箱:852780228@qq.com