• Tidak ada hasil yang ditemukan

Perancangan Smart Power Meter Berbasis Arduino

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Smart Power Meter Berbasis Arduino"

Copied!
40
0
0

Teks penuh

(1)

ϱϱ

LAMPIRAN

Lampiran 1 : Tabel data hasil pembacaan

No Tanggal Jam Daya

(Watt)

Tegangan (Volt)

Arus (Ampere)

Faktor Daya

(2)

ϱϲ

40 11/03/2017 06:30:00 29.32 199.63 0.75 0.8 41 11/03/2017 06:40:00 22.27 200.58 0.7 0.78 42 11/03/2017 06:50:00 17.61 200.86 0.57 0.8 43 11/03/2017 07:00:00 20.94 201.19 0.69 0.77 44 11/03/2017 07:10:00 21.13 201.77 0.7 0.78 45 11/03/2017 07:20:00 21.49 201.86 0.68 0.78 46 11/03/2017 07:30:00 21.08 201.42 0.67 0.82 47 11/03/2017 07:40:00 19.42 201.69 0.62 0.81 48 11/03/2017 07:50:00 9.7 202.06 0.14 0.74 49 11/03/2017 08:00:00 0.94 202.4 0 0.32 50 11/03/2017 08:10:00 9.33 200.26 0.38 0.57 51 11/03/2017 08:20:00 11.57 200.16 0.38 0.56 52 11/03/2017 08:30:00 11.58 199.4 0.38 0.56 53 11/03/2017 08:40:00 6.55 201.43 0 0.35 54 11/03/2017 08:50:00 0.03 201.02 0 0.38 55 11/03/2017 09:00:00 6.41 199.72 0.38 0.57 56 11/03/2017 09:10:00 11.47 199.26 0.38 0.56 57 11/03/2017 09:20:00 11.53 199.23 0.38 0.56 58 11/03/2017 09:30:00 6.03 199.18 0 0.38

59 11/03/2017 09:40:00 0 199.68 0 0.35

(3)

ϱϳ

(4)

ϱϴ

(5)

ϱϵ

(6)

ϲϬ

(7)

ϲϭ

(8)

ϲϮ

(9)

ϲϯ

(10)

ϲϰ

(11)

ϲϱ

(12)

ϲϲ

(13)

ϲϳ

(14)

ϲϴ

(15)

ϲϵ

(16)

ϳϬ

(17)

ϳϭ

(18)

ϳϮ

(19)

ϳϯ

(20)

ϳϰ

(21)

ϳϱ

(22)

ϳϲ

(23)

ϳϳ

(24)

ϳϴ

(25)

ϳϵ

(26)

ϴϬ

(27)

ϴϭ

(28)

ϴϮ

(29)

ϴϯ

(30)

ϴϰ

Lampiran 2 : Kode Program Arduino

#include "SoftwareSerial.h"

#include "EmonLib.h" // Include Emon Library

#include "EEPROM.h"

#include "DS3231.h"

EnergyMonitor emon1; // Create an instance

SoftwareSerial mySerial(7, 6);

DS3231 rtc(SDA, SCL);

double amp=0;

double volt=0;

double daya = 0,energy = 0,energy_old = 0;

double pf = 0;

int Times = 0, LastTime = 0;

double kwh=0;

double kwhtot = 0;

String stringLINK,

stringDATA,stringEND,stringARUS,stringTEGANGAN,stringPF,stringDATA2,stringLINK2,

stringDATE,stringHOUR;

char buff[200];

int menit=0,hari=0;

String tanggal,jam;

float f = 0.00f;

int dLine2[50];

int tanggall,bulann,tahunn;

int jamm,menitt,detikk;

int tsec;

int counttry;

Time t;

void setup()

{

mySerial.begin(9600);

Serial.begin(9600);

emon1.current(1, 60);

emon1.voltage(2, 235, 1.7);

stringLINK = String("AT+HTTPPARA=\"URL\",\"202.0.107.165:16180/g.php?d=");

stringLINK2=

String("AT+HTTPPARA=\"URL\",\"202.0.107.165:16180/getdata2.php?whtot=");

stringARUS = String("&a=");

stringTEGANGAN = String("&v=");

stringPF = String("&p=");

(31)

ϴϱ

rtc.begin();

getrtctime();

setdatertc();

t = rtc.getTime();

menit = t.min;

hari = t.date;

}

void loop()

{

emon1.calcVI(20,2000);

amp = emon1.calcIrms(1185);

volt = emon1.Vrms;

pf = emon1.powerFactor;

hitungenergy();

kwh = (energy/1000);

t = rtc.getTime();

int datax = t.min - menit;

if (datax == 10 && tsec == 0 || datax < 0&& tsec == 0)

{

EEPROM.get( 0, f );

kwhtot = f;

kwhtot = kwhtot + kwh;

EEPROM.put(0, kwhtot);

tanggal = rtc.getDateStr();

jam = rtc.getTimeStr();

Serial.println(tanggal);

Serial.println(jam);

SubmitHttpRequest();

delay(100000);

int dataxx = t.date - hari;

if(dataxx == 1&& tsec == 0 || dataxx < 0&& tsec == 0)

{

SubmitHttpRequest2();

hari = t.date;

getrtctime();

setdatertc();

}

energy = 0;

energy_old = 0;

LastTime = millis()/1000;

menit = t.min;

(32)

ϴϲ

}

void hitungenergy()

{

daya = volt*amp;

Times = (millis()/1000) - LastTime;

energy=(daya*Times)/(3600);

if (energy < 0){

energy = energy*(-1) + energy_old;

}

else {

energy = energy + energy_old;

}

energy_old=energy;

//Serial.println(energy);

}

void SubmitHttpRequest()

{

Serial.println("Pengiriman Data");

stringDATA = stringLINK + kwh + stringARUS + amp + stringTEGANGAN + volt +

stringPF + pf + stringDATE + tanggal + stringHOUR + jam + stringEND;

stringDATA.toCharArray(buff,200);

Serial.println(buff);

mySerial.println("AT+CSQ");

delay(1000);

ShowSerialData();

mySerial.println("AT+CGATT?");

delay(1000);

ShowSerialData();

mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");

delay(2000);

ShowSerialData();

mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");

delay(5000);

ShowSerialData();

mySerial.println("AT+SAPBR=1,1");

delay(2000);

ShowSerialData();

mySerial.println("AT+HTTPINIT");

delay(2000);

ShowSerialData();

mySerial.println(buff);

delay(5000);

ShowSerialData();

(33)

ϴϳ

delay(5000);

ShowSerialData();

mySerial.println("AT+HTTPREAD");

delay(1000);

//ShowSerialData();

checkForResponse();

if ( dLine2[29] != 68 && dLine2[30] != 97 && dLine2[34] != 83 && dLine2[35] != 117 )

{

Serial.println("Pengiriman Gagal");

counttry = counttry + 1;

if (counttry <= 3){

SubmitHttpRequest();}

}

counttry = 0;

Serial.println("Pengiriman Berhasil");

mySerial.println("");

delay(300);

}

void SubmitHttpRequest2()

{

stringDATA2 = stringLINK2 + kwhtot + stringDATE + tanggal + stringEND;

stringDATA2.toCharArray(buff,200);

mySerial.println("AT+CSQ");

delay(100);

mySerial.println("AT+CGATT?");

delay(100);

mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");

delay(1000);

mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");

delay(4000);

mySerial.println("AT+SAPBR=1,1");

delay(2000);

mySerial.println("AT+HTTPINIT");

delay(2000);

mySerial.println(buff);

delay(2000);

ShowSerialData();

mySerial.println("AT+HTTPACTION=0");

delay(5000);

ShowSerialData();

(34)

ϴϴ

delay(1000);

//ShowSerialData();

checkForResponse();

if ( dLine2[29] != 68 && dLine2[30] != 97 && dLine2[34] != 83 && dLine2[35] != 117)

{

Serial.println("Pengiriman Gagal");

counttry = counttry + 1;

if (counttry <= 3){

SubmitHttpRequest();}

}

counttry = 0;

Serial.println("Pengiriman Berhasil");

mySerial.println("");

delay(300);

}

void getrtctime()

{

mySerial.println("AT+CSQ");

delay(100);

ShowSerialData();

mySerial.println("AT+CGATT?");

delay(100);

ShowSerialData();

mySerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");

delay(1000);

ShowSerialData();

mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");

delay(4000);

ShowSerialData();

mySerial.println("AT+SAPBR=1,1");

delay(2000);

ShowSerialData();

mySerial.println("AT+SAPBR=2,1");

(35)

ϴϵ

mySerial.println("AT+CNTP= \"pool.ntp.org\",7,1,2");

delay(1000);

ShowSerialData();

mySerial.println("AT+CNTP");

delay(10000);

//ShowSerialData();

checkForResponse();

mySerial.println("");

delay(100);

}

void setdatertc()

{

tanggall = (dLine2[33]-48)*10 + (dLine2[34]-48);

bulann = (dLine2[30]-48)*10 + (dLine2[31]-48);

tahunn = (dLine2[27]-48)*10 + (dLine2[28]-48) + 2000;

jamm = (dLine2[36]-48)*10 + (dLine2[37]-48);

menitt = (dLine2[39]-48)*10 + (dLine2[40]-48);

detikk = (dLine2[42]-48)*10 + (dLine2[43]-48);

rtc.setDate(tanggall, bulann, tahunn);

rtc.setTime(jamm, menitt, detikk);

Serial.println(tanggall);

Serial.println(bulann);

Serial.println(tahunn);

Serial.println(jamm);

Serial.println(menitt);

Serial.println(detikk);

}

void checkForResponse()

{

while(mySerial.available()!=0)

{

for (int i = 0; i < 50; i++)

{

dLine2[i] = mySerial.read();

}

for (int i = 0; i < 50; i++)

{

Serial.println(dLine2[i]);

}

(36)

ϵϬ

void ShowSerialData()

{

char data;

while(mySerial.available()!=0)

{

Serial.write(mySerial.read());

}

(37)

ϵϭ

Lampiran 3: Kode Program Web

WEB

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta name="author" content="muhammadfadlanariska">

<title>Smart Power Meter</title>

<!-- Bagian css -->

<link rel="stylesheet" href="assets/css/bootstrap.css">

<link rel="stylesheet" href="assets/css/data.css">

</head>

<body>

<nav class="navbar navbar-default navbar-fixed-top">

<div class="container">

<div class="navbar-header">

<button type="button" class="navbar-toggle" data-toggle="collapse"

data-target=".navbar-collapse">

<span bar"></span><span

class="icon-bar"></span><span class="icon-bar"></span>

</button>

<a class="navbar-brand" href="default.php">

SMART POWER METER</a>

</div>

<div class="navbar-collapse collapse">

<ul class="nav navbar-nav navbar-left">

<li class="clr1 active"><a

href="default.php">Beranda</a></li>

</ul>

</div>

</div>

</nav>

</br></br></br>

<div class="container" style="margin-top:20px">

<div class="col-md-7">

<h3> Tanggal :</h3>

<?php

$tanggalmain=$_POST['tanggal'];

echo $tanggalmain;

?>

</div>

</div>

</br>

(38)

ϵϮ

<div class="container" style="margin-top:20px">

<center><img src="grafik.php"></center>

</br></br>

<div class="navbar navbar-default navbar-fixed-bottom footer-bottom">

<div class="container text-center">

<p class="text-center">Copyright &copy; 2016. Developed by <a

href="https://www.facebook.com/muhammadfadlan.ariska">Muhammad Fadlan

Ariska</a></p>

</div>

</div>

</body>

</html>

HALAMAN WEB GET

<?php

date_default_timezone_set("Asia/Bangkok");

$daya=$_GET['daya'];

$volt=$_GET['volt'];

$amp=$_GET['amp'];

$pf=$_GET['pf'];

$tanggal = date("Y/m/d");

$jam= date("h:i:sa");

$servername = "";

$username = "";

$password = "";

$dbname = "";

// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}

$sql = "INSERT INTO daya2 (id,daya,tanggal,jam,volt,amp,pf)

VALUES (NULL,'$daya','$tanggal','$jam','$volt','$amp','$pf')";

if ($conn->query($sql) === TRUE) {

echo "Data Sukses";

} else {

echo "Error: " . $sql . "<br>" . $conn->error;

}

(39)

ϵϯ

GRAFIK

<?php

$conn = new mysqli("","","","");

$sql_ = "SELECT * FROM `dayatemp`";

$query_=$conn->query($sql_ );

$x_ = "";

$y_ = "";

while( $r_ = mysqli_fetch_array( $query_ ) ){

$waktu = $r_['jam'];

$arus = $r_['daya'];

$x_ = $x_ . "," . $waktu;

$y_ = $y_ . "," . $arus;

}

include ("jpgraph-4.0.1/src/jpgraph.php");

include ("jpgraph-4.0.1/src/jpgraph_line.php");

$x_ = substr($x_,1,strlen($x_)-1);

$y_ = substr($y_,1,strlen($y_)-1);

$data_x = explode("," , $x_);

$data_y = explode("," , $y_);

$graph = new Graph(1000,600);

$graph->SetScale("textlin");

$theme_class= new UniversalTheme;

$graph->SetTheme($theme_class);

$graph->title->Set('Grafik Konsumsi Daya');

$graph->xaxis->title->Set('Waktu','low');

$graph->yaxis->title->Set('Daya');

$graph->xaxis->SetLabelAlign('center','center');

$graph->yaxis->HideZeroLabel();

$graph->yaxis->HideLine(false);

$graph->xgrid->Show();

$graph->xgrid->SetLineStyle("solid");

$graph->xaxis->SetTickLabels($data_x);

$graph->xgrid->SetColor('#E3E3E3');

(40)

ϵϰ

$garis = new LinePlot($data_y);

$graph->Add($garis);

$garis->SetColor("#6495ED");

Referensi

Dokumen terkait

Pertama adalah menyimpan data pada memori program, kemudian kita menggunakan fungsi khusus, yang juga didefinisikan di library pgmspace.h, untuk membaca data tersebut dari

Untuk mempermudah pembahasan dan pemahaman, penulis membuat sistematika penulisan bagaimana sebenarmya prinsip kerja dari pengukuran frekuensi gelombang digital

Untuk dapat mengetahui informasi gelombang digital, maka dibutuhkan suatu sistem perangkat keras yang digunakan pengukuran yang dilengkapi dengan perangkat

Dalam bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja dari rangkaian teori pendukung itu antara lain tentang

Pada umumnya, mikrokontroler terdiri dari 3 komponen utama yaitu: ALU (Arithmetic Logic Unit) untuk melakukan perhitungan data, sekumpulan pengingat (register) untuk

“ Belajar dengan Mudah dan Cepat Pemrograman Bahasa C dengan SDCC (Small Device C Compiler) Pada Mikrokontroler.. AT 89X051/AT 89C51/52 Teori, Simulasi dan

Prototipe yang dirancang akan bertindak sebagai sebuah web server yang menampilkan sebuah halaman web kepada client yang berisi status peralatan listrik dan

Pada Gambar 11 dapat dilihat bahwa nilai pembacaan pH pada boiler water IP Drum adalah 9.88 dengan demikian sistem pengukur derajat keasaman ini dapat digunakan pada