# 边云协同的设备状态监测与远程控制系统
**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)
各平台功能如图:
总体设计图:
### 项目代码结构
- 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、硬件平台搭建
> 树莓派各引脚连接表
>
>
树莓派,接线如下
| 树莓派 | 树莓派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端 |
热敏电阻电路如下
另外连接上电机、压力传感器、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