Translate

ELCB Arduino Sensor PZEM-004t IOT Blynk

ELCB Arduino Sensor PZEM-004t IOT Blynk 
 

         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah ELCB dengan arduino dan iot blynk. alat ini menggunakan 2 buah sensor arus tegangan PZEM-004t. dan juga alat ini menggunakan wemos D1 mini esp8266. untuk lebih jelasnya berikut kodingnya.


1. Skema
 

 
2. Program Arduino IDE
 
 #define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6EN0PXXXX"
#define BLYNK_TEMPLATE_NAME "elcb"
#define BLYNK_AUTH_TOKEN "-defmRxYVYlK5bYKNU8YJ6kLNdkZzXXX"

#include <Wire.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <PZEM004Tv30.h>
#include <LiquidCrystal_I2C.h> 

LiquidCrystal_I2C lcd(0x27,16,2); 
PZEM004Tv30 pzem(&Serial);
PZEM004Tv30 pzem2(D7,D8); 
 
float voltage;
float current;
float power;
float energy;
float biaya; 
float voltage2;
float current2;
float energy2;
int relay = D3;
float selisih;
int btresetx;
int pinValue;
int pinValue2;
int tanda;

BlynkTimer timer;

char ssid[] = "hotspothpku";
char pass[] = "123456789";


BLYNK_WRITE(V4)
{
  pinValue = param.asInt();   

  if((pinValue == 1)&&(tanda == 0)){
    digitalWrite(relay, LOW);
  }
  
  if((pinValue == 0)&&(tanda == 0)) {
    digitalWrite(relay, HIGH);
  }
  
}

BLYNK_WRITE(V5)
{
  pinValue2 = param.asInt();   

  if(pinValue2 == 1){
    tanda = 1;
  }
  
  if(pinValue2 == 0) {
    tanda = 0;
  }
  
}

void kirimdata()
{
  Blynk.virtualWrite(V0,voltage);
  Blynk.virtualWrite(V1,current);
  Blynk.virtualWrite(V2,voltage2);
  Blynk.virtualWrite(V3,current2);
}

void setup() {

  Serial.begin(9600);
  
  lcd.begin();  
  lcd.clear();
  lcd.noCursor();  

  pinMode(relay,OUTPUT);
  digitalWrite(relay,LOW); //LITRIK AC NYALA

  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  timer.setInterval(1000L, kirimdata);
}

void loop() {
 
voltage = pzem.voltage();
current = pzem.current();

voltage2 = pzem2.voltage();
current2 = pzem2.current();

if((current == current2)&&(tanda == 1)){
  digitalWrite(relay,LOW);  
}

if((current > current2)&&(tanda == 1)){
  selisih = current - current2;

if((selisih >= 0)&&(tanda == 1)){
  digitalWrite(relay,HIGH); 
  lcd.clear(); 
  delay(1000);
  arusbocor(); 
}

}

if((current < current2)&&(tanda == 1)){
  selisih = current2 - current;  

if((selisih >= 0)&&(tanda == 1)){
 digitalWrite(relay,HIGH);
 lcd.clear(); 
 delay(1000);
 arusbocor();
}

}

lcd.setCursor(0,0);
lcd.print("V:");
lcd.print(voltage);
lcd.print("/");
lcd.print(voltage2);
lcd.print("  ");

lcd.setCursor(0,1);
lcd.print("I:");   
lcd.print(current);
lcd.print("/");
lcd.print(current2);
lcd.print("  ");

Blynk.run();
timer.run(); // Initiates BlynkTimer
delay(200);
}

void arusbocor(){

lcd.setCursor(0,0);
lcd.print("arus bocor ");
lcd.setCursor(0,1);
lcd.print(" > 30mA");  
  
arusbocor();  
}



3. VIDEO HASILNYA
 

 
 

No comments:

Post a Comment