1. 项目背景与核心目标
在海洋环境监测领域,波浪参数的精确测量对航海安全、海洋工程和气象预报具有重要意义。传统波浪测量设备往往体积庞大、成本高昂,而基于微控制器的嵌入式解决方案则提供了小型化、低成本的替代方案。我们团队基于STM32F103微控制器和JY901九轴姿态传感器,开发了一套完整的波浪参数测量系统,能够实时采集并处理三轴加速度和角度数据,最终计算出波高、波向和周期等关键参数。
这个项目的技术难点主要集中在三个方面:首先是传感器数据的精确采集与处理,需要解决JY901与STM32之间的稳定通信问题;其次是坐标系的转换算法,要将传感器坐标系下的数据准确转换为大地坐标系;最后是频域积分算法的实现,需要克服时域积分常见的累积误差问题。整个系统在浙江大学舟山海洋研究中心的波浪模拟平台上进行了充分测试,验证了其测量精度和可靠性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件系统设计与实现
2.1 核心硬件选型与配置
我们选择STM32F103C8T6作为主控芯片,主要基于以下考虑:
- 充足的GPIO接口和USART串口资源
- 内置硬件SPI接口,支持SD卡高速存储
- 72MHz主频提供足够的计算能力
- 丰富的中断资源保障实时性
JY901姿态传感器通过串口与STM32通信,其关键特性包括:
- 内置MPU9250芯片,集成三轴加速度计、陀螺仪和磁力计
- 默认输出频率10Hz(可配置至200Hz)
- 内置卡尔曼滤波算法,输出姿态角精度±0.05°
- 标准Modbus-RTU协议,便于数据解析
实际使用中发现,JY901在5Hz以下采样时数据稳定性最佳,过高采样率会导致数据抖动明显。建议根据应用场景在5-20Hz范围内调整。
2.2 硬件连接与电源设计
系统硬件连接示意图如下:
| 模块 | 连接方式 | 引脚配置 |
|---|---|---|
| JY901 | USART1 | PA9(TX), PA10(RX) |
| SD卡模块 | SPI1 | PA4(CS), PA5(SCK), PA6(MISO), PA7(MOSI) |
| 状态指示灯 | GPIO | PC13(LED0), PC14(LED1) |
| 电源管理 | 3.3V LDO | 输入5V, 输出3.3V |
电源部分采用AMS1117-3.3稳压芯片,为整个系统提供稳定供电。实际测试中发现,当使用劣质USB电源时,电压波动会导致SD卡写入失败。解决方案是:
- 在电源输入端增加100μF电解电容
- 在3.3V输出端增加0.1μF陶瓷电容
- 避免使用移动电源供电,推荐使用实验室稳压电源
3. 软件架构与数据采集
3.1 主程序流程设计
系统软件采用前后台架构,主循环负责状态监测和任务调度,中断服务程序处理传感器数据接收。核心流程如下:
c复制int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_SPI1_Init();
MX_FATFS_Init();
while (1) {
if (start_flag) {
LED1_ON();
for(int i=0; i<SAMPLE_COUNT; i++){
HAL_Delay(SAMPLE_INTERVAL);
process_sensor_data()
