# 水下运载器姿态数据采集系统 **Repository Path**: yoooola/SCADA ## Basic Information - **Project Name**: 水下运载器姿态数据采集系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-26 - **Last Updated**: 2024-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 水下运载器数据采集管理系统 ## 1. 设备简介 请补充: 1.用途 ## 2. 控制系统 | 设备 | 型号 | 典型精度 | 数据频率 | 淘宝链接 | 备注 | | :----------: | :-----------: | :-------------------------: | :------: | :----------------------------------------------------------: | :------------------------: | | 主控单元 | 树莓派4B-8G | - | - | - | - | | 储存单元 | 长江存储64G卡 | - | - | - | - | | 深度计 | DT03D5 | 0.01%FS | 100hz | [深度计](https://item.taobao.com/item.htm?id=650341318648) | 量程3Mpa(300m) | | 高精度倾角仪 | HWT9073-CAN | heading 0.1°
else 0.001° | 100hz | [HWT9073-CAN](https://detail.tmall.com/item.htm?id=672387306606) | 频率最高200hz | | 调速风扇 | CreateBlock | - | - | [FAN](https://item.jd.com/10082392486566.html) | 需插调速线 | | 通信模块 | RS485-USB | - | - | [RS485-USB](https://item.taobao.com/item.htm?id=735528802234) | 深度计用 | | 通信模块 | CAN-USB | - | - | [CAN-USB](https://detail.tmall.com/item.htm?id=598670674373) | 倾角仪用 | | 电压转换模块 | 12V转5V-3A | - | - | [5V](https://item.taobao.com/item.htm?id=722027908769) | 需要三块 | | 电源系统 | 11.1V(3S) | - | - | [12V/8400mah](https://detail.tmall.com/item.htm?abbucket=6&id=520111996213) | DC5.5公+母头 | | 状态指示灯 | 10030105-0002 | - | - | [绿色指示灯](https://item.taobao.com/item.htm?id=793523888501) | 耐压1km
需外接控制电路 | ### 0. 硬件总体安装示意图 树莓派引脚图->[链接](https://pinout.xyz/) **无集成单元连接方式** ![硬件概览图](/hardware/hardware.svg) **集成单元安装接线示意图** ![硬件概览图](/hardware/hardware_com.svg) ### 1. 时钟模块安装 ![](else/pic/时钟模块对应引脚图.png) ### 2. 调速风扇安装 ### 3. 树莓派电源安装 ### 4. 状态指示灯安装 ### 5. 深度计安装 ![img](else/pic/USB引脚定义图.jpg) ### 6. 倾角仪安装 ## 3. 树莓派的设置与安装 ### 3.1 PC端上位机软件安装 + 命令行交互软件 xshell -> [xshell下载链接](https://www.xshell.com/zh/xshell/) + 文件交互软件 WinSCP -> [WinSCP](https://winscp.net/eng/index.php) ### 3.2 树莓派系统安装 [下载树莓派系统安装软件->点我](https://downloads.raspberrypi.org/imager/imager_latest.exe) **选择如图** ![图片](else/pic/树莓派烧录_1.png) **设置如下** ![设置](else/pic/树莓派烧录_2.png) ``` 设置主机名: pi01.local Set username and passwd : username: pi passwd: raspberry 配置WIFI: WTJ 密码 wangtaijie WIFI国家:GB 语言: SHANGHAI 键盘 us ``` ![确认](else/pic/树莓派烧录_3.png) ### 3.3 查看设备是否连接至路由器 http://192.168.8.1/ 密码:wangtaijie 查看设备以`dhcpcd-8.1.2`开头的设备是否连上 ![](else/pic/查看设备连接.png) ### 3.4 连接树莓派 打开xshell,新建会话 ```bash 主机: pi01.local 用户身份验证: 用户名:pi 密码:raspberry ``` 连接 ### 3.5 更新设备系统和库 ```bash sudo apt-get update sudo apt-get upgrade # 按y # 更改系统时区 ``` ### 3.6 检查pip是否安装 ```bash pip --version # Python2.x 版本命令 pip3 --version # Python3.x 版本命令 # 如果未安装的话 sudo apt-get install python3-pip # sudo apt-get install python-pip 安装一个即可 # pip换源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 3.7 安装wiringpi-python ```bash # 安装nano编辑器和Git sudo apt-get install nano sudo apt-get install git # 创建工作区并进入 cd ~/ && mkdir ~/WorkSpace && cd ~/WorkSpace # 安装wiringpi pip install wiringpi ``` ### 3.8 安装gsw库 ```bash pip install gsw # 用来计算海水的深度 ``` ### 3.9 修改树莓派WIFI 1. SD卡创建名为`wpa_supplicant.conf`文件 ```bash ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=US network={ scan_ssid=1 ssid="你的Wifi名称" psk="你的Wifi密码" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN priority=1 } ``` 2. ssh方式添加wifi ```bash # 先使用ssh登录树莓派的后台 sudo raspi-config # 选择1-> System Options # 选择S1-> Wireless LAN # Please enter SSID -> 输入wifi名称 # Please enter password -> 输入wifi密码 # 回车完事儿 ``` ### 3.10 安装其他相关库 ```bash # 安装serial库 pip3 install pyserial # 安装openblas sudo apt-get install libopenblas-dev # 安装psutil库 pip install psutil ``` ## 4. 传感器参数设置 ### 4.1 DS3231时钟模块 #### 树莓派设置(xshell) ```bash sudo raspi-config # 1. 选择 3 Interface Options Configure connections to peripherals # 2. 然后,选择 P5 I2C Enable/disable automatic loading of I2C kernel module # -> 提示 Would you like the ARM I2C interface to be enable? # 3. 选择 # -> 提示 The ARM I2C interface is enabled # 4. 回车选择 # 5. 选择5,选择时区, Localisation Options Configure language and regional settings # 6. 选择L2 Timezone Configure time zone # 选择 Asia -> Shanghai # 8. 按ESC退出 sudo nano /boot/config.txt # 在 dtparam=i2c_arm=on下添加(复制粘贴即可) dtoverlay=i2c-rtc,ds3231 # ctrl+x, 按y确认,回车退出 # 安装i2c-tools sudo apt-get install i2c-tools # 然后重启 sudo reboot now # 等待重启结束 # 查看I2C设备 sudo i2cdetect -y 1 # 结果如下图所示,某组地址为UU ``` ![I2C_Detect.png](else/pic/查看I2C设备连接.png) ```bash # 查看当前树莓派的系统时间 timedatectl # 查看时间服务 # Local time: Sun 2024-05-26 16:11:55 CST # 本地时间 # Universal time: Sun 2024-05-26 08:11:55 UTC # UTC时间 # RTC time: Sun 2024-05-26 08:11:56 # RTC时钟模块时间 # Time zone: Asia/Shanghai (CST, +0800) # 时区 # System clock synchronized: yes # 如果和远程NTP服务器成功同步,显示为yes # NTP service: active # 联网自动时间同步功能,是否开启 # RTC in local TZ: no # no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间 # 尝试设置一个时间 sudo hwclock --set --date="2021/08/21 22:02:00" # 再次查看时钟模块的时间 timedatectl # 查看时间服务 # Local time: Sun 2024-05-26 16:40:02 CST # Universal time: Sun 2024-05-26 08:40:02 UTC # RTC time: Sat 2021-08-21 14:02:04 # Time zone: Asia/Shanghai (CST, +0800) # System clock synchronized: no # NTP service: active # RTC in local TZ: no # 重启,并联网, 此时时钟模块会自动更新 sudo reboot now timedatectl # 查看时间服务 # Local time: Sun 2024-05-26 16:44:09 CST # Universal time: Sun 2024-05-26 08:44:09 UTC # RTC time: Sun 2024-05-26 08:44:10 # 时钟模块时间更新了 # Time zone: Asia/Shanghai (CST, +0800) # System clock synchronized: yes # NTP service: active # RTC in local TZ: no ``` ### 4.2 DT03D5-RS485深度计 #### 4.2.1 深度计参数设置 + 下载深度计上位机,解压后打开,[深度计上位机压缩包点我](else/Depth Sensor/DepthSensorSoftware.zip) + 如果设备管理器查找不到对应串口,安装对应的驱动,[下载驱动点我](https://www.wch.cn/downloads/CH343SER_EXE.html) + **提示,深度计必须接上外接电源!** + 打开上位机,如下图所示: + 若为新设备,设置波特率为19200(已经调试过的设备为115200) + 设置协议为串口通信ASCII协议 + 点击打开串口 尝试读取地址 + 尝试读取设备地址,当提示地址读取成功时,说明可以进行后续的设置流程,反之需要检查设备硬件连接。 尝试读取地址 + 将设置波特率设置选择为`115200`,然后点击`设置波特率`。当输出栏出现**设置地址成功,重新上电有效**时,重新对深度计进行上电。 尝试读取地址 + 设备重新上点后,设置串口通信波特率为`115200`,点击`打开串口`,然后点击->`读取数据`。可以看到此时数据接收栏出现数据,且左上角数据解析区有新的数据。此时深度计设置完毕。 尝试读取地址 #### 4.2.2 代码中纬度设置(海水作业环境必须设置) 设置采样纬度,是用来计算海水密度,从而换算深度计在某点水压下的深度的。 首先下载好代码,详见第`5`章: ##### 4.2.2.3 在线修改方式(联网状态下推荐) ```bash # 确保已联网!!!!! # 打开源代码 cd ~/WorkSpace/SCADA/ # 确保已联网!!!!! # 删除已修改代码 rm ~/WorkSpace/SCADA/src/DT03D5_RS485/Read_DT03D5.py # 确保已联网!!!!! # 拉取最新代码 git pull # 重启即可 ``` ##### 4.2.2.4 离线状态修改方式 ```bash nano ~/WorkSpace/SCADA/src/DT03D5_RS485/Read_DT03D5.py # 找到第10行 # latitude = 0.0 # 海水的纬度,度点度 # 修改为作业纬度,单位是度点度 # 退出 ctrl+x -> 按 y 保存 # 修改完毕,重启即可 ``` ### 4.3 HWT9073-CAN协议IMU #### 4.3.1 IMU的参数设置 下载上位机,[下载上位机点我](https://wit-motion.yuque.com/wumwnr/aqvq6y/qngktvx5grz81zkq) + 选择设备为HWT9703-CAN + 点选设备 + 点击设置按钮 + 算法选择六轴 + 带宽选择256hz(以本要求为准) + 通信速率设置为250k(以本要求为准) + 回传速率设置为100hz(以本要求为准) + ~~勾选内容->时间(以本要求为准)~~(时间数据无用,勾掉即可) + 设置完毕,重启设备,并再次打开上位机的传感器配置页面,检查设置是否成功 ![HWT9703](else/pic/HWT9703.png) ## 5. 数据管理系统安装与维护 ### 5.1 下载代码 ```bash cd ~/WorkSpace && git clone https://gitee.com/yoooola/SCADA.git ``` **日常维护** ```bash # 查看状态 sudo systemctl status SCADA.service # 开始采集服务 sudo systemctl start SCADA.service # 停止采集服务 sudo systemctl stop SCADA.service # 重启服务 sudo systemctl restart SCADA.service # 查看日志 cat /home/pi/workspace/SCADA/log/SCADA_service.log cat /home/pi/workspace/SCADA/log/SCADA_service_error.log ``` **设置开机自启动功能** ```bash # 开启开机自启服务 sudo systemctl enable /home/pi/WorkSpace/SCADA/SCADA.service sudo systemctl daemon-reload # 关闭开机自启动服务 sudo systemctl disable /home/pi/WorkSpace/SCADA/SCADA.service sudo systemctl daemon-reload # 查看是否开机自启动 sudo systemctl is-enabled SCADA.service ``` ### 5.2 温控风扇 **说明**:该功能来自[GITHUB开源示例库(迁移至gitee)](https://gitee.com/yoooola/RaspberryPi_CPU_PWM) **日常维护** ```bash # 查看风扇日志 cat /var/log/cpu-fan/cpu-fan.log # 设置风扇启动最低温度、全速温度、关闭温度 nano ~/.cpu-fan.conf # 重启风扇服务 sudo service cpu-fan restart # 编辑风扇程序 sudo nano /usr/bin/cpu-fan ``` **删除调速风扇功能** ```bash # 卸载风扇程序 cd /home/pi/workspace/SCADA/src/Fans/ sudo ./uninstall.sh ``` **安装调速风扇功能** ```bash # 下载最新C版本的wiringpi安装包 cd ~/WorkSpace && wget https://project-downloads.drogon.net/wiringpi-latest.deb # 安装wiringpi sudo dpkg -i wiringpi-latest.deb # 进入调速风扇代码目录 cd ~/WorkSpace/SCADA/src/Fans # 给于应用程序权限 chmod +x install.sh chmod +x uninstall.sh chmod +x cpu-fan.sh # 安装调速风扇功能 sudo ./install.sh # 设置开机自启动 sudo systemctl enable /home/pi/WorkSpace/SCADA/src/Fans/fan.service # 查看风扇状态 sudo systemctl status fan.service # 设置风扇启动 sudo systemctl start fan.service # 设置风扇关闭 sudo systemctl stop fan.service ``` ### 5.3 状态指示灯闪烁含义

**注意:状态指示灯只能同时指示`一个`设备状态!!!** 状态指示灯只能指示一个设备状态,当同时检测到多个设备异常时,只显示一个设备异常!!!

**系统启动时** 指示灯闪烁三次,然后熄灭,此时设备进入初始化功能 异常情况: + 指示灯未闪烁,请检查指示灯连接情况,或检查系统是否设置开机自启动,能否手动启动
**设备初始化及设备运行时** 设备初始化开始,本系统会对IMU和进行自检,自检设备无异常,指示灯常量 指示灯闪烁,以5s为周期,前2s闪烁几次是哪个设备(IMU为1,深度计为2),后1.5s闪烁几次是什么异常 5s内,闪烁频次为(长1次 + 短1次),即设备1(IMU),错误代码为1 错误代码: + 01 - 初始化中串口丢失,检查设备是否连接,两个USB设备的设备号是否接错 + 02 - 设备运行中串口丢失,检查设备是否有松动 + 10 - 未知错误 **系统正常运行** 指示灯长亮,无闪烁 ## 6. 常见问题 ### 1. 深度传感器MS5837无数据、提示"Error: conn't open I/O ....." ```txt 1.确保RS485和RS232的设备供电为单独供电,不能直接接在树莓派上。最好做好电源隔离和IO隔离; 2.确保IIC的线长低于30cm,10-20cm较为合适; 3.检查MS5837的供电为3.3-3.6V,可以在vcc和gnd之间并联一个电容10-100uf之间即可。 ``` ### 2. 调速风扇时而转时而不转 ```txt 1.调速风扇是温控的,温度较低的时候可能会不转,如果需要可以设置风扇启动的最低温度为33000(33℃),关闭温度为30000(30℃),或者其他参数。 ``` ### 3. 内存泄漏 ```bash # 出现以下内存泄漏,没办法,我也不知道咋处理。重启就能重新分配内存了。所以无视他就好了 /usr/lib/python3.9/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown warnings.warn('resource_tracker: There appear to be %d ' ``` ## 7. 备用代码 [姿态传感器计算位移并作示意图代码](https://github.com/xioTechnologies/Gait-Tracking) ## 8. 树莓派的系统迁移及备份问题 最好新作系统,不要迁移!!! ### ~~8.1 系统备份及迁移~~ ~~**请保证原始系统和待迁移系统SD卡大小相同!**~~ ~~**请使用软件Etcher,[点我->~~](https://etcher.balena.io/)** ### 8.2 系统域名设置 ```bash sudo raspi-config # 选择1 -> System Options # 选择S4 -> HostName # 输入 pi02 # 回车确认 # 重启 ```