智能家居远程监控巡逻系统设计.docx
《智能家居远程监控巡逻系统设计.docx》由会员分享,可在线阅读,更多相关《智能家居远程监控巡逻系统设计.docx(100页珍藏版)》请在冰点文库上搜索。
智能家居远程监控巡逻系统设计
高等教育自学考试本科毕业论文
智能家居远程监控巡逻系统设计
考生姓名:
准考证号:
专业层次:
院(系):
指导教师:
职称:
重庆科技学院
二O一二年七月二十日
高等教育自学考试本科毕业论文
智能家居远程监控巡逻系统设计
考生姓名:
准考证号:
专业层次:
指导教师:
院(系):
重庆科技学院
二O一二年七月二十日
摘要
随着现代社会生活节奏的加快,我们的工作时间越来越长,家中往往空无一人,此时住宅安全就显得尤为重要。
例如家中是否会有小偷破门而入,是否会发生气体泄漏,如何对漏气进行处理,是否发生火灾,如何控制灾情,灾后如何寻找灾情原因,怎样有效提供受灾现场证据,配合相关部门追责,能否远程控制用电设备,保证家用电器运行的安全可靠和更人性化应用,能否实现更人性化的智能照明等等,这些在现代家居安全中都显得尤为迫切,本设计就是针对上述一系列问题而设计的一款智能家居系统。
本论文以HT66F50单片机为控制核心,设计了一款智能家居远程监控巡逻系统。
该系统主要实现的功能是通过其自身携带的WIFI网络IP摄像头对家居进行无线远程视频智能监控;通过GSM模块向用户发送居室危险信息;通过自身携带的传感器模块,实现了家居的防火、防盗、防煤气泄漏、智能照明、实时巡逻录像等功能。
该系统的整体工作流程(以煤气泄漏为例)为:
当传感器检测到有煤气泄漏时,就向主控制器发送一个高电平,主控器将收到的信号进行A/D转换后将其浓度值显示在1602上,同时启动声光报警、排风扇(将煤气排出室内)、GSM短信报警、摄像头启动录像功能以及自动切断电源等一系列动作,当报警解除后,整个系统及供电自动恢复到正常状态。
本系统还有一个良好的电源管理系统,该部分可以实现各种电器用电的一键式管理,各条线路单独控制。
在检修时,我们只需要在主控器上轻轻按一下电源控制按键,就可以断开想要检修的电路,其它电源照常运行,互不干扰。
该系统体积小、控制简单、成本低、易于批量生产,可以直接供用户使用。
关键词:
HT66F50单片机,GSM,智能照明,防火防盗,防煤气泄漏
Remotemonitoringsystemdesign
ofintelligenthomefurnishingpatrol
Abstract
Withthedevelopmentofmodernsociety,theacceleratingpaceoflife,weworkmorehours,oftenemptyhome,residentialsecurityisespeciallyimportantnow.Inthehomeforexamplewhethertherewouldbethievesbreakintohouses,orgasleakage,howontheleakagetreatment,whetherfire,howtocontrolthedisasterafterdisasterdisaster,howtofindthereason,howtoeffectivelyprovidedisastersceneevidence,withrelateddepartmentsoftheresponsibility,whethertheremotecontrolofelectricalequipment,ensuretheoperationsafetyofhouseholdelectricalappliancesandmorehumaneapplication,canachieveamorehumaneintelligentlightingandsoon,inthemodernhomefurnishingsecurityappearsparticularlypressing,thisdesignisaimedatafore-mentionedaseriesofproblemsandthedesignofaintelligenthomefurnishingsystem.
ThispapertakesHT66F50MCUasthecontrolcore,designsanintelligenthomefurnishingremotemonitoringpatrolsystem.Thesystem'smainfunctionistocarrythroughitsWIFInetworkIPcameraonhomefurnishingwirelessremotevideointelligentsurveillance;throughtheGSMmoduletosendtheusertoroomriskinformation;carriedbyitsownsensormodule,realizesthehomefurnishingfire,theft,gasleakage,intelligentlighting,real-timepatrolvideofunction.
Thesystemofthewholeworkingprocess(withgasleakageforexample):
whenthesensordetectsagasleak,tothemaincontrollertosendahighlevel,themasterwillreceivethesignalstotheA/Dconversionaftertheconcentrationvalueshownonthe1602,atthesametimeactivateacousto-opticalarm,exhaustfan(gasexhaustingindoor),GSMshortmessagealarm,cameratostartrecordingfunctionandautomaticallycutoffpowersupplyandaseriesofaction,whenthealarmisreleased,theentiresystemandpowersupplyautomaticallyreturntoanormalstate.
Thissystemhasagoodpowermanagementsystem,whichcanrealizeallkindsofapplianceselectricitytypemanagement,separatecontrollines.Duringtheoverhaul,weonlyneedtomasterandgentlypressthepowerbuttoncontrol,youcandisconnecttooverhaulofthecircuit,theotherpowersourcetooperateasusual,nomutualinterference.
Thesystemhastheadvantagesofsmallvolume,easycontrol,lowcost,easymassproduction,canbedirectlyusedfortheuser.
Keywords:
SCMHT66F50,GSM,intelligentlighting,firealarm,gasleakage
1绪论
该系统采用HT66F50为主控制器,利用各类传感器、GSM网络和网络摄像头等而设计的一款智能家居系统。
该系统实现了对家居的防火、防盗、防煤气泄漏、智能照明、实时巡逻录像等智能处理功能。
该系统功能强大易于操作,普遍适用于各类居室的安全防范和远程控制,使用户的家居安全有了很大保障,该系统可以在原有的建筑结构上进行安装,体积小且外形美观,符合现代时尚装饰的理念,而且该系统耗能少,无噪音,是当代绿色节能照明的发展趋势,该系统商业价值高,制造费用低,应用领域广,可以实现产业化生产,并且制作简单,可以广泛应用于各类居室、办公等各类场所。
与现代很多同类型产品相比,该系统以其成本低廉,功能强大而具有较大的市场竞争力。
该系统符合新兴起的物联网的设计和发展理念,因此拥有相当诱人的商业价值。
2系统主控制芯片简介
本设计选用28引脚的HT66F50芯片作为主控制器,其引脚图(28脚)如图2.1所示。
图2.1HT66F50引脚图(28脚)
HT66F50的I/O分别由PA(PA0-PA7)、PB(PB0-PB5)、PC(PC0-PC7)、PD(PD0-PD3)、VSS和VDD组成,共28位。
其中完整的8位I/O只有PA和PC两个端口,设计时要特别注意。
芯片自带八位A/D、D/A转化器,在引脚允许的情况下,可以直接利用芯片的内部资源进行A/D、D/A转换。
但是该芯片不带串口,应用时必须自行仿串口。
引脚特点:
HT66F50引脚中复用引脚较多,这就要求我们在应用时,要特别注意各引脚功能对应寄存器的设置(不用的尽量关闭,以免发生冲突而无法正常工作)。
3系统硬件设计
3.1最小系统设计
最小系统:
所谓单片机的最小系统就是指能够使一块单片机正常工作的最简单电路系统。
它主要由为芯片提供时钟信号的晶振电路和复位电路两部分组成。
它们虽然都很简单,却是任何设计的基石,只有基础做好了,后续的设计才会有意义。
图3.1最小系统(该系统各引脚标号均为后续设计连线标号)
最小系统设计的好坏直接影响整个设计的优劣,根据不同项目设计出一个好的最小系统是相当必要的。
根据上图做好硬件最小系统,并写入程序代码加以验证,如果可以随意的控制LED1的亮灭,最小系统就可以使用了。
否则应该做如下检测:
(1)硬件连线是否断路;
(2)晶振是否接/插好;
(3)芯片是否已损坏;
(4)复位电路中复位电平是否给对,该处为低电平复位;
(5)源代码寄存器是否设置正确;
其验证源代码如下:
#include"HT66F50.h"//加载HT66F50头文件
#defineucharunsignedchar//宏定义无符号字符形变量,后面
//均用uchar代unsignedchar
#defineuintunsignedint//宏定义无符号整形变量
#defineled1_1a_1//定义led1接在PA1端口
Voiddelayms(uintz)//ms级延时子程序
{
While(z--)//对形参z做自减运算,当z=0时,结束while循环
_delay(30000);//延时10ms
}
voidquchu()//去出端口不必要的功能
{
_acerl=0x01;//去除PA口的ADC功能
_cp1c=0x00;//去除PA口的比较器1功能
_papu=0xff;//设置PA口上拉电阻有效
_pac=0x00;//设置PA口输出有效
}
Voidmain()//主函数
{
Voidquchu();//
led1=1;//初始化led1为点亮状态
While
(1)//大循环
{
led1=0;//关闭led1
delay(500);//延时500ms
led1=1;//点亮led1
}
}
3.2电源保护模块
该模块的两个二极管主要是防止电源正负极接反,起到保护电路的作用;发光二极管LED4和电阻R12串联起到电源接通指示的作用,应用中电阻可以适当减
小或者干脆不要。
图3.2电源保护电路
3.3声光报警模块
1、蜂鸣器的选型
蜂鸣器的种类很多,其工作原理也各不相同。
这里我们主要考虑蜂鸣器是有源型还是无源型,其底部为绿色且有正负的为无源型,需要脉冲才能控制其发生,频率越高声音越大;底部用黑胶封存且无正负的为有源型,只要给出低电平即可发生,声音大小比较固定,但控制简单,本设计选用有源型,
无源型的控制也相当简单,在此就不作介绍。
图3.3声光报警模块
2、LED保护
灯(LED3)必须串联一个300—1k的电阻,防止电流过大而将灯烧坏。
其理由是:
点亮发光二极管的条件:
I=3~10mA,V=1.7v
3、二极管D1
二极管D1:
过电流保护,防止电流过大而烧坏三极管Q1;
程序代码:
//本程序可实现灯光跟随蜂鸣器的叫声不断闪烁,实现声光报警功能。
但为//了节约I/O,蜂鸣器的控制引脚//在综合试验中将会接到级联595的16
//脚上。
#include“HT66F50.h”
#definefm1a_1//蜂鸣器引脚定义为pa1
voiddelayms(unsignedintz)//ms级延时函数
{unsignedinti;
for(i=0;i_delay(3000)//延时1ms
}
voidquchu2(void)//18B20接口其它功能去除函数
{
_acerl=0x01;//去除PA口的ADC功能
_tmpc0=0x00;//去除PA0引脚的TM输出
_cp0c=0x00;//去除PA0引脚的比较器0功能
_cp1c=0x00;//去除pa口的比较器1功能
papu=0x02;//pa1上拉电阻有效
_pa1c=0;//pa1输出有效
}
main()
{
quchu2();//去除不必要的功能和引脚设置
while
(1)
{fm=0;//蜂鸣器引脚拉低,蜂鸣器响
delay(500);//延时0.5s
fm=1;//关闭蜂鸣器
delay(500);//延时0.5s
}
}
3.44×4矩阵键盘设计
硬件电路图
图3.4矩阵键盘模块
矩阵键盘硬件电路基本都是一成不变的,其中的不同也多是调整一下按键数值的排序罢了,但是软件编程绝对可以用花样百出来形容,它们也各有优缺点,编程时要根据不同芯片、不同要求适当选用。
虽然不同的人有不同的编法,但万变不离其宗,均是使按键一端的电平为高或低,去检测按键另一端电平的高低状况。
说明:
有些矩阵键盘编程很简单,我也写过一些,更分享过一些到XX上,但本例接键盘的8口要与液晶的数据端口分时共用,所以编程时务必要做到键盘与液晶合理的分时共用对应的8个I/O,并注意相关寄存器的设置。
C程序样例:
//此程序是在键盘上输入1—3中的任意数,并显示在液晶的第一行,当液晶//上显示的
//数字个数大于11个时,液晶自动清屏,如果继续输入,任然显示当前输入//数字;
//如果我们想使0-F(或更多字符)在液晶上显示,可以按照同
//的方法对其它键盘进行行列扫描式编程就可以完成了。
#include”HT66F50.h”
#include”yejing.h”
Main()
{
lcd_int();
kc=0xf0;//设置PC口的输入输出状态为高四位输入第四位输出
ks=0xff;//PC个端口接上拉电阻
while
(1)//开始键盘扫描
{kc=0xf0;//设置PC口的输入输出状态为高四位输入第四位输出
k1=0;k2=1;k3=1;k4=1;//将键盘接口的最低拉高,以检测高四位的电平变化
if((k8==0)||(k7==0)||(k6==0)||(k5==0))//只要有一个成立就//成立
{
_delay(45000);//延时大约15ms
if(k5==0)//判断K5是否完全等于0
{_delay(30);
while(!
k5);//松手检测
kc=0x00;//设置PC口输入状态为全部输出,以备液晶显输出数据
_delay(30000);
if(i==11)//输入数码是否超过十一个,(此处为所设目
//报警用户的11为电话号码)
{
i=0;j=0;//输入数码计数变量清零
lcd_wcmd(0x01);//清屏
_delay(30);
}
else
{
lcd_pos(0x00+i);//再次显示本次输入的数据
lcd_wdat(table0[1]);//液晶显示1
_delay(30);
}
kc=0xf0;//从新将PC空的输入输出状态设置为键盘输入状态
}
elseif(k6==0)
{_delay(30);
while(!
k6);//松手检测
kc=0x00;
_delay(30000);
if(i==11)
{
i=0;j=0;
lcd_pos(0x00);//假如第一行显示已满,就将地址从新赋//值,并清除显示
lcd_wcmd(0x01);
_delay(30);
}
else
{
lcd_wcmd(0x06);//移动光标
lcd_pos(0x00+i);
lcd_wdat(table0[2]);//液晶显示2
_delay(30);
i++;j++;
}
kc=0xf0;
}
elseif(k7==0)
{_delay(30);
while(!
k7);//松手检测
kc=0x00;
_delay(30000);
if(i==11)
{
i=0;j=0;
lcd_pos(0x00);//假如第一行显示已满,就将地址从新赋值,
//并清除显示
lcd_wcmd(0x01);
_delay(30);}
else
{lcd_pos(0x00+i);
lcd_wdat(table0[3]);//液晶显示二
_delay(30);
i++;j++;
}
kc=0xf0;
}}
3.51602液晶模块
数码显示的控制相当简单也很实用,但随着显示数据的增加、特殊字符、汉字以及图像显示的出现,我们会明显的感觉到数码显示再也无法满足我们的设计要求了,这时我们就需要用液晶或点阵屏等显示器来显示相关信息。
显示器的种类很多,它们可以显示的信息量也各有差别,单片机设计主要采用液晶和点阵显示。
从原理上说,理想的点阵可以显示任何想显示的东西;液晶的显示信息是各有差别的,有的可以进行多种颜色的显示,有的要配合字符库芯片才能显示汉字信息(如果字数较少也可自己编码组字),有一部分液晶根本无法显示汉字信息,且显示类容和颜色均相当单一,一般来说显示数据信息能力和范围越小的显示器价格越便宜,我们可以根据自己的显示类容加以选择。
本设计只需要显示温度、甲烷浓度、房间内的人数以及照明状态信息,无需显示其它信息,从低成本的角度考虑,我们选用只能显示数字和字符的1602液晶作为显示器。
1602液晶控制是相当的简单,只需简单接线和编程就可实现数据显示,但设计者若想真正进入设计阶段,只会1602是完全不够的,像12864、双色点阵、彩屏等显示器都要能够熟练应用。
本例只是借助1602来介绍数据显示的一种过程,意在引导读者为其他液晶控制打下基础和提高大家的学习兴趣。
1602的接线及连接说明如下表:
图3.51602液晶接线图
表3.1引脚信号及连接说明
编号
符号
引脚说明
对应I/O
1
VSS
电源负极
接地
2
VDD
电源正极
接电源正极
3
VEE
液晶显示偏压信号
接划动变阻器(调节液晶显示亮度)
4
RS
数据/命令选择端(H/L)
PD2
5
R/W
读/写选择端(H/L)
接地(只写不读)
6
E
使能端
PB4
7-14
D0-D7
数据引脚
对应到PC0-PC7
15
BLA
背光正极
接电源正极
16
BLK
背光负极
接地
(1)基本操作时序:
a、读状态:
输入:
RS=L,RW=H,E=H输出:
D0-D7=状态字
b、写指令:
输入:
RS=L,RW=L,D0-D7=指令码,E=高脉冲输出:
无
c、读数据:
输入:
RS=H,RW=H,E=H输出:
D0-D7=数据
d、写数据:
输入:
RS=H,RW=L,D0-D7=数据,E=高脉冲
(2)读操作时序:
图3.6读操作时序图
(3)写操作时序:
图3.7写操作时序图
写指令:
输入:
RS=L,RW=L,D0-D7=指令码,E=高脉冲输出:
无
写数据:
输入:
RS=H,RW=L,D0-D7=数据,E=高脉冲
(各信号间的时间间隔必须严格按照时序图中的时间进行分配(具体时间参数本例按下表的“时序参数”中的数值计算),否则将可能导致数据显示不正确)
(4)时序参数:
表3.2时序参数表
所有的液晶读写操作基本一样,但其时序参数往往要视我们所选用显示器的生产商而定。
(5)指令说明:
a、显示模式设置
表3.3显示模式设置表
指令码
功能
0
0
1
1
1
0
0
0
设置16×2显示,5×7点阵,8为数据接口
b模式开/关及光标设置
表3.4模式开关及光标设置
指令码
功能
0
0
0
0
1
D
C
B
D=1开显示D=0关显示
C=1显示光标C=0不显示光标
B=1光标闪烁B=0光标不闪烁
0
0
0
0
0
1
N
S
N=1读或写一个字符后地址指针自动加1,
且光标加1;
N=0读或写一个字符后地址指针自动减1,
且光标减1;
S=1当写一个字符,整屏显示左移(N=1)或
右移(N=0),得到光标移动屏幕不移动
的效果;
S=0当写一个字符,整屏显示不移动;
c、数据指针设置
表3.5指针设置参数表
指令码
功能
82H+地址码(0-27H,40H-67H)
设置数据地址指针
d、其它设置
表3.6其它设置数据表
指令码
功能
01H
清屏
02H
显示回车
(6)参考源代码
库文件;(yejing.h)
#ifndef__YEJINGDC_H__
#define__YEJINGDC_H__
#defineucharunsignedchar
#defineuintunsignedint
voidlcd_wcmd(ucharcmd);//液晶写命令函数
voidlcd_wdat(uchardat);//液晶写数据函数
voidlcd_pos(ucharpos);//液晶送地址函数
voidlcd_init();//液晶初始化程序
voidquchu(void);//去除液晶引脚相关功能子函数
voidquchu2(void);//18B20接口其它功能去除子函数
voidshezhi(void);//18B