Acerca de la decodificación del protocolo del sensor meteorológico de Oregon Scientific

Hace unos diez años, en ocasiones, compré una simple estación meteorológica BAR208HG de Oregon Scientific. Ella deleitó a la familia durante mucho tiempo y continúa deleitándose hasta el día de hoy. Con el tiempo, comencé a perder su funcionalidad y quería expandir mi capacidad para monitorear el clima. Y luego se hizo evidente un hecho desagradable: la compra de una estación meteorológica avanzada del mismo Oregon Scientific no permitió transmitir las lecturas de sus sensores a la estación anterior. La versión del protocolo de transferencia de datos no coincide. Casi al mismo tiempo, me involucré en una aventura tan emocionante como la transferencia de datos meteorológicos al servicio del notorio People's Monitoring. Ya en ese momento, la red tenía mucha información sobre las estaciones meteorológicas y los sensores de Oregon, sobre el protocolo de transferencia de datos y los métodos para decodificarlos.Encontré fácilmente varios programas y bibliotecas Arduino listos para usar para recibir y decodificar una señal. Toda esta información me pareció insuficientemente sistematizada, en algunos lugares inexacta, y los programas dieron un resultado satisfactorio solo a distancias muy cortas. Finalmente llegué a la vieja verdad: "Si quieres hacer algo bien, hazlo tú mismo". El resultado de una investigación posterior fue la redacción de esta nota, en la que me gustaría compartir los conocimientos y habilidades adquiridos.El resultado de una investigación posterior fue la redacción de esta nota, en la que me gustaría compartir los conocimientos y habilidades adquiridos.El resultado de una investigación posterior fue la redacción de esta nota, en la que me gustaría compartir los conocimientos y habilidades adquiridos.



Versiones de protocolo



Todo el ecosistema de Oregon Scientific funciona de acuerdo con el principio general: los sensores son transmisores que emiten a intervalos estrictamente definidos. Para minimizar las colisiones durante la transmisión, los intervalos de transmisión para todos los sensores son diferentes, por ejemplo, para mi estación, los sensores transmiten lecturas con un intervalo de 39, 41 y 43 segundos en los canales 1, 2 y 3, respectivamente. Las propias estaciones meteorológicas son, a su vez, solo receptores. Por tanto, la relación es unidireccional. El fabricante utiliza varias versiones del protocolo de transferencia de datos:



  • Versión 1.0. En este protocolo, trabajo solo con dispositivos que se han vuelto amarillos desde hace veinte años. Nunca he visto estos dispositivos, ni en vivo ni en imágenes. No hay absolutamente nada que contarme sobre ellos,
  • 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 . , , donde trató de tener en cuenta todos los problemas estudiados. Cabe señalar que en mi implementación de este método de procesamiento de código, se requiere una cantidad significativa de RAM. Además, el programa es sensible a la desviación de la frecuencia del reloj del transmisor, lo que ocurre, como resultó, no tan raramente debido a la mala calidad de los componentes utilizados en los sensores, incluidos los resonadores de cuarzo.




All Articles