Andrey Esin
-
Сегодня день Радио, поздравляю всех причастных 😀
Жутко хочу освободить время и вкатиться в эту тему, это интереснейшее занятие (как мне видится со стороны)
Недавно решил поковырять RDS
Немного справки (для тех кто знает - пропускайте)
Если вы когда-нибудь видели на автомагнитоле название станции вродеROCK FM, бегущую строку с текстом песни или автоматическую установку времени, значит вы уже пользовались RDS, просто не задумывались об этомЧерез RDS станция может передавать:
PS- короткое имя станцииRT- радиотекстPI- код станцииCT- время станции
Для исследовательского или радиолюбительского проекта это уже набор наблюдаемых цифровых признаков:
- на какой частоте что реально вещает
- как называется станция
- какой у неё PI-код
- передаёт ли она радиотекст
- насколько корректно у неё выставлено RDS-время
- как это всё меняется в разных местах
Что значит я сделал
- rds.2big.cc - это веб-приложение для отображения таких наблюдений
Идея простая:
- Устройство сканирует FM-диапазон
- Ловит станции и читает RDS
- Прикладывает к observation своё местоположение в виде
QTH/Maidenhead - Отправляет observation в backend
- Backend складывает всё в
PostgreSQL - Frontend показывает локаторы на карте и даёт посмотреть последние приёмы и историю
Итог - получается живая карта наблюдений по локаторам, а не просто поток сырых логов
Почему здесь именно QTH/Maidenhead
Проект не использует точечные координаты как основной индекс отображения. Вместо этого observations группируются по Maidenhead-локаторамЭто даёт несколько практических преимуществ:
- визуализация на карте остаётся простой
- можно легко сравнивать районы, а не отдельные GPS-точки
- locator хорошо знаком радиолюбителям
- анонимность++
Как устроен сканер
Железная часть проекта - это устройство наESP8266 + SI4703, которое последовательно сканирует FM-частоты и читаетRDSЧто делает устройство:
- проходит по диапазону FM
- измеряет
RSSI - ждёт стабилизации RDS-данных
- собирает лучшие кандидаты для
PI,PS,RT,CT - формирует observation
- отправляет его в backend (mqtt/rest)
Вообще изначально была идея увидеть какие станции передают время и насколько оно точно отдаётся
Так же, была попытка запуститься на
ESP32 + RDA5807M, но нет - похоже библиотека, которая работает с радио не очень хорошо обрабатывает RDS и часто получал пургуПочему ESP8266 не использует отдельный GPS-модуль
Можно было бы поставить на сканер внешний GPS-модуль, но для такой задачи это часто избыточно:- лишняя плата
- лишнее питание
- лишняя антенна
- лишняя сложность
Вместо этого проект использует компаньон на Android
Android-компаньон GPSCaster
ndroid-приложение на Kotlin. Оно работает как локальный GPS-ретранслятор для устройств в той же Wi-Fi сетиЧто делает
GPSCaster:- получает положение телефона через
FusedLocationProviderClient - запускает foreground service
- держит в памяти последний валидный fix
- шлёт UDP broadcast в LAN
- слушает UDP-запросы
GET_GPS - шлёт GPS в BLE (тут кстати, отдельная идея - в принципе рассылать GPS через BLE advertisement)
- отвечает пакетом:
GPS,<unix_timestamp_seconds>,<lat>,<lon>,<accuracy_meters>
Порт протокола:45454То есть телефон фактически выступает как "сетевой GPS и источник времени" для ESP8266
Это удобная идея:
- телефон и так уже знает точные координаты
- не нужно ставить отдельный GNSS-модуль на каждое устройство
- можно быстро развернуть систему в машине или в полевых условиях
Как связаны ESP8266 и GPSCaster
Связка работает так:GPSCasterпериодически рассылает в локальную сеть UDP-пакеты с координатами и временем- ESP8266 слушает порт
45454 - Если свежих GPS-данных нет, ESP8266 может сам отправить
GET_GPS,<device_id> GPSCasterотвечает текущим fix- ESP8266 получает:
- время
- latitude
- longitude
- accuracy
- По координатам прошивка вычисляет
qth - По времени ставит
ts
Если GPS-время не удалось получить:
- прошивка пробует
NTP - если
NTPтоже не дал времени, идёт локальный счётчик от последней успешной синхронизации
Это не полноценный GPS-ресивер, но для задачи сбора подобной информации, более чем подходит
Будет желание - заходите
Если будет интересно - заходите, будем вместе собирать данные - выложу исходники прошивки и протокол передачи данных -
Сижу в сервис StarLine, жду когда подключат брелок, для удалённого запуска (сейчас есть только запуск с телефона, но ввиду того, теперь ни везде работает интернет, решил перестраховаться)
У меня установлен StarLine S96, в котором есть bluetooth, а следующая версия S97, уже с LoRa, это же получается, на той же частоте, что и Meshtastic работает -
Если вы не знали, как выглядит вход в ЦОД Бункер в г. Королёве, то он выглядит так:
Чтобы отвезти сервер пришлось проехать 3 кордона охраны, на которых проверяли машину на био-, радиозаражение, наличие взрывчатых веществ и зеркалом смотрели днище (не согласились показать, я хотел увидеть много ли там ржавчины)
На одном кордоне, никого не оказалось, поэтому я пошёл гулять с пропуском внутрь здания, где выбежал охранник и планировал положить харей в пол со словами - ТЫ КАК СЮДА ПРОШЁЛ
Притом, обратный путь был такой же - разве, что не проверяли на заражение (проверили багажник, а не увожу ли цистерну гептила)
Немного истории
В конце 90ых, когда в стране можно было купить, что угодно, ребята из mtw.ru подсуетились и смогли купить/арендовать бункер, в котором и создали ЦОД. Электричества завались - рядом стоят такие предприятия как ЦНИИМаш, РКК Энергия и т.д., а так же проходит ЛЭП и своя электростанция. Есть ощущение, что невысокий ценник у провайдера обусловлен тем, что предприятия стали потреблять намного меньше электричества, но его надо куда-то девать, поэтому по дешёвке продают компаниямНа Яндекс.Картах, это место заблюрено - yandex.ru/maps/-/CLaJ6Dyn
Но в целом, это территория предприятия АО Композит, где в лучшие годы производители материалы для космической промышленности
А как уроженец Королёва, могу сказать, что очень обидно за всю космическую промышленность, вернее за её последние вздохи
По поводу провайдера - mtw.ru красавчики, всего за 5к в месяц размещают 1U сервер, дают постоянный KVM, 1 Gbit/s и не требуют рельсы для сервера
-
Впервые вижу, чтобы на коне нельзя было в тренажерный зал
-
Немного аэропортного
Порадовала Testland
Не порадовала задержка почти на 12 часов (не у меня)
Но порадовала лапшичная
-
Давно не ездил на каршеринге
Сегодня взял в аренду Exeed LX - премиальный кроссовер
По ощущениям, это Audi Q7, которую заказали на АлиЭкспресс
Она большая, ощущаются прям габариты
Но! Пробег 54к, это в принципе не очень много, но досталось ему знатно в каршеринге - двигатель вибрирует сильно, коробка дёргает, при перестроении машину начинает вилять, подушки безопасности не работают, маленькие зеркала
Очень порадовал компухтер в машине, её размеры
Если решу покупать китайца в ближайшие пару лет - дайте мне леща
Я канеш не авто эксперт и моя работа не связана никаким образом с ааааавтомобилями, но не выразить свои ощущения, я не мог 😁
-
У меня через пару дней после установки Mi Fitness он внезапно начал импортировать
-
Ну всё, наконец-то решили как будет выглядеть МЦД-5
Придется рыть тоннель в 20км под Москвой
Недавно читал, что щита для прохода такого тоннеля нет, поэтому будут либо новый делать, либо закупать в другой стране
Ощущаю вливания таких размеров, что страшно представить