Praktek Komunikasi Serial Sinkron-I2C Menggunakan Arduino - TeachMeSoft

Praktek Komunikasi Serial Sinkron-I2C Menggunakan Arduino

Praktek Komunikasi Serial Sinkron-I2C Menggunakan Arduino


Teori Singkat


Komunikasi data I2C merupakan komunikasi data digital serial secara sinkron, yaitu membutuhkan jalur sinkronisasi pewaktu transmisi data serial. Karena bersifat komunikasi sikron maka pola komunikasi antar piranti hanya bisa dilakukan secara half duplex.

Kelebihan dari komunikasi serial sinkron I2C adalah memungkinkan untuk dilakukan komunikasi serial multi-node, yaitu komunikasi dengan banyak piranti dalam satu bus komuniksai yang sama. Hal ini berbeda dengan komunikasi tak sinkron UART yang bersifat peer-to-peer yaitu hanya bisa dilakukan oleh dua piranti saja.

Selain itu, teknologi i2C tidak perlu pengaturan boudrate karenan komunikasi dilakukan secara sinkron dengan kecepatan yang setiap saat bias dirubah. Gambar 1 menunjukan bus i2C untuk komunikasi beberapa piranti sekaligus.
Bus komunikasi I2C
Gambar 1. Bus komunikasi I2C

Umumnya, Antarmuka I2digunakan Arduino untuk berkomunikasi dengan sensor-sensor. Dengan kelebihan bus I2C tersebut maka Aduino mampu membaca banyak sensor dalan satu bus saja, hal ini memberikan efektifitas perancangan system benam semakin tinggi.

Dengan bus I2C maka akan dihemat pemakaian pin Arduino dan memudahkan perancangan system elektronikanya (missal: PCB). Seperti yang ditunjukan oleh Gambar 1, pada bus komunikasi I2C terdapat 1-MASTER dan n-SLAVE, bus komunikasi I2C terbagi menjadi dua: SDA(serial data) dan SCL (synchronous clock).

SDA adalah bus transmisi data secara dua arah yang bersifat half duplex, sehingga hanya ada satu piranti saja yang boleh menggunakan dalam satu waktu. Sedangkan SCL adalah bus transmisi detak sinkronisasi yang bersifat satu arah, yaitu hanya piranti MASTER saja yang boleh menggunakan. Komunikasi hanya bisa dilakukan oleh MASTER-SLAVE saja dan komunkiasi SLAVE-SLAVE tidak diperbolehkan.
Format paket transmisi data komunikasi serial sinkron I2C
Gambar 2. Format paket transmisi data komunikasi serial sinkron I2C

Format data komunikasi serial I2berbeda dengan UART. Perbedaanya adalah pada keberadaan sinyal detak sinkronisasi seperti yang ditunjukan Gambar 2 panjang data komunikasi I2bisa bervariasi tergantung jenis piranti.

Pada UART hanya dibatasi satu data saja untuk setiap paket pengirim. Frekwensi detak bus I2umumnya sangat pendek, yang hanya menghubungkan beberapa piranti dalam satu papan rangkaian tercetak (printed circuit board-PCB).

Pada papan Arduino UNO, bus I2terhubung dengan dua pin khusus yaitu : A4 (SDA) dan A5 (SCL). Dua pin tersebut secara umum adalah digunakan untuk masukan analog, namun memiliki fungsi lain yaitu sebagai bus komunikasi I2C.


Alat dan Bahan Percobaan


Pada sesi ini akan diperkenalkan tentang cara melakukan komunikasi serial papan Arduino dengan piranti RTC (real time clock) menggunakan fasilitas i2C. Adapun alat dan bahan yang digunakan selama percobaan adalah :
  1. 2 buah resistor 4K7
    Bahan percobaan yang digunakan sebagai resistor pull up bus komunikasi data serial I2C akar transmisi data bisa berjalan dengan baik.
  2. Crystal 32.768KHZ
    Bahan percobaan yang berfungsi sebagai komponen generator detak IC RTC DS1307. Berikut Gambarnya.
    Gambar 3. Crystal 32.768KHZ
  3. IC RTC DS1307
    Bahan percobaan yang berfungsi sebagai pewaktu digital dan menggunakan bus komunikasi data serial I2C. Data waktu yang diberikan oleh piranti ini meliputi : DD/MM/YY hh:mm:ss . Bentuk IC RTC DS1207 beserta tata letak kakinya ditunjukkan oleh gambar 4 berikut.
    IC Real Time Clock DS1307
    Gambar 4. IC Real Time Clock DS1307
  4. Papan Arduino UNO
    Bahan percobaan sebagai piranti digital utama untuk menguji komunikasi I2C dengan IC RTC DS1307 yang melibatkan aktivitas perancangan antarmuka perangkat keras dan pemrograman perangkat lunak.


Langkah Percobaan


Percobaan komunikasi data serial I2C oleh papan Arduino melibatkan aktifitas, yaitu perancangan antarmuka perangkat keras dan pemrograman perangkat lunak. Adapun percobaan adalah sebagai berikut :
  1. Desain antarmuka perangkat keras
    Percobaan ini melibatkan pewaktu DS1307. Gambar 5 menunjukan antarmuka perangkat keras sebagai bahan percobaan
    Antarmuka papan Arduino UNO dengan IC RTC DS1307
    Gambar 5. Antarmuka papan Arduino UNO dengan IC RTC DS1307
  2. Pemrograman perangkat lunak
    Percobaaan yang akan dilakukan adalah melakukan komunikasi I2C antara papan Arduino dengan IC RTC DS1307. Berikut ini contoh kode program anda harus buat unuk menguji komunikasi digital serial sinkron I2C dengan menggunakan library : Wire.h dan RTClib.h
    #include <Wire.h>       //definisi library I2C
    #include "RTClib.h" //definisi library RTC

    RTC_DS1307 rtc; //definisi object

    void setup(){
    Serial.begin(9600); //baudrate = 9600 bps
    if(!rtc.begin()){ //apakah RTC tidak terdeteksi?
    Serial.println("DS1307 tidak terdeteksi");
    while(1);
    }
    if(!rtc.isrunning()) { //apa RTC tidak aktif ?
    Serial.prinln("RTC tidak aktif!");
    rtc.adjust(DateTime(2018, 1, 1, 0, 0, 0));
    }
    }

    void loop(){
    DateTime now = rtc.now(); //baca info waktu RTC
    Serial.print(now.day(), Dec); //kirim data tanggal
    Serial.print('/');
    Serial.print(now.month(), Dec); //kirim data bulan
    Serial.print('/');
    Serial.print(now.year(), Dec); //kirim data tahun
    Serial.print(" ");
    Serial.print(now.hour(), Dec); //kirim data jam
    Serial.print(':');
    Serial.print(now.minute(), Dec); //kirim data menit
    Serial.print(':');
    Serial.print(now.second(), Dec); //kirim data detik
    delay(1000);
    }

    Ketik contoh program diatas kompilasi da nupload ke papan Arduino. Kemudian pengamatan dilakukan menggunakan serial monitor pada Arduino IDE dan simpulkan.

Tugas


Berikut ini deskripsi tugas yang harus anda lakukan terkait dengan tahapan-tahapan percobaan yang sudah dilakukan.
  1. Membuat program Alrm, yaitu apabila waktu yang terbaca dari RTC sama dengan waktu yang diinginkan, maka kemudian kirimkan pemberitahuan melalaui serial UART.
  2. Kompilasi dan upload kode program yang sudah anda buat, kemudian amati hasilnya
  3. Membuat laporan percobaan yang berisi foto antarmuka perangkat keras dan kode program yang berhasil dibuat dan berjalan dengan benar.




Disqus comments