BAB III PERANCANGAN & PEMBUATAN ALAT 3.1. Perancangan Sistem Monitoring Simulasi Otomatisasi Mass Rapid Transit (MRT) dengan menggunakan tombol manual. Dalam bab ini akan dibahas pembuatan dan perancangan MRT. Ada pun system pergerakan MRT ini dibuat dan dirancang dengan blok diagram. 3.1.1.Blok Diagram Rangkaian Untuk merealisasikan pergerakan MRT, maka secara sistem keseluruhan rangkaian simulasi MRT berbasis arduino yang dikontrol oleh sebuah Arduino Leonardo seperti pada Gambar 3.1. Xbee Kontrol Remote
Led
Motor Driver/Motor Shield Berjalan
Arduino Leonardo
I2C LCD 16 x 2 Tampilan
Servo
Lampu
MRT
Tombol
Kartu RFID & NFC
MP3 & Speaker
Kontrol Manual
Berhenti di stasiun
Suara
Tutup/Buka Pintu
Gambar 3.1. Diagram Blok MRT 79
http://digilib.mercubuana.ac.id/
Penjelasan Diagram Blok : Terdapat servo, I2C LCD 16 x 2, motor driver, Xbee, led, speaker (sebagai output) yang diprogram oleh sebuah mikrokontroler yaitu Arduino Leonardo. Dan terdapat MP3, kartu RFID dan tombol (sebagai input) yang juga diprogram oleh mikrokontroler Arduino Leonardo. Untuk menjalankan MRT tersebut
dengan
menggunakan
tombol,
setelah
Arduino
Leonardo
dihubungkan dengan baterai lipopolymer 7.4 Volt. Fungsi dari diagram blok di atas adalah : 1.Motor Driver : Motor drivenr yang posisinya
berada pada roda berfungsi untuk
berjalan 2. LCD 16 x 2 I2C : Sebagai tampilan dari tulisan 3. Servo : Untuk menutup dan membuka pintu 4. MP3 player : Player mampu memainkan suara yang ada pada kartu SD yang ada pada bagian bawah MP3 player 5. Speaker : Memperbesar suara yang dikeluarkan oleh MP3 player
80
http://digilib.mercubuana.ac.id/
6. RFID : Menyimpan nomor seri yang mengidentifikasi nama tempat pada microchip yang terpasang pada antena (chip dan antenna bersama-sama disebut transponder RFID atau tag RFID). Antena memungkinkan chip untuk mengirimkan informasi identifikasi untuk pembaca (NFC) 7. NFC : NFC sebagai pembaca mengubah gelombang radio yang dipantulkan kembali dari tag RFID menjadi informasi digital yang kemudian diteruskan ke mikrokontroler yang akan melakukan proses selanjutanya. 8. Tombol berwarna kuning: Sebagai kontrol manual dan memberikan input untuk Mikrokontroler 9. Lampu LED : Warna led hijau sebagai indikator pintu terbuka dan warna led merah sebagai indikator pintu tertutup 10. Xbee : Sebagai kontrol remote untuk melakukan komunikasi dengan Xbee yang mempunyai koneksi dengan komputer yang berfungsi sebagai kontrol pengganti fungsi tombol berwarna kuning 11. Arduino Leonardo : Berfungsi sebagai system kontrol dari semua komponen yang ada : motor driver L298, LCD I2C, Servo, MP3 Player, Speaker, NFC, RFID, tombol berwarna kuning, lampu led hijau dan merah, Xbee. 81
http://digilib.mercubuana.ac.id/
3.1.2. Skema Diagram MRT
Gambar 3.2 Skema Diagram MRT
82
http://digilib.mercubuana.ac.id/
Tombol on /off
Gambar 3.3. Hubungan baterai dengan tombol on/off
Pada skema digambarkan : 1.Xbee : Terhubung dengan kaki Rx dan Tx pada board Arduino Leonardo. Xbee ini akan menghubungkan komunikasi dari MRT dengan Xbee yang terhubung dengan komputer : 2. RFID/NFC : Terhubung
dengan kaki 10, 11, 12 dan 13 dari board Arduino
Leonardo. Data yang ada pada RFID akan dibaca oleh NFC 3. Motor Drive ; 83
http://digilib.mercubuana.ac.id/
Terhubung
dendarigan kaki 4, 5, 6 dan 7 dari board Arduino
Leonardo. 4. Servo : Terhubung dengan kaki 2 dan 3 dari board Arduino Leonardo. Servo berfungsi untuk membuka dan menutup pintu. Servo ditempelkan pada pintu MRT. 5. MP3 player : Terhubung dengan kaki Rx 0 dan Tx 1. Dibagian bawah MP3 terdapat SD card untuk menyimpan suara. SD card dapat dicabut dan dihubungkan ke komputer untuk mendapatkan file suara/sound. Pengisian suara (rekaman) dapat dilakukan dengan menggunakan handphone android yang mempunyai program Hi-Q MP3. 6. Speaker : Untuk memperbesar suara yang dihubungkan ke MP3 player. Sehingga memperbesar suara yang tersimpan di SD card. 7. LCD 16 x 2 I2C : Terhubung dengan kaki A4 dan A5 pada board Arduino Leonardo. 8. Tombol kuning : Terhubung dengan kaki A3 dari board Arduino Leonardo. 9. Lampu led hijau : Terhubung dengan kaki A1 dari board Arduino Leonardo. 10. Lampu led merah : Terhubung dengan kaki A0 dari board Arduino Leonardo
http://digilib.mercubuana.ac.id/
84
11. Tombol on/off : Terhubung dengan power supply baterai Lipoplymer 7,4 V 12. I/O Expansion Shield V7: Tidak terlihat pada diagram karena merupakan shield yang dibutuhkan untuk soket Xbee. I/O expansion shield ini ditumpuk
pada Arduino
Leonardo. 13. MiniQ 2WD plus : Tidak terlihat pada diagram. Mempunyai 2 roda yang dijalankan oleh motor driver L298. Sehingga MRT dapat berjalan 14. 2WD MiniQ (rangka) : Tidak terlihat pada diagram. Berfungsi sebagai tempat untuk menumpuk board Arduino Leonardo. 13. Untuk melindungi komponen MRT : Dibuat sederhana tampilan body MRT seperti kotak terbuat dari foamboard.
85
http://digilib.mercubuana.ac.id/
Gambar 3.4. Prototype MRT
14. Track MRT Agar MRT melalui lintasan yang diharapkan maka dibuatkanlah track berbentuk elips yang terbuat dari kayu dengan ukuran : panjang 2,5 m x lebar 1 m. Dan pada bagian kiri dan kanannya diberi pembatas, sehingga membuat MRT berjalan sesuai lintasan pada track.
86
http://digilib.mercubuana.ac.id/
Gambar 3.5. Prototype Track MRT
15. Ring Tamiya : Agar MRT pada saat berjalan pada track khususnya pada saat berbelok dapat berjalan dengan mulus, maka dibagian kiri dan kanan MRT baik di bagian depan dan bagian belakang diberi ring tamiya.
87
http://digilib.mercubuana.ac.id/
3.1.3. Flow Chart
Mulai
Hidupkan tombol on/off
Ya
LCD : Hello MRT Pintu Terbuka
Lampu merah menyala
Tidak Ya Tombol Kuning
“Pintu akan ditutup” “Stasiun selanjutnya, stasiun B”
on
Pintu Tertutup MRT berjalan menuju stasiun B Tidak
MRT melalui
Ya
RFID B
“Anda telah sampai di stasiun B” “Pintu akan dibuka” Lampu hijau menyala Pintu terbuka “Pintu akan ditutup” Lampu merah menyala “Stasiun selanjutnya, stasiun C” MRT berjalan menuju stasiun B
88
A http://digilib.mercubuana.ac.id/
B
B
A Tidak
“Anda telah sampai di stasiun C” Ya
MRT melalui
“Pintu akan dibuka” Lampu hijau menyala
RFID C
Pintu terbuka “Pintu akan ditutup” Lampu merah menyala
Tidak
“Stasiun selanjutnya, stasiun D” Ya MRT melalui RFID D
“Anda telah sampai di stasiun D” “Pintu akan dibuka” Lampu hijau menyala Pintu terbuka “Pintu akan ditutup”
Tidak
Lampu merah menyala “Stasiun selanjutnya, stasiun E”
MRT melalui RFID E
Ya
“Anda telah sampai di stasiun E” “Pintu akan dibuka” Lampu hijau menyala Pintu terbuka “Pintu akan ditutuip” Lampu merah menyala “Stasiun selanjutnya, stasiun E”
A
89
http://digilib.mercubuana.ac.id/
B
A
“Anda telah sampai di stasiun F” Tidak
“Pintu akan dibuka” Ya
Lampu hijau menyala Pintu terbuka
MRT melalui
“Pintu akan ditutup”
RFID F
Lampu merah menyala “Stasiun selanjutnya, stasiun A”
Tidak
Ya MRT melalui
“Anda telah sampai di stasiun A” “Pintu akan dibuka Lampu hijau menyala
RFID A
Pintu terbuka “Pintu akan ditutup” Lampu merah menyala Stasiun selanjutnya, stasiun B” Stop Stop
Gambar 3.6. Flow Chart MRT
90
http://digilib.mercubuana.ac.id/
B
3.1.4. Program Arduino : // Encoder const byte encoder0pinA = A2;//A pin -> the interrupt pin 0 //const byte encoder0pinB = 2;//B pin -> the digital pin 2 byte encoder0PinALast; int duration;//the number of the pulses boolean Direction;//the rotation direction int kecepatan = 0; int counterJarak = 0;
// 05. Tambahan sensor line follower #define LFkiri A4 #define LFkanan A5 #define PUTIH 1 #define HITAM 0
// Data Kartu String listId[6] = {"D0 24 66 34", "F0 38 ED 34", "C0 39 ED 34", "00 3A ED 34", "50 1F 77 35", "40 3A 66 34"};
http://digilib.mercubuana.ac.id/
91
char stationName[6] = {'A','B','C','D','E','F'};
// Tombol #define pushButton A3 #define ditekan LOW
// LED #define ledRed A0 #define ledGreen A1
// SERVO #include <Servo.h>
Servo myservo1; // create servo object to control a servo // a maximum of eight servo objects can be created //Servo myservo2; // create servo object to control a servo // a maximum of eight servo objects can be created
// LCD #include <Wire.h> #include
http://digilib.mercubuana.ac.id/
92
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// MP3 player I2C // librarynya sdh ada di lcd, pakai I2C, alamatnya yang beda #define ArduinoPlayer_address 0x35
//ArduinoPlayer I2C address
0x35 (default)
void TwiSend(const char *cmd) //I2C Command { char len = 0; len = strlen(cmd); //Calculate the length of the command Wire.beginTransmission(ArduinoPlayer_address); // ArduinoPlayer I2C address while(len--) { Wire.write(*(cmd++)); } Wire.endTransmission();
// stop transmitting
}
93
http://digilib.mercubuana.ac.id/
// NFC
#include <SPI.h> #include #include "PN532.h" #include
PN532_SPI pn532spi(SPI, 10); NfcAdapter nfc = NfcAdapter(pn532spi);
// Motor shield ini menggunakan pin 4,5,6,7 untuk mengontrol 2 motor // Sambungkan motor DC ke M1+, M1-, M2+, M2// Upload sketch ke Arduino // Via serial monitor, ketikkan "a", "s", "d", "w", dan "x" // untuk mengontrol kedua motor // Last Modified :
#define motorKiri_Dir 4
// arah putar (Motor 2 / Kiri)
#define motorKiri_Vel 5
// kontrol kecepatan (Motor 2 / Kiri)
#define motorKanan_Vel 6
// kontrol kecepatan (Motor 1 / Kanan)
#define motorKanan_Dir 7
// arah putar (Motor 1 / Kanan)
http://digilib.mercubuana.ac.id/
94
#define jalan true #define diam false
void motorKanan(int pwm, boolean reverse) { analogWrite(motorKanan_Vel, map(pwm,0,100,0,255)); if (reverse) digitalWrite(motorKanan_Dir, HIGH); else digitalWrite(motorKanan_Dir, LOW); }
void motorKiri(int pwm, boolean reverse) { analogWrite(motorKiri_Vel, map(pwm,0,100,0,255)); if (reverse) digitalWrite(motorKiri_Dir, HIGH); else digitalWrite(motorKiri_Dir, LOW); }
int x,delay_en; char val;
void setup() { Serial1.begin(9600); Serial.begin(9600); 95
http://digilib.mercubuana.ac.id/
// EncoderInit();//Initialize the module
// nanti ini harus dihilangkan //
while (!Serial) {
//
;
// }
lcd.init();
// initialize the lcd
pinMode(pushButton, INPUT);
pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT);
pinMode(LFkiri, INPUT); pinMode(LFkanan, INPUT);
Wire.begin(); delay(2000); TwiSend("\\:v 255\r\n");
// set the volume, from 0 (minimum)-255
(maximum) 96
http://digilib.mercubuana.ac.id/
int i; for(i=4;i<=7;i++)
//set pin 4,5,6,7 to output mode
pinMode(i, OUTPUT);
// Print a message to the LCD. lcd.backlight(); lcd.print("Hello, MRT");
nfc.begin();
myservo1.attach(9); myservo1.write(0); }
// Local Variable long lastPlayed = 0; int durasiMP3 = 5000; boolean mp3Played = false; boolean awal = true; boolean engineOn = false; int stationNum = 0; boolean ayoMaju = false;
http://digilib.mercubuana.ac.id/
97
void loop() { // cek data Xbee if (Serial1.available()) { // baca datanya char dataMasuk = Serial1.read(); if (dataMasuk == 'm') { ayoMaju = true; //engineOn = false;
digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); } else if (dataMasuk == 's') { stop(); ayoMaju = false; engineOn = false; digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); } } // (JIKA POSISI MAJU : optional. Lewat untuk testing) // Baca ID RFID
http://digilib.mercubuana.ac.id/
98
// Jika terdetek ID dalam list : //
1. maka berhenti
//
2. Bunyikan MP3 berhenti di stasiun
//
3. Buka pintu
//
4. Lampu Merah OFF, Green ON
//
5. Kirim sinyal ke Xbee
// Jalankan lagi MRT // - Ketika pushbutton di tekan // - ketika delay > durasiTunggu (setelah berhenti) // - Atau ada perintah dari Xbee //
1. Bunyikan MP3 pintu ditutup
//
2. Tutup Pintu
//
3. Lampu Merah ON, Green OFF
// Bunyikan MP3 (nantinya berdasar jarak saja)
if (mp3Played) { if ((millis() - lastPlayed) > durasiMP3) { Serial.println("mp3 off"); TwiSend("\\:p\r\n"); mp3Played = false; } } 99
http://digilib.mercubuana.ac.id/
if (engineOn) { //followLine();
if (nfc.tagPresent()) { NfcTag tag = nfc.read(); String idKey = tag.getUidString(); Serial.println(idKey);
boolean stationOK = false; // Cek di daftar for (int i=0; i<6; i++) { if (idKey == listId[i]) { Serial.print("Ini berhenti di stasiun ke-"); stationNum = i; Serial.println(i+1); stationOK = true; break; }
}
if (stationOK) { Serial.println("mp3 play");
http://digilib.mercubuana.ac.id/
100
TwiSend("\\:n\r\n");
//
3. Buka pintu
lcd.clear(); lcd.setCursor(0,0); lcd.print("
MRT");
lcd.setCursor(0,1); lcd.print("Stop STATION : "); lcd.print(stationName[stationNum]);
// kirim via xbee Serial1.print(stationName[stationNum]); delay(100);
//
1. maka berhenti
// jangan langsung berhenti, supaya kartunya tidak terbaca ketika nanti maju lagi delay(500); stop();
//delay(5000); delay(durasiMP3);
http://digilib.mercubuana.ac.id/
101
Serial.println("mp3 stop"); TwiSend("\\:p\r\n"); delay(2500);
//
4. Lampu Merah OFF, Green ON Serial.println("Lampu : HIJAU"); digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH);
lcd.clear(); lcd.setCursor(0,0); lcd.print("
MRT");
lcd.setCursor(0,1); lcd.print("Pintu Dibuka");
//
2. Bunyikan MP3 berhenti di stasiun Serial.println("mp3 play"); TwiSend("\\:n\r\n");
//
3. Buka pintu //delay(5000); delay(durasiMP3); Serial.println("mp3 stop");
http://digilib.mercubuana.ac.id/
102
TwiSend("\\:p\r\n"); delay(2500);
// Tutup Pintu Serial.println("Pintu : OPEN"); bukaPintu();
//
5. Kirim sinyal ke Xbee Serial.println("Nunggu 10 detik"); delay(10000);
ayoMaju = true; engineOn = false;
}
} }
int tombol = digitalRead(pushButton); delay(50); //Serial.println(tombol); if ((tombol == ditekan) || (ayoMaju) ) {
http://digilib.mercubuana.ac.id/
103
lcd.clear(); lcd.setCursor(0,0); lcd.print("
MRT");
lcd.setCursor(0,1); lcd.print("Pintu Ditutup");
// Lampu Merah Serial.println("Lampu : MERAH"); digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW);
// Bunyikan MP3 pintu akan ditutup Serial.println("mp3 play"); if (awal) { TwiSend("\\:s\r\n"); awal = false; } else TwiSend("\\:n\r\n");
// Delay //delay(5000); delay(durasiMP3);
http://digilib.mercubuana.ac.id/
104
Serial.println("mp3 stop"); TwiSend("\\:p\r\n"); delay(2500);
// Tutup Pintu Serial.println("Pintu : CLOSED"); tutupPintu();
// Jalankan Motor maju(); //followLine(); engineOn = true;
lcd.clear(); lcd.setCursor(0,0); lcd.print("
MRT");
lcd.setCursor(0,1); lcd.print("Next STATION : "); if (stationNum == 5) stationNum = -1; lcd.print(stationName[stationNum+1]);
// kirim via xbee Serial1.print(stationNum+1);
http://digilib.mercubuana.ac.id/
105
delay(100);
Serial.println("mp3 play"); TwiSend("\\:n\r\n"); lastPlayed = millis(); mp3Played = true;
ayoMaju = false;
} //else tutupPintu();
//delay(300); }
void stop() { motorKanan(0,false); motorKiri(0,false);
}
// Ini sekarang bergantung dengan sensor // gak selalu dua-dua motornya maju
http://digilib.mercubuana.ac.id/
106
void followLine() { // KIRI KANAN ACTION // Putih Putih LURUS // Putih Hitam BELOK KANAN // Hitam Putih BELOK KIRI // Hitam Hitam --
byte sensorKiri = digitalRead(LFkiri); byte sensorKanan = digitalRead(LFkanan);
if ( (sensorKiri == PUTIH) && (sensorKanan == PUTIH) ) { maju(); } else if ( (sensorKiri == PUTIH) && (sensorKanan == HITAM) ) { belokKanan(); } else if ( (sensorKiri == HITAM) && (sensorKanan == PUTIH) ) { belokKiri(); } else { stop(); }
107
http://digilib.mercubuana.ac.id/
}
void maju() { motorKanan(20,true); motorKiri(20,true); }
void belokKanan() { motorKanan(0,true); motorKiri(20,true); } void belokKiri() { motorKanan(20,true); motorKiri(0,true); }
void tutupPintu() { for (int i=0; i<=90; i++) { myservo1.write(90); delay(30); } // myservo2.write(0); }
108
http://digilib.mercubuana.ac.id/
void bukaPintu() { for (int i=90; i>=0; i--) { myservo1.write(0); delay(30); } // myservo2.write(90); }
void cekJarak() { int Lstate = digitalRead(encoder0pinA); if ((encoder0PinALast == LOW) && Lstate == HIGH) { Serial.println("ini dia"); }
encoder0PinALast = Lstate; counterJarak++; }
109
http://digilib.mercubuana.ac.id/
3.2. Perancangan Sistem Monitoring Simulasi Otomatisasi Mass Rapid Transit (MRT) dengan menggunakan PC dengan software Visual Basic dan Flash.
3.2.1. Mengapa Arduino Pada penelitian ini digunakan Arduino Uno R3 sebagai mikroprosessor. Dipilihnya Arduino Uno R3 pun tak lepas dari beberapa pertimbangan, yaitu : Ringkas Di dalam board Arduino Uno R3 sudah terdiri dari mikroprosessor utama ATMEGA8,
mikroprosessor
pengisi
program
ATMEGA8U2,
USB-TTL
converter, Interkoneksi yang mudah dengan Header, Pin Assignment yang mudah untuk
Input,
Output
maupun
Softserial,
Voltage
Regulator
protector,
Analog/Digital Converter, Pulse Width Modulation (PWM), hardware Serial yang terkoneksi dengan port USB dan tombol reset. Dukungan Shield Tambahan yang kompatibel. Terdapat berbagai modul dan shield tambahan yang dapat digunakan untuk membangun suatu proyek dari berbagai vendor, misalnya digunakannya GPRS Shield V2.0 dari Seedstudio pada proyek ini. Selain itu pula terdapat shield-shield yang lain seperti Ethernet Shield, Wifi Shield, RF Shield, Relay Shield, L298 Motor Shield, MP3 player shield, Grove base shield, SD card shield, dan masih banyak lainnya.
110
http://digilib.mercubuana.ac.id/
Dukungan Software Board Arduino didukung oleh software yang dikembangkan oleh Arduino sendiri, yaitu Sketch. Sketch ini dapat dijalankan dengan system operasi Linux, Windows maupun Machintos. Pada saat penelitian, software Arduino Sketch sudah sampai pada versi 1.5.8 (beta) dan dapat diperoleh secara gratis. Dukungan tutorial Banyak sumber turorial yang dapat dijadikan referensi di internet. Sayang sekali untuk Indonesia belum banyak memiliki buku-buku yang berisi program-program Arduino.
Terpercaya Arduino merupakan merk dagang yang terpercaya.
111
http://digilib.mercubuana.ac.id/
3.2.2. Blok Diagram
Visual Basic
Adobe Flash
Arduino Uno
Xbee Shield
IO Expansion Shield
Xbee Shield pada MRT modul
Arduino Leonardo
Gambar 3.7. Blok Diagram Alat monitoring Simulasi MRT Pada Blok diagram Gambar 3.7. diperlihatkan bahwa Visual Basic mengirim data ke Adobe Flash kemudian meneruskannya ke Arduino Uno Board dan menunggu komunikasi dari Xbee Shield yang tersambung ke Arduino Board melalui perantaraan Expansion Board. Setelah ada komunikasi antara Xbee Shield antara Xbee Shield yang ada pada modul coordinator dan Xbee Shield yang ada pada modul MRT (End Device), Visual Basic menerima data dari Arduino Leonardo tentang kondisi yang diinginkan dari modul MRT (End Device). Pada saat ini terjadi komunikasi dua arah antara modul MRT (End Device) dengan software Visual Basic sehingga Visual Basic dapat menampilkan data dan mengendalikan kondisi yang diinginkan
dari
modul
MRT
(End
Device). 112
http://digilib.mercubuana.ac.id/
3.2.3. Skema Rangkaian
Gambar 3.8. Skema Rangkaian Alat monitoring Simulasi MRT
113
http://digilib.mercubuana.ac.id/
Pada Gambar 3.8. Skema Rangkaian adalah skema koneksi untuk sistem ini. Dapat dijelaskan dengan pembagian sebagai berikut:
Arduino Uno Arduino Uno R3 ini adalah PCB yang dibeli dalam keadaan jadi. Pada Arduino Uno R3 ini terdapat Mikrokontroller yang mengendalikan proses monitoring dan kendali.
PC Personal Computer dapat berupa laptop ataupun desktop yang mempunyai program Visual Basic dan Flash Player. Port yang digunakan adalah port USB.
Kabel USB Kabel USB digunakan untuk menghubungkan PC dan perangkat coordinator.
IO Expansion Shield IO Expansion Shield berfungsi menghubungkan Arduino Uno dengan Xbee Shield
Xbee Shield Xbee Shield sebagai sarana komunikasi WPAN antara PC dengan modul MRT (End Device). 114
http://digilib.mercubuana.ac.id/
3.2.4. Cara Kerja Sistem Monitoring MRT
Mengaktifkan Alat Monitoring Pertama kali kita menghidupkan PC kemudian kita mennyambungkan perangkat coordinator ke port USB. Setelah alat terpasang barulah kita mengaktifkan program Visual Basic. Setelah Program aktif lalu tekan F5 untuk menjalankan program. Apabila tampilan Flash muncul artinya program dalam keadaan stand by menunggu koneksi dari modul MRT (End Device).
Modul MRT (End Device) dihidupkan Pada saat modul MRT (End Device) dihidupkan maka Xbee Shield pada perangkat coordinator akan terhubung dengan Xbee Shield yang ada pada modul MRT (End Device).
Modul MRT (End Device) berjalan Selama modul MRT (End Device) berjalan komunikasi antar Xbee Shield terus berlangsung sehingga PC dapat mengetahui dimana lokasi MRT dan kecepatannya berdasarkan data yang dikirimkan melalui Xbee Shield yang ada pada modul MRT (End Device).
Tombol Tampilan PC Diaktifkan Pada saat tombol pada tampilan PC diaktifkan maka Xbee Shield yang ada pada perangkat coordinator akan mengirim perintah ke Xbee Shield pada modul MRT (End Device) sehingga modul MRT (End Device) dikendalikan secara remote melalui PC.
115
http://digilib.mercubuana.ac.id/
3.2.5 .Flow Chart Program
Gambar 3.9. Flow Chart program
116
http://digilib.mercubuana.ac.id/
3.2.6. Script 3.2.6.1.Skrip Arduino
Gambar 3.10 script Arduino
MRT Control #include "SoftwareSerial.h" 117
http://digilib.mercubuana.ac.id/
SoftwareSerial Serial1(2,3); void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { if (Serial.available()) { char msg = Serial.read(); Serial1.print(msg); delay(50); } if (Serial1.available()) { char msg = Serial1.read(); Serial.print(msg); delay(50); } }
118
http://digilib.mercubuana.ac.id/
3.2.6.2.Skrip Visual Basic
Gambar 3.11. Tampilan Visual Basic Private WithEvents ShockwaveFlash1 As ShockwaveFlash Private Sub Command1_Click() MSComm1.PortOpen = False End End Sub Private Sub Form_Load() Form1.ScaleMode = 2 Set ShockwaveFlash1 = Form1.Controls.Add("ShockwaveFlash.ShockwaveFlash", "ShockwaveFlash1") ShockwaveFlash1.Movie = "C:\Users\Siang Widjaja\Desktop\Software TA\UPDATE MRT\MRT_VB.swf" ShockwaveFlash1.AllowFullScreen = True ShockwaveFlash1.Visible = True 'ShockwaveFlash1.Left = 0 ShockwaveFlash1.Top = 0 119
http://digilib.mercubuana.ac.id/
ShockwaveFlash1.Width = 1024 ShockwaveFlash1.Height = 580 ShockwaveFlash1.Play MSComm1.RThreshold = 1 MSComm1.InputLen = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.CommPort = 2 MSComm1.PortOpen = True MSComm1.DTREnable = False End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub Private Sub MSComm1_OnComm() ' If MSComm1.CommEvent = comEvReceive Then Label2.Caption = MSComm1.Input Select Case (Label2.Caption) Case "0" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun A" Case "A" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun A" Case "1" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun B" Case "B" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun B" Case "2" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun C" Case "C" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun C" Case "3" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun D" Case "D" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun D" Case "4" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun E" Case "E" 120
http://digilib.mercubuana.ac.id/
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun E" Case "5" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun F" Case "F" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun F" Case "O" ShockwaveFlash1.SetVariable "speedMRT", "0" Case "S" ShockwaveFlash1.SetVariable "speedMRT", "100" Case "M" ShockwaveFlash1.SetVariable "speedMRT", "150" Case "H" ShockwaveFlash1.SetVariable "speedMRT", "200" End Select ' End If End Sub Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String) label1.Caption = args If label1.Caption = "maju" Then MSComm1.Output = "m" Else If label1.Caption = "stop" Then MSComm1.Output = "s" End If End If End Sub
Private Sub Text1_Change() Label2.Caption = Text1.Text Select Case (Label2.Caption) Case "0" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun A" Case "A" 121
http://digilib.mercubuana.ac.id/
ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun A" Case "1" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun B" Case "B" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun B" Case "2" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun C" Case "C" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun C" Case "3" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun D" Case "D" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun D" Case "4" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun E" Case "E" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun E" Case "5" ShockwaveFlash1.SetVariable "statusMRT", "Menuju Stasiun F" Case "F" ShockwaveFlash1.SetVariable "statusMRT", "Berhenti di Stasiun F" Case "O" ShockwaveFlash1.SetVariable "speedMRT", "0" Case "S" ShockwaveFlash1.SetVariable "speedMRT", "100" Case "M" ShockwaveFlash1.SetVariable "speedMRT", "150" Case "H" ShockwaveFlash1.SetVariable "speedMRT", "200" End Select
End Sub
122
http://digilib.mercubuana.ac.id/
3.2.7.Tampilan Monitor
Gambar 3.12. Tampilan Monitor Dapat kita lihat disini tampilan yang ada di monitor. Fungsi monitor terdiri dari: Lokasi MRT Status MRT Kecepatan MRT Fungsi dari kendali terdiri dari: Maju Stop Exit
123
http://digilib.mercubuana.ac.id/