亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino Keyless Door Lock System with Keypad and LCD

组件和用品

Arduino UNO
× 1
SparkFun Button Pad 4x4 - LED 兼容
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
× 1
中继(通用)
× 1
9V 电池(通用)
× 1
单圈电位器 - 10k ohms
× 1
电阻 10k ohm
× 1

应用和在线服务

Arduino IDE

关于这个项目

带键盘和 LCD 的 Arduino 无钥匙门锁系统

0

0

作者:阿里·哈姆扎

在这个项目中,我们将制作一个无钥匙门锁系统,它使用 4X4 键盘输入钥匙,使用 DC 锁打开或关闭门。 16X2 LCD 将用于显示。

必需组件

本项目所需组件如下

  • 阿杜诺
  • 4X4 键盘
  • 液晶显示
  • 直流锁
  • 中继
  • 9V 电池
  • 10k 电位器
  • 220 欧姆电阻

它是如何工作的?

每当按键被按下时,它们就会与已经存储的按键相匹配。如果按下的键与存储在 EEPROM 中的初始密码“1234”匹配,则锁将打开。如果密码不匹配,则LCD上会打印“access denied”。

如果按下‘#’键,它会要求您输入当前密码,如果匹配,则会要求您输入新密码,密码将被更改。

电路图

首先,将 4X4 键盘连接到 Arduino;将 4X4 键盘上的前六个引脚与 Arduino 上的 A0 和 A5 引脚连接。然后将 4X4 键盘模块上的最后两个引脚连接到 Arduino 上的数字引脚 3 和 2。

之后,将 LCD 连接到 Arduino。 LCD与Arduino的连接方式如下

  • 将 LCD 上的引脚 1(即 VSS 引脚)连接到 Arduino 上的 GND
  • 将引脚 2(即 VDD 引脚)连接到 Arduino 上的 5V 引脚
  • 将引脚 3(即 V0)连接到 10k 电位器的中间,并将电位器上的另外两个引脚连接到 Arduino 上的 5V 和 GND。此引脚用于设置 LCD 的对比度。
  • 将引脚 4(即 RS 引脚)连接到 Arduino 上的引脚 7
  • 将引脚 5(即 R/W 引脚)连接到 Arduino 上的 GND 引脚
  • 将引脚 6(即启用引脚)连接到 Arduino 上的引脚 6
  • 将数据引脚 11、12、13 和 14 连接到 Arduino 上的引脚 5、4、3 和 2
  • 通过 220 欧姆电阻将 LCD 的背光引脚 15 连接到 Arduino 上的 5V
  • 将 Arduino 上的引脚 16(背光的负极引脚)连接到 Arduino 上的 GND

最后,我们将把 DC 锁与 Arduino 连接起来。 Lock 的工作电压为 7 到 12V,因此我们无法将其直接连接到 Arduino。要将其连接到 Arduino,我们需要一个继电器和一块电池。

将继电器的信号引脚连接到 Arduino 上的引脚 10,将锁的 VCC 和 GND 连接到 Arduino 上的 5V 和 GND。然后在继电器的另一端,将电池的负极连接到继电器上的公共端,将继电器上的 NO(常开)连接到锁的一侧。然后将锁的另一端连接到电池的正极。

Arduino 键盘锁代码

初始密码为1234。

#include #include#includeLiquidCrystal液晶显示(9,8,7,6,5,4,);字符密码[4]; char initial_password[4],new_password[4];int i=0;int relay_pin =10;char key_pressed=0;const byte rows =4; const 字节列 =4; char hexaKeys[rows][columns] ={{'1','2','3','A'},{'4','5','6','B'},{'7' ,'8','9','C'},{'*','0','#','D'}};byte row_pins[rows] ={A0,A1,A2,A3};byte column_pins[columns] ={A4,A5,3,2}; Keypad keypad_key =Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);void setup(){ pinMode(relay_pin, OUTPUT);液晶显示器。开始(16,2); Liquid_crystal_display.print("DIYhacking.com");液晶显示.setCursor(0,1); Liquid_crystal_display.print("电子锁");延迟(2000);液晶显示.clear(); Liquid_crystal_display.print("输入密码");液晶显示.setCursor(0,1); initialpassword();}void loop(){digitalWrite(relay_pin, HIGH); key_pressed =keypad_key.getKey(); if(key_pressed=='#') change(); if (key_pressed) { 密码[i++]=key_pressed;液晶显示。打印(按键按下); } if(i==4) { delay(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); Liquid_crystal_display.print("通过接受");数字写入(relay_pin,低);延迟(2000);液晶显示.setCursor(0,1); Liquid_crystal_display.print("按#更改");延迟(2000);液晶显示.clear(); Liquid_crystal_display.print("请输入密码:");液晶显示.setCursor(0,1);我=0; } else { digitalWrite(relay_pin, HIGH);液晶显示.clear(); Liquid_crystal_display.print("密码错误");液晶显示.setCursor(0,1); Liquid_crystal_display.print("按#更改");延迟(2000);液晶显示.clear(); Liquid_crystal_display.print("输入密码");液晶显示.setCursor(0,1);我=0; } }}void change(){ int j=0;液晶显示.clear(); Liquid_crystal_display.print("当前密码");液晶显示.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key;液晶显示。打印(键); } key=0;延迟(500); if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display.clear(); Liquid_crystal_display.print("密码错误");液晶显示.setCursor(0,1); Liquid_crystal_display.print("再试一次");延迟(1000); } 否则 { j=0;液晶显示.clear(); Liquid_crystal_display.print("新密码:");液晶显示.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { initial_password[j]=key;液晶显示。打印(键); EEPROM.write(j,key); j++; } } liquid_crystal_display.print("Pass Changed");延迟(1000); liquid_crystal_display.clear(); Liquid_crystal_display.print("输入密码");液晶显示.setCursor(0,1); key_pressed=0;}void initialpassword(){ for(int j=0;j<4;j++) EEPROM.write(j, j+49); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j);}  

代码说明

首先,我们将包括用于 4X4 键盘、LCD 的库和用于存储密码的库。 EEPROM 库用于存储密码。其中存储的默认密码为“1234”。

#include #include#include  

在循环函数中,按下的键将存储在‘key_pressed ’ 变量,它将与其他键进行比较。如果按下的键是‘#’,则调用更改函数并要求输入新密码。

key_pressed =keypad_key.getKey(); if(key_pressed=='#') change(); 

按下的键存储在‘密码中 ’变量,当按下这些键时,这些将显示在 LCD 上。然后这些密钥将与存储在 EEPROM 中的初始密码匹配。如果按下的键与初始密码匹配,则锁将打开,并在 LCD 上打印“接受通行证”。如果密码不匹配,则会要求再次输入密码。

if (key_pressed) { password[i++]=key_pressed;液晶显示。打印(按键按下); }if(i==4) { 延迟(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); Liquid_crystal_display.print("通过接受");数字写入(relay_pin,低);延迟(2000); 

如果按下‘#’键,那么它会调用‘change() ' 功能。在更改功能中,它会要求您输入当前密码。如果当前密码正确,则它会要求您输入新密码。输入新密码后,密码将被更改。

void change(){ int j=0;液晶显示.clear(); Liquid_crystal_display.print("当前密码");液晶显示.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key;液晶显示。打印(键); } key=0; } 延迟(500); 

标签:4x4 键盘,Arduino,DC 锁,Keylock,键盘,lcd,锁

推荐帖子

使用实时时钟和 LCD 屏幕的 Arduino 闹钟

如何搭建Arduino自平衡机器人

使用 Arduino 和电磁阀让烤面包机跳舞

用Arduino制作DIY自动灌溉系统

代码

  • 代码片段 #1
  • 代码片段#2
  • 代码片段 #3
  • 代码片段 #4
  • 代码片段 #5
代码片段 #1纯文本
#include #include#includeLiquidCrystalliquid_crystal_display(9,8,7,6,5,4,);char password[4];char initial_password[ 4],new_password[4];int i=0;int relay_pin =10;char key_pressed=0;const byte rows =4; const 字节列 =4; char hexaKeys[rows][columns] ={{'1','2','3','A'},{'4','5','6','B'},{'7' ,'8','9','C'},{'*','0','#','D'}};byte row_pins[rows] ={A0,A1,A2,A3};byte column_pins[columns] ={A4,A5,3,2}; Keypad keypad_key =Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);void setup(){ pinMode(relay_pin, OUTPUT);液晶显示器。开始(16,2); Liquid_crystal_display.print("DIYhacking.com");液晶显示.setCursor(0,1); Liquid_crystal_display.print("电子锁");延迟(2000);液晶显示.clear(); Liquid_crystal_display.print("输入密码");液晶显示.setCursor(0,1); initialpassword();}void loop(){digitalWrite(relay_pin, HIGH); key_pressed =keypad_key.getKey(); if(key_pressed=='#') change(); if (key_pressed) { 密码[i++]=key_pressed;液晶显示。打印(按键按下); } if(i==4) { delay(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); Liquid_crystal_display.print("通过接受");数字写入(relay_pin,低);延迟(2000);液晶显示.setCursor(0,1); Liquid_crystal_display.print("按#更改");延迟(2000);液晶显示.clear(); Liquid_crystal_display.print("请输入密码:");液晶显示.setCursor(0,1);我=0; } else { digitalWrite(relay_pin, HIGH);液晶显示.clear(); Liquid_crystal_display.print("密码错误");液晶显示.setCursor(0,1); Liquid_crystal_display.print("按#更改");延迟(2000);液晶显示.clear(); Liquid_crystal_display.print("输入密码");液晶显示.setCursor(0,1);我=0; } }}void change(){ int j=0;液晶显示.clear(); Liquid_crystal_display.print("当前密码");液晶显示.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key;液晶显示。打印(键); } key=0;延迟(500); if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display.clear(); Liquid_crystal_display.print("密码错误");液晶显示.setCursor(0,1); Liquid_crystal_display.print("再试一次");延迟(1000); } 否则 { j=0;液晶显示.clear(); Liquid_crystal_display.print("新密码:");液晶显示.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { initial_password[j]=key;液晶显示。打印(键); EEPROM.write(j,key); j++; } } liquid_crystal_display.print("Pass Changed");延迟(1000); liquid_crystal_display.clear(); Liquid_crystal_display.print("输入密码");液晶显示.setCursor(0,1); key_pressed=0;}void initialpassword(){ for(int j=0;j<4;j++) EEPROM.write(j, j+49); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j);}
代码片段#2纯文本
#include #include#include
代码片段 #3纯文本
key_pressed =keypad_key.getKey(); if(key_pressed=='#') change();
代码片段 #4纯文本
if (key_pressed) { password[i++]=key_pressed;液晶显示。打印(按键按下); }if(i==4) { 延迟(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); Liquid_crystal_display.print("通过接受");数字写入(relay_pin,低);延迟(2000);
代码片段 #5纯文本
void change(){ int j=0;液晶显示.clear(); Liquid_crystal_display.print("当前密码");液晶显示.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key;液晶显示。打印(键); } key=0; } 延迟(500);

示意图

使用 Arduino 控制可以使用正确组合键打开的电磁门锁。

制造工艺

  1. Arduino Gyroscope Game with MPU-6050
  2. 使用 Arduino 和 RFID 和 Python 的考勤系统
  3. 带 LED 和压电扬声器的 DHT11 传感器
  4. LCD 动画和游戏
  5. Unopad - 带有 Ableton 的 Arduino MIDI 控制器
  6. 温湿度数据记录仪
  7. 带有 Arduino 的简单障碍物传感器
  8. 4x4x4 LED 立方体,带有 Arduino Uno 和 1sheeld
  9. 基于 Arduino 的 RPM 计数器,采用更快的新算法
  10. 基于Arduino和谷歌电子表格的考勤系统
  11. 基于 Arduino 和 Android 的密码保护门锁
  12. 如何在 Arduino 中使用 Modbus