arduino蓝牙电子锁解析.docx
- 文档编号:17043603
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:43
- 大小:169.32KB
arduino蓝牙电子锁解析.docx
《arduino蓝牙电子锁解析.docx》由会员分享,可在线阅读,更多相关《arduino蓝牙电子锁解析.docx(43页珍藏版)》请在冰点文库上搜索。
arduino蓝牙电子锁解析
《物联网应用系统设计》报告
成绩
专业班级物联网二班
姓名马祥博
同组成员霍鑫磊马祥博董方旭瞿炀炀宁磊
学号
一.项目名称3...
二,背景简介3...
三.开发平台3...
1.Arduino平台3...
2.eclipse+ADT23.0.6+SDK5.0.14..
四.情景模式4...
五.总体设计5...
六.功能模块7...
1.硬件清单7...
2.功能设计说明7...
3.蓝牙控制模块7...
4.温湿度采集模块8...
5.LCD显示模块9...
6.安卓移动端1..1.
七.创新点1..1.
八.心得体会1..1.
1.遇到的问题1..1.
2.体会1..2.
九.arduno源码13
十.安卓源码1..4.
.项目名称
智能门锁
智能门锁是指区别于传统机械锁的基础上改进的,在用户安全性、识别、管理性方面更加智能化,简便化的门锁。
,背景简介
伴随互联网时代的快速发展,智能家居设备已经走入了千家万户,门锁作为家庭生活的第一道入口。
在人工智能时代,也经历了从普通的机械锁到具备更强大安全性能的智能锁的迭代升级。
门锁智能化在今天已经不仅仅是一种生活态度,更是一种生活方式,为人们的出行,安全等方面带来了极大的便利。
随着科学技术的不断进步,人们对现代化办公和生活场所提出了更高层次的安全管理需求,普通的门锁系统和手工出入管理已经不符合现代人的实际需求。
由于安防业的智能化和网络化,为顺应智能楼宇、智能小区的发展,门禁系统也必须实现更可靠、更安全和更方便的智能系统。
现代门禁系统综合利用了传感技术、数字信息处理、计算机技术、多媒体技术和网络技术,以实现门禁系统信息的采集、传输和处理。
目前智能门锁已广泛用于工厂、学校、写字楼宇、物业小区、商店、金融系统、电信系统、军事系统、宾馆等多种场合,大大提高了整体的工作效率、保障了系统安全,智能、安全和高效的现代化门禁系统已经成为社会发展的必然趋势,同时它也是现代化建筑的一个重要组成部分。
三.开发平台
1.Arduino平台
Arduino是一款便捷灵活、方便上手的开源电子原型平台。
包含硬件和软件。
它构建于开放原始码simpleI/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。
Arduino主要包含两个主要的部分:
硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是ArduinoIDE,计算机中的程序开发环境。
只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
平台特点:
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。
板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。
对Arduino的编程是利用Arduino编程语言(基于Wiring)和Arduino开发环境(基于Processing)来实现的。
基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信来实现。
(1)跨平台
ArduinoIDE可以在Windows、MacintoshOSX、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。
(2)简单清晰
ArduinoIDE基于processingIDE开发。
对于初学者来说,极易掌握,同时有着足够的灵活性。
Arduino语言基于wiring语言开发,是对avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。
(3)开放性
Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
2.eclipse+ADT23.0.6+SDK5.0.1
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
但是Eclipse附带了一个标准的插件集,包括Java开发工具。
Eclipse主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDTCD■和PDEJDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
EclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载。
这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。
EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。
Eclipse项目生产的软件以GPL发布,第三方组件有各自自身的许可协议。
四.情景模式
1.引用智能手机上进行操控如android系统平台进行远程控制,只需要在手机上安装移动应用端点击开门或关门进行控制,门锁就会为你自动打开或关闭
2.你以后再也不必担心你忘了带钥匙或者钥匙丢失而烦恼,你的家人也可以
通过安装移动应用端来进行开锁。
3.对于安全,蓝牙智能门锁有更完善的保护机制,只有授权过的人即拥有开锁密钥的人才能开锁,上锁。
4.在以下场所应用较多:
。
银行,政府部门(注重安全性),酒店,学校宿舍,居民小区,别墅,宾馆,管理更加方便。
5.智能门锁主要应用于智能家居、智能旅店/酒店、智能建筑等系统中。
五•总体设计
1.系统结构
智能门锁,相对于普通的门锁,具有支持蓝牙连接,周围环境温湿度的感知以及将信息发送给用户等功能,适用于普通家居以及密闭空间等场景。
智能门锁系统结构如图所示
整体图片:
2.基本组成
1)管理中心:
一台智能机,通过蓝牙与门锁连接,实现门锁信息的信息的处理和分析,并发送控制指令,以及对相应的软件管理。
2)arduino板:
管理各个模块采集到的数据,实现分析处理以及与终端通信的功能。
3)温湿度传感器:
用于周围温湿度的采集、传输和处理,
4)电子门锁:
门禁系统的执行机构和关键设备,用于对物理通道的控制。
5)电力设备:
采用直流电源作为整个系统的运行电源和门锁电源。
6)LED显示器:
可以显示目前门锁的状态以及周围环境的温湿度。
3.功能特点
1)采用高效的蓝牙单独配对,可快速开锁,使用方便快捷,具有很高的安全性。
2)可以感知环境的温湿度,直接了解是否需要增添衣物。
3)系统APP连接,实现高效安全的管理。
六•功能模块
1.硬件清单
器件
数量
ArduinoUNO开发板
1
蓝牙模块
1
LCD显示屏
1
温湿度传感器
1
1602IIC模块
1
继电器
1
电磁锁
1
电源线
1
杜邦线
若干
2.功能设计说明
结合实际需求、将系统分为四个主要功能模块,即蓝牙控制模块,温湿度采集模块,LCD显示模块、安卓移动端。
3.蓝牙控制模块
蓝牙核心模块使用HC-06模块,引出接口包括VCC,GND,TXD,RX预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接,led指示连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口,输入电压3.6~6V,
未配对时电流约30mA配对后约10mA输入电压禁止超过7V,在未建立蓝牙连
接时支持通过AT指令设置波特率、名称、配对密码,设置的参数掉电保存。
蓝牙连接以后自动切换到透传模式。
VCC接Arduino的5V。
GND接Arduino的GND
TXD发送端,一般表示为自己的发送端,接Arduino的RX
RXD接收端,一般表示为自己的接收端,接Arduino的TX=
正常通信时候本身的TXD永远接设备的RXD正常通信时RXDS其他设备的TXD线接好后,把Arduino上电后,led指示灯是闪烁的,表明没有设备连接上,LED常亮,已经和Android手机连接。
蓝牙模块正面图:
蓝牙模块反面图:
4.温湿度采集模块
温湿度采集模块采用的是数字温湿度传感器DHT11DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块
采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
接口说明:
VDDVDD
I5K1Pin
MCU-~DHT11
4Pin
GMD
典型应用电路
引脚说明:
Pin
春
注释
1
VDD
供电3-5.5VDC
2
DATA
串行数据,单总线
3
XC
空脚,请悬空
4
GXD
接地,电源负极|
5.LCD显示模块
LCD显示模块采用LCD16021602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11
等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距
的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。
1602LCD是指显
示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602采用标准的16脚接口,其中:
第1脚:
GN助电源地
第2脚:
VCCg5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第7〜14脚:
D0〜D7为8位双向数据端。
第15〜16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
LCD接线图
LCD实物显示图
6.安卓移动端
安卓移动端主要实现给蓝牙串口发送特定的字符串,来控制电磁锁的开锁和上
锁,并且接收arduno开发板采集到的温湿度数据,并将数据实时的显示出来主要界面如下所示:
七•仓I」新点
1)使用蓝牙控制门锁
为了解决忘带钥匙而无法进门的尴尬情形,我们以此为出发点,设计了这款智能门锁的雏形,它的连接机制很简单,不需要通过WIFI,而是使用蓝牙,你可以使用智能手机与其配对,当手机控制开锁时,门锁便会打开。
2)将蓝牙门锁与温湿度数据的采集显示结合在一起,增加了其实用性。
除了基础的门锁控制,我们还将温湿度数据通过LCD显示屏显示在门锁上,使得使用者可以在出门前具体了解环境情况,以此决定是否需要增减衣物,小小的附加功能也具有很大的实用价值。
3)蓝牙控制APP的改进,增加安全性。
在蓝牙控制Arduino板的实现中,为增加使用的安全性,将发送的表示控制电磁锁开关,即改变Arduino板串口状态的预设字符串封装起来,对用户隐藏,即,非用户即使连接上电磁锁,无法发送正确字符串,无法进行操作,此方法大大增加安全性。
八•心得体会
1.遇到的问题
(1)问题一:
LCD1602引脚太多,接到面包板之后线路比较杂,容易掉线,不方便移动。
解决:
采用1602IIC模块,将16引脚转化为4引脚,方便移动,排线整齐,能更好的将硬件封装在一起。
(2)问题二:
关于面包板的使用,由于以前没有使用过面包板,所以不了解面包板的接线方法。
解决:
通过在网上查询资料得知:
面包板在左右两边各有两列,这两列习惯上作为电源的正负极插接,同一列中每五个栅格作为一组,这五个栅格是导通的,但是行与行之间是不导通的,最中间的位置有一条凹槽,用于隔断左右两部分。
(3)问题三:
在接继电器控制电磁锁的时候,一开始只是用了继电器的开关功能,导致在控制12V电磁锁的时候电压太小,不能控制电磁锁的开关。
解决:
经过上网查询资料后,按照正确的接线方式接线后,使得常闭端输出的电流增大,从而能控制12V电磁锁的开锁和上锁。
(4)问题四:
在开发安卓移动端时,由于以前安卓开发的基础较少,所以在遇到许许多多的问题。
解决:
主要是通过在网上下载了一个安卓端蓝牙串口助手的源码,然后根据自己的实际需求在源码中增删,选择自己需要的部分,在这个过程中也遇到了许多的问题同时也学到了许多知识,恰好正在上安卓移动开发的课程,通过在课上寻找老师帮助和课下查询资料,修改代码最后终于修改成功。
2.体会
通过这次的arduno实验,从一开始确定题目,到动手开始做再到最后成功完成蓝牙电磁锁的功能,通过这整个流程熟悉了整个开发的流程,提高了自己的动手能力。
以前上课做的项目都是只有一部分,要么是软件代码部分,要么是硬件而且硬件也只是学习部分功能,从来没有真正将软件和硬件结合起来实践。
这次的实验时间跨度久,老师给了充足的时间来完成这个小项目,正是足够的时间才使得我们能在遇到问题时自己动手查找资料自己来修改代码切实提高自己动手能力,并实现了基本功能后还有时间来不断的增加新的功能,进一步动手实践。
比如一开始仅仅实现了使用网上下载的蓝牙串口助手发送一个字符来控制继电器,电磁锁来上锁和开锁,到添加温湿度模块采集温湿度信息和LCD莫块显示温湿度信息和实时显示门的状态,再到最后自己动手写安卓APP用蓝牙串口接收温湿度数据和门的状态信息在手机APP显示。
这个过程中遇到了很多的问题,通不断的上网查询资料和向同学和老师请教,算是有条不紊的将问题一个个顺利解决,最后成功实现了预期的功能和后来拓展的功能。
在这次实验中我主要负责蓝牙模块和安卓移动端程序的编写以及整合
Arduno方面其他组员编写的LCD和温湿度传感器模块代码在一起。
在这次实验中,从一开始上面提到的问题中,面包板都不会接到最后没有基础的情况下自己动手编写安卓移动端的代码,通过不断上网查询资料,将之前所学的知识和所做项目结合起来,最终做完这个实验的同时也提高了自己的能力。
通过这次实验中学到的不仅仅是蓝牙模块的使用,或是继电器等硬件的使用,又或是安卓APP的开发。
我觉得最重要的是通过这次的实验将以前所学的知识亲自动手与实践相结合,在学习到新知识的同时增深了对以前所学知识的理解,虽然一开始担心什么都不会最后做的不好,在这个过程中也确实遇到了很多的问题,但正是在遇到问题时不断地解决问题,也才是提高能力的机会。
九.arduno源码
#include
#include
LiquidCrystal_I2Clcd(0x3F,16,2);
inthumi;//湿度
inttol;//校对码
inttemp;//温度
intj;
chard='C';
unsignedintloopCnt;
intchr[40]={0};//创建数字数组,用来存放40个bitunsignedlongtime;
#definepin2
voidsetup()
{
pinMode(3,OUTPUT);
Serial.begin(9600);
}
voidloop()
{
bgn:
delay(2000);
pinMode(pin,OUTPUT);digitalWrite(pin,LOW);
delay(20);
//digitalWrite(pin,HIGH);delayMicroseconds(40);
digitalWrite(pin,LOW);//设置2号接口模式:
输入pinMode(pin,INPUT);
//高电平响应信号loopCnt=10000;
while(digitalRead(pin)!
=HIGH)
{
if(loopCnt--==0)
{
//如果长时间不返回高电平,输出个提示,重头开始。
Serial.println("HIGH");
gotobgn;
}
}
//低电平响应信号loopCnt=30000;while(digitalRead(pin)!
=LOW)
{
if(loopCnt--==0)
{
//如果长时间不返回低电平,输出个提示,重头开始。
Serial.println("LOW");
gotobgn;
}
}
//开始读取bit1-40的数值
for(inti=0;i<40;i++)
{
while(digitalRead(pin)==LOW)
{}
time=micros();
while(digitalRead(pin)==HIGH)
{}
//当出现低电平,记下时间,再减去刚才储存的time
〃得出的值若大于50e,则为1'否则为‘0'
//并储存到数组里去
if(micros()-time>50)
{
chr[i]=1;
}else{
chr[i]=0;
}
}
//湿度,8位的bit,转换为数值
humi=chr[0]*128+chr[1]*64+chr[2]*32
+chr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7];
//温度,8位的bit,转换为数值
temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+chr[23];
//校对码,8位的bit,转换为数值tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39];
//输出:
温度、湿度、校对码
Serial.print("temperature:
");
Serial.println(temp);
Serial.print("humidity:
");
Serial.print(humi);
Serial.println("%RH");
Serial.print("tol:
");
Serial.println(tol);//校对码输出至串口lcd.init();
lcd.backlight();
lcd.print("t:
");
lcd.print(temp);
lcd.print((char)223);
lcd.print("C");//显示摄氏度符号
lcd.print("h:
");
lcd.print(humi);
lcd.println("%RH");//空两行防止出现
乱码,同时将湿度单位输出到LCDlcd.setCursor(0,1);//在LCD上换行//lcd.print("OPEN");
while(Serial.available())
{
charc=Serial.read();
if(c=='O')
{digitalWrite(3,HIGH);Serial.println("dooropen");c='X';
d='O';
}
if(c=='C')
{
digitalWrite(3,LOW);
//熄灭LED。
Serial.println("door
closed");
c='X';
d='C';
}
}
if(d=='O'){
lcd.print("DOORHAVEOPEN");}
if(d=='C'){
lcd.print("DOORISCLOSED");}
}
十.安卓源码
1)BTClient.java
packagecom.test.BTClient;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.util.UUID;
import
com.test.BTClient.DeviceListActivity;
importandroid.app.Activity;
importandroid.app.AlertDialog;
import
android.bluetooth.BluetoothAdapter;import
android.bluetooth.BluetoothDevice;import
android.bluetooth.BluetoothSocket;
import
android.content.DialogInterface;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.view.LayoutInflater;
//importandroid.view.Menu;
//如使用菜单加入此三包
//importandroid.view.MenuInflater;
//importandroid.view.MenuItem;
importandroid.view.View;
importandroid.widget.Button;
importandroid.w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arduino 蓝牙 电子锁 解析
![提示](https://static.bingdoc.com/images/bang_tan.gif)