智能风动船模无线遥控系统
已完成项目案例

智能风动船模无线遥控系统

我的角色独立完成软硬件设计 / 制作 / 整机联调

2026 年春四川大学水上之星船模大赛参赛项目:独立完成 STM32 遥控端与船载端、PCB、制作及整机联调,作为唯一单人成队在 72 支专业组队伍中进入决赛并获第 9 名。

完成结果

在 72 支专业组队伍中进入决赛并获得第 9 名;唯一单人成队。

2026.03
开发时间
2026.3
周期
2026 年春 / 赛事周期
团队
1 人 / 唯一单人成队
技术
STM32F103C8T6 / HAL / 嘉立创 EDA
平台
无线遥控器 + 船载接收器
活动 / 赛事
四川大学水上之星船模大赛(2026 年春)
独立开发嵌入式开发硬件设计STM32EmbeddedHardware

项目简介

这是一个偏软硬件结合的完整项目,正式项目范围对应 CONTROL02 遥控端和 BOAT02 船载端。核心目标是完成遥控器与船载接收器的无线控制系统:遥控端读取摇杆输入并打包发送,接收端解析数据后分别控制舵机方向和电调油门,最终形成从人手输入到船体执行机构的闭环。

我以唯一单人成队身份参加四川大学水上之星船模大赛(2026 年春),独立完成全部软硬件设计、制作与整机联调,并在 72 支专业组队伍中进入决赛、获得第 9 名。

我负责的部分

  • 作为赛事中唯一单人成队的参赛者,独立完成遥控端、船载接收端、软硬件设计、PCB、焊接制作和整机联调,并将它们串成可下水运行的完整版本。
  • 独立完成 CONTROL02 遥控端和 BOAT02 船载端的全部代码,包括 ADC 采样、数据打包、NRF24L01 通信、PWM 舵机控制和电调油门控制。
  • 设计 3 字节控制协议:第 1 字节表示舵机角度,后 2 字节表示油门值,接收端按同一格式解包并执行。
  • 独立完成硬件连接与调试,通过 3.3V 供电、滤波电容、晶振、nRF24L01 模块和外部接口完成遥控器/船载端的电路闭环。
  • 针对摇杆中位抖动和电调安全启动做处理,在代码中加入油门死区、限幅、LED 自检反馈和电调校准流程。

技术实现

  • 遥控端基于 STM32F103C8T6 和 HAL,分别读取 PA0 / PA1 两路 ADC:一路映射为 0-180 度舵机角度,另一路围绕中位值做死区判断后映射为 0-1000 油门量。
  • 遥控端将角度与油门打包成 tx_data[3],通过 NRF24L01 发送;通信模块使用 SPI1、5 字节地址、2.402GHz 频道、1Mbps 速率和自动重发配置。
  • 船载端进入 NRF24L01 接收模式后读取同样的 3 字节载荷,将角度交给 Servo_SetAngle,将油门交给 Motor_SetThrottle
  • 舵机使用 TIM2 PWM 输出,按 0.5ms-2.5ms 脉宽映射 0-180 度;电调使用 TIM1 PWM 输出,按 1ms-2ms 脉宽映射 0-1000 油门。
  • 船载端启动时先让舵机居中,再进行 NRF24L01 自检和电调校准;异常时用 LED 慢闪停机,正常时用快闪反馈通过。
  • 硬件侧使用嘉立创 EDA 绘制 PCB 并完成焊接,结合 3.3V 稳压、并联电容和电源滤波降低无线模块供电不稳带来的问题。 实现中最重要的判断是把协议做小:遥控端不发送复杂结构体,只发角度和油门两个结果;船载端不再关心摇杆原始值,只负责解包、限幅和输出。这样在水面调试时可以逐层排查,避免把 ADC 抖动、无线丢包、电调校准和舵机 PWM 混成一个难定位的问题。

系统结构

  • 输入层:遥控端摇杆输出模拟量,STM32 通过 ADC1 / ADC2 采样并转换为方向和油门控制量。
  • 通信层:nrf24l01.c 封装寄存器读写、发送、接收、自检、TX/RX 模式切换和 FIFO 清理,两端保持相同地址和载荷宽度。
  • 执行层:船载端用 TIM2 控制舵机角度,用 TIM1 控制电调油门,把无线数据转为实际运动。
  • 保护与反馈层:油门死区避免中位抖动,限幅保护输出范围,LED 用于启动、自检、异常和油门状态反馈。
  • 硬件层:PCB 承担供电、通信模块、晶振、状态灯和外部接口连接,保证软件控制链路能稳定落到实物上。

整理成控制流程后,整套系统从摇杆到执行机构是一条很直接的输入-通信-输出链:

智能船模控制流程图

我在实现时尽量让协议保持小而明确:遥控端只发送角度和油门,船载端只负责解包、限幅和输出 PWM。这样调试时可以按层定位问题:先看 ADC 是否稳定,再看 tx_data[3] 是否正确,再看 NRF24L01 是否收包,最后看舵机和电调是否响应。 把系统整理成工程链后,流程更清晰:摇杆模拟量进入 ADC,映射成控制量后压缩成 3 字节包,经 SPI 写入 NRF24L01,船载端收到包后再转成两个 50Hz PWM 输出。整条链路的每一层都有可观测点:ADC 值、tx_data、NRF24L01 状态寄存器、LED 闪烁和执行机构响应。

截图与工程展示

STM32CubeMX 引脚配置

引脚配置围绕 STM32F103C8T6 展开,包含 ADC 输入、SPI 通信、USART 调试和基础 GPIO 输出。

接收端原理图

原理图包含 3.3V 稳压、电源滤波、晶振、nRF24L01 通信模块、状态指示灯和外部接口。

STM32CubeIDE 代码调试

代码侧完成 ADC 采样、油门/舵机映射、3 字节数据包发送、nRF24L01 接收解包、PWM 输出和状态灯反馈,形成遥控器到船端执行机构的控制链路。

项目结果

  • 以唯一单人成队身份在 72 支专业组队伍中进入决赛,并获得第 9 名。