Как расшифровать сигнал от беспроводного датчика температуры и влажности метеостанции 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 и этого достаточно.
Биты которые не подписал не содержат особо важной информации. вначале где то есть настройки датчика, номер датчика и номер дома. А в конце не знаю, возможно проверка сигнала на ошибки, может и нет, но это уже не важно, то что нужно я получил.
  • Вопрос задан
  • 3546 просмотров
Пригласить эксперта
Ответы на вопрос 6
gbg
@gbg
Любые ответы на любые вопросы
Наверняка там манчестерский код. Погуглите.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
@myoff
У меня такой же датчик Vitek. Ищу datasheet. Вообще интересно какой именно датчик влажности запаян - сейчас влажность стал показывать неверно, при дожде на улице показывает 15% влажности
Ответ написан
Комментировать
@Syzd
Ардуинщик
А вы с датчика по 433MHz теперь получаете данные? Если ардуино, то код какой для приемника данных с датчика?
Ответ написан
@Emil12
Сломался датчик. Можно ли под него переделать датчик от другой метеостанции ? Очень нужно
Ответ написан
@Shurik82
Здравствуйте Павел. У меня тоже есть метеостанция Vitek 6404.
Оборвался и потерялся проводной выносной датчик к маленькому датчику приёмнику.
Купил типа NTC 10 ком, скрутил, подключил, Но температуру в квартире показывает 65 градусов.
Как его откалибровать? и как вы сделали компьютер для приёма данных?
Если не трудно оставьте координаты для связи.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
UserGate Санкт-Петербург
от 150 000 ₽
Flame Санкт-Петербург
от 100 000 до 200 000 ₽
Сбер Санкт-Петербург
от 80 000 до 150 000 ₽
24 июн. 2024, в 00:32
300 руб./за проект
23 июн. 2024, в 23:51
10000 руб./за проект
23 июн. 2024, в 23:27
5000 руб./за проект