嵌入式项目书_第1页
嵌入式项目书_第2页
嵌入式项目书_第3页
嵌入式项目书_第4页
嵌入式项目书_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计课程名称: 嵌入式设计 设计题目: 智能家居监控系统 班 级: 20122111 学 号: 2012211127 姓 名: 指导教师: 完成时间: 2015/12/9 哈尔滨工程大学教务处 制嵌入式设计报告智能家居监控系统班级:教师评语:教师签名:2015年12月课程设计题目智能家居监控系统目的和背景 智能家居又称智能住宅,正朝着具备无线远程控制、多媒体控制、高速数据传输等功能 的方向发展,其关键技术为兼容性强的家庭控制器和满足信息传输需要的家庭网络。目前, 传输网络多采用综合布线技术,限制了系统应用场所,而且费用较高,采用无线方式构建灵 活便捷的智能家居安全监控系统,成为当前的

2、主流趋势。目前,应用于智能家居的无线通信技术主要包括 Ir-DA 红外线技术、蓝牙技术和 Zigbee 技术等,Ir-DA 属于短距离、点对点的半双工通信方式,使用不便且失误率高,不适用于家 庭的组网方式;蓝牙技术则因为网络容量有限,成本较高,不适于节点较多的家庭网络应用。本项目通过采用传输范围适中、安全可靠、网络容量大的 Zigbee 技术,设计智能家居 远程监控系统。主要内容1) 信息显示。2) 照明控制。3) 家电控制。4) 入侵监测。5) 烟感监测。6) 温度、 湿度监测。7) 远程监控, 数据透传。8) 选项设置。采用的工具方法硬件环境 1: NEUEBD-ARM 开发套件硬件环境

3、2: CC2530 开发套件软件环境:1. UCOS2.5.1,提供 UCOS 内核构建2. ADS1.2、 IAR7.51,提供集成开发环境进度安排1-2天:完成项目要求书、模块计划书、系统设计书、RTM3-4天:完成模块概要设计、模块概要设计书、模块接口定义书、模块间 EVENT 流和数据流系统图5-7天:完成模块详细设计 模块详细设计书8-13天:完成模块代码 模块代码14-16天:完成项目报告参考资料1 目的和背景 智能家居又称智能住宅,正朝着具备无线远程控制、多媒体控制、高速数据传输等功能 的方向发展,其关键技术为兼容性强的家庭控制器和满足信息传输需要的家庭网络。目前, 传输网络多采

4、用综合布线技术,限制了系统应用场所,而且费用较高,采用无线方式构建灵 活便捷的智能家居安全监控系统,成为当前的主流趋势。目前,应用于智能家居的无线通信技术主要包括 Ir-DA 红外线技术、蓝牙技术和 Zigbee 技术等,Ir-DA 属于短距离、点对点的半双工通信方式,使用不便且失误率高,不适用于家 庭的组网方式;蓝牙技术则因为网络容量有限,成本较高,不适于节点较多的家庭网络应用。本项目通过采用传输范围适中、安全可靠、网络容量大的 Zigbee 技术,设计智能家居 远程监控系统。2 功能描述和模块设计图1:智能家居监控平台示意图1) LCD 主菜单显示显示当前时间日期,电器开关状态,是否闹钟开

5、启。显示用户操作菜单。显示设置菜单。2) 照明控制使用 LED、 AD( 1 个) 硬件资源。使用 LED 可模仿家中主要房间的照明。通过照明控制子菜单控制灯亮灭。如果开启了自动光控功能,通过 AD 采集的光照参数可实现照明的自动开关。另外可通过小键盘模拟电灯开关。3) 家电控制使用 LED 硬件资源。通过家电控制子菜单对家中电器进行开关控制。相应家电开关信息以及闹钟是否开启都在 LCD 主菜单中有显示。通过设置菜单传递的信息可定时开关电器以及实现闹钟功能。定时时间到 LCD 屏会自动弹出提示框并且家电状态发生改变。4) 入侵报警控制使用红外传感器硬件资源。使用红外传感器或接近开关采集数据,判

6、断有无人员进入室内。报警参数有默认值,也可由用户设置, 可通过设置功能完成。如遇报警,报警信息在屏幕上显示,同时发出触发蜂鸣器报警。5) 温湿度控制使用温湿度传感器硬件资源。使用温湿度传感器采集温湿度数据,将监测数据显示在 LCD 上。报警参数有默认值,也可由用户设置, 可通过设置功能完成。如遇报警, 触发蜂鸣器动作,同时开启空调。6) 远程监控。终端系统将发生的事件数据定期通过 Zigbee 传输到服务器,服务器可根据实际情况进行家电设备的远端控制。7) 设置功能完成以下内容的设置:哪些房间采用自动控制功能。3 系统结构图2 系统结构图图3 通信协议框架图4 设计参考框架4 代码实现4.1模

7、块的实现4.1.1账户登录模块函数名称函数类型概要说明lineEditTextChanged(QString s)模块内部函数判断文本是否发生改变的槽函数zeroClicked()nineClicked()模块内部函数09的数字输入键盘loginBtnClicked()模块外部函数登陆按键,进入主页面forgrtPasswordClicked()模块外部函数忘记密码按键,进入密码修改页面 4.1.2主界面模块函数名称函数类型概要说明mainWidget2smartHomeAppliances()模块外部函数点击按钮进入智能家电模块。mainWidget2securityWidget()模块外部

8、函数点击按钮进入安防系统模块。mainWidget2toolWidget()模块外部函数点击按钮进入工具娱乐模块。Back_clicked模块外部函数返回登陆界面。4.1.3智能家电模块函数名称函数类型概要说明smartHomeAppliances2lightWidget()模块外部函数点击按钮进入灯控界面。smartHomeAppliances2waterHeaterWidget()模块外部函数点击按钮进入热水器控制界面。smartHomeAppliances2temperatureWidget()模块外部函数点击按钮进入空调控制界面。smartHomeAppliances2humidity

9、Widget()模块外部函数点击按钮进入加湿器控制界面。smartHomeAppliances2curtainWidget()模块外部函数点击按钮进入窗帘控制界面。smartHomeAppliances2televisionWidget()模块外部函数点击按钮进入电视控制界面Back_clicked模块外部函数返回上一界面 4.1.3.1灯控模块 函数名称函数类型概要说明lightTurnOn()模块外部函数点击按钮打开灯。lightTurnOff()模块外部函数点击按钮关闭灯Back_clicked模块外部函数返回上一界面 4.1.3.2温度模块函数名称函数类型概要说明changeSwitc

10、h(int a)模块内部函数显示空调的开光状态。addTemClicked()模块内部函数显示空调的温度。addTemClicked()模块外部函数点击按钮发送温度加信息。subTemClicked();模块外部函数点击按钮发送温度减信息。Back_clicked模块外部函数返回上一界面 4.1.3.3湿度模块函数名称函数类型概要说明showRh(int rh)模块内部函数显示当前湿度。changeSwitch(int a)模块内部函数显示当前开关状态。changeOnClicked()模块外部函数点击按钮发送开状态。changeOffClicked()模块外部函数点击按钮发送关状态。addB

11、tnClicked();模块外部函数点击按钮发送湿度加状态。subBtnClicked();模块外部函数点击按钮发送湿度减状态。Back_clicked模块外部函数返回上一界面 4.1.3.4热水器模块函数名称函数类型概要说明showTem(int tem);模块内部函数显示当前温度。changeSwitch(int a)模块内部函数显示开关状态。changeOnClicked()模块外部函数点击按钮发送开状态。changeOffClicked()模块外部函数点击按钮发送关状态。addBtnClicked();模块外部函数点击按钮发送升高水温状态。subBtnClicked();模块外部函数点

12、击按钮发送降低水温状态。Back_clicked模块外部函数返回上一界面 4.1.3.5窗帘模块函数名称函数类型概要说明showSlider( int ti );模块内部函数显示窗帘的位置。sliderValue(int a);模块内部函数读取窗帘的当前位置。Back_clicked模块外部函数返回上一界面 4.1.3.6电视模块函数名称函数类型概要说明openTvClicked();模块外部函数点击按钮发送电视开的信号。closeTvClicked();模块外部函数点击按钮发送电视关的信号addVmeClicked();模块外部函数点击按钮发送音量+信号subVolumeClicked();

13、模块外部函数点击按钮发送音量减信号addProgramClicked()模块外部函数点击按钮发送节目+信号subProgramClicked();模块外部函数点击按钮发送节目-信号Back_clicked模块外部函数返回上一界面 4.1.4安防模块函数名称函数类型概要说明securityWidget2infraredWidget();模块外部函数点击按钮进入红外报警。security2LockWidget();模块外部函数点击按钮进入远程控制门锁security2SmokeWidget();模块外部函数点击按钮进入烟雾报警Back_clicked模块外部函数返回上一界面 4.1.4.1红外报警

14、模块函数名称函数类型概要说明showLocation(int a);模块内部函数显示触发的位置changeOnClicked();模块外部函数点击按钮发送红外开启信号changeOfficked();模块外部函数点击按钮发送红外开启信号Back_clicked模块外部函数返回上一界面 4.1.4.2烟雾报警模块函数名称函数类型概要说明changeSmoke(int);模块内部函数显示当前烟雾的浓度。Back_clicked模块外部函数返回上一界面 4.1.4.3门锁控制模块函数名称函数类型概要说明changeLockState(int );模块内部函数显示当前门的锁的状态changeOn()模

15、块外部函数点击按钮发送门开的状态changeOff();模块外部函数点击按钮发送门开的状态Back_clicked模块外部函数返回上一界面 4.1.5小工具模块函数名称函数类型概要说明toolWidget2calendarWidget();模块外部函数点击按钮进入日历toolWidget2stopwatchWidget()模块外部函数点击按钮进入秒表toolWidget2cWidget()模块外部函数点击按钮进入计算器toolWidget2alarmWidget()模块外部函数点击按钮进入闹钟toolWidget2mianWindow()模块外部函数点击按钮进入画板toolWidget2gam

16、eWidget()模块外部函数点击按钮进入2048游戏toolWidget2clockWidget()模块外部函数点击按钮进入时钟 4.1.5.1日历模块函数名称函数类型概要说明selfinfowidget()模块内部函数显示医生个人基本信息,显示医生的打卡时间。button_schedual_clicked模块外部函数点击按钮进入日程界面Select_cases模块外部函数选择代办事项,并显示代办事项的具体内容Back_clicked模块外部函数返回上一界面 4.1.5.2时钟模块函数名称函数类型概要说明selfinfowidget()模块内部函数显示医生个人基本信息,显示医生的打卡时间。b

17、utton_schedual_clicked模块外部函数点击按钮进入日程界面Select_cases模块外部函数选择代办事项,并显示代办事项的具体内容Back_clicked模块外部函数返回上一界面 4.1.5.3闹钟模块函数名称函数类型概要说明selfinfowidget()模块内部函数显示医生个人基本信息,显示医生的打卡时间。button_schedual_clicked模块外部函数点击按钮进入日程界面Select_cases模块外部函数选择代办事项,并显示代办事项的具体内容Back_clicked模块外部函数返回上一界面 4.1.5.4秒表模块函数名称函数类型概要说明startStopw

18、atchClicked()模块内部函数秒表开始计时resetStopwatchClicked()模块内部函数秒表重新计时stopStopwatchClicked()模块内部函数秒表停止计时 4.1.5.5画板模块函数名称函数类型概要说明void open()模块内部函数打开图片void save()模块内部函数保存图片void penColor()模块内部函数改变画笔颜色void penWidth()模块内部函数改变画笔宽度void penBrush()模块内部函数笔刷 4.1.5.6计算器模块函数名称函数类型概要说明selfinfowidget()模块内部函数显示医生个人基本信息,显示医生的

19、打卡时间。button_schedual_clicked模块外部函数点击按钮进入日程界面Select_cases模块外部函数选择代办事项,并显示代办事项的具体内容Back_clicked模块外部函数返回上一界面 4.1.5.7小游戏模块函数名称函数类型概要说明selfinfowidget()模块内部函数显示医生个人基本信息,显示医生的打卡时间。resizeEvent(QResizeEvent *)模块内部函数窗口尺寸改变触发的事件onScoreInc(int)模块内部函数处理分数增加信号的槽函数onGameOver()模块内部函数处理游戏结束信号的槽函数onWin()模块内部函数处理游戏获胜信

20、号的槽函数Main.c:#include <QApplication>#include <QTextCodec>#include "head.h"#include "openpassword.h"int sfd;void init_network();int main(int argc, char *argv) QApplication a(argc, argv); QTextCodec:setCodecForCStrings(QTextCodec:codecForName("utf-8"); QTextCod

21、ec:setCodecForLocale(QTextCodec:codecForName("utf-8"); QTextCodec:setCodecForTr(QTextCodec:codecForName("utf-8"); openPassword w; w.show(); init_network(); return a.exec();void init_network() sfd=socket(AF_INET,SOCK_DGRAM,0); if(sfd<0) qDebug("socket()failed!"); retu

22、rn; struct sockaddr_in addr; bzero(&addr,sizeof(addr); addr.sin_family = AF_INET; addr.sin_port=htons(9999); addr.sin_addr.s_addr = htonl(INADDR_ANY); int ret; ret=bind(sfd,(struct sockaddr*)&addr,sizeof(addr); if(ret != 0) qDebug("bind() failed!"); return; #include "mainwidge

23、t.h"#include "ui_mainwidget.h"#include "head.h"#include <QTime>/#include <QTimer>mainWidget:mainWidget(QWidget *parent) : QWidget(parent), ui(new Ui:mainWidget) ui->setupUi(this);ui->dateTimeEdit->setDate(QDate:currentDate();/ ui->dateTimeEdit->set

24、Time(QTime:currentTime();/ QTimer *timer=new QTimer(this); connect(timer,SIGNAL(timeout(),this,SLOT(timeoutslot();/timeoutslot() timer->start(1000); sha = new smartHomeAppliances; sw = new securityWidget; tw = new toolWidget;mainWidget.c:mainWidget:mainWidget() delete ui;void mainWidget:show() QW

25、idget:show(); showFullScreen();void mainWidget:mainWidget2smartHomeAppliances() QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( ":/new/prefix1/jiaju.png").scaled(size(), Qt:IgnoreAspectRatio, Qt:SmoothTransformation); sha->setPalette(palette); sha->setAutoFillBa

26、ckground(true); sha->setAutoFillBackground(true); sha->show(); / sha->show();void mainWidget:mainWidget2securityWidget() QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( ":/new/prefix1/anfang.png").scaled(size(), Qt:IgnoreAspectRatio, Qt:SmoothTransformation);

27、 sw->setPalette(palette); sw->setAutoFillBackground(true);/ sw->setAutoFillBackground(true); / sha->show(); sw->show();void mainWidget:mainWidget2toolWidget() / tw->show(); QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( ":/new/prefix1/tool.png").sca

28、led(size(), Qt:IgnoreAspectRatio, Qt:SmoothTransformation); tw->setPalette(palette); tw->setAutoFillBackground(true); tw->setAutoFillBackground(true); tw->show();void mainWidget:timeoutslot() QDate date = ui->dateTimeEdit->date(); QTime time = ui->dateTimeEdit->time(); QTime

29、time1(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(QWi

30、dget *parent) : QWidget(parent), ui(new Ui:infraredWidget) ui->setupUi(this);infraredWidget:infraredWidget() delete ui;void infraredWidget:show() QWidget:show(); showFullScreen();void infraredWidget:changeOnClicked() struct sockaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.

31、sin_family = AF_INET; peer_addr.sin_port = htons(INFRARED_PORT); peer_addr.sin_addr.s_addr = inet_addr(INFRARED_IP); int a=1; sendto(sfd,&a,sizeof(a),0,(struct sockaddr*)&peer_addr,sizeof(peer_addr); ui->textBrowser->append("");void infraredWidget:changeOffClicked() struct so

32、ckaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.sin_family = AF_INET; peer_addr.sin_port = htons(INFRARED_PORT); peer_addr.sin_addr.s_addr = inet_addr(INFRARED_IP); int a=0; sendto(sfd,&a,sizeof(a),0,(struct sockaddr*)&peer_addr,sizeof(peer_addr); ui->textBrowser-&g

33、t;append("");void infraredWidget:showLocation(int a) if(a=0) ui->textBrowser->append(); if(a=1) ui->textBrowser->append("); 门锁控制:#include "lockwidget.h"#include "ui_lockwidget.h"#include<QLabel>#include<QAbstractButton>#include"head.h&q

34、uot;lockWidget:lockWidget(QWidget *parent) : QWidget(parent), ui(new Ui:lockWidget) ui->setupUi(this); / rt = new recvThread; /QObject:connect(rt, SIGNAL( lockStateChange(int), / this, SLOT(changeLockState(int); / rt->start();lockWidget:lockWidget() delete ui;void lockWidget:show() QWidget:sho

35、w(); showFullScreen();void lockWidget:changeOn() / ui->btn1->setChecked(true); ui->lineEdit->setText("The gate is ON!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr("192.16

36、8.1.222");/ int kind = 5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=1; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr);/ ui->label_2->setText("the GATE is On!");void lockWidget:changeOff()

37、 ui->lineEdit->setText("The gate is OFF!"); / ui->btn2->setChecked(true); / ui->label_2->setText("the Gate is OFF!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr

38、("192.168.1.87");/ int kind = 5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=0; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr);void lockWidget:changeLockState(int bool1) if(bool1=0) / ui->setupUi(t

39、his); / ui->Ui_lockWidget; / close(); / show(); /update();/ repaint(); ui->lineEdit->setText("the GATE is OFF!"); / qApp->processEvents(); / this->updateGeometry(); / qDebug("recv1111"); else if (bool1=1) / ui->btn1->setCheckable(true); / ui->btn1->setF

40、ocus(); / ui->btn2->setChecked(false); / ui->btn1->setChecked(true); / ui->label_2->update(); / ui->label_2->setText("the GATE is On!"); / this->changeOff(); / this->changeOn(); / ui->setupUi(this); / ui->retranslateUi(lockWidget); / update(); ui->lin

41、eEdit->setText("the GATE is ON!"); / this->updateGeometry(); / qDebug("recv 2222"); 远程灯控:#include "lockwidget.h"#include "ui_lockwidget.h"#include<QLabel>#include<QAbstractButton>#include"head.h"lockWidget:lockWidget(QWidget *parent

42、) : QWidget(parent), ui(new Ui:lockWidget) ui->setupUi(this); / rt = new recvThread; /QObject:connect(rt, SIGNAL( lockStateChange(int), / this, SLOT(changeLockState(int); / rt->start();lockWidget:lockWidget() delete ui;void lockWidget:show() QWidget:show(); showFullScreen();void lockWidget:cha

43、ngeOn() / ui->btn1->setChecked(true); ui->lineEdit->setText("The gate is ON!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr("192.168.1.222");/ int kind = 5; / / sendto

44、(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=1; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr); / ui->label_2->setText("the GATE is On!");void lockWidget:changeOff() ui->lineEdit->setText("The g

45、ate is OFF!"); / ui->btn2->setChecked(true); / ui->label_2->setText("the Gate is OFF!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr("192.168.1.87");/ int kind =

46、5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=0; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr);void lockWidget:changeLockState(int bool1) if(bool1=0) / ui->setupUi(this); / ui->Ui_lockWidget; / close();

47、 / show(); /update();/ repaint(); ui->lineEdit->setText("the GATE is OFF!"); / qApp->processEvents(); / this->updateGeometry(); / qDebug("recv1111"); else if (bool1=1) / ui->btn1->setCheckable(true); / ui->btn1->setFocus(); / ui->btn2->setChecked(fal

48、se); / ui->btn1->setChecked(true); / ui->label_2->update(); / ui->label_2->setText("the GATE is On!"); / this->changeOff(); / this->changeOn(); / ui->setupUi(this); / ui->retranslateUi(lockWidget); / update(); ui->lineEdit->setText("the GATE is ON!&

49、quot;); / this->updateGeometry(); / qDebug("recv 2222"); 湿度检测:#include "humiditywidget.h"#include "ui_humiditywidget.h"#include "head.h"humidityWidget:humidityWidget(QWidget *parent) : QWidget(parent), ui(new Ui:humidityWidget) ui->setupUi(this);humidity

50、Widget:humidityWidget() delete ui;void humidityWidget:show() QWidget:show(); showFullScreen();void humidityWidget:showRh(int rh) ui->lcdNumber->display(rh);void humidityWidget:changeSwitch(int a) if(a=1) ui->closeButton->setChecked(false); ui->openButton->setChecked(true); else if(a=0) ui->openButton->setChecked(false); ui->closeButton->setChecked(true); void humidityWidget:changeOnClicked() struct sockaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.sin_family = AF_INET; peer_addr.sin_port = htons(HUMIDITY_PORT); peer_addr.sin_ad

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论