Bagi sobat yang
senang bermain jejaring sosial menggunakan BBM (blackberry messanger), pasti tidak asing dengan istilah “PING”. Jauh
sebelum media tersebut merajalela, istilah “PING” sudah lama dikenal dalam
dunia informatika yaitu sebuah perintah untuk mengetahui respon dari sebuah
perangkat dalam sebuah jaringan berdasarkan alamat IP. Jika alamat perangkat
yang di-PING merespon maka itu tanda bahwa jaringan, perangkat dan alamat terhubung.
Sementara bagi
sobat yang gemar berolahraga mungkin juga pernah mendengar atau bahkan
memainkan sebuah permainan ketangkasan bola yang bernama “PING-PONG” atau
mungkin lebih dikenal dengan nama tenis meja. Cara bermainnya, kita cukup
melakukan serve dengan memukul bola menggunakan badge ke arah meja lawan. Jika
di seberang sana ada lawan kita maka bola tersebut akan dikembalikan ke arah
kita, kalau tidak ada, bagaimana ya?
Nah, dari dua
paragraf di atas, meski tidak mendekati relevansinya, penulis bermaksud
menganalogikan perangkat yang akan dibahas kali ini. Intinya adalah adanya
hubungan 2 arah yang bersifat timbal balik. Sama halnya dengan ketika kita
melakukan sebuah wawancara di mana pertanyaan yang kita lontarkan akan dijawab
oleh lawan bicara kita dan jawaban yang diberikan harus sesuai dan tidak boleh
salah.
Perangkat yang akan
kita buat sesuai tajuk “Komunikasi Nirkabel PING-PONG” terdiri dari 2 bagian
yaitu Master dan Slave, atau boleh disebut Penanya dan Penjawab, atau jika
ingin sedikit keren kita gunakan istilah DTE (data terminal equipment) dan DCE (data communication equipment). Apapun nama dan istilah yang
digunakan yang terpenting untuk diketahui bahwa ada 2 perangkat di mana
keduanya harus dapat saling berkomunikasi dengan salah satu sebagai penanya dan
lainnya menjawab. Salah satu perangkat akan mengirim data “PING” dan lainnya
harus menjawab “PONG”.
Agar supaya lebih
jelas adanya, maka berikut akan digambarkan blok diagram dari hubungan kedua
perangkat yang saling berkomunikasi secara nirkabel PING dan PONG.
DTE akan mengirim
sandi berupa data “PING” kemudian menunggu jawaban dari DCE yang ada dan
terhubung. Jika tidak ada jawaban dikarenakan tidak ada DCE yang terhubung maka
DTE secara terus menerus akan melontarkan data sandi “PING” tanpa mengenal
lelah ataupun bosan, karena itu memang tugasnya.
Dari sisi DCE
adalah menunggu adanya panggilan data sandi “PING” dari DTE kemudian dengan
serta merta akan menjawab sandi tersebut dengan jawaban “PONG”. Jika tidak ada
yang menyapa dengan sandi “PING” maka DCE akan terus menunggu dan menunggu
dengan sabar tanpa mengenal bosan karena itu memang tugasnya untuk senantiasa
siap siaga.
Bagaimana cara DTE
dan DCE berkomunikasi?
Saat ide perangkat
ini muncul dalam benak penulis karena adanya permintaan dari seorang teman
untuk diimplementasikan pada pintu gerbang kantornya maka media atau sarana
komunikasi yang digunakan sesuai dengan kondisi lapangan, terlintas untuk
menggunakan INFRA MERAH. Meski demikian pada kenyataannya jelas tidak
menggunakan data sandi jawaban “PONG” atau “PANG, PENG dan PUNG”. Namun pada
tulisan ini untuk sekedar penyederhanaan menggunakan sandi tersebut sesuai judul
tulisan.
DTE : “Ping”
(DTE
mulai melakukan panggilan dan untuk beberapa sesaat kemudian ia pun menunggu jawaban
dari seberang sana. Ternyata hingga batas waktu yang ditentukan masih tak ada
juga yang menjawab.)
“Ping”
(Kembali
untuk kesekian kalinya DTE memanggil dan terus memanggil sampai ada yang menjawab
panggilannya.)
DCE : “Pong”
(Akhirnya
ada juga DCE yang melintas dan mendengar panggilan tersebut kemudian menjawab.
DTE pun senang, wajahnya terlihat cerah dan ia pun menindak lanjuti jawaban
tersebut lalu melanjutkan dengan mengajukan beberapa pertanyaan berikut yang
harus dijawab dengan benar.)
DTE : “Nama?”
DCE : “Sigit”
DTE : “Alamat?”
DCE : “Depok”
(Usai
menerima semua jawaban yang diperlukan maka DTE pun memeriksa pada “buku”
memorinya dan mendapati ternyata nama serta alamat tersebut memang tertera dalam
daftar. Selanjutnya iapun mempersilahkan DCE melanjutkan perjalanan dengan tidak
lupa mencatat pada jurnal untuk keperluan pelaporan tugasnya.)
Seperti itulah
kembali penulis analogikan tentang implementasi dari konsep perangkat dengan
pendekatan istilah PING-PONG. Implementasi perangkat dengan konsep seperti ini
bisa sangat luas sesuai kebutuhan kita. Contoh implementasi lain yang pernah
penulis buat dengan cara ini adalah pada sistem tambahan dari elevator di
sebuah apartemen di wilayah Jakarta.
Sekarang akan kita
lanjutkan dengan penjelasan yang lebih detil tentang perangkat tersebut. Kita
mulai dengan pemilihan komponen pemancar dan penerima infra merah. Untuk
komponen pemancar digunakan sebuah IRLED jenis TSAL6200. Untuk penerimanya
menggunakan seri TSOP48xx dimana penulis memilih TSOP4836 dengan frekuensi 36
kHz. Sementara untuk menggerakkan TSAL6200 agar menghasilkan kedipan sesuai
frekuensi pembawa sebesar 36 kHz digunakan komponen lain yaitu NE555, sebuah
multivibrator astable.
Rangkaian di atas
adalah sebuah pemancar-penerima infra merah (IR transceiver). Untuk logika sinyal
pemancar pada pin 4 (RESET) dari NE555 dihubungkan ke port P31 dan
logika penerima pada pin 1 (OUT) dari TSOP4836 dihubungkan ke port P30
dari sistem mikrokontroler di mana penulis menggunakan AT89C2051. Agar NE555
membangkitkan vibrasi dengan frekuensi 36 kHz maka kita memerlukan 4 komponen
yaitu P1, R1, R2 dan C1 di mana
masing-masing bernilai 1k, 1k5, 2k dan 10n serta sebuah dioda 1N4148. Secara
teoritis rangkaian dapat membangkitkan getaran dengan pengaturan posisi trimpot
berkisar antara 32 sampai 41 kHz. Sebagai referensi rumusan teoritisnya sebagai
berikut:
T1 =
0,69 x (P1 + R1) x C1
T2 =
0,69 x R2 x C1
Fo = 1 /
(T1 + T2)
Baik DTE maupun
DCE, keduanya dibangun dengan mikrokontroler AT89C2051. Perbedaan dari keduanya
adalah pada DTE dilengkapi dengan gerbang keluaran untuk tujuan implementasi.
Sementara pada DCE hanyalah fitur pemancar dan penerima infra merah. Berikut
adalah aplikasi yang dijalankan pada DTE.
$mod51
;Aplikasi PING-PONG pada DTE
BufSerial data 8h
RegStack data 10h
LED_Respon bit p3.7
Seperti biasa, sesuai standar, pada bagian awal berisi
konfigurasi untuk register dan gerbang. Selanjutnya adalah menuliskan program
inisialisasi agar mikrokontroler mengaktifkan perintah berkaitan dengan
komunikasi serial. Kita akan menetapkan register TL dan TH dengan nilai #0E8H
untuk kecepatan data atau baudrate sebesar 1200 bps.
org 0h
Inisialisasi:
mov sp,
#RegStack-1
mov
pcon, #0
mov
scon, #50h
mov
tmod, #20h
mov
ie, #90h
mov
tl1, #0e8h
mov
th1, #0e8h
setb tr1
ajmp DTE_Mulai
Berikut adalah perintah yang berkenaan dengan interupsi serial
di mana data yang masuk pada SBUF akan diperiksa dan disimpan. Sebagai protokol
START maka aplikasi akan memeriksa isi register R0 harus kosong kemudian awal
data yang masuk yaitu karakter “P”.
org 23h
jnb ri,
$
clr ri
mov a,
sbuf
cjne r0,
#0, Simpan_Serial
cjne a,
#'P', Keluar_Serial
mov r0,
#BufSerial
Simpan_Serial:
mov @r0,
a
inc r0
cjne r0,
#BufSerial+4, Keluar_Serial
mov dptr,
#Pong
mov r0,
#BufSerial
mov r7,
#4
Setelah data serial yang masuk disimpan sejumlah 4 byte maka
selanjutnya akan diperiksa. Isi buffer pada #BufSerial akan diperiksa sesuai
dengan data pada alamat memori #Pong. Jika isi keduanya sama yaitu “PONG”, maka
aplikasi akan mengaktifkan gerbang LED_Respon sebagai tanda terhubung.
Periksa_Serial:
clr a
movc a, @a+dptr
inc dptr
xrl a, @r0
jnz Reset_Serial
inc r0
djnz r7, Periksa_Serial
clr LED_Respon
Reset_Serial:
mov r0, #0
Keluar_Serial:
reti
Kirim_Serial:
clr ea
mov sbuf,
a
jnb ti,
$
clr ti
setb ea
ret
Aplikasi DTE sesungguhnya dimulai di sini. Perintah yang
dijalankan adalah mengirim karakter “PING” secara serial.
DTE_Mulai:
setb LED_Respon
mov r0,
#0
Panggilan:
mov dptr,
#Ping
mov r7,
#4
Panggil:
clr a
movc a,
@a+dptr
inc dptr
acall Kirim_Serial
djnz r7,
Panggil
mov r6,
#255
mov r5,
#255
mov r4,
#6
Setiap kali melakukan pengiriman “PING”, aplikasi melakukan
penundaan untuk menunggu respon jawaban dari DCE selama kurang lebih 3 detik
sesuai isi register-register R4, R5 dan R6.
Tunggu_Jawab:
acall Waktu_Tunda
jnz Tunggu_Jawab
jnb LED_Respon,
DTE_Mulai
ajmp Panggilan
Ping: db 'PING'
Pong: db 'PONG'
Waktu_Tunda:
djnz r6,
Keluar_Tunda
mov r6,
#255
djnz r5,
Keluar_Tunda
mov r5,
#255
Keluar_Tunda:
mov a,
r4
dec a
ret
end
Selanjutnya kita
lihat aplikasi yang dijalankan pada perangkat DCE. Sekilas beberapa baris
berikut sama persis dengan aplikasi DTE. Jika Sobat membaca dengan teliti akan
ditemukan perbedaannya.
$mod51
;Aplikasi PING-PONG pada DCE
BufSerial data 8h
RegStack data 10h
LED_Respon bit p3.7
org 0h
Inisialisasi:
mov sp,
#RegStack-1
mov
pcon, #0
mov
scon, #50h
mov
tmod, #20h
mov
ie, #90h
mov
tl1, #0e8h
mov
th1, #0e8h
setb tr1
ajmp DCE_Mulai
org 23h
jnb ri,
$
clr ri
mov a,
sbuf
cjne r0,
#0, Simpan_Serial
cjne a,
#'P', Keluar_Serial
mov r0,
#BufSerial
Simpan_Serial:
mov @r0,
a
inc r0
cjne r0,
#BufSerial+4, Keluar_Serial
mov dptr,
#Ping
mov r0,
#BufSerial
mov r7,
#4
Pada aplikasi DCE maka isi register DPTR pada perintah di atas
adalah alamat “#Ping”. Sehingga jika data yang diterima sama yaitu “PING” maka
aplikasi akan mengaktifkan LED_Respon.
Periksa_Serial:
clr a
movc a, @a+dptr
inc dptr
xrl a, @r0
jnz Reset_Serial
inc r0
djnz r7, Periksa_Serial
clr LED_Respon
Reset_Serial:
mov r0, #0
Keluar_Serial:
reti
Kirim_Serial:
clr ea
mov sbuf,
a
jnb ti,
$
clr ti
setb ea
ret
Sampai di sini, aplikasi pada DCE boleh dibilang hampir sama
persis kecuali perubahan alamat pada register DPTR saja. Baris perintah
berikutnya barulah terlihat sangat jelas perbedaannya di mana aplikasi DCE
bersifat pasif alias menunggu hingga LED_Respon aktif rendah untuk kemudian
menjawabnya.
DCE_Mulai:
setb LED_Respon
mov r0,
#0
jb LED_Respon,
$
mov dptr,
#Pong
mov r7,
#4
Jawaban:
clr a
movc a,
@a+dptr
inc dptr
acall Kirim_Serial
djnz r7,
Jawaban
ajmp DCE_Mulai
Ping: db 'PING'
Pong: db 'PONG'
end
Sudah ya, terima
kasih sudah membaca artikel aku. Semoga bermanfaat dan bisa diterapkan oleh
sobat semua.
Salam....
Hebat rancangan nya , sampe-sampe aku ora ngertos... tetap semangat dan berkarya sobat...
BalasHapusBener Bro... Ga ngertinya di mana? Nanti artikelnya direvisi biar ngerti. Soalnya artikel di atas memang saya anggap pembacanya sudah biasa bermain dengan seri AT89 keluarga MCS51.
BalasHapusTrims komentarnya, salam sukses...
Mas sigit saya seneng bgt sama tulisannya dijelaskan sampe mendetail, lumayan buat inspirasi proyek tugas mikrokontroler, Mas saya boleh konsul ttg tugas mikon saya gak?? Klo boleh sy minta email mas sigit.. thx :)
BalasHapusMas sigit saya seneng bgt sama tulisannya dijelaskan sampe mendetail, lumayan buat inspirasi proyek tugas mikrokontroler, Mas saya boleh konsul ttg tugas mikon saya gak?? Klo boleh sy minta email mas sigit.. thx :)
BalasHapusWah pasti boleh aja Bro Hardii...
BalasHapusSudah saya balas via email ya dan ditunggu komentar dan obrolannya ya...