KOMUNIKASI I²C MENGGUNAKAN 2 ARDUINO UNO

🎯 1. TUJUAN PRAKTIKUM

Mahasiswa mampu:

    1. Memahami prinsip komunikasi I²C
    2. Menghubungkan dua Arduino menggunakan I²C
    3. Mengirim dan menerima data string
    4. Menganalisis sinyal SDA dan SCL
    5. Memahami peran pull-up resistor
    6. Mengaitkan I²C dengan sistem Industrial IoT

📖 2. DASAR TEORI SINGKAT

I²C (Inter-Integrated Circuit) adalah protokol komunikasi dua kabel yang dikembangkan oleh:

📌 NXP Semiconductors

Arduino Uno menggunakan mikrokontroler:

📌 ATmega328P

Pin I²C pada Arduino Uno:

Pin

Fungsi

A4

SDA

A5

SCL

I²C menggunakan:

    • SDA (Serial Data)
    • SCL (Serial Clock)
    • Pull-up resistor (4.7kΩ – 10kΩ)

🧰 3. ALAT DAN BAHAN

Software:

    • Arduino IDE
    • Proteus (opsional simulasi)

Hardware:

    • 2x Arduino Uno
    • 2x Resistor 4.7kΩ
    • Kabel jumper
    • LED + Resistor 220Ω

🔌 4. RANGKAIAN PRAKTIKUM

🔹 Konfigurasi Master – Slave

Master

Slave

A4 (SDA)

A4

A5 (SCL)

A5

GND

GND

Tambahkan:

    • Pull-up 4.7kΩ dari SDA ke 5V
    • Pull-up 4.7kΩ dari SCL ke 5V

📊 Diagram I²C

 

💻 5. PROGRAM PRAKTIKUM

🔹 Program Master (Kirim String)

#include <Wire.h>




void setup() {

  Wire.begin();

}




void loop() {

  Wire.beginTransmission(0x08);

  Wire.write("BISA_IOTI");

  Wire.endTransmission();

  delay(1000);

}

🔹 Program Slave (Terima Data + LED Indikator)

#include <Wire.h>




#define LED_PIN 7




void setup() {

  Wire.begin(0x08);

  Wire.onReceive(receiveEvent);

  pinMode(LED_PIN, OUTPUT);

  Serial.begin(9600);

}




void receiveEvent(int bytes) {

  digitalWrite(LED_PIN, HIGH);




  while (Wire.available()) {

    char c = Wire.read();

    Serial.print(c);

  }




  digitalWrite(LED_PIN, LOW);

}




void loop() {}

6. LANGKAH PRAKTIKUM

    1. Hubungkan kedua Arduino sesuai tabel
    2. Pastikan pull-up resistor terpasang
    3. Upload program master
    4. Upload program slave
    5. Buka Serial Monitor pada slave
    6. Amati data yang diterima
    7. Amati LED menyala saat data masuk

📊 7. ANALISIS SINYAL (OPSIONAL ADVANCE)

Gunakan:

    • Logic Analyzer
    • Oscilloscope (jika ada)

Hubungkan probe ke:

    • SDA
    • SCL

Amati:

    • Start condition
    • Stop condition
    • ACK bit
    • Perubahan sinyal saat data dikirim

🏭 8. STUDI KASUS INDUSTRI IoT

📌 Kasus:

Sistem monitoring suhu panel listrik menggunakan:

    • Sensor suhu I²C
    • Mikrokontroler
    • Gateway IoT

Alur:
Sensor → Arduino → MQTT → Dashboard

Mengapa I²C cocok?

✔ Hemat kabel
✔ Banyak sensor bisa satu bus
✔ Mudah integrasi

Namun tidak cocok untuk:
✖ Jarak >1 meter
✖ Lingkungan noise tinggi

📋 9. TUGAS ANALISIS WAJIB

Jawab pertanyaan berikut:

    1. Mengapa I²C membutuhkan pull-up resistor?
    2. Apa yang terjadi jika pull-up dilepas?
    3. Mengapa I²C disebut half duplex?
    4. Berapa maksimum device dalam 7-bit addressing?
    5. Apa fungsi ACK?
    6. Apa itu clock stretching?
    7. Mengapa I²C jarang digunakan pada PLC industri untuk jarak jauh?

🎓 10. TUGAS TAMBAHAN (LEVEL ENGINEERING)

    1. Ubah alamat slave menjadi 0x10
    2. Tambahkan pengiriman data numerik (integer)
    3. Ubah kecepatan I²C menjadi 400kHz
    1. setClock(400000);
    1. Tambahkan sensor I²C ketiga
    2. Lakukan scanning address menggunakan I²C Scanner

📈 11. KRITERIA PENILAIAN

Aspek Bobot
Rangkaian benar 20%
Program berhasil 25%
Analisis teori 25%
Studi kasus industri 20%
Kerapihan laporan 10%

🧠 KESIMPULAN PRAKTIKUM

Mahasiswa memahami bahwa:

  • I²C cocok untuk komunikasi internal board
  • Addressing memungkinkan banyak device
  • Pull-up resistor wajib
  • Tidak cocok untuk jarak jauh industri
  • Dalam IIoT, I²C berada di layer sensor

 

Related Articles