bangkitwahyu
Published

Smart Lock Door with Voice Activation Using Arduino Uno

This project is to create a smart lock door system with voice activation to open and close the door via voice sensor and Arduino Uno.

IntermediateShowcase (no instructions)7,839
Smart Lock Door with Voice Activation Using Arduino Uno

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
SparkFun Audio-Sound Breakout - WTV020SD
SparkFun Audio-Sound Breakout - WTV020SD
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1
Alphanumeric LCD, 16 x 2
Alphanumeric LCD, 16 x 2
×1
5 mm LED: Red
5 mm LED: Red
×1
Resistor 330 ohm
Resistor 330 ohm
×1
Variable Resistor 10k ohm
×1
Custom PCB
Custom PCB
×1

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Desoldering Tip, Tenma 21-8220 Desoldering Pump
Desoldering Tip, Tenma 21-8220 Desoldering Pump
Scissor, Electrician
Scissor, Electrician
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Schematics

The Schematic of our project

made using fritzing

Code

Untitled file

Arduino
#include <LiquidCrystal.h> //inisialisasi library LCD
#include <Servo.h> //inisialisasi library motor servo
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //inisialisasi pin LCD yang digunakan yaitu rs=12,en=11,d4=5,d5=4,d6=3,d7=2
Servo myservo1; //inisialisasi variabel dari untuk menggerakkan motor servo
int pos = 0; //inisialisasi keadaan awal dari motor servo yaitu pos=0
int LED1=6; //inisialisasi pin LED terhubung ke pin 6 arduino
int soundSensor=8; //inisialisasi pin sensor suara terhubung ke pin 8 arduino
boolean LEDStatus=false; //inisialisasi variabel LEDStatus berupa tipe data boolean yang memiliki nilai awal yaitu false
void setup() { //prosedur untuk setup
Serial.begin(9600); // digunakan untuk memulai komunikasi serial dengan kecepatan transmisi data 9600 bps
 pinMode(LED1, OUTPUT); //konfigurasi pin LED1 sebagai output
 pinMode(soundSensor,INPUT); //konfigurasi pin sensor suara sebagai INPUT
 myservo1.attach(9); //kabel data servo dihubungkan ke pin 9 arduino
 int a; //inisialisasi variabel a berupa tipe data integer
 lcd.begin(16,2); //menunjukkan LCD yang digunakan memiliki 16 kolom dan 2 baris
 lcd.setCursor(16, 0); //untuk menentukan letak kursor pertama atau letak awal karakter pada kolom-17 baris-1
 lcd.print("Project UAS"); //menampilkan karakter "Project UAS" pada baris pertama
 lcd.setCursor(16, 1); //untuk menentukan letak kursor kedua atau letak awal karakter pada kolom-17 baris-2
 lcd.print("MIKRO II"); //menampilkan karakter "MIKRO II" pada baris kedua
 for(a=0;a<16;a++){ //fungsi for digunakan untuk pengulangan dengan kondisi awal variabel a=0 hingga a<16 dengan menaikkan nilai variabel a sebesar 1
 lcd.scrollDisplayLeft(); //pernyataan yang diulang adalah input yang ditampilkan pada LCD yang bergerak ke kiri .
 delay(100); //jeda waktu 100 ms
 }
 delay(100); //jeda waktu untuk membuat LCD dalam kondisi awal adalah 100ms
 lcd.clear(); //setelah jeda waktu 100ms, tampilan LCD seperti semula atau menghapus apa yang ditampilkan sebelumnya untuk selanjutnya menampilkan karakter selanjutnya
 lcd.setCursor(16, 0); //untuk menentukan letak kursor pertama atau letak awal karakter pada kolom-17 baris-1
 lcd.print("Kelompok ????"); //menampilkan karakter "Kelompok ????" pada baris pertama
 lcd.setCursor(16, 1); //untuk menentukan letak kursor kedua atau letak awal karakter pada kolom-17 baris-2
 lcd.print("TKK_4_C"); //menampilkan karakter "TKK_4_C" pada baris kedua
 for(a=0;a<16;a++){ //fungsi for digunakan untuk pengulangan dengan kondisi awal variabel a=0 hingga a<16 dengan menaikkan nilai variabel a sebesar 1
 lcd.scrollDisplayLeft(); //pernyataan yang diulang adalah input yang ditampilkan pada LCD yang bergerak ke kiri .
 delay(100); //jeda waktu 100ms
 }
 delay(100); //jeda waktu untuk membuat LCD dalam kondisi awal adalah 100ms
 lcd.clear(); //setelah jeda waktu 100ms, tampilan LCD seperti semula atau menghapus apa yang ditampilkan sebelumnya untuk selanjutnya ditampilkan kembali dengan jeda waktu 100ms
}
void loop() { //prosedur untuk looping atau pengulangan
 int a; //inisialisasi variabel a berupa tipe data integer
 int SensorData=digitalRead(soundSensor); //membaca sinyal keluaran dari sensor berupa data digital yaitu logika 1 atau 0
 if(SensorData==1){ //jika hasil pembacaan berogika sama dengan 1, maka
 if(LEDStatus==false){ //jika kondisi lED bernilai false
 lcd.begin(16,2);
 lcd.setCursor(16,0); //penentuan letak kursor pada baris pertama
 lcd.print("Pintu Tertutup"); //menampilkan karakter "Pintu Tertutup" pada baris pertama
 lcd.setCursor(16,1); //penentuan letak kursor pada baris kedua
 lcd.print(" "); //berisi spasi pada baris kedua
 for(a=0;a<16;a++){ //fungsi pengulangan untuk nilai a=0 hingga a<16, variabel a terus bertambah
 lcd.scrollDisplayLeft(); //karakter yang tampil pada LCD bergerak berjalan ke kiri
 delay(100); //jeda waktu 100ms
 }
 LEDStatus=true; //kondisi LED sama dengan true
 digitalWrite(LED1,LOW); //memberi nilai LOW pada LED1, atau lampu LED mati
 for (pos = 90; pos <= 180; pos += 1) { //fungsi perulangan untuk posisi servo dari 90 derajat sampai 180 derajat dengan setiap kenaikan 1
 myservo1.write(pos); //memberitahu servo untuk pergi ke posisi 'pos'
 delay(50); //jeda waktu 50ms
 Serial.print("on"); //menampilkan karakter "on" pada serial monitor
 Serial.println("");
 }
 }
 else{ //jika salah, maka
 lcd.begin(16,2);
 lcd.setCursor(16,0); //penentuan letak kursor pada baris pertama
 lcd.print("Pintu Terbuka"); //menampilkan karakter "Pintu Terbuka" pada baris pertama
 lcd.setCursor(16,1); //penentuan letak kursor pada baris kedua
 lcd.print(" "); //berisi spasi pada baris kedua
 for(a=0;a<16;a++){ //fungsi pengulangan untuk nilai a=0 hingga a<16, variabel a terus bertambah
 lcd.scrollDisplayLeft(); //karakter yang tampil pada LCD bergerak berjalan ke kiri
 delay(100); //jeda waktu 100ms
 }
 LEDStatus=false; //kondisi LED sama dengan false
 digitalWrite(LED1,HIGH); //memberi nilai HIGH pada LED1, atau lampu LED nyala
 for (pos = 180; pos >= 90; pos -= 1) { //fungsi perulangan untuk posisi servo dari 180 derajat sampai 90 derajat dengan setiap penurunan 1
 myservo1.write(pos); //memberitahu servo untuk pergi ke posisi 'pos'
 delay(50); //jeda waktu 50ms
 Serial.print("off"); //menampilkan karakter "off" pada serial monitor
 Serial.println("");
 }
 }
 }
}

Credits

bangkitwahyu

bangkitwahyu

1 project • 3 followers

Comments