嵌入式项目书全解.docx
- 文档编号:8017787
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:35
- 大小:411.01KB
嵌入式项目书全解.docx
《嵌入式项目书全解.docx》由会员分享,可在线阅读,更多相关《嵌入式项目书全解.docx(35页珍藏版)》请在冰豆网上搜索。
嵌入式项目书全解
课程设计
课程名称:
嵌入式设计
设计题目:
智能家居监控系统
班级:
20122111
学号:
2012211127
姓名:
指导教师:
完成时间:
2015/12/9
哈尔滨工程大学教务处制
嵌入式设计报告
智能家居监控系统
班级:
教师评语:
教师签名:
2015年12月
课程设计题目
智能家居监控系统
目的和背景
智能家居又称智能住宅,正朝着具备无线远程控制、多媒体控制、高速数据传输等功能的方向发展,其关键技术为兼容性强的家庭控制器和满足信息传输需要的家庭网络。
目前,传输网络多采用综合布线技术,限制了系统应用场所,而且费用较高,采用无线方式构建灵活便捷的智能家居安全监控系统,成为当前的主流趋势。
目前,应用于智能家居的无线通信技术主要包括Ir-DA红外线技术、蓝牙技术和Zigbee技术等,Ir-DA属于短距离、点对点的半双工通信方式,使用不便且失误率高,不适用于家庭的组网方式;蓝牙技术则因为网络容量有限,成本较高,不适于节点较多的家庭网络应用。
本项目通过采用传输范围适中、安全可靠、网络容量大的Zigbee技术,设计智能家居远程监控系统。
主要内容
1)信息显示。
2)照明控制。
3)家电控制。
4)入侵监测。
5)烟感监测。
6)温度、湿度监测。
7)远程监控,数据透传。
8)选项设置。
采用的工具方法
硬件环境1:
NEUEBD-ARM开发套件
硬件环境2:
CC2530开发套件
软件环境:
1.UCOS2.5.1,提供UCOS内核构建
2.ADS1.2、IAR7.51,提供集成开发环境
进度安排
1-2天:
完成项目要求书、模块计划书、系统设计书、RTM
3-4天:
完成模块概要设计、模块概要设计书、模块接口定义书、模块间EVENT流和数据流系统图
5-7天:
完成模块详细设计模块详细设计书
8-13天:
完成模块代码模块代码
14-16天:
完成项目报告
参考资料
1目的和背景
智能家居又称智能住宅,正朝着具备无线远程控制、多媒体控制、高速数据传输等功能的方向发展,其关键技术为兼容性强的家庭控制器和满足信息传输需要的家庭网络。
目前,传输网络多采用综合布线技术,限制了系统应用场所,而且费用较高,采用无线方式构建灵活便捷的智能家居安全监控系统,成为当前的主流趋势。
目前,应用于智能家居的无线通信技术主要包括Ir-DA红外线技术、蓝牙技术和Zigbee技术等,Ir-DA属于短距离、点对点的半双工通信方式,使用不便且失误率高,不适用于家庭的组网方式;蓝牙技术则因为网络容量有限,成本较高,不适于节点较多的家庭网络应用。
本项目通过采用传输范围适中、安全可靠、网络容量大的Zigbee技术,设计智能家居远程监控系统。
2功能描述和模块设计
图1:
智能家居监控平台示意图
1)LCD主菜单显示
显示当前时间日期,电器开关状态,是否闹钟开启。
显示用户操作菜单。
显示设置菜单。
2)照明控制
使用LED、AD(1个)硬件资源。
使用LED可模仿家中主要房间的照明。
通过照明控制子菜单控制灯亮灭。
如果开启了自动光控功能,通过AD采集的光照参数可实现照明的自动开关。
另外可通过小键盘模拟电灯开关。
3)家电控制
使用LED硬件资源。
通过家电控制子菜单对家中电器进行开关控制。
相应家电开关信息以及闹钟是否开启都在LCD主菜单中有显示。
通过设置菜单传递的信息可定时开关电器以及实现闹钟功能。
定时时间到LCD屏会自动弹出提示框并且家电状态发生改变。
4)入侵报警控制
使用红外传感器硬件资源。
使用红外传感器或接近开关采集数据,判断有无人员进入室内。
报警参数有默认值,也可由用户设置,可通过设置功能完成。
如遇报警,报警信息在屏幕上显示,同时发出触发蜂鸣器报警。
5)温湿度控制
使用温湿度传感器硬件资源。
使用温湿度传感器采集温湿度数据,将监测数据显示在LCD上。
报警参数有默认值,也可由用户设置,可通过设置功能完成。
如遇报警,触发蜂鸣器动作,同时开启空调。
6)远程监控。
终端系统将发生的事件数据定期通过Zigbee传输到服务器,服务器可根据实际情况进行家电设备的远端控制。
7)设置功能
完成以下内容的设置:
哪些房间采用自动控制功能。
3系统结构
图2系统结构图
图3通信协议框架
图4设计参考框架
4代码实现
4.1模块的实现
4.1.1账户登录模块
函数名称
函数类型
概要说明
lineEditTextChanged(QStrings)
模块内部函数
判断文本是否发生改变的槽函数
zeroClicked()~nineClicked()
模块内部函数
0~9的数字输入键盘
loginBtnClicked()
模块外部函数
登陆按键,进入主页面
forgrtPasswordClicked()
模块外部函数
忘记密码按键,进入密码修改页面
4.1.2主界面模块
函数名称
函数类型
概要说明
mainWidget2smartHomeAppliances()
模块外部函数
点击按钮进入智能家电模块。
mainWidget2securityWidget()
模块外部函数
点击按钮进入安防系统模块。
mainWidget2toolWidget()
模块外部函数
点击按钮进入工具娱乐模块。
Back_clicked
模块外部函数
返回登陆界面。
4.1.3智能家电模块
函数名称
函数类型
概要说明
smartHomeAppliances2lightWidget()
模块外部函数
点击按钮进入灯控界面。
smartHomeAppliances2waterHeaterWidget()
模块外部函数
点击按钮进入热水器控制界面。
smartHomeAppliances2temperatureWidget()
模块外部函数
点击按钮进入空调控制界面。
smartHomeAppliances2humidityWidget()
模块外部函数
点击按钮进入加湿器控制界面。
smartHomeAppliances2curtainWidget()
模块外部函数
点击按钮进入窗帘控制界面。
smartHomeAppliances2televisionWidget()
模块外部函数
点击按钮进入电视控制界面
Back_clicked
模块外部函数
返回上一界面
4.1.3.1灯控模块
函数名称
函数类型
概要说明
lightTurnOn()
模块外部函数
点击按钮打开灯。
lightTurnOff()
模块外部函数
点击按钮关闭灯
Back_clicked
模块外部函数
返回上一界面
4.1.3.2温度模块
函数名称
函数类型
概要说明
changeSwitch(inta)
模块内部函数
显示空调的开光状态。
addTemClicked()
模块内部函数
显示空调的温度。
addTemClicked()
模块外部函数
点击按钮发送温度加信息。
subTemClicked();
模块外部函数
点击按钮发送温度减信息。
Back_clicked
模块外部函数
返回上一界面
4.1.3.3湿度模块
函数名称
函数类型
概要说明
showRh(intrh)
模块内部函数
显示当前湿度。
changeSwitch(inta)
模块内部函数
显示当前开关状态。
changeOnClicked()
模块外部函数
点击按钮发送开状态。
changeOffClicked()
模块外部函数
点击按钮发送关状态。
addBtnClicked();
模块外部函数
点击按钮发送湿度加状态。
subBtnClicked();
模块外部函数
点击按钮发送湿度减状态。
Back_clicked
模块外部函数
返回上一界面
4.1.3.4热水器模块
函数名称
函数类型
概要说明
showTem(inttem);
模块内部函数
显示当前温度。
changeSwitch(inta)
模块内部函数
显示开关状态。
changeOnClicked()
模块外部函数
点击按钮发送开状态。
changeOffClicked()
模块外部函数
点击按钮发送关状态。
addBtnClicked();
模块外部函数
点击按钮发送升高水温状态。
subBtnClicked();
模块外部函数
点击按钮发送降低水温状态。
Back_clicked
模块外部函数
返回上一界面
4.1.3.5窗帘模块
函数名称
函数类型
概要说明
showSlider(intti);
模块内部函数
显示窗帘的位置。
sliderValue(inta);
模块内部函数
读取窗帘的当前位置。
Back_clicked
模块外部函数
返回上一界面
4.1.3.6电视模块
函数名称
函数类型
概要说明
openTvClicked();
模块外部函数
点击按钮发送电视开的信号。
closeTvClicked();
模块外部函数
点击按钮发送电视关的信号
addVmeClicked();
模块外部函数
点击按钮发送音量+信号
subVolumeClicked();
模块外部函数
点击按钮发送音量减信号
addProgramClicked()
模块外部函数
点击按钮发送节目+信号
subProgramClicked();
模块外部函数
点击按钮发送节目-信号
Back_clicked
模块外部函数
返回上一界面
4.1.4安防模块
函数名称
函数类型
概要说明
securityWidget2infraredWidget();
模块外部函数
点击按钮进入红外报警。
security2LockWidget();
模块外部函数
点击按钮进入远程控制门锁
security2SmokeWidget();
模块外部函数
点击按钮进入烟雾报警
Back_clicked
模块外部函数
返回上一界面
4.1.4.1红外报警模块
函数名称
函数类型
概要说明
showLocation(inta);
模块内部函数
显示触发的位置
changeOnClicked();
模块外部函数
点击按钮发送红外开启信号
changeOfficked();
模块外部函数
点击按钮发送红外开启信号
Back_clicked
模块外部函数
返回上一界面
4.1.4.2烟雾报警模块
函数名称
函数类型
概要说明
changeSmoke(int);
模块内部函数
显示当前烟雾的浓度。
Back_clicked
模块外部函数
返回上一界面
4.1.4.3门锁控制模块
函数名称
函数类型
概要说明
changeLockState(int);
模块内部函数
显示当前门的锁的状态
changeOn()
模块外部函数
点击按钮发送门开的状态
changeOff();
模块外部函数
点击按钮发送门开的状态
Back_clicked
模块外部函数
返回上一界面
4.1.5小工具模块
函数名称
函数类型
概要说明
toolWidget2calendarWidget();
模块外部函数
点击按钮进入日历
toolWidget2stopwatchWidget()
模块外部函数
点击按钮进入秒表
toolWidget2cWidget()
模块外部函数
点击按钮进入计算器
toolWidget2alarmWidget()
模块外部函数
点击按钮进入闹钟
toolWidget2mianWindow()
模块外部函数
点击按钮进入画板
toolWidget2gameWidget()
模块外部函数
点击按钮进入2048游戏
toolWidget2clockWidget()
模块外部函数
点击按钮进入时钟
4.1.5.1日历模块
函数名称
函数类型
概要说明
selfinfowidget()
模块内部函数
显示医生个人基本信息,显示医生的打卡时间。
button_schedual_clicked
模块外部函数
点击按钮进入日程界面
Select_cases
模块外部函数
选择代办事项,并显示代办事项的具体内容
Back_clicked
模块外部函数
返回上一界面
4.1.5.2时钟模块
函数名称
函数类型
概要说明
selfinfowidget()
模块内部函数
显示医生个人基本信息,显示医生的打卡时间。
button_schedual_clicked
模块外部函数
点击按钮进入日程界面
Select_cases
模块外部函数
选择代办事项,并显示代办事项的具体内容
Back_clicked
模块外部函数
返回上一界面
4.1.5.3闹钟模块
函数名称
函数类型
概要说明
selfinfowidget()
模块内部函数
显示医生个人基本信息,显示医生的打卡时间。
button_schedual_clicked
模块外部函数
点击按钮进入日程界面
Select_cases
模块外部函数
选择代办事项,并显示代办事项的具体内容
Back_clicked
模块外部函数
返回上一界面
4.1.5.4秒表模块
函数名称
函数类型
概要说明
startStopwatchClicked()
模块内部函数
秒表开始计时
resetStopwatchClicked()
模块内部函数
秒表重新计时
stopStopwatchClicked()
模块内部函数
秒表停止计时
4.1.5.5画板模块
函数名称
函数类型
概要说明
voidopen()
模块内部函数
打开图片
voidsave()
模块内部函数
保存图片
voidpenColor()
模块内部函数
改变画笔颜色
voidpenWidth()
模块内部函数
改变画笔宽度
voidpenBrush()
模块内部函数
笔刷
4.1.5.6计算器模块
函数名称
函数类型
概要说明
selfinfowidget()
模块内部函数
显示医生个人基本信息,显示医生的打卡时间。
button_schedual_clicked
模块外部函数
点击按钮进入日程界面
Select_cases
模块外部函数
选择代办事项,并显示代办事项的具体内容
Back_clicked
模块外部函数
返回上一界面
4.1.5.7小游戏模块
函数名称
函数类型
概要说明
selfinfowidget()
模块内部函数
显示医生个人基本信息,显示医生的打卡时间。
resizeEvent(QResizeEvent*)
模块内部函数
窗口尺寸改变触发的事件
onScoreInc(int)
模块内部函数
处理分数增加信号的槽函数
onGameOver()
模块内部函数
处理游戏结束信号的槽函数
onWin()
模块内部函数
处理游戏获胜信号的槽函数
Main.c:
#include
#include
#include"head.h"
#include"openpassword.h"
intsfd;
voidinit_network();
intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);
QTextCodec:
:
setCodecForCStrings(QTextCodec:
:
codecForName("utf-8"));
QTextCodec:
:
setCodecForLocale(QTextCodec:
:
codecForName("utf-8"));
QTextCodec:
:
setCodecForTr(QTextCodec:
:
codecForName("utf-8"));
openPasswordw;
w.show();
init_network();
returna.exec();
}
voidinit_network()
{
sfd=socket(AF_INET,SOCK_DGRAM,0);
if(sfd<0)
{
qDebug("socket()failed!
");
return;
}
structsockaddr_inaddr;
bzero(&addr,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(9999);addr.sin_addr.s_addr=htonl(INADDR_ANY);
intret;
ret=bind(sfd,(structsockaddr*)&addr,sizeof(addr));
if(ret!
=0)
{
qDebug("bind()failed!
");
return;
}
}
#include"mainwidget.h"
#include"ui_mainwidget.h"
#include"head.h"
#include
#include
mainWidget:
:
mainWidget(QWidget*parent):
QWidget(parent),
ui(newUi:
:
mainWidget)
{
ui->setupUi(this);
ui->dateTimeEdit->setDate(QDate:
:
currentDate());//ui->dateTimeEdit->setTime(QTime:
:
currentTime());//
QTimer*timer=newQTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()timer->start(1000);
sha=newsmartHomeAppliances;
sw=newsecurityWidget;
tw=newtoolWidget;
}
mainWidget.c:
mainWidget:
:
~mainWidget()
{
deleteui;
}
voidmainWidget:
:
show()
{
QWidget:
:
show();
showFullScreen();
}
voidmainWidget:
:
mainWidget2smartHomeAppliances()
{
QPalettepalette;
palette.setBrush(QPalette:
:
Background,QBrush(QImage(":
/new/prefix1/jiaju.png").scaled(size(),Qt:
:
IgnoreAspectRatio,
Qt:
:
SmoothTransformation)));
sha->setPalette(palette);
sha->setAutoFillBackground(true);
sha->setAutoFillBackground(true);
sha->show();
//sha->show();
}
voidmainWidget:
:
mainWidget2securityWidget()
{
QPalettepalette;
palette.setBrush(QPalette:
:
Background,QBrush(QImage(":
/new/prefix1/anfang.png").scaled(size(),Qt:
:
IgnoreAspectRatio,
Qt:
:
SmoothTransformation)));
sw->setPalette(palette);
sw->setAutoFillBackground(true);
//sw->setAutoFillBackground(true);
//sha->show();
sw->show();
}
voidmainWidget:
:
mainWidget2toolWidget()
{
//tw->show();
QPalettepalette;
palette.setBrush(QPalette:
:
Background,QBrush(QImage(":
/new/prefix1/tool.png").scaled(size(),Qt:
:
IgnoreAspectRatio,
Qt:
:
SmoothTransformation)));
tw->setPalette(palette);
tw->setAutoFillBackground(true);
tw->setAutoFillBackground(true);
tw->show();
}
voidmainWidget:
:
timeoutslot()
{
QDatedate=ui->dateTimeEdit->date();
QTimetime=ui->dateTimeEdit->time();
QTimetime1(23,59,59);
if(time==time1)
{
date=date.addDays
(1);
}
time=time.addSecs
(1);
ui->dateTimeEdit->setDate(date);
ui->dateTimeEdit->setTime(time)
冰箱控制:
#include"infraredwidget.h"
#include"ui_infraredwidget.h"
#include"head.h"
infraredWidget:
:
infraredWidget(QWidget*parent):
QWidget(parent),
ui(newUi:
:
infraredWidget)
{
ui->setupUi(this);
}
infraredWidget:
:
~infraredWidg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 项目 书全解
![提示](https://static.bdocx.com/images/bang_tan.gif)