Was brauche ich für Datenprotokoll aus einer IRDA-Schnittstelle?

Hallo Arduino-Freunde,

es macht ein riesigen Spass mit dem kleinen Uno zu experimentieren. Leider klappt es nicht immer so wie gewünscht!
Aktuelles Thema ist das auslesen des Datenprotokoll eines Hager Smartmeter Stromzähler. Die Variante mit der blinkenden LED
habe ich ja schon umgesetzt. Nun wollte ich mich steigern und das Protokoll auslesen.... leider bisher ohne Erfolg.

Mit einem TSOP 4838 erhalte ich Daten mit folgenden Script:

#include <IRremote.h>
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Die Daten sehen aber nicht nach dem gewünschten Klartext aus:

Auszug aus HTerm 9600 7,1,E
FFFFFFFF1B1560C957E3398E323EEC9A61BD325D8DDE337FFFFFFFFF9ACB037AA3DF0CE18752250F17CE29D7FFFFFFFF70DFAAF1E37C596124AE7D4FFFFFFFFFC256117183A699CC24AE7D4CF09EEED02A816B34FFFFFFFF736A5DCA9F3B702DFFFFFFFF1FE57991DAE329E6FFFFFFFFED968DE64AB0F7B7AF946A41FFFFFFFFD33934D5A9EE71398EC9F26597FFA98ED9FF9F77FFFFFFFFEA7243D18B9BF72A3AD001CE78FD6AEFFFFFFFF24AE7D4CB86D3EF62669CC8C3644AAA7BC86B00212E9E89676F16004FFFFFFFF37F16344BB0EE39AFFFFFFFF4AB0F7B6FFFFFFFF32157BA0D52A1FEA2FF45DC8EE2E39D0FFFFFFFFAE908DF1ACBFA06F64807DCDFFFFFFFF78F93742F2EAE9C5FFFFFFFF8B817ECF30D19B7C4CB0FADC45BC975FFFFFFFFFEF5498B237E4BED2FFFFFFFFFFFFFFFFC6618A7EBDDD17769A2CAD31DBFFA29DFFFFFFFFFFFF

So sollte es aussehn:

/HAG5eHZxxxx_yyyyyyy
»/« Start des Datentelegramms
»HAG« Herstellerkennung
»5« Baudrate 9600 Baud
»eHZ« Zähler nach VDN Lastenheft eHZ
»xxxx« Firmware-Version
»yyyyyyy« Ausführungsvariante
1-0:0.0.0255(<max.16 Zeichen>) Eigentumsnr.
1-0:1.8.x
255(123456.7890) Zählerstand Bezug
1-0:2.8.x255(123456.7890) Zählerstand Lieferg.
1-0:96.5.5
255(80) Status, hexadezimal
1-0:96.1.255*255(1234567890) Fabriknummer
usw.

Beschrieben ist das Protokoll und die Einstellungen unter: http://download.hager.com/Hager.de/files_download/aktuelles/ehz/ehz_betriebsanleitung_mid.pdf

Kann mir jemand helfen... wir ich den Klartext aus dem Zähler bekomme... liegt es vielleicht auch am Sensor, mit Fernbedienung funktioniert der Empfang.

Vielen Dank für Eure Unterstützung!

Tom

Als erstes würde ich mal die gelesenen Daten als Zeichen und nicht als HEX-Wert ausgeben, daraus sollte sich schon das eine oder andere Muster erkennen lassen

Hallo Tom,
der von dir benutzte IR-Empfänger ist für den Empfang von 38kHz Signalen einer Fernbedienung ausgelegt, genauso die Library, die du hier nutzt.
Der Stromzähler ist aber nunmal keine Fernbedienung, und deshalb kommt nur Müll raus.
Laut Datenblatt des Zählers werden die Daten mit einem Protokoll nach DIN EN 62056-21 gesendet. Redirect Notice.
Vielleicht reicht es das Signal mit einem Fototransistor aufzunehmen, evtl Schmitt-Trigger dahinter und direkt auf einen SoftSerial-Eingang vom Arduino.
Gruß
Reinhard

Hallo Reinhard,

das wird wohl das Problem sein.... hätte man auch selbst drauf kommen können. Hättest Du vielleicht noch eine Idee welcher Fototransistor das machen könnte? Ich hab noch einen BPW82.... nur ob da ein Signal ankommt?

Viele Grüße

Tom

Der BPW82 sieht schon mal ganz gut aus, das sollte mit dem funktionieren.

Hallo Tom,
die BPW82 ist eine Fotodiode, da musst du das Signal noch verstärken. Stichwort hier ist Transimpedanzverstärker. Ist nicht ganz einfach mit Opamps und Single Supply. Ich würde dir einen Fototransistor empfehlen mit nachgeschaltetem Schmitt-Trigger, eventuell noch eine Verstärkerstufe davor. Wenn du einen TS912 nimmst, kommst du mit einem IC aus.
Gruß
Reinhard