EMR7370

Aus Hobbyelektronik.org
Empfänger

Vor einer Weile bin ich durch Kundenwerbung beim "Ramschmax" an einen Funk-Energiekosten-Messgerät EMR7370 gekommen. Da das Teil nicht unbedingt durch Qualität überzeugte, lag es eine gute Weile in der Schublade.

Nachdem ich nach den Klausuren wieder etwas Zeit hatte und die Neugier doch siegte, landete es doch wieder auf dem Tisch.

Schaltungsanalyse

Der erste Schritt zur Analyse des Ganzen führt natürlich über den Schraubendreher.

Im Inneren befindet sich eine große Leiterplatte, auf der eine kleinere Huckepack sitzt. Da an dieser eine Antenne angelötet ist, ist der Funkempfänger schnell gefunden. Der Silkscreen verrät sogar die Anschlussbelegung desselben. Nachdem bei der ersten Untersuchung die Hälfte der Beschriftung durch das Modul verdeckt war, habe ich diese nochmal weiter oben angebracht, deswegen bitte nicht wundern. Auch die Buchsen- & Stiftleiste sind nicht original, sondern von mir hinzugefügt.

Da die andere Seite der Leiterplatte nicht spektakulärer ist, habe ich auf ein Foto verzichtet. Das einzig halbwegs interessante ist ein I²C-EEPROM, dessen Takt- und Datenleitung an der Stiftleiste liegt.

Zu dem Funkmodul konnte ich im Internet nur die Bestätigung über die Existenz finden, wobei dort selbst die Angabe der Betriebsspannung unterschiedlich war.

Protokollanalyse

Da die Leiterplatte mit den Bezeichnungen SCK/SDI/SDO/NSEL schon auf SPI hindeutet wusste ich ungefähr, worauf ich mich einlasse. Mit der Stift- und Buchsenleiste zwischen Funkmodul und Hauptplatine sollte es relativ einfach sein, auf dem untersten Layer (Bitübertragungsschicht, wenn man es an dieser Stelle so nennen will) zu analysieren.

Also Probes angeschlossen und gleich mal den neuen Logic Analyzer getestet.

Die erste Messung zeigt die übertragenen Daten vom Einschalten des Empfängers bis zur ersten Anzeige der Messwerte. Genauer betrachtet und mit aktiviertem SPI-Analyzer sieht man auch, was übertragen wird:

Zur mutmaßlichen Initialisierung werden folgende Daten übertragen:

0x90D9
0xA67C
0xC080
0xC081
(500ms Pause)
0xCE85
0xCE87
0xC4AB
0xC823
0xC6C7
0xB014
0xC205
0xC080
(188ms Pause)
0xC081
(4ms Pause)
0x94D9
0xC209
(5ms Pause)
0x00
0x90D9
0xC080
(52ms Pause)
0xC081

Auch nach dem Empfang eines Datenpaketes sendet die Elektronik noch ein paar Päckchen an den Empfänger:

0xCE85 0xC080 (längere Pause) 0xC081 (3ms Pause) 0xCE85 0xCE87


Hier fällt auf, dass 0xC080 und 0xC081 oft in Kombination (siehe auch oben) und vor allem in der Nähe eines Datenempfangs auftreten. Ob dahinter eine Kausalität steckt?!?

Da ich mich schon einmal kurzzeitig mit Funkmodule aus dem Hause HopeRF auseinandergesetzt habe und deren Produkte eine ähnliche Bezeichnung haben (z. B. RFM01), habe ich auf gut Glück auf deren Homepage nochmal vorbei geschaut. Wie durch meine vorherige Recherche erwartet, fand ich nichts, was genauso hieß oder aussah wie mein Funkmodul, allerdings blieb ich kurz am Datenblatt des RFM01 hängen.

Nachdem ich ein paar der Befehle in Hex umrechnete, stellte sich ein deutlicher Wiedererkennungswert heraus!

Alle (bis auf einen) der gesendeten Datensätze ließ sich sinnvoll durch die Inhalte des Datenblatts rekonstruieren - also ein voller Erfolg.

Im Endeffekt ändert es nichts daran, dass die Portierung auf den AVR auch so funktionierte, allerdings hilft die Bedeutung der gesendeten Befehle deutlich, das zu verstehen, was man macht.

Datenanalyse

Für die Datenanalyse erzeugte ich mir durch eine definierte Last (vulgo: Glühlampe) Werte, die ich in Excel zwischen den gesendeten und auf dem EMR angezeigten Werten abglich. Dabei stellte sich sehr schnell heraus, dass die Daten mehr oder weniger im Klartext gesendet werden. Hier eine kleine Tabelle einiger Werte:

U I P 0 1 2 3 4 5 6 7 8 9 10 11
221,5 0,26 58,5 25 6A 54 72 40 75 01 06 BB 40 00 F4
221,5 0,17 39 25 6A 54 72 40 4E 00 B1 BB 40 00 71
222,5 0,17 39,5 25 6A 54 72 40 4F 00 B2 BD 40 01 6C
222,5 0,06 2,5 25 6A 54 72 40 05 00 43 BD 40 01 25
223 0,03 2,5 25 6A 54 72 40 05 00 25 BE 40 01 42
222 0,03 2 25 6a 54 72 40 04 00 20 BC 40 01 4A
222,5 0,06 1 25 6A 54 72 40 02 00 3E BD 40 01 2D
223,5 0,06 1 25 6A 54 72 40 02 00 3C BF 40 01 2D
222,5 0,31 29 25 6A 54 72 40 3A 01 3E BD 40 01 F4
222 0,37 42 25 6A 54 72 40 54 01 74 BC 40 01 A5
223 0,35 42,5 25 6A 54 72 40 55 01 66 BE 40 02 AF
221,5 0,19 38 25 6A 54 72 40 4C 00 BF BB 40 02 63
224 0,13 12,5 25 6A 54 72 40 19 00 8B C0 40 03 C4
220,5 0,02 1 25 6A 54 72 40 02 00 1A B9 40 04 52

Die ersten drei Spalten geben die Spannung in Volt, den Strom in Ampere sowie die Leistung in Watt an, alle weiteren die empfangenen Bytes im Hex-Format.

(to be continued...)