嵌入式 智能家居报告
课 程 设 计
课程名称 嵌入式系统课程设计 题目名称 智能家居控制系统 学生学院 自动化学院 专业班级电子信息科学与技术1班 学 号 学生姓名 指导教师
2012年 05 月 24 日
广东工业大学课程设计任务书
题目名称 学生学院 专业班级 姓 名 学 号
智能家居控制系统
自动化 电子信息科学与技术
1. 课程设计要求: ● 团队任务
● 熟悉实验面板的部件,包括: LED 调光 百叶窗控制模块 移动传感模块 亮度传感模块 继电器
外部输入模块,等。 ● 熟悉相关配置软件的使用 ● 熟悉嵌入式编程代码的书写
● 在上述部件的基础上,构思一个家庭控制场景,利用上述或者外界的其它电子设备(当然,要以实验面板为主体)完成家庭控制的目的。 ● 要求使用实验面板上三种或以上部件 ● 完成相应课程设计报告
⏹ 课程设计报告需要对整个设计的目标、功能介绍、原理、实现方法、实验结果、总结等
⏹ 课程设计报告需有控制流程的原理图
⏹ 课程设计报告中需要明确小组成员每人的任务量和任务内容 2. 课程设计的成果:
(1)实现家庭控制场景的相应配置文件和A VR 源代码 (2)项目报告
发出任务书日期: 年 月 日 指导教师签名:
计划完成日期: 年 月 日 基层教学单位责任人签章:
主管院长签章:
目 录
1 课程设计目的与要求 ............................................... 5 1.1设计要求 .................................................... 5 2 概述 . ............................................................ 5 2.1家庭控制场景 ................................................ 5 2.2实现此场景所要包括的功能 .................................... 5 3 课程设计原理 . .................................................... 6 3.1原理 ........................................................ 6 4 功能设计及实现 . .................................................. 6 4.1灯光亮度调节原理及实现方法 .................................. 6 4.2室内电器自动开关功能 ........................................ 7 4.3自动报警功能 ................................................ 8 5总结 ............................................................. 8 5.1实验结果 .................................................... 8 5.2总体工作时间 ................................................ 9 5.3工作分工 .................................................... 9 6 心得体会 . ....................................................... 10 7 附录 . ........................................................... 10 7.1配置的参数图: . ............................................ 10 7.2修改的程序................................................. 10
1 课程设计目的与要求
1.1设计要求
1) 团队任务
2) 熟悉实验面板的部件,包括: LED 调光、百叶窗控制模块、移动传感模块、亮度传感
模块继电器、外部输入模块,等。 3) 熟悉相关配置软件的使用 4) 熟悉嵌入式编程代码的书写
5) 在上述部件的基础上,构思一个家庭控制场景,利用上述或者外界的其它电子设备(当
然,要以实验面板为主体)完成家庭控制的目的。 6) 要求使用实验面板上三种或以上部件 7) 完成相应课程设计报告
2 概述
2.1家庭控制场景
在这次课程设计中,为了很好地用到实验开发板所提供的功能,我模拟了这样一个智能
家居家庭控制场景:在傍晚的时候,夜幕降临,刚下班的我一打开家的大门,家里的温馨的灯自动打亮,空调自动打开,温馨的轻音乐响起,厨房的电饭煲、微波炉等电器全部打开。为赶公车下班,拖着一身疲惫的我,送来清凉和新鲜的空气和舒适的环境及美味的佳肴。我的精神为之一震,顿时从疲惫的状态走了出来,觉得光线不合心意,还可以进行调节。而在我离开家去上班的时候,家里切换到报警系统。忠心而又可靠的替我守护家园。
2.2实现此场景所要包括的功能
1) 室内灯光亮度调节:根据个人需求,对于外界光线的需求,利用按键进行对室内光线,
灯光的亮度调节,分成8个亮度,可以自由的选择灯光的亮度,以调节室内的光线,适应个人的需求。需要关闭时,按下关闭键,就可一键关闭。
2) 家用电器自动开关功能:家用电器用LED 灯来代替,程序中它与检测主人回家连接在
一起。当主人回到家时,家用电器按需逐渐自动打开(即LED 依次序点亮)。 3) 自动报警系统:自动报警系统通过移动探头检测是否外界有人或物进入、移动,一旦检
测到有人进入警戒范围内,移动探头就会发出信号,促发警报系统,这里用继电器的开关演示,警报系统会一直发出警报直到主人关闭警报系统。有人在家的话,可以关闭警报系统,睡觉或者外出时开启警报系统以防止被盗或者意外。
3 课程设计原理
3.1原理
利用基于KNX 总线协议的ETS4智能家居开发软件,设计出囊括所要实现的智能家居的
所有可能性的数据库,然后在此基础上进行二度开发,编写运行数据库里面数据的程序,就好比物流,数据库里面的参数就是货物,程序就是搬运工,两者结合就组成了物流,所以我们可以通过修改以及编写不同运行的程序,在同一个数据库功能的前提下,实现不同的功能。又或者通过数据库里面物理地址的不同链接,而模拟出不同的功能。
4 功能设计及实现
4.1灯光亮度调节原理及实现方法
功能描述:当觉得光线不合此时的气氛,想营造一个更加舒适的氛围。这是个必不可少的功能,你可以通过按钮来进行调光功能。
程序流程图:
开发板实现方式:使用按键触发,按键开关给对应端口发出豹纹,通过识别豹纹选定控制程序,每按一次按键,通过识别输入量,利用函数AboutSET 判别输入为1时,对全局变量灯光设置LEDSET 进行判别设置,小于8时加1,等于8时置1。通过数组LD 存储灯光亮度值,再根据LEDSET 的值选择灯光亮度值LEDFLAG ,然后调用灯光函数DimmerObjectOFIn ,对灯光开关亮暗进行调节。需要快速关闭时,按下关闭键,关灯并将所有的参数复位。
4.2室内电器自动开关功能
功能描述:当主人打开门的时候,室内的电器,就会根据主人之前设定的情况,按照主人的生活习惯和爱好,把想要的电器在进门的时候,自己打开,给主人一个智能、舒适、温馨的家。
程序流程图:
开发板实现方式:通过ETS4, 给予继电器模块、开关模块等同一个物理地址,实现它们的同步工作,继电器模块的显示灯、LED 等模拟室内电器,开关模块模拟主人回家的感应器,从而模拟室内电器自动开关功能。
4.3自动报警功能
功能描述:自动报警系统通过移动探头检测是否外界有人或物进入、移动,一旦检测到有人进入警戒范围内,移动探头就会发出信号,促发警报系统,这里用继电器的开关演示,警报系统会一直发出警报直到主人关闭警报系统。
程序流程图:
开发板实现方式:通过移动探头触发,发出豹纹,相应的端口接收豹纹选定控制程序,当输入为1的时候,则开启警报(继电器以及相连的灯),调用函数SwitchObjectOFIn ,同时利用函数ObjectDisablePIR 关闭移动探头使能端,使得警报系统一直处于警报状态。确定要关闭警报时,手动按键,利用SwitchObjectOFIn 清掉警报,然后根据需要选择是否再次开启警报系统。用一个按键控制警报的清除与警报系统的开关,当按键输入0时,用ObjectDisablePIR 关闭警报系统并清除警报,输入1时打开警报系统。
5总结
5.1实验结果
编写好程序,设置好实验版参数并下载到板上,按动控制灯光亮度调节的按键,按第
一下其显示灯(PORTE 端口的LED 灯)点亮,但是调光的LED 灯不亮,按第二次,调光的LED 灯亮,继续按下去,LED 灯亮度慢慢增强,直到按下第八次,显示灯暗,调光的LED 灯也暗了。
对于主人回家家用电器自动打开,通过探测主人是否回家,即处于一直等待主人回家状态,此时电器关闭(即LED 全灭),当主人回家时,电器依次打开(即LED 依次点亮)。实现预期效果。
对于警报系统,触发移动探头,继电器1打开,与其连接的灯也点亮,并且不会暗下去直至手动按下警报关闭键,再次打开警报系统,触发移动探头,出现一样的结果,重复多次,依然得到正确结果。关闭了警报系统时,移动探头不接受任何触发,继电器及LED 灯没有任何操作,打开警报系统,移动探头才能够触发,并且,触发后,在关闭警报并重新启动警报系统之前,移动探头不再触发。
5.2总体工作时间
5.3工作分工
程序的编写:
6 心得体会
7 附录
7.1配置的参数图:
7.2修改的程序 附录 C 语言源程序
UCHAR LEDSET=0; //灯光设置选项
UCHAR LEDFLAG ,LD[]={0,1,2,3,4,5,6,7,0}; //亮度 void AboutSET(UCHAR INPUT) //灯光设置选项函数 {
if(INPUT) {
if(LEDSET
LEDSET+=1; } else {
LEDSET=1; } }
LEDFLAG=LD[LEDSET]; }
void Jingbao(UCHAR channel,UCHAR IN) {
if(IN==0x01) {
SwitchObjectOFIn(channel,IN); if(IN==0x01) {
ObjectDisablePIR(0x00); } }
//警报器函数
}
void Kuaiguan(UCHAR IN) //一键关闭LED {
if(IN==0x01) {
PORTE=0xff;
DimmerObjectOFIn(0x01,0x00); ProcessBSObjectIn(0x00); LEDSET=0; LEDFLAG=0; } }
void Jingbaokaiguan(UCHAR IN) {
ObjectDisablePIR(IN); if(IN==0x00) {
SwitchObjectOFIn(0x00,0x00); } }
void Baiyechuang(void) {
//警报器开关函数
if(LEDFLAG==0) {
ProcessBSObjectIn(0x01); PORTE=0xff; }
else if(LEDFLAG==1) {
ProcessBSObjectIn(0x00); PORTE=0x00; } }
//Dimmer Switch object in ON/OFF
void DimmerObjectOFIn(UCHAR channel,UCHAR DestValue) {
PrepareBrightness(channel,DestValue); }
void AppGetObjctPro(void) {
UCHAR TmpObjNo,TmpChnNo; UCHAR ObjectInValue[2];
if(!KnxAl_GetUpdatedCo(&TmpObjNo)) return; KnxAl_GetValue(TmpObjNo,ObjectInValue);
//LED调光函数
switch(TmpObjNo) {
case 0: //警报器 Jingbao(TmpObjNo,ObjectInValue[0]); break;
case 1: //一键关闭LED Kuaiguan(ObjectInValue[0]); break; case 2: case 3:
SwitchObjectSCIn(TmpObjNo%2,ObjectInValue[0]); break; case 6: break;
case 10: //LED调光 AboutSET(ObjectInValue[0]&0X01);
DimmerObjectOFIn((TmpObjNo-6)/4,LEDFLAG); break; case 7: case 11: //dimmer 4bit
DimmerRelativeObjectIn((TmpObjNo-7)/4,ObjectInValue[0]&0x0F); break;
case 8: case 12: //dimmer 1byte
DimmerObjectBRTIn((TmpObjNo-8)/4,ObjectInValue[0]); break;
case 21: //警报器开关 Jingbaokaiguan(ObjectInValue[0]); break; case 23:
ObjectChangeSen(ObjectInValue[0]); break;
case 14: Baiyechuang(); break; case 15:
ProcessLSObjectIn(ObjectInValue[0]); break; case 4: case 5:
SwitchObjectSIn(TmpObjNo-4,ObjectInValue[0]); break; default: break;
} }