littlebot
Published on 2025-04-02 / 0 Visits
0

【源码】基于C语言的Vaisala RS41探空仪自定义固件

项目简介

本项目是针对Vaisala RS41探空仪开发的自定义固件RS41LK。它基于RS41固件RS41ng开发,为基于RS41探空仪的实验提供简洁、可定制且模块化的代码库。探空仪采用STM32F100C8 32位微控制器,可通过ST-LINK v2编程器重新编程,能在70 cm(~433 MHz)业余无线电频段传输不同类型的RF调制信号,还可作为追踪设备使用。

项目的主要特性和功能

  1. 多种传输模式支持:支持标准1200波特的APRS,可选择用外部BMP280传感器读数传输APRS气象报告;支持摩尔斯电码(CW)。
  2. 外部传感器支持:可通过外部I²C总线连接外部传感器,目前支持Bosch BMP280气压/温度/湿度传感器,欢迎贡献更多传感器驱动代码。
  3. GPS数据输出:可通过外部串口引脚4输出GPS NMEA数据,方便在外部追踪硬件(如树莓派或其他微控制器)中使用。
  4. 增强的内部无线电发射支持:通过基于PWM的音调生成增强对内部Si4032无线电发射机的支持,若可能还将实现基于DMA的符号定时。
  5. 可扩展性:便于轻松添加新的传输模式和新传感器。

安装使用步骤

配置固件

  1. config.h中配置业余无线电呼号、传输时间表(时间同步)、发射频率和传输模式参数。
  2. 根据使用的模式,在config.c中设置传输消息模板。

构建固件

  1. 安装所需软件依赖:
    • GNU GCC工具链,版本8.3.0或更高,用于为ARM Cortex - M3架构交叉编译固件(arm-none-eabi-gcc)。
    • CMake,版本3.6或更高,用于构建固件。
    • OpenOCD,版本0.10.0或更高,用于闪存固件。 在Red Hat/Fedora Linux系统上,可使用以下命令安装相关包: bash dnf install arm-none-eabi-gcc-cs arm-none-eabi-gcc-cs-c++ arm-none-eabi-binutils-cs arm-none-eabi-newlib cmake openocd
  2. 使用以下命令构建固件: mkdir build cd build cmake.. make
  3. 固件将存储在build/src/RS41ng.elf文件中。

闪存固件

  1. 移除探空仪的电池。
  2. 通过以下引脚将ST - LINK v2编程器加密狗连接到探空仪:
    • SWDIO -> 引脚1
    • SWCLK -> 引脚7
    • GND -> 引脚5
    • 3.3V -> 引脚3
  3. 解锁闪存保护(仅在首次重新编程探空仪之前需要): openocd -f./openocd_rs41.cfg -c "init; halt; flash protect 0 0 31 off; exit"
  4. 闪存固件: openocd -f./openocd_rs41.cfg -c "program build/src/RS41ng.elf verify reset exit"
  5. 对探空仪进行电源循环以启动运行新固件。

开发/调试固件

  1. 将RS41探空仪通过STM32 ST - LINK编程器加密狗连接到计算机。
  2. config.h中启用半主机模式和日志记录,取消注释以下行: #define SEMIHOSTING_ENABLE #define LOGGING_ENABLE
  3. 启动OpenOCD并让其在后台运行: openocd -f./openocd_rs41.cfg
  4. 启动ARM GDB: arm-none-eabi-gdb
  5. 将GDB连接到OpenOCD进行闪存和调试(假设您在包含CMake生成的Makefile的build目录中): target remote localhost:3333 monitor arm semihosting enable make load src/RS41ng.elf monitor reset halt continue # 此命令运行固件
  6. OpenOCD将输出固件的日志消息,GDB可用于中断和检查固件程序。若要加载调试符号以设置断点并进行更详细的检查,使用命令file src/RS41ng.elf

调试APRS

可使用以下工具和命令行示例通过SDR接收器接收和调试APRS消息,以下示例假设使用RTL - SDR加密狗:

Dire Wolf

rx_tools: bash rx_fm -f 432500000 -M fm -s 250000 -r 48000 -g 22 -d driver=rtlsdr - | direwolf -n 1 -D 1 -r 48000 -b 16 - rtl - sdr: bash rtl_fm -f 432500000 -M fm -s 250k -r 48000 -g 22 - | direwolf -n 1 -D 1 -r 48000 -b 16 -

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】