Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Komunikasi Serial Sinkron I2C/IIC/TWI dengan Arduino

Saat melakukan eksperimen handling RTC DS3231/DS3232 pada artikel sebelumnya, kalau Anda perhatikan komunikasi yang dijalin antara RTC dan Arduino menggunakan pin A4 dan A5. Pin apakah itu? Mengapa bukan di pin 0 dan 1 (pin serial)? Jawabannya adalah : secara arsitektur, IC RTC DS3231/DS3232 didesain menggunakan komunikasi I2C/IIC/TWI, jadi perangkat apapun yang ingin mengambil data dari IC RTC tersebut harus menggunakan protokol yang sama. Sedangkan jika menggunakan Arduino, pin 0 dan 1 adalah pin serial tapi yang bertipe serial asinkron, jadi tidak dapat dihubungkan dengan RTC DS3231/DS3232. Sedangkan pin A4 dan A5 Arduino memiliki fungsi khusus sebagai pin I2C/IIC/TWI dengan A4 sebagai SDA dan A5 sebagai SCL. Untuk lebih jelasnya mengenai fungsi khusus pin A4 dan A5, silahkan dilihat pada gambar di bawah.

pin SDA SCL komunikasi IIC-I2C-TWI Arduino

Catatan : I2C berasal dari kata IIC, kepanjangannya Inter-Integrated Circuit. Sedangkan TWI kepanjangannya adalah Two Wire Interface. Ketiga istilah tersebut adalah sama, merujuk pada protokol komunikasi serial sinkron dengan dua kabel yakni SDA (Serial Data) dan SCL (Serial Clock).   SDA merupakan data serialnya, sedangkan SCL adalah jalur clock sinkronisasinya.

Ilustrasi cara kerja protokol komunikasi IIC/I2C/TWI adalah sebagai berikut :

ilustrasi jalur bus i2c-iic-twi

Yang perlu Anda perhatikan bahwa jalur bus komunikasi I2C bersifat open drain, jadi sebenarnya membutuhkan resistor pullup. Untuk jarak pendek resistor pullup ini bisa ditiadakan, namun untuk jarak panjang atau jumlah client/slave yang banyak, resistor pullup ini wajib ada. Untuk jumlah client/slave yang dapat terhubung dalam satu jalur bus I2C ini adalah sebanyak 112. Untuk tiap client/slave wajib memiliki alamat yang unik agar tidak terjadi tabrakan data (data collision) atau data yang invalid. Sedangkan panjang kabel pada jalur bus I2C, maksimal bisa mencapai 250 m tergantung pada besaran kapasitansi, resistor pullup dan kecepatan clock sinkronisasi data.

Khusus untuk Arduino, ada library tersendiri yang didedikasikan untuk menangani protokol serial sinkron secara I2C ini. Nama library tersebut adalah ‘Wire.h’. Anda harus mendeklarasikan library ini untuk mendapatkan function-function siap pakai yang akan memudahkan Anda menangani komunikasi secara I2C. Apakah harus menggunakan library ini? Tidak juga. Anda bisa menggunakan function buatan sendiri untuk berkomunikasi menggunakan I2C. Tapi ya itu tadi, Anda harus membangun function from the scratch, artinya Anda harus memahami level hardware yang akan ditangani, mengetahui pinout Arduino dan bagaimana mengaksesnya, serta menangani data serial yang keluar masuk secara I2C. Anda dapat menyingkat waktu untuk itu semua dengan cukup mendeklarasikan library ‘Wire.h’.

Function yang ada di library ini antara lain :

– begin() ==> menginisiasi protokol I2C di arduino

– requestFrom() ==> meminta data byte dari slave

– beginTransmission() ==> memulai transmisi data ke slave I2C sesuai alamatnya

– endTransmission() ==> mengakhiri transmisi data

– write() ==> mengirim data serial

– available() ==> mengecek kesiapan device I2C

– read() ==> membaca data serial I2C

– onReceive() ==> memanggil event handler tertentu saat data mulai masuk ke Arduino

– onRequest() ==> memanggil event handler tertentu saat ada permintaan data

Untuk contoh program dapat Anda baca melalui menu File-Examples-Wire. Di sana ada ada beberapa contoh program yang dapat Anda pelajari dan praktekkan.

Incoming search terms:

komunikasi i2c arduino, apa itu i2c, fungsi pin sda dan scl pada i2c lcd, fungsi wire h, cara pemakaian andro 12c, penjelasan sda dan scl, fungsi i2c, fungsi wire h pada arduino, contoh program i2c arduino, cara kerja sensor pin 12c
6 Comments

Add a Comment

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

error: Content is protected !!