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

AspekBobot
Rangkaian benar20%
Program berhasil25%
Analisis teori25%
Studi kasus industri20%
Kerapihan laporan10%

🧠 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

 

Baca juga:
Training ESP32 Berbasis IoT – Pelatihan Praktis & Bersertifikat

Mendalami Teori I²C Secara Lebih Lengkap

Praktikum ini memberikan pengalaman langsung menghubungkan dua Arduino melalui I²C, namun untuk memahami protokol ini secara lebih mendalam termasuk konsep addressing 7-bit, clock stretching, dan mode multi-master, diperlukan penjelasan teori yang lebih komprehensif. Pembahasan tuntas mengenai seluruh aspek protokol I²C dapat dipelajari pada artikel Tutorial Lengkap I²C (Inter-Integrated Circuit), yang melengkapi praktikum ini dengan penjelasan konsep yang lebih rinci.

Perbandingan I²C dengan Protokol SPI

Selain I²C, protokol komunikasi populer lain yang sering digunakan pada Arduino adalah SPI, yang menawarkan kecepatan transfer data lebih tinggi namun membutuhkan lebih banyak jalur kabel dibandingkan I²C yang hanya memerlukan dua kabel (SDA dan SCL). Memahami kelebihan dan kekurangan masing-masing protokol akan membantu menentukan pilihan yang tepat sesuai kebutuhan proyek, terutama saat menghubungkan banyak sensor dan aktuator sekaligus. Contoh implementasi SPI menggunakan Arduino di Proteus dapat dipelajari pada artikel Komunikasi SPI Menggunakan Arduino di Proteus.

I²C dalam Konteks Komunikasi Data yang Lebih Luas

I²C hanyalah salah satu dari beberapa metode komunikasi data yang tersedia pada mikrokontroler, selain komunikasi serial UART yang lebih umum digunakan untuk menghubungkan Arduino dengan komputer atau modul eksternal seperti GPS dan Bluetooth. Memahami perbedaan mendasar antara I²C dan komunikasi serial akan memperkuat fondasi sebelum mempelajari protokol komunikasi yang lebih kompleks pada sistem industri. Penjelasan lengkap mengenai komunikasi serial dapat dipelajari pada artikel Penggunaan Komunikasi Serial untuk Mengirim Data.

Menggabungkan I²C dengan Komunikasi SPI dalam Satu Sistem

Dalam proyek IoT industri yang lebih kompleks, tidak jarang satu sistem menggunakan kombinasi I²C dan SPI secara bersamaan, misalnya I²C untuk sensor lingkungan dan SPI untuk modul penyimpanan data berkecepatan tinggi seperti SD card atau EEPROM eksternal. Memahami cara mengintegrasikan sensor dan aktuator melalui SPI akan melengkapi kemampuan yang sudah didapat dari praktikum I²C ini. Selengkapnya pada artikel Penggunaan Komunikasi SPI untuk Sensor dan Aktuator di Proteus.

Tips Troubleshooting Komunikasi I²C yang Gagal

Kegagalan komunikasi I²C sering kali disebabkan oleh masalah sederhana seperti pull-up resistor yang tidak terpasang, alamat slave yang salah, atau kabel SDA dan SCL yang tertukar. Menggunakan I²C Scanner sederhana sebelum menjalankan program utama dapat membantu memverifikasi apakah perangkat slave sudah terdeteksi dengan benar pada bus I²C. Selain itu, pastikan panjang kabel tidak terlalu panjang karena I²C memang dirancang untuk komunikasi jarak dekat di dalam satu board atau antar board yang berdekatan saja.

Baca juga: Ingin Jadi Ahli IoT & Otomasi? Semua Bisa Dimulai dari Arduino! untuk memahami roadmap lengkap belajar Arduino dari dasar hingga proyek IoT.

Related Articles

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 813-3333-8060 Training Korporat & Toko Hardware