Translate

Monitor Arus dan Tegangan AC Vrms 220 volt Server THINGSPEAK sensor PZEM-004t v3.0

Monitor Arus dan Tegangan AC Vrms 220 volt Server THINGSPEAK sensor PZEM-004t v3.0


         Pada kesempatan kali ini saya akan menjelaskan mengenai sebuah alat yang dapat berfungsi untuk monitor arus dan tegangan secara ONLINE menggunakan server THINGSPEAK sehingga user bisa memantau secara jarak jauh. sensor yang dipakai yaitu PZEM-004t v3 yang mana satu sensor bisa buat mendeteksi beberapa parameter. untuk lebih jelasnya berikut adalah program dan daftar komponenya.  


a. Arduino Uno




b. Wemos D1





c. Sensor PZEM-004t v3





d. Program Arduino Uno

#include <PZEM004Tv30.h>
#include <Wire.h>  // i2C Conection Library
PZEM004Tv30 pzem(11, 12);

void setup() {
  Serial.begin(9600);  
}

void loop() {

    float voltage = pzem.voltage();
    int tegangan = voltage * 100;
    float current = pzem.current();
    int arus = current * 100;
    float power = pzem.power();
    float energy = pzem.energy();
    float frequency = pzem.frequency();
    float pf = pzem.pf();

Serial.print("*");
Serial.print(tegangan);
Serial.print(",");
Serial.print(arus);
Serial.println("#");  
delay(1000);
}



e. Program Wemos D1

#define BLYNK_PRINT Serial    
#include <SPI.h>
#include <ESP8266WiFi.h>

int temp;
int x = 5;
int y;

int value1;
int value2;

float tegangan;
float arus;

int datain1;
int datain2;

String dataIn;
String dt[10];
int i;
boolean parsing=false;

String apiKey = "JHGJH6775FGHJKG";     //  Enter your Write API key from ThingSpeak
const char* resource = "/update?api_key=";

const char *ssid =  "Hotspotku";     // replace with your wifi ssid and wpa2 key
const char *pass =  "123456789";
const char* server = "api.thingspeak.com";

WiFiClient client;

void setup()
{
  
  dataIn=""; 

       Serial.begin(9600);
       delay(10);

  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

      while (WiFi.status() != WL_CONNECTED)
     {
            delay(500);
            Serial.print(".");
     }
      Serial.println("");
      Serial.println("WiFi connected");

}

void loop()
{

while(Serial.available()>0) {
//   dataIn="";
    char inChar = (char)Serial.read();
    dataIn += inChar;
    if (inChar == '\n') {
    parsing = true;
  }
}

if(parsing){
    parsingData();
       
  if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
                      { 
                           
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(tegangan);
                             postStr += "\r\n\r\n";

                             client.print(String("GET ") + resource + apiKey + "&field1=" + tegangan + "&field2=" + arus + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n");
                                       
                             client.print("Host: api.thingspeak.com\n");
                             client.print("Connection: close\n");
                             client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
                             client.print("Content-Type: application/x-www-form-urlencoded\n");
                             client.print("Content-Length: ");
                             client.print(postStr.length());
                             client.print("\n\n");
                             client.print(postStr);
                           
                             Serial.print("Tegangan: ");
                             Serial.print(tegangan);
                             Serial.print(" Arus: ");
                             Serial.print(arus);
                             Serial.println(". Send to Thingspeak.");
                        }
                       
          client.stop();

          Serial.println("Waiting...");

  delay(10000);
  
 } 
}

void parsingData(){
int j=0;

//kirim data yang telah diterima sebelumnya
//Serial.print("data masuk : ");
//Serial.print(dataIn);
//Serial.print("\n");

//inisialisasi variabel, (reset isi variabel)
dt[j]="";
//proses parsing data
for(i=1;i<dataIn.length();i++){
//pengecekan tiap karakter dengan karakter (#) dan (,)
if ((dataIn[i] == '#') || (dataIn[i] == ','))
{
//increment variabel j, digunakan untuk merubah index array penampung
j++;
dt[j]="";       //inisialisasi variabel array dt[j]
}
else
{
//proses tampung data saat pengecekan karakter selesai.
dt[j] = dt[j] + dataIn[i];
}
}

 datain1 = dt[0].toInt();
 datain2 = dt[1].toInt();

//kirim data hasil parsing
Serial.print("data 1 : ");
Serial.print(datain1);
Serial.print("\n");
Serial.print("data 2 : ");
Serial.print(datain2);
Serial.print("\n");
//Serial.print("data 3 : ");
//Serial.print(dt[2].toInt());
//Serial.print("\n\n");

 tegangan = datain1 / 100.0;
 arus = datain2 / 100.0;

}




f. Gambar Hasilnya






g. VIDEO HASILNYA






No comments:

Post a Comment