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








