Hallo allemaal,
Ik probeer de P1 poort uit lezen van mijn energiemeter. Dat gaat prima via mijn PC (USB serial), het is een vrij nieuwe (E350 Landis+Gyr ZCF110CCtFs2) dus was even uit proberen hoe de data binnenkwam. Maar uiteindelijk gevonden:
- Inverted (ik gebruik een 7404IC om het signaal te inverteren)
- 8 bit
- 115200 baud
- Weerstandje (1k ohm) nodig tussen de data en 5v.
Dat werkt dus prima, echter wil ik de data uitlezen met een Arduino Uno (i.v.m. met verdere integratie) en daar gaat het fout. De data komt anders binnen op de Arduino dan wanneer ik hem direct op mijn PC aansluit.
Vanwege de hogere snelheid (115200 baud) heb ik de P1 poort aangesloten op de hardware serial van de Arduino. Het debuggen naar de PC loopt via een software serial.
Ik hoop dat iemand is die kan zien wat er hier fout gaat? Daarom hieronder de exacte code en output die ik krijg.
Alvast dank voor de hulp!
Groet,
Sander
Dit is de test code die ik gebruik:
Serial output P1 rechtstreeks op de PC (serienummers deels afgeschermd met XXXXXXXX):
Serial output P1 via Arduino:
Ik probeer de P1 poort uit lezen van mijn energiemeter. Dat gaat prima via mijn PC (USB serial), het is een vrij nieuwe (E350 Landis+Gyr ZCF110CCtFs2) dus was even uit proberen hoe de data binnenkwam. Maar uiteindelijk gevonden:
- Inverted (ik gebruik een 7404IC om het signaal te inverteren)
- 8 bit
- 115200 baud
- Weerstandje (1k ohm) nodig tussen de data en 5v.
Dat werkt dus prima, echter wil ik de data uitlezen met een Arduino Uno (i.v.m. met verdere integratie) en daar gaat het fout. De data komt anders binnen op de Arduino dan wanneer ik hem direct op mijn PC aansluit.
Vanwege de hogere snelheid (115200 baud) heb ik de P1 poort aangesloten op de hardware serial van de Arduino. Het debuggen naar de PC loopt via een software serial.
Ik hoop dat iemand is die kan zien wat er hier fout gaat? Daarom hieronder de exacte code en output die ik krijg.
Alvast dank voor de hulp!
Groet,
Sander
Dit is de test code die ik gebruik:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include <SoftwareSerial.h> SoftwareSerial softSerial(2, 3); // RX, TX char input; void setup() { Serial.begin(115200); softSerial.begin(9600); softSerial.println("Started, waiting for data..."); } void loop() { if (Serial.available()) { softSerial.write(Serial.read()); } } |
Serial output P1 rechtstreeks op de PC (serienummers deels afgeschermd met XXXXXXXX):
/XMX5LGBBLA44XXXXXXXX 1-3:0.2.8(50) 0-0:1.0.0(18060XXXXXXXX) 0-0:96.1.1(4530303435XXXXXXXXXXXXXXXXXXXXXXXX) 1-0:1.8.1(000497.797*kWh) 1-0:1.8.2(000503.844*kWh) 1-0:2.8.1(000606.252*kWh) 1-0:2.8.2(001467.959*kWh) 0-0:96.14.0(0001) 1-0:1.7.0(00.180*kW) 1-0:2.7.0(00.000*kW) 0-0:96.7.21(00013) 0-0:96.7.9(00007) 1-0:99.97.0(7)(0-0:96.7.19)(171028142331S)(0000000497*s)(171028153612S)(0000004330*s)(171109142354W)(0000000205*s)(171109154601W)(0000004124*s)(171109163130W)(0000000639*s)(171114002703W)(0000019549*s)(171126164211W)(0000001367*s) 1-0:32.32.0(00002) 1-0:32.36.0(00000) 0-0:96.13.0() 1-0:32.7.0(231.0*V) 1-0:31.7.0(002*A) 1-0:21.7.0(00.179*kW) 1-0:22.7.0(00.000*kW) 0-2:24.1.0(003) 0-2:96.1.0(4730303332XXXXXXXXXXXXXXXXXXXXXXXX) 0-2:24.2.1(180603213000S)(00225.687*m3) !829A
Serial output P1 via Arduino:
/XM4412 1-30) 0-08061 0-045300338373 1-8.184*k 1-0:517. 1-1(0*kWh 1-:2.7.20 0-(00 1-1.7.*kW) 1-1.29 0-7.21 0-0:9607) 1-0(77.1)(1731S)97*)(1712S)30*)(1754W)05*)(1701W)24*)(1730W)39*)(1703W)49*)(1711 W)67*) 1-0(000 1-0(000 0-0() 1-0233. 1-0006* 1-000.0 1-001.2 0-2003) 0-247306358353 0-21806)(0m3) !93