Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Rabu, 16 Agustus 2023

Komunikasi I2C untuk Pertukaran Data Antar Device pada Arduino


Arduino UNO

Inter-Integrated Circuit atau I2C merupakan sebuah protokol komunikasi yang digunakan untuk pertukaran data antar perangkat mikrokontroler dan sensor atau pun perangkat lainnya. I2C dirancang untuk menghubungkan berbagai perangkat dalam sebuah sistem menggunakan jalur komunikasi bersama. I2C banyak digunakan di beberapa perangkat, seperti sensor, EEPROM, RTC dan berbagai jenis chip lainnya yang mendukung komunikasi melalui I2C. 

 

Komunikasi I2C pada Arduinobiasanya dilakukan menggunakan dua pin, yaitu SDA (Serial Data Line) dan SCL (Serial Clock Line). SDA digunakan untuk mengirim data dan SCL digunakan untuk mengirimkan sinyal clock yang akan mengatur timing komunikasi antar perangkat yang terhubung.

 

Berikut ini uraian singkat mengenai bagaimana komunikasi I2C digunakan antara dua perangkat pada Arduino. 

 

1. Master dan Slave

Pada komunikasi I2C, terdapat salah satu perangkat yang berperan sebagai “Master” dan perangkat lainnya berperan sebagai “Slave”. Master yaitu perangkat yang menginisiasi komunikasi dan mengontrol alur komunikasi, sedangkan slave yaitu perangkat yang menerima instruksi dari master. 

2. Start Condition

Start condition merupakan proses awal pada komunikasi I2C. Ketika sinyal pin SDA berpindah dari HIGH ke LOW saat pin SCL berada pada kondisi HIGH, maka start condition akan terbentuk. Hal ini menunjukkan bahwa transmisi data akan dimulai. 

3. Addressing

Alamat slave yang akan dituju dikirimkan oleh master bersamaan dengan bit pembacaan atau penulisan. Setiap perangkat slave memiliki alamat yang unik dan alamat tersebut digunakan oleh master untuk mengidentifikasi perangkat yang ingin berkomunikasi.

4. Data Transfer

Master dan slave akan berkomunikasi dengan mengirimkan atau menerima data dalam bentuk byte. Data tersebut dikirim dalam bentuk urutan MSB (Most Significant Bit) terlebih dahulu. 

5. Acknowledge (ACK) Bit

Setiap byte data yang diterima oleh slave akan diikuti dengan bit ACK yang dikirimkan oleh slave sebagai konfirmasi bahwa byte data diterima dengan baik. Slave akan mengirimkan bit NACK jika tidak bisa atau tidak ingin menerima lebih banyak data.

6. Stop Condition

Stop condition merupakan akhir dari suatu proses komunikasi I2C. Ketika sinyal pin SDA berpindah dari LOW ke HIGH saat pin SCL berada pada kondisi HIG, maka stop condition akan terbentuk. Komunikasi I2C pada Arduino diimplementasikan menggunakan library Wire (Wire.h) menggunakan fungsi “Wire.begin()” , “Wire.beginTransmission()” , “Wire.write()” , “Wire.endTransmission()” dan “Wire.requestFrom()”. Jadi, Anda dapat dengan mudah mengatur komunikasi I2C antara perangkat master dan slave. Berikut ini contoh sederhana untuk mengirim data dari master ke slave menggunakan komunikasi I2C : 

 

I2C

Master (Read)

 

#include <Wire.h>

void setup() {

  Wire.begin(); // Memulai komunikasi I2C

}

 

void loop() {

  Wire.beginTransmission(8); // Mengirim data ke perangkat dengan alamat 8

  Wire.write('A'); // Mengirim karakter 'A'

  Wire.endTransmission(); // Mengakhiri transmisi

  delay(1000);

}

 

Slave (Penerima)

 

#include <Wire.h>

void setup() {

  Wire.begin(8); // Memulai komunikasi I2C dengan alamat 8

  Wire.onReceive(receiveEvent); // Mengatur fungsi untuk menangani data masuk

  Serial.begin(9600);

}

 

void loop() {

  delay(100);

}

void receiveEvent(int byteCount) {

  while (Wire.available()) {

    char data = Wire.read(); // Membaca data yang diterima

    Serial.print("Received: ");

    Serial.println(data);

  }

}

 

Pada contoh di atas, perangkat master dengan alamat 0 mengirimkan karakter “A” ke perangkat slave dengan alamat 8. Kemudian perangkat slave membaca data yang diterima dan mencetaknya melalui serial monitor.

 

0 on: "Komunikasi I2C untuk Pertukaran Data Antar Device pada Arduino"