Как стать автором
Обновить

Радиоканал 433МГц и синхронизация времени от GPS

Время на прочтение 3 мин
Количество просмотров 48K
image Доброго времени суток!
Хочу поделиться опытом создания системы единой синхронизации времени в пределах квартиры/офиса c элементами олдскул и постапокалипсиса.

Всегда хотел сделать часы, не нуждающиеся в коррекции времени. В студенчестве пытался собрать приёмник сигналов синхронизации времени на ДВ (DCF77), даже кварц нужный выпилил. Но сигнал из Германии доходил слабый, да и антенна нешуточная получалась.

Потом появилась возможность синхронизации от GPS. В своё время приобрел RS232 GPS модуль, выдающий информацию о координатах в NMEA, который подключал к чёрно-белому PALM m105 и радовался программе PathAway. Но прогресс на месте не стоял, появились другие задачи и GPS модуль провалялся на полке до текущего момента.

Недостаток синхронизации времени от GPS — необходимость располагать приемник в прямой видимости хотя бы одного спутника, что в разрезе часов не всегда приемлемо. В связи с этим появилась появилась идея беспроводной синхронизации, т.е. приёмник располагается на подоконнике и по радиоканалу раздаёт близлежащим желающим точное время. Городить дуплексный канал, чтобы время синхронизировалось по запросу, счёл излишним. GPS приёмник сам передаёт синхронизацию с заданным периодом.

В качестве радиоканала применил лежащие без дела узлы дохлой автосигнализации (рабочая частота 433мГц). После обновления сетевого оборудования в родной конторе (провайдерской) освободились свитчи отечественного производства LightCOM S100, управление которого строилось на процессоре PIC18F452, так что дополнительных финансовых расходов не предвиделось.

Для избежания дальнейших вопросов ниже по тексту, устройство с GPS-приёмником и передатчиком синхронизации буду называть передатчиком, а часы с приёмником синхронизации — приёмником.
Исторически привык собирать схемы на монтажных платах при помощи МГТФ.
image
Так что сторонников ЛУТа прошу не пинать. Выпилив процессор приклеил его к монтажке. Схемы передатчика и 2-х часов не привожу, в коде есть пинауты.
Итак начну с передатчика:
image
Система функционирования передатчика проста. Принимаем USART портом PICa NMEA предложения и достаем оттуда данные о текущем времени, дате и актуальности этих данных. Как только подходит период синхронизации (у меня 4 минуты) — передаём всё это в эфир. Из особенностей схемы передатчика замечу следущее:

— схема питается от 5 вольт, в то время как брелок хочет 12 Вольт. Пришлось городить диодно-конденсаторный удвоитель напряжения.
— чтобы не делать преобразователь уровней из RS232 в TTL вскрыл GPS модуль и вывел TTL сигнал до выходного RS232 преобразователя.

Вот обратная сторона передатчика:

image

Особенность радиообмена автосигнализации — необходимость в передаче т.н. преамбуле — меандра определенной длительности для выхода приемных цепей и АРУ в стабильный режим (можно почитать спецификацию на keeloq в интернетах). Итак, передав преамбулу, передаём нужные байты и в конце — байт контрольной суммы для уменьшения вероятности ошибок на приёмной стороне.

Первый приемник синхронизации (часы) сделал на основе индикатора от списанного кассового терминала:

image

Особенность этих часов, да и любых, использующих внешнюю синхронизацию — отсутствие необходимости в собственных точных часах (RTC), обычно реализуемых на микросхемах с кварцами 32768 или имеющихся на борту большинства современных микроконтроллеров. В принципе таки часы можно делать и на RC-генераторе. Главное чтобы точность не значительно плыла за время периода синхронизации.

image

Схема часов тривиальна. Индикатор подключен в режиме 4-битной шины данных. На вход int0 PICa приходит выход от приёмника автосигнализации. Для реализации отображения больших цифр на 2-х строчном текстовом индикаторе пришлось использовать клиенто-изменяемые символы в cgram. Дизайн символов честно спер.
Найдя в загашнике лампы ИН-14, которые чуть младше меня, не смог удержаться от создания вторых часов:

image

Схемотехнически, тут также нет особых изысков, но все же:
— индикация стстическая (благо есть много свободных выводов у PICa да и 155ИД1 хватает).

image

— пришлось вешать на радиатор греющиеся элементы

image
умножителя напряжения (180Вольт по спецификации на лампы ИН14)

image

Еще пару дизайнерских ходов для подчёркивания постапокалиптического сюжета:

— решил упаковать часы в противогаз, для чего пришлось сделать манекен головы из монтажной пены и кусков пенопласта:

image

— в индикацию добавил глюков (покажу на видео)
— добавил зуммер для создания звуков работающего дозиметра
— глюки и сигнал дозиметра формируются с помощью функции rand() в c18, seed которой формируется с участием атмосферных шумов, берущихся в с выхода приёмника.
— переключение минут сопровождается выключением умножителя и красивом потуханием индикации

Готовые часы номер 2:

image

Видео работы:



Еще видео:



Писал первый раз на c18. Раньше под PIC писал на ассемблере.

Исходники.
Теги:
Хабы:
+123
Комментарии 61
Комментарии Комментарии 61

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн