Anda di halaman 1dari 3

Pada percobaan demo project yang berjudul Sistem Monitoring Level Air pada Lahan

Pertanian terdapat 2 jenis komunikasi mode pada protocol Xbee. Komunikasi tersebut ialah
komunikasi mode API 0 dan komunikasi mode API 1. Pada komunikasi mode API 1 juga
terdapat 2 buah mode komunikasi yaitu mode API 1 itu sendiri serta mode komunikasi many to
one dalam mode API 1.
Kami menggunakan pemrograman processing untuk pembacaan komunikasi serial antara Xbee
dan PC. Pada percobaan pertama kami melakukan pengamatan komunikasi mode API 0. Pada
komunikasi mode API 0, Xbee end device diset dan dikonfigurasi secara manual melalui
perintah ATCommand pada terminal. Dengan mengkonfigurasi xbee end device dengan MY 4,
maka Xbee terkonfigurasi bahwa xbee end device dengan MY 4.
Pada percobaan selanjutnya kami melakukan pengamatan komunikasi mode API 1. Dengan
mensetting dan konfigurasi melalui, xbee end device melalui ATcommand maka xbee
terkonfigurasi xbee dengan mode API 1.
Pada program project terdapat beberapa program diantaranya main program dan fungsi program.
Main program tersebut akan memanggil fungsi program yang berisikan fungsi parsing data dan
beberapa fungsi untuk membentuk pola dasar.
Pada fungsi parse, fungsi tertulis pada program yaitu void parse () yang mana fungsi parsing
tersebut akan dipanggil pada main program. Pada fungsi parsing void parse () memiliki
beberapa fungsi untuk menghitung checksum dan mengambil setiap data frame xbee.
if (dataserial[count]==0x7E)
{
count=0;
}

Program diatas menjelaskan tentang fungsi if dengan pengambilan data pada format frame start
delimiter. Program diatas menjelaskan bahwa jika dataserial mengambil nilai hex start delimiter
sebesar 0x7E maka data hasil parsingan tersebut akan disimpan sebagai nilai awal. Lalu setelah
itu array count melakukan counting data. Counting data yang dilakukan itulah yang termasuk
dalam protokol API. Protokol API yang dibaca terdiri dari 10 byte data.
Pada fungsi if (dataserial[9]+ceksum()==0xFF) menjelaskan jika nilai yang diambil oleh
data serial dijumlahkan ceksum menghasilkan nilai yang sama dengan nilai heksa 0xFF maka
akan

mengeksekusi

perintah

(dataserial[9]+ceksum()==0xFF).

selanjutnya

atau

perintah

didalam

if

Pada program if (dataserial[9]+ceksum()==0xFF) terdapat program :


lMY=dataserial[5];
hMY=dataserial[4];
MY=int(hMY<<8)+lMY;

Pada program di atas dapat diamati bahwa nilai MY terletak pada byte 4 dan byte 5 yang terdiri
dari lMY dan hMY. Sedangkan untuk pemilihan bar digunakan program if untuk MY pertama
dan kedua dengan tampilan MY dan data yang diterima. Untuk mengambil nilai hasil MY yang
didapat maka nilai hMY digeser 8 bit dan dijumlah dengan nilai lMY sehingga didapat nilai MY.
Tujuan digunakan fungsi MY=int(hMY<<8)+lMY; ialah untuk menggabungkan nilai MSB dan
LSB MY.
if (MY==0x100)

{
data1=dataserial[8];
println("MY = " + hex(MY, 4) + " Data= " + hex(data1,2) + " ");
}
else if (MY==0x200)
{
data0=dataserial[8];
println("MY = " + hex(MY, 4) + " Data= " + hex(data0,2) + " ");
}

Program diatas menjelaskan Data yang diambil pada MY 100 dan MY 200 merupakan data serial
yang berada pada byte ke-8 sesuai dengan protokol API. Data MY tersebut didapat berdasark
pada data MY xbee coordinator yaitu MY 100 dan MY 200. Data tersebut dimasukkan ke dalam
data4 dan data5 yang digunakan untuk update nilai pada tampilan bar pada HMI.
Pada fungsi println("MY = " + hex(MY, 4) + " Data= " + hex(data1,2) + " ");
Merupakan fungsi untuk menampilkan nilai MY dan data yang diterima yang kemudian akan
ditampilkan pada terminal processing.
Pada main program, terdapat instruksi komunikasi serial dengan menggunakan myPort.available.
if ( myPort.available() > 0)
{
// If data is available,
dataserial[count] = myPort.read();
parse();
count++;
// read it and store it in val
}

Dari program serial tersebut diatas dapat diamati bahwa data serial diambil per-byte dengan
menggunakan counter. Penjelasan program diatas ialah jika ada data masuk maka data serial
tersebut akan dibaca dan dimasukkan ke dataserial [count] lalu data tersebut akan di teruskan ke
fungsi parse(). Sementara count++ berfungsi untuk melakukan perhitungan atau counter
untuk pengambilan data pada fungsi dataserial.

Kesimpulan :
1. Penggunaan komunikasi mode API 1 dapat melihat alamat address xbee yang mengirim
data.
2. Untuk komunikasi mode API 0 tidak dapat melihat alamat address xbee yang mengirim
data dan digunakan sebagai komunikasi transparent.
3. Fungsi array dataserial[count] digunakan untuk menyimpan hasil pengambilan data
pada format frame lalu data tersebut akan di teruskan ke fungsi parse().