矩阵动力-基于web控制的灌溉小车

Matrix-Dynamics

项目地址:https://gitee.com/que-haohua_admin/matrix-dynamics

此项目为北京林业大学-东方瑞通实训项目,以下为项目详情:

一、项目平台 :fa-star:

1.基本要求

  1. ubuntu20.04 版本云服务器 (本项目使用服务器 x 3)
  2. MySQL8.0 版本云数据库
  3. stm32
  4. esp32 cam s2
  5. openmv4 plus

2.开发软件

  1. vscode
  2. pycharm 2022专业版
  3. solidworks 2020
  4. keil5MDK

二、项目目录 :fa-th-list:

.
├── Back-end              后端代码(前端已集成)                       
│   ├── app.py
│   ├── blueprints
│   ├── config.py
│   ├── decorators.py
│   ├── exts.py
│   ├── migrations
│   ├── models.py
│   ├── MQTT
│   ├── Mqtt_demo
│   ├── __pycache__
│   ├── requirements.txt
│   ├── static
│   ├── templates
│   ├── test.txt
│   └── venv
├── Front-end              前端代码
│   ├── about
│   ├── devicebounded1
│   ├── devicebounded2-4
│   ├── exit
│   ├── get_back_password
│   ├── index
│   ├── purchase
│   ├── register_1
│   └── team
├── Hardware               硬件代码
│   ├── MQTTWcarV1_demo    esp32cam代码
│   ├── openmv             openmv4plus部分代码
│   └── WaterCar_STM32     stm32代码
├── LICENSE
├── Mqtt_demo              mqtt通讯demo
│   ├── pub.py
│   ├── __pycache__
│   ├── sub.py
│   └── test.py
├── README.md
├── Solidworks-drawings    小车solidworks建模文件
│   ├── 9G舵机.SLDPRT
│   ├── 成品1
│   ├── 履带底盘.SLDPRT
│   ├── 水泵.SLDPRT
│   ├── 液位传感器.SLDPRT
│   ├── ESP32-CAM.SLDPRT
│   └── GPS天线.SLDPRT

三、服务器部署

本项目皆使用腾讯云服务器

1.mqtt服务器

2核2G即可

首先要在服务器开启1883和18083端口

打开终端执行以下命令

wget https://www.emqx.io/downloads/broker/v4.0.5/emqx-ubuntu16.04-v4.0.5.zip

解压EMQ X Broker

unzip emqx-ubuntu16.04-v4.0.5.zip

进入解压出来的emqx文件夹,使用命令启动即可

sudo ./bin/emqx start

在浏览器输入服务器公网ip加18083即可进入后端管理界面

ip:18083

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSKNWndK-1661775470551)(img/emqx.png)]

默认账号为admin

密码为public

2.obs服务器

2核2G即可

首先要在服务器开启1935和8090端口

(1)srs搭建服务器

打开终端执行以下命令

git clone https://github.com/ossrs/srs

修改max_connections 1000;为max_connections 100;

8080端口修改为8090

注意:若不修改此值后面编译中会报错

vi srs/trunk/conf/srs.conf
cd srs/trunk

注意:在mac 系统中./configure 时需要添加 --osx

./configure --osx  

启动srs服务器

./objs/srs -c conf/hls.conf

(2)使用OBS推流

打开obs studio

url为:

rtmp://ip:1935/live

流密钥为:

livestream

(3)播放m3u8流媒体

可以使用以下两种方式进行播放

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
 </head>
 <body>
 <video src="http://ip:8090/live/livestream.m3u8" controls="controls" width="400" height="300"></video>
 </body>
 </html>
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>videojs-contrib-hls embed</title>

  <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
  <script src="https://unpkg.com/video.js/dist/video.js"></script>
  <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
  
</head>
<body>
  <h1>Video.js Example Embed</h1>

  <video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268" 
  data-setup='{}'>
    <source src="http://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8" type="application/x-mpegURL">
  </video>
  
  <script>
  </script>
  
</body>
</html>

3.database服务器

租用腾讯云数据库

注意要和web服务器处于同一区域

mysql8.0版本

1核1G即可

4.web服务器(主服务器)

建议配置4核8G

服务器python版本为3.8

部署流程

首先服务器开启5000端口

在服务器中克隆仓库

git clone https://gitee.com/que-haohua_admin/matrix-dynamics.git
cd matrix-dynamics/Back-end

安装依赖

pip install -r requirements.txt

进入config.py

更改邮箱配置和数据库配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ckHSi15z-1661775470553)(img/mysql.png)]

进入Back-end/blueprint/user.py

更改mqtt服务器配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjnO8Ebw-1661775470555)(img/mqtt.png)]

启动web端

python3 app.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q7WJah82-1661775470556)(img/app.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9c8eG5XT-1661775470557)(img/%E9%A6%96%E9%A1%B5.png)]

四、硬件部署

1.物料统计

小车整体采用成品改装+3D打印的方式进行,电路采用飞线,速度快。

后期制作PCB,进行封装集成。

名称 数量 价格 用途
SG90舵机 2 5.43 喷头pitch、yaw轴
坦克底盘(走闲鱼二手) 1 36.9 小车底盘
ESP32-CAM 1 27.55 小车视频推流+无线通信
STM32F103C6T6 1 8 底盘主控(72M主频 32k内存)
水泵 1 2.6 喷水
隔离MOS管FR120N 1 1.1 水泵控制
软管 1 1.15 供水
L9110S 双路H桥 1 1.5 驱动底盘电机
GPS 1 12.1 提供位置信息
无线通信JDY-40 1 4.5 遥控器遥控使用
动力电池3.7v2000ma 1 28.99 考虑替换电池。
打印耗材等杂料费 * 10 外壳,机械结构等
合计145.25(不包括运费)

2.通讯协议帧

1.小车控制报文(MQTT)

以下 水泵 和 电机锁 的1 为字符1或者 数字1 均可以!

该报文至少以 1hz频率发送,以保持小车的运动,一旦停止发送,小车立刻停车

帧头 小车ID 前进速度 转向速度 二值量控制 帧尾
CTR %02d 0-9 0-9 详见下方 \n

按字符:

0-2 CTR
3-4 控制小车的ID
5 char 前进速度 0停车 1-5前进 6-9 后退
6 char 转向速度 0直走 1-4(慢-快)左转 6-9右转(慢-快)
7 char 发1(并且无其它电机操作)解除电机锁,电机上电
8 char 1开水泵 0关水泵

2.小车回报报文(MQTT)

以下无特殊强调,均按字符串(String)处理,所有符号均为英文半角符号

其中%d表示以十进制发送(与C语言一样)

_代表下划线

帧头 GPS信息 车辆状态信息 温湿度 帧尾
ID%2d_ GPS:%s_ Car:%s_ T%2.1f_H%2.1f_ Ready/Error%2d

说明:

● 帧头:回传小车ID(每个小车ID唯一)

● 小车MAC:车辆ESP32 MAC地址,具有全球唯一性。

● GPS信息:详见下方 GPS信息%s

● 车辆状态信息:详见下方 车辆状态信息%s

● 温湿度:车载DHT11测量的温湿度信息。

● 帧尾:返回Ready表示车辆准备完成,返回Error表示车辆硬件故障,故障代码%d详见下方 故障代码

GPS信息%s:

默认采用WGS84坐标系统

/代表或

经度(东/西) 经度数据 纬度(南/北) 纬度数据 GPS授时(时:分:秒)
ON/OFF_ ON/OFF_ Wt:%3d_ D:3.2f_ GTime:%2d%2d%2d
车辆状态信息%s:

_表示下划线

/表示或,冒号后面的字符串由/分割,表示冒号后面的字符串发送/前方或/后方字符,如车辆启动发送Power:ON或Power:OFF

车辆启动 水泵状态 剩余水位信息 前方距离(cm) 云台PItch Yaw 剩余电量
ON/OFF_ ON/OFF_ Wt:%3d_ D:3.2f_ P%2.1fY%2.1f B:%3d

说明:

● 车辆启动:默认OFF,当为OFF时,车辆所有电机断电,发送任何电机控制命令均无效。需发送上电命令。

● 水泵状态:开或关。

● 水位信息:0-100,单位%,100表示满水位,0表示没水了。

● 前方距离:车辆车头测距传感器测量得到的前方距离,单位厘米。

● 云台:俯仰角、偏航角

● 剩余电量:电池剩余电量,单位%,100满电,0没电。

##### 故障代码:

故障代码: 故障情况 解决
与车辆主控STM32通信失败 检查ESP32与STM32连线是否正常
车辆温湿度传感器离线 检查温湿度传感器接线
车辆水位传感器离线 检查水位传感器
车辆电池故障(电压过高/过低 检查电池
车辆测距传感器故障 检查车头红外测距

3.ESP32 ->STM32 (UART)

115200-8-N-1 10Hz

U2_RXD 16 PB10(STM32)

U2_TXD 17 PB11(STM32)

帧头: 前进速度 转向速度 电源控制 水泵控制 照明控制 帧尾
ESP 0-9 0-9 0/1 0/1 0/1 \n

按字节:

0-2 固定ESP
3[3:0] 前进速度
3[7:4] 转向速度
4[0] 电源控制,这位发1解除电机锁
4[1] 水泵控制
4[2] 照明控制
5 固定\n

4.STM32 -> ESP32(UART)

115200-8-N-1 10Hz 共40字符

B11 -> USART3 RX

B10 -> USART3 TX

帧头 GPS经纬 GPS 授时 小车状态 帧尾
STM union uin16_t \n

按字节:

0-2 帧头STM
3 E/W
4 S/N
5-12 double转union联合体 经度
13-20 double转union联合体 纬度
21-22 uin16_t GPS授时
23[0] 车辆是否启动
23[1] 水泵状态
24-27 float转union联合体 距离
28-31 float转union联合体 Pitch
32-35 float转union联合体 Yaw
36 uint8_t 水位 0-100
37 电量uint8_t
38 故障代码uint8_t 0表示全部正常
39 帧尾\n

猜你喜欢

转载自blog.csdn.net/weixin_42800966/article/details/126592037