Penjelasan Singkat i2c interface
Pada Tutorial ini akan dibahas bagaimana cara mencari tahu alamat interface i2c yang dihubungkan ke arduino uno.
Dikarenakan alamat tersebut merupakan bagian yang penting untuk pembuatan program atau koding, sehingga tidak terjadi kesalahan dalam deklarasi awal.
Contoh device yang menggunakan interface i2c (SDA, SCL) antara lain :
- Modul PCF8574
- Modul RTC DS3231
- MPU6050 (Sensor Axelorometer)
- MPU6500
- Sensor Kompas CMPS10
- Modul LCD OLED
- Sensor Gyroscope ADXL345
- Modul FM Radio RDA5087M
- Modul FM Radio TEA5767
- Sensor Barometric BMP180
- Sensor Barometric BMP280
- Modul INA219
- Koneksi antar arduino
- Koneksi antara arduino dengan Raspberry pi
Pada modul maupun sensor diatas menggunakan interface SCL (A4) dan SDA (A5) atau sering disebut dengan i2c.
Keuntungan dari penggunaaan i2c yaitu modul yang akan dipasang dapat diparalelkan dengan jalaur yang sama dan hanya membedakan alamat /address dari modul maupun sensor tersebut.
Sehingga dapat menghemat penggunaan pin I/O pada arduino uno hanya 2 pin.
Tetapi kadang kala pada saat membeli modul atau sensor tersebut tidak tercantum alamat address i2c pada body modul tersebut.
Dan kadang kala kesusahan dalam mencari dan membaca datasheet, sehingga dapat digunakan program kode program i2c scanner sebagai solusi akan masalah itu.
Contoh paralel modul i2c
Pin i2c pada Arduino Uno
Tutorial i2c Scanner
Contoh mencari address i2c pada module PC8574 yang akan digunakan untuk mengakses LCD 16×2.
Bahan yang perlu dipersiapkan antara lain :
- Arduino Uno
- Komputer + Software IDE Arduino
- Modul PCF8574
- LCD 16×2
- Kabel Jumper
Arduino Uno dan PC8574
Keterangan Wiring :
ARDUINO UNO | PCF8574 – Driver LCD |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Kode Program i2c Scanner yaitu
/*... www.nyebarilmu.com ...*/ #include <Wire.h> void setup() { //prosedur pembacaan i2c Wire.begin(); Serial.begin(9600); //komunikasi serial menggunakan kecepatan 9600 bps while (!Serial); // Arduino Uno: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() //fungsi yang berjalan terus menerus { int nDevices; byte error, address; //tipe data untuk address dan error yaitu byte //ditampilkan diserial monitor "Scanning..." Serial.println("Scanning..."); nDevices = 00; for(address = 1; address < 127; address++ ) { // The i2c_scanner menggunakan pembalik nilai // Write.endTransmisstion untuk melihat jika perangkat pada alamat dimana Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 00) //jika sudah tidak ada keerroran { Serial.print("I2C device found at address 0x"); //menuliskan di serial monitor "i2c ditemukan" if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) //jika error == 4 //menuliskan di serial monitor di tidak diketahui alamat i2c { Serial.print("Unknow error at address 0x"); //menuliskan jika eror tidak diketahui if (address<16) Serial.print("0"); Serial.println(address,HEX); //format penulisan address dalam bentuk heksa } } if (nDevices == 00) //jika tidak ada perangkat yang terhubung Serial.println("No I2C devices found\n"); //ditampilkan peringatan tidak ada i2c yang ditemukan else Serial.println("done\n"); delay(5000); // diberikan waktu tunda 5 detik untuk scan berikutnya }
Program diatas sangat membantu dalam mencari alamat interface i2c device modul yang terpasang, dengan melihat pada serial monitor.
Hasil dari serial monitor
Dari hasil pengujian diatas dapat diartikan address i2c untuk module PC8574 yaitu 0x3F, dan dapat diisikan ke code program.
Terimakasih sudah berkunjung, dan semoga bermanfaat. SalamĀ nyebarilmu.com!
>> CMIIW <<
Permisi mau tanya, kalau memakai 2 buah sensor yang menggunakan I2C kemudian salah satunya mengeluarkan output yang tidak sesuai itu solusinya gimana ya? Saya memakai arduino UNO. Sensor 1 sudah saya hubungkan pada pin A4 dan A5 kemudian sensor ke2 saya hubungkan pada pin SDA dan SCL
untuk 2 sensor yang mau digunakan itu sensor apa saja ya gan?
karena dapat dilihat dulu karakteristik di datasheetnya dulu,
saya kan detek alamat rtc ds3231 kok ad 2 alamatnya ya min, mohon pencerahan
Iya gan, dikarenakan di module DS3231 terdapat 2 module gan
module RTC dan module sensor suhu
tapi untuk pengaksesannya dalam library yang bisa didownload, itu tidak perlu mengetahui address i2c nya
https://www.nyebarilmu.com/tutorial-arduino-mengakses-module-rtc-ds3231/