无线遥控语音提示智能门禁系统的设计与制作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无线遥控语音提示智能门禁系统的设计与制作
研究报告
一、研究背景
智能门禁系统的应用已经并不新鲜,从宾馆常见的接触感应门锁到写字楼的中央控制门禁锁,都多少具备了智能化。但是不知道你有没有过这样的经历:正在午睡,突然被敲门声惊醒,于是不得不大声询问是何方人氏造访,然后很不情愿的起身去开门。于是我就想能不能对现有的门禁系统进行改造呢?只需要简单的一键遥控就可轻松将门打开,同时对造访者有温馨的语言提示。
二、研究方案
1、试验材料
UNO作为主控;RF shield和315M遥控器是用于无线遥控;IO传感器扩展板V6是方便连接所有的传感器;Speech Synthesizer Bee是语音合成模块,主要用来播放门铃音乐和提示语音(提示语音告知外来人旁边是有个门铃的);数字触摸开关就是代替原有的门铃按键;人体热释电红外传感器是用来检测有人靠近后,就播放提示语音;数字继电器模块用来模拟门禁开关;数字大按钮模块用来模拟门的开关状态(门禁锁上面是有个常闭的继电器的,可以用来检测门的开关状态)。
2、试验原理
当有人靠近时,人体热释电红外传感器就会检测到然后控制语音合成模块播放提示语音,来访者根据提示语音去按门铃触摸开关,语音合成模块就会播放门铃音乐,当屋内人员听到门铃响起时,就使用315M遥控器打开门禁锁同时语音合成模块播放“请进”语音,来访者就可以推开门进入。
3、试验过程
先将RF shield插到Arduino UNO上,注意红色框位置,需要将RF shield 地址码和315M遥控器地址设置一致;
然后把IO传感器扩展板V6插到RF shield上;
然后把Speech Synthesizer Bee语音合成模块插到IO传感器扩展板V6的XBEE插槽上;
最后把数字触摸开关插到数字口2;继电器模块插到数字口4;人体热释电红外传感器插到数字口5;大按钮模块插到数字口6;有人肯定想问数字口3怎么不用,其实数字口3已经被RF shield占用了(3,8,9,10,11)。
3D打印的一个盒子,用来安装数字触摸开关。最后将程序下载到UNO中,就可以模拟整个门禁的控制过程了。
4、程序展示
1.#include "Syn6288.h"
2.Syn6288 syn;
3.
4.uint8_t
text0[]={0x5b,0x78,0x31,0x5d,0x73,0x6f,0x75,0x6e,0x64,0x6b};//Syn6288中
播放音乐的指令
5.uint8_t text1[]={0xc7,0xeb,0xbd,0xf8}; //请进
6.uint8_t text2[]={0xbb,0xb6,0xd3,0xad,0xb9,0xe2,0xc1,0xd9}; //欢迎光临
7.uint8_t
text3[]={0xc0,0xb4,0xb7,0xc3,0xc7,0xeb,0xb0,0xb4,0xd3,0xd2,0xb2,0xe0,0x
c3,0xc5,0xc1,0xe5}; //来访请按右侧门铃
8.
9.const int buttonPin = 2; //门铃触摸开关
10.const int Realy = 4; //门禁控制开关
11.const int PIRoutside = 5; //人体热释电红外传感器
12.const int DoorState = 6; //门状态检测口
13.const int D1 = 8; //RF数据接收端口
14.const int D2 = 9;
15.const int D3 = 10;
16.const int D4 = 11;
17.
18.int buttonState = 0;
19.int PIRoutsideState = 0;
20.int PIRoutsideFlag = 0;
21.unsigned char state = 0;
22.
23.void setup()
24.{
25. Serial.begin(9600); //打开串口,波特率9600
26. pinMode(D1, INPUT);
27. pinMode(D2, INPUT);
28. pinMode(D3, INPUT);
29. pinMode(D4, INPUT);
30. pinMode(buttonPin, INPUT);
31. pinMode(PIRoutside, INPUT);
32. pinMode(DoorState, INPUT);
33. pinMode(Realy, OUTPUT);
34. attachInterrupt(1,blink,RISING); //打开中断1,即数字口3
35.
36. mand_volume(14); //设置语音合成模块音量为最大
37. digitalWrite(Realy, LOW); //门禁关
38.}
39.
40.void loop()
41.{
42. if(digitalRead(DoorState)) //检测门的状态,为关闭,门禁控
制开始工作,否则不工作
43. {
44. if(state!=0) //判断是否有无线遥控指令
45. {
46. state=0;
47. if(PIRoutsideFlag == 1) //有人进来播放“请进”,有人出
去不播放
48. {
49. syn.play(text1,sizeof(text1),0);//播放“请进”语音,选择背景音乐
1
50. }
51. digitalWrite(Realy, LOW); //门禁关
52. delay(8000);
53. PIRoutsideFlag = 0;
54. }
55.
56. buttonState = digitalRead(buttonPin); //读取门铃触摸开关状态