本项目可以解码68.5Khz的商丘低频时码发播台BPC信号,并实时显示当前解码的时间,可用作离线对时用。只需要一个支持接收长波信号的SDR设备即可。具有低成本、稳定抗干扰的特点。
This project can decode the 68.5Khz China Shangqiu low-frequency time code broadcaster BPC signal and display the current decoded time in real time, making it suitable for offline time synchronization. It only requires an SDR device that supports LW(longwave) signals. It is low-cost, stable, and resistant to interference. You can get full English document here.
你需要:
-
一个兼容你的SDR设备的SDR软件
-
任意虚拟声卡驱动
-
一个支持接收长波68.5KHz的SDR设备
项目功能与特色:
- 解码BPC时间信号并输出
- 自适应阈值
- 抗干扰,内置信号滤波算法,信号短暂波动不影响解码效果
- 有前端时钟页面,可以作为大屏展示
- 可通过反向发射BPC音频信号,利用音频电磁信号谐波为电波手表授时
- NTP时钟功能,可以为局域网设备授时(未完成)
git clone https://github.com/gfdfdxc/BPC-RadioTime-Decoder.git
pip install -r requirements.txt
本项目已测试可在Windows上的Python 3.10.4成功运行。
本项目有两种使用方式:
python bpc_decoder.py
可选指令:
usage: bpc_decoder.py [-h] [--device DEVICE] [--threshold THRESHOLD] [--list-devices] [--disable-adaptive]
BPC授时信号解码器
options:
-h, --help show this help message and exit
--device DEVICE 音频设备索引
--threshold THRESHOLD
信号检测阈值 (默认: 0.09)
--list-devices 列出音频设备
--disable-adaptive 禁用自适应阈值
其中--threshold和--disable-adaptive不推荐使用,脚本通常能很好的自动确定音频阈值。如果不指定--device则使用系统默认音频输入设备。
运行输出示例:
2025年07月31日 16:52:41,568 - INFO - 原始数据: [1, 0, 1, 0, 3, 1, 0, 1, 0, 2, 1, 3, 3, 1, 3, 1, 2, 1, 1]
2025年07月31日 16:52:41,568 - INFO - 解码帧开始时间: 2025年07月31日 Thu 16:52:21 HKT
2025年07月31日 16:52:41,569 - INFO - 上午/下午: 下午
2025年07月31日 16:52:41,569 - INFO - 是否进位: 否
2025年07月31日 16:52:41,569 - INFO - 当前系统时间: 2025年07月31日 16:52:41
2025年07月31日 16:52:41,569 - INFO - 时间差异: -20.6秒(标准值:-20s)
脚本运行结束后会输出音频强度统计图
cd bpc-web/backend
python app.py
cd bpc-web/frontend
npm install
react-scripts start
Web模式有以下功能:
此页面为简易模式,可将解码BPC展示出来,并显示与系统时间的差值
此页面为详细模式,可查看解码状态,信号质量,NTP服务管理,音频设备选择,音频频谱等
此页面为BPC信号生成器,可将当前时间反向发射为BPC音频信号,可为电波手表授时
课设项目,基本功能已测试过无明显bug。
NTP部分因为Windows的低端口限制没法在NTP默认端口启动服务,欢迎提交PR完善这个功能!
部分解码代码参考https://github.com/bclswl0827/BPC-Clock
本项目使用了AGPL-3.0 license
Copyright ©gfdfdxc 2025