Komunikasi Serial dan I2C

Komunikasi serial adalah metode pengiriman data di mana hanya satu bit data dikirimkan secara berurutan melalui satu jalur komunikasi pada satu waktu. Sebagai perbandingan, komunikasi paralel menggunakan banyak kabel secara bersamaan. Dalam sistem mikrokontroler, UART (Universal Asynchronous Receiver-Transmitter) adalah contoh perangkat keras untuk komunikasi serial asinkron. UART mengubah data paralel menjadi data serial dan sebaliknya. UART bersifat asinkron, artinya tidak menggunakan sinyal jam bersama; kedua perangkat hanya perlu disetel pada baud rate yang sama.

I2C (Inter-Integrated Circuit) adalah protokol komunikasi serial sinkron dua-arah yang hanya membutuhkan dua kabel: SDA (Serial Data Line) dan SCL (Serial Clock Line). I2C menggunakan konsep master–slave; satu atau beberapa master (misal mikrokontroler) mengendalikan bus, sedangkan banyak slave (perangkat seperti sensor atau memori) terhubung ke bus yang sama. Setiap perangkat memiliki alamat unik sehingga master dapat memilih perangkat mana yang akan berkomunikasi.

Prinsip Kerja Komunikasi Serial (UART)

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang

Pada UART, pengiriman data berlangsung asinkron. Perangkat pengirim (transmitter) dan penerima (receiver) masing-masing memiliki pin TX dan RX, serta berbagi pengaturan kecepatan (baud rate). Ketika saluran komunikasi tidak aktif, garis data berada pada level logika tinggi. Untuk mulai mengirim data, transmitter menarik garis data ke logika rendah satu siklus sebagai bit start. Setelah bit start, transmitter mengirim sejumlah bit data (biasanya 8 bit, LSB pertama) secara berurutan pada interval tetap, kemudian bit parity (opsional) untuk deteksi kesalahan, dan diakhiri dengan satu atau dua bit stop pada logika tinggi. Receiver kemudian mengukur saluran data pada interval bit yang sama untuk membaca setiap bit. Karena tanpa sinyal jam eksternal, timing bit hanya sinkron jika baud rate sudah disepakati sama. UART bersifat dupleks: dengan dua kabel independen (TX dan RX) dapat mendukung komunikasi full-duplex (simultan) jika diperlukan.

Prinsip Kerja I2C

I2C bersifat sinkron: semua transfer bit diatur oleh sinyal jam (SCL) yang dihasilkan oleh perangkat master. Baik SDA maupun SCL bersifat jalur terbuka (open-drain) dan ditarik ke tegangan VCC melalui resistor pull-up. Untuk memulai komunikasi, master mengeluarkan kondisi START dengan menurunkan SDA saat SCL berada pada level tinggi. Selanjutnya master mengirimkan byte alamat 7-bit ditambah 1 bit Read/Write, lalu slave yang alamatnya cocok akan menanggapi dengan bit ACK (sinyal konfirmasi). Setelah alamat, data ditransfer sinkron dalam bentuk byte (8 bit), dengan setiap byte diikuti oleh bit ACK dari penerima. Proses dapat diulangi untuk setiap byte selanjutnya. Setelah transfer selesai, master mengakhiri komunikasi dengan kondisi STOP (menaikkan SDA saat SCL tinggi). Sepintas, rangkaian perintah I2C adalah sebagai berikut:

  1. Master mengirim START.
  2. Master kirim alamat + R/W. Slave memberikan ACK.
  3. Master/slave bertukar data 8-bit + ACK.
  4. Master kirim STOP.

Struktur Data dan Protokol Dasar

Pada komunikasi UART, struktur frame umumnya berupa: satu bit start (LOW), n bit data, bit paritas (opsional), dan satu atau dua bit stop (HIGH). Misalnya format 8N1: 1 bit start, 8 bit data, tanpa paritas, 1 bit stop. Frame ini dikirim secara berurutan ke penerima. UART tidak mengenal alamat perangkat; setiap tautan adalah koneksi titik-ke-titik antara dua perangkat.

Sebaliknya, protokol I2C memiliki struktur transfer tersinkron: diawali kondisi START, kemudian pengiriman alamat 7-bit + bit R/W, lalu data tiap 8-bit, masing-masing diakhiri ACK/NACK, dan ditutup oleh kondisi STOP. Saat garis SDA dan SCL idle (setelah STOP), keduanya tetap HIGH. Ilustrasi urutan sinyal I2C tampak pada gambar berikut:

i2c

Rangkaian sinyal I2C: master mengirim kondisi START, diikuti alamat dan bit R/W, slave memberi bit ACK, kemudian master-slave bertukar data per byte dengan ACK, dan diakhiri kondisi STOP.

Selain itu, I2C mendukung pengalamatan multi-slave: alamat 7-bit memungkinkan hingga 128 perangkat berbeda pada satu bus. Setiap transfer byte diakui oleh penerima, memudahkan deteksi kesalahan. UART, yang asinkron, sebaliknya tidak memiliki mekanisme ACK atau pengalamatan; ia hanya mengenali garis TX/RX dan format frame yang sudah disepakati sebelumnya.

Perbedaan Utama UART vs I2C

  • Metode Sinkronisasi: UART asinkron (tanpa clock); sinkronisasi bit dilakukan dengan penentuan baud rate sama. I2C sinkron dengan sinyal SCL yang mengatur timing setiap bit.
  • Arsitektur Topologi: UART adalah komunikasi titik-ke-titik (satu penerima dan satu pengirim). I2C adalah bus multi-drop: satu atau lebih master dan banyak slave pada dua jalur bersama.
  • Jumlah Kabel: Keduanya menggunakan dua kabel, tetapi pemakainya berbeda. UART memerlukan TX dan RX (plus ground) untuk dua arah data. I2C menggunakan SDA untuk data dua-arah dan SCL untuk clock.
  • Pengalamatan: UART tidak memiliki konsep alamat perangkat; setiap hubungan langsung harus pasang-pasangan antarperangkat. I2C menggunakan alamat unik pada setiap perangkat slave sehingga satu master bisa memilih siapa yang diajak bicara.
  • Mode Komunikasi: UART dapat full-duplex karena memiliki dua jalur terpisah. I2C bersifat half-duplex pada bus yang sama (data hanya satu arah per saat).

Kelebihan dan Kekurangan

  • UART
    • Kelebihan: Desain sederhana dan hemat hardware. Hanya membutuhkan dua kabel (plus ground) tanpa sinyal clock eksternal. UART cocok untuk komunikasi jarak jauh (misalnya melalui interface RS-232) karena toleran terhadap jitter baud yang rendah. Protokolnya mudah diimplementasikan dan banyak didukung mikrokontroler serta peralatan.
    • Kekurangan: Hanya mendukung koneksi satu-ke-satu; tidak ada mekanisme pengalamatan perangkat lain. Sensitif terhadap ketidaksesuaian baud rate – jika baud rate tidak sama (selisih lebih dari ~10%), data bisa rusak. Kecepatan tipikal UART (puluhan sampai ratusan kbps) lebih rendah dibanding banyak bus sinkron modern, dan overhead bit start/stop mengurangi efisiensi kanal.
  • I2C
    • Kelebihan: Hanya butuh dua jalur untuk menghubungkan banyak perangkat. Setiap perangkat memiliki alamat sendiri, sehingga satu bus dapat menangani hingga puluhan atau ratusan slave. Protokolnya menyertakan ACK/NACK pada tiap byte, memudahkan deteksi gagal kirim. Kecepatan standar I2C (100 kHz), Fast Mode (400 kHz) hingga High-Speed (3,4 MHz) cukup untuk banyak aplikasi sensor dan periferal.
    • Kekurangan: Kecepatan maksimum I2C relatif rendah dibanding bus lain seperti SPI atau UART tingkat tinggi. Kinerja bus menurun jika banyak perangkat terhubung karena kapasitansi bus meningkat. Protokol I2C lebih kompleks (master harus menghasilkan clock dan kondisi START/STOP), sehingga implementasinya agak lebih rumit. I2C hanya half-duplex dan kurang cocok untuk komunikasi satu-ke-satu jarak jauh.

Aplikasi Umum

  • Komunikasi Serial (UART): Banyak digunakan untuk menghubungkan mikrokontroler dengan perangkat serial (misalnya modem, GPS, modul Bluetooth, atau komputer). Contoh klasik adalah port serial RS-232 pada komputer lama, yang banyak digantikan oleh USB. Pada dunia mikrokontroler modern, UART sering dipakai untuk debugging (Serial Monitor), modul komunikasi nirkabel (HC-05 Bluetooth, ESP modul), sensor serial (seperti sensor gelombang ultrasonik), dan antarmuka perangkat-perangkat sederhana.
  • I2C: Umum dipakai untuk komunikasi antar chip pada papan sirkuit tertutup (on-board) karena hanya butuh dua kawat. Aplikasi khas meliputi pembacaan sensor (temperatur, kelembapan, akselerometer, giroskop), kontrol tampilan kecil (LCD/OLED) dan baca/tulis memori EEPROM atau RTC. Misalnya, banyak modul sensor dan layar pada Arduino atau mikrokontroler lainnya memiliki antarmuka I2C. Protokol ini juga sering digunakan dalam sistem IoT atau robotika untuk pengkabelan sederhana dan penghematan pin mikrokontroler.

Dengan memahami karakteristik di atas – mulai dari cara kerja hingga kelebihan dan keterbatasannya – mahasiswa dan teknisi dapat memilih metode komunikasi yang tepat sesuai kebutuhan sistem tertanam yang sedang dikembangkan.

 

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang