yyqyou
发布于 2026-06-14 / 15 阅读
0
0

使用STM32+SI5351进行20m WSPR跨洲通信

前言

事情的起因是那天晚上我先来无事找到了闲置的STM32f411ceu6,寻思着能不能做点好玩的东西,什么调制fm都烂大街了,然后我问了下ai,然后就有了这篇文章,本来打算用pwm调制但是刚好手上还有个si5351那不用白不用。话说不知道为什么,中国几乎没人玩这玩意,昨天只遇到了个8区的友台(不会有什么坑吧)。

!!!经行通信时务必有人值守,杂散问题理论上来说不用考虑因为要求的是小于等于50mw但是si5351输出才10mw(

固件部分

网上好像没有给stm32f411的wspr固件但是都用5351了好像什么单片机也无所谓了于是我自己写了个固件

固件:stm32_WSPR-FPMg.elf


STM32F411CEU6 通过 I2C 控制 Si5351,默认从 CLK1 输出 WSPR 信号。固件支持 GNSS 和电脑串口两种授时方式,也支持运行时修改呼号、网格、功率和发射频率。现在串口已经做成命令行风格,输入 help 可以查看命令。

串口用法
波特率 1152008N1。打开串口后会看到提示符:

wspr>

常用命令:

help
show
set call BI4LOJ
set grid OM85
set power 10
set freq 14097070
time 03:59:55
auto on
auto off
tx
stop

说明:

  • set call:设置呼号

  • set grid:设置 4 位网格

  • set power:设置功率 dBm

  • set freq:设置 Si5351 直接 RF 输出频率,不是 SSB 拨盘频率

  • time:设置 UTC 时间

  • auto on/off:开启或关闭偶数 UTC 分钟自动发射

  • tx:立即发射一帧

  • stop:停止发射并关闭 CLK1

上位机用法
电脑端上位机,打开时设置呼号和网格。也可以直接在命令行里传参数。

例如:

python tools\pc_time_sync.py COM7

也可以直接指定:

python tools\pc_time_sync.py COM7 --call BI4LOJ --grid OM85 --power 10 --freq 14097070

如果只想授时,不想自动发射:

python tools\pc_time_sync.py COM7 --no-auto

pc_time_sync-JOVq.py

硬件部分

  • UART1:电脑上位机控制/授时

  • UART2:GNSS 授时

  • I2C1:Si5351

  • CLK1:射频输出

注意!我固件的5351默认发射接口是clk1!

硬件部分

UART1是连接上位机和电脑的

UART2是连接GPS的

i2c是连接5351的

实战部分

这里我用了网心云盒子做授时天馈是5.6m gp,没仔细调,效率一般,驻波2.0以上

战果

结论

这么简陋的设备能做到这种效果也挺不错了,10mw就能跨洲,就是这个授时挺蛋疼的,有空把单片机换成8266,直接网络授时,还有就是目前的固件比较简陋等我更新吧,以后可能会开源;这种通信方式也就图个新鲜了等我通到美国和欧洲我就给这玩意拆了没啥意思,或许用来检测传播也不错

感谢你观看这篇文章,空中常见 73 再会!

DE BI4LOJ

更新记录

2026/6/14 10:30 v1.0.0 发布文章


评论