interface i2c - i2c scanner

Cara mencari tahu alamat interface i2c module arduino

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 :

  1. Modul PCF8574
  2. Modul RTC DS3231
  3. MPU6050 (Sensor Axelorometer)
  4. MPU6500
  5. Sensor Kompas CMPS10
  6. Modul LCD OLED
  7. Sensor Gyroscope ADXL345
  8. Modul FM Radio RDA5087M
  9. Modul FM Radio TEA5767
  10. Sensor Barometric BMP180
  11. Sensor Barometric BMP280
  12. Modul INA219
  13. Koneksi antar arduino
  14. 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 interface i2c secara paralel

Contoh paralel modul i2c

Pin Out interface I2C pada Arduino Uno

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 + LCD 16x2

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 pembacaan i2c scanner

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 <<

4 Comments

  1. Edwin

    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,

  2. cirilus yulian

    saya kan detek alamat rtc ds3231 kok ad 2 alamatnya ya min, mohon pencerahan

Leave a Reply to cirilus yulian Cancel reply

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