P
P
PavelTM2015-09-11 20:21:20
Microcontrollers
PavelTM, 2015-09-11 20:21:20

How to decipher the signal from the wireless temperature and humidity sensor of the Vitek VT-6404 weather station?

There was a weather station. After a while, the base unit failed, and the wireless sensor continues to work, showing temperature and humidity on its small display. The base unit has a small board (receiver) with an antenna, it has three VCC GND DATA pins. That is, power + and - and the data that comes from the sensor. By applying power to the receiver and connecting DATA to the input of the PC sound card, we managed to record the sound that comes from the sensor. In the audio editing program, I managed to see the signal diagram. Photo 1.
9cc84d4e552041bab29432c49d93bfcb.png
In less than 1 second, 3 almost identical signals arrive, with a slight difference at the end. One of the signals is enlarged in Photo 2.
6c6265befd9d4a919f93ec6e60c6f523.png
Nothing more than a set of 0 and 1. If you imagine when the line is at the top it is an impulse, and when it is below - there is no impulse. There are only 4 types of impulse:
1. There is a short impulse.
2. There is a long impulse.
3. No pulse is short.
4. No pulse is long.
There are no more options. I assumed that: There is a short pulse = 1. There is a long pulse = 11 No short pulse = 0 No long pulse = 00. As a result, a signal was sent to the LPT port, I wrote a program that reads this signal and turns it into a set of 0 and 1. it turned out here is a line 1010110011001101001101010011010101010011001011001010110100101100110101001 This is just an example, there is a line for each temperature and humidity. A small part of the line changes, a few characters approximately on the right side. The left side does not change. There is a suspicion that the number of the sensor and the number of the house to which the sensor belongs are transmitted there, all this is set in the sensor itself.
Task: to receive a signal from a sensor on a PC, process it programmatically and display the temperature and humidity that it shows on the screen.
In order to display the temperature and humidity on the screen, each signal needs to register the temperature and humidity that is on the sensor at the time the signal is sent. The signal is not divided into temperature and humidity separately, there is no such thing that when the temperature changes, one value changes, and when the humidity changes, others change. The entire right side changes, even if only the temperature or only the humidity changes. Since the sensor operates in the range of approximately -30 +50 in increments of 0.1 and the humidity varies from 0 to 100, there are several hundred thousand options. I am not able to collect the entire base with crayfish. Collected only a part. There is a set of signals with a humidity of 60% and a temperature from 25.7 to 28.8 with almost no gaps. Almost, because some values ​​​​just do not appear, for example, there is no value of 28.3 C 60% There is 28.2 C 60% and immediately 28,
Any ideas how to create most of the missing data from a piece of data?
Now you need to get a base of
27.0 C 60%
1010110011001101001101010011010101010011001011001010110100110011001101001
27.1 C 60%
1010110011001101001101010011010101010011001011001010110100110100110011001
27.2 C 60%
1010110011001101001101010011010101010011001011001010110100101100110010101
And so on. And not from 27 C but from -30 and not only for 60% but for all possible percentages. Get the base based on some part of the known data.
The base and the sensor use open-frame MS, so there is no way to find out their names.
Here is a photo of the sensor. General view, Themselves thermo and humidity elements. And pay.
bb26e465a6054e5bb85068ee66a64ec0.jpg
There are 2 boards in the sensor, one above the other and they are soldered with 3 legs. As I understand it, the transmitter is on the top, and on the bottom there is a display on the reverse side and under it a frameless MS. The boards are soldered together, so you can’t fit between them and see what else is there, if you just unsolder it, but I don’t want to solder it yet.
-------------------------------------------------- --------
Solution. Perhaps someone will come in handy.
I went to deal with the Manchester coding and apply it to the signal, the usual coding did not pass, I used the Differential Manchester coding and this is just what you need.
Previously, the program scanned the signal and output the following line
:
Above, I described how it turns out. Further from this line I receive the binary code as follows. We take the first 2 values, if they are different, then there is a change in the signal - this is "1", it does not matter 01 or 10, the main thing is that there would be a change. If the values ​​are the same - it's "0", it also doesn't matter 00 or 11. As a result, the following line is obtained:
110000010011001111000100110100000010
Now it remains only to select where the humidity is and where the temperature is, in the photo below.
00e476d40ff34a3498bc38a3faef18df.pngHumidity - just convert from binary to decimal. 7 bits are allocated, the possible value is from 0 to 127, but the last value is 96, the humidity does not increase further, and HI is displayed on the sensor.
Temperature (integer values)- First, we convert the binary to decimal and get the value of the temperature integers, but this value is more than 50 degrees from the real temperature. so subtract 50 - this is the temperature. So 00000000 is a temperature of -50 C (theoretically, I did not check).
Temperature (tenths of a value) - It's not clear here, the step is changing. then 0.05 then 0.1 because with a step of 0.05 you need 20 values, and there are only 0-15 in 4 bits. But since the temperature on the screen displays only tenths, the step 0.05 does not play a special role, the base that I collected, built on its basis, where the step is 0.05 and where 0.1 is enough.
Bits that are not signed do not contain particularly important information. in the beginning, somewhere there are sensor settings, sensor number and house number. And in the end, I don’t know, it’s possible to check the signal for errors, maybe not, but it doesn’t matter anymore, I got what I need.

Answer the question

In order to leave comments, you need to log in

6 answer(s)
A
Armenian Radio, 2015-09-11
@gbg

It must be the Manchester code. Google it.

Владимир Мартьянов, 2015-09-11
@vilgeforce

Не 1-Wire?

D
Dmitriy, 2016-09-20
@myoff

У меня такой же датчик Vitek. Ищу datasheet. Вообще интересно какой именно датчик влажности запаян - сейчас влажность стал показывать неверно, при дожде на улице показывает 15% влажности

Сергей Содин, 2016-11-03
@Syzd

А вы с датчика по 433MHz теперь получаете данные? Если ардуино, то код какой для приемника данных с датчика?

E
Emil12, 2017-10-29
@Emil12

Сломался датчик. Можно ли под него переделать датчик от другой метеостанции ? Очень нужно

S
Shurik82, 2019-02-04
@Shurik82

Здравствуйте Павел. У меня тоже есть метеостанция Vitek 6404.
Оборвался и потерялся проводной выносной датчик к маленькому датчику приёмнику.
Купил типа NTC 10 ком, скрутил, подключил, Но температуру в квартире показывает 65 градусов.
Как его откалибровать? и как вы сделали компьютер для приёма данных?
Если не трудно оставьте координаты для связи.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question