楼道门禁系统为用户端可远程开门的那种。

拆开看线路板:

针对这四根线进行改造。

参考网友提供的方案:
http://www.arduino.cn/thread-4907-1-1.html

方案介绍:

通过按下楼道门上的房间按钮,连续按三次,根据每次不同的按键时间,判断其长短顺序是否符合要求,如果符合要求,则开门。
为简单起见,只需按三次即可,共有8种不同的排列方式:
短短短,短短长,短长短,短长长,长短短,长短长,长长短,长长长。
★ 按键次数多了太麻烦,次数少了太简单,容易被人试出来 ^-^,不过先这样吧。

关键点:

1、通过检测响铃时间,判断是否满足开门条件。
注意:响铃时的电压波动变化较大(1.5V-2.7V不等),不能维持在一个固定的高低电平或电压值,所以需要变通处理。
A、一种方法是通过中断口检测电平的每秒变化次数,来判断是否持续按下了响铃按钮。
B、一种是通过快速频繁取模拟电压值,检测每秒超过1V的电压次数,来判断是否持续按下了响铃按钮。
我选择了方案A,也是采纳了网友提供的方案,觉得这种方案比较简单、准确。

2、通过EEPRom保存按键密码的长短顺序,以保证掉电不丢失。密码可以通过设置按钮随时进行更改,每按一次设置按钮,密码变动一次。密码改动后,喇叭鸣叫进行提醒。

3、通过继电器控制开门,开门时喇叭鸣叫进行提醒。

焊接好后效果:

塑料外壳:

代码如下:

#include <EEPROM.h>
byte value_setup;//存储的密码。默认为0,即三短。
int aa,bb,cc;//存储的密码的三个分解值,0为短,1为长。
int pin_xinhao=2;//响铃信号
int pin_setup=3;//设置按钮
int pin_led_aa=6,pin_led_bb=5,pin_led_cc=4;//三个密码长短设置指示灯。
int pin_open=7;//开门继电器
int pin_laba=8;//喇叭,开门时鸣叫
int a,b,c,i,n;//三次按下的次数、当前按下的次数
int wuren,cishu;//设置没人按铃的时间,连续按铃的次数。void setup()
{
//Serial.begin(9600);
pinMode(pin_xinhao,INPUT_PULLUP);
pinMode(pin_setup,INPUT_PULLUP);
pinMode(pin_led_aa,OUTPUT);
pinMode(pin_led_bb,OUTPUT);
pinMode(pin_led_cc,OUTPUT);
pinMode(pin_open,OUTPUT);
digitalWrite(pin_open,HIGH);//继电器初始值为HIGH,低电平触发。
pinMode(pin_laba,OUTPUT);
chushihua(); //初始化存储的密码
attachInterrupt(0, ring, CHANGE);
}void chushihua()
{
value_setup=EEPROM.read(0);//读取设置
if ((value_setup&1)==1){aa=HIGH;}else{aa=LOW;} //分解值1
if ((value_setup&2)==2){bb=HIGH;}else{bb=LOW;} //分解值2
if ((value_setup&4)==4){cc=HIGH;}else{cc=LOW;} //分解值3
digitalWrite(pin_led_aa,aa); //亮灯1
digitalWrite(pin_led_bb,bb); //亮灯2
digitalWrite(pin_led_cc,cc); //亮灯3
digitalWrite(pin_laba,HIGH); //喇叭鸣叫
delay(100);
digitalWrite(pin_laba,LOW); //喇叭停止
delay(1000);
digitalWrite(pin_led_aa,LOW); //灭灯1
digitalWrite(pin_led_bb,LOW); //灭灯2
digitalWrite(pin_led_cc,LOW); //灭灯3
}void ring(){ n++; }void loop() {
//如果按下设置按钮,则进行密码长短设置处理
i = digitalRead(pin_setup);
if (i==LOW)
{value_setup++;if (value_setup>7){value_setup=0;}EEPROM.write(0,value_setup);chushihua();delay(500);//设置后延时500毫秒,避免频繁设置。
}
//进行正常信号检测
i=n;//对当前次数进行暂存
n=0;//清空当前次数,让信号触发事件可以立即进入下一循环。
//Serial.println(i);
if (i>100)
//如果有信号进入
{wuren=0;//清空无人按门铃的时间,避免自动清空数据。cishu++;//按下次数+1,1次200毫秒
}
else
//如果无信号进入
{ wuren++;if (wuren>20){a=0;b=0;c=0;wuren=0;cishu=0;}//如果没人按门铃的时间超过20次,约5秒,则全部置0if (cishu>0){a=b;b=c;c=cishu;cishu=0;}//如果按下次数>0,则当做密码进行记录if (a>0 && b>0 && c>0){//如果按了三次密码,则进行验证int aa1,bb1,cc1;//验证三个密码,0为短,1为长。if (a<4){aa1=LOW;}else{aa1=HIGH;}if (b<4){bb1=LOW;}else{bb1=HIGH;}if (c<4){cc1=LOW;}else{cc1=HIGH;}if (aa==aa1 && bb==bb1 && cc==cc1){digitalWrite(pin_open,LOW);//触发继电器,开门delay(200);digitalWrite(pin_open,HIGH);digitalWrite(pin_laba,HIGH);//触发喇叭,进行提醒delay(200);digitalWrite(pin_laba,LOW);}a=0;b=0;c=0;//按下三次后,强制重新开始。}
}
delay(200);
}

Arduino - 改造楼道门禁,使用密码开门相关推荐

  1. Arduino与Proteus仿真实例-密码门禁控制仿真

    密码门禁控制仿真 1.应用介绍 本文将演示如何实现密码门禁控制逻辑仿真. 此次仿真主要涉及如下内容: 密码输入.更新.验证 门禁控制逻辑 此次仿真将使用继电器和直流电机作为电子门禁元件仿真器件. 在前 ...

  2. 【基于Arduino RFID门禁系统】

    基于Arduino RFID门禁系统 介绍 射频识别或RFID(Radio-Frequency Identification)是一种通过无线电信号进行自动识别,通过RFID标签检索和存储数据的方法. ...

  3. android蓝牙门禁,1号社区APP互联门禁产品新开门方式说明

    原标题:1号社区APP互联门禁产品新开门方式说明 一.新开门方式版本详细说明 1.开门要素 苹果手机: 1)"设置"页面"手机开门"打开 2)手机打开蓝牙 3) ...

  4. 小区门禁卡可以复制到手机上吗_没有门禁卡怎么开门 门禁卡可以复制到手机里吗...

    #生活常识# 说的门禁卡大家应该都非常熟悉,因为现在很多人平时进出入单位和小区,都是需要通过门禁卡进行刷卡.但是有时候因为特殊的情况出门比较着急,所以会忘记带门禁卡,那么没有门禁卡该怎么开门呢?今天小 ...

  5. ET-B31H-M@B人机界面密码开门显示“未配置”

    1.组网:ET-B31H-M设备单机运行 2.问题现象 :人机界面开启超级密码,通过密码开门,但是人机界面密码开门显示未配置 3.解决方案 (1)登录终端web界面-配置-智能监控-核验模板-密码比对 ...

  6. Arduino宿舍门禁,实现刷卡(NFC)开门

    起因 最近在学习智能车程序,突然对开发产生了极大的兴趣,一个合格的懒人就要自己做一个刷手机开门.再也不用带沉重的钥匙了,也不需要为忘记带钥匙的室友开门了.选择Arduino是因为它简单,不需要配置寄存 ...

  7. arduino使用oled代码_【惊不?】Arduino改造古董卡西欧计算器为作弊神器

    一台朴实无华的计算器,卡西欧牌. 看起来和千万学子们所使用的计算器一样,没什么特别的,还带着一些陈旧的使用痕迹. 但如果你用磁铁碰一下: 咦,简直像打开了探险电影里的神秘机关,右上角的太阳能电池板部分 ...

  8. 刷二维码加上微信企业号与arduino实现门禁管理

    具体实现的逻辑 1 每一个门禁对应生成带微信链接跳转二维码 2 根据刷码判断用户合法性 3 发送指令给arduino开门指令 转载于:https://my.oschina.net/nuowei/blo ...

  9. Arduino模拟刷卡门禁

    最近在学习物联网,毕竟现在人工智能包括无人驾驶,自动避障等行业的火热,所以在这里分享学习笔记 工具: 硬件:Arduino,刷卡感应器,公对母线若干,网上有卖不是很贵十几块钱 软件:Mixly 步骤 ...

  10. 女子车祸后开始“改造”自己:左手芯片开门、右手可刷 NFC,这些“生物黑客”有多疯狂?

    科幻元年2020已经悄然到来了,我们或许离小说中的科幻场景更近了一些. 虽然在现实中,我们的科技还远没有到达大片儿的程度,但不免有一些人在向往着这种"超人类"的生活,想要通过植入一 ...

最新文章

  1. ICANN敦促业界使用DNSSEC,应对DNS劫持攻击
  2. 【机器视觉】机器视觉产业链
  3. 用DFS 解决全排列问题的思想详解
  4. linux升级内核后反复重启,Ubuntu 14.04 升级内核后重启开机黑屏解决
  5. oracle改字体大小_oracle数据库字体大小
  6. 谋定技术加工领域 中国-巴对话(国际)农民丰收节贸易会
  7. PMCAFF微课堂 | 测试兄弟CEO揭秘如何提高创初团队的产品质量
  8. 转存储过程实现分页1
  9. 软件工程专插本_2021年专插本部分招生专业(拟),广科/广东理工/华商/培正/松田/工商大!...
  10. android 编译主机,Android】源码编译 ---zzz
  11. linux drbd同步,DRBD数据镜像主备节点同步数据
  12. 微信小程序|开发实战篇之一
  13. c#和c++互操作(平台调用相关)
  14. 释放空间后将指针置空
  15. 算法设计与分析——排序算法:十大排序算法总结
  16. 深度学习 Deep Learning简介 (二):浅层学习(Shallow Learning)和深度学习(Deep Learning)
  17. 雷尼绍Renishaw wdf 文件解析(Python源码)软件分享
  18. Web前端页面访问权限控制总结
  19. 【读书笔记】计算机是怎样跑起来的 - 读书笔记(2)
  20. python计算三角形面积_【Scratch算法编程】计算三角形面积

热门文章

  1. Android 函数响应式编程(RxJava3)
  2. 【应急响应】Linux下变种DDG挖矿应急处理总结
  3. MathType的配置问题;将word中的公式转换为mathtype格式失败,缺少OMML2MML.XSL
  4. 后缀自动机(知识整理+板子总结)
  5. kali linux怎么安装无线网卡驱动,Kali Linux 安装BCM43142网卡驱动
  6. Linux下Valgrind的使用概述 来源:Linux社区 作者:dndxhej
  7. 你知道什么是嵌入式技术吗?
  8. Referenced file contains errors (xml文件第一行小红叉错误)
  9. 第八章 VAR模型与脉冲响应
  10. 酷派D530刷机指引