Pengiriman Frame Data Pada Komunikasi Serial
Pengiriman Frame Data Pada Komunikasi Serial
Laporan
Praktikum 8
Disusun oleh :
JURUSAN TELEKOMUNIKASI
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
2014
I. Tujuan
1. Mahasiswa mampu menggunakan program Arduino dengan baik.
2. Mahasiswa memahami dan mampu mengirim frame data pada komunikasi serial
Arduino.
Komunikasi ini mempunyai suatu kelebihan yaitu hanya membutuhkan satu jalur
dan kabel yang sedikit dibandingkan dengan komunikasi paralel. Pada prinsipnya
komunikasi serial merupakan komunikasi dimana pengiriman data dilakukan per bit
sehingga lebih lambat dibandingkan komunikasi parallel, atau dengan kata lain
komunikasi serial merupakan salah satu metode komunikasi data di mana hanya satu
bit data yang dikirimkan melalui seuntai kabel pada suatu waktu tertentu. Pada
dasarnya komunikasi serial adalah kasus khusus komunikasi paralel dengan nilai n = 1,
atau dengan kata lain adalah suatu bentuk komunikasi paralel dengan jumlah kabel
hanya satu dan hanya mengirimkan satu bit data secara simultan.Hal ini dapat
disandingkan dengan komunikasi paralel yang sesungguhnya di mana n-bit data
dikirimkan bersamaan, dengan nilai umumnya 8 ≤ n ≤ 128.
(sumber : https://pccontrol.wordpress.com/2014/06/28/pengetahuan-dasar-serial-
komunikasi-pada-arduino/)
Data yang dikirim dan diterima arduino dalam bentuk ASCII. Misalnya program
arduino mengirim huruf A maka akan dikirim sebenarnya adalah 1 byte code ascii
yaitu 65. Jika mengirim angka 123 maka sebetulnya yg dikirm adalah 3 byte data ascii
yaitu 49, 48, dan 50.
No Fungsi Keterangan
.
void loop(){
while(Serial.available()>0){
incomingByte=Serial.read();
if(incomingByte == '%'){
index=0;
flag=true;
}
if(flag){
buffer[index++] = incomingByte;
}
}
Serial.write(buffer);
Serial.println("");
}
Tugas
a. Buat program untuk parsing data untuk dua header ‘$’ dan ‘#’
int incomingByte;
char buffer[15];
char buffer1[15];
int index=0;
boolean flag;
boolean flag1;
void setup(){
Serial.begin(9600);
}
void loop(){
while(Serial.available()>0){
incomingByte=Serial.read();
}
if(flag1){
buffer1[index++]=incomingByte;
}
if(incomingByte=='%'){
index=0;
flag=true;
flag1=false;
}
if(incomingByte=='#'){
index=0;
flag=false;
flag1=true;
}
}
Serial.write(buffer);
Serial.println("");
Serial.write(buffer1);
Serial.println("");
}
b. Tambahan program dengan tail dari dua header tersebut, tail yang digunakan
adalah ‘!’
}
Serial.write(buffer);
Serial.println("");
Serial.write(buffer1);
Serial.println("");
}
V. Hasil Percobaan
a. Pengiriman Frame Data dengan Header
Output :
1)
%100 !80
2)
%100 !80
3)
%100 !80
Tugas
a. Buat program untuk parsing data untuk dua header ‘$’ dan ‘#’
Input :
$100#80
Output :
100
80
100
80
.
.
.
b. Tambahan program dengan tail dari dua header tersebut, tail yang digunakan
adalah ‘!’
Input :
%100!#80!
Output :
100
80
100
80
.
.
.
Program (2)
Serial.print(header1 + dataValue1 + header2 + dataValue2);
Pada program tersebut, maka output yang dihasilkan adalah :
%100 !80
Program (3)
Serial.print((String)header1 + (String)dataValue1 + (String) header2 +
Inisialisasi
Inisialisasi dilakukan pada fungsi setup() dimana hanya dijalankan sekali
saat program pertama kali dijalankan. Dengan kata lain fungsi setup() akan
dijalankan pada saat rangkaian diberi sumber tegangan.
void setup() {
Serial.begin(9600);
}
Pada program tersebut, program diatur dengan baudrate sebesar 9600.
Terima Data Serial
Terima data serial dilakukan pada fungsi loop() dimana dilakukan
pengulangan program dengan perintah while(). Program akan dijalankan terus
selama rangkaian mendapatkan supplai tegangan. Di bawah ini adalah fungsi
loop() tersebut:
void loop() {
while(Serial.available()>0){
Parsing Data
Terima data serial dilakukan pada fungsi loop() dimana dilakukan
pengulangan program dengan perintah while(). Program akan dikalankan terus
selama rangkaian mendapatkan supplai tegangan. Di bawah ini adalah fungsi
loop() tersebut:
void loop(){
while(Serial.available()>0){
incomingByte=Serial.read();
if(flag){
buffer[index++] = incomingByte;
}
if(incomingByte == '%'){
index=0;
flag=true;
}
}
Serial.write(buffer);
Serial.println("");
}
Pada program tersebut, program diatur untuk melakukan pengecekan
berulangan pada data yang masuk dengan perintah pengulangan while(). Data
diinputkan melalui keyboard dengan perintah Serial.write(buffer) dimana diberi
VII. Kesimpulan
Kesimpulan yang didapatkan dari praktikum ini adalah :
1. Pada pengirimian data frame dengan header, header dideskripsikan dalam tipe data
char dimana data dengan header dapat dicetak dengan perintah serial.print().
Pengeluaran data juga dapat dilakukan dalam 3 cara berbeda : (1) pengeluaran data dan
header secara satu persatu (dalam serial.print() berbeda); (2) pengeluaran data dan
header secara bersamaan (dalam serial.print() yang sama); (3) pengeluaran data dan
header secara bersamaan (dalam serial.print() yang sama), namun dalam tipe string.
2. Pada penerimaan komunikasi serial, data disimpan di buffer, kemudian dapat
dipanggil dengan perintah serial.read().
3. Pada parsing data Arduino, karakter yang dimasukkan dapat dicek satu persatu untuk
mengecek posisi header. Kemudian data input akan dikeluarkan tanpa header.
Daftar Pustaka
https://grsbatch5.wordpress.com/2013/02/19/parsing-data-di-arduino/
http://ricosanfransisko-samosir.blogspot.com/2013/10/komunikasi-serial_22.html
https://pccontrol.wordpress.com/2014/06/28/pengetahuan-dasar-serial-komunikasi-pada-
arduino/
http://simpultekno.blogspot.com/2014/11/belajar-komunikasi-serial-arduino.html