Sistem Kerja Alat
Kunci elektronik dengan pengaman berupa password yang diinput melalui keypad. Alat ini terdiri dari Arduino UNO sebagai sistem pemroses & pengendali utama dari sistem. Module Bluetooth dipakai sebagai pengirim dan penerima data dari smart phone (Bluetooth SPP Pro.Apk). Aplikasi Blutooth SPP Pro.Apk pada Smartphone/Android digunakana sebagai input data kode password untuk menentukan apakah password benar sehingga kunci terbuka atau password salah sehingga kunci tertutup. Dipakai juga untuk mengganti password lama dengan password baru. LCD digunakan untuk display atau tampilan ketika entri password maupun menu ganti password. Relay sebagai aktuator yang akan mengontrol langsung selenoid. Terakhir selenoid digunakan untuk membuka atau menutup kunci pintu.
Kebutuhan Hardware
- Module Bluetooth HC-05
- Modul LCD 2x16
- Modul Relay 5Vdc
- Solenoid
- Buzzer
- Modul Arduino UNO
- Power supply +9Volt
Diagram Blok
Schematics
Koneksi Arduino UNO dengan LCD
Koneksi Module Bluetooth
Koneksi Arduino
Source Code/Sketch
#include <SoftwareSerial.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
unsigned char key,menu,urut;
unsigned char pw1,pw2,pw3,pw4,pw5,pw6,i;
unsigned char pw_kpd1, pw_kpd2, pw_kpd3, pw_kpd4, pw_kpd5, pw_kpd6;
unsigned char cek,cnt;
unsigned char fkpd;
char pw[7],pw_kpd[7];
char s,t;
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial Bluetooth(rxpin, txpin);
//----------------------------INISIALISASI KONEKSI LCD 2X16
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup(){
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(10,0);
digitalWrite(11,0);
Bluetooth.begin(9600);
lcd.begin(16, 2);
lcd.print(" Kunci Elektrik");
lcd.setCursor(0,1);
lcd.print("Dengan Password");
delay(2000);
//---------------------cek alamat 0
cek=EEPROM.read(0);
if(cek==0xFF){
cek=1;
EEPROM.write(0,'1');
pw1='1'; EEPROM.write(1,'1');
pw2='1'; EEPROM.write(2,'1');
pw3='1'; EEPROM.write(3,'1');
pw4='1'; EEPROM.write(4,'1');
pw5='1'; EEPROM.write(5,'1');
pw6='1'; EEPROM.write(6,'1');
}
else{
pw1=EEPROM.read(1);
pw2=EEPROM.read(2);
pw3=EEPROM.read(3);
pw4=EEPROM.read(4);
pw5=EEPROM.read(5);
pw6=EEPROM.read(6);
}
fkpd=0;
delay(200);
}
void loop()
{
//----------------------------- display time
digitalWrite(11,1);
lcd.clear();
lcd.print("Silakan kunci...");
lcd.setCursor(0,1);
lcd.print("Lock Send -> L");
Bluetooth.println("Silakan kunci, Lock Send -> L");
fkpd=2;
goBluetooth();
lcd.clear();
lcd.print("Pintu Terkunci");
delay(3000);
pass:
lcd.clear();
lcd.print("Masukan Password");
Bluetooth.println("Masukan Password");
lcd.setCursor(0,1);
fkpd=1;
menu=0;
goBluetooth();
if(menu==4) goto pass;
}
//---------------------------- keypad
void goBluetooth(){
do{
if(Bluetooth.available())key=Bluetooth.read();
if(key != NO_KEY && key!='\n' && key!='\r'){
delay(100);
if(key=='E' && fkpd==1){
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
Bluetooth.println("Ganti Password, Masukkan Password lama");
menu=1;
delay(300);
}
else if(key=='L' && fkpd==2){
delay(250);
fkpd=0;
Bluetooth.println("Pintu terkunci");
digitalWrite(11,0);
}
else if ((key=='C')&&(fkpd == 1)){ //C
Bluetooth.println("Cancel");
if(menu==3){
lcd.clear();
lcd.print("PW baru:");
menu=2;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
else if(menu==2){
menu=4;
fkpd=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
else if((menu==1)||(menu==0)){
menu=4;
fkpd=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
delay(1000);
}
else if (key=='S'&& menu==3){
lcd.clear();
lcd.print("Simpan PW Baru..");
EEPROM.write(1,pw_kpd[0]);
EEPROM.write(2,pw_kpd[1]);
EEPROM.write(3,pw_kpd[2]);
EEPROM.write(4,pw_kpd[3]);
EEPROM.write(5,pw_kpd[4]);
EEPROM.write(6,pw_kpd[5]);
EEPROM.write(0,1);
pw1 = pw_kpd[0];
pw2 = pw_kpd[1];
pw3 = pw_kpd[2];
pw4 = pw_kpd[3];
pw5 = pw_kpd[4];
pw6 = pw_kpd[5];
fkpd = 0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
Bluetooth.println("Simpan Password Baru...");
delay(3000);
menu = 4;
}
else if(menu<2 && fkpd==1 && key > 47 && key < 59){
cek_password();
}
else if(menu==2 && fkpd==1 && key > 47 && key < 59){
entri_password();
}
}
key=NO_KEY;
}
while(fkpd);
}
void cek_password(){
pw_kpd[cnt]=key;
cnt++;
lcd.print('*');
Bluetooth.print('*');
// lcd.print(char(key));
if((cnt==6)&&(menu==0)){
Bluetooth.end();
delay(500);
if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2]) &&(pw4==pw_kpd[3])&&(pw5==pw_kpd[4])&&(pw6==pw_kpd [5])){
lcd.clear();
lcd.print("Password Benar");
lcd.setCursor(0,1);
lcd.print("Silakan Masuk");
Bluetooth.println("Password Benar, Silakan Masuk");
digitalWrite(10,1);
digitalWrite(11,1);
delay(200);
digitalWrite(10,0);
delay(200);
digitalWrite(10,1);
delay(200);
digitalWrite(10,0);
cnt=0;
fkpd=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
delay(3000);
}
else {
lcd.clear();
lcd.print("Password Salah");
Bluetooth.println("Password Salah");
s++;
if(s < 3){
digitalWrite(10,1);
delay(2000);
digitalWrite(10,0);
lcd.clear();
lcd.print("Masukan Password");
Bluetooth.println("Masukan Password");
lcd.setCursor(0,1);
cnt=0;
for(t=0;t<6;t++)
pw_kpd[t]=' ';
}
else if (s==3){
lcd.clear();
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5 Menit");
Bluetooth.println("Anda 3x Salah, Tunggu 5 Menit");
for(i=0;i<75;i++){
digitalWrite(10,1);
delay(2000);
digitalWrite(10,0);
delay(2000);
}
lcd.clear();
lcd.print("Masukan Password");
Bluetooth.println("Masukan Password");
lcd.setCursor(0,1);
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
Bluetooth.begin(9600);
}
else if((cnt==6)&&(menu==1)){
Bluetooth.end();
if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2])&&(pw4==pw_kpd[3])&&(pw5==pw_kpd[4])&&(pw6==pw_kpd[5])){
lcd.clear();
lcd.print("Password Benar");
Bluetooth.println("Password Benar");
lcd.setCursor(0,1);
delay(2000);
lcd.clear();
lcd.print("PW baru:");
Bluetooth.println("Masukkan Password baru");
cnt=0;
menu=2;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
else {
s++;
if(s < 3){
lcd.clear();
lcd.print("Password Salah");
Bluetooth.println("Password Salah");
cnt=0;
delay(2000);
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
Bluetooth.println("Ganti Password, Masukkan Password lama");
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
else if (s==3){
lcd.clear();
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5 Menit");
Bluetooth.println("Anda 3x Salah, Tunggu 5 Menit");
for(i=0;i<75;i++){
digitalWrite(10,1);
delay(2000);
digitalWrite(10,0);
delay(2000);
}
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
Bluetooth.println("Ganti Password, Masukkan Password lama");
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
Bluetooth.begin(9600);
}
}
void entri_password(){
lcd.print(char(key));
Bluetooth.print(char(key));
pw_kpd[cnt]=key;
cnt++;
if(cnt==6){
lcd.setCursor(0,1);
lcd.print("S=save,C=cancel");
Bluetooth.println("S=save C=cancel");
menu=3;
cnt=0;
}
}
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
unsigned char key,menu,urut;
unsigned char pw1,pw2,pw3,pw4,pw5,pw6,i;
unsigned char pw_kpd1, pw_kpd2, pw_kpd3, pw_kpd4, pw_kpd5, pw_kpd6;
unsigned char cek,cnt;
unsigned char fkpd;
char pw[7],pw_kpd[7];
char s,t;
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial Bluetooth(rxpin, txpin);
//----------------------------INISIALISASI KONEKSI LCD 2X16
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup(){
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(10,0);
digitalWrite(11,0);
Bluetooth.begin(9600);
lcd.begin(16, 2);
lcd.print(" Kunci Elektrik");
lcd.setCursor(0,1);
lcd.print("Dengan Password");
delay(2000);
//---------------------cek alamat 0
cek=EEPROM.read(0);
if(cek==0xFF){
cek=1;
EEPROM.write(0,'1');
pw1='1'; EEPROM.write(1,'1');
pw2='1'; EEPROM.write(2,'1');
pw3='1'; EEPROM.write(3,'1');
pw4='1'; EEPROM.write(4,'1');
pw5='1'; EEPROM.write(5,'1');
pw6='1'; EEPROM.write(6,'1');
}
else{
pw1=EEPROM.read(1);
pw2=EEPROM.read(2);
pw3=EEPROM.read(3);
pw4=EEPROM.read(4);
pw5=EEPROM.read(5);
pw6=EEPROM.read(6);
}
fkpd=0;
delay(200);
}
void loop()
{
//----------------------------- display time
digitalWrite(11,1);
lcd.clear();
lcd.print("Silakan kunci...");
lcd.setCursor(0,1);
lcd.print("Lock Send -> L");
Bluetooth.println("Silakan kunci, Lock Send -> L");
fkpd=2;
goBluetooth();
lcd.clear();
lcd.print("Pintu Terkunci");
delay(3000);
pass:
lcd.clear();
lcd.print("Masukan Password");
Bluetooth.println("Masukan Password");
lcd.setCursor(0,1);
fkpd=1;
menu=0;
goBluetooth();
if(menu==4) goto pass;
}
//---------------------------- keypad
void goBluetooth(){
do{
if(Bluetooth.available())key=Bluetooth.read();
if(key != NO_KEY && key!='\n' && key!='\r'){
delay(100);
if(key=='E' && fkpd==1){
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
Bluetooth.println("Ganti Password, Masukkan Password lama");
menu=1;
delay(300);
}
else if(key=='L' && fkpd==2){
delay(250);
fkpd=0;
Bluetooth.println("Pintu terkunci");
digitalWrite(11,0);
}
else if ((key=='C')&&(fkpd == 1)){ //C
Bluetooth.println("Cancel");
if(menu==3){
lcd.clear();
lcd.print("PW baru:");
menu=2;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
else if(menu==2){
menu=4;
fkpd=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
else if((menu==1)||(menu==0)){
menu=4;
fkpd=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
delay(1000);
}
else if (key=='S'&& menu==3){
lcd.clear();
lcd.print("Simpan PW Baru..");
EEPROM.write(1,pw_kpd[0]);
EEPROM.write(2,pw_kpd[1]);
EEPROM.write(3,pw_kpd[2]);
EEPROM.write(4,pw_kpd[3]);
EEPROM.write(5,pw_kpd[4]);
EEPROM.write(6,pw_kpd[5]);
EEPROM.write(0,1);
pw1 = pw_kpd[0];
pw2 = pw_kpd[1];
pw3 = pw_kpd[2];
pw4 = pw_kpd[3];
pw5 = pw_kpd[4];
pw6 = pw_kpd[5];
fkpd = 0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
Bluetooth.println("Simpan Password Baru...");
delay(3000);
menu = 4;
}
else if(menu<2 && fkpd==1 && key > 47 && key < 59){
cek_password();
}
else if(menu==2 && fkpd==1 && key > 47 && key < 59){
entri_password();
}
}
key=NO_KEY;
}
while(fkpd);
}
void cek_password(){
pw_kpd[cnt]=key;
cnt++;
lcd.print('*');
Bluetooth.print('*');
// lcd.print(char(key));
if((cnt==6)&&(menu==0)){
Bluetooth.end();
delay(500);
if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2]) &&(pw4==pw_kpd[3])&&(pw5==pw_kpd[4])&&(pw6==pw_kpd [5])){
lcd.clear();
lcd.print("Password Benar");
lcd.setCursor(0,1);
lcd.print("Silakan Masuk");
Bluetooth.println("Password Benar, Silakan Masuk");
digitalWrite(10,1);
digitalWrite(11,1);
delay(200);
digitalWrite(10,0);
delay(200);
digitalWrite(10,1);
delay(200);
digitalWrite(10,0);
cnt=0;
fkpd=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
delay(3000);
}
else {
lcd.clear();
lcd.print("Password Salah");
Bluetooth.println("Password Salah");
s++;
if(s < 3){
digitalWrite(10,1);
delay(2000);
digitalWrite(10,0);
lcd.clear();
lcd.print("Masukan Password");
Bluetooth.println("Masukan Password");
lcd.setCursor(0,1);
cnt=0;
for(t=0;t<6;t++)
pw_kpd[t]=' ';
}
else if (s==3){
lcd.clear();
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5 Menit");
Bluetooth.println("Anda 3x Salah, Tunggu 5 Menit");
for(i=0;i<75;i++){
digitalWrite(10,1);
delay(2000);
digitalWrite(10,0);
delay(2000);
}
lcd.clear();
lcd.print("Masukan Password");
Bluetooth.println("Masukan Password");
lcd.setCursor(0,1);
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
Bluetooth.begin(9600);
}
else if((cnt==6)&&(menu==1)){
Bluetooth.end();
if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2])&&(pw4==pw_kpd[3])&&(pw5==pw_kpd[4])&&(pw6==pw_kpd[5])){
lcd.clear();
lcd.print("Password Benar");
Bluetooth.println("Password Benar");
lcd.setCursor(0,1);
delay(2000);
lcd.clear();
lcd.print("PW baru:");
Bluetooth.println("Masukkan Password baru");
cnt=0;
menu=2;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
else {
s++;
if(s < 3){
lcd.clear();
lcd.print("Password Salah");
Bluetooth.println("Password Salah");
cnt=0;
delay(2000);
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
Bluetooth.println("Ganti Password, Masukkan Password lama");
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
else if (s==3){
lcd.clear();
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5 Menit");
Bluetooth.println("Anda 3x Salah, Tunggu 5 Menit");
for(i=0;i<75;i++){
digitalWrite(10,1);
delay(2000);
digitalWrite(10,0);
delay(2000);
}
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
Bluetooth.println("Ganti Password, Masukkan Password lama");
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
Bluetooth.begin(9600);
}
}
void entri_password(){
lcd.print(char(key));
Bluetooth.print(char(key));
pw_kpd[cnt]=key;
cnt++;
if(cnt==6){
lcd.setCursor(0,1);
lcd.print("S=save,C=cancel");
Bluetooth.println("S=save C=cancel");
menu=3;
cnt=0;
}
}
Jalannya Alat :
1. Koneksikan antara Arduino UNO dengan peripheral lain (Module Bluetooth dll) seperti pada
rangkaian (skematik).
2. Pasang power supply (adaptor 12 V) ke konektor yang terhubung dengan solenoid kemudian
hidupkan (colokkan ke sumber PLN 220V).
3. Pasang power supply 9 Vdc ke konektor DC Arduino dan kemudian hidupkan (colokkan ke
sumber PLN 220V).
4. POWER SUPPLY JANGAN SAMPAI TERTUKAR ANTARA 12V DAN 9V !!!
5. LAMA SELENOID ON (BUKA KUNCI) MAKSIMAL SELAMA 30 DETIK!!! JANGAN
TERLALU LAMA MENGHIDUPKAN SELENOID KARENA BISA MENYEBABKAN
SELENOID PANAS DAN MUDAH MATI!!!
6. Tampilan pertama pada LCD
7. Setelah 2 detik berikutnya akan tampil perintah kirim data/karakter ‘L’ untuk mengunci (selenoid
aktif
8. Buka Aplikasi Bluetooth spp pro, jika belum ada Anda bisa instal dulu Apk-nya ada di Link
Download atau Anda juga bisa insatal lewat Play store dengan keyword Bluetooth SPP Pro.
9. Pilih Device Bluetooth HC-05.
10. Pilih Connect.
11. Pilih mode keyboard.
12. Seting Keyboard.
13. Klik pada button ClickMe, ganti pada kolom BTN Name dengan angka 1 & BTN Down dengan
angka 1 kemudian klik OK.
14. Seting semua Tombol dari 1 s/d 9 pada kolom BTN Down diisi sesuai dengan BTN Name.
15. Selanjutnya pada kolom pojok bawah kiri diisi dengan ‘L / S’ dan pada pojok bawah kanan diisi
‘E / C’ sedangkan pada kolom tengah diisi dengan angka 0.
16. Setelah semua tombol selesai di seting kemudian pilih Buttons set complate pada menu pojok.
Aplikasi sudah siap digunakan.
17. Berikutnya tekan tombol ‘L’ untuk menguncinya
Sehingga LCD tampil sbb:
18. Selanjutnya masuk pada kondisi pintu terkunci. Untuk membukanya diperlukan password yaitu
berupa kombinasi 6 digit angka yang di-entri melalui Aplikasi tersebut
angka “1” sejumlah 6x, display
21. Buzzer juga akan berbunyi : “beep – beep” , kemudian relay aktif dan selenoid akan terbuka.
22. Jika password salah
23. Kesempatan memasukkan password adalah 3x. Jika sudah 3x salah terus maka harus menunggu
5 menit untuk dapat entri password lagi :
password untuk membuka kunci, atau tampilan dalam kondisi seperti ini.
password , pertama tekan tombol “E”.
password awal adalah : “ 111111 “ (angka 1 enam kali).
saja ya..) : “234567”
sekitar ½ detik jika akan menyimpan (mengganti password) atau tekan dan tahan tombol “E / C”
sekitar ½ detik jika cancel.
31. Tekan dan tahan lama tombol “L / S” untuk menyimpan password baru.
34. OK.
Video Project V - 2. Kunci Elektrik dengan Kata Sandi menggunakan Android berbasis Arduino Uno
KAMI MELAYANI JASA PEMBUATAN HARDWARE ATAU SOFTWARE BERBASIS ARDUINO
KONTAK KAMI 085743320570 (adi sanjaya)
Misi, saya sudah compile programnya tapi error goBluetooth was not declaraded in this scope
ReplyDelete