基于S3C2440的智能家居监控系统设计.docx
- 文档编号:24140421
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:47
- 大小:1,015.69KB
基于S3C2440的智能家居监控系统设计.docx
《基于S3C2440的智能家居监控系统设计.docx》由会员分享,可在线阅读,更多相关《基于S3C2440的智能家居监控系统设计.docx(47页珍藏版)》请在冰豆网上搜索。
基于S3C2440的智能家居监控系统设计
研究生课程考试成绩单
(试卷封面)
院系
仪器科学与工程学院
专业
仪器科学与技术
学生姓名
武均
学号
142648
课程名称
嵌入式系统综合设计与实践
授课时间
2015年03月至2015年06月
周学时
3
学分
2
简
要
评
语
考核论题
基于S3C2440的智能家居监控系统设计
总评成绩
(含平时成绩)
备注
任课教师签名:
日期:
注:
1.以论文或大作业为考核方式的课程必须填此表,综合考试可不填。
“简要评语”
缺填无效。
2.任课教师填写后与试卷一起送院系研究生教务员处。
3.学位课总评成绩以百分制计分。
基于S3C2440的智能家居监控系统设计
摘要
智能家居又称为数字家庭,一般是指以计算机接口技术和网络技术为基础,将各种家用数字化设备有机结合为一体的智能化的网络系统。
这些家用数字化设备包括电话、计算机、数字化的视听设备、数字化的家用电器及安全监控设备等,通过有线或无线的方式将这些设备连接起来,为家庭用户提供简单、安全、可靠、智能化的综合服务。
本课题以Web技术为核心,在基于S3C2440微处理器和嵌入式Linux操作系统的软硬件平台上构建了Web服务器和视频服务器,Web服务器采用Boa,视频服务器采用Mjpg-streamer,结合CGI技术处理HTML表单,完成用户认证、温湿度调节、红外监控、灯光控制等家居监控功能。
关键词:
智能家居;Web技术;S3C2440Linux系统
1引言
1.1研究背景
近年来由于通信技术、计算机技术、网络技术、控制技术的迅猛发展与提高,促使了家庭实现了生活现代化,居住环境舒适化、安全化。
这些高科技已经影响到人们生活的方方面面,改变了人们生活习惯,提高了人们生活质量,家居智能化也正是在这种形势下应运而生的。
智能家居控制系统的主要功能包括通信、设备自动控制、安全防范三个方面。
随着新技术和自动化的发展,传感器的使用数量越来越大,功能也越来越强,各种传感器都已经标准化、模块化这给智能家居控制系统的设计提供极大方便。
嵌入式的智能家居使系统的处理能力大大增强,可以带来更加逼真的图象以及更加真实的语音等。
根据系统定制的实时操作系统不仅可以最大限度的利用硬件资源而且还避免了过于庞大的系统造成的系统冗余。
一般只有一颗主处理芯片,系统架构更加清晰简捷。
软件采用分层设计,方便维护和升级,大大提高了代码利用率,缩短开发周期。
因为嵌入式技术是伴随着Internet而生的,所以它具有更加卓越的网络性能,可以增加更多的网络应用,很显然嵌入式类智能家居产品在应用方面具有相当的优势,应该是未来中国家庭智能化技术主流发展方向。
1.2研究内容
本次设计采用S3C2440CPU核心板和装有Linux系统的虚拟机。
本设计包括:
系统硬件的设计与调试和控制软件的编写与调试。
硬件部分:
智能家居控制系统其硬件部分主要由五大部分构成,即GPRS模组、AD转换模块、S3C2440CPU板模块与接口和电源部分。
用户可以通过GPRS模组上的RS232接口和PC机直接相连接使用,通过AD转换模块检测温度变化,电源部分则为各个部分提供工作电源。
软件部分:
软件设计部分主要由五大部分构成:
即Boa服务器搭建、CGI程序编写,GPRS初始化驱动和各个驱动程序编写。
1.3研究目的及意义
智能家居控制系统可以定义为一个过程或者一个系统。
利用先进的计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。
与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间。
还将原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交换畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。
系统的网络化功能可以提供遥控:
家电(电视,空调,热水器等)控制、照明控制、室内外遥控、窗帘自控、防盗报警、电话远程控制、可编程定时控制及计算机控制等多种功能和手段。
使生活更加舒适、便利和安全。
因智能家居控制系统简单、功能灵活,扩展容易而被人们广泛接受和应用。
家居生活的智能化是当今计算机网络与通讯技术最人性化的应用,给人们的家居生活带来了全新的感受。
2系统架构
本次设计的系统组成主要包括温湿传感模组、GPRS模组、LED显示模组、红外传感模组、BOA服务器等。
温湿传感模组:
传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。
传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,在同一芯片上,与14位的A/D转换器以及串行接口电路实现无缝连接。
每个传感器芯片都在极为精确的湿度腔室中进行标定,校准系数以程序形式储存在OTP内存中,用于内部的信号校准。
两线制的串行接口与内部的电压调整,使外围系统集成变得快速而简单。
GPRS模组:
GPRS模组采用SIM300通讯芯片,利用无线移动网络实现语音传输和点对点数据传输。
同时,模组内具备TCP/IP协议栈,可以直接利用它实现无线上网。
模组使用标准的UART串行通信接口与主芯片进行通信,可以与任何带有通用UART串行通信接口的控制器进行连接。
LED显示模组:
主要实现对整个居住空间的智能控制管理,可以用远程遥控等多种智能控制方式实现对居住空间灯光的遥控开和关等操作,电脑本地及互联网远程控制等多种控制方式实现功能,从而达到智能照明的节能、环保、舒适、方便的功能。
红外传感模组:
红外技术在现代科技、国防和工农业等领域获得了广泛的应用。
红外传感系统是用红外线为介质的测量系统。
模块接上电源后若检测到有人接近,输出端会输出1秒左右的高电平,随后恢复到低电平。
BOA服务器:
Boa是一款单任务的HTTP服务器,与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接,而是通过建立HTTP请求列表来处理多路HTTP连接请求,同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要.同时它还具有自动生成目录、自动解压文件等功能,因此,Boa具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有很高的应用价值。
本控制系统是32位ARM处理器在系统检测以及工程控制方面的应用,其特点是体积小,成本低,功能强,功耗低,是微机应用产品化的最佳机种之一,它已广泛地应用在产品智能化和工业自动化上。
而把微处理器面向工控领域对象,嵌入到工控应用系统中,实现嵌入式应用的计算机称之为嵌入式计算机系统,简称嵌入式系统。
本设计系统框图如图2.3所示:
图2.1(系统框图)
3软硬件设计
3.1硬件设计
3.1.1CPU-S3C2440介绍
S3C2440A是韩国三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T内核。
(1)特点:
1)具有PLL时钟发生器,主频最高可达533M。
2)内核1.2V供电最高400M,1.3V供电最高533M。
3)存储器支持1.8V、2.5V、3.0V、3.3V。
4)I/O均支持3.3V供电。
5)s3c2440为单机器周期执行指令集。
6)具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作,降低产品功耗。
(2)内核结构:
采用ARM920T内核,具有16KB指令Cache、16KB数据Cache和存储器管理单元MMU,指令高速存储缓冲器(I-Cache),数据高速存储缓冲器(D-cache)提高指令执行效率及数据存储效率,减少主存带宽和响应性带来的影响,加强的ARM体系结构MMU,用于支持winCE、linux等操作系统,内部高级微控制总线(AMBA)体系结构(AMB2.0,AHB/APB)。
(3)存储器控制器特性:
1)S3C2440采用总线结构管理片上外设及内存。
2)S3C2440的存储器管理器提供访问外部存储器的所有控制信号。
3)27位地址信号、32位数据信号、8个片选信号、以及读/写控制信号等。
4)总共有8个存储器bank(bank0—bank7),其中,bank0---bank5为固定128MB,bank6和bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB,最大共1GB。
bank0可以作为引导ROM,其数据线宽只能是16位和32位,其它存储器的数据线宽可以是8位、16位和32位。
5)8个存储器bank:
bank0--bank5:
SRAM、ROM。
Bank6—bank7:
SRAM、ROMSDRAM。
6)s3c2440支持两种启动方式:
NORFLASH启动,即代码直接写入NORFLASH,运行时直接在NORFLASH上运行。
NANDFLASH启动方式,即代码烧到NANDFLASH中,借助片内4K的sram,将代码由NANDFLASH烤到SDRAM中,在SDRAM中运行。
7)所使用的SunplusS3C2440BoardV2.0说明图3.1如下:
图3.1(S3C2440说明图)
3.1.2GPRS无线模组设计
GPRS模组使用标准串口与主控制器进行通讯。
模组带有一个10针的接口,该接口可以和MCU相连接也可以通过模组上的RS232接口和PC机串口相连接。
GPRS模组需通过J4的电源开关信号(PWRKEY)输入引脚向GPRS模组输入如图3.2所示的上电时序GPRS才能被启动,启动后GPRS的信号指示灯会闪烁。
也可以手动按下GPRS模组上的ON/OFF按键,大约2秒之后松开,GPRS模组亦可以被启动。
图3.2(GPRS上电时序图)
3.1.3伏开关电源电路设计
由于本控制系统单元电路较多对且对5V电源的要求比较高,其中TC35模块的突发耗电电流峰值可达2.5A,故外加的稳压器件必须达到足以提供TC35和其它电路额定电流的条件。
在本系统中,采用了芯片s3c2440完成从12V到5V的转换,必须特别注意的是,如图3.13由s3c2440芯片完成开关电源转换需要大功率的电感(100uH)和电容,以提高储能的能力,达到单元电路的耗电需求。
s3c2440为5.0V3A开关电源稳压器。
图3.3(5V开关电源稳压器电路)
3.2软件设计
3.2.1Boa服务器
Boa服务器主要完成接收客户端请求、分析请求、响应请求、向客户端返回请求结果等任务.它的工作过程主要包括:
(1)完成Web服务器的初始化工作,如创建环境变量、创建TCP套接字、绑定端口、开始侦听、进入循环结构,以及等待接收客户浏览器的连接请求;
(2)当有客户端连接请求时,Web服务器负责接收客户端请求,并保存相关请求信息;
(3)在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、URL目标、可选的查询信息及表单信息,同时根据请求做出相应的处理;
(4)Web服务器完成相应处理后,向客户端浏览器发送响应信息,关闭与客户机的TCP连接。
Boa服务器根据请求方法的不同,做出不同的响应.如果请求方法为HEAD,则直接向浏览器返回响应首部;如果请求方法为GET,则在返回响应首部的同时,将客户端请求的URL目标文件从服务器上读出,并且发送给客户端浏览器;如果请求方法为POST,则将客户发送过来的表单信息传送给相应的CGI程序,作为CGI的参数来执行CGI程序,并将执行结果发送给客户端浏览器。
Boa的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。
3.2.2CGI工具
CGI是CommonGatewayInterface的缩写,是服务器端和用户沟通的程序,它可以使你的网页更生动,网络上很多工具例如搜索引擎、留言板、BBS等都是CGI程序。
CGI是用来沟通HTML表单和服务器端程序的接口(interface)。
CGI并不是一种语言,而是可以被其他语言所应用的一个规范集。
理论上讲,你可以用任何的程序语言来编写CGI程序,只要在编程的时候符合CGI规范所定义的一些东西就可以了。
CGI是:
“公共网关接口”(CommonGatewayInterface)的简称,是HTTP服务器与其它程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI是一段程序,它运行在Server上,提供同客户端Html页面的接口。
(1)CGI的功能:
1)通常情况下CGI程序被用来解释处理来自表单的输入信息,在服务器产生相应的处理,并将相应的信息反馈给浏览器。
2)CGI程序使网页具有交互功能。
CGI程序主要完成与网页接口的连接,即主登陆窗口、led显示窗口、参数设置窗口、实时显示参数窗口等网页分别编写文件。
具体实现过程见附录!
一下是login.c的部分函数程序:
intmain(void)
{
/*定义变量,并初始化*/
char*str_len=NULL;
intlen=0;
charbuf[100]="";
charlogin_user[20]="";
charpasswd[20]="";
intexit=0;
printf("%s\r\n\r\n","Content-Type:
text/html");
printf("\n
登录结果
\n");
str_len=getenv("CONTENT_LENGTH");
3.2.3mjpg-streamer视频服务器
"mjpg-streamer",是用于从摄像头采集图像的视频服务器,它把图像以流的形式通过基于IP的网络传输到浏览器如IE。
她可以利用某些摄像头的硬件压缩功能来降低服务器CPU的开销。
使用mjpg-streamer:
(1)重新配置内核使内核支持所用的摄像头,用makemenuconfig,如图1和图2
(2)重新编译内核makeuImage
(3)Mjpg-stream的移植
(4)安装浏览器播放视频流所需要的插件
浏览器需要安装J2SERuntimeEnviroment5.0Update22插件才能播放视频流。
图1(配置内核)
图2(配置内核)
3.2.4GPRS的编程
以下是GPRS的发送程序(具体实现参见附录):
voidGprs:
:
GPRS_SendString(char*cmd)
{
do
{
write(fd_uart,cmd,strlen(cmd));
GPRS_Recv_String();
}while(strncmp(RecvBuf,"\r\nOK",4)==0);
}
4试验或仿真实验
4.1系统硬件调试
这个大作业只需根据要求连接好虚拟机与开发板,并把程序分别烧入开发板,连接好GPRS模组,设置好相应选项。
GPRS模组使用标准串口与主控制器交互。
模组带有一个10针的接口,该接口可以直接和MCU相连接,也可以通过模组上的RS232接口转化电平后与PC机相连。
在GPRS模组的SIM卡座旁边有J5和JP1组成的配置跳线。
在使用GPRS模组之前,需要首先正确配置这些跳线,以便选择使用MCU还是PC与模组通信。
4.2软件及联机调试
4.2.1主控程序调试
首先,先将虚拟机与pc机建立好连接,以便互相传输数据和文件;然后建立虚拟机与开发板之间的连接,调试好虚拟机的nfs服务器和samba服务器将对后来的设计提供更多的方便。
给开发板烧写操作系统(bootloader,kernel,rootfs.yaffs),以便boa服务器可以在其上运行。
4.2.2GPRS程序调试
首先,要了解GPRS的机制。
GPRS_init()函数就是对GPRS进行初始化的。
程序代码如下:
Gprs:
:
Gprs()
{
Uart_Init
(1);//初始化手机模组
printf("GPRS初始化..\n");
GPRS_SendString("AT+CFUN=1\r\n");//复位gprs
GPRS_SendString("AT\r\n");
printf("串口正常\n");
GPRS_SendString("AT+CMIC=0,15\r\n");
printf("设置麦克\n");
GPRS_SendString("AT+CMGF=1\r\n");
//设置短信为TEXT:
1格式,PDU:
0
printf("设置短信\n");
GPRS_SendString("AT+CHFA=1\r\n");//使用耳机
printf("耳机设置\n");
GPRS_SendString("AT+CLVL=100\r\n");//设置最大音量
printf("设置音量\n");
GPRS_SendString("AT+CSCS=\"GSM\"\r\n");//设置USC2编码
printf("GSM设置\n");
GPRS_SendString("AT+CLIP=1\r\n");//开启来电显示功能
printf("来电显示设置\n");
}
程序详细设计参见附录,此处遇到问题是如何提取出短信内容以便以后用来控制开发板,但要注意的是,收到的短信内容为unicode码,要将其翻译为普通的字符串才可使用,另外要注意从模组中接收数据时哪一条是短信内容,经反复调试成功读取短信内容,为后面使用提供方便。
图4.1串口配置界面和GPRS模块实物图
图4.2S3C2440开发板
4.2.3boa服务器调试
在解压过tarzxvfboa-0.94.13-src.tar.gz之后,运行./configure进行环境变量的检测和配置并生成Makefile,进行make编译之后配置boa.Conf文件如图4.3,要理清楚配置文件boa.Conf中的设置的目的与相应文件的位置,否则在以后的运行中会出现错误或服务器无法运行等;
图4.3(配置boa.Conf文件)
调试过程中更要注意error.log和access.log两个文件的作用,前一个是出错日志记录文件,后一个是访问记录文件,在建立的时候如果不把他们设置为可写的当你在运行的时候就会报错,熟练运用它们便于更快的找出错误所在。
同时,编译boa可执行程序时也遇到了各种各样的问题,通过不断修改、不断上网查找才成功,其中学到了许多调试方法。
最后编写脚本文件以便方便执行程序。
编写脚本程序如图4.4;
图4.4(编写脚本程序)
4.2.4CGI程序调试
CGI程序是网页与服务器之间联系的接口,所以CGI程序直接影响到网页是否能控制开发板的功能。
图4.5网页脚本
5总结
本课程设计基于远程控制和本地控制的要求,进行了方案设计和可行性分析。
并且对设计的硬件资源和软件资源进行了详细的说明,通过不断的分析和调试最终实现了由Boa服务器支持通过CGI处理HTML表单的方法进行远程控制,在本地由开发板的Led显示Qt界面进行控制。
设计的难点在于通过gprs模组进行远程发送和接收信息并结合软件编程,实现短信检测事件的机制,具有良好的可扩展性和实用性,符合了现代家电的智能化、网络化的发展方向。
另外本系统的红外探测设计还可以应用于工农业生产中,实现对无人值守岗位的远程控制和安全报警等。
本设计基本上满足了本次课程设计的要求,在做这个大作业的过程中我遇到了很多的困难,通过师兄的知道和查阅资料最终都得到了解决。
这次的大作业使我对Linux嵌入式有了进一步的了解,对S3C2440开发板有了更深的认识。
附录1
GPRS模组程序:
以下是gprs.h程序:
#ifndefGPRS_H
#defineGPRS_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
classGprs
{
public:
Gprs();
voidmobile_message(char*Tel_Num,char*message);//发送短信
voidTel_Call(char*Tel_Num);//打电话
intTel_Hear();
private:
intfd_uart;//定义一个串口
charRecvBuf[100];
voidGPRS_SendString(char*cmd);
voidGPRS_Recv_String();
intUart_Init(intnum);
voidTel_Ans();
voidTel_Hang();
};
#endif//GPRS_H
以下是gprs.cpp程序:
#include"gprs.h"
#include
Gprs:
:
Gprs()
{
Uart_Init
(1);//初始化手机模组
printf("GPRS初始化..\n");
GPRS_SendString("AT+CFUN=1\r\n");//复位gprs
GPRS_SendString("AT\r\n");
printf("串口正常\n");
GPRS_SendString("AT+CMIC=0,15\r\n");
printf("设置麦克\n");
GPRS_SendString("AT+CMGF=1\r\n");//设置短信为TEXT:
1格式,PDU:
0
printf("设置短信\n");
GPRS_SendString("AT+CHFA=1\r\n");//使用耳机
printf("耳机设置\n");
GPRS_SendString("AT+CLVL=100\r\n");//设置最大音量
printf("设置音量\n");
GPRS_SendString("AT+CSCS=\"GSM\"\r\n");//设置USC2编码
printf("GSM设置\n");
GPRS_SendString("AT+CLIP=1\r\n");//开启来电显示功能
printf("来电显示设置\n");
}
voidGprs:
:
GPRS_SendString(char*cmd)
{
do
{
write(fd_uart,cmd,strlen(cmd));
GPRS_Recv_String();
}while(strncmp(RecvBuf,"\r\nOK",4)==0);
}
voidGprs:
:
GPRS_Recv_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 S3C2440 智能家居 监控 系统 设计