0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan

Modul III

Modul 3 membahas komunikasi I2C, sensor digital, dan keypad. Praktikan belajar cara mendeteksi alamat perangkat I2C, mengakses sensor suhu dan kelembaban DHT11, serta membuat program inputan menggunakan keypad 4x4 dan LCD 16x2. Praktikan juga membuat sistem login sederhana menggunakan keypad untuk verifikasi PIN.

Diunggah oleh

jojo
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan

Modul III

Modul 3 membahas komunikasi I2C, sensor digital, dan keypad. Praktikan belajar cara mendeteksi alamat perangkat I2C, mengakses sensor suhu dan kelembaban DHT11, serta membuat program inputan menggunakan keypad 4x4 dan LCD 16x2. Praktikan juga membuat sistem login sederhana menggunakan keypad untuk verifikasi PIN.

Diunggah oleh

jojo
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 21

LAPORAN PRAKTIKUM

MIKROPROSESOR
MODUL III : KOMUNIKASI 12C, DIGITAL SENSOR DAN
KEYPAD

DISUSUN OLEH :
Yulianto Tri Atmojo
(18101107)
Partner Praktikum :
1. Wulan Tarru’ P (18101106)
2. Zianatul Khoeriyah (18101108)
Tanggal Praktikum : 14 Mei 2020
Asisten Praktikum :
1. Muhammad Alwi Adnan (17101066)
2. Melia Mispriatin (17101146)
3. Wahyu Junianto (17101121)

LABORATORIUM TEKNIK ELEKTRONIKA DAN TEKNIK DIGITAL


FAKULTAS TEKNIK TELEKOMUNIKASI DAN ELEKTRO (FTTE)
INSTITUT TEKNOLOGI TELKOM
JL. D.I. PANJAITAN 128 PURWOKERTO
2020
MODUL III
KOMUNIKASI 12C, DIGITAL SENSOR DAN KEYPAD

I. TUJUAN
1. Praktikan mampu memahami ap aitu komunikasi 12C dan mencari alamat dari
perangkat yang menggunakan komunikasi 12C
2. Praktikan mampu menambahkan sebuah library pada Arduino IDE
3. Praktikan mampu mengakses sebuah sensor digital DHT 11
4. Praktikan mampu membuat program sederhana yang memanfaatkan keypad 4X4
dan LCD 16X2.

II. ALAT DAN BAHAN


1. Board Arduino uno R3 : 1 buah
2. Kabel USB tipe A dan B : 1 buah
3. Breadboard : 1 buah
4. Keypad 4X4 : 1 buah
5. LCD 16X2 : 1 buah
6. I2C modul : 1 buah
7. DHT 11 : 1 buah
8. Library I2C,Adfriut keypad dan DHT
9. Kabel Jumper male-to male sesuai kebutuhan

III. DASAR TEORI


1. Modul GSM SIM800
I2C singkatan dari Inter Integrated Circuit, adalah sebuah protokol untuk
komunikasi serial antar IC, dan sering disebut juga Two Wire Interface (TWI). Bus
yang digunakan untuk komunikasi antara mikrokontroler dan divais periferal seperti
memori, sensor temperatur dan I/O expander.
Komunikasi dilakukan melalui dua jalur: SDA (serial data) dan SCL (serial clock).
Setiap divais I2C memiliki 7-bit alamat yang unik. MSB adalah fix dan ditujukan
untuk kategori divais. Sebagai contoh, 1010 biner ditujukan untuk serial EEPROM.
Tiga bit berikutnya memungkinkan 8 kombinasi alamat I2C, yang berarti,
dimungkinkan 8 divais dengan tipe yang sama, beroperasi pada bus I2C yang sama.
Pengalamatan 7-bit memungkinkan 128 divasi pada bus yang sama. Alamat I2C
dikirim dalam byte pertama. LSB dari byte ini digunakan untuk menunjukkan bila
master akan melakukan penulisan (0) atau pembacaan (0) terhadap slave.
Divais yang mengirim data sepanjang bus disebut master, divais yang menerima data
disebut slave. Master memulai transmisi dengan sebuah sinyal start, dan
menghentikan transmisi dengan sebuah sinyal stop pada jalur SDA. Selama sinyal
start dan stop, jalur SCL harus dalam keadaan high. Setelah master memulai
pengiriman data dengan sebuah sinyal start, master menulis satu byte alamat divais
kepada slave. Setiap byte data harus memiliki panjang 8-bit. Slave harus
memberikan konfirmasi dari byte data yang diterimanya dengan sebuah bit
acknowledge (ACK).

Gambar 3.3.1 I2C [1]

2. DHT11
Untuk membaca atau mengetahui nilai temperature (suhu) biasanya kita
memakai thermometer. Jika pada aplikasi Arduino biasanya kita gunakan sensor
suhu LM35 seperti pada artikel “6 Channel Sensor Suhu dengan Arduino” .
Sedangkan untuk membaca besaran kelembaban udara, kita memakai alat
Higrometer, dan pada aplikasi Arduino biasanya memakai sensor DHT11, selain
murah harganya juga mudah diperoleh di toko – toko komponen elektronik. Ada
sih tipe yang lain seperti SHT11 atau DHT22. Kali ini kita pelajari dulu sensor
suhu dan kelembaban DHT11 dengan Arduino. Ya, selain dapat membaca
kelembaban, DHT11 juga mampu membaca temperatur linkungan.
Spesifikasi sensor suhu kelembaban DHT11 :
 Tegangan input : 3,5 – 5 VDC
 Sistem komunikasi : Serial (single – Wire Two way)
 Range suhu : 00C – 500C
 Range kelembaban : 20% – 90% RH
 Akurasi : ±20C (temperature) ±5% RH (humidity) [2]

3. Keypad Matrix 4x4


Keypad adalah bagian penting dari suatu perangkat elektronika yang
membutuhkan interaksi manusia. Keypad berfungsi sebagai interface antara
perangkat (mesin) elektronik dengan manusia atau dikenal dengan istilah HMI
(Human Machine Interface). Matrix keypad 4×4 pada artikel ini merupakan salah
satu contoh keypad yang dapat digunakan untuk berkomunikasi antara manusia
dengan mikrokontroler. Matrix keypad 4×4 memiliki konstruksi atau susunan yang
simple dan hemat dalam penggunaan port mikrokontroler. Konfigurasi keypad
dengan susunan bentuk matrix ini bertujuan untuk penghematan port
mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada suatu
sistem dengan mikrokontroler. Konstruksi matrix keypad 4×4 untuk
mikrokontroler dapat dibuat seperti pada gambar berikut.

Gambar 3.3.2 Konstruksi Matrix Keypad 4x4 [3]


IV. HASIL DATA
Percobaan 1 :

Gambarr 3.4.1 Rangkaian Scanning Alamat Pada Modul I2C

#include <LiquidCrystal.h>
LiquidCrystal LCD(12, 11, A5, A4, A3, A2);
void setup()
{ LCD.begin(16, 2);
LCD.print("hello, world!");
} void loop()
{
int tmp = analogRead(A0);
float voltage = (tmp * 5.0)/1024;
float milliVolt = voltage * 1000;
float tmpCel = (milliVolt-500)/10 ;
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("Suhu:");
LCD.print(tmpCel);
LCD.print("C");
delay(1000);
}
Percobaan 2:

Gambar 3.4.2 Rangkaian akses digital sensor DHT 11

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, A5, A4, A3, A2);
void setup()
{
lcd.begin(16, 2);
lcd.print("hello, world!");
}
void loop(){
int tmp = analogRead(A0);
float voltage = (tmp * 5.0)/1024;
float milliVolt = voltage * 1000;
float tmpCel = (milliVolt-500)/10 ;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu : ");
lcd.print(tmpCel);
lcd.print(" C");
delay(1000);
}
Percobaan 3 :

Gambar 3.4.3 Rangkaian Akses Keypad Matrix 4x4

#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, A5, A4, A3, A2);
const byte ROWS = 4; // 4 Baris
const byte COLS = 4; // 4 Kolom
char keys[ROWS][COLS] = {
//Mendefinisikan char key sesuai dengan peta
posisi keypad
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
//Untuk Pin Baris Keypad
byte colPins[COLS] = {3, 2, 1, 0};
//Untuk Pin Kolom Keypad
Keypad keypad = Keypad( makeKeymap(keys),
rowPins, colPins, ROWS, COLS );
// Menginisialisasi atau menghubungkan tombol
keypad dengan keypad yang sudah didefinisikan
sebelumnya
void setup()
{
lcd.begin(16,2);
lcd.setCursor(0, 0);
lcd.print("Key Is : ");
}
void loop()
{
char key = keypad.getKey();
if (key)
{
lcd.setCursor(9, 0);
lcd.print(key);
}
}
Percobaan 4 :

Gambar 3.4.4 Tampilan Awal Login


#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, A5, A4, A3, A2);
byte state;
byte code;
const byte ROWS = 4; // 4 Baris
const byte COLS = 4; // 4 Kolom
char keys[ROWS][COLS] = {
//Mendefinisikan char key sesuai dengan peta keypad
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
//Untuk Pin Baris Keypad
byte colPins[COLS] = {3, 2, 1, 0};
//Untuk Pin Kolom Keypad
char data_pass[] = "123456";
Keypad keypad = Keypad( makeKeymap(keys),
rowPins, colPins, ROWS, COLS );
// Menginisialisasi atau menghubungkan keypad
dengan
keypad yang sudah didefinisikan sebelumnya
void setup()
{
lcd.begin(16,2); //lcd.backlight();
reset();
}
void reset()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem Keamanan");
lcd.setCursor(0, 1);
lcd.print("PIN:");
state = 0;
code = 0;
}
void gagal()
{
lcd.setCursor(0, 0);
lcd.print("Password Salah!");
delay(2000);
lcd.clear();
reset();
}
void sukses()
{
a:
lcd.setCursor(0, 0);
lcd.print("Login Sukses..!");
lcd.setCursor(0, 1);
lcd.print("* : Logout");
char key = keypad.getKey();
if (key != '*')
{
goto a;
}
else
{
reset();
}
}
void loop()
{
char key = keypad.getKey();
// Membaca input keypad dengan metode Scanning
if (key)
{
if (key != '#')
{
lcd.setCursor(state + 5, 1);
if (data_pass[state] == key)
{
code++;
}
else
{
code--;
}
lcd.print("*");
delay(100);
state++;
}
else
{
if (code == 6)
{
lcd.clear();
sukses();
}
else
{
lcd.clear();
gagal();
}
}
}
}
V. ANALISIS
Praktikum modul 3 akan mempelajari tentang komunikasi 12C, digital sensor
dan juga keypad menggunakan Arduino IDE yang dikonekan dengan mikrokontroler,
dimana mikrokontroler yang dipakai yaitu Arduino UNO R3. Pada modul ke 3 ini
untuk percobaan pertama praktikan membuat rangkaian scanning alamat dengan
menggunakan alat dan bahan yaitu breadboard,LCD 16x2,dan jumpe. Dari percobaan
ini praktikan mencari alamat I2C. Dalam percobaan ini terdapat perulangan address
secara berurutan dari 1-127. Jika alamat terdeteksi dalam program maka nanti akan
berhenti mendapatkan output alamatnya. Jika belum mendapatkan alamatnya maka
akan melanjtkan looping selanjutnya, jika alamat tidak ditemukan maka dapat output
alamat tidak ditemukan.

Pada percobaan kedua, praktikan melakukan akses digital sensor DHT 11.
Rangkaian yang dibutuhkan hamir sama dengan yang sebelumnya hayna saja
ditambah dengan sensor DHT 11. Setelah praktiikan selesai membuat rangkaian,
selanjutnya praktikan melalukan program script pada Arduino IDE. Setelah
program selasai selanjutnya dijalankan untuk mendeteksi kelembaban dan suhu
dengan sensor DHT 11. Hasil pengukuran kelembaban dan suhu dari sensor
DHT11 akan ditampilkan pada LCD 16x2.

Percobaan ketiga, Praktikan melakukan percobaan untuk akses keypad


matriks 4x4. Pada percobaan ini rangkain yang digunakan hampir sama juga
dengan percoban kedua. Hanya saja sensor suhu yang tadi digunakan dihialngkan
dan ditambahkan keypad matrix 4x4. Setelah praktikan selasai membuat rangkaian,
seperti biasa selanjutnya melakukan program pada script. Kemudian ntuk
memberikan nilai pada keypad dan pada void loopnya terdapat syntax yang
menerima masukkan dari keypad yang ditekan dan selanjutnya ditampilkan pada
LCD 16x2.

Pada program percobaan kali ini terdapat library LCD dan library keypad.
Kemudian untuk baris dan kolomnya sesuai dengan keypad dimana setiap baris dan
kolomnya mempunyai karakteristik sendiri denan dimensi 4x4. Untuk pin baris
dari pin 4 sampai pin 7, dan untuk pin kolom dari pin 0 sampai pin 3. Pada void
setup menampilkan kalimat “Key is :” pada baris ke nol dan kolom ke 0. Pada void
loop terdapat key yang berarti value nya karakter dari keypad, kemudian ketika key
itu value maka akan ditampilkan baris dan kolom ini berupa karakter di tekan dari
key.
Pada percobaan keempat, Praktikan melakukan percobaan rangkaian sistem
login sederhana. Pada Percobaan keempat ini menggunakan rangkaian yang sama
persis dengan percobaan 3, hanya saja dibedakan dengan program scriptya. Selain
itu, pada script terdapat juga inisialisasi matriks 4x4 untuk memberikan nilai pada
keypad ketika ditekan. Dan pada script juga terdapat data_pass nilai password
yaitu angka 123456 yang digunakan untuk password login. Setelah program selesai
selanjutnya dijalankan, LCD akan menampilkan tulisan output “Sistem
Keamanan” dan “PIN :” , yang selanjutkan kita masukan password tad yang
terdapat pada program. Jika password yang dimasukan benar maka akan berhasil
login, begitupun sebaliknya. Jika password yang dimasukan salah mka akan keluar
output tulisan “Password Salah!” pada LCD.

Untuk password di ambil dari karakter keypad, pada void setup menggunakan
LCD 16x2 dan terdapat reset yang berfungsi untuk menampilkan “Sistem
Keamanan” dan “PIN :” dengan keadaan state 0 dan code 0. Pada keadaan apabila
password salah atau gagal akan menampilkan output “Password Salah” dengan
delay 2 detik kemudian akan menampilkan reset atau tampilan awal lagi, lalu
apabila password berhasil atau sukses menampilkan output “Login Sukses”
Apabila key sama dengan pagar maka password yang kita masukkan sama dengan
6 digit sesuai dengan data pass program maka akan menampilkan sukses
sedangkan ketika tidak sama dengan 6 atau passwordnya tidak sama dari data pass
maka menampilkan tampilan gagal.
IV. DAFTAR PUSTAKA

[1] Tjahyadi, Christanto, "Memprogram EEPROM I2C dengan BASCOM-


AVR," 2020. [Online]. Available:
http://christianto.tjahyadi.com/belajar-mikrokontroler/komunikasi-
i2c.html. [Accessed 15 June 2020].
[2] Anonymous, "Sensor Suhu dan Kelembaban DHT11 dengan Arduino,"
2019. [Online]. Available: https://www.ardutech.com/sensor-suhu-dan-
kelembaban-dht11-dengan arduin o/. [Accessed 15 June 2020].
[3] Anonymous, "Matrix Keypad 4×4 Untuk Mikrokontroler," [Online].
Available: https://elektronika-dasar.web.id/matrix-keypad-4x4-untuk-
mikrokontroler/ [Accessed 15 June 2020].
VI. LAMPIRAN
1. Apa fungsi dari Serial Monitor?
Berfungsi untuk memperlihatkan pergerakan/pertukaran data selama
Arduino menyala
2. Apa maksud dari potongan program berikut?
for(address = 1; address < 127; address++)

perulangan yang dimulai dari nilai variable address = 1 dan berakhir saat
nilai variable address = 126

3. Jika I2C bisa mengalamatkan sampai 127 alamat. Pada alamat berapa I2C
yang digunakan terdeteksi?
Pada alamat 0x27 dalam hexadecimal atau 39 desimal

4. Apa fungsi dari modul I2C, apa bedanya dengan menggunakan dan tidak
menggunakan mpdul I2C pada LCD 16x2?
Mengubah jalur pengendalian modul LCD dari paralel menjadi serial.
5. Apa bedanya pada saat kemarin menggunakan LM35 dan sekarang
menggunakan DHT 11?
LM35 hanya bisa mengukur suhu sedangkan DHT 11 bisa mengukur
kelembaban dan suhu.
6. Kenapa DHT 11 disebut sensor digital? Dan kenapa LM35 disebut sensor
analog?
Karena output yang dihasilkan DHT 11 berupa digital sedangkan
LM35 analog.

7. Apa fungsi dari sebuah library?


Library berfungsi mengeksekusi perintah-perintah tertentu..
8. Kenapa keypad yang digunakan disebut keypad matrix?
Karena pushbuttonnya dirangkai dengan konfigurasi berbentuk matriks
9. Apa maksud dari potongan program berikut:

Char key = keypad.getKey();

If(key)
Mengecek sebuah kondisi apakah keypad sedang ditekan atau tidak

10. Apa fungsi dari sebuah void/fungsi?


Berfungsi membuat fungsi baru yang berisi kumpulan syntax.
11. Mengapa pada percobaan ke 4 variabel data_pass menggunakan tipe data char
dan array?
Karena tipe data yang masuk pada melalui keypad adalah char
12. Mengapa dibutuhkan void reset?
Untuk mengembalikan semua nilai ke nilai awal.
13. Apa maksud dari potongan program berikut: goto a;
Mengubah alur eksekusi program menuju ke label a.
14. Mengapa pada saat percobaan ke 3 keypad yang ditekan berubah-ubah di
LCD, tidak bergeser ke kanan?
Karena program pada percobaan ke 3 hanya menampilkan sesuai yang
ditekan saat itu

Modifikasilah program pada percobaan ke 4, sehingga memenuhi ketentuan


berikut:
Panjang PIN adalah X digit.
Jika sudah X kali gagal, maka tulisan “PIN DIBLOKIR” dan user tidak bisa
memasukan pin lagi
X adalah digit terakhir NIM
18101107 = maka X adalah 7.
//Yulianto Tri Atmojo
//18101107
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, A5, A4, A3, A2);
byte state;
byte code;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
byte colPins[COLS] = {3, 2, 1, 0};
char data_pass[] = "7";
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS,
COLS );
int x;

void setup() {
lcd.begin(16,2);
reset();
}
void reset()
{ lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem Keamanan");
lcd.setCursor(0, 1);
lcd.print("PIN:");
state = 0;
code = 0;
}
void gagal()
{
lcd.setCursor(0, 0);
lcd.print("Password Salah!");
delay(2000);
lcd.clear();
reset();
}

void blokir()
{
f:
lcd.setCursor(0, 0);
lcd.print("PIN DIBLOKIR");
goto f;

}
void sukses()
{ a:
lcd.setCursor(0, 0);
lcd.print("Login Sukses..!");
lcd.setCursor(0, 1);
lcd.print("* : Logout");
char key = keypad.getKey();
if (key != '*')
{
goto a;
}
else
{
reset();
}
}
void loop() {
char key = keypad.getKey();
if (key)
{ if (key != '#')
{
lcd.setCursor(state + 5, 1);
if (data_pass[state] == key)
{ code++;
}
else
{
code--;
}
lcd.print("*");
delay(100);
state++;
}
else
{ if (code == 1)
{
lcd.clear();
sukses();
}
else
{
lcd.clear();
gagal();
x++;
if (x==3)
{
lcd.clear();
blokir();
}
}

}
}
}

Anda mungkin juga menyukai