Translate

Komunikasi Nirkabel PING-PONG



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....

5 komentar:

  1. Hebat rancangan nya , sampe-sampe aku ora ngertos... tetap semangat dan berkarya sobat...

    BalasHapus
  2. Bener 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.

    Trims komentarnya, salam sukses...

    BalasHapus
  3. 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 :)

    BalasHapus
  4. 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 :)

    BalasHapus
  5. Wah pasti boleh aja Bro Hardii...
    Sudah saya balas via email ya dan ditunggu komentar dan obrolannya ya...

    BalasHapus