Project showcase
Smart Lock Door with Voice Activation Using Arduino Uno

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.

  • 1,114 views
  • 2 comments
  • 13 respects

Components and supplies

Necessary tools and machines

About this project

We are a student of State of Polytechnic Madiun, Indonesia and this our project for the last exams.

This project is to creates smart lock door system with voice activation to open and close the door using voice sensor and arduino uno. We are using LCD and red LED for the indicator. And we are also using motor servo to operate the door.

It means you can open or closing a door just by your clap or your voice.

  • The door open and close when the sensor detects a voice.
  • The DC motor operates the door 90 degrees to open and close the door when the sensor detects a voice.
  • The LED turns on only during open door situations.
  • The LCD shows you the situation as the door opening or closing. When the door is opening, it shows you "Pintu Terbuka" or "Opening the door," and when the door is closing it show you "Pintu Tertutup" or "Closing the door."

This project still have an imperfection that is the sensor can detect any voice, so other people or other voice can open or close your door.

Smart Lock Door with Voice Activation using Arduino Uno

Sorry for the inconveniences, we are forgot to take the video on landscape orientation.

Code

Untitled fileArduino
#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("");
 }
 }
 }
}

Schematics

The Schematic of our project
made using fritzing
Lastexamproject y9qjekhrgc

Comments

Similar projects you might like

Smart Door with Face Unlock

Project tutorial by Divins Mathew

  • 3,220 views
  • 2 comments
  • 10 respects

Grovey sLocks - Access Control Through A Smart Door Lock

Project tutorial by gerrikoio

  • 1,101 views
  • 1 comment
  • 7 respects

Windows 10 Universal Bluetooth Garage Door Opener

Project showcase by Ronald P. Kessler

  • 1,311 views
  • 1 comment
  • 6 respects

Smart BT Door Lock (Simple Arduino)

Project showcase by Arun

  • 10,886 views
  • 1 comment
  • 22 respects

Control Door Lock Remotely Using Smartphone

Project tutorial by soardr

  • 5,055 views
  • 0 comments
  • 13 respects
Add projectSign up / Login