嵌入式项目书.docx

上传人:小飞机 文档编号:1707503 上传时间:2022-12-15 格式:DOCX 页数:41 大小:436.35KB
返回 下载 相关 举报
嵌入式项目书.docx_第1页
第1页 / 共41页
嵌入式项目书.docx_第2页
第2页 / 共41页
嵌入式项目书.docx_第3页
第3页 / 共41页
嵌入式项目书.docx_第4页
第4页 / 共41页
嵌入式项目书.docx_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《嵌入式项目书.docx》由会员分享,可在线阅读,更多相关《嵌入式项目书.docx(41页珍藏版)》请在三一办公上搜索。

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 #include #include head.h#include openpassword.hint sfd;void init_network();int main(int argc, char *argv) QApplication a(argc, argv); QTextCodec:setCodecForCStrings(QTextCodec:codecForName(utf-8); QTextCodec:setCodecForLocale(QTextCodec:codecForName(utf-8); QTextCodec:setCodecFo

21、rTr(QTextCodec:codecForName(utf-8); openPassword w; w.show(); init_network(); return a.exec();void init_network() sfd=socket(AF_INET,SOCK_DGRAM,0); if(sfd0) qDebug(socket()failed!); return; struct sockaddr_in addr; bzero(&addr,sizeof(addr); addr.sin_family = AF_INET; addr.sin_port=htons(9999); addr.

22、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 mainwidget.h#include ui_mainwidget.h#include head.h#include /#include mainWidget:mainWidget(QWidget *parent) : QWidget(parent), ui(new Ui:mainWidget)

23、 ui-setupUi(this);ui-dateTimeEdit-setDate(QDate:currentDate();/ ui-dateTimeEdit-setTime(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 tool

24、Widget;mainWidget.c:mainWidget:mainWidget() delete ui;void mainWidget:show() QWidget:show(); showFullScreen();void mainWidget:mainWidget2smartHomeAppliances() QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( :/new/prefix1/jiaju.png).scaled(size(), Qt:IgnoreAspectRatio, Qt:Smooth

25、Transformation); sha-setPalette(palette); sha-setAutoFillBackground(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:IgnoreAsp

26、ectRatio, Qt:SmoothTransformation); 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).scal

27、ed(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 time1(23,59,59); if(time = time1)

28、 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.hinfraredWidget:infraredWidget(QWidget *parent) : QWidget(parent), ui(new Ui:infraredWidget) ui-setupUi(this);infraredW

29、idget: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.sin_family = AF_INET; peer_addr.sin_port = htons(INFRARED_PORT); peer_addr.sin_addr.s_addr =

30、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 sockaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.sin_family = AF_INET; peer_addr.sin_port = htons(INFRA

31、RED_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-append();void infraredWidget:showLocation(int a) if(a=0) ui-textBrowser-append(); if(a=1) ui-textBrowser-append(); 门锁控制:#include lockwidget

32、.h#include ui_lockwidget.h#include#include#includehead.hlockWidget: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()

33、delete ui;void lockWidget:show() QWidget:show(); 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(

34、192.168.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() ui-lineEdit-setText(The gate is OFF

35、!); / 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 = 5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*

36、)&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(); / show(); /update();/ repaint(); ui-lineEdit-setText(the GATE is OFF!); / qApp-proc

37、essEvents(); / this-updateGeometry(); / qDebug(recv1111); else if (bool1=1) / ui-btn1-setCheckable(true); / ui-btn1-setFocus(); / 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(t

38、his); / ui-retranslateUi(lockWidget); / update(); ui-lineEdit-setText(the GATE is ON!); / this-updateGeometry(); / qDebug(recv 2222); 远程灯控:#include lockwidget.h#include ui_lockwidget.h#include#include#includehead.hlockWidget: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 lockW

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号