Dasar Komunikasi Serial

Komunikasi secara serial menjadi pilihan utama dewasa ini, salah satunya dikarenakan jumlah penghantar yang digunakan bisa lebih irit daripada komunikasi secara paralel.


on Kam, 12/10/2015 - 22:46
62.146 View

Konsep Baud Rate

Komunikasi secara serial menjadi pilihan utama dewasa ini, salah satunya dikarenakan jumlah penghantar yang digunakan bisa lebih irit daripada komunikasi secara paralel. Mengapa? Sebab kata “Serial” berarti berarti mengirim satu bit data dan selanjutnya diikuti oleh bit-bit data yang lain pada jalur yang sama. Karena itulah kita dapat meringkas penggunaan kabel. Karena melalui jalur yang sama, maka potensi kecepatan komunikasi serial tidak secepat potensi kecepatan komunikasi paralel. Pada paralel, data dapat dikirim bersamaan melalui beberapa jalur. Namun demikian, untuk penerapan secara umum, sistem komunikasi serial memenuhi berbagai aplikasi mikrokontroler. Selain di mikrokontroler, sistem komunikasi serial banyak digunakan pada perangkat modem, USB, RS-232, dan sebagainya.

Hal yang paling penting dalam menghubungkan dua perangkat melalui komunikasi serial adalah memastikan bahwa kedua perangkat berkomunikasi dengan konfigurasi yang sama. Terdapat beberapa parameter yang digunakan untuk membangun komunikasi secara serial, diantaranya adalah baud rate, paket data, parity bit, dan synchronization bit.

Baud rate mengindikasikan seberapa cepat data dikirim melalui komunikasi serial. Baud rate biasanya diberi satuan bit-per-second (bps), walaupun untuk kasus-kasus khusus (misalnya untuk komunikasi paralel), nilai bps dapat berbeda dengan nilai baud rate. Asumsi saat ini kita fokus pada komunikasi serial, dimana setiap detak menyatakan transisi satu bit keadaan. Jika hal ini dipenuhi, maka nilai baud rate akan sama dengan nilai bit-per-second (bps). Bit per detik ini mengartikan bahwa berapa bit data dapat ditransfer setiap detiknya. Jika kita menginverskan nilai bps ini, kita dapat memperoleh keterangan berapa lama waktu yang dibutuhkan untuk mengirim 1 bit. Nilai baud rate dapat diatur dengan menggunakan standar kecepatan yang disediakan, diantaranya 1.200, 2.400, 4.800, 9600, 19.200, 38.400, 57.600, dan 115.200 bps. Salah satu kecepatan yang paling umum digunakan adalah 9.600 bps. Ini adalah nilai yang mana kecepatan komunikasi bukalah suatu hal yang kritis untuk dipertimbangkan. Sebagai contoh, jika kita ingin mengetahui nilai dari sensor suhu. Memperoleh data suhu dari suatu sensor tidaklah memerlukan kecepatan komunikasi yang terlalu cepat. Untuk mengurangi error, gunakanlah kecepatan standar 9.600 bps. Semakin besar nilai baud rate, semakin tinggi kecepatan transfer. Namun demikian, karena komunikasi yang melibatkan sinyal elektrik dan proses sinkronisasi data sangat rentan dengan error dan derau, maka disarankan untuk tidak melebihi kecepatan 115.200 bps untuk komunikasi pada Arduino.

Framing Data

Framing data adalah bagaimana suatu rangkaian bit disusun untuk dikirim melalui suatu sistem komunikasi serial. Amatilah Gambar 1. Data yang dikirim melalui komunikasi serial biasanya adalah 5 sampai 9-bit. Pada Arduino, data berukuran sebesar 8-bit (1-byte). Urutan pengiriman data mengikuti suatu endian tertentu. bagaimana data dikirim? Apakah most-significant-bit (msb) terlebih dahulu atau sebaliknya least-significant-bit (lsb) yang lebih dahulu? Jika tidak ditentukan diawal, kita dapat mengasumsikan bahwa least-significant-bit akan dikirim terlebih dahulu.

Start dan Stop bit dikenal sebagai synchronization bit. Start dan Stop bit bisa berukuran 2 atau 3-bit. Sesuai dengan namanya, bit-bit ini akan mengawali dan mengakhiri paket data. Start bit selalu berukuran 1-bit, sedangkan Stop bit bisa 1 atau 2-bit. Jika tidak diperlukan untuk dikonfigurasi, biarkan saja nilai Stop bit sebesar 1-bit. Amatilah bentuk paket data dalam sistem komunikasi serial, seperti pada Gambar 1.

Posisi idle pada komunikasi serial memiliki nilai 1. Start bit diindikasikan dengan adanya transisi dari keadaan idle, yaitu dari 1 ke 0, sedangkan stop bit adalah transisi balik ke keaadaan idle (dari 0 ke 1).

Bit Parity bersifat opsional dan dapat tidak dipergunakan. Parity bit berguna untuk data transfer yang dipengaruhi oleh derau (noise). Namun demikian, penggunaan bit parity dapat memperlambat kecepatan berkomunikasi. Penggunaan bit parity juga memerlukan sinkronisasi antara transmitter dengan receiver. Jika tidak, kemungkinan kesalahan dalam interpretasi data sangatlah besar.

[[{"fid":"374","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Arduino - Frame bit","field_file_image_title_text[und][0][value]":"Arduino - Frame bit"},"type":"media","link_text":null,"attributes":{"alt":"Arduino - Frame bit","title":"Arduino - Frame bit","height":"74","width":"459","class":"media-element file-default"}}]]

Gambar 1. Serial Frame

Contoh Pengiriman Data

Bagaimana cara pengiriman data melalui komunikasi serial? Ambillah salah satu contoh scenario pengiriman, yaitu 9600 8N1. Kode 9600 8N1 bermakna bahwa kecepatan yang digunakan 9600 baud, 8-bit data, tidak terdapat parity, dan 1-bit stop. Skenario 9600 8N1 merupakan salah satu protokol serial yang paling banyak digunakan. Melalui komunikasi serial, data akan dikirim dalam format ASCII (American Standard Code for Information Interchange). Asumsi kita akan mengirim kata OK. Karena terdiri dari dua karakter (O dan K), maka komunikasi akan memilki dua buah paket data. Kode ASCII untuk ‘O’ (kapital) adalah 79 dalam desimal atau 0100 1111 dalam 8-bit binernya, sedangkan karakter ‘K’ (kapital) adalah 75 atau 0100 1011. Asumsi data yang terkirim lebih dahulu adalah least-significant bit-nya. Dengan demikian, gambaran paket data yang dikirim diperlihatkan seperti pada Gambar 2.

Karena data dikirim dengan kecepatan 9600 bit/detik, maka setiap bitnya memerlukan waktu selama 1/9600 = 104 mikrodetik/bit. Satu paket data untuk satu karakter terdiri dari 10 bit (8-bit data, 1-bit start dan 1-bit stop). Dengan demikian, pengiriman satu karakter (yang terdiri dari 10-bit) akan membutuhkan waktu selama 10 x 104 mikrodetik = 1.040 mikrodetik = 1,04 milidetik. Pengiriman kata ‘OK’ akan membutuhkan waktu sekitar 2 milidetik pada kecepatan 9600 bps. Jika menambah sebuah bit parity, sudah tentu kecepatan akan berkurang lagi.

[[{"fid":"375","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Arduino - Frame bit kata OK","field_file_image_title_text[und][0][value]":"Arduino - Frame bit kata OK"},"type":"media","link_text":null,"attributes":{"alt":"Arduino - Frame bit kata OK","title":"Arduino - Frame bit kata OK","height":"172","width":"702","class":"media-element file-default"}}]]

Gambar 2. Paket data serial ‘OK’

Jika pembaca ingin mengirim karakter yang lain, silahkan rujuk Tabel 1 untuk tiap-tiap karakter ASCII.

Tabel 1. Karakter ASCII dalam format Heksa dan desimal

[[{"fid":"376","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Arduino - Tabel ASCII","field_file_image_title_text[und][0][value]":"Arduino - Tabel ASCII"},"type":"media","link_text":null,"attributes":{"alt":"Arduino - Tabel ASCII","title":"Arduino - Tabel ASCII","height":"798","width":"823","class":"media-element file-default"}}]]

 

Referensi

Wardana, Kusuma. 2015. Teknik Antarmuka MATLAB dan Arduino - Membangun Interaksi antara Bahasa Komputasi Teknis dengan Platform Berbasis Mikrokontroler. MiaranaDIY

Profil Penulis

User Picture
  • Member Since 8 tahun 9 bulan ago
Kusuma Wardana

MATLAB, Mikrokontroler, FPGA, Elektronika, Kontrol/Kendali, Signal Processing

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik...

Comments

Halo,

untuk menghemat tombol bisa menggunakan 1 pin analog, caranya dengan menggunakan resistor secara seri. Ini tutorialnya: https://www.instructables.com/How-to-Multiple-Buttons-on-1-Analog-Pin-Arduino-Tu/ dengan cara ini 1 pin analog bisa digunakan untuk raturan tombol.

Untuk multiple LED bisa juga menggunakan multiplexer, ini tutorialnya: https://tutorkeren.com/artikel/tutorial-menggunakan-multiplekser-multiplexer-4051-pada-arduino.htm

Semoga membantu

Rab, 01/06/2021 - 17:46 Link permanen

izin bertanya, seperti yang mas jelaskan diatas "Penggunaan bit parity juga memerlukan sinkronisasi antara transmitter dengan receiver. Jika tidak, kemungkinan kesalahan dalam interpretasi data sangatlah besar." nah itu boleh ga mas dikasih contoh bagaimana cara sinkronisasinya apabila menggunkan even/odd parity ? hehehe saya cari diberbagai sumber tidak dapat.

Min, 05/16/2021 - 12:33 Link permanen