//Tambahan //Akhir tambahan Fungky Corporation: Komunikasi I2C (Inter-Integrated Circuit) / Two-wire (TWI)

MAU PESAN ALAT BIDANG ELEKTRONIKA? KAMI FUNGKY CORPORATION SIAP MEMBANTU. HUBUNGI :

Email: fungkyking01@gmail.com | FB/TWITTER/YOUTUBE : FUNGKYKING |

WA (WhatsApp) Only : 0838 (Libur)


Lokasi Yogyakarta.

Monday, 30 September 2019

Komunikasi I2C (Inter-Integrated Circuit) / Two-wire (TWI)


Komunikasi I2C (Inter-Integrated Circuit) / Two-wire (TWI)
Komunikasi I2C (Inter-Integrated Circuit)

  1. Pendahuluan
Salam Otomatisasi, Sebelum membahas lebih dalam tentang komunikasi I2C, jangan lupa singgah ke blog saya à http://festyy.com/wNiBaj untuk membaca materi-materi lainnya tentang mikrokontroler dan jangan lupa subscribe serta Like channel youtube saya di (fungky king) https://www.youtube.com/channel/UCWbN7TqlN68FxeFY7uCNhkA untuk melihat hasil dari percobaan-percobaan dengan mikrokontroler.

Baiklah sekarang kita akan membahas tentang “Komunikasi I2C (Inter-Integrated Circuit) / Two-wire (TWI)”. Pembahasan kali ini kita akan berbagi tentang pengertian apa itu I2C, mekanisme kerja dari I2C, cara mengakses komunikasi I2C Pada Arduino dengan sedikit contoh program untuk mengetahui alamat I2C sebuah modul yang akan dihubungkan ke Arduino.

Bus adalah sistem pengantar yang dilengkapi dengan komponen pengendali untuk melayani pertukaran data antara komponen Hardware satu dengan komponen Hardware lainnya. Pada sistem mikrokontroler terdapat bus Data, bus Alamat, dan beberapa pengantar pengendali. Semakin tinggi frekuensi clock prosesor, maka semakin lebih cermat pengembang untuk memperhatikan Timing dari seluruh komponen yang terlibat, agar tidak terjadi kesalahan dalam transaksi data.

Bus yang cukup sering digunakan adalah bus bersifat paralel. Transaksi data dilakukan secara paralel sehingga transaksi data lebih cepat. Akan tetapi disisi lain sistem ini tergolong Mahal. Jika sistem relatif tidak membutuhkan transaksi yang cepat, maka penggunaan Serial Bus menjadi pilihan. Salah satu pilihan sistem data bus yang sering digunakan adalah I2C (Inter Integrated Circuit). Sistem Bus I2C sendiri pertamakali diperkenalkan oleh Firma Philips pada tahun 1979.

Agar data dapat didistribusikan oleh master dengan tepat ke beberapa slave, menurut konsep I2C, semua jenis IC I2C diproduksi dengan nomor group tersendiri yang diatur oleh Philips, sehingga produsen IC lain yang memproduksi IC I2C harus mendaftarkan produknya ke Philips untuk mendapatkan nomor group.

contohnya,
  • IC serial EEPROM  memiliki no group = 1010 biner,
  • IC Remote 8 bit I/O Expander  memiliki no group =  0111 biner. dll
No group dimasukan ke 4 bit msb untuk  mensetting device adress  dan  3 bit berikutnya  A0, A1 ,A2  kaki  ic yg bersangkutan.  Dengan demikian pada I2C Bus total bisa dipasang paling banyak 8 IC sejenis.

contoh : IC EEPROM 24C02 kaki  A2, A1 dan A0 kita groundkan, maka device address Ic 24C02 tsb adalah 1010 000x  , x = 1 jika operasi baca , x=0 jika operasi tulis.

  1. Pembahasan
Komunikasi I2C (Inter-Integrated Circuit) merupakan koneksi dibuat untuk menyediakan komunikasi antara perangkat-perangkat terintegrasi, seperti sensor, RTC, dan juga EEPROM. Komunikasi I2C bersifat synchronous namun berbeda dengan SPI karena I2C menggunakan protocol dan hanya menggunakan dua kabel untuk komunikasi, yaitu Sychronous clock (SCL) dan Sychronous data (SDA). Secara berurutan data dikirim dari master ke slave kemudian (setelah komunikasi master ke slave selesai) dari slave ke master.
Gambar 1. Konfigurasi Komunikasi I2C
Sinyal dasar I2C meliputi sinyal STARTSTOP dan ACK sebagai berikut: SCK merupakan sinyal clock untuk ‘mendorong’ data di SDA, dalam keadaan tidak ada transfer data SDA dan SCK harus dalam keadaan ‘1’. Data di SDA boleh berubah hanya pada saat SCK=’0’ seperti digambarkan dalam diagram waktu Gambar 2, isi SDA diambil peralatan I2C pada saat SCL berubah dari ‘1’ menjadi ‘0’. Jika terjadi perubahan SDA pada saat SCL = ‘1’, perubahan itu diartikan sebagai sinyal START atau STOP.
Gambar 2. Sinyal SDA & SCL

  • Sinyal START menandakan master akan mulai mengirim data,  sinyal ini terlihat di bagian kiri Gambar 3 berupa perubahan tegangan SDA dari ‘1’ menjadi ‘0’ pada saat SCK=’1’.
  • Sinyal STOP menandakan master akan mengakhiri komunikasi data, sinyal ini terlihat di bagian kanan Gambar 3 berupa perubahan tegangan SDA dari ‘0’ menjadi ‘1’ pada saat SCK=’1’.
Gambar 3. Start & Stop Sinyal I2C

  • Sinyal ACK, merupakan sinyal balasan dari slave setelah menerima data 1 byte. Pada kondisi ini, slave “menarik” sda menjadi low selama satu sinyal clock. Sinyal ACK ini dapat dilihat pada Gambar 4, dimana pengiriman sinyal ini menandakan bahwa slave telah menerima 1 byte data.
Gambar 4. Transfer Data I2C

Perangkat  I2C  menggunkan  2  buah  pin  open-drain  dua  arah  dengan memberikan pull-up resistor untuk setiap garis bus sehingga berlaku seperti AND menggunakan kabel. AVR dapat menggunakan 120 jenis perangkat untuk berbagi pada bus I2C yang masing-masing disebut sebagai node. Setiap node beroperasi sebagai master atau slave. Master merupakan perankat yang menghasilan clock untuk sistem, menginisiasi, dan juga memutuskan sebuah transmisi. Slave merupakan node yang menerima clock dan dialamatkan oleh master. Baik master dan slave dapat menerima dan mentransmisikan data

  1. Perancangan
Setelah diawal kita membahas lebih dalam tentang komunikasi I2C mulai dari apa itu komunikasi I2C, proses kerjanya dan logika kerjanya. Kali ini untuk lebih membuat semua memahami komunikasi I2C, maka langsung saja kita contohkan dalam implementasi menggunakan sebuah modul PCF8574 yang biasa digabungkan dengan modul LCD 16X2 maupun LCD dengan dimensi lainnya.

Gambar 05. Rangkaian LCD I2C dengan NodeMCU

Catatan: Pastikan sambungan modul LCD I2C yang ke NodeMCU benar merupakan Port atau Pin jalur i2c yang disediakan pada NodeMCU.

Listing program ujinya sebagai berikut:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);

void setup() { lcd.begin();}

void loop()
{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("hello, world!");
  delay(1000);
}

Program pengujian diatas menggunakan library khusus untuk dapat menggunakan module LCD, #include <LiquidCrystal_I2C.h> merupakan library dari LCD yang dimana setiap akan menggunakannya library ini harus disertakan. LiquidCrystal_I2C lcd(0x3F, 16, 2); adalah konfigurasi hardware dimana interfacing antara pin NodeMCU dengan pin LCD memiliki alamat 0x3F. Alamat 0x3F merupakan alamat i2c yang digunakan oleh modul yang disambungkan ke LCD seperti pada pembahasan jalur komunikasi i2c. Alamat I2C setiap hardware berbeda-beda, maka lakukan proses scanning terlebih dahulu untuk mengetahui alamat yang digunakan oleh perangkat yang akan kamu gunakan.
Perintah lcd.clear(); ini berfungsi untuk menghapus seluruh tampilan yang ada di LCD. Baris 1 dan baris 2 yang semula terdapat tulisan akan terhapus. Perintah lcd.begin(); tersebut adalah inisialisasi ukuran LCD 16 baris 2 kolom. lcd.print("hello, world!"); menulis ke LCD dengan karakter yang ada dalam tanda kurung(), perhatikan bahwa ada tanda petik dua, berarti tipe datanya string.
lcd.setCursor(0, 0); untuk menempatkan cursor pada kolom 1 baris 1, indeks kolom dan baris dimulai urutan ke nol (0). Program diatas diupload ke NodeMcu ESP8266 dan jika sambungan dari rangkaian LCD 16x2 benar dan alamat i2c sesuai, setelah sistem dinyalakan maka tulisan dari program yang telah dirancang diatas akan tertampil pada LCD sebagaimana pada Gambar 6.
Gambar 6. Hasil Pengujian Tampilan LCD 16x2


  1. Penutup
Demikian penjabaran singkat tentang “Komunikasi I2C (Inter-Integrated Circuit) / Two-wire (TWI)”. Untuk selanjutnya, buat yang ingin mempelajari Arduino dan lebih mengenal Arduino silakan follow akun sosial media saya di facebook “fungkyking” juga diblog saya di http://festyy.com/wNiBaj dan jangan lupa subscribe channel youtube saya juga di (fungky king) https://www.youtube.com/channel/UCWbN7TqlN68FxeFY7uCNhkA untuk melihat tulisan-tulisan serta hasil rancangan alat-alat berbasis mikrokontroler yang kami buat. Kami juga menerima pembuatan alat-alat elektronika baik untuk penelitian ataupun alat untuk syarat kelulusan.

Demikian pembahasan singkat yang dapat dibahas, mohon maaf jika terdapat kesalahan dalam penulisan yang mana semua ini semata-mata hanya opini pribadi berdasarkan pengalaman. Jika ada kekurangan dan tambahan dari materi pembahasan yang dibahas silahkan dapat teman-teman sertakan pada kolom komentar tambahan materi yang ingin disampaikan, sampaikan pertanyaan dan isi kolom komentar dengan bijak.
           
Terima Kasih,
Salam Otomatisasi


Afriansyah, S.T.
(Fungky King)
fungkyking01@gmail.com

Kata Kunci / Keywords: ATMEGA, Arduino, Arduino IDE, Arduino UNO, Bahasa C, fungkynotes.blogspot.co.id, fungky corporation, fungky king, microcontroller, otomatis, pemprograman, programming, plc, NodeMCU, ESP8266, Internet of Things (IoT), Wi-Fi, PWM, ADC, LED, Blink, I2C (Inter-Integrated Circuit), Two-wire (TWI)

Referensi / Reference:






1 comment:

Berfikirlah kreatif dengan komentar yang bijak. Salam Otomatisasi.!

//Tambahan //akhir