最近不能玩航模了。
说起来挺憋屈的,本来计划好的飞行计划,因为各种原因只能搁置。人总得找点事做,不然闲得发慌。于是我把目光转向了另一个"老派"爱好——业余无线电。
业余无线电(Amateur Radio,也叫"火腿"Ham Radio)这个圈子,说大不大,说小不小。里头的玩法可太多了:HF 远程通联、卫星通信、应急救援……但其中最让我着迷的,是一种听起来极其"古老"的技能——摩尔斯码 CW 通联。
嘀、嗒、嘀嘀嗒……
别看这东西像上世纪的遗物,在业余无线电圈子里,CW 至今仍是穿透力最强、抗干扰能力最好的通联方式。全球几十万业余无线电爱好者还在玩,国际竞赛每年照开,老炮们打起来那叫一个行云流水。
我就寻思:这玩意儿,我也要学!
找遍全网,没有一款让我满意的工具
想学摩尔斯码,第一步当然是找工具。
国外有 LCWO,功能不错,但全英文界面,还得注册,对国内用户不太友好。有个叫 G4FON 的桌面客户端,只能装在 Windows 上,界面一股子上世纪九十年代风,打开那一刻我以为自己穿越了。还有各种手机 App,要么功能单一就是个字符对照表,要么设计稀烂没有系统性。
总结一句话:国内中文的、系统性强的、好用的——没有。
我是个码农,coding 本来就是我的另一个爱好。既然市面上没有满意的,那就……自己写一个!
反正写着玩,对吧?(天真)
我以为两周能搞定,结果……
立项第一天,我非常自信地打开编辑器,心想:不就是个网页应用,放几个字符、播个音频,能有多难?
然后现实给了我一个温柔的耳光。
音频系统 就是第一道坎。摩尔斯码的"嘀嗒"声,听起来简单,背后是一套对时序精度要求极高的音频调度系统。Web Audio API 的 Oscillator 音源、精确的点划时长控制(点 = 1单位、划 = 3单位、字符间隔 = 3单位、词间间隔 = 7单位)、Farnsworth 间距……每一个细节都要调到位,否则播出来要么像机关枪,要么像老牛拉磨,根本没法练。
解码系统 是另一个硬骨头。用真实按键发摩尔斯码练习时,如何实时判断用户按下的是"点"还是"划"?如何容忍手速误差?双桨电键的"Iambic"模式怎么模拟?我专门写了一套自动参数标定算法,跑了大量仿真数据才把边界条件调到满意。
学习体验 的设计也远比我想象的复杂。科学研究表明,学摩尔斯码有个反直觉的正确方式——Koch 法:一开始就要用目标速度播放(而不是从慢到快),先学 K 和 M 两个字符,熟练了再加一个,循序渐进。很多人用"数点划"的方式自学,结果越练越慢,卡在一个速度上跨不过去。我要把这套科学方法做进软件里。
这个软件到底有什么功能?
经过几个月的迭代(已经远超当初"两周搞定"的豪言),这个叫 CW 摩尔斯码训练站 的应用,现在长这样:

📖 字符表 & 参考资料
- 摩尔斯码字符表:26个字母 + 10个数字 + 20+个标点,支持搜索,点一下就能听音。
- Q 简语码表:37 个业余无线电通联必备 Q 码(QRZ、QSO、QSL……),中英文双语说明,一键播放。
- 常用通联短语库:65 个真实 QSO 场景用语,分类浏览,帮你提前熟悉上机语感。
- RST 信号报告说明:弄清楚"599"到底是什么意思。
🎓 系统学习路径(五阶段)
从"完全不认识点和划"到"能独立完成一次 QSO",设计了五个递进阶段:
- 字符记忆:先认识每个字符长什么样(Koch 科学顺序)
- 听力训练:只听音,选出正确字符
- 抄报练习:听完整段落,实时键入,逐字比对
- 发报练习:对着目标文本用键盘发码,系统实时核对
- QSO 模拟:模拟一次真实的业余无线电通联流程
📊 数据统计 & 弱点分析
每个字符的正确率、错误次数、反应时间都有记录。哪个字母老是打错,系统会标出来告诉你,让你有的放矢地针对练习。
⚡ 速度测评
5 / 10 / 15 / 20 / 25 WPM 五档分级测评,测出你当前"能稳定抄收的速度",可截图留档,也适合阶段性打卡。
🌐 网络 CW 通联
基于 WebSocket 的实时 CW 频道,可以和其他用户互发摩尔斯码。还支持通过 Web Serial 接入真实物理电键——用自己的电键,在网页上练习,无缝衔接真实上机场景。
🎮 射击练习游戏(FunShooter)
对,你没看错,为了让枯燥的记忆训练好玩一点,我还做了个小游戏——字符从天而降,你要听音识别并"射击"正确选项。边玩边学,比死记硬背高效多了。
技术上用了什么?
这是个纯前端应用,没有后端,核心技术栈:
- Nuxt 4 + Vue 3 + TypeScript:现代化网页应用框架
- Web Audio API:原生音频合成,精确控制点划时序
- Web Serial API:连接真实 CW 电键设备
- WebSocket:网络多人 CW 通联频道
- localStorage:所有学习进度、设置、统计数据全本地存储,无需注册,无需服务器,打开即用
对,就是这么简单粗暴——不注册,不登录,打开浏览器就能用,离线也行。
现在还有哪些不足?
说到问题,其实还挺多的,不然我也不用持续迭代:
- 移动端体验 还需要打磨,竖屏下部分交互不够顺畅
- 真实 QSO 录音库 目前还没有,用真实电台录音练习抄报是很多进阶用户的刚需,计划收集一批素材
- 麦克风实时解码 功能(用麦克风采集真实电台 CW 信号并解码)还在规划中
- 呼号专项练习 模式正在开发,BH4ABC 这样的格式需要专门训练
- 还有一堆用户反馈的小细节……
有问题就改,这不就是开发者最喜欢的状态嘛。
后面打算怎么玩?
这个项目对我来说不只是一个"练手作品",它是我真正在用的学习工具——我自己每天也在用它练习 CW,所以它好不好用我比谁都清楚。
接下来的计划大概是这样的:
近期(1-2个月):
- 补全呼号专项练习、竞赛缩语专项练习
- 上线速度认证测评(带可分享的电子证书)
- 持续优化移动端体验
中期:
- 引入真实 QSO 录音库,提供更贴近实战的抄报素材
- 研究 H1 触摸电键(ESP32 + 触摸芯片),实现"零门槛接入真实发码"
长期:
- 探索多人在线 CW 练习房间
- 和业余无线电协会合作,把这个工具推进更多人的学习路径
写在最后
说实话,当初航模飞不起来的那一刻,我怎么也没想到,这段"闲置时间"会催生出这么一个东西。
从一个"随手写着玩"的念头,到一个有音频系统、解码算法、学习路径设计、多人通联协议的完整应用——这中间踩了多少坑,熬了多少夜,只有我的编辑器知道。
但每次听到自己发出来的 CW 信号越来越流畅,每次看到某个一直打错的字母终于绿了,还是会觉得:这事儿,值。
现在,我把它分享给大家。不管你是正在备考业余无线电执照的新人,还是已经持证想提升 CW 能力的老手,又或者只是单纯对这些"嘀嘀嗒嗒"感到好奇——都欢迎来玩。
毕竟当初我做这个,不就是因为找不到一个自己满意的工具吗?
如果它能成为你满意的工具,那就够了。
下一篇,我会带大家从零开始,用这个工具科学地学习摩尔斯码——包括为什么"数点划"是大忌,以及 Koch 法到底有多有效。敬请期待。
如果你有任何问题、建议或者只是想打个招呼,直接在软件的「关于」页找到联系方式。73,下次见!