Sekitar sepuluh tahun yang lalu, saya pernah membeli stasiun cuaca Oregon Scientific BAR208HG sederhana. Dia menyenangkan rumah tangganya untuk waktu yang lama, dan terus bersenang-senang sampai hari ini. Seiring waktu, saya mulai kehilangan fungsinya dan ingin memperluas kemampuan saya untuk memantau cuaca. Dan kemudian satu fakta yang tidak menyenangkan menjadi jelas - pembelian stasiun cuaca canggih dari Oregon Scientific yang sama tidak memungkinkan untuk menyiarkan bacaan dari sensornya ke stasiun lama. Versi protokol transfer data tidak cocok. Sekitar waktu yang sama, saya terlibat dalam petualangan yang mengasyikkan seperti transfer data cuaca ke layanan Pemantauan Rakyat yang terkenal kejam. Pada saat itu, jaringan memiliki banyak informasi tentang stasiun cuaca itu sendiri dan sensor Oregon, tentang protokol transfer data dan metode penguraiannya.Saya dengan mudah menemukan beberapa program dan pustaka Arduino siap pakai untuk menerima dan mendekode sinyal. Semua informasi ini bagi saya tampaknya tidak tersistematisasi secara memadai, di beberapa tempat tidak akurat, dan program tersebut memberikan hasil yang memuaskan hanya pada jarak yang sangat pendek. Akhirnya saya sampai pada kebenaran lama: "Jika Anda ingin melakukan sesuatu dengan baik, lakukan sendiri." Hasil penelitian selanjutnya adalah penulisan catatan ini, dimana saya ingin berbagi pengetahuan dan keterampilan yang diperoleh.Hasil penelitian selanjutnya adalah penulisan note ini, dimana saya ingin berbagi ilmu dan keterampilan yang didapat.Hasil penelitian selanjutnya adalah penulisan catatan ini, dimana saya ingin berbagi ilmu dan keterampilan yang didapat.
Versi protokol
Seluruh ekosistem Oregon Scientific bekerja sesuai dengan prinsip umum - sensor adalah pemancar yang menyiarkan pada interval yang ditentukan secara ketat. Untuk meminimalkan tabrakan selama transmisi, interval penyiaran untuk semua sensor berbeda, misalnya, untuk stasiun saya, sensor mengirimkan pembacaan dengan interval 39, 41, dan 43 detik pada saluran ke-1, ke-2, dan ke-3. Stasiun cuaca itu sendiri, pada gilirannya, hanyalah penerima. Jadi, hubungannya satu arah. Produsen menggunakan beberapa versi protokol transfer data:
- Versi 1.0. Pada protokol ini, saya hanya bekerja dengan perangkat yang berubah menjadi kuning dari waktu ke dua puluh tahun yang lalu. Saya belum pernah melihat perangkat ini, baik secara langsung atau bahkan dalam gambar. Sama sekali tidak ada yang perlu saya ceritakan tentang mereka,
- 2.1. β . , , , , β 30,
- 3.0 β .. "" , , . "" . , , , 100, , , . . - , . "" . , BAR208HG BAR208HGX, 3- .
433. β (On/Off Key), .. "/", . 2048. 2.1 3.0

, . OOK , , . β . . β . , .
, . .
, . . 2.1 4- Fh, 3.0 β 6- . ? , , () . , , , .

, Ah. . , .
β 4 . , , . :
- ,
- ,
- , ,
- , .
"" . "" . , , . , , . , , , . , , .
"" :
- 3 (& 4h) . THGN132N, , 1.3.
- 4 (& 8h) 30- . , .
- 1 (& 1h) 30- 60- .
"" . :

" " β . , . ,
5D5314D01510950AC13B529
:
5h + Dh + 5h + 3h + 1h + 4h + Dh + 0h + 1h + 5h + 1h + 0h + 9h + 5h + 0h + Ah + Ch + 1h + 3h = 5Bh
, . , .
CRC8 β . CRC8-CCITT 07h. , "" "". 2.1 3.0 , 2.1 "ID" . , THN132N ( 2.1)
EC401B183520D33F
D6h
CRC8-CCITT( D6h < E < C < 4 < 0 < 1 < 8 < 3 < 5 < 2 < 0 ) = F3h
PCR800 ( 3.0),
29140EC00000279410142E
CRC8-CCITT( 00h < 2 < 9 < 1 < 4 < 0 < E < C < 0 < 0 < 0 < 0 < 0 < 2 < 7 < 9 < 4 < 1 < 0) = E2h
.

. Arduino , . , "" . , . THGN132N .

, , , , , . Oregon , Arduino . , , di mana dia mencoba memperhitungkan semua masalah yang dipelajari. Perlu dicatat bahwa dalam penerapan metode pemrosesan kode ini, diperlukan sejumlah besar RAM. Selain itu, program ini sensitif terhadap deviasi frekuensi clock pemancar, yang ternyata tidak jarang terjadi karena kualitas komponen yang buruk yang digunakan dalam sensor, termasuk resonator kuarsa.