IMPLEMENTASI JARINGAN NIRKABEL XBEE PRO S2C DAN ESP8266 UNTUK PEMANTAUAN LOKASI PARKIR
1Morlan Pardede 2 Elferida Hutajulu 3 Regina Sirait
1,2,3
Jurusan Teknik Elektro, Politeknik Negeri Medan, Medan,Indonesia
E-mail : [email protected], [email protected], [email protected]
Abstract
Due to the lack of information on the location of empty parking slots and the difficulty of users seeing empty parking slots in large parking locations, users need a relatively long time to find an empty parking slot. This study describes how to inform the location of empty parking slots and the number of parking slots available in a parking zone to parking managers and users with the XBee Pro S2C wireless networks. In this system the parking location is divided into 3 (three) zones and each parking zone is equipped with a sensor node consisting of Arduino Mega 2560, ultrasonic sensor HC-SR04, XBee ProS2C and ESP8266 . Sensor nodes for each zone detect empty parking slots, calculate the number of vehicles and send parking zone information to the monitoring center via a wireless network so that parking attendants can see parking information from each zone on the monitoring center computer.
Parking information is also sent by the sink node to the webserver using ESP8266 and the ThingSpeak.com webserver so users can access parking information via the internet. By implementing Zigbee XBee Pro S2C network firmware can expand parking spot monitoring.
Keywords : parking Slot, XBeeProS2C, Arduino, ESP8266, Wireless Network
Abstrak
Akibat tidak adanya informasi lokasi slot parkir kosong dan sulitnya pengguna melihat slot parkir pada lokasi parkir yang luas membuat pengguna memerlukan waktu yang relatip lama untuk menemukan tempat parkir. Penelitian ini memaparkan bagaimana menginformasikan lokasi slot parkir kosong dan jumlah slot parkir yang tersedia pada suatu zona parkir kepada pengelola dan pengguna parkir dengan jaringan nirkabel XBee Pro S2C dan ESP8266. Pada sistem ini lokasi parkir dibagi atas 3(tiga) zona dan setiap zona parkir dilengkapi node sensor yang terdiri dari Arduino mega 2560, sensor ultrasonic HC- SR04, XBee ProS2C. Node sensor setiap zona mendeteksi slot parkir yang kosong, menghitung jumlah kenderaan dan mengirim informasi zona parkir ke pusat pemantauan melalui jaringan nirkabel sehingga petugas parkir dapat melihat informasi parkir dari setiap zona pada komputer pusat pemantauan.
Informasi parkir juga dikirim node sink ke web server dengan menggunakan ESP8266 dan webserver ThingSpeak.com sehingga pengguna dapat mengakses informasi parkir melalui internet. Dengan menerapkan firmware Zigbee jaringan XBee Pro S2C dapat memperluas pemantauan tempat parkir.
Kata Kunci : Slot parkir, XBeeProS2C, Arduino, ESP8266, Jaringan Nirkabel
1. Pendahuluan
Pada umumnya pengelola parkir tidak memberikan informasi lokasi slot parkir yang kosong pada pengguna dan pada beberapa tempat parkir, pengelola parkir hanya memberikan informasi jumlah parkir yang tersedia dan selanjutnya pengguna mencari lokasi slot parkir yang kosong. Pada lokasi parkir yang luas seperti pada pusat perbelanjaan pada umumnya dipenuhi banyak kenderaan yang menghalangi pandangan ke slot parkir yang kosong. Akibat tidak tersedianya informasi parkir dan keterbatasan pengendara melihat slot parkir yang kosong mengakibatkan para pengendara memerlukan waktu yang relatip lama untuk menemukan tempat parkir.
dengan mengukur selisih waktu mengirim sinyal frekuensi 40kHz dan menerima sinyal pantul dari objek, dimana jarak dalam cm adalah lama waktu dibagi dengan 58 cm[1]. Dengan kemampuan mengukur jarak hingga 4m maka sensor HC-SR04 dapat digunakan mendeteksi ada tidaknya kenderaan pada slot parkir[2], dimana jarak terukur saat kenderaan di slot parkir akan lebih kecil dibanding saat slot kosong.
Untuk mempermudah pemantauan diperlukan jaringan komunikasi nirkabel. XBee dapat digunakan untuk jaringan sensor nirkabel untuk memonitor ruangan[3]. Sesuai dengan lembaran data XBee Pro S2C dapat mengirimkan data sejauh 90m untuk indoor dan 3200m untuk out door [4]. Dengan menggunakan ESP 8266
p-ISSN 2088-3943
ThingSpeak informasi sensor dapat diakses pengguna melalui jaringan internet[5]. Pada penelitian ini dirancang dan dibuat sebuah jaringan sensor nirkabel menggunakan XBee Pro S2C untuk pemantauan lokasi parkir. Setiap zona parkir dilengkapi sebuah node sensor yang terdiri dari Arduino Mega, rangkaian pendeteksi kenderaan dan modul XBee Pro S2C. Setiap node sensor mengirimkan Informasi slot parkir dan banyak kenderaan pada zona parkir ke node sink melalui jaringan nirkabel XBee Pro S2C.
Node sink terdiri dari Arduino Mega dan XBee Pro S2C. Informasi parkir yang diterima node sink diproses dan diberikan ke komputer pusat pemantau dan ke modul ESP 8266 untuk dikirim ke jaringan internet (Channel ThingSpeak).
Setelah dilakukan pengujian didapat bahwa kondisi parkir dari 4(empat) zona parkir dapat ditampilkan pada komputer pusat pemantauan dan pada komputer/ponsel pengguna dengan membuka Channel ThinkSpeak. Dengan menerapkan firmware Zigbee pada XBee Pro S2C membuat setiap XBeeProS2C pada jaringan dapat meneruskan informasi dari zona parkir yang diterimanya ke node sink secara langsung maupun melalui node sensor lainnya sehingga informasi dari node yang terhalang dapat diteruskan ke node sink. Dengan demikian jaringan XBee dapat memperluas pemantauan lokasi parkir.
2. Metode
Pada penelitian ini dirancang sebuah sistem monitoring parkir dengan diagram blok seperti gambar 1.
a. Rangkian Node Sensor.
Setiap zona parkir dilengkapi sebuah node sensor yang terdiri dari Arduino Mega, rangkaian pendeteksi kenderaan dan modul XBee Pro S2C.
Setiap node sensor mengirimkan Informasi slot parkir dan banyak kenderaan pada zona parkir ke node sink melalui jaringan nirkabel XBee Pro S2C. Node sink terdiri dari Arduino Mega dan XBee Pro S2C. Informasi parkir yang diterima node sink diproses dan diberikan ke komputer pusat pemantau dan ke modul ESP 8266 untuk dikirim ke jaringan internet.
Parkir Zona A
Parkir Zona B
Parkir Zona C
ESP826 6
WiFi Router Cloud Server
Ponsel Node B:
Sensor dan Arduino
Node C:
Sensor dan Arduino
Node Sink Komputer:
Pusat Pemantauan
Node A:
Sensor dan Arduino
Gambar 1. Diagram Blok Pemantauan Parkir Setiap zona parkir (node sensor) terdiri dari empat slot parkir, sensor kenderaan masuk dan keluar. Sensor slot parkir menggunakan sensor ultrasonik yang dipasang di atas slot parkir sejauh 300cm dari lantai. Dengan menganggap kenderaan yang paling pendek setinggi 100cm dan paling tinggi 250cm maka jika jarak terukur lebih kecil dari 200 cm dan lebih besar dari 50 cm berarti ada kenderaan pada slot parkir tersebut.
Sensor Slot - 4 A
Arduino Mega 2560
18 19 Sensor
Slot - 1 A
Sensor Slot - 2 A
Sensor Slot - 3 A
+ 3 V 3 TX 1
RX 1 +5V
Trig Echo
Trig Echo
Trig Echo
Trig Echo
+5V
+5V
+5V 29 2
27 28
26 3
32 Lampu Indikator Zona A
33 Lampu Indikator Slot 1A
34
35
DI DO
XBee PRO - S 2 C TX
RX
XBee USB Adaptor Lampu Indikator Slot 2A
Lampu Indikator Slot 3A
Lampu Indikator Slot 4A 36
24 25 30 31 Pendeteksi Kenderaan Masuk dan Keluar Zona A
Gambar 2. Rangkaian Node Sensor
Sensor kenderaan masuk dan sensor kenderaan keluar terdiri dari dua sensor ultrasonik dimana sensor kenderaan masuk dipasang di atas pintu masuk zona parkir dan sensor kenderaan keluar dipasang di atas pintu keluar zona. Adapun urutan keluaran sensor pada saat kenderaan masuk ditunjukkan pada tabel 1.
(a)
+5V Trig Echo Trig+5V
Echo Sensor
Masuk 1A
Sensor Masuk 2A
Arduino UNO
Indikasi Masuk Zona A
4 2
6 7
8
+5V Trig
Echo +5V Trig Echo
Sensor Keluar 1A
Sensor Keluar 2A
Indikasi Keluar Zona A 9
3 5
10 11
(b)
Gambar 3. a. Posisi Sensor kenderaan masuk dan keluar [6]
b. Rangkaian Pendeteksi Kenderaan masuk Setiap adanya urutan keluaran sensor seperti pada tabel 1 maka mikrokontroller Arduino Uno akan memberikan sinyal interupsi INT0 ke Arduino Mega untuk menambah hitungan kenderaan. Jika urutan keluaran sensor tidak sesuai dengan urutan tabel 1 berarti tidak ada kenderaan masuk. Dengan teknik ini maka dapat dibedakan kenderaan yang batal masuk (masuk dan kembali mundur) atau sedang berhenti dipintu
.
Tabel 1. Urutan Keluaran Sensor masuk saat memasuki zona parkir
Urutan Sensor Masuk-1A
Sensor Masuk-2A
Keterangan 1 Tdk
terdeteksi Tdk
terdeteksi Kenderaan belum memasuki pintu
2 Terdeteksi Tidak terdeteksi
Sebahagian badan Kenderaan memasuki Pintu 3 Terdeteksi Terdeteksi Kenderaan
memasuki Pintu 4 Tidak
Terdeteksi Terdeteksi Sebahagian badan Kenderaan melewati Pintu 5 Tidak
Terdeteksi Tidak Terdeteksi
Kenderaan telah masuk
(melewati pintu)
Tanda_I=0;
int Masuk1(void); int Masuk2(void); int Jumlah;
long tmrdeteksiM,tmrdeteksiK ;
int Tanda_Out1=0; int Tanda_Out2=0; int Tanda_O=0;
int Keluar1(void); int Keluar2(void);
void setup() {
pinMode(ECHO_In1, INPUT);
pinMode(TRIG_In1, OUTPUT);
pinMode(ECHO_In2, INPUT);
pinMode(TRIG_In2, OUTPUT);
pinMode(Masuk, OUTPUT);
pinMode(Keluar, OUTPUT);
digitalWrite(8,LOW); }
void loop() {
Tanda_In1= Masuk1();
Tanda_In2=Masuk2();
if ((Tanda_In1==1) && (Tanda_In2==0)&&
(Tanda_I==0) ) {
tmrdeteksiM=millis();
Tanda_I=1;} delay(100);
if ((Tanda_In1==1) && (Tanda_In2==1)&&
(Tanda_I==1)) {
Tanda_I=2;} delay(100);
if ((Tanda_In1==0) && (Tanda_In2==1)&&
(Tanda_I==2)) {
Tanda_I=3;} delay(100);
if ((Tanda_In1==0) && (Tanda_In2==0) &&
(Tanda_I==3)){
Tanda_I=0; Jumlah=Jumlah +1;
digitalWrite(Masuk,HIGH); delay(10);
digitalWrite(Masuk,LOW); //Memberi INT0 }
if (millis() > (tmrdeteksiM+15000)){
Tanda_I=0;}
Serial.print(" Tanda_I: ");
Serial.println(Tanda_I);
if ((Tanda_Out1==1) &&
(Tanda_Out2==0)&& (Tanda_O==0)) { tmrdeteksiK=millis();
Tanda_O=1;}
if ((Tanda_Out1==0) && (Tanda_Out2==0)&&
(Tanda_O==1)) { Tanda_O=0;}
if ((Tanda_Out1==1) && (Tanda_Out2==1)
&& (Tanda_O==1)) { Tanda_O=2;}
if ((Tanda_Out1==1) && (Tanda_Out2==0)
&& (Tanda_O==2)) { Tanda_O=1;}
if ((Tanda_Out1==0) && (Tanda_Out2==1)&&
(Tanda_O==2)) { Tanda_O=3;}
if ((Tanda_Out1==1) && (Tanda_Out2==1)
&& (Tanda_O==3)) { Tanda_O=2;}
if ((Tanda_Out1==0) && (Tanda_Out2==0)
&& (Tanda_O==3)) { Tanda_O=0;
digitalWrite(Keluar,HIGH); delay(10);
digitalWrite(Keluar,LOW);//Memberikan INT1 Jumlah=Jumlah-1;
if (Jumlah<0) {Jumlah=0;}
}
if (millis() > (tmrdeteksiK+15000)){
300cm
Sensor 250cm
Masuk2 Masuk1
p-ISSN 2088-3943
}
int Masuk1(void) {
digitalWrite(TRIG_In1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_In1, LOW);
delayMicroseconds(2);
int JarakIn1 = pulseIn(ECHO_In1, HIGH);
JarakIn1 = JarakIn1/ 58;
if((JarakIn1>50)&& (JarakIn1<200)){
Tanda_In1=1 ;}
else{
Tanda_In1=0;}
}
int Masuk2(void) {
digitalWrite(TRIG_In2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_In2, LOW);
delayMicroseconds(2);
int JarakIn2 = pulseIn(ECHO_In2, HIGH);
JarakIn2 = JarakIn2 / 58;
if((JarakIn2>50) && (JarakIn2<200)){
Tanda_In2=1 ;}
else{
Tanda_In2=0;}
}
int Keluar1(void) {
digitalWrite(TRIG_Out1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_Out1, LOW);
delayMicroseconds(2);
int JarakOut1 = pulseIn(ECHO_Out1, HIGH);
JarakOut1= JarakOut1 / 58;
if((JarakOut1>50)&& (JarakOut1<200)){
Tanda_Out1=1 ;}
else{
Tanda_Out1=0;}
}
int Keluar2(void) {
digitalWrite(TRIG_Out2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_Out2, LOW);
delayMicroseconds(2);
int JarakOut2= pulseIn(ECHO_Out2, HIGH);
JarakOut2= JarakOut2 / 58;
if((JarakOut2>50)&& (JarakOut2<200)){
Tanda_Out2=1 ;}
else{
Tanda_Out2=0;}
}
Gambar 4. Program Penghitung Kenderaan Pada Satu Zona
Selain itu dengan menggunakan dua sensor maka dapat dibedakan antara kenderaan dan orang yang melewati pintu. Pendeteksi adanya kenderaan yang keluar dari zona parkir sama seperti sensor kenderaan masuk, dimana setiap ada kenderaan keluar Arduino Uno memberikan sinyal INT1 ke Arduino Mega sehingga hitungan kenderaan berkurang. Program penghitung kenderaan (pendeteksi kenderaan masuk dan keluar) pada satu zona parkir ditunjukkan pada gambar 4.
b. Diagram alir Pemantauan Zona Parkir (Node Sensor)
Mikrokontroler Arduino Mega pada setiap node sensor akan mendeteksi slot parkir yang kosong dan menghitung banyak kenderaan yang masuk ke zona parkir serta mengirimkannya ke pusat pematauan melalui node sink. Pendeteksi slot pakir dilakukan sama seperti pendeteksian kenderaan masuk yaitu dengan mengukur jarak, dimana jika hasil pengukuran jarak terukur lebih besar dari 50cm dan lebih kecil dari 200 cm maka slot ditandai true (1) dan jika tidak slot ditandai false (0).
Mulai
Aktivkan INT0 dan INT1 Set Kecepatan kirim Serial
Ya
Baca Sensor Slot Parkir
Periksa Indikasi Masuk
? Ada masuk
Counter +1
Lampu Merah Menyala Lampu Hijau Padam
? Counter>= Max
? Ada Keluar
Counter -1 Periksa Sensor Keluar
Tdk
Tdk
Lampu Hijau Menyala Tdk Lampu Merah Padam
? Counter<Max
Ya
Tdk
Kirim informasi Zona Parkir ke Pusat Pemantau
Ya Ya
Tdk
Lampu Hijau Menyala Lampu Merah
Padam
Lampu Merah Menyala Lampu Hijau
Padam
Gambar 5. Diagram alir Pemantauan Zona Parkir
Adanya kenderaan yang masuk dan zona parkir diindikasikan oleh Arduino Uno dimana jika ada kenderaan masuk Arduino Uno memberikan interupsi INT0 ke Arduino Mega dan jika ada kenderaan keluar zona maka Arduino Uno memberikkan interupsi INT1 ke Arduino Mega. Indikasi masih ada tersedia slot pada zona parkir atau sudah penuh ditandai
Gambar 6. Penggalan Program Pemantau Zona Parkir A
dengan nyala lampu pada jalur masuk. Bila jumlah kenderaan pada satu zona sama atau melebihi kapasitas maka Arduino akan mennyalakan lampu merah, dan bila lebih kecil dari kapasitas maka lampu hijau menyala.
Diagram alir pemantauan zona parkir ditunjukkan pada gambar 5 dan penggalan program pemantau zona ditunjukkan pada gambar 6. Informasi slot parkir dan jumlah kenderaan dikirim secara serial ke pusat pemantau melalui XBee Pro dengan format: kode zona parkir, slot 1, slot 2, slot 3, slot 4 & jumlah kenderaan pada zona parkir dan diakhiri tanda #.
Sebagai contoh "A1010&2#” menyatakan kondisi slot 1 dan slot 3 dari Zona parkir A berisi sedang slot 1 dan slot 4 kosong serta banyak kenderaan pada zona parkir A sebanyak 2 kenderaan.
c. Rangkaian Node Sink
Rangkaian node sink ditunjukkan pada gambar 7 dan diagram alir program node sink ditunjukkan pada gambar 8. Informasi setiap zona parkir diterima Arduino dari XBee ProS2C melalui serial1 dan kemudian diproses Arduino selanjutnya dikirimkan ke komputer melalui serial dan kabel USB to Serial untuk ditampilkan pada monitor komputer. Informasi jumlah slot kosong dari node sensor juga diberikan ke ESP8266 melalui serial2 untuk dikirimkan ke kanal ThingSpeak (internet) dengan sinyal WiFi.
Gambar 7. Rangkaian Node Sink Agar informasi slot kosong dapat dilihat dari jaringan internet dengan ThingSpeak.com maka harus terlebih dahulu mendaftar ke ThingSpeak.com dan membuat channel pengumpulan data dari node sink. Setelah
void loop() {
int jarak1 = Slot1();
if(((jarak1>50)&&(jarak1<200)){
digitalWrite(Lamp1A,LOW); //Lampu indikator slot merah
data1 = true; //slot 1 berisi } else{
digitalWrite(Lamp1A,HIGH); //Lampu indikator slot hijau
data1 = false; //slot1 kosong }
int jarak2 = Slot2();
If ((jarak2>50)&&(jarak2<200)){
digitalWrite(Lamp2A,LOW);
data2 = true; } else{
digitalWrite(Lamp2A,HIGH);
data2 = false; } int jarak3 = Slot3();
If ((jarak3>50)&&(j<arak3<200)){
data3 = true;
digitalWrite(Lamp3A,LOW);}
else{ data3 = false;
digitalWrite(Lamp3A,HIGH); } int jarak4 = Slot4();
If ((jarak4>50)&&(jarak4<200)){
data4 = true;
digitalWrite(Lamp4A,LOW);}
else{ data4 = false;
digitalWrite(Lamp4A,HIGH);}
if(Jumlah<4){ digitalWrite(LampA,true);}
else { digitalWrite(LampA,false);}
Kosong=4-Jumlah;
if (Kosong<0) {Kosong=0;}
Serial1.println("A" + String(data1) + String(data2) + String(data3) + String(data4)+"&"+String(Jumlah) + "#");
delay(5000);}
int Naik(void) { noInterrupts();
if ((millis()-Debounce1)>DelayDebounce){
Jumlah=Jumlah+1; //Hitungan Kenderaan bertambah
Debounce1=millis();}
interrupts();}
int Turun(void){
noInterrupts();
if ((millis()-Debounce0)>DelayDebounce){
Jumlah=Jumlah-1; //Hitungan kenderaan berkurang
if (Jumlah<0) { Jumlah=0;}
Debounce0=millis();}
interrupts();}
int Slot1(void) {
digitalWrite(TRIG_Slot1, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_Slot1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_Slot1, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_Slot1, LOW);
int jarak1 = pulseIn(ECHO_Slot1, HIGH);
return (jarak1 = jarak1 / 58);
}
Arduino Mega
+3V3 TX1
19RX1 18
RX TX Komputer
Pemantau
Kabel USB to Serial
ESP8266 7
TX2
DI
DOXBee
PRO-S2C XBee USB
Adaptor TX
RX 6
RX2
0 1
p-ISSN 2088-3943
DR7VF7RVAOKGQV9I. Nama Channel yang dibuat adalah Parkir dan terdiri dari tiga field yaitu Field1= Zona A, Field2= Zona B dan Field3= Zona C.
Mulai
Periksa Masukan Serial1 (node sensor)
Ada masuk
?
Baca Data Serial Ya
Tdk Set Parameter Komunikasi Serial:
XBee=Serial1;ESP=Serial2;
Komputer=Serial
Baca Informasi Zona A Kode=A
? Periksa Kode Zona Parkir
Hitung Slot kosong Zona A
Kode= B
? Tdk
Ya Baca Informasi Zona B
Kirim Jumlah Slot Kosong Zona A, Zona B, Zona C ke kanal ThingSpeak (Internet) melalui Serial 2
Hitung Slot kosong Zona B Kirim ke Komputer
Pemantau (Serial 0)
Kirim ke Komputer Pemantau
Kode= C
? Tdk
Ya Baca Informasi Zona C
Hitung Slot kosong Zona C Kirim ke Komputer
Pemantau Tdk
Ya
Gambar 8. Diagram alir pada Node Sink Setiap informasi yang diterima Arduino dari serial1 diperiksa, jika karakter pertamnya adalah karakter A, B atau C maka informasi tersebut dibaca dan kemudian dikirimkan ke komputer pemantau melalui serial. Data banyak kenderaan pada setiap zona diambil dari informasi parkir yang diterima dan kemudian dikurangkan terhadap kapasitas zona parkir untuk menghasilkan data banyak Slot kosong.
Nilai banyak slot kosong dikirimkan ke Channel ThingSpeak melalui ESP8266 yang terhubung ke serial 2. Bagian program node sink ditunjukkan pada gambar 9.
#include <SoftwareSerial.h>
#include "WiFiEsp.h"
String thingSpeakAddress =
"api.thingspeak.com";
String writeAPIKey; String tsfield1Name;
String request_string;
char ssid[] = "CPH170"; // your network
SSID (name)
char pwd[] = "12345678"; // your network password
WiFiEspClient client;
String myAPIkey = "DR7VF7RVAOKGQV9I"; // kode API Thingspeak
char rc;
int CountA,CountB,CountC,i;
const byte numChars = 20;
char receivedChars[numChars]; // an array to store the received data
boolean newData = false;
String ParkirA,ParkirB,ParkirC;
int KosongA,KosongB,KosongC;
String JumlahA,JumlahB, JumlahC;
void setup() {
Serial.begin(9600); Serial1.begin(9600);
Serial2.begin(9600);
WiFi.init(&Serial2); //menset Serial2 untuk WiFi
delay(1000);
printMacAddress();
WiFi.begin(ssid, pwd); WiFi.status();
newData = false ;}
void loop() {
CountA=0; CountB=0; CountB=0;
for( i=0; i<8; i++){
newData = false ;//
recvWithEndMarker();
if (CountA==2) // tanda ada data dari node A { int JumlahA1=ParkirA.indexOf("\&");
int JumlahA2=ParkirA.indexOf("\#");
JumlahA=ParkirA.substring(JumlahA1+1,JumlahA2 );
int KosongA=4-JumlahA.toInt();
if (KosongA<0) { KosongA=0;}
Serial.println(ParkirA);
CountA=0;}
if (CountB==2) ) // tanda ada data dari node B
{ int JumlahB1=ParkirB.indexOf("\&");
int JumlahB2=ParkirB.indexOf("\#");
JumlahB=ParkirB.substring(JumlahB1+1,JumlahB2 );
KosongB=4-JumlahB.toInt();
if (KosongB<0) { KosongB=0;}
Serial.println(ParkirB);
CountB=0;}
if (CountC==2){
int JumlahC1=ParkirC.indexOf("\&");
int JumlahC2=ParkirC.indexOf("\#");
JumlahC=ParkirC.substring(JumlahC1+1,JumlahC2 );
KosongC=4-JumlahC.toInt();
if (KosongC<0) { KosongC=0;}
Serial.println(ParkirC);
CountC=0;}
delay (500);}
i=0;
if (CountA==0) {
ParkirA= "A0000&0#"; }//jika tdk ada dataA masuk maka clear
if (CountB==0) {
ParkirB= "B0000&0#";}//jika tdk ada dataB masuk maka clear
if (CountC==0) ) // tanda ada data dari
node A
{ ParkirC= "C0000&0#";}//jika tdk ada dataC masuk maka clear
kirim_thingspeak(KosongA,KosongB,KosongC);
}
void recvWithEndMarker() { // Mendeteksi data serial yang masuk dari XBee
static byte ndx = 1;
char rc;
while (Serial1.available() > 0 && newData ==
false) {
rc = Serial1.read();
if (rc != '#') {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) { newData=true; }}
else { receivedChars[ndx] = '#'; //
terminate the string ndx = 0;
newData = true; }
if (receivedChars[1]=='A'){
ParkirA= receivedChars;
CountA=2;}
else if(receivedChars[1]=='B'){
ParkirB= receivedChars;
CountB=2;}
else if(receivedChars[1]=='C'){
ParkirC= receivedChars;
CountC=2;} } Serial1_clear();}
void Serial1_clear()
{while (Serial1.read()>=0); }
void kirim_thingspeak(int ZonaA, int ZonaB,int ZonaC) {
if(client.connect("api.thingspeak.com", 80)) {
request_string="/update?";
request_string += "api_key=";
request_string+=myAPIkey;
request_string += "&";
request_string+="field1";
request_string += "=";
request_string+=ZonaA;
request_string += "&";
request_string+="field2";
request_string += "=";
request_string+=ZonaB;
request_string += "&";
request_string+="field3";
request_string += "=";
request_string += ZonaC;
client.print(String("GET")+ request_string +"HTTP/1.1\r\n" +"Host:"+thingSpeakAddress+
"\r\n"+"Connection: close\r\n\r\n");//kirim ke Hotspot
unsigned long timeout = millis();
while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout
!");
client.stop();
return; } }
while(client.available()){
stringline=client.readStringUntil('\r'); }
{ // get your MAC address byte mac[6];
WiFi.macAddress(mac);
char buf[20];
sprintf(buf,
"%02X:%02X:%02X:%02X:%02X:%02X",mac[5], mac[4], mac[3], mac[2], mac[1], mac[0]);
Serial.print("MAC address: ");
Serial.println(buf); }
Gambar 9. Bagian Program Node Sink
3. Hasil Dan Pembahasan
Sebelum digunakan XBee ProS2C terlebih dahulu diset konfigurasinya dengan menggunakan software XCTU yang disediakan perusahaan DIGI. Pada penelitian ini topologi yang digunakan adalah ZIGBEE TH PRO dengan nomor PAN ID=3 dan jumlah hop maksimum 1EH. XBee pada setiap node sensor(zona parkir) diset sebagai Router dengan tujuan data adalah XBee Coordinator dengan nomor MAC 0013A2004185477F. XBee yang dipasang node sink diset sebagai Coordinator, dan karena tujuan data maka alamat tujuan diset dengan DH=00 dan DL=00.
Pengujian Jaringan XBee Pro S2C
Pengujian jaringan XBee dilakukan dengan membuat program mengirimkan data acak dan nama XBee pada Arduino Mega 82560 dari ketiga zona, dimana pada Zona A diberi nama “XBee_R1”, zona B dengan “XBee_R2”, dan Zona C dengan “XBee_R3” separti ditunjukkan pada gambar 10. Coordinator dihubungkan ke komputer yang terpasang program XCTU.
.
//Program Uji_Kirim_XBee int t,h;
const String ID_XB = "XBee_R1";
void setup() {
Serial1.begin(9600);
}
void loop() {
t=random(10,100); h=random(10,100);
Serial1.println("Data:"+String(t)+"&"+Stri ng(h)+ID_XB);
delay(5000);
}
Gambar 10. Program Uji Jaringan XBee Pro S2C
Pengujian jaringan XBee pertama dilakukan dengan multipoint to point seperti pada gambar 11, dimana Coordinator ditempatkan pada gedung Lab.Telekomunikasi dan XBee-R1,
p-ISSN 2088-3943
dari ke tiga node sensor dapat diterima coordinator seperti ditunjukkan pada gambar 12.
Coordinator
Router R2 R1
Router R3
Router
30m 50m
40 m
Ruangan Lab.Telekomunikasi
Gambar 11. Topologi multi point to point
Gambar 12. Hasil Pengujian dengan program XCTU
Dari gambar 12 dapat dilihat data yang ditampilkan berasal dari XBee_ R3, XBee_R2 dan XBee_R1 dengan demikian informasi dari ketiga XBee telah dapat diterima Coordinator.
Selanjutnya XBee_R1 dipindahkan lebih jauh dari Coordinator hingga didapat jarak maksimum dimana informasi dari XBee_R1 masih dapat diterima Coordinator. Hasil pengujian didapat maksimum 120 m. Pada saat XBee_R1 dipindah ke posisi dimana arah menuju Coordinator terhalang didapat informasi dari XBee_R1 tidak dapat diterima Coordinator.
Selanjutnya dilakukan pengujian untuk multi hop dimana XBee_R1 dapat terhubung ke Coordinator(Komputer), XBee_R2 dapat terhubung ke XBee_R1 tetapi tidak dapat terhubung ke Coodinator. XBee_ R3 dapat terhubung ke XBee_R2 tetapi tidak dapat terhubung ke XBee_R1 dan Coordinator seperti ditunjukkan pada gambar 13.
Pengujian dilakukan dengan menonaktifkan secara bergantian XBee dan
mengamati hasil yang diterima pada Coordinator.
Hasil pengujian didapat pada tabel 2.
Coordinator
Router R1 R2
Router R3 Router
50m 100m 75m
Gedung Lab.Telekomunikasi
Gambar 13. Pengujian Jaringan XBee Pro S2C dengan multi hop.
.Tabel 2. Hasil Pengujian Multi Hop
No XBee R1
XBee R2
XBee R3
Sumber Data diterima
Coord.
Keterangan 1 OFF OFF OFF Tidak ada
2 OFF OFF ON Tidak ada
Informasi dari R3 tidak sampai ke Coordinator 3 OFF ON OFF Tidak
ada
Informasi dari R2 tidak sampai ke Coordinator
4 OFF ON ON Tidak ada
Informasi dari R2 dan R3 tidak sampai ke Coordinator 5 ON OFF OFF R1
Informasi dari R1 sampai ke Coordinator
6 ON OFF ON R1
Informasi dari R3 tidak sampai ke R1 sehingga tidak dapat diteruskan ke Coordinator 7 ON ON OFF R1,R2
R1 melanjutkan informasi dari R2 ke Coordinator
8 ON ON ON R1,R2, R3
R2 melanjutkan informasi dari R3 ke R1 dan R1 meneruskannya ke Coordinator
Dari data tabel 2 dapat dilihat bahwa data dari suatu node dapat diteruskan ke node tujuan melalui node perantara, dimana pada pengujian ini hingga tiga hop. Menurut lembaran data
XBee Pro S2C dengan protokol Zigbee dapat mencapai 30 hop.
Pengujian Fungsional
Pengujian dilakukan dengan simulasi dimana kenderaan digantikan dengan papan triplex ukuran panjang 2,4m dan lebar ukuran 1,2m. Pada pengujian ini kenderaan memasuki zona parkir digantikan dengan papan triplex dibawa melewati sensor masuk dan diletakkan di atas slot parkir dengan ketinggian 150cm.
Kenderaan keluar zona digantikan dengan membawa papan triplex dari slot parkir melewati sensor keluar. Berikut diberikan tampilan pada monitor komputer dan tampilan pada Channel ThingSpeak untuk beberapa kondisi.
a. Tampilan Monitor Pusat Pemantau
b. Tampilan Channel ThingSpeak Gambar 14. Saat belum ada kenderaan pada
semua Zona Parkir
Pada saat tidak ada kenderaan memasuki zona parkir ditunjukkan pada gambar 14. Gambar 15 didapat pada saat satu kenderaan dimasukkan ke setiap zona dimana pada zona A mempati slot 1, zona B menempati slot 3 dan zona C menempati slot 2. Gambar 16 didapat saat pada zona A telah masuk dua kenderaan dan menempati slot 1 dan 2, pada zona B telah masuk dua kenderaan
kenderaan dari slot2 keluar dari slot tetapi masih didalam zona C.
Gambar 15. Hasil Pengujian Saat Zona A,B dan C berisi satu Kenderaan
Gambar 16.
4. Kesimpulan
Setelah dilakukan perancangan, pembuatan
p-ISSN 2088-3943
a.Dengan bantuan program pengukur jarak sensor ultrasonik dapat digunakan untuk mendeteksi kenderaan pada slot parkir dan kenderaan yang masuk dan keluar zona parkir.
b.Jarak komunikasi untuk point to point XBee Pro S2C dipengaruhi oleh objek penghalang dimana dalam penelitian ini jarak maksimum antara XBee dalam ruangan dengan XBee diluar ruangan tanpa halangan gedung maksimum 120m.
c. Dengan konfigurasi Zigbee jaringan XBee Pro S2C dapat memperluas lokasi pemantauan parkir dimana setiap node sensor yang diset sebagai router dapat meneruskan informasi dari node sensor lainnya ke node sink. . d. Dengan menggunakan ESP8266 dan layanan
ThingSpeak.com informasi parkir dapat dipantau secara realtime dari internet dimana ESP8266 mengirimkan informasi ke hotspot melalui WiFi.
5. Referensi
[1]. Elijah J. Morgan. (Nov. 16 2014). HCSR04 Ultrasonic Sensor. Diakses pada 10 September
2019 melalui:
https://datasheet4u.com/datasheet-parts/HC- SR04-datasheet.php?id=1380136
[2]. Hafif Bustani Wahyudi. (2016). Sistem Pendeteksi Lahan Parkir Menggunakan Raspberry Pi, Sensor Ultrasonik dan Mikrokontroller. Journal Of Information and Technologi Volume 04 nomor 01 Tahun 2016.
[3]. Aditya Kurniawan, dkk. (2016). Implementasi dan Analisa Jaringan Wireless Sensor Untuk Monitoring Suhu, Kelembaban dan Kadar CO2 Pada Ruangan. Seminar Nasional Inovasi dan Aplikasi Teknologi di Industri (SENIATI) 2016 ISSN:2085-4218. Diakses pada 28 Juli 2019 melalui:https://ejournal.itn.ac.id/index.php/
seniati/
[4]. Digi International (2017). User Guide XBee®/XBee-PRO S2C ZigBee® RF Module.
Diakses pada 02 Agustus 2019 melalui:
https://www.digi.com/resources/documentation/
digidocs/pdfs/90002002.pdf
[5] Ajie, 2016. IoT dengan Arduino dan ThingSpeak.
Diakses pada tanggal 06 agustus 2019 melalui http://saptaji.com/2016/11/21/iot-dengan- arduino-dan-thingspeak/
[6] Morlan, dkk. [2018]. Sistem Monitoring Tempat parkir Berbasis Arduino Mega Dengan modul Komunikasi XBee Pro S2C. Jurnal RELE (Rekayasa Elektrikal Dan Energi) vol 1, No.2 Tahun 2019.