Как расшифровать сигнал от беспроводного датчика температуры и влажности метеостанции Vitek VT-6404?

Была метеостанция. Через время базовый блок вышел из строя, а беспроводной датчик продолжает работать, показывая температуру и влажность на своем небольшом дисплее. В базовом блоке имеется небольшая плата (приемник) с антенной, у нее есть три вывода VCC GND DATA. То есть питание + и - и данные которые поступают от датчика. Подав питание на приемник и подключив DATA на вход звуковой платы ПК удалось записать звук, который приходит от датчика. В программе по редактированию аудио удалось увидеть диаграмму сигнала. Фото 1.
9cc84d4e552041bab29432c49d93bfcb.png
Менее чем за 1 сек приходят 3 почти одинаковых сигнала, с небольшой разницей в конце. Один из сигналов увеличен на Фото 2.
6c6265befd9d4a919f93ec6e60c6f523.png
Не что иное как набор 0 и 1 . Если представить когда линия вверху это есть импульс, а когда внизу - нет импульса Имеется всего 4 вида импульса:
1. Есть импульс короткий.
2. Есть импульс длинный.
3. Нет импульса короткий.
4. Нет импульса длинный.
Больше вариантов нет. Я предположил что : Есть импульс короткий = 1. Есть импульс длинный = 11 Нет импульса короткий = 0 Нет импульса длинный = 00. В итоге на LPT порт подал сигнал, написал программу которая считывает этот сигнал и превращает его в набор 0 и 1. получилась вот такая строчка 1010110011001101001101010011010101010011001011001010110100101100110101001 Это просто пример, для каждой температуры и влажности своя строка. В строчке меняется небольшая часть, несколько символов примерно в правой части. Левая же часть не меняется. Есть подозрение что там передается номер датчика и номер дома к которому принадлежит датчик, это все выставляется в самом датчике.

Задача: получать сигнал с датчика на ПК, программно его обрабатывать и выводить на экран температуру и влажность которую он показывает.

Что бы выводить на экран температуру и влажность нужно каждому сигналу прописать температуру и влажность которая на датчике в момент отправления сигнала. Сигнал не разделен на температуру и влажность отдельно, нет такого что бы при изменении температуры менялись одни значения, а при изменении влажности, менялись другие. Меняется вся правая часть, даже если меняется лишь только температура или лишь только влажность. Так как датчик работает в диапазоне примерно -30 +50 с шагом 0,1 и влажность меняется от 0 до 100, то вариантов несколько сотен тысяч. Собрать всю базу раками я не в состоянии. Собрал лишь часть. Имеется набор сигналов с влажностью 60% и температурой от 25,7 до 28,8 почти без пропусков. Почти, потому что некоторые значения просто не появляются, к примеру нет значения 28,3 С 60% Есть 28,2 С 60% и сразу 28,4 С 60% Как я не пытался получить 28,3 С 60% такого не появляется, по моему его вообще не существует, оно пропущено, и таких значений много, например часто пропущено xx,9 C 60% Где xx - любая температура заканчивается на, 9 Иногда есть, 9 но чаще нету.

Есть соображения, как по части данных создать бОльшую часть недостающих данных ?

Нужно получить вот такую базу

27,0 С 60 %
1010110011001101001101010011010101010011001011001010110100110011001101001

27,1 С 60 %
1010110011001101001101010011010101010011001011001010110100110100110011001

27,2 С 60 %
1010110011001101001101010011010101010011001011001010110100101100110010101

И так далее. И не от 27 С а от -30 и не только для 60 % а для всех возможных процентов. Получить базу опираясь на некоторую часть известных данных.

В базе и датчике используются бескорпусные МС, так что узнать их названия нет возможности.

Вот фото датчика. Общий вид, Сами термо и влажности элементы. И плата.
bb26e465a6054e5bb85068ee66a64ec0.jpg

В датчике 2 платы, одна над другой и они спаяны 3мя ножками. Я так понял на верхней передатчик, а на нижней стоит с обратной стороны дисплей а под ним бескорпусная МС. Платы вместе спаяны, так что между ними не влезть и не рассмотреть что там еще есть, если только распаять, но пока не хочу паять его.

----------------------------------------------------------
Решение. Возможно кому то пригодится.
Отправился разбираться с манчестерским кодированием и применять к сигналу, обычное кодирование не прошло, использовал Дифференциальное манчестерское кодирование и это как раз то что нужно.
Ранее программа сканировала сигнал и выводила такую строку:
1010110011001101001101010011010101010011001011001010110100110011001101001
выше я расписывал как она получается. Дальше из этой строки получаю двоичный код следующим образом. Берем первые 2 значения, если они разные, значит есть изменение сигнала - это "1", не важно 01 или 10, главное что бы было изменение. Если же значения одинаковые - это "0", так же не важно 00 или 11. В итоге получается следующая строка:
110000010011001111000100110100000010
Теперь остается лишь только выделить где влажность и где температура, на фото ниже.
00e476d40ff34a3498bc38a3faef18df.pngВлажность - просто из двоичного в десятичное число перевести. Выделено 7 бит, возможное значение от 0 до 127, но последнее значение 96, дальше не растет влажность, а на датчике отображается HI.
Температура (целые значения) - Сначала переводим двоичное в десятичное и получаем значение целых чисел температуры, но это значение больше на 50 градусов от реальное температуры. так что вычитаем 50 - это и есть температура. Так что 00000000 - это температура -50 С (теоретически, не проверял).
Температура (десятые значения) - Тут не понятно, шаг меняется. то 0,05 то 0,1 потому что с шагом 0,05 нужно 20 значений, а есть только 0-15 в 4-х битах. Но так как на экране температура отображает лишь десятые доли, то шаг 0,05 особой роли не играет, та база что собрал, на ее основе построил, где шаг 0,05 а где 0,1 и этого достаточно.
Биты которые не подписал не содержат особо важной информации. вначале где то есть настройки датчика, номер датчика и номер дома. А в конце не знаю, возможно проверка сигнала на ошибки, может и нет, но это уже не важно, то что нужно я получил.
  • Вопрос задан
  • 3519 просмотров
Пригласить эксперта
Ответы на вопрос 6
gbg
@gbg
Любые ответы на любые вопросы
Наверняка там манчестерский код. Погуглите.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
@myoff
У меня такой же датчик Vitek. Ищу datasheet. Вообще интересно какой именно датчик влажности запаян - сейчас влажность стал показывать неверно, при дожде на улице показывает 15% влажности
Ответ написан
Комментировать
@Syzd
Ардуинщик
А вы с датчика по 433MHz теперь получаете данные? Если ардуино, то код какой для приемника данных с датчика?
Ответ написан
@Emil12
Сломался датчик. Можно ли под него переделать датчик от другой метеостанции ? Очень нужно
Ответ написан
@Shurik82
Здравствуйте Павел. У меня тоже есть метеостанция Vitek 6404.
Оборвался и потерялся проводной выносной датчик к маленькому датчику приёмнику.
Купил типа NTC 10 ком, скрутил, подключил, Но температуру в квартире показывает 65 градусов.
Как его откалибровать? и как вы сделали компьютер для приёма данных?
Если не трудно оставьте координаты для связи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы