Laporan Praktikum
Interface Serial I2C
Pemrograman Mikrokontroler
Oleh :
Nanak Cito Tetuko
10511810000087
Dosen Pengampu :
Brian Raafiu [Link], M.T.
DEPARTEMEN TEKNIK INSTRUMENTASI
INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA
2020
BAB I
DASAR TEORI
1.1 I2C
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah
menggunakan dua saluran yang didesain khusus untuk mengirim maupun menerima data.
Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa
informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C
Bus dapat dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai transfer
data pada I2C Bus dengan membentuk sinyal Start, mengakhiri transfer data dengan
membentuk sinyal Stop, dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati
master.
Gambar 1 Kondisi Sinyal Start dan Stop
Sinyal Start merupakan sinyal untuk memulai semua perintah, dide_nisikan sebagai perubahan
tegangan SDA dari 1 menjadi 0 pada saat SCL 1. Sinyal Stop merupakan sinyal untuk
mengakhiri semua perintah, dide_nisikan sebagai perubahan tegangan SDA dari 0 menjadi 1
pada saat SCL 1. Kondisi sinyal Start dan sinyal Stop seperti tampak pada Gambar1
Gambar 2 Sinyal ACK dan NACK
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan dengan
ACK Setelah transfer data oleh master berhasil diterima slave, slave akan menjawabnya dengan
mengirim sinyal acknowledge, RTC sebagai Interface I2C.
yaitu dengan membuat SDA menjadi 0 selama siklus clock ke 9. Ini menunjukkan bahwa Slave
telah menerima 8 bit data dari Master. Kondisi sinyal acknowledge seperti tampak pada
Gambar 2
Dalam melakukan transfer data pada I2C Bus, kita harus mengikuti tata cara yang telah
ditetapkan yaitu:
1. Transfer data hanya dapat dilakukan ketikan Bus tidak dalam keadaan sibuk.
2. Selama proses transfer data, keadaan data pada SDA harus stabil selama SCL dalam
keadan tinggi. Keadaan perubahan 1 atau 0 pada SDA hanya dapat dilakukan selama
SCL dalam keadaan rendah. Jika terjadi perubahan keadaan SDA pada saat SCL dalam
keadaan tinggi, maka perubahan itu dianggap sebagai sinyal Start atau sinyal Stop.
Gambar 3 Trasfer Bit pada I2C bus
1.2 RTC Sebagai Interface I2C
Real Time Clock merupakan suatu IC yang memiliki fungsi sebagai penyimpan waktu dan
tanggal. RTC (Real time clock) adalah jam elektronik berupa chip yang dapat menghitung
waktu dan menyimpan data waktu tersebut secara real time. RTC dilengkapi dengan baterai
sebagai penyedia daya pada IC. RTC cukup akurat sebagai pewaktu (timer) karena
menggunakan osilator kristalf Beberapa. contoh IC RTC yang ada di pasaran seperti
D812C887, DSl307, DSl302, DS3234. Salah satu IC RTC yang banyak digunakan yaitu adalah
DS1307. DS1307 merupakan Real-time clock (RTC) yang memiliki antarmuka serial Two-
wire 12C (Inter Integrated Circuit). Beberapa keistimewaan RTC
Gambar 4 Modul Real Time Clock (RTC)
DSl307 yaitu sinyal keluaran berupa gelombang kotak terprogram (Programmable
squarewave), deteksi otomatis kegagalan-daya (power-fail), konsumsi daya kurang dari
500mA menggunakan mode baterai cadangan dengan operasional osilator. Tersedia untuk
industri dengan ketahanan suhu: -40C hingga +85C. Tersedia dalam kemasan 8 pin DIP atau
SOIC.
Gambar 5 IC RTC DS1307
Penjelasan dari masing-masing kaki adalah sebagai berikut:
1. X1 dan X2 adalah pin yang dihubungkan dengan kristal 32.768 KHz.
2. VBAT adalah pin yang dihubungkan masukan baterai +3V.
3. GND adalah pin yang dihubungkan Ground.
4. SDA adalah pin yang difungsikan sebagai jalur data.
5. SCL adalah pin yang fungsikan sebagai jalur clock.
6. SQW/OUT adalah pin yang digunakan sebagai keluaran sinyal kotak.
7. VCC adalah pin untuk mencatu tegangan 5V.
DSl307 memiliki akurasi hingga tahun 2100. Sistem RTC DS1307 memerlukan baterai
eksternal 3 volt yang terhubung ke pin Vbat dan ground. Pin X1 dan X2 dihubungkan dengan
kristal osilator 32,768 KHz. Sedangkan pin SCL, SDA, dan SQW/OUT di-pull-up dengan
resistor (nilainya 1k s.d 10k) ke Vcc. Untuk membaca data tangal dan waktu yang tersimpan
di memori RTC DS1307 dapat dilakukan melalui komunikasi serial I2C.
1.3 Interface I2C pada Arduino
Arduino sudah menyediakan pin dengan fitur SDA dan SCL, pada mikrokontroler
jenisArduino UNO pin SDA/SCL berada pada pin Analog 4 dan 5. Berikut adalah contoh
pengaplikasian interface I2C pada perangkat RTC.
Rangkaian :
Pada Gambar 9.8, ArduinoUNO diberikan interface berupa RTC dan interface LCD untuk
menampilkan data berupa waktu. Prinsip kerjanya adalah mikrokontroler akan melakukan
request data setiap waktu ke RTC dan akan mengumpan ke LCD untuk menampilkan waktu
yang telah diterima dari RTC.
Pemrograman :
Pada Pemrograman RTC Arduino telah tersedi library"<Wire.h>" untuk mengaktifkan jalur
komunikasi data I2C dan library "RTClib.h" untuk mengaktifkan fitur RTC.
BAB II
PROSEDUR PRAKTIKUM
2.1 Alat dan Bahan
Adapun alat dan bahan yang dibutuhkan untuk membuat rangkaian dan program
serial I2C adalah sebagai berikut :
1. Alat dan Bahan :
1. Laptop
2. Software Arduino IDE
3. Software Proteus
4. Library Arduino UNO ( Proteus )
5. LCD LM016 L ( Proteus )
6. Buzzer ( Proteus )
7. IC DS1307 ( Proteus )
8. Crystal ( Proteus )
2.2 Langkah Praktikum
Adapun Langkah praktikum untuk membuat rangkaian dan program serial I2C
sebagai berikut :
1. Membuat desain rangkaian
2. Membuat program pada Arduino IDE
3. Mengupload program yang sudah dibuat di Arduino IDE ke Mikrokontroler Arduino
UNO
4. Menjalankan hasil Interface Serial I2C
BAB III
HASIL PRAKTIKUM
3.1 Rangkaian
1. Saat Sebelum Alarm
2. Saat Alarm
3. Saat Sesudah Alarm
3.2 Program
BAB IV
ANALISIS
4.1 Rangkaian
Interfacingnya adalah sebagai berikut :
No Pin Nama ( Komponen) Koneksi (Arduiono)
(Komponen)
4 RS (LCD) PIN 8
5 RW (LCD) PIN 7
6 E (LCD) PIN 6
7-10 DB0-DB3 (LCD) No Cennection
11 D4 (LCD) PIN 5
12 D5 (LCD) PIN 4
13 D6 (LCD) PIN 3
14 D7 (LCD) PIN 2
1 Vcc (Buzzer) PIN 9
6 SCL (DS1307) PIN A5
5 SDA (DS1307) PIN A4
4.2 Program
#include <Wire.h>
Digunakan untuk memasukkan library Wire.h
#include "RTClib.h"
Digunakan untuk memasukkan library RTClib.h
#include <LiquidCrystal.h>
Digunakan untuk memasukkan library LiquidCrystal.h
LiquidCrystal lcd(8, 7, 6, 5, 4, 3, 2);
Digunakan untuk mendeklarasikan pin Arduino yang digunakan untuk interface LCD
RTC_DS1307 rtc;
Digunakan untuk mendeklarasikan IC RTC DS1307 dalam rtc
char namaHari[7][12] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};
Digunakan untuk menyimpan data Multi Array tipe char (Hari)
int j,s;
Digunakan menyimpan data int j dan s
void setup(){
pinMode(9, OUTPUT);
Pin 9 sebagai output
digitalWrite(9, LOW);
Pin 9 kondisi awal LOW
[Link](16,2);
[Link]();
Memulai rtc
[Link](DateTime(2020, 11, 29, 6, 59, 50));
Menentukan Waktu awalan
}
void loop()
{
DateTime now = [Link]();
j = [Link]();
s = [Link]();
if (j == 7 && s == 0){
[Link]();
[Link](0,0);
[Link]("Alarm !!");
[Link](0,1);
[Link]("Sekarang Jam 7 Pagi");
buzzer();
Digunakan sebagai Alarm jika Jam7:00 maka buzzer akan menyala dan Ada notifikasi pada
LCD
}
else {
[Link]();
[Link](1,0);
[Link](namaHari[[Link]()]);
[Link](",");
printAngka([Link]());
[Link]("-");
printAngka([Link]());
[Link]("-");
printAngka([Link]());
[Link](4,1);
printAngka([Link]());
[Link](":");
printAngka([Link]());
[Link](":");
printAngka([Link]());
delay(1000);
}
Digunakan sebagai tata letak LCD
}
void printAngka(int digits){
if(digits < 10){
[Link]('0');
[Link](digits);
}
else [Link](digits);
}
void buzzer(){
digitalWrite(9, HIGH);
delay(3000);
digitalWrite(9, LOW);
Digunakan sebagai Inisialisasi Buzzer
}
Pada program di atas sistemnya adalah membuat tampilan detik, menit, jam, hari, bulan dan
tahun menggunakan Library RTClib.h dan membuat alarm saat jam 07:00:00. Apabila jam
menunjukkan pukul 07:00:00 maka buzzer akan aktif dan tampilan LCD ada notifikasi.
BAB V
KESIMPULAN
Adapun kesimpulan dari praktikum serial I2C adalah sebagai berikut :
1. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang
membawa informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan
dengan sistem I2C Bus dapat dioperasikan sebagai Master dan Slave. Master adalah
piranti yang memulai transfer data pada I2C Bus dengan membentuk sinyal Start,
mengakhiri transfer data dengan membentuk sinyal Stop, dan membangkitkan sinyal
clock. Slave adalah piranti yang dialamati master.
2. Arduino sudah menyediakan pin dengan fitur SDA dan SCL, pada mikrokontroler
jenis Arduino UNO pin SDA/SCL berada pada pin Analog 4 dan 5.