14.9.2020 V sobotu během horkého letního odpoledne, když končila radioburza ve Svitavách, kecali jsme ještě s kámošem na parkovišti před areálem a po očku sledovali, jak někteří odjíždějící prodejci zoufale zastavují u popelnic a vrší na hromadu svůj neprodejný šrot. Tak jsme se tam pak zašli podívat a mimo jiné tam leželo několik různých polámaných meteostanic. Hodil jsem je do auta k pozdějšímu prozkoumání, primárně by se mi z nich mohly hodit solární panýlky. Byly tam 3 různé typy, nějaké shitovější noname a také kvalitněji zpracované meteostanice GARNI 2INT (integrované bezdrátové čidlo), které je součástí bezdrátového systému připojitelného k PC GARNI 935PC. Na tyto stanice se dokonce dají koupit různé náhradní díly. Jednu GARNI 2INT, která byla v nejhorším stavu s nálepkou "DEAD", jsem rozebral a nyní se můžeme podívat, co se uvnitř nachází zajímavého.
Jednotka je napájená ze 3 baterií AA 1,5 V a za světla také ze solárního panýlku velikosti 78 x 48 mm. Při osvícení jasným sluncem jsem u něj naměřil napětí na prázdno 7,1 V a proud na krátko 75 mA. Uvnitř je několik menších destiček s různými senzory a jedna větší základní deska. Na destičce u držáku baterií je velký elyt 10 mF / 10 V pro solární panýlek a patrně lineární regulátor 3,3 V pro napájení většiny obvodů. Otáčky anemometru jsou snímané pomocí rotujícího magnetu a jazýčkového relé. Směr větru z korouhvičky je snímán opět magneticky pomocí 2 analogových Hallových senzorů natočených proti sobě o 90°. Vydatnost srážek se měří tak, že se déšť sbírá do trychtýřku pod nímž se plní malá plastová lžíce a když je v ní dost vody, tak se převáží a obsah se vyleje ze spodku stanice ven. Druhá strana lžíce s magnetem se zvedne nahoru a přiblíží se k jazýčkovému relé, které započítá impuls. Pak se lžíce vrátí do klidové polohy a znovu se plní. Na další malé destičce najdeme digitální kombinovaný senzor teploty a relativní vlhkosti Sensirion SHT31. připojený přes sériovou sběrnici I2C. Pokud by někdo sháněl náhradu, dá se levně koupit na AliExpressu. Na další malé destičce je mrňavý optický senzor pro měření UV indexu, též připojený přes I2C (avšak jinou sběrnici než teploměr), navíc ještě s výstupem INT.
Na základní desce najdeme nějaký MCU s vybroušeným značením, pravděpodobně PIC od Microchipu. K němu je připojená I2C EEPROM Atmel AT24C04C. Pak je tu záhadný černý plivanec, který komunikuje po SPI s vysílacím čipem Hope RF67. Jedná se o vysílač pro pásma 315, 434, 868 a 915 MHz, podporuje modulace FSK, GFSK, MSK, GMSK a OOK rychlostí až 600 kb/s s programovatelným výkonem -18 až +17 dBm (50 mW). S těmito čipy se dají koupit i hotové moduly např. v TME stojí 75 Kč. Po připojení napájecího napětí 4,5 V jsem naměřil odběr asi 3 mA. Zkontroloval jsem činnost všech krystalových oscilátorů: 32 kHz u MCU - běží stále, 32 kHz u plivance - běží stále, 3,6 MHz u plivance - zapíná se na krátkou dobu v intervalech 12 s, 32 MHz u RF67 - běží stále.
vnitřnosti MB-top MB-bottom optický senzor solární panýlek
Dále jsem se zaměřil na I2C komunikaci mezi MCU a jednotlivými senzory. Teploměr/vlhkoměr se podařilo identifikovat jako SHT31, avšak na optickém senzoru ani na jeho destičce není žádné značení. Podle tipu kamaráda Zakyho by to mohl být Silicon Labs Si1133 Trochu to vypadá, jak nějaké čínské modulky pro Arduino. Zde je dump komunikace s digitálním teploměrem/vlhkoměr, frekvence I2C hodin je asi 36 kHz. Poslední měření je po dýchnutí na senzor. První čtený Word je teplota, která se počítá podle vztahu: T[°C] = -45 + 175*(Traw/65535), následuje její 1-bytový CRC-8 dle polynomu x^8 + x^5 + x^4 + 1, další Word je relativní vlhkost, která se počítá podle vztahu: RH[%] = 100*(Hraw/65535) opět následovaná CRC-8.
periodic measure fetch data
I2C data z teploměru/vlhkoměru:
meas. address dir. raw data command/data 1 44 W 21 30 periodic measure, 1 MPS 1 44 W E0 00 fetch data 1 44 R 6A 20 BC 74 F2 D9 27,547°C, CRC, 45,68%, CRC 1 44 W 30 93 break (stop measurement) 2 44 W 21 30 periodic measure, 1 MPS 2 44 W E0 00 fetch data 2 44 R 69 72 8D 77 DB FA 27,083°C, CRC, 46,82%, CRC 2 44 W 30 93 break (stop measurement) 3 44 W 21 30 periodic measure, 1 MPS 3 44 W E0 00 fetch data 3 44 R 6A 11 48 78 D9 01 27,507°C, CRC, 47,21%, CRC 3 44 W 30 93 break (stop measurement) 4 44 W 21 30 periodic measure, 1 MPS 4 44 W E0 00 fetch data 4 44 R 6A 8F 6E 75 5F 9D 27,844°C, CRC, 45,85%, CRC 4 44 W 30 93 break (stop measurement) 5 44 W 21 30 periodic measure, 1 MPS 5 44 W E0 00 fetch data 5 44 R 6E 65 F7 A3 C3 47 30,466°C, CRC, 63,97%, CRC 5 44 W 30 93 break (stop measurement)
Data z optického senzoru:
power on sequence:
address dir. raw data command/data 55 W 00 55 R 33 55 W 0B 01 55 W 11 55 R 2F 55 W 11 55 R 2F 55 W 0A C8 A6 55 W 11 55 R 20 55 W 11 55 R 20 55 W 11 55 R 20 55 W 0A 01 81 55 W 11 55 R 21 55 W 11 55 R 21 55 W 11 55 R 21 55 W 0A 78 82 55 W 11 55 R 22 55 W 11 55 R 22 55 W 11 55 R 22 55 W 0A 71 83 55 W 11 55 R 23 55 W 11 55 R 23 55 W 11 55 R 23 55 W 0A 40 84 55 W 11 55 R 24 55 W 0F 01
TBC...
18.9.2020 V jednom vláknu o meteostanicích na bastlírně jsem narazil na zajímavý prográmek rtl_433, který pomocí známého USB DVB-T tuneru s čipem Realtek umožňuje přijímat a dekódovat digitální signál různých meteostanic a dálkových ovladačů vysílajících převážně v pásmu 433 a 868 MHz s modulací FSK/ASK/OOK. Program je k dispozici pro Linux i Windows. Pomocí programu HDSDR jsem se nejprve podíval, kde moje meteostanice vlastně vysílá. Ve vodopádovém grafu spektra jsem jasně uviděl krátké, pravidelně se opakující FSK bursty na střední frekvenci 868,289 MHz se zdvihem ±60 kHz.
Program rtl_433 bohužel nezná modulaci/protokol mojí meteostanice, zachytí vysílání jen jako neznámý signál. Ani druhý typ noname stanice, který vysílá ASK/OOK modulací na 868,025 MHz nebyl detekován.
rtl_433.exe -f868000000 -s 1024k -G -D Found 1 device(s) trying device 0: Realtek, RTL2838UHIDIR, SN: 00000001 Found Elonics E4000 tuner Using device 0: Terratec T Stick PLUS Sample rate set to 1024000. Bit detection level set to 0 (Auto). Tuner gain set to Auto. Reading samples in async mode... Tuned to 868000000 Hz. Unknown modulation 11 in protocol! !stopbit preamble 1 413 10241 RH ASK preamble not found bitbuffer:: Number of rows: 1 [00] {1} 00 : 0 2020-09-20 03:10:43 philips_callback: wrong number of bits (1) Preamble not found, exiting! bit_offset: 0 rtl_433.exe -f868000000 -s 1024k -G -a -D ... pulse_distance 14587668 pulse_start distance 14587668 pulse_start[1] found at sample 14587668, value = 8280 pulse_end [1] found at sample 14613455, pulse length = 25787, pulse avg length = 25787 *** signal_start = 14577668, signal_end = 14623456 signal_len = 45788, pulses = 1 Distance coding: Pulse length 25787 Short distance: 1000000, long distance: 0, packet distance: 0 p_limit: 25787 bitbuffer:: Number of rows: 0
Jinou meteostanici, kterou jsem daroval kolegovi v práci, se podařilo programem detekovat a zdekódovat:
rtl_433.exe -v -f868000000 -s 1024k Found 1 device(s) trying device 0: Realtek, RTL2838UHIDIR, SN: 00000001 Found Elonics E4000 tuner Using device 0: Terratec T Stick PLUS Sample rate set to 1024000 S/s. Bit detection level set to 0.0 (Auto). Tuner gain set to Auto. Reading samples in async mode... Tuned to 868.000MHz. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ time : 2020-09-17 15:22:57 model : Fineoffset-WH65B ID : 0 Battery : 1 Wind direction: 45 Wind speed: 0.0 m/s Gust speed: 0.0 m/s Rainfall : 0.0 mm UV : 0 UVI : 0 Light : 155.0 lux Integrity : CRC _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ time : 2020-09-17 15:23:13 model : Fineoffset-WH65B ID : 0 Battery : 1 Wind direction: 45 Wind speed: 0.0 m/s Gust speed: 0.0 m/s Rainfall : 0.0 mm UV : 0 UVI : 0 Light : 46.0 lux Integrity : CRC