В линейке погодных станций Buro (H209G, H127G и др.) используется внешний датчик температуры и влажности H999. На «хабре» есть исследование протокола передачи данных. Ниже — пересказ статьи.
Автор использовал осциллограф для исследования сигнала с выхода сверхрегенеративного приёмника на 433,92 МГц. Нажав кнопку TEST на термометре, было отчётливо видно, как бегут импульсы передачи. Ну а так как частота там небольшая, выход приёмника был подключён к входу звуковой карты через резистивный делитель. После обработки записанного звукового файла компаратором получилась следующая картинка:Как и у других погодных станций модуляция осуществляется изменением скважности. Начинается передача с блока синхросигналов, потом идёт ещё один синхросигнал, а потом идут данные, после которых идёт завершающий синхросигнал. Два ноля после синхросигнала, по-видимому, являются идентификатором начала данных – во всяком случае, я ни разу не заметил их изменения. Данные с начальным и конечным синхросигналом дублируются шесть раз. Обмен данными ведётся нибблами.
Декодировать сигнал автор стал следующим образом: начинать приём по первому синхросигналу и двум нулям, а завершать по последнему синхросигналу. Чтобы такой сигнал декодировать, достаточно посчитать длительности между перепадами сигнала.
После декодирования получился следующий поток данных (два начальных ноля отброшены):
//без кнопки, канал 1
1100 1100 0000 1110 1000 0110 1100 0001 0000 1001 Влажность:28% Температура:25.4
//без кнопки, канал 2
1100 1100 0001 1110 1000 0110 1101 0001 0000 0110 Влажность:29% Температура:25.4
Итого, пакет выглядит так:I0-I7 – идентификатор термометра. При каждом новом включении термометра идентификатор меняется.
C0-C1 — канал (всего их возможно 3). Каналы нумеруются с нуля.
H0-H7 — влажность. Влажность в процентах считывается как есть, а вот температура (T0-T11) почему-то задана в необычном для метеостанций формате. Cтанция передаёт температуру в десятых долях градусов Фаренгейта, поэтому осмысленный перевод в градусы Цельсия будет 0.1*(T-320)*5/9-500=0.1*(T-1220)/1.8.
Бит K соответствует нажатию на кнопку TEST.
Последним нибблом является CRC. Скорей всего CRC — просто арифметическая сумма всех байтов в посылке.
PS. По статье была довольно оживленная дискуссия, в ходе которой было много умных и полезных высказываний — рекомендую обратиться к первоисточнику…
+ за пост