By | 20/04/2021
Tutorial-IoT-Monitoring-Listrik-AC-3-Fase-Berbasis-Web

Untuk membuat projek monitoring daya listrik saya menggunakan arduino nano dan juga esp8266 wemos d1 mini atau nodemcu esp8266 yang akan berkomunikasi serial keduanya, tugas arduino adalah membaca dan mengkalibrasi sensor tegangan ac ZMPT101b dan juga sensor Arus SCT 013 dan ESP8266 wemos atau NodeMCU difungsikan untuk kirim data ke database MySQL dengan metode HTTP POST. Tutorial Monitoring Listrik berbasis web iot

Sensor arus SCT 013 yang saya gunakan adalah 50A karena hanya membutuhkan maksimal pembacaan 50A dan jumlah sensornya 3 buah karena untuk mengukur arus R S dan T. Tutorial Monitoring Listrik berbasis web

Sedangkan sensor teganganya saya menggunak tiga buah juga sudah dalam bentuk modul tinggal hubungkan tiga kabel vcc gnd dan output analognya.

Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT
Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT

Sedangkan untuk ESP8266 kenapa saya memilih Wemos D1 mini karena bentuknya yang kecil dan sudah ada usb micro nya, kalo misalkan ESP8266 saja nanti saya repot upload programnya OTA atau usb to ttl. Tutorial Monitoring Listrik berbasis web

dan untuk arduino nya kenapa pilih arduino uno karena alasan yang sam yaitu ukuran atau dimensinya lumayan kecil. Trus kenapa ga pakai pro mini ? lagi lagi alasan saya sama karena ga mau repot menyambungkan FTDI atau USB to TTL untuk upload programnya.

Sistem kerja Monitoring Tegangan dan Arus Listrik AC 3 Phase

Terdapat tiga buah sensor arus dan tegangan AC, yang diproses dan dikalibrasi oleh arduino nano, kemudian dari arduino nano mengirim hasil pembacaan ke ESP8266 Wemos D1 mini. D1 mini berperan penting untuk mengirimkan data ke server lokalhost dan disimpan pada database MySQL. Tutorial Monitoring Listrik berbasis web

Tutorial Monitoirng Daya Listrik AC 3 phase juga saya lengkapi dengan fungsi export data kedalam format exel, jadi jika kalian ingin menganalisis datanya bisa mendownload data kemudian analisis data melalui excel.

Selain itu tidak hanya untuk monitoring daya listrik AC, melainkan saya tambah fungsinya untuk menyalakan lampu atau apapun yang menggunakan listrik AC, karena saya lengkapi modul relay yang dapat di kontrol melalui server web. sehingga projek ini bisa dikatakan Monitoring dan Kontrol Listrik AC 3 fase. Tutorial Monitoring Listrik berbasis web

Langsung saja kita menuju tutorial nya yang sangat panjang dan harus kalian ikuti satu persatu langkahnya. mulai dari mendownload file, mengcopy file php dan upload program arduino dan ESP8266.

Tutorial Lengkap Monitoring Listrik AC 3 fase

Download Database SQL

Untuk link download PHP nya ada dibawah ya. kita lanjut dulu ke gambar gambar rangkaian arduino dan sensor tegangan AC ZMPT101B dan juga sensor arus AC SCT 013 50 A. Tutorial Monitoring Listrik berbasis web

Download Proteus 8.11

Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT
Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT
Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT
Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT

Berikut saya sertakan beberapa code dasar untuk membaca sensor tegangan dan juga sensor arus nya.

Sebelumnya download terlebih dahulu library emonLib untuk dapat membaca arus ac. EmonLib.h

dan ini adalah contoh membaca satu sensor arus sct 103

// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3

#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon1;                   // Create an instance

void setup()
{  
  Serial.begin(9600);
  
  emon1.current(1, 111.1);             // Current: input pin, calibration.
}

void loop()
{
  double Irms = emon1.calcIrms(1480);  // Calculate Irms only
  
  Serial.print(Irms*230.0);	       // Apparent power
  Serial.print(" ");
  Serial.println(Irms);		       // Irms
}

dan berikut ini saya sertakan contoh pembacaan sensor tegangan

float vAC(int pin) {
  uint32_t periode = 1000000 / 50;
  uint32_t t_start = micros();

  uint32_t Vsum = 0, count = 0;
  int32_t Vnow;

  while (micros() - t_start < periode) {
    Vnow = analogRead(pin) - 512;
    Vsum += Vnow*Vnow;
    count++;
  }

  float Vrms = sqrt(Vsum / count) / 1023 * 5.0;
  Vrms = 589.7*Vrms - 23.59;
  
  if (Vrms < 0) Vrms = 0;
  
  return Vrms;
}

program diatas itu saya contohkan untuk cara kalibrasinya saja.. dan berikut adalah contoh code lengkap untuk Arduino yang sudah dibuat untuk kalibrasi dan juga membaca arus tegangan AC 3 fase. Tutorial Monitoring Listrik berbasis iot

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial Serial_1(3, 2);

LiquidCrystal_I2C lcd(0x27, 16, 2);

#include "EmonLib.h"

EnergyMonitor Ar, As, At;

#define pinIR A0
#define pinIS A1
#define pinIT A2

#define pinVR A3
#define pinVS A6
#define pinVT A7

int zp_R, zp_S, zp_T;
int tegangan_R, tegangan_S, tegangan_T;
float arus_R, arus_S, arus_T; // ubah ke int jika tidak mau ada koma

boolean d = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial_1.begin(9600);
  lcd.begin();

  Ar.current(pinIR, 45); // ubah untuk kalibrasi
  As.current(pinIS, 40); // ubah untuk kalibrasi
  At.current(pinIT, 45);  // ubah untuk kalibrasi

  lcd.setCursor (0, 0);
  lcd.print("Monitoring VI");
  lcd.setCursor (0, 1);
  lcd.print("-Tunggu bentar-");
  delay(2000);

}

void loop() {
  // put your main code here, to run repeatedly:
  lcd.clear();
  tegangan_R = vAC(pinVR);
  tegangan_S = vAC(pinVS);
  tegangan_T = vAC(pinVT);
  arus_R = Ar.calcIrms(1480);
  arus_S = As.calcIrms(1480);
  arus_T = At.calcIrms(1480);
  
  send_esp();
  display_serial();
  display_lcd();
  delay(500);
}

void display_lcd() {
  if (d == 0) {
    lcd.setCursor (0 + 1, 0);
    lcd.print("V_R");
    lcd.setCursor (0 + 1, 1);
    lcd.print(tegangan_R);
    lcd.setCursor (5 + 1, 0);
    lcd.print("V_S");
    lcd.setCursor (5 + 1, 1);
    lcd.print(tegangan_S);
    lcd.setCursor (10 + 1, 0);
    lcd.print("V_T");
    lcd.setCursor (10 + 1, 1);
    lcd.print(tegangan_T);
    d = 1;
  }
  else {
    lcd.setCursor (0 + 1, 0);
    lcd.print("I_R");
    lcd.setCursor (0 + 1, 1);
    lcd.print(arus_R);
    lcd.setCursor (5 + 1, 0);
    lcd.print("I_S");
    lcd.setCursor (5 + 1, 1);
    lcd.print(arus_S);
    lcd.setCursor (10 + 1, 0);
    lcd.print("I_T");
    lcd.setCursor (10 + 1, 1);
    lcd.print(arus_T);
    d = 0;
  }
}

void send_esp() {
  Serial_1.print(tegangan_R);
  Serial_1.print("|");
  Serial_1.print(tegangan_S);
  Serial_1.print("|");
  Serial_1.print(tegangan_T);
  Serial_1.print("|");
  Serial_1.print(arus_R);
  Serial_1.print("|");
  Serial_1.print(arus_S);
  Serial_1.print("|");
  Serial_1.print(arus_T);
  Serial_1.println();
}

void display_serial() {
  Serial.print("Teg R : ");
  Serial.print(tegangan_R);
  Serial.print("\tTeg S : ");
  Serial.print(tegangan_S);
  Serial.print("\tTeg T : ");
  Serial.print(tegangan_T);

  Serial.print("\tArus R : ");
  Serial.print(arus_R);
  Serial.print("\tArus S : ");
  Serial.print(arus_S);
  Serial.print("\tArus T : ");
  Serial.print(arus_T);
  Serial.println();
}

Silahkan gabungkan program yang diatas supaya code tidak error.

dan berikut saya sertakan code ESP8266 wemos D1 mini atau bisa juga kalian menggunakan NodeMCU V3 ESP8266. Tutorial Monitoring Listrik berbasis iot

#include <SoftwareSerial.h>
SoftwareSerial Serial2(D1, D2);
#include <ESP8266WiFi.h>
#include <ESP8266WiFiClient.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

const char *ssid = "BOLT! SUPER 4G-D8E1";  //Nama Wifi
const char *password = "B6D5D8E1"; // pass wifi

int index1, index2, index3, index4, index5;

int vR, vS, vT;
float iR, iS, iT;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial2.begin(9600); // gpio 17 dan 16
  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, password);
  Serial.println("");

  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  pinMode (D4, OUTPUT);
  digitalWrite(D4, 1);
}

void loop() {
  // put your main code here, to run repeatedly:
  String dd;
  while (Serial2.available()) {
    delay(10);
    char c = Serial2.read();
    dd += c;
  }
  if (dd.length() > 0) {
    Serial.print(dd);
    index1 = dd.indexOf('|');
    index2 = dd.indexOf('|', index1 + 1);
    index3 = dd.indexOf('|', index2 + 1);
    index4 = dd.indexOf('|', index3 + 1);
    index5 = dd.indexOf('|', index4 + 1);

    vR = dd.substring (0, index1).toInt();
    vS = dd.substring (index1 + 1, index2).toInt();
    vT = dd.substring (index2 + 1, index3).toInt();

    iR = dd.substring (index3 + 1, index4).toFloat();
    iS = dd.substring (index4 + 1, index5).toFloat();
    iT = dd.substring (index5 + 1).toFloat();
    Serial.println(vR);
    Serial.println(vS);
    Serial.println(vT);
    Serial.println(iR);
    Serial.println(iS);
    Serial.println(iT);
    kirim_data(vR, vS, vT, iR, iS, iT);
  }
}

void kirim_data(int r, int s, int t, float ir, float is, float it) {

  String postData = (String)"vr=" + r + "&vs=" + s + "&vt=" + t +
                    "&ir=" + ir + "&is=" + is + "&it=" + it;
  String url = "http://192.168.1.137/monitoringlistrik/api.php?";
  url += postData;

  HTTPClient http;
  http.begin(url);
  auto httpCode = http.GET();
  String payload = http.getString();

  Serial.println(url);
  Serial.println(payload);
  DynamicJsonDocument doc(1024);
  deserializeJson(doc, payload);
  JsonObject obj = doc.as<JsonObject>();
  int led = doc["lampu"];
  digitalWrite(D4, !led);
  Serial.println(led);
  http.end();
}

dan dibawah ini saya sertakan link lengkap untuk file php nya, yang bisa kalian langsung copy paste ke file htdocs.

Download File PHP

Baiklah terimakasih teman teman yang sudah berkunjung, dan jika ada pertanyaan silahkan tanyakan di grup facebook arduino robotika indonesia.. dan jika mau menggunakan jasa saya langsung hubungi saya melalui wa.

Kesimpulan

Tutorial Mengakses sensor arus dan tegangan AC untuk 3 fase dan mengirim datanya ke server localhost kemudian disimpan pada database MySQL yang dapat diexport ke excel.

Projek ini menggunakan dua mikrokontroler ESP8266 dan juga arduino nano yang dapat berkomunkasi satu dengan lainya menggunakan serial comunication.

Web dibuat dengan PHP, HTML, JS dan juga Bootstrap. silahkan kembangkan atau jika membutuhkan projek custom saya sebagai admin anakkendali.com siap membantu.

One Reply to “Tutorial Arduino Monitoring Daya Listrik AC 3 Phase Berbasis Web IoT”

  1. muhammad ahya ashidiqi

    kaka boleh minta program keselurahan dan skematik eagle dan konfigurasinya jika membayar dengan harga berapa kaka

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *