Dobrý den.
Koupil jsem si tento měřič spotřeby el. energie: https://www.aliexpress.com/item/1005003374850209.html
Má také výstup RS485.
Dokonce je k němu i grafický program na PC.
Ale já měřič potřebuji umístit za elektroměr, to je na chodbu v paneláku.
Tak jsem si myslel, že data budu vyčítat do WEMOS D1 a ukládat na uložiště.
Potřeboval bych pomoci s vyčítáním hodnot přes RS485. Alespoň nasměrovat.
Děkuji za pomoc.
Ota
KWS-AC301 Wattmeter Power Meter
Re: KWS-AC301 Wattmeter Power Meter
Čo som tak pogooglil tak o nejakom popise protokolu ani chýru ani slychu. Pravdepodobne MODBUS. Ani žiadne DIY projekty na tom nefičia. Takže ak chceš byť prvý tak si zožen RS485/USB, pripoj to na počítač, odchyť komunikáciu, analyzuj čo je zač a napíš si pre svoje železo ovládač. Alebo zadaj nejakému študentovi bakalárku.
Re: KWS-AC301 Wattmeter Power Meter
V podstatě je to samé jako UART, RS-485 jen pracuje s jinou úrovní a charakteristikou signálu.
Potřebuješ koupit Převodník UART na RS 485, MAX485 a stáhnout si Arduino knihovnu ArduinoRS485. Příklad kódu pro příjem RS-485 signálu je zde (Examples a RS485Receiver).
P.S. Podívej se také na Modbus (RS-485) Using Arduino
Potřebuješ koupit Převodník UART na RS 485, MAX485 a stáhnout si Arduino knihovnu ArduinoRS485. Příklad kódu pro příjem RS-485 signálu je zde (Examples a RS485Receiver).
P.S. Podívej se také na Modbus (RS-485) Using Arduino
Re: KWS-AC301 Wattmeter Power Meter
Tak už se podařilo...
Kód: Vybrat vše
#include<ModbusMaster.h>
#define MAX485_DE 3
#define MAX485_RE_NEG 2
ModbusMaster node;
void preTransmission()
{
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
}
void postTransmission()
{
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
}
void setup() {
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
// Init in receive mode
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
Serial.begin(9600);
//slave ID 1
node.begin(2, Serial);
Serial.println("Starting Modbus Transaction:");
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop() {
static uint32_t i;
uint8_t j, result;
uint16_t data[10];
i++;
//result = node.readInputRegisters(0312,1);
result = node.readHoldingRegisters(14,17);
Serial.println("");
if (result == node.ku8MBSuccess) {
Serial.println("Success, Received data: ");
for (j = 0; j < 17; j++) {
data[j] = node.getResponseBuffer(j);
if (j==0)
{
Serial.print("Napětí = ");
Serial.print(float(data[j])/10);
Serial.println(" V");
}
if (j==1)
{
Serial.print("Proud = ");
Serial.print(float(data[j])/10,3);
Serial.println(" A");
}
if (j==2)
{
Serial.print("Prikon A = ");
Serial.print(float(data[j])/10);
Serial.println(" W");
}
if (j==3)
{
Serial.print("Prikon R = ");
Serial.print(float(data[j])/10);
Serial.println(" VAR");
}
if (j==4)
{
Serial.print("Prikon R = ");
Serial.print(float(data[j])/10);
Serial.println(" Ah");
}
if (j==10)
{
Serial.print("Príkon = ");
Serial.print(data[j]);
Serial.println(" Wh");
}
if (j==11)
{
Serial.print("Cas = ");
Serial.print(data[j]);
Serial.println(" T");
}
if (j==12)
{
Serial.print("Teplota = ");
Serial.print(data[j]);
Serial.println(" °C");
}
if (j==15)
{
Serial.print("Pow.fakt = ");
Serial.print(float(data[j])/100);
Serial.println(" PF");
}
if (j==16)
{
Serial.print("Frekvence= ");
Serial.print(float(data[j])/10);
Serial.println(" Hz");
}
}
Serial.println("");
} else {
Serial.print("Failed, Response Code: ");
Serial.print(result, HEX);
Serial.println("");
delay(5000);
}
delay(1000);
}
}
Re: KWS-AC301 Wattmeter Power Meter
Dobrá zpráva. Je vidět, že nejsi žádné ořezávátko .
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti