自动电键助力无线电测向 —— 精准、易用、可靠
元器件与物料
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控板 |
| 电容 100 nF | 5 | 防射频干扰 |
| 继电器 (通用) | 1 | 控制电台发射 |
| LED (通用) | 1 | 状态指示 |
| 电容 100 µF | 1 | 滤波平滑 |
| 杜邦线 (通用) | 1套 | 连接电路 |
| 业余电台外置手咪/耳机插头 | 1 | 适配你的电台 |
| 拨动开关 | 1 | 电源控制 |
所需工具
- 电烙铁
- 无铅焊锡丝
- 业余电台 (用于测试)
项目背景
业余无线电爱好者常通过“狐狸猎寻”练习无线电测向技术:寻找隐藏在远处的发射台(称为“狐狸”)。这项技能在寻找发射设备或人员时极具实用价值。
本项目利用 Arduino 控制电台发射,并以莫尔斯电码发送台站呼号,随后发射长音,便于测向定位。
作者首次体验狐狸猎寻是在 2011 年 ARRL 教师研讨会,虽误寻他台却乐在其中。后因成本与复杂度未付诸实践。直到发现廉价 2 米波段电台配合 Arduino 即可低成本自制“狐狸”,遂成行。
项目采用百锋 UV-3R 对讲机(低价闲置)与 Arduino Uno。不同电台仅需测试麦克风插脚定义,电路与代码核心不变,仅需修改呼号。
注意: 原理图看似复杂实则简单。0.01 µF 电容用于抑制发射时的射频干扰 (RFI),否则 Arduino 会因临近发射而复位或异常;另一电容则将方波滤波为正弦波,改善音质。
核心代码
/* By Nelson Farrier
控制电台发射并发送莫尔斯电码标识
通过继电控制 Baofeng UV-3R 发射,发送呼号后输出 7 秒长音
*/
// 莫尔斯电码表
char* letters[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
"-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-",
"..-", "...-", ".--", "-..-", "-.--", "--.."
};
char* numbers[] = {
"-----", ".----", "..---", "...--", "....-",
".....", "-....", "--...", "---..", "----."
};
int relay = 12;
int tonePin = 13;
int frequency = 1000;
int dotDelay = 70;
int charDelay = 500;
int wordDelay = 1100;
int cycleDelay = 15000;
void setup() {
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
delay(2000);
}
void loop() {
digitalWrite(relay, HIGH); // 继电器吸合,电台发射
delay(1000);
sendText("NF7Z FOX"); // 发送呼号
delay(1000);
tone(tonePin, frequency); // 发射长音
delay(7000);
noTone(tonePin);
delay(10000); // 无音发射 10 秒
digitalWrite(relay, LOW); // 继电器释放
delay(cycleDelay);
delay(cycleDelay);
}
// 莫尔斯序列发送
void morseCodeSequence(char* seq) {
int i = 0;
while (seq[i] != '\0') {
dotOrDash(seq[i]);
i++;
}
delay(charDelay);
}
// 文本转莫尔斯
void sendText(char* text) {
int i = 0;
char ch;
while (text[i] != '\0') {
ch = text[i];
if (ch >= 'a' && ch <= 'z') morseCodeSequence(letters[ch - 'a']);
else if (ch >= 'A' && ch <= 'Z') morseCodeSequence(letters[ch - 'A']);
else if (ch >= '0' && ch <= '9') morseCodeSequence(numbers[ch - '0']);
else if (ch == ' ') delay(wordDelay);
i++;
}
delay(charDelay);
}
// 点划发送
void dotOrDash(char symbol) {
tone(tonePin, frequency);
if (symbol == '.') delay(dotDelay);
else delay(dotDelay * 3);
noTone(tonePin);
delay(dotDelay);
}
原理图

制作要点
- 继电器隔离电台 RF 与 Arduino 电源,防止干扰复位
- 所有去耦电容贴近芯片引脚焊接
- 天线远离控制电路布线
- 呼号需替换为你的合法业余无线电呼号
- 发射周期约 30 秒,符合多数国家业余无线电规则
制造工艺
- 无线电技术演进与工程:从马可尼到数字广播
- 猎刀:从青铜时代到现代战术装备的钢铁传奇
- Arduino UNO + MAX7219 自制《UFO攻击》复古射击游戏机
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
- Arduino + 模拟摇杆互动游戏:五向 LED 反馈
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- 便携式血氧仪(脉搏血氧监测):Arduino Nano + MAX30100 + OLED,COVID-19 应急开源方案
- Arduino 驱动的迷你漫游车:自制避障机器人
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- Health Band 智能健康手环:基于 Infineon DPS310 的老人跌倒/步数/体温监护系统
- 精准功率因数校正:电容器组计算器 (kVAR & µF)