Description

6. Proyek Keypad dengan Microcontroller Arduino

6. PROYEK KEYPAD DENGAN MICROCONTROLLER ARDUINO

Keypad merupakan salah satu jenis perangkat input-an berupa angka atau huruf. Terdapat beberapa jenis keypad yang bisa diimplementasikan pada Arduino, antara lain: keypad membrane, keypad plastik dan capacitive touch. Khusus keypad membrane dan plastik memiliki cara kerja yang sama, sehingga pemrogramannya pun sama.

Description

6.1 Keamanan Pintu Menggunakan

Password (Door Lock Solenoid, Keypad Membrane & LCD)

Proyek ini bertujuan untuk membuat keamanan pintu (door lock) dengan memanfaatkan solenoid yaitu slot grendel yang diaktifkan oleh magnet listrik Solenoid di-drive oleh transistor darlington TIPI 20 berjenis NPN sebagai penguatan. Jika Anda sulit mendapatkan transistor TIP120 maka Anda dapat menggantinya dengan transistor darlington TIP142 atau yang sejenisnya.

Solenoid secara default bernilai LOW, berarti ujung slot grendel pada kondisi maju atau kondisi mengunci. Ketika solenoid menerima nilai HIGH maka ujung slot grendel akan tertarik ke dalam atau dalam kondisi terbuka.

Description

Skenario proyek adalah bagaimana membuka dan mengunci slot grendel solenoid dengan cara menuliskan password melalui keypad membrane dan input keypad ditampilkan ke layar LCD 12C. Jika password yang dituliskan benar maka ujung solenoid akan ditarik ke dalam atau terbuka, sebaliknya jika password salah maka pesan kesalahan akan ditampilkan pada layar LCD, sekaligus membunyikan speaker (Buzzer) dan slot solenoid tetap dalam kondisi terkunci atau ujungnya maju ke depan. Perhatikan flowchart pada Gambar 6.8.

Gambar 6.8 Flowchart Keamanan Pintu Solenoid

Kebutuhan Bahan

Bahan Jumlah Nilai Keterangan
Jack Socket DC 1 pcs Description
Power supply DC 1 pcs 12 Volt
Solenoid 12 Volt 1 pcs
Diode 1 pcs 1 N4002
Resistor 1 pcs 1K Ohm
Transistor Darlington NPN 1 pcs TIPI 20 / TIPI 42
Buzzer Piezo 5 Volt 1 pcs Description
Keypad Membrane 1 pcs 4X4 Description
LCD 1602 Module

LCM1602 Module

1 pcs

Description

Proyek ini membutuhkan library Keypad.h yang dapat di downoad di https;LZ github.com/Nullkraft/Keypad dan library LiquidCrystal_12C.h (sudah terinstall pada proyek sebelumnya). Kemudian instal library tersebut dari menu Sketch Include Library Add .ZIP Library seperti cara sebelumnya.

Description

Kode Program

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Keypad.h>

#defne lebarPassword 7

// Inisialisasi library

// Atur alamat LC pada Bx27 untuk tampilan LCD 16 karakter 2 baris LiquidCrystal_I2C lcd(0x27, 16, 2);

char Data[lebarpassword];// 6 is the number of chars it can hold + the null

char=7

char Master[lebarPassword] = “123456”; // Password (bisa diganti dengan yang

lain)

byte data_count = 0, master_count =0;

bool Password_Benar;

int pinSolenoid = 11; // Solenioid dihubungkan dengan pin 11 Arduino

int pinBuzzer = 13; // Buzzer dihubungkan dengan pin 13 Arduino

const byte ROWS=4;

const byte COLS=4;

// Keypad ukuran 4X4

char hexaKeys[ROWS][COLS]={

{‘1’, ‘2’, ‘3’, ‘A’},

{‘4′,’5’, ‘6’, ‘B’},

{,’,6,’,8,'<L,}

{*’,’@’,“#’,’D’}

};

// Menghubugkan dengan Pin Arduino

byte rowPins[ROWS]={9, 8,7,6};

byte colpins[COLS] ={5,4,3,2};

// Inisialisasi keypad

keypad custonkeypad = Keypad(makeKeymap(hexaKeys),rowPins,colPins, ROWS, COLS);

void setup(){

pinMode(pinSolenoid, OUTPUT);

digitalwrite(pinSolenoid, LOw);// solenoid normal mengunci

pinMode(pinBuzzer, OUTPUT) ;

lcd.init(); // Inisialisasi LCD

{

lcd.backlight(); // Menghidupkan backlight

void loop() {

lcd.setCursor(0,0);

lcd.print(“Password :”);// tampilkan di LCD

char customKey = customKeypad.getKey(); // mendapatkan nilai tombol keypad if (customKey) // Memastikan jika tombol keypad ditekan

{Data[data_count]= customKey;// Menyimpan karakter ke array

lcd.setCursor(data_count, 1); // Menggerakkan kursor untuk menunjukkan penambahan karakter baru

lcd.print(Data[data_count]); // Mencetak karakter

data_count++; // Penambahan data array dengan 1

// Jika index array sama dengan jumlah karakter yang diharapkan maka banding-kan dengan master

if (data_count ==lebarPassword-1)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Password : “);

// Bandingkan nilai keypad dengan password (6 digit =”123456”)

if (strcmp(Data, Master)) {

// Jika password salah

digitalwrite(pinSolenoid, LOW); // Solenoid normal mengunci lcd.setCursor(0,1); lcd.print(“Password Salah”); // Pesan password salah ke LCD

// Bunyikan buzzer jika salah

tone(pinBuzzer, 1000); // Kirim siganal suara 1KHz

delay(1000);

noTone(pinBuzzer);

delay(1000);

}

else{

// Jika password salah

digitalwrite(pinSolenoid, HIGH); // Solenoid membuka (menarik ujung sole-noid ke dalam)

lcd.setCursor(0, 1);

lcd.print(“Password Benar”); // Pesan password benar ke LCD

}

delay(3000);

lcd.clear();

clearData();

}

}

void clearData()

{

while (data_count !=0){

Data[data_count–] = 0; // Bersihkan array untuk password baru

}

return;

{

6.2 Capacitive Touch TTP229 16 Channel

Keypad sentuh kapasitif 16 tombol ini didasarkan pada sensor dengan penginderaan akurat hingga 16 titik. Keypad solid state yang ya tahan terhadap lingkungan berdebu, cocok untuk kebutuhan teknis lapangan yang ekstrem.

Proyek keypad capacitive touch ini membutuhkan library TTP229.h yang dapat i-download di https://github.com/Arduin012/ttp229-Arduino dan library LiquidCrystal_12C.h (sudah terinstall pada proyek sebelumnya). Kemudian nstal library tersebut dari menu Sketch -> Include Library Add .ZIP Library Arduino seperti cara sebelumnya.

Gambar 6.10 Instlasi library TTP229

Bahan Jumlah Nilai Keterangan
Capacitive Touch Keypad 1 pcs TTP229
LCD 16×2 Module +LCM1602 I2C 1 pcs Description

Description

Pin SCL dan pin SDO sensor touch dihubungkan ke Pin D2 dan pin D3 Arduino. Pin VCC dan GND sensor touch dihubungkan ke tegangan 5V dan GND Arduino. Jumper atau hubungkan singkat pada PI (pin 3 dan pin 4) dan P2 (pin 5) seperti tampak pada diagram sketch di atas.

Kode Program

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <TTP229.h>

#define pinSCL 2// Hubungkan pin SCL TTP229 ke pin 2 Arduino

#define pinSDo 3 // Hubungkan pin SDO TTP229 ke pin 3 Arduino

LiquidCrystal_I2C lcd(0x27,16,2);

TTP229 sensorTouch(pinSCL,pinSDO); // Instansiasi objek sensor

int old =0;

void setup() {

Serial.begin(9600);

pinMode(pinSCL, OUTPUT);

pinMode(pinSDO, INPUT);

lcd.init();

lcd.backlight();

lcd.setCursor(0, 0);

lcd.print(“Angka :”);

}

void loop(){

int Key = getkey();

if(Key!=0&Key!= old)

{

Serial.print(“TEKAN —>“);

Serial.print1n(Key);

lcd.clear();

lcd.setCursor(0,1);

lcd.print(“Tombol Angka: “ + String(Key));

}

old=Key;

}

byte getkey(void)

{

byte cnt;

byte num=0;

for(cnt=1;cnt<17; cnt++)

{

digitalwrite(pinSCL, LOW);

if (digitalRead(pinSDO) ==0)

num=cnt;

digitalwrite(pinSCL,HIGH);

}

return num;

}

Jika program tersebut dijalankan maka akan dihasilkan dua output ketika capasitive touch disentuh, yaitu menampilkan angka ke serial monitor dan ke LCD, seperti tampak pada Gambar 6.8.

Gambar 6.11 Menampilkan Angka Sesuai Penekanan Tombol Capacitive. Angka yang muncul sesuai dengan tombol yang disentuh

6.3 Capacitive Touch Sensor Catalex TTP223

Sensor sentuh catalex TTP223 adalah contoh lain dari capacitive touch, bentuknya sederhana karena hanya membutuhkan satu tombol untuk menggunakannya. Sensor catalex TTP223 terdiri dari 3 pin, antara lain SIG (signal output), VCC (dihubungkan dengan tegangan positive Arduino) dan GND (dihubungkan dengan GND Arduino) seperti tampak pada Gambar 6.12

Description

Aktif atau tidaknya sensor ditentukan oleh nilai HIGH dan Low pin Proyek kali ini cukup sederhana yaitu menghidupkan dan mernatikan sekaligus menampilkan tulisan “LED Hidup” dan “LED Mati” pada saat sensor disentuh. Prinsip kerjanya sama dengan penggunaan saklar push botton pada proyek sebelumnya

Kebutuhan Bahan

Bahan Jumlah Nilai Keterangan
Modul Sensor Capacitive Touch Catalex 1 pcs
Modul OLED (0.96″) 1 pcs

Diagram Sketch

Kode Program

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include <Adafruit_TFTLCD.h>

#define pinLED 2

#define pinTouch 3

#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

void setup() {

pinMode(pinLED, OUTPUT);

pinMode(pinTouch, INPUT);

digitalwrite(pinLED, LOW);

display.begin(SSD1306_SWITCHCAPVCC, øxЗC); // inisialisasi OLED 128×64 atau 0.96”

display.clearDisplay(); // Bersihkan layar OLED

display.setTextColor(BLACK, WHITE); // Background teks inverse

display.setCursor(26, 14); // Posisi koordinat tulisan (x,y)

display.println(“SENTUH AKU!”); // Cetak tulisan

display.display(); // buffer setting

delay(3000); // tunda 3 detik

}

void loop(){

int val = digitalRead(pinTouch);

if(val == HIGH){

digitalwrite(pinLED, HIGH);

display.clearDisplay();

display.setTextColor(WHITE);

display.setCursor(26, 5);

display.println(“SENTUH AKU!”);

display.setCursor(20,15);

display.println(“— LED HIDUP —”);

display.display();

} else {

digitalwrite(pinLED, LOW);

display.clearDisplay();

display.setTextColor(WHITE);

display.setCursor(26, 5);

display.println(“SENTUH AKU!”);

display.setCursor(26, 15);

display.println(“LED MATI”);

dísplay.display();

}

}

Hasil akhir proyek tampak pada Gambar 6.13 dan Gamar 6.14

Description

Description

 

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.