Vor ungefähr zehn Jahren kaufte ich gelegentlich eine einfache Wetterstation BAR208HG von Oregon Scientific. Sie hat den Haushalt lange begeistert und freut sich bis heute. Mit der Zeit begann ich, seine Funktionalität zu vermissen und wollte meine Fähigkeit zur Überwachung des Wetters erweitern. Und dann wurde eine unangenehme Tatsache klar: Der Kauf einer fortschrittlichen Wetterstation von derselben Oregon Scientific ermöglichte es nicht, die Messwerte von ihren Sensoren an die alte Station zu senden. Die Version des Datenübertragungsprotokolls stimmte nicht überein. Etwa zur gleichen Zeit war ich in ein so aufregendes Abenteuer wie die Übertragung von Wetterdaten in den Dienst der berüchtigten Volksüberwachung verwickelt. Bereits zu diesem Zeitpunkt verfügte das Netzwerk über zahlreiche Informationen zu den Wetterstationen selbst und den Sensoren in Oregon, zum Datenübertragungsprotokoll und zu den Methoden zu deren Dekodierung.Ich fand leicht mehrere vorgefertigte Programme und Arduino-Bibliotheken zum Empfangen und Dekodieren eines Signals. All diese Informationen schienen mir unzureichend systematisiert, an einigen Stellen ungenau, und die Programme lieferten nur auf sehr kurzen Strecken ein zufriedenstellendes Ergebnis. Letztendlich kam ich zu der alten Wahrheit: "Wenn Sie etwas Gutes tun wollen, tun Sie es selbst." Das Ergebnis nachfolgender Recherchen war das Schreiben dieser Notiz, in der ich die erworbenen Kenntnisse und Fähigkeiten teilen möchte.Das Ergebnis nachfolgender Recherchen war das Schreiben dieser Notiz, in der ich die erworbenen Kenntnisse und Fähigkeiten teilen möchte.Das Ergebnis nachfolgender Recherchen war das Schreiben dieser Notiz, in der ich die erworbenen Kenntnisse und Fähigkeiten teilen möchte.
Protokollversionen
Das gesamte Ökosystem von Oregon Scientific arbeitet nach dem allgemeinen Prinzip - Sensoren sind Sender, die in genau definierten Intervallen senden. Um Kollisionen während der Übertragung zu minimieren, sind die Sendeintervalle für alle Sensoren unterschiedlich. Beispielsweise senden die Sensoren für meinen Sender Messwerte mit einem Intervall von 39, 41 und 43 Sekunden auf dem 1., 2. und 3. Kanal. Die Wetterstationen selbst sind wiederum nur Empfänger. Somit ist die Beziehung einseitig. Der Hersteller verwendet mehrere Versionen des Datenübertragungsprotokolls:
- Version 1.0. Ich arbeite an diesem Protokoll, mit Ausnahme der Geräte, die vor zwanzig Jahren von Zeit zu Zeit gelb geworden sind. Ich habe diese Geräte weder live noch in Bildern gesehen. Es gibt absolut nichts zu erzählen,
- 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 . , , wo er versuchte, alle untersuchten Probleme zu berücksichtigen. Es ist zu beachten, dass bei meiner Implementierung dieser Methode zur Verarbeitung von Code eine erhebliche Menge an RAM erforderlich ist. Darüber hinaus reagiert das Programm empfindlich auf die Abweichung der Sendertaktfrequenz, was, wie sich herausstellte, nicht so selten auf die schlechte Qualität der in den Sensoren verwendeten Komponenten, einschließlich Quarzresonatoren, zurückzuführen ist.