还剩52页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
本科毕业论文(设计)(2009届本科毕业生)题 目智能家居监控系统的设计与实现学生姓名xxxxx学生学号xxxxxxxx学院名称科信软件学院专业名称计算机科学与技术指导教师xxxxxxxxxxx二零一三年五月【摘要】随着嵌入式技术的发展,智能家居监控系统已经渐渐走入人们的视线实现智能化离不开运算和控制单元,本系统采用MCUS5PV210作为主控器件,智能家居应用系统由硬件和软件组成硬件由ARM板扩展的存储器、输入/输出设备以及各种实现智能家居系统控制要求的接口电路和有关的外围电路芯片或部件组成;软件由ARM板应用系统实现其特定控制功能的各种工作程序和管理程序组成在智能家居应用系统开发的过程中,应不断调整软、硬件,协调地进行软、硬件设计,以提高工作效率,当系统硬件和软件紧密配合、协调一致,就可以组成高性能的智能家居应用系统本课题完成了智能家居应用系统其开发过程的系统的总体设计、硬件设计、软件设计和系统调试,根据开发的实际需要,相互协调、交叉,有机的进行【关键词】嵌入式,智能,监控DesignandImplementationofintelligenthomemonitoringsystem【Abstract】Withthedevelopmentofembeddedtechnologytheintelligenthomemonitoringsystemhasbeengraduallycameintothesightofpeople.IntelligentcomputingandcontrolunitcannotbeseparatedthesystemusestheMCUS5pv210asthemasterdeviceintelligenthomeapplicationsystemconsistsofhardwareandsoftware.ExtendedbyaARMhardwarememoryinput/outputdevicesandavarietyofrequirementstoachieveintelligenthomesystemcontrolinterfacecircuitandtheexternalcircuitchipsorcomponents;softwarebythemicrocomputerapplicationsystemtoachieveitsspecificcontrolofvariousworkprocessesandmanagementprocedurescomposition.IntheMCUapplicationdevelopmentprocessshouldcontinuetoadjustthesoftwareandhardwareandcoordinatedsoftwareandhardwaredesignedtoimproveefficiencywhenthesystemcloselywithhardwareandsoftwareandcoordinatedcanformhigh-performancemicrocontrollerapplications.ThesubjectcompletedtheApplicationSystemthedevelopmentprocessofsystemdesignhardwaredesignsoftwaredesignandsystemdebuggingaccordingtotheactualneedsofthedevelopmentcoordinationcrossorganicconduct.【Keywords】EmbeddedIntelligentMonitoring目录TOC\o1-3\h\z\u第一章绪论
11.1系统的背景和研究意义
11.2智能家居系统概述
11.3系统的现状分析
21.4系统设计主要任务2第二章软件的功能和性能描述
32.1软件的功能需求
32.2软件的性能需求4第三章软件总体结构设计
53.1硬件结构概述
53.2软件功能划分
73.3软件运行环境和开发平台8第四章软件子系统功能设计
94.1PC软件设计
94.2嵌入式软件(Main)设计
94.3智能服务器终端设计10第五章接口设计
105.1接口描述11第六章系统主要流程描述
126.1初始化流程
126.2业务流程
136.3系统子模块流程描述14第七章软件子系统接口设计
167.1软件子系统的接口设计概述
167.2公共数据结构、变量、宏定义
167.3Main子系统与智能客户端子系统的接口
177.4Main接口函数
257.5智能客户端接口函数36第八章结论41后记42参考文献43附录44第1章绪论
1.1系统的背景和研究意义安全是一个社会和企业赖以生存和发展的基础,尤其是在现代化技术高度发展的今天,犯罪更趋智能化,手段更隐蔽,加强现代化的安防技术就显得更为重要安全防范技术就是在这个意义上发展起来的,它是电子技术、传感器技术、计算机技术和现代通信技术等高科技技术相结合的产物它在预防和打击犯罪,维护社会治安,预防灾害事故,减少国家、集体财产和人民生命等方面起到了一般防范手段难以或者不可能起到的作用安全防范技术系统和产品是预防和打击犯罪以及预防灾害事故发生的锐利武器,是社会治安综合治理的重要内容,它将使我们逐步告别一把锁头保平安的时代利用安全防范技术进行安全防范首先对犯罪分子有种威慑作用,使其不敢轻易作案如安防系统能及时发现犯罪分子的作案时间和地点,使其不敢轻易动手,所以对预防犯罪相当有效其次,一旦出现了入侵、盗劫等犯罪活动,安全技术防范系统能及时发现,及时报警,电视监控系统能自动记录下犯罪现场及犯罪分子的犯罪过程,以便及时破案,节省了大量的人力、物力重要单位,要害部门安装了多功能、多层次的安防监控系统后,大大减少了巡逻值班人员的工作强度,提高效率,减少开支摄像头监视系统是安全技术防范体系中的一个重要组成部分,是一种先进的、防范能力极强的综合系统随着科技的飞速发展,CCD摄像机技术日趋成熟和商品化,在监视系统中,可以把被监视场所的图像内容传送到用户终端设备,使被监控场所的情况一目了然同时,监视终端还可以与防盗报警等其它安全技术防范体系联动运行,使防范能力更加强大监视终端的另一特点是它可以把被监视场所的图像及声音全部或部分地记录下来,这样就为日后对某些事件的处理提供了方便条件及重要依据微电子计算机技术高速发展的今天,应用于监视电视系统中的技术越来越多,各种设备日趋先进和完善对于设计者来说最重要的一点是如何将先进的技术和设备有机地加以结合,根据用户的实际情况使系统切实地发挥出安全防范的威力
1.2智能家居系统概述随着社会信息化的加快,人们的工作、生活和通讯、信息的关系日益紧密信息化社会在改变人们生活方式与工作习惯的同时,也对传统的住宅提出了挑战,社会、技术以及经济的进步更使人们的观念随之巨变人们对家居的要求早已不只是物理空间,更为关注的是一个安全、方便、舒适的居家环境家居智能化技术起源于美国,它是以家为平台进行设计的智能家居控制系统是以HFC、以太网、现场总线、公共电话网、无线网的传输网络为物理平台,计算机网络技术为技术平台,现场总线为应用操作平台,构成一个完整的集家庭通信、家庭设备自动控制、家庭安全防范等功能的控制系统智能家居控制系统的总体目标是通过采用计算机技术、网络技术、控制技术和集成技术建立一个由家庭到小区乃至整个城市的综合信息服务和管理系统,以此来提高住宅高新技术的含量和居民居住环境水平大型的智能家居控制系统通常由系统服务器、家庭控制器各种模块、各种路由器、电缆调制解调器头端设备CMTS、交换机、通讯器、控制器、无线收发器、各种探测器、各种传感器、各种执行机构、打印机等主要部分组成
1.3系统的现状分析在智能家居监控系统未广泛使用之前,监测室内温度还需要依靠温度计;还没有用于监控室内烟雾浓度的装置;还没有用于监控是否有外人闯入的装置;还没有报警系统随着近些年信息技术和硬件技术以及计算机网络技术的不断发展,家居也先从传统的毫无安全可言的普通家居发展到有一定安全性的智能家居,再发展到今天的数字化、信息化的智能家居,这些变化使得智能家居越来越现代化、人性化,人民的生命和财产安全也得到了很好的保障随着互联网的飞速发展,人们可以利用手机通过网络和自家的监控系统建立连接,实时动态的监控家里环境变化
1.4系统设计主要任务本文利用凌阳ARM9嵌入式开发板,S5PV210CPU核心板和装有Linux系统或装有Linux虚拟机的PC机一台本设计包括硬件驱动程序接口的封装、监控软件的编写、设备操作与维护软件三大部分
1.硬件部分智能家居控制系统其硬件部分主要由八大部分构成,即LED灯、蜂鸣器、按键、以太网模块(dm9000)、ds18b20温湿度传感器、烟雾传感器(ADC)、s5pv210CPU板模块与接口和电源部分用户可以通过GPRS模组上的RS232接口和PC机直接相连接使用,通过SHT11温湿度传感器检测温度变化,电源部分则为各个部分提供工作电源
2.软件部分软件设计部分主要由三大部分构成即底层驱动程序接口函数、监控软件、上层操作与维护软件第2章软件的功能和性能描述
2.1软件的功能需求
2.
1.1监控功能
1.监控室内温度通过温度传感器(ds18b20)定时对室内温度进行采样,如果室内温度超过设定的温度阀值,系统自动对室内温度异常进行处理(蜂鸣器报警、led灯闪烁)
2.监控红外传感器通过按键来模拟红外传感器,以阻塞或者异步通知方式进行对红外传感器进行监控,如果红外传感器探测有非法份子闯入,系统自动对异常进行处理(蜂鸣器报警、led灯闪烁)
3.监控室内烟雾浓度通过测电压值来模拟烟雾传感器,定时对室内烟雾浓度进行采样,如果室内烟雾浓度超过设定的烟雾浓度阀值,系统会自动对室内异常进行处理(蜂鸣器报警、led灯闪烁)
2.
1.2智能服务器
1.获取室内参数通过获取各个芯片的参数,来动态显示室内相关信息,比如当前室内温度,湿度,烟雾浓度,场景状态等
2.配置管理通过智能服务器终端界面进行参数配置
2.
1.3智能客户端
1.故障报警系统内部产生的各种故障可以上报至操作维护终端,软件支持告警过滤、告警复位等功能,重要告警,存储到FLASH,以备查阅
2.性能管理系统内部相关工作参数上报至操作维护终端
3.配置管理系统相关参数支持设置和查询
3.软件版本管理系统支持软件版本的查询和软件的在线升级
4.系统自检系统支持自检,故障定位到模块级
2.2软件的性能需求1.支持3G网络支持3G网络之后,能通过3G网络进行通信,使得通信变得更加快捷和方便2.支持视频传输支持视频输出之后,能用摄像头,通过网络来传输视频信号,使得通信变成可视化第3章软件总体结构设计
3.1硬件结构概述
3.
1.1系统硬件框图智能家居系统由TPAD,3GModem,ZIGBEE,PC三个单元组成,硬件框架如图3-1,各个单元,除了3GModem都有相应的软件在运行各个单元电源目前板卡是单独供电,没有使用PMIC进行有效管理TPAD是整个家居系统的控制中心和处理单元,主要对温度,烟雾,红外进行采集和分析,并且能通过CMOS或者CCD摄像头进行视频采集,并且能够与ZIGBEE,3GModem进行通信3GModem主要能够进行语音通话,网络传输;ZIGBEE无线通信模块进行控制命令的处理图3-1智能家居系统硬件框架示意图
3.
1.2硬件接口描述1.操作维护平面操作维护平面包括系统信息的监控,设备的控制,软件升级等由上位机发起的配置和控制,其硬件接口如图3-2所示系统上电后,TPAD进行硬件初始化工作,读取相应的信息并在LCD上显示,由上位机发起的配置,控制命令都有TPAD统一进行解析和处理,再由TPAD对3GModem,ZIGBEE进行配置系统运行状态(主要指系统存活状态信息,版本信息,告警信息,温度信息等)监测信令的流程为上位机周期性查询TPAD系统信息,如果温度超过设定值,可以将告警存入FLASH,并将告警信息上报给上位机软件图3-2操作维护平面硬件接口示意图图3-2中,各个维护接口说明如下--M1操作维护配置参数,自检结果上报,告警信息,处理器状态,版本查询,以太网接口;--M2操作维护参数配置,按键键盘;--M3操作维护获取红外状态,信号线;--M4操作维护获取温度值,信号线;--M5操作维护配置或者获取3GModem信息,RS232接口;--M6操作维护配置或者获取ZIGBEE信息,RS232接口;2.控制平面系统上电后,启动监控软件,监测温度传感器,烟雾传感器,红外传感器的信息,针对不同的情况,作相应的处理同时,监听和处理上位机和智能服务器终端的请求,并作相应的处理,其硬件接口如图3-3所示图3-3控制平面硬件接口示意图图3-3,各个控制接口实现说明如下--S1系统监听和处理上位机的处理请求,以太网接口;--S2系统监听和处理智能服务器终端的配置请求和查询信息,LCD;--S3系统接受和处理键盘输入信息,按键键盘;--S4系统阻塞或者异步通知方式监测红外传感器状态,信号线;--S5系统定时监测温度传感器信息,信号线;--S6系统与3GModem进行数据通信,RS232接口;--S7系统与ZIGBEE进行数据通信,RS232接口
3.2软件功能划分
3.
2.1软件层次架构智能家居系统上的软件包括PC软件和嵌入式软件,其中PC软件的实现基于PC机,嵌入式软件的实现基于ZIGBEE芯片(TIZC3530),ARM(三星S5PV210)PC机软件基于Ubuntu操作系统,ARM上运行的软件基于操作系统,从开发的层次上分为驱动平台和应用软件,如图3-4所示图3-4系统软件模型
3.
2.2软件子系统划分按照不同层次软件所实现的特定功能对软件进行模块划分,软件子系统划分如下
1.PC应用软件(智能客户端)该软件面向研发和测试人员,进行对系统的维护和相关操作
2.嵌入式应用软件1Main监控温度,烟雾,红外传感器,并作相应的处理异常功能,同时监听和处理PC软件发送的请求2智能服务器终端显示和配置系统信息;3ZIGBEE处理Main下发的信令
3.3软件运行环境和开发平台
3.
3.1嵌入式软件S5PV210搭载嵌入式linux操作系统,调试软件环境Ubuntu,编译器使用arm-linux-gcc
4.
4.6Eclipse
3.
73.
3.2智能客户端操作系统Ubuntu开发环境QT4辅助软件qtcreatorqtdesigner网络协议UDP网络环境以太网第4章软件子系统功能设计
4.1PC软件设计
4.
1.1概述PC软件主要通过以太网跟TPAD进行连接,并对系统进行相应的操作和维护,下面主要介绍智能客户端功能设计
4.
1.2智能客户端软件功能设计
1.控制1本机编号序号1/2/3/42TPAD实时时钟的配置yyyy-mm-ddhh:mm:ss3自检4校准5系统重新复位6配置ZIGBEE7发送3GModem短信息8开关报警器9配置LED灯工作状态10配置设备信息
2.显示1本机编号,TPADcpu利用率,内存使用率,剩余磁盘空间2显示室内温度,采样电压和软件版本
3.监控重要告警的记录和显示4.嵌入式软件的上传和下载
4.2嵌入式软件(Main)设计
4.
2.1Main软件功能设计
1.功能1监控室内温度,监测是否超过预先设定值,如果超过,表示发生异常,进一步处理2监控室内烟雾,监测是否超过预先设定值,如果超过,表示发生异常,进一步处理3监控红外传感器,监测是否有非法分子闯入
2.流程系统上电以后,启动Main软件,分别启动相应的处理功能
3.接口与智能客户端之间接受智能客户端发送的请求,作出相应的处理,将处理结构反馈给智能客户端,通过以太网进行通信
4.3智能服务器终端设计
4.
3.1智能服务器终端软件功能设计
1.功能动态显示系统状态和信息,以方便用户查看
2.流程界面初始化,并获取系统信息显示
3.接口依据软件接口,获取系统信息第5章接口设计
5.1接口描述智能家居项目软件子系统分为不同处理器和同一处理两种情况,不同处理器之间软件接口通过硬件接口实现;同一处理器的接口通过内部消息或者共享全局变量来实现各个接口的综合描述如图5-1所示图5-1软件接口列表源子系统只能客户端可以通过以太网与目标子系统Main进行通信,智能客户端可以配置系统设备信息,查询系统信息源子系统Main可以通过以太网与目标子系统智能客户端进行通信,智能客户端可以反馈系统信息给Main源子系统智能服务器终端可以通过操作系统内部消息进行通信,智能服务器终端可以查询系统设备信息,或者视频数据,配置系统目标子系统智能服务器终端可以通过操作系统内部消息进行通信,智能服务器终端可以反馈消息第六章系统主要流程描述
6.1初始化流程系统初始化主要完成软件加载和初始化工作,初始化流程如图6-1所示,具体描述如下
(1)系统上电;
(2)启动bootloader实现硬件初始化,加载logo,初始化组合按键,通过启动参数加载内核到内存,启动内核,并给内核传递参数;
(3)启动内核,主要完成驱动初始化工作,挂接根文件系统;
(4)挂接根文件系统,进行相关初始化配置工作,创建设备节点,挂接文件系统(sysfstmpfsramfs等),配置网络环境;
(5)挂接用户分区,进行智能服务器终端和Main初始化工作,打开设备,创建相应的监控任务,等待数据交互,初始化完成图6-1系统初始化流程
6.2业务流程智能家居系统业务流程包括PC软件智能客户端跟Main的业务交互,同时Main本身也有监控温度和监控红外的功能,系统业务流程图如图6-2所示,具体业务说明如下图6-2系统业务流程示意图智能客户端与Main
1.客户端通过以太网接口向Main发送查询系统信息请求,系统信息包括,系统是否正常工作,当前CPU利用率,内存利用率,剩余磁盘空间大小,当前室内温度,软件和硬件版本号,Main最后上报信息给客户端;
2.客户端通过以太网接口向Main发送配置设备请求,配置项包括配置硬件寄存器,EEPROM,温度阀值,手机号码,3GModem短消息信息,ZIGBEE控制命令,Main最后上报配置结果;
3.客户端通过以太网接口向Main发送软件在线升级请求,最后上报升级结果;
4.客户端通过以太网接口向Main发送设备自检请求,最后上报自检结果;
5.客户端通过以太网接口向Main发送时钟校准请求,最后上报校准结果智能服务器终端设计显示室内温度,湿度,红外状态;Main内部处理
1.启动监控温度线程,定时采集室内温度,并做相应的处理流程;
2.启动监控红外线成,阻塞或者异步通知方式采集红外状态,并做相应的处理流程;
6.3系统子模块流程描述
6.
3.1Main子系统流程描述系统上电以后,执行Main软件,执行流程如图6-3所示,具体文字说明如下图6-3Main子系统流程描述
(1)初始化log为了便于调试软件,添加log日志跟踪机制,要求将内核启动信息和应用程序信息都可以进行查看;
(2)初始化设备打开使用到的设备,如串口,报警器,LED,EEPROOM,LCD等设备;
(3)创建三个任务,分别用于监控温度,监控红外,并出去请求;
(4)创建Socket,用于监听客户端请求,并出去相应的请求;
6.
3.2智能客户端子系统流程描述在PC机上启动智能客户端软件,其执行流程如图6-4所示,具体文字描述如下图6-4智能客户端子系统流程描述
(1)打开智能客户端软件;
(2)启动智能客户端软件登录界面;
(3)启动主界面,初始化界面信息;
(4)创建socket;
(5)等待用户发起请求,智能客户端根据请求,构造相应的消息,通过以太网将消息发送给Main第7章软件子系统接口设计
7.1软件子系统的接口设计概述此节主要讨论智能家居系统各个软件子系统以及PC软件之间的接口定义和规范进行详细描述,主要包括Main,智能客户端,智能服务器终端
7.2公共数据结构、变量、宏定义
7.
2.1应用接口消息宏定义
1.智能客户端子系统消息宏定义消息号1~100/*智能客户端-Main1~100*/#defineO_MCMMAIN_MACHINE_INFO_QUERY_REQ1/*查看系统信息*/#defineO_MCMMAIN_SET_REGISTER_DATA_REQ2/*设置寄存器*/#defineO_MCMMAIN_GET_REGISTER_DATA_REQ3/*获取寄存器*/#defineO_MCMMAIN_SET_EEPROM_DATA_REQ4/*设置作EEPROM*/#defineO_MCMMAIN_GET_EEPROM_DATA_REQ5/*获取EEPROM*/#defineO_MCMMAIN_SOFTWARE_UPDATE_REQ6/*软件在线升级*/#defineO_MCMMAIN_MODEM_REQ7/*操作3GModem*/#defineO_MCMMAIN_ZIGBEE_REQ8/*操作ZIGBEE*/#defineO_MCMMAIN_BEEP_REQ9/*操作蜂鸣器*/#defineO_MCMMAIN_LED_REQ10/*操作LED*/#defineO_MCMMAIN_HARDWARE_SELFTEST_REQ11/*硬件自检*/#defineO_MCMMAIN_TOD_ADJUST_REQ12/*时间校准*/#defineO_MCMMAIN_VERSION_QUERY_REQ13/*查看版本信息*/
2.Main子系统消息宏定义消息号101~200/*Main-MCM101~150*/#defineO_MAINMCM_MACHINE_INFO_QUERY_RSP101/*查看系统信息*/#defineO_MAINMCM_SET_REGISTER_DATA_RSP102/*设置寄存器*/#defineO_MAINMCM_GET_REGISTER_DATA_RSP103/*获取寄存器*/#defineO_MAINMCM_SET_EEPROM_DATA_RSP104/*设置作EEPROM*/#defineO_MAINMCM_GET_EEPROM_DATA_RSP105/*获取EEPROM*/#defineO_MAINMCM_SOFTWARE_UPDATE_RSP106/*软件在线升级*/#defineO_MAINMCM_MODEM_RSP107/*操作3GModem*/#defineO_MAINMCM_ZIGBEE_RSP108/*操作ZIGBEE*/#defineO_MAINMCM_BEEP_RSP109/*操作蜂鸣器*/#defineO_MAINMCM_LED_RSP110/*操作LED*/#defineO_MAINMCM_HARDWARE_SELFTEST_RSP111/*硬件自检*/#defineO_MAINMCM_TOD_ADJUST_RSP112/*时间校准*/#defineO_MAINMCM_VERSION_QUERY_RSP113/*查看版本信息*/
7.
2.2应用程序公共数据结构定义关于消息头,要求各个子系统一致,消息头描述如图7-1和图7-2所示图7-1STRU_MSG_HEAD结构图7-2STRU_DD_TIME_INFO数据结构
7.3Main子系统与智能客户端子系统的接口
7.
3.1接口通讯方式智能客户端向Main发送查询系统是否正常工作,当前室内温度,软件版本等消息;当智能客户端发送查询系统信息请求时,Main进行对消息处理,并返回系统信息给智能客户端;当智能客户端发送操作硬件寄存器,EEPROM,3GMdoem,ZIGBEE请求时,Main进行对消息处理,返回操作结果给智能客户端;当智能客户端发送软件在线升级请求时,Main根据请求进行软件升级并返回升级结果给智能客户端智能客户端与Main通过以太网进行通信
7.
3.2接口消息描述智能客户端与Main接口消息清单如下图7-3所示图7-3智能客户端与Main接口消息描述下面详细介绍智能客户端和Main接口消息
1.O_MCMMAIN_MACHINE_INFO_QUERY_REQ智能客户端向Main查询系统信息名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---
2.O_MAINMCM_MACHINE_INFO_QUERY_RSPMain返回系统信息名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---f32MsgHeaderf32当前采样电压---u32CpuFrequ32当前CPU频率---u32FreeMemu32当前剩余内存---u32FreeDisku32当前剩余FLASH空间---
3.O_MCMMAIN_SET_REGISTER_REQ智能客户端向Main发送设置寄存器内容请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u32Offsetu32地址---u32RegisterDatau32数据---
4.O_MAINMCM_SET_REGISTER_RSPMain向智能客户端返回配置结果:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否配置成功---u8Reserved
[3]u8字对齐,保留---
5.O_MCMMAIN_GET_REGISTER_DATA_REQ智能客户端向Main发送获取寄存器数据请求:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u32Offsetu32地址---
6.O_MAINMCM_GET_REGISTER_DATA_RSPMain向智能客户端返回寄存器数据名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u32RegisterDatau32数据---
7.O_MCMMAIN_SET_EEPROM_DATA_REQ智能客户端向Main发送设置EEPROM数据请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u16Offsetu16偏移地址---u16Reservedu16字对齐,保留---u8EepromData
[4]u8数据---
8.O_MAINMCM_SET_EEPROM_DATA_RSPMain向智能客户端返回配置结果名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否配置成功---u8Reserved
[3]u8字对齐,保留---
9.O_MCMMAIN_GET_EEPROM_DATA_REQ智能客户端向Main发送获取EEPROM数据请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u16Offsetu16偏移地址---u16Reservedu16字对齐,保留---
10.O_MAINMCM_GET_EEPROM_DATA_RMain向智能客户端返回EEPROM数据:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8EepromData
[4]u8数据---
11.O_MCMMAIN_SOFTWARE_UPDATE_REQ智能客户端向Main发送软件在线升级请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8FileName
[20]u8文件名---u32Lenu32有效长度---u8Buffer[BUF_SIZE]u8数据---
12.O_MAINMCM_SOFTWARE_UPDATE_RSPMain向智能客户端返回软件升级结果名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否升级成功---u8Reserved
[3]u8字对齐,保留---
13.O_MCMMAIN_MODEM_REQ智能客户端向Main发送短信息请求:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8PhoneNum
[11]u8手机号---u8Paddingu8字对齐---u8MessageInfo
[20]u8信息内容---
14.O_MAINMCM_MODEM_RSPMain向智能客户端返回发送短信结果名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否配置成功---u8Reserved
[3]u8字对齐,保留---
15.O_MCMMAIN_ZIGBEE_REQ智能客户端向Main发送ZIGBEE信息请求:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8MessageInfo
[20]u8控制命令---
16.O_MAINMCM_ZIGBEE_RSPMain向智能客户端返回发送ZIGBEE信息结果名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否配置成功---u8Reserved
[3]u8字对齐,保留---
17.O_MCMMAIN_BEEP_REQ智能客户端向Main发送控制蜂鸣器请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8BeepCtrlOperationu8控制命令0关闭1打开
18.O_MCMMAIN_BEEP_RSPMain向智能客户端返回配置蜂鸣器结果名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否配置成功---u8Reserved
[3]u8字对齐,保留---
19.O_MCMMAIN_LED_REQ智能客户端向Main发送控制LED灯请求:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8LedTypeu8指明LED编号1告警灯2运行灯u8Reservedu8指明LED操作命令0关1开2快闪3慢闪u8Reserved
[2]u8字对齐,保留---u32BlinkTimeu32闪烁持续时间---
20.O_MAINMCM_LED_RSPMain向智能客户端返回配置LED结果:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8是否配置成功---u8Reserved
[3]u8字对齐,保留---
21.O_MCMMAIN_HARDWARE_SELFTEST_REQ智能客户端向Main发送自检请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---
22.O_MAINMCM_HARDWARE_SELFTEST_RSPMain向智能客户端返回自检结果名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---s32SelfTestResults32自检结果---
23.O_MCMMAIN_TOD_ADJUST_REQ智能客户端向Main发送时钟配置请求名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---struTimeInfoSTRU_TIME_INFO日期信息STRU_TIME_INFO
24.O_MAINMCM_TOD_ADJUST_RSPMain向智能客户端返回时钟配置结果:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---bSuccessfulu8配置结果---u8Reserved
[3]u8字对齐,保留---
25.O_MCMMAIN_VERSION_QUERY_REQ智能客户端向Main发送查询软件版本请求:名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8Queryldu8要查询版本的ID1:Main2:智能服务器终端u8Reserved
[3]u8字对齐,保留---
26.O_MAINMCM_VERSION_QUERY_RSPMain向智能客户端返回软件版本信息名称数据类型描述取值范围struMsgHeaderSTRU_MSG_HEADER消息头---u8Queryldu8要查询版本的ID1:Main2:智能服务器客户端u8Padding
[3]u8字对齐---s8Version
[8]s8版本信息---
7.
3.3接口宏定义#defineBUF_SIZE4*1024/*文件传输缓冲区*/
7.
3.4接口变量定义无
7.
3.5接口数据结构定义无
7.4Main接口函数
7.
4.1接口函数概述为了提高上层应用软件的可移植性,加强软件系统的层次化和模块化,提高系统的运行性能,需要提供统一的接口函数,如图7-30所示:图7-30Main接口函数
7.
4.2接口函数详细设计
1.初始化log日志文件函数函数实现描述(自然语言)u32log_initvoid{创建log设备文件节点;判断是否成功;否则返回错误代码;打开log设备节点;如果打开失败;返回错误码;返回C_SYS_OK;}
2.设置log日志输出级别函数函数实现描述(自然语言)voidlog_set_levelintlevel{更新全局log输出级别值log_level为level;}
3.log日志输出函数函数实现描述(自然语言)voidlog_writeintlevelconstchar*fmt...{if(判断level是否大于全局log_level)返回;if(打开log设备文件失败)返回;将可变参数信息写入log日志文件里;}
4.关闭log设备文件函数函数实现描述(自然语言)voidlog_closevoid{关闭log设备文件;}
5.初始化线程函数函数实现描述(自然语言)u32create_pthreadvoid{温度线程ID=创建监控温度线程;如果失败返回错误码;红外线程ID=创建监控红外传感器线程;如果失败返回错误码;返回C_SYS_OK;}
6.监控温度线程函数函数实现描述(自然语言)void*thread_monitor_temperaturevoid*pdata{for{;;}{每隔3秒钟获取一次当前室内温度;如果温度大于温度阀值;开启报警器;发送短信息给户主;}}
7.监控红外线程函数函数实现描述(自然语言)void*thread_monitor_infraredvoid*pdata{for{;;}{阻塞方式读取红外状态;如果红外采集到有人闯入;开启报警器;发送短信息给户主;}}
8.初始化设备函数函数实现描述(自然语言)u32init_devicevoid{打开设备;打开失败,返回错误码;初始化串口;初始化失败,返回错误码;配置GPRS工作模式;配置失败,返回错误码;返回C_SYS_OK;}
9.初始化串口函数函数实现描述(自然语言)u32init_uartintfdintspeed{配置串口波特率,奇偶校验,数据位,停止位;如果配置失败返回错误码返回C_SYS_OK;}
10.配置GPRS工作模式函数函数实现描述(自然语言)u32gprs_configvoid{配置GPRS以TEXT模式工作,配置短信服务中心;如果配置失败返回错误码返回C_SYS_OK;}
11.发送GPRS短信息函数函数实现描述(自然语言)u32send_gprs_messages8*phonenums8*message{构造GPRS消息包;发送消息;如果发送失败;返回错误码;返回C_SYS_OK;}
12.打开蜂鸣器函数函数实现描述(自然语言)u32start_alarmvoid{打开蜂鸣器;如果打开失败;返回错误码;返回C_SYS_OK;}
13.关闭蜂鸣器函数函数实现描述(自然语言)u32stop_alarmvoid{关闭蜂鸣器;如果关闭失败;返回错误码;返回C_SYS_OK;}
14.打开LED函数函数实现描述(自然语言)u32start_ledvoid{打开LED;如果打开失败;返回错误码;返回C_SYS_OK;}
15.关闭LED函数函数实现描述(自然语言)u32stop_alarmvoid{关闭LED;如果关闭失败;返回错误码;返回C_SYS_OK;}
16.获取温度函数函数实现描述(自然语言)u32get_ds18b20_temperaturef32*Temp{获取温度值;如果获取失败;返回错误码;*Temp=温度值;返回C_SYS_OK;}
17.ADC配置函数函数实现描述(自然语言)u32adc_configu32bitu32channel{配置ADC工作模式;如果配置失败;返回错误码;更新全局转换精度变量和转换通道变量;返回C_SYS_OK;}
18.获取采样电压值函数函数实现描述(自然语言)u32get_adc_voltagef32*vol{采集电压值;如果采集失败;返回错误码;*vol=采集完毕的电压值;返回C_SYS_OK;}
19.获取红外状态函数函数实现描述(自然语言)u32get_button_keyu8*val{阻塞方式获取红外状态;如果采集失败;返回错误码;*val=1;//表示有人闯入返回C_SYS_OK;}
20.系统复位函数函数实现描述(自然语言)u32system_rebootvoid{reboot;如果复位失败;返回错误码;返回C_SYS_OK;}
21.创建初始化socket函数函数实现描述(自然语言)u32create_socketvoid{创建socket;初始化socket;如果创建初始化失败;返回错误码;监听智能客户端发送的请求;如果有请求到来;解析消息;switch消息类型{case获取系统信息case操作EEPROM等}发送处理消息给智能客户端;返回C_SYS_OK;}
22.获取系统信息函数函数实现描述(自然语言)u32get_machine_stat_reqchar*pskbuf{获取当前系统状态获取当前室内温度;获取当前CPU工作频率;获取当前内存使用率;获取当前剩余FLASH空间;获取失败返回错误码;将信息填充到系统信息消息结构体中;返回C_SYS_OK;}
23.操作寄存器函数函数实现描述(自然语言)u32register_xfer_reqchar*pskbuf{操作寄存器;返回请求结果到pskbuf中;返回C_SYS_OK;}
24.操作EEPROM函数函数实现描述(自然语言)u32eeprom_xfer_reqchar*pskbuf{操作EEPROM;返回请求结果到pskbuf中;返回C_SYS_OK;}
25.软件在线升级函数函数实现描述(自然语言)u32sw_update_reqchar*pskbuf{打开新文件;将一包数据写入新文件;关闭文件返回操作结果到pskbuf中;返回C_SYS_OK;}
26.发送GPRS短信息函数函数实现描述(自然语言)u32send_gprs_message_reqchar*pskbuf{调用发送短信息处理函数发送;返回C_SYS_OK;}
27.发送ZIGBEE信息函数函数实现描述(自然语言):u32send_zigbee_message_reqchar*pskbuf{调用发送ZIGBEE信息处理函数发送;返回C_SYS_OK;}
28.蜂鸣器配置函数函数实现描述(自然语言)u32beep_control_reqchar*pskbuf{调用配置蜂鸣器处理函数;返回C_SYS_OK;}
29.LED配置函数函数实现描述(自然语言)u32led_control_reqchar*pskbuf{调用配置LED处理函数;返回C_SYS_OK;}
30.自检处理函数函数实现描述(自然语言)u32hardware_selftest_reqchar*pskbuf{返回消息头即可;返回C_SYS_OK;}
31.时间校准函数函数实现描述(自然语言)u32time_adjust_reqchar*pskbuf{获取时间信息;设置系统时间;返回C_SYS_OK;}
32.获取CPU频率函数函数实现描述(自然语言)u32get_cpu_freqf32*cpufreq{打开/proc/cpuinfo文件;解析文件;获取CPU当前工作频率;返回C_SYS_OK;}
33.获取内存剩余空间函数函数实现描述(自然语言)u32get_freemem_spaceu32*freemem{打开/proc/meminfo文件;解析文件;获取内存使用率;返回C_SYS_OK;}
34.获取剩余FLASH空间函数实现描述(自然语言)u32get_freemem_spaceu32*freemem{获取当前剩余磁盘空间;返回C_SYS_OK;}
7.5智能客户端接口函数
7.
5.1接口函数概述智能客户端为PC软件,使用QT为图形引擎,其中每个空间都有相应的功能,具体参见下图7-1所示,其中每个控件都设计相应的处理函数接口,一下都为槽函数,信号都有Button被按下产生,统一都为clicked其槽函数接口列表如下图7-2所示图7-1智能客户端运行效果图7-2智能客户端接口列表
7.
5.2接口函数详细设计
1.获取系统信息槽函数函数实现描述(自然语言)voidMainWindow::CheckMachineStatFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
2.寄存器配置槽函数函数实现描述(自然语言)voidMainWindow::RegisterSettingFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
3.EEPROM配置槽函数函数实现描述(自然语言)voidMainWindow::EepromSettingFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
4.发送GPRS短信槽函数函数实现描述(自然语言)voidMainWindow::SendGprsMessageFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
5.发送ZIGBEE信息槽函数函数实现描述(自然语言)voidMainWindow::SendZigbeeMessageFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
6.蜂鸣器配置槽函数函数实现描述(自然语言)voidMainWindow::BeepSettingFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
7.LED配置槽函数函数实现描述(自然语言)voidMainWindow::LedSettingFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
8.自检槽函数函数实现描述(自然语言)voidMainWindow::HardWareTestSelfFunctio{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;显示界面元素信息;}
9.软件在线升级槽函数函数实现描述(自然语言)voidMainWindow::SoftWareUpdateFunctionvoid{根据界面信息构造消息;打开文件;for;;{读文件;发送消息给Main;获取Main的反馈;解析消息;判断是否读完;如果读完,显示升级结果;并返回;否则继续读文件进行传输;}}
10.时间校准槽函数函数实现描述(自然语言)voidMainWindow::TimeAdjustFunctionvoid{根据界面信息构造消息;发送消息给Main;获取Main的反馈;解析消息;}第八章总结经过毕业设计,我了解到了嵌入式开发的基本流程,通过编写众多的程序,强化了自己的编程能力,加深了对计算机语言理论的理解因为时间不足和精力不够的原因,智能家居系统的功能设计还不够完善,在未来时间充裕、技术更成熟的情况下,功能设计可以更加完善,如
(1)家电控制板与ARM的协同合作
(2)系统控制功能方面还需扩展,如GSM模块,GPRS网络通信等
(3)系统的运行信息实时保存如传感器报警的记录,用户的登陆和控制的记录等后记经过三个多月的收集资料,努力钻研,实现了预期的功能;在今后将不断扩展其他的一些功能,了解不同的操作系统和服务器,研究了解了linux操作系统,Linux与其它操作系统相比是个后来者,但Linux具有其它操作系统无法比拟的优势其一,Linux具有开放的源代码,能够大大降低成本其二,既满足了根据实际情况有针对性地开发自己的Linux操作系统的要求,又吸引了众多软件开发商对内容应用软件的开发,丰富了第三方应用了解最新的技术发展,使自己的研究成果能够适应网络时代的发展趋势在整个过程中从接触linux操作系统到使用linux操作系统的一些编译工具进行程序开发,学到了很多!不仅要是熟悉现在已有的功能,还要发挥想象,不断在现有基础上拓展更多的功能!经过三个多月的收集资料,努力钻研,实现了预期的功能;在今后将不断扩展其他的一些功能,了解不同的操作系统和服务器,研究了解了linux操作系统,Linux与其它操作系统相比是个后来者,但Linux具有其它操作系统无法比拟的优势其一,Linux具有开放的源代码,能够大大降低成本其二,既满足了根据实际情况有针对性地开发自己的Linux操作系统的要求,又吸引了众多软件开发商对内容应用软件的开发,丰富了第三方应用了解最新的技术发展,使自己的研究成果能够适应网络时代的发展趋势在整个过程中从接触linux操作系统到使用linux操作系统的一些编译工具进行程序开发,学到了很多!不仅要是熟悉现在已有的功能,还要发挥想象,不断在现有基础上拓展更多的功能!此次毕业设计是在指导老师的悉心指导和支持鼓励下完成的,特别是季老师从课题的选择、方案论证,都尽其所能给予了我很多的指导与帮助同时,也得到了同学们的大力帮助,在此向始终关心、支持和帮助我的老师和同学致以诚挚的谢意参考文献
[1]秦勃,王琳,邵峰晶,於雷.无线嵌入式智能家居环境网关.计算机应用研究
2006.06:P23-33
[2]朱文凯何岭松丁汉熊有伦.基于Internet的嵌入式Web传感器.仪表技术与传感器
2002.08:P7-18
[3]美BorkoHBernierC.L.Indexingconceptsandmethods.NewYork:AcademicPr.1978年P167-
168.
[4]杨叔子史铁林李东晓分布式监测诊断系统的开发与设计,振动.测试与诊断,1997,01P24-30
[5]王文利段宝岩刘宏.基于网络的机械设备远程监测与故障诊断.制造业自动化
1999.214:P32-35
[6]周洪,胡文山,张立明,卢亦焱.智能家居控制系统.北京中国电力出版社
2006.01
[7]陶波丁汉熊有伦.基于嵌入式Internet的工业控制.测控技术
2011.08:P23-32
[8]吴仲城戈瑜虞承端方廷健.传感器的发展方向——网络化智能传感器.电子技术应用
2010.02:P10-21
[9]杨士元.“智能家居”系列讲座之一掀开智能家居的面纱.中国计算机用户
2011.33:P30-39
[10]卢伟国杨本强.嵌入式WEB传感器的网络化接口设计.电子技术应用
2011.02:P18-27
[11]李宏宇.基于嵌入式平台远程空调控制系统的研究.东北农业大学2009年附录
1.LED测试程序代码如下#includestdio.h#includesys/types.h#includesys/stat.h#includefcntl.h#defineLED1_ON0x10001#defineLED1_OFF0x10002#defineLED2_ON0x10003#defineLED2_OFF0X10004intmainintargcchar*argv[]{intfd;fd=open/dev/ledsO_RDWR;iffd0{printfopenledserror\n;return-1;}while1{ioctlfdLED1_ON;sleep1;ioctlfdLED1_OFF;sleep1;ioctlfdLED2_ON;sleep1;ioctlfdLED2_OFF;sleep1;}closefd;return0;}
2.蜂鸣器测试代码如下#includestdio.h#includesys/types.h#includesys/stat.h#includefcntl.h#defineBEEP_ON0x10007#defineBEEP_OFF0x10008intmainintargcchar*argv[]{intfd;fd=open/dev/beepsO_RDWR;iffd0{printfopenbeeperror\n;return-1;}while1{ioctlfdBEEP_ON;sleep1;ioctlfdBEEP_OFF;sleep1;}closefd;return0;}
3.ADC测试程序代码如下#includestdio.h#includesys/types.h#includesys/stat.h#includefcntl.h#includesys/ioctl.h#includestdlib.h#includestring.h#defineADC_RESOL0x10012#defineADC_INPUT_PIN0x10013intmainintargcchar*argv[]{intfd;unsignedintvoltage;doubleAdcInfo;chartmp
[10];intnbit;intport;memsettmp0sizeoftmp;ifargc!=3{printfusage:\n%snbit|port\nargv
[0];return-1;}nbit=strtoulargv
[1]NULL10;port=strtoulargv
[2]NULL10;fd=open/dev/s5pv210_adcO_RDWR;ioctlfdADC_RESOLnbit;ioctlfdADC_INPUT_PINport;while1{readfdvoltagesizeofvoltage;AdcInfo=floatvoltage/1nbit*
3.3;sprintftmp%.1fAdcInfo;AdcInfo=atoftmp;printfvol=%f\nAdcInfo;usleep300000;}closefd;return0;}
4.eeprom测试程序代码如下#includestdio.h#includestdlib.h#includestring.h#includesys/types.h#includesys/stat.h#includefcntl.h/*i2c_testraddr*i2c_testwaddrval*/voidprint_usagechar*file{printf%sraddr\nfile;printf%swaddrval\nfile;}intmainintargcchar**argv{intfd;unsignedcharbuf
[2];ifargc!=3argc!=4{print_usageargv
[0];return-1;}fd=open/dev/at24cxx0O_RDWR;iffd0{printfcantopen/dev/at24cxx\n;return-1;}ifstrcmpargv
[1]r==0{buf
[0]=strtoulargv
[2]NULL0;readfdbuf1;printfdata:%c%d0x%2x\nbuf
[0]buf
[0]buf
[0];}elseifstrcmpargv
[1]w==0{buf
[0]=strtoulargv
[2]NULL0;buf
[1]=strtoulargv
[3]NULL0;writefdbuf2;}else{print_usageargv
[0];return-1;}return0;}
5.ds18b20测试程序代码如下#includeget_temp.h#includesys/types.h#includesys/stat.h#includefcntl.h#includesys/ioctl.h#includestdlib.h#includestdio.h#defineDS18B20_REL0x10002intmainintargcchar*argv[]{intfd=-1;floattemp=0;unsignedlongrelbit;fd=open/dev/ds18b20O_RDWR;iffd0{printfopends18b20failed!\n;exit-1;}ifargc2{printfusage:%s9or10or11or12\nargv
[0];exit-1;}relbit=strtoulargv
[1]NULL10;while1{ioctlfdDS18B20_RELrelbit;get_tempfdtemp;sleep1;printf%f\ntemp;}closefd;return0;}。