Jeder ist gut in der Wetterstation Buro H146G mit einem externen drahtlosen Thermometer H999. Aber nur um die Messwerte auf ihrem verblassten LCD zu sehen, ist eine gute Beleuchtung erforderlich. Und es wäre besser für mich, wenn die Temperatur- und Feuchtigkeitsausgabe außerhalb des Fensters auf ausreichend hellen Anzeigen angezeigt würde (z. B. Kombination der Temperatur- und Feuchtigkeitsanzeige mit der Uhr auf den IN-12-Gasentladungsanzeigen). Es ist nicht schwierig, ein solches Fahrzeug herzustellen, aber Sie müssen das Protokoll des Austauschs mit einem drahtlosen Thermometer kennen. Es gibt bereits
Artikel über die Verwendung eines drahtlosen Wetterstationsthermometers, um Temperatur und Luftfeuchtigkeit über Luft zu erhalten. Für Buro-Stationen wurde das Austauschprotokoll jedoch noch nicht beschrieben. Also müssen wir es beheben: Vielleicht kann sich jemand als nützlich erweisen.
Im Internet habe ich keine Beschreibung des Protokolls für den Austausch von BURO-Stationen gefunden. Und das bedeutet, dass Sie das Protokoll für den Austausch dieses drahtlosen Sensors öffnen müssen.
Mein externes Thermometer sieht folgendermaßen aus:

Durch Anschließen eines chinesischen superregenerativen 433,92-MHz-Empfängers an das Oszilloskop und Drücken der TEST-Taste am Thermometer wurde deutlich, wie die Übertragungsimpulse liefen. Nun, da die Frequenz dort klein ist, wurde der Ausgang des Empfängers über einen Widerstandsteiler mit dem Eingang der Soundkarte verbunden. Nach der Verarbeitung der aufgenommenen Audiodatei ergab der Komparator das folgende Bild:

Wie bei anderen Wetterstationen erfolgt die Modulation durch Ändern des Arbeitszyklus. Die Übertragung beginnt vom Taktblock, dann gibt es ein weiteres Taktsignal und dann Daten, nach denen das endgültige Taktsignal abläuft. Zwei Nullen nach dem Taktsignal sind anscheinend die Kennung für den Beginn der Daten - auf jeden Fall habe ich ihre Änderung nie bemerkt. Daten mit einer Start- und Enduhr werden sechsmal dupliziert. Der Datenaustausch erfolgt durch Knabbereien.
Zum Dekodieren habe ich beschlossen, mit dem Empfang bei der ersten Uhr und zwei Nullen zu beginnen und bei der letzten Uhr zu beenden.
Um ein solches Signal zu decodieren, reicht es aus, die Dauer zwischen den Signalabfällen zu berechnen.
Dazu habe ich ein einfaches Testprogramm für den Atmega8-Controller geschrieben:
Der Empfängerausgang ist mit Pin 13 (AIN1) verbunden. Atmega stellt über max232 eine Verbindung zum COM-Anschluss des Computers (oder zum USB-COM-Adapter) her. Portgeschwindigkeit 9600 Baud.
Nach dem Dekodieren erhalten wir den folgenden Datenstrom (ich werfe die beiden führenden Nullen weg):
// ohne Taste, Kanal 1
1100 1100 0000 1110 1000 0110 1100 0001 0000 1001 Luftfeuchtigkeit: 28% Temperatur: 25,4
// keine Taste, Kanal 2
1100 1100 0001 1110 1000 0110 1101 0001 0000 0110 Luftfeuchtigkeit: 29% Temperatur: 25,4
Das Gesamtpaket sieht folgendermaßen aus:

I0-I7 - Kennung des Thermometers. Bei jedem Einschalten des Thermometers ändert sich die Kennung.
C0-C1 - Kanal (es gibt insgesamt 3 mögliche). Die Kanäle sind von Grund auf neu nummeriert.
H0-H7 - Luftfeuchtigkeit. Die Luftfeuchtigkeit in Prozent wird unverändert abgelesen, aber die Temperatur (T0-T11) wird aus irgendeinem Grund in einem für Wetterstationen ungewöhnlichen Format eingestellt. Nach den Beschreibungen der Austauschprotokolle verschiedener Wetterstationen zu urteilen, die ich gefunden habe, würde man eine Temperatur in Zehntelgrad und mit einer Verschiebung der unteren Grenze des Thermometers erwarten. Also nein. Die Experimente zeigten, dass der Temperaturcode dieser Wetterstation in Grad Celsius als (T-1220) / 18 übersetzt wird. Woher kennen diese magischen Zahlen nur die Chinesen, die sich dieses Austauschprotokoll ausgedacht haben?
Wie der Wolowizard in den Kommentaren vorgeschlagen hat, überträgt die Station die Temperatur in Zehntel Grad Fahrenheit, sodass eine aussagekräftige Übersetzung in Grad Celsius 0,1 * (T-320) * 5 / 9-500 = 0,1 * (T-1220) / 1,8 beträgt.
Bit K entspricht dem Drücken der TEST-Taste.
Die Zuordnung der verbleibenden Felder konnte nicht festgelegt werden, es stellte sich jedoch heraus, dass der Wert des Schalters Fahrenheit / Celsius am Thermometer nicht in das Austauschprotokoll eingeht. Vermutlich ist das letzte Halbbyte (oder vielleicht ein Teil des vorletzten) auch CRC, aber ich konnte den Algorithmus noch nicht berechnen (es besteht der Verdacht, dass die Halbbyte-Zeilen und -Spalten an der Berechnung beteiligt sind). Wenn jemand dieses Rätsel lösen kann, teilen Sie uns bitte den Berechnungsalgorithmus mit.
Für diejenigen, die sich den Kopf zerbrechen wollen, aber kein solches Thermometer haben, gebe ich eine Tabelle mit akzeptierten Daten.
Tabelle 1001 0110 0101 1011 1000 0110 1000 0010 0001 1111 Key:0 Ch:2 H:40%, T:25.2 C 1001 1001 0000 1101 1010 0100 0101 0101 0000 0110 Key:0 Ch:1 H:85%, T:-1.2 C 1001 0110 0101 1100 1000 0110 1010 0010 0001 0100 Key:0 Ch:2 H:42%, T:25.3 C 1001 0110 1001 0110 0111 0110 1101 0001 0010 1111 Key:0 Ch:2 H:29%, T:24.1 C 1001 0110 1001 0000 0111 0110 1101 0001 0010 1000 Key:0 Ch:2 H:29%, T:23.7 C 1001 0110 1001 0010 0101 0110 1110 0001 0010 1111 Key:0 Ch:2 H:30%, T:22.1 C 1001 0110 1001 1001 0011 0110 1110 0001 0010 1100 Key:0 Ch:2 H:30%, T:20.7 C 1001 0110 1001 1111 0001 0110 1111 0001 0010 1010 Key:0 Ch:2 H:31%, T:19.2 C 1001 0110 0101 1001 0000 0110 0001 0010 0010 1000 Key:0 Ch:2 H:33%, T:18.0 C 1001 0110 0101 0010 1111 0101 0010 0010 0010 0111 Key:0 Ch:2 H:34%, T:16.7 C 1001 0110 0101 0100 1110 0101 0010 0010 0010 0010 Key:0 Ch:2 H:34%, T:16.0 C 1001 0110 0101 0100 1101 0101 0011 0010 0010 0001 Key:0 Ch:2 H:35%, T:15.1 C 1001 0110 0101 1100 1100 0101 0100 0010 0010 1110 Key:0 Ch:2 H:36%, T:14.6 C 1001 0110 0101 1111 1011 0101 0101 0010 0010 1111 Key:0 Ch:2 H:37%, T:13.9 C 1001 0110 0101 0011 1011 0101 0101 0010 0010 0001 Key:0 Ch:2 H:37%, T:13.2 C 1001 0110 0101 1001 1010 0101 0110 0010 0010 0101 Key:0 Ch:2 H:38%, T:12.7 C 1001 0110 0101 0100 1010 0101 0111 0010 0010 1000 Key:0 Ch:2 H:39%, T:12.4 C 1001 0110 0101 1011 1001 0101 0111 0010 0010 1010 Key:0 Ch:2 H:39%, T:11.9 C 1001 0110 0101 0011 1001 0101 1000 0010 0010 1001 Key:0 Ch:2 H:40%, T:11.5 C 1001 0110 0101 1011 1000 0101 1000 0010 0010 1110 Key:0 Ch:2 H:40%, T:11.0 C 1001 0110 0101 0111 1000 0101 1001 0010 0010 0101 Key:0 Ch:2 H:41%, T:10.8 C 1001 0110 0101 1111 0111 0101 1001 0010 0010 1101 Key:0 Ch:2 H:41%, T:10.3 C 1001 0110 0101 0111 0111 0101 1010 0010 0010 0111 Key:0 Ch:2 H:42%, T:9.9 C 1001 0110 0101 0001 0111 0101 1011 0010 0010 0101 Key:0 Ch:2 H:43%, T:9.6 C 1001 0110 0101 1011 0110 0101 1100 0010 0010 0110 Key:0 Ch:2 H:44%, T:9.2 C 1001 0110 0101 1000 0110 0101 1100 0010 0010 1100 Key:0 Ch:2 H:44%, T:9.1 C 1001 0110 0101 0011 0110 0101 1101 0010 0010 0110 Key:0 Ch:2 H:45%, T:8.8 C 1001 0110 0101 1001 0101 0101 1110 0010 0010 0110 Key:0 Ch:2 H:46%, T:8.2 C 1001 0110 0101 0101 0101 0101 1111 0010 0010 1101 Key:0 Ch:2 H:47%, T:8.0 C 1001 0110 0101 0010 0101 0101 1111 0010 0010 1100 Key:0 Ch:2 H:47%, T:7.8 C 1001 0110 0101 1110 0100 0101 1111 0010 0010 0000 Key:0 Ch:2 H:47%, T:7.6 C 1001 0110 0101 1100 0100 0101 1111 0010 0010 1100 Key:0 Ch:2 H:47%, T:7.5 C