Пользователь
0,0
рейтинг
10 мая 2012 в 14:12

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

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 писал на ассемблере.

Исходники.
Владимир @shtirlitsus
карма
88,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (61)

  • +4
    потрясающе
  • +4
    Ух ты. А я сначала посмотрел видео и подумал, что глючат, ан нет так надо. Крутой дизайн.
  • +1
    Для синхронизации времени в Москве можно использовать RWM ru.wikipedia.org/wiki/RWM

    А если нужно, чтоб устройства были покомпактнее, можно воспользоваться готовой ардуино-совместимой платкой jt5.ru/arduino/colibri/ Там микроконтроллер и RF трансивер на 868MHz.

    • +2
      я не в Москве.
      Есть и более дешёвые трансиверы. Например, на основе NRF24L01 (2.4ГГц).
      • 0
        трансивер, трансиверу рознь :)

        ваш пример — неплохо подойдет для синхронизации внутри помещения.
        а решение, что на EZRadioPRO с 13dBm мощности — для синхронизации хоть между зданиями :)))
        • +1
          он и задумывался для работы внутри помещения и именно маломощный передатчик, чтоб помех лишних не создавать
          • +1
            У «правильных» трансиверов выходная мощность задается программно, можно повышать/понижать.
        • 0
          китайцы продают nRF24L01 на платах с усилителями. на открытом воздухе у меня удавалось до 1200 метров без ошибок.
          • 0
            да, без усилителя nRF24L01 мало где пригодны, мощность излучения всего 0dBm.

            такие, без усилителя на www.sparkfun.com/products/691 стоят 20$ за штучку.
            • 0
              на e-bay 20$ за пучок
            • 0
              а я по 9 с усилителем брал
          • 0
            А на какой частоте у вас 1200м получилось? ;-)

            Что-то мне подсказывает, что вы вылезли за диапазон 2400-2483,5Мгц, и естественно вам никто не мешал :-)
    • 0
      Кхм, согласно разделу «Часовая программа работы радиостанции», информация о времени приходит всего по 20 минут в час? Если да, то это однозначно вершина советского юзабилити, особенно по сравнению с GPS.
      • 0
        С относительно стабильным генератором секунд в устройстве, которое использовало бы RWM, этого вполне достаточно. Радует наличие информации о астрономическом времени.
        • 0
          В принципе, да, но, думаю, гораздо удобнее, если устройство, будучи включенным в любой момент времени (или после неожиданной потери питания), получало бы сигналы точного времени сразу после включения.
          • 0
            согласен, но так либо эфир забивать ежесекундными посылками, либо делать двунаправленный обмен
  • 0
    Плин, сурово! Ночью, наверное, вообще здорово выглядит!
  • +1
    Классно. Надо другу радиолюбителю посоветовать.
  • 0
    Суровые часы получились! Такими только минуты до начала ядерной войны отсчитывать. А как покажут 00:01 — хватать противогаз и укрываться в складках местности. Кстати, его еще можно использовать по назначению?
    • 0
      можно. только от окуляров подтягивающую проволоку отцепить.
  • +2
    Вообще класс)
    Только предупреждайте нервных друзей если они не знают о противогазе, а то может конфуз приключиться)
  • –6
    Оффиса.
    • 0
      пардон, исправил
  • +4
    охренеть. просто охренеть.
  • +3
    А ну как если ебанёт газовая атака, надо срочно экипироваться, а у вас противогаз на часы натянут.
    • +2
      противогаз сохранил фунциональность
      • 0
        Ну это хорошо, но времени будет мало, а из него ещё пенопласт выковыривать…
  • НЛО прилетело и опубликовало эту надпись здесь
  • +33
    Позволю себе немного madskillz'а:
  • 0
    А как глюки в отображении делали?
    • 0
      оу, сорри — не заметил. уже нашел. Но все-равно, интересно узнать подробнее
      • 0
        в принципе в исходниках попытался максимально комментов написать.
  • +2
    Можно добавить в схему акселерометр и внести зависимость глюков от его показаний: например, чтобы после хорошего стука глюки на некоторое время исчезали вообще.
    • +2
      вариант. но художественный замысел в том, что глюки вызваны какбэ повышенным радиационным фоном
    • –1
      И микрофон, что бы возгласу «Работай, сука!» они синхронизировались.
  • +5
    Отличная штука получилась! И ИН-14 невероятно круты. Где ж их найти…
    • 0
      В Митино видел.
  • +2
    В окуляры противогаза было бы неплохо вставить затемняющий фильтр, чтобы не было видно цоколей ламп и прочего содержимого.
  • +2
    Единственный минус конструкции — после БП девайс будет бесполезен, так как в случае серьезной заварухи спутники посбивают первыми:)
    • +2
      согласен. источник точного времени можно сделать например из песочных часов web-камеры и чего-то с OpenCV :) Главное формировать пакет синхронизации и послать его в эфир.
  • 0
    А сзади противогаза специально красным замазали с имитацией под отрубленную голову? :)
    Или у меня фантазия бурная? :)
    • +1
      просто из аэрозольных красок под рукой оказалась автомобильная грунтовка :)
      • 0
        Спасибо за ответ, значит таки второе :)
  • +1
    Вы — герой комиксов, сумасшедший ученый! Браво!
  • 0
    Теплые ламповые цифры…
    Клевые округлые такие =)
  • +2
    У меня, кстати, весьма неплохо ловится ДВ-сигнал из Германии в Москве на обычную погодную станцию Oregon (которая с беспроводными датчиками). При этом станция стоит не на окне, а в глубине квартиры. Более того, на индикаторе сигнала точного времени две полосочки из двух. Единственное неудобство, что у центрально-европейского времени есть летнее время, а у нас уже нет: приходится пояс часовой два раза в год менять, спасибо Медведу.
    • +2
      а по-подробней? какая модель?
      • 0
        Oregon Scientific RMR500. Обычная бытовая погодная станция. Она уже слегка устарела, есть более современные аналоги.
        На погодной станции есть переключатель источника сигнала точного времени: Гринвич, UK и Франкфурт на Майне, EU. Я принимаю сигнал из Германии.
        Место действия: окраина Москвы, плотная 14 — 17-этажная застройка, 7 этаж, в коридоре.
  • 0
    Обратный отсчет с издаванием звуков смотрелся бы просто завораживающе-жутковато.
    • 0
      гы-гы до конца смены или до конца смены пятницы ;)
  • 0
    Отличные часы получились! Лампы впечатляют. Можно вас попросить принципиальную схему выложить?
    • +1
      я её отдельно не рисовал. могу описать:
      — индикация статическая (4 дешифратора 155ИД1)
      — умножитель для ламп — на 34063 с MOSFETом (масса схем в гугле)
      — PIC 18F452 с кварцем 10МГц (см даташит на него + распиновка в исходниках)
      — питание умножителя коммутируется p-канальным mosfetом (имя не скажу — из тушки ноутбука вынул)
      в принципе всё.
  • +1
    Постапокалиптическая схема!

    Ламповые индикаторы 25-летней выдержки, smd компоненты, микроконтроллеры, выпиленные из плат найденных на свалке… и ИД1 на панельке :)
    Все это говорит, что нам никакие катастрофы не страшны.
    • 0
      про МГТФ забыл :)
      лампы 35-летние
      • 0
        Старею :( В уме 4-х значные цифры уже плохо считаю… :(
  • +1
    На одной из фотографий заметил надпись, «WiFi bot». Описание как делали и чего добились не напишете?
    • 0
      тест на внимательность пройден! :)
      вкратце:
      2-х моторная платформа
      мозг: D-Link DIR-320 с прошивкой от Олега, usb-хабом и флешкой.
      в нём на perl-е написан демон, принимающий команды по WiFi, также видеостриммер usb web-камерой.
      демон передаёт команды через usb-com преобразователь, грешен, ардуиноподобной железке, которая через ШИМ управляет платформой и приводом web-камеры.
      Управление и наблюдение за пейзажами с web-камеры осуществляется с компа под виндой, для чего написан на C# клиент.
      • 0
        Просим статью на Хабр!
        • 0
          надо с мыслями собраться… хотя подобные штуки уже были:
          вот,
          вот
          и вот
        • 0
          вот видео. сегодня поездил маленько.
  • +1
    Кстати можно было бы на самом деле привязать глюки к радиационному фону.
    Поставить туда, например схемку со счетчиком СБМ-20 и вызывать глюк каждый раз при регистрации импульса.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.