KOMUNIKASI I²C MENGGUNAKAN 2 ARDUINO UNO

🎯 1. TUJUAN PRAKTIKUM
Mahasiswa mampu:
- Memahami prinsip komunikasi I²C
- Menghubungkan dua Arduino menggunakan I²C
- Mengirim dan menerima data string
- Menganalisis sinyal SDA dan SCL
- Memahami peran pull-up resistor
- 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
- Hubungkan kedua Arduino sesuai tabel
- Pastikan pull-up resistor terpasang
- Upload program master
- Upload program slave
- Buka Serial Monitor pada slave
- Amati data yang diterima
- 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:
- Mengapa I²C membutuhkan pull-up resistor?
- Apa yang terjadi jika pull-up dilepas?
- Mengapa I²C disebut half duplex?
- Berapa maksimum device dalam 7-bit addressing?
- Apa fungsi ACK?
- Apa itu clock stretching?
- Mengapa I²C jarang digunakan pada PLC industri untuk jarak jauh?
🎓 10. TUGAS TAMBAHAN (LEVEL ENGINEERING)
- Ubah alamat slave menjadi 0x10
- Tambahkan pengiriman data numerik (integer)
- Ubah kecepatan I²C menjadi 400kHz
- setClock(400000);
- Tambahkan sensor I²C ketiga
- 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
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.




