Introduction
A Smart Energy Meter is an advanced electronic system that measures electricity consumption in real-time and can transmit data for monitoring or billing purposes. Unlike traditional meters, smart energy meters can display usage digitally, send alerts, and integrate with IoT platforms for remote monitoring.
This project helps users monitor energy consumption efficiently, save electricity, and reduce energy costs.
Objective of the Project
- To measure AC power consumption using sensors.
- To calculate real-time energy usage and display it digitally.
- To interface Arduino with an LCD or IoT platform.
- To implement automated energy monitoring for households or industries.
Working Principle
The Smart Energy Meter works using a current sensor (like ACS712) and voltage measurement to calculate power consumption.
How It Works
- AC current flows through the current sensor.
- Arduino reads analog voltage corresponding to the current.
- Using formulas, Arduino calculates current, voltage, power, and energy consumed.
- Energy consumption is displayed on an LCD or sent to IoT platforms.
Components Required
- Arduino Uno
- Current Sensor (ACS712)
- Voltage Sensor Module (ZMPT101B)
- 16×2 LCD Display
- Jumper Wires
- Breadboard / PCB
- AC Load for testing (Lamp or Fan)
- 5V Power Supply for Arduino
Circuit Diagram
Connections
Current Sensor ACS712:
VCC -> 5V
GND -> GND
OUT -> A0 (Arduino Analog Input)
Voltage Sensor ZMPT101B:
VCC -> 5V
GND -> GND
OUT -> A1 (Arduino Analog Input)
16x2 LCD:
RS -> D7
EN -> D6
D4 -> D5
D5 -> D4
D6 -> D3
D7 -> D2
VCC -> 5V
GND -> GND
VO -> Potentiometer middle pin
Arduino Code for Smart Energy Meter
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int currentSensor = A0;
int voltageSensor = A1;
float currentValue = 0;
float voltageValue = 0;
float power = 0;
float energy = 0; // in Watt-hours
unsigned long previousMillis = 0;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
lcd.print("Smart Energy Meter");
delay(2000);
lcd.clear();
}
void loop() {
unsigned long currentMillis = millis();
// Read sensors
int sensorCurrent = analogRead(currentSensor);
int sensorVoltage = analogRead(voltageSensor);
// Convert sensor values to actual current and voltage
currentValue = (sensorCurrent - 512) * (5.0 / 1023.0) / 0.185; // ACS712 5A module
voltageValue = sensorVoltage * (230.0 / 1023.0); // Assuming AC 230V
// Calculate Power
power = voltageValue * currentValue;
// Calculate energy consumption
if (currentMillis - previousMillis >= 1000) { // Every 1 second
energy += power / 3600.0; // Watt-seconds to Wh
previousMillis = currentMillis;
}
// Display values
lcd.setCursor(0, 0);
lcd.print("Power:");
lcd.print(power);
lcd.print(" W");
lcd.setCursor(0, 1);
lcd.print("Energy:");
lcd.print(energy);
lcd.print(" Wh");
Serial.print("Power: ");
Serial.print(power);
Serial.print(" W, Energy: ");
Serial.print(energy);
Serial.println(" Wh");
delay(500);
}
Code Explanation
- ACS712 measures current, ZMPT101B measures voltage.
- Arduino converts analog signals to actual current (A) and voltage (V).
- Power is calculated as
P = V × I. - Energy is accumulated over time and displayed on LCD in Watt-hours.
- Serial Monitor shows real-time power and energy values.
Advantages
- Real-time monitoring of energy usage
- Digital display reduces reading errors
- Can be connected to IoT for remote monitoring
- Helps save electricity and reduce bills
Applications
- Household energy monitoring
- Industrial energy management
- IoT-based smart homes
- Automated billing and energy audits
Future Enhancements
- IoT integration for mobile app monitoring
- Automated alerts for high energy consumption
- Solar energy monitoring
- Data logging for analytics
Conclusion
The Smart Energy Meter is a highly useful electronics project that demonstrates energy measurement and monitoring using Arduino. It provides accurate readings, enables smart energy management, and forms a basis for IoT-based home automation systems.
