Радиомая́к — передающая радиостанция, излучающая радиосигналы, используемые для определения координат различных объектов (или направления на них), в основном, самолётов и судов либо для определения местонахождения самого радиомаяка. Параметры сигнала радиомаяка зависят от направления излучения: например, его интенсивность (см. Диаграмма направленности) или момент времени пеленгации, в сигналах радиомаяка может содержаться и дополнительная информация.
Радиомаяки бывают угломерные и дальномерные (чаще комбинированные — угломерно-дальномерные). Угломерные (азимутальные) радиомаяки предназначены только для определения направления, а нахождение координат становится возможным после специальных вычислений на основе информации о направлении не менее, чем на два радиомаяка.
[взято из Википедии]
Итак, очередная моя задумка, но не исключено что кто-то где-то подобное уже делал.. Мне пришла в голову мысль сделать некое устройство, которое можно запрограммировать и использовать в качестве источника звукового сигнала, или источника звука для радиомаяка(см.выше).
Имея платформу Arduino это сделать не сложно. Для такой простой функции подойдет любой простой и не дорогой модуль.
Возможно у вас будет один из тех что здесь изображены. Заметное отличие их одного от другого может быть только в выборе типа загрузчика, который нужно указать в настройках перед записью программы.
Я задался тем что модуль должен передавать азбукой морзе фразу
всем привет. это маяк. 73 Но фраза может быть любая, на ваше усмотрение.
А вот собственно и сама программа:
// код для Arduino,
// который будет генерировать звук (800гц)используя команду playTone()
// кодом Морзе (русский), следующую фразу:
// всем привет. это маяк. 73!
const int buzzerPin = 9; // контакт выход звука
const int dotDuration = 30; // Длительность точки в миллисекундах
const int line = 100;
int diod = 13;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(diod, OUTPUT);
}
void loop() {
playDot(); playLine(); playLine(); // В
playDot(); playDot(); playDot(); // С
playDot(); // Е
playLine(); playLine(); // М
delay(line * 3); // Пробел между словами
playDot(); playLine(); playLine(); playDot(); // П
playDot(); playLine(); playDot(); // Р
playDot(); playDot(); // И
playDot(); playLine(); playLine(); // В
playDot(); // Е
playLine(); // Т
playDot(); playDot(); playDot(); playDot(); playDot(); playDot(); // . (ТЧК)
delay(line * 3); // Пробел между словами
playDot(); playDot(); playLine(); playDot(); playDot(); // Э
playLine(); // Т
playLine(); playLine(); playLine(); // О
delay(line * 3); // Пробел между словами
playDot(); // М
playDot(); playLine(); // А
playDot(); playLine(); playDot(); playLine(); // Я
playDot(); // К
playDot(); playDot(); playDot(); playDot(); playDot(); playDot(); // . (ТЧК)
delay(line * 3); // Пробел между словами
playLine(); playLine(); playDot(); playDot(); playDot(); // 7
playDot(); playDot(); playDot(); playLine(); playLine(); // 3
delay(line * 5); // Дополнительный пробел после фразы
}
void playDot() {
tone(buzzerPin, 1200, dotDuration);
digitalWrite(diod, HIGH);
delay(dotDuration * 1.2); // Пауза между точкой и следующим символом
digitalWrite(diod, LOW);
noTone(buzzerPin);
delay(dotDuration * 0.9); // Пауза между символами
}
void playLine() {
tone(buzzerPin, 1200, line);
digitalWrite(diod, HIGH);
delay(line * 1.2); // Пауза между тире и следующим символом
digitalWrite(diod, LOW);
noTone(buzzerPin);
delay(line * 0.9); // Пауза между символами
}
Для создания фразы я использовал вот эту таблицу:
На её основе вы можете написать своё сообщение для своего радиомаяка.
основные настройки находятся в 1-4 строке,
buzzerPin = 9; это тот контакт с которого нужно взять звук.
Следующие две это длительность точки и тире, и [diod = 13] - светодиод установленный на плате Arduino, точнее номер его цифрового выхода, для мигания его в такт с передачей.
Частота задаётся (внизу) в двух строках вида:
tone(buzzerPin, 1200, line); где 1200 - частота в герцах.
Пауза между символами также настраивается в соседней строке(см. комментарии)
Результат, короткое видео, можно посмотреть здесь
Послесловие
Надо понимать что цифровое устройство выдаёт цифровой сигнал состоящий из всего двух уровней, именуется этот сигнал, а точнее его форма - Меандр.
Поэтому для сглаживания углов нужно использовать LC-фильтры звукового диапазона. Могу подсказать ОНЛАЙН РАСЧЁТ LC ФИЛЬТРОВ