ClockWave - 电波表信号发射器
基于 ESP32/ESP32-C3 的多功能低频电波时钟信号发射器。
这个项目可以把你的 ESP32 开发板变成一座小型长波授电台,让身边的电波表、电波钟自动对时。支持的信号覆盖日本、美国、德国、台湾、英国和中国河南的多套标准。
支持信号
| 信号 | 频率 | 地区 |
|---|---|---|
| JJY-E | 40 kHz | 日本 |
| JJY-W | 60 kHz | 日本 |
| WWVB | 60 kHz | 美国 |
| DCF77 | 77.5 kHz | 德国 |
| BSF | 77.5 kHz | 台湾 |
| MSF | 60 kHz | 英国 |
| BPC | 68.5 kHz | 中国河南 |
ESP32 接线
| 功能 | GPIO 引脚 |
|---|---|
| 天线 | GPIO26 |
| 蜂鸣器 | GPIO27 |
| LED | GPIO25 |
ESP32-C3 接线
| 功能 | GPIO 引脚 |
|---|---|
| 天线 | GPIO3 |
| 蜂鸣器 | GPIO4 |
| LED | GPIO5 |
天线说明
使用约 30cm 的环形天线,串联电阻限流。具体参数可参考 nisejjy 的设计。天线方向会影响电波表接收效果,建议在使用过程中适当调整角度和位置。
编译方法
本项目使用 PlatformIO 构建。
编译 ESP32 经典版:
pio run -e esp32dev
编译 ESP32-C3:
pio run -e esp32-c3-devkitm-1
烧录方法
方法一:PlatformIO 烧录
pio run -t upload
方法二:esptool 命令行烧录
从 Gitea Actions 页面下载 firmware.bin,然后:
pip install esptool
esptool.py write_flash 0x0 firmware.bin
方法三:浏览器刷写(零安装)
无需安装任何工具,直接在浏览器中刷写:
- 用 USB 数据线连接开发板
- 打开 esptool-js 网页
- 选择波特率 460800,连接设备
- 加载下载的
firmware.bin,写入地址0x0 - 点击 Flash 开始烧录
需要使用 Chrome 或 Edge 等支持 Web Serial API 的浏览器。
方法四:TinyUF2 拖拽刷写(U 盘模式)
注意:TinyUF2 目前仅支持 ESP32-S2 / ESP32-S3,不支持 ESP32-C3。 ESP32-C3 用户请使用上面三种方法。
刷入 TinyUF2 bootloader 后,可以将 ESP32-S2/S3 开发板当作 U 盘,直接拖拽 .uf2 文件完成固件更新。
从 TinyUF2 releases 下载对应板型的固件,首次用 esptool 刷入后,以后双击 RESET 即可进入 U 盘模式拖刷。
首次配置
上电后,ClockWave 会进入 AP 模式。用手机或电脑连接:
| 项目 | 默认值 |
|---|---|
| WiFi 名称 | RadioStation_XXXXXX |
| 密码 | 12345678 |
| 配置页面 | http://192.168.4.1 |
连接成功后打开浏览器访问 192.168.4.1,即可配置目标时区、信号台站以及 WiFi 连接信息。
NTP 服务器
固件通过以下服务器获取标准时间:
| 服务器 | 说明 |
|---|---|
ntp.aliyun.com |
阿里云 NTP 服务器 |
pool.ntp.org |
全球公共 NTP 池 |
网关地址会通过 WiFi.gatewayIP() 动态获取。通常情况下,你的路由器会自动作为兜底 NTP 服务器使用。
台站调度
支持在 Web 界面中设置要发射的台站。当多个台站的发射时间重叠时,系统会每 5 分钟自动轮换,避免冲突。
持续集成
本项目使用 Gitea Actions 自动构建。每次推送代码到 master 分支后,Actions 会自动运行编译流程。你可以在 Actions 页面下载编译好的 .bin 固件文件。
致谢
- nisejjy by taroh
- ClockWaveXmitter by 5Breeze
这些项目为 ClockWave 提供了核心思路和参考实现。