Страница 1 из 5

CW маяк. пейджер

Добавлено: 03 окт 2024, 06:31
ru0aog
Доброго дня всем!
Возникла потребность как-то автоматизировать передачу коротких сообщений через эфир без участия оператора.
Например, раз в день сообщить, какая температура на даче.

Начать решил с самого простого - код Морзе (да, я знаю про RTTY, PSK, FT8 и прочее)
Сформировать передачу маяка довольно просто.

Пиликаем на динамик:
https://dzen.ru/video/watch/66fe0fa8d4064b46fb17eba6

Код для ардуины:
beacon_a02.rar
(1.08 КБ) 118 скачиваний
Второй пин я подключил к нулю, чтобы было удобно напаивать буззер.

CW маяк. пейджер

Добавлено: 03 окт 2024, 06:39
ru0aog
Теперь вопрос - как это всё принять и декодировать?
Начнём с микрофонного усилителя. Ардуиновский микрофонный модуль я где-то потерял, поэтому делаем монтажку:
photo_2024-10-02_23-54-08.jpg
.
Тут всё по-старообрядчески :) электретник с питанием, два каскада с ОЭ (Ку ненормируемый максимальный), выпрямитель и RC-фильтр с частотой среза около 300 Гц.

Усиления всё же маловато, но если буззер (с наклеенной бумажкой - уже ночь, все спят) прижать к микрофону, то что-то получается:
https://dzen.ru/video/watch/66fe119fb022c206296e81c3

Видео на дзене сами не открываются. Надо скопировать и вставить ссылку...

CW маяк. пейджер

Добавлено: 03 окт 2024, 18:59
ru0aog
А вот и приём подоспел

в тракте нет полосового фильтра, поэтому реагирует не только на писк, но и на шум подходящей длительности (на щелчки не реагирует)
Жду LM567 - с ним будет веселее

В конце символа добавил раскодировку букв

https://dzen.ru/video/watch/66febebcb022c206296882ef
.
receiver_01.rar
(1.14 КБ) 100 скачиваний

CW маяк. пейджер

Добавлено: 06 окт 2024, 08:33
ru0aog
Продолжаем.
Как говорит один препод:
- Нуль матана, нуль!

Раз у нас есть вычислительный проц, да ещё с возможностью оцифровки - грех не воспользоваться.
К счастью, у нас не стоит задача выделить неизвестные гармоники с ресурсоёмким быстрым преобразованием Фурье.
Частота известна заранее. Нужно всего-то определить её наличие, либо отсутствие.
Поможет нам в этом всем известный простенький алгоритм Гёрцеля :)

Простой цифровой фильтр на Ардуине Нано (АТмега 328р 16 МГц)
Делаем смещение в полпитания на аналоговый пин и подаём на него аналоговый сигнал:
01.JPG
.
Этот скетч определяет уровень сигнала заданной частоты в спектре.
Результат выдаётся текстом в последовательный порт.
decoder16.rar
(2.41 КБ) 89 скачиваний
.
Частота настройки - 992 Гц,
ширина полосы ~ 100 Гц,
чувствительность (при отсутствии шумов) - 5 мв.
Оптимальная амплитуда входного сигнала - 100...300 мВ.
Максимальная амплитуда входного сигнала - 2,5 В.
Время измерения ~ 16 мс.

CW маяк. пейджер

Добавлено: 06 окт 2024, 09:35
ru0aog
Ладно, на одном тоне всё ясно.
А если модифицировать скетч для обработки трёх тонов?
Делаем.
Для стабильности показаний выбираем частоты тонов, кратные частоте сэмплирования (8928 Гц):
- 1-ый тон 992 Гц,
- 2-ой тон 744 Гц,
- 3-ий тон 288 Гц.
decoder17.rar
(2.79 КБ) 92 скачивания
.
В схему добавляем простейший узел смешения сигналов.
Sch_02.JPG
.
На входы ничего пока не подаём.
Смотрим, что на выходе
Первое число - время преобразования и вычисления,
второе, третье и четвёртое - амплитуды 1, 2 и 3 тонов (чёрточки - не минусы, а разделители) - значения близки к нулю.
00-1.jpg

CW маяк. пейджер

Добавлено: 06 окт 2024, 10:06
ru0aog
Подаём на вход два тона амплитудой 50 мВ:
002.jpg
.
тоны 1 и 3 (992 и 288 Гц):
01.jpg
получаем:
01-1.jpg
.
тоны 1 и 2 (992 и 744 Гц):
02.jpg
получаем:
02-1.jpg
.
тоны 2 и 3 (744 и 288 Гц):
03.jpg
получаем:
03-1.jpg
.
Вывод:
- амплитуда частоты 288 Гц получилась на 30...50 % ниже, чем 992 и 744 Гц.

CW маяк. пейджер

Добавлено: 06 окт 2024, 12:11
ru0aog
Кажется понял, почему 288 Гц слабо определяются.

8928/992 = 9, 108/9 = 12
8928/744 = 12, 108/12 = 9
8928/288 = 31, 108/31 = 3,48387 - нет целого числа

8928 - частота сэмплирования,
992, 744, 288 - частота тонов,
108 - число выборок. Больше 127 выборок почему-то задать не могу, МК виснет.

CW маяк. пейджер

Добавлено: 06 окт 2024, 12:17
ru0aog
Установил жёстко частоту сэмплирования
decoder18.rar
(1.32 КБ) 97 скачиваний
.
Без сигнала:
00.jpg
.
один тон 992 Гц = 50 мВ:
01 992Hz-50mV.jpg
.
один тон 744 Гц = 2,5 В:
02 744Hz-2.5V.jpg
.
два тона 992 Гц = 50 мВ + 744 Гц = 2,5 В:
03 992Hz-50mV 744Hz-2.5V.jpg
.
Вывод:
- Уровни тонов 992 и 744 почти не влияют друг на друга.

CW маяк. пейджер

Добавлено: 06 окт 2024, 12:33
ru0aog
8928/992 = 9, 108/9 = 12
8928/744 = 12, 108/12 = 9
8928/330 = 27,05, 108/27,05 = 3,99 - эта частота ближе к целому числу, с ней замеры получаются много точнее, чем на 288 Гц.

CW маяк. пейджер

Добавлено: 06 окт 2024, 13:38
R9OFG
ru0aog писал(а):
06 окт 2024, 12:11
108 - число выборок. Больше 127 выборок почему-то задать не могу, МК виснет.
Как выборки задаются?

Виснет скорее всего от переполнения чего то, попробуй тип переменной поменять

volatile uint16_t frame[samples]; на volatile uint32_t frame[samples];