2014-8-26 16:46:33 [显示全部楼层]
9115浏览
查看: 9115|回复: 8

无线遥控语音提示智能门禁系统改造

[复制链接]
本帖最后由 mickey 于 2014-8-28 13:50 编辑

《蓝牙4.0控制的控制门禁智能锁》之后,我们也开始尝试改造自己的门禁系统,没有使用高端大气上档次的Bluetooth4.0,而是使用常用的315M射频模块做无线遥控。
由于原来自带的门铃按钮饱受长期的蹂蹑,已经进入精神失常的地步,时不时的要误触发一下。为此我们将它一起升级了一下下。
首先使用常用的Arduino器材搭建一个原型,最后再换成小体积的Arduino。
1.jpg
原型的器材选择:
1.DFR0216 Arduino UNO  1个   
2.TEL0075 RF shield  1个  
3.DFR0219 IO传感器扩展板V6 1个  
4.SEN0117 Speech Synthesizer Bee语音合成模块 1个  
5.DFR0030 数字触摸开关Touch 1个  
6.SEN0018 人体热释电红外传感器 1个  
7.DFR0017 数字继电器模块 1个
8.DFR0029 数字大按钮模块 1个   
9.FIT0355  315M遥控器   1个
10.塑料外壳   2个
11.3D打印月饼造型外壳  1个

所选的器件中,UNO作为主控;RF shield和315M遥控器是用于无线遥控;IO传感器扩展板V6是方便连接所有的传感器;Speech Synthesizer Bee是语音合成模块,主要用来播放门铃音乐和提示语音(经常有快递过来就直接摇门,门禁君怎么受得了,所以需要一个提示语音告知旁边是有个门铃的);数字触摸开关就是代替原有的门铃按键;人体热释电红外传感器是用来检测有人靠近后,就播放提示语音;数字继电器模块用来模拟门禁开关;数字大按钮模块用来模拟门的开关状态(门禁锁上面是有个常闭的继电器的,可以用来检测门的开关状态)。

原理也很简单,当有人靠近时,人体热释电红外传感器就会检测到然后控制语音合成模块播放提示语音,来访者根据提示语音去按门铃触摸开关,语音合成模块就会播放门铃音乐,当值班人员听到门铃响起时,就使用315M遥控器打开门禁锁同时语音合成模块播放“请进”语音,来访者就可以推开门进入。
下面上图说明安装过程:
2.jpg
先将RF shield插到Arduino UNO上,注意红色框位置,需要将RF shield地址码和315M遥控器地址设置一致;
3.jpg
然后把IO传感器扩展板V6插到RF shield上;
4.jpg
然后把Speech Synthesizer Bee语音合成模块插到IO传感器扩展板V6的XBEE插槽上;
8.jpg
最后把数字触摸开关插到数字口2;继电器模块插到数字口4;人体热释电红外传感器插到数字口5;大按钮模块插到数字口6;有人肯定想问数字口3怎么不用,其实数字口3已经被RF shield占用了(3,8,9,10,11)。
6.jpg

7.jpg
3D打印的一个盒子,用来安装数字触摸开关,怎么样,像个月饼吧?
最后将程序下载到UNO中,就可以模拟整个门禁的控制过程了。
当然,经过调试后,最后是要安装到门上面的,模拟的过程和真实过程还有所不同,程序代码有可能需要调整。
视频展示:

先发这么多,后面再补充详细改造过程图。
  1. #include "Syn6288.h"
  2. Syn6288 syn;
  3. uint8_t text0[]={0x5b,0x78,0x31,0x5d,0x73,0x6f,0x75,0x6e,0x64,0x6b};//Syn6288中播放音乐的指令
  4. uint8_t text1[]={0xc7,0xeb,0xbd,0xf8}; //请进
  5. uint8_t text2[]={0xbb,0xb6,0xd3,0xad,0xb9,0xe2,0xc1,0xd9}; //欢迎光临
  6. uint8_t text3[]={0xc0,0xb4,0xb7,0xc3,0xc7,0xeb,0xb0,0xb4,0xd3,0xd2,0xb2,0xe0,0xc3,0xc5,0xc1,0xe5}; //来访请按右侧门铃
  7. const int buttonPin = 2;        //门铃触摸开关
  8. const int Realy = 4;                //门禁控制开关
  9. const int PIRoutside = 5;        //人体热释电红外传感器
  10. const int DoorState = 6;        //门状态检测口
  11. const int D1 = 8;                //RF数据接收端口
  12. const int D2 = 9;
  13. const int D3 = 10;
  14. const int D4 = 11;
  15. int buttonState = 0;                 
  16. int PIRoutsideState = 0;         
  17. int PIRoutsideFlag = 0;                 
  18. unsigned char state = 0;         
  19. void setup()
  20. {
  21.   Serial.begin(9600);        //打开串口,波特率9600
  22.   pinMode(D1, INPUT);   
  23.   pinMode(D2, INPUT);  
  24.   pinMode(D3, INPUT);   
  25.   pinMode(D4, INPUT);  
  26.   pinMode(buttonPin, INPUT);
  27.   pinMode(PIRoutside, INPUT);
  28.   pinMode(DoorState, INPUT);
  29.   pinMode(Realy, OUTPUT);
  30.   attachInterrupt(1,blink,RISING);        //打开中断1,即数字口3
  31.   
  32.   syn.command_volume(14);                //设置语音合成模块音量为最大
  33.   digitalWrite(Realy, LOW);                //门禁关
  34. }
  35. void loop()
  36. {
  37.   if(digitalRead(DoorState))                //检测门的状态,为关闭,门禁控制开始工作,否则不工作
  38.    {               
  39.   if(state!=0)                                //判断是否有无线遥控指令
  40.      {
  41.        state=0;      
  42.        if(PIRoutsideFlag == 1)                //有人进来播放“请进”,有人出去不播放
  43.          {
  44.            syn.play(text1,sizeof(text1),0);//播放“请进”语音,选择背景音乐1      
  45.          }
  46.        digitalWrite(Realy, LOW);          //门禁关
  47.        delay(8000);
  48.        PIRoutsideFlag = 0;
  49.      }
  50.      
  51.    buttonState = digitalRead(buttonPin);        //读取门铃触摸开关 状态
  52.    PIRoutsideState = digitalRead(PIRoutside);        //读取人体热释电红外传感器 状态   
  53.    if (buttonState == LOW && PIRoutsideState == HIGH && PIRoutsideFlag == 0)        //有人靠近
  54.      {  
  55.        PIRoutsideFlag = 1;                //有人进来置标志
  56.        syn.play(text2,sizeof(text2),0);        //播放“欢迎光临”,选择背景音乐1
  57.        delay(500);
  58.        syn.play(text3,sizeof(text3),0);        //播放“来访请按右侧门铃”,选择背景音乐1
  59.        delay(2000);
  60.      }
  61.    else if (buttonState == HIGH )        //有人按下门铃
  62.      {        
  63.        syn.play(text0,sizeof(text0),0);//播放门铃音乐,选择背景音乐1
  64.        delay(300);  
  65.      }     
  66.    }
  67.   else
  68.    {
  69.     state=0;
  70.     digitalWrite(Realy, LOW);                //门禁关
  71.    }
  72. }
  73. void blink()        //中断函数
  74. {
  75. state++;        //有无线遥控指令
  76. if(digitalRead(D1)==1&&digitalRead(D2)==1&&digitalRead(D3)==1&&digitalRead(D4)==0)//判断遥控器的数据
  77.    {
  78.      digitalWrite(Realy, HIGH);                //门禁开
  79.    }
  80. }
复制代码

Ricky  NPC

发表于 2014-8-26 18:00:44

来个视频效果图就更好了!
回复

使用道具 举报

xu2006  学徒

发表于 2014-10-6 13:43:06

不错呢!!很有意思
回复

使用道具 举报

wanglei830205  初级技师

发表于 2014-10-7 13:52:45

有意思,顶一下
回复

使用道具 举报

cangyang  见习技师

发表于 2014-10-25 22:54:49

不错,mark一下
回复

使用道具 举报

海绵宝宝  

发表于 2014-11-19 15:10:41

提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Eric  初级技神

发表于 2014-12-7 19:12:54

超牛掰啊~现在门禁的需求都很大啊,这帖子可以放到别的论坛里不?
回复

使用道具 举报

mickey  NPC
 楼主|

发表于 2014-12-10 10:28:53

Eric 发表于 2014-12-7 19:12
超牛掰啊~现在门禁的需求都很大啊,这帖子可以放到别的论坛里不?

当然可以
回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-23 10:23:34

那个月饼设计的很好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail