• Tidak ada hasil yang ditemukan

BAB V. KESIMPULAN DAN SARAN

5.2 Saran

Beberapa saran yang dapat penulis berikan pada Tugas Akhir ini adalah : 1. Nilai ketinggian yang diperoleh berubah-ubah setiap waktu, sehingga

pengukuran ketinggian ground level dengan ketinggian objek sebaiknya dilakukan secepat mungkin.

2. Untuk ketinggian objek yang baru, sebaiknya menggunakan nilai ketinggian ground level yang baru.

3. Untuk mendapatkan hasil pengukuran yang maksimal, jumlah sampel data yang digunakan sebaiknya ditingkatkan.

ix

DAFTAR PUSTAKA

[1] “Indonesian Wikipedia,” Wikimedia Foundation, Inc., 6 Agustus 2014. [Online]. Available: http://id.wikipedia.org/wiki/Tekanan. [Diakses 11 November 2014]. [2] “English Wikipedia,” Wikimedia Foundation, Inc., 8 November 2014. [Online].

Available: http://en.wikipedia.org/wiki/Atmospheric_pressure. [Diakses 11 November 2014].

[3] K. Sohraby, D. Minoli dan T. Znati, Wireless Sensor Networks : Technology, Protocols, and Applications, New Jersey: John Wiley & Sons, Inc., 2007.

[4] W. Dargie dan C. Poellabauer, Fundamentals of Wireless Sensor Networks : Theory and Practice, United Kingdom: John Wiley and Sons, Ltd., 2010.

[5] D. Gislason, ZigBee Wireless Networking, USA: Newnes, 2008.

[6] J. Axelson, Serial Port Complete : COM Ports, USB Virtual COM Ports, and Ports for Embedded Systems, 2nd penyunt., Madison: Lakeview Research LLC, 2007. [7] AN232B-04 : Data Throughput, Latency and Handshaking, United Kingdom: Future

Technology Devices International Ltd., 2006.

[8] P. Tarigan, Sistem Tertanam, Yogyakarta: Graha Ilmu, 2011.

[9] “English Wikipedia,” Wikimedia Foundation, Inc., 21 March 2015. [Online]. Available:

http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter. [Diakses 1 April 2015].

[10] Xbee/XBee-PRO OEM RF Modules, Lindon: MaxStream, Inc., 2006. [11] “Scilab,” Scilab Enterprises S.A.S, [Online]. Available:

https://www.scilab.org/scilab/about. [Diakses 25 November 2014]. [12] “Scilab,” Scilab Enterprises S.A.S, [Online]. Available:

https://www.scilab.org/download/requirements. [Diakses 25 November 2014]. [13] “English Wikipedia,” Wikimedia Foundation, Inc., 2 March 2015. [Online]. Available:

Lampiran 1

Kode Program Untuk Perangkat Arduino

#include <Wire.h>

#include <Adafruit_BMP085.h>

Adafruit_BMP085 tinggi; // create a BMP085 object char input; void setup() { Serial.begin(9600); Wire.begin(); tinggi.begin(); } void loop() { input = Serial.read(); switch(input) {

case 'R': // R is sent from Scilab to ask whether Radio is ready or not Serial.println("Ready");

break;

case 'P': // P is sent from Scilab to command Radio start sending data Serial.println(tinggi.readAltitude());

break; } }

Lampiran 2

Kode Program Untuk Scilab

/////////////////////////////////////////////////////////////////////////////// // CREATE A WINDOW AND ITS COMPONENTS ///////////////////////////////////////////////////////////////////////////////

clear;

gui = createWindow(); gui.axes_size = [770480]; gui.figure_name = "Skripsi"; gui.backgroundcolor = [111]; gui.figure_position = [32080]; gui.resize = "off";

handles.gui = 1;

/////////////////////////////////////////////////////////////////////////////// // Connect Button

pbConnect = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [202807020], 'String', 'Connect', ...

'HorizontalAlignment', 'center', 'Callback', 'connect');

// Disconnect Button

pbDisconnect = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [202407020], 'String', 'Disconnect', ...

'HorizontalAlignment', 'center', 'Callback', 'disconnect');

// Plotting Button

pbPlot = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [202007020], 'String', 'Plot', ...

'HorizontalAlignment', 'center', 'Callback', 'dataPlot');

// Stop the Plotting Button

pbStop = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [201607020], 'String', 'Stop Plotting', ...

'HorizontalAlignment', 'center', 'Callback', 'stop');

// Load Data Button

pbCallLoad = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [201207020], 'String', 'Load', ...

'HorizontalAlignment', 'center', 'Callback', 'callDataLoad');

// Save and Exit Button

pbCallSaveandExit = uicontrol(gui, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [03487020], 'String', 'Save & Exit', ...

'HorizontalAlignment', 'center', ...

'Callback', 'callSaveExit');

/////////////////////////////////////////////////////////////////////////////// // A place for Axes

handles.frame4axes = uicontrol(gui, 'Style', 'frame', 'Position', [150120450360], ...

'HorizontalAlignment', 'center', ...

'Background', [111]);

// A place for Status Text

handles.frame4status = uicontrol(gui, 'Relief', 'solid', ...

'Style', 'frame', 'Position', [403069580], ...

'HorizontalAlignment', 'center', ...

'Background', [111]);

// Title for the place of Status Text

handles.frame4statusTitle = uicontrol(gui, 'Style', 'text', 'String', 'Status', ...

'Position', [601005020], ...

'HorizontalAlignment', 'center', ...

'Background', [111]);

// Status Text

handles.txtStatus = uicontrol(gui,'Style', 'text', 'Position', [504067560], ...

'FontSize', [16], 'FontWeight', 'bold', ...

'HorizontalAlignment', 'left', ...

'Background', [111]);

set(handles.txtStatus,"String","Welcome");

/////////////////////////////////////////////////////////////////////////////// // A place for Height Variable each second

parameter = [" ""Height"];

awalTabel1 = ["detik 1""detik 2""detik 3""detik 4""detik 5""detik 6", ...

"detik 7""detik 8""detik 9""detik 10"]'; awalTabel2 = [" "" "" "" "" "" "" "" "" "" "]'; table = [parameter; [ awalTabel1 awalTabel2 ]];

handles.tableTinggi = uicontrol(gui, 'Style', 'table', 'String', table, ...

'Position', [600163150187]);

/////////////////////////////////////////////////////////////////////////////// // What is the height now?

handles.txtHeight = uicontrol(gui,'Style', 'text', 'Position', [6004206020], ...

'FontSize', [12], 'FontWeight', 'bold', ...

'HorizontalAlignment', 'left', ...

'Background', [111]);

set(handles.txtHeight,"String","Height :");

handles.txtHeightVar = uicontrol(gui,'Style', 'text', 'Position', [6604205020], ...

'FontSize', [12], 'FontWeight', 'bold', ...

'HorizontalAlignment', 'center', ...

'Background', [111]);

handles.txtMeter = uicontrol(gui,'Style', 'text', 'Position', [7104204020], ...

'FontSize', [12], 'FontWeight', 'bold', ...

'HorizontalAlignment', 'right', ...

'Background', [111]);

set(handles.txtMeter,"String","Meter");

/////////////////////////////////////////////////////////////////////////////// // Creating an Axes

handles.axes1 = newaxes(handles.frame4axes);

// Axes1 title and axis

handles.axes1.title.text = "Height"; handles.axes1.title.font_size = 4;

handles.axes1.data_bounds = [0,0;10,150]; handles.axes1.axes_visible = "on";

// Axes1 X label

handles.axes1.x_label.text = "Time (Second)"; handles.axes1.x_label.font_size = 2;

// Axes1 Y label

handles.axes1.y_label.text = "Height (Meter)"; handles.axes1.y_label.font_size = 2;

// Initialization

globalbthpanjangtinggiGUIstatusPLOTstatusSAVEstatusFilePathk

GUIstatus = 0; PLOTstatus = 0; SAVEstatus = 0; k = 0;

panjang = 41; // terdapat 41 sampel data ketinggian

b = zeros(1,panjang); // membuat tempat 1 x 41 untuk data ketinggian

tinggi = zeros(1,10); // variabel untuk data ketinggian per detik

t = 0:0.25:10; // banyaknya waktu sampel

h = 150; // tinggi pada axis Y

FilePath = 'C:\Users\ASUS\Desktop\DATA\Scilab files\SOD files\';

/////////////////////////////////////////////////////////////////////////////// // CALLBACK FOR EACH BUTTON

/////////////////////////////////////////////////////////////////////////////// // Connect to Arduino through Radio

function connect globalradioGUIstatus

// Koneksi antara penerima dan pengirim belum terhubung (GUIstatus = 0)

if GUIstatus == 0then

radio = openserial(6, "9600,n,8,1"); sleep(2000);

writeserial(radio,"R"); sleep(1000);

set(handles.txtStatus,"String",readserial(radio)); readserial(radio);

GUIstatus = 1; else

messagebox("Laptop has connected to Arduino.", "MA Corp", "info"); end

endfunction

// Disconnect from Arduino

function disconnect globalradioGUIstatus

// Menutup koneksi jika penerima dan pengirim masih terhubung (GUIstatus = 1)

if GUIstatus == 1then closeserial(radio);

set(handles.txtStatus,"String","Disconnected."); GUIstatus = 0;

else

messagebox("Arduino is not connected.", "Error", "error"); end

endfunction

function dataPlot

globalabtzkpanjangheighttinggiradioGUIstatusPLOTstatusSAVEstatus

awalTabel2 = [" "" "" "" "" "" "" "" "" "" "]'; table = [parameter; [ awalTabel1 awalTabel2 ]];

set(handles.tableTinggi,"String",table); // Menghapus tabel

delete(handles.axes1.children); // Menghapus grafik

// Membuat tombol selain tombol "Stop Plotting" dalam keadaan OFF

set(pbConnect,'Enable','Off'); set(pbDisconnect,'Enable','Off'); set(pbPlot,'Enable','Off'); set(pbCallLoad,'Enable','Off'); set(pbCallSaveandExit,'Enable','Off');

if GUIstatus == 1then PLOTstatus = 1;

set(handles.txtStatus,"String","Processing and Plotting Data..."); for z = 1:panjang

//Terdapat 40 data sampel, sehingga untuk mengumpulkannya selama

//10 detik, 1 data sampel membutuhkan 0.25 detik

//0.250 - 0.041 - 0.005 = 0.204 = 203

writeserial(radio,"P"); // 0.001 second

sleep(203); // 0.204

a = strtod(readserial(radio)); // 0.001 second, data diubah dari

//string menjadi double

b(z) = a; // 0.001 second

plot(t(1:z),b(1:z)); // 0.041 second

// Interupsi jika tombol "Stop Plotting" ditekan (k = 1)

if k == 1then// 0.001 second

k = 0; break; end

set(handles.txtHeightVar,"String",sci2exp(a)); // 0.001 second

end

set(handles.txtStatus,"String","Done."); SAVEstatus = 1;

// Memuat data ketinggian setiap detik dalam tabel

for z = 1:10

tinggi(z) = b(z*4); end

height = tinggi';

awalTabel2 = string([height]);

table = [parameter; [ awalTabel1 awalTabel2 ]]; set(handles.tableTinggi,"String",table);

else

messagebox("Arduino is not connected.", "Warning", "passwd"); end

PLOTstatus = 0; // Tidak ada plotting yang berjalan

// Membuat tombol kembali ke keadaan ON

set(pbConnect,'Enable','On'); set(pbDisconnect,'Enable','On'); set(pbPlot,'Enable','On'); set(pbCallLoad,'Enable','On'); set(pbCallSaveandExit,'Enable','On'); endfunction

// Interrupt and stop the plot

function stop

globalkradioPLOTstatusSAVEstatus

if PLOTstatus == 1then k = 1;

else

messagebox("Nothing Happened.","MA Corp","warning"); end

endfunction

// Load and plot the saved data

function callDataLoad

globalFilePathFileNameH1FileNameH0FullPathguiLoad

guiLoad = createWindow(); guiLoad.axes_size = [22080];

guiLoad.figure_name = "Load File Name"; guiLoad.backgroundcolor = [111]; guiLoad.figure_position = [620200]; guiLoad.resize = "off";

FileNameH1 = uicontrol(guiLoad,'Style', 'edit', ...

'Position', [35812320], ...

'FontSize', [10], 'HorizontalAlignment', 'left'); set(FileNameH1,"String","H1 File Name...");

FileNameH0 = uicontrol(guiLoad,'Style', 'edit', ...

'Position', [31612320], ...

'FontSize', [10], 'HorizontalAlignment', 'left'); set(FileNameH0,"String","H0 File Name...");

pbLoad = uicontrol(guiLoad, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [101257020], 'String', 'Load', ...

'HorizontalAlignment', 'center', 'Callback', 'dataLoad'); endfunction

function dataLoad

globalSAVEstatusFilePathFileNameH1FileNameH0FullPathguiLoad

SAVEstatus = 0;

delete(handles.axes1.children);

//Memuat data b, t, dan tinggi untuk H0 dengan dari file LoadFileNameH0

LoadFileNameH0 = get(FileNameH0,"String"); FullPath = strcat([FilePath,LoadFileNameH0]);

// Memuat data b, t, dan tinggi FileName dengan path FullPath

load(FullPath,'b','t','tinggi'); H0Data = b;

H0 = tinggi';

//Memuat data b, t, dan tinggi untuk H1 dengan dari file LoadFileNameH1

LoadFileNameH1 = get(FileNameH1,"String"); FullPath = strcat([FilePath,LoadFileNameH1]);

load(FullPath,'b','t','tinggi'); H1Data = b;

H1 = tinggi';

// Memuat data dalam grafik

plot(t,H1Data,'b-',t,H0Data,'r-');

legends(['H1';'H0'],[[2;1],[5;1]],opt="ur");

// Memuat data dalam tabel

parameter = [" ""H1""H0"]; awalTabel2 = string([H1]); awalTabel3 = string([H0]);

table = [parameter; [ awalTabel1 awalTabel2 awalTabel3 ]]; set(handles.tableTinggi,"String",table);

set(handles.txtStatus,"String","Loaded."); close(guiLoad);

endfunction

// Save data and exit

function callSaveExit

globalSAVEstatusFileNameguiSave

if SAVEstatus == 1then guiSave = createWindow(); guiSave.axes_size = [22040];

guiSave.figure_name = "Save File Name"; guiSave.backgroundcolor = [111]; guiSave.figure_position = [620240]; guiSave.resize = "off";

FileName = uicontrol(guiSave,'Style', 'edit', 'Position', [31512320], ...

'FontSize', [10], 'HorizontalAlignment', 'left'); set(FileName,"String","Enter File Name...");

pbSaveandExit = uicontrol(guiSave, 'Style', 'pushbutton', 'Units', 'points', ...

'position', [101107020], 'String', 'Save', ...

'HorizontalAlignment', 'center', 'Callback', 'saveExit'); else

set(handles.txtStatus,"String","Nothing to be saved."); sleep(1000);

set(handles.txtStatus,"String","Closing GUI..."); sleep(1000);

close(gui); end

endfunction function saveExit

globalbttinggiFilePathFileNameFullPathguiSave

// Menyimpan variabel b, t, dan tinggi ke FullPath

// Disimpan dengan nama SaveFileName

SaveFileName = get(FileName,"String"); FullPath = strcat([FilePath,SaveFileName]); save(FullPath,'b','t','tinggi');

close(guiSave);

set(handles.txtStatus,"String","Saving..."); sleep(1000);

close(gui); endfunction

Dokumen terkait