

The PZEM-04T is a multifunctional energy meter designed for monitoring and measuring key electrical parameters in AC circuits. It can measure voltage, current, power, energy consumption, and frequency, making it an essential tool for energy management and monitoring systems. The module features a UART interface for seamless communication with microcontrollers, enabling data logging and remote monitoring applications. Its compact design and high accuracy make it suitable for a wide range of applications.








| Parameter | Value |
|---|---|
| Voltage Range | 80V - 260V AC |
| Current Range | 0A - 100A (with external CT) |
| Power Range | 0W - 22kW |
| Energy Range | 0kWh - 9999kWh |
| Frequency Range | 45Hz - 65Hz |
| Communication | UART (9600 baud rate) |
| Power Supply | Self-powered (via AC input) |
| Accuracy | ±0.5% |
The PZEM-04T module has a 4-pin interface for communication and power connections. Below is the pin configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply for the UART interface (5V) |
| 2 | GND | Ground connection |
| 3 | RX | UART Receive pin (connect to TX of MCU) |
| 4 | TX | UART Transmit pin (connect to RX of MCU) |
VCC and GND pins.RX pin of the PZEM-04T to the TX pin of your microcontroller (e.g., Arduino UNO) and the TX pin of the PZEM-04T to the RX pin of the microcontroller.Below is an example of how to interface the PZEM-04T with an Arduino UNO to read voltage, current, and power:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial pzemSerial(10, 11); // RX = Pin 10, TX = Pin 11
// PZEM-04T communication commands
byte readVoltage[] = {0xB0, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1A};
byte response[7];
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
pzemSerial.begin(9600); // Initialize PZEM-04T communication
Serial.println("PZEM-04T Test");
}
void loop() {
// Send command to read voltage
pzemSerial.write(readVoltage, sizeof(readVoltage));
delay(100); // Wait for response
// Read response from PZEM-04T
if (pzemSerial.available() >= 7) {
for (int i = 0; i < 7; i++) {
response[i] = pzemSerial.read();
}
// Calculate voltage from response
float voltage = (response[3] << 8 | response[4]) / 10.0;
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.println(" V");
}
delay(1000); // Wait 1 second before next reading
}
No Data Received via UART
RX and TX connections and ensure the baud rate is set to 9600.Inaccurate Readings
Module Not Powering On
Q: Can the PZEM-04T measure DC circuits?
A: No, the PZEM-04T is designed specifically for AC circuits and cannot measure DC parameters.
Q: Can I use multiple PZEM-04T modules with a single microcontroller?
A: Yes, but each module must have a unique address. Refer to the datasheet for instructions on setting module addresses.
Q: What is the maximum distance for UART communication?
A: The maximum reliable distance for UART communication is typically around 15 meters. For longer distances, consider using RS485 converters.
This concludes the documentation for the PZEM-04T module. For further details, refer to the official datasheet or contact the manufacturer.