Автоматический ключ для радиолокации — точность, простота и надежность
Компоненты и материалы
| Arduino UNO | ×1 |
| Конденсатор 100 нФ | ×5 |
| Реле (любое) | ×1 |
| Светодиод (любой) | ×1 |
| Конденсатор 100 мкФ | ×1 |
| Провода-перемычки | ×1 |
| Внешний разъем гарнитуры/микрофона для вашей радиостанции | ×1 |
| Переключатель тумблер | ×1 |
Необходимые инструменты
- Паяльник
- Посуд для пайки, без свинца
- Радиосвязь (любительская радиостанция)
О проекте
Радиолюбители часто тренируют навыки радиолокации, пытаясь найти скрытую радиостанцию («лису») на некотором расстоянии. Эти навыки полезны для поиска оборудования и людей с радиопередатчиками.
В этом проекте Arduino используется для управления радиопередачей: он активирует передатчик и передает идентификатор станции (вызовной знак радиолюбителя) в азбуке Морзе, а затем излучает длинный тон. Пока идет передача, можно определить местоположение сигнала.
Мой первый «охота на лису» состоялся в 2011 году на Институте учителей ARRL — мне это очень понравилось (даже несмотря на то, что наша команда случайно нашла не ту «лису»). Казалось, это отличное занятие для моих учеников средней школы. К сожалению, самостоятельная постройка показалась либо слишком сложной, либо слишком дорогой.
Недавно я понял, что с недорогой 2-метровой радиостанцией и программируемым микроконтроллером (например, Arduino) можно сделать свою «лису» за небольшие деньги и получить увлекательное летнее обучающее проект.
Для проекта я использовал радиостанцию Baofeng UV-3R (она недорогая и мне больше не нужна) и Arduino Uno. Если использовать другую радиостанцию с другим разъемом, проверка разъема и микрофона потребует аналогичных шагов, но схема и скетч Arduino останутся теми же, за исключением вызовного знака оператора.
Примечание: Схема проще, чем кажется. Конденсаторы 0.01 мкФ добавлены для предотвращения наводок РЧ-помех (RFI) при передаче. Без них Arduino вел себя странно и нестабильно (часто перезагружался), когда радиостанция передавала в непосредственной близости от схемы. Другой конденсатор сглаживает прямоугольный сигнал Arduino, делая его более синусоидальным для лучшего звука.
Код
Ключ для радиолокации «Лиса»
Arduino включает радиостанцию на передачу и отправляет азбуку Морзе для идентификации.
/* Автор: Nelson Farrier
Включение радио и передача тона
Включает Baofeng UV-3R через реле, затем передает ID и 5-секундный тон.
*/
// Пин 12 подключен к реле
// Пин 13 подключен к тональному контуру
// Основано на: Mike Myers (https://mikemyers.me) @netnutmike
// Let's Make It Episode 6
// Определение азбуки Морзе для букв и цифр
char* letters[] = {
".-", // A "-...", // B "-.-.", // C "-..", // D ".", // E
"..-.", // F "--.", // G "....", // H "..", // I ".---", // J
"-.-", // K ".-..", // L "--", // M "-.", // N "---", // O
".--.", // P "--.-", // Q ".-.", // R "...", // S "-", // T
"..-", // U "...-", // V ".--", // W "-..-", // X "-.--", // Y
"--.." // Z
};
char* numbers[] = {
"-----", // 0 ".----", // 1 "..---", // 2 "...--", // 3 "....-", // 4
".....", // 5 "-....", // 6 "--...", // 7 "---..", // 8 "----." // 9
};
int relay = 12;
int TonePin = 13;
int frequency = 1000; // частота тона
int dotDelay = 70; // длительность точки
int charDelay = 500; // пауза между буквами (метод Фарнсворта)
int wordDelay = 1100; // пауза между словами
int cycleDelay = 15000; // половина цикла (макс. значение delay = 16383)
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); // 7-секундный тон
delay(7000);
noTone(TonePin);
delay(10000); // 10 секунд передачи без тона
digitalWrite(relay, LOW); // выключить реле
delay(cycleDelay);
delay(cycleDelay);
}
// Функция передачи последовательности точек и тире
void morseCodeSequence(char* sequence) {
int i = 0;
while (sequence[i] != NULL) {
dotOrDash(sequence[i]);
i++;
}
delay(charDelay); // пауза между буквами
}
// Функция передачи текста в азбуке Морзе
void SendText(char* MorseCodeLetters) {
int i = 0;
char ch;
while (MorseCodeLetters[i] != NULL) {
ch = MorseCodeLetters[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 dotOrDash) {
tone(TonePin, frequency);
if (dotOrDash == '.') {
delay(dotDelay);
} else { // тире
delay(dotDelay * 3);
}
noTone(TonePin);
delay(dotDelay); // пауза между элементами
}
Схемы

Производственный процесс
- Эволюция и инженерия радиотехнологии: от Маркони до наших дней
- Охотничий нож: от бронзового века до современного полевого снаряжения
- Игра «UFO Attack» на Arduino UNO и матрице MAX7219 — Собираем аркаду с джойстиком Atari
- 3D RGB Arduclock — Bluetooth-часы на адресных LED с RTC
- Мониторинг состояния реки: Arduino-система контроля качества воды
- Интерактивная игра с джойстиком и LED-обратной связью на Arduino
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Портативный пульсоксиметр для экстренного использования в условиях COVID-19
- Health Band: умный браслет для мониторинга пожилых людей на Arduino Nano и DPS310
- Точный расчет конденсаторной батареи: калькулятор kVAR и мкФ для коррекции коэффициента мощности