视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
智能家居——基于S3C2410的家电智能控制和远程防盗监控系统设计
2025-09-25 21:26:31 责编:小OO
文档
基于S3C2410的家电智能控制和远程防盗监控系统设计

摘要:如何将家庭里相对的设备连接成一个系统,从而方便进行本地和远程控制?本文通过采用ARM构成智能家居控制器来实现这个目标。智能家居控制器使用S3C2410,SIMl00-E,USB 摄像头等元件来组成硬件平台,再将Linux系统移植到硬件平台上,然后设计好相应的驱动程序和应用程序,最后将软件下载到硬件平台来对家电进行本地和远程控制。

关键词:ARM;S3C2410;嵌入式Linux;GPRS;

1 前言

随着数字化家用电器的飞速发展,家庭智能化使得人们的生活方式、工作方式以及思维方式都发生了巨大的变化。未来的世界是数字的世界,未来的家庭将是数字的家庭,因此数字家庭网络系统具有广阔的市场应用与发展前景,并向着集成化、智能化、模块化和规模化方向发展。随着计算机技术的发展,嵌入式系统已逐渐成为后PC时代的主导,特别是ARM处理器作为32位微控制器一经面世,对基于Linux的嵌入式技术的迅速发展,无疑起到了推波助澜的作用,产生了划时代的意义。ARM 是RISC指令集,它不仅资源丰富,运行速度更快,稳定性更高,也更易于扩展。同时Linux作为一种开源的操作系统,不仅内核更小、效率更高、还直接提供网络支持等优点,利用Linux自身带有的TCP/IP协议来实现远程监控、图象传输已成为可能,并且其动态模块加载使得对Linux的裁减极为方便,而且可以针对具体应用配置内核,裁减SHELL并对嵌人式C库进行系统定制。二者的诸多优点造就了二者作为嵌人式系统的完满组合,从而成为大部分嵌人式系统开发者的首选方案。

嵌入式ARM处理器芯片,以其功能强大、指令简单、功耗低等优点在家庭智能化的过程中具有强大的优势。本文主要设计目标是家庭智能化控制系统:(1)实现能同时管理多个传感器,正确采集信息;(2)根据采集信息的变化,自动进行模仿人为分析、操作等功能;(3)通过GSM网络向用户提供远程控制、查询、管理等功能,如改变一些传感器的参数。

2 系统总体设计及原理

楼宇自动化的重要特征之一就是家居智能化。本设计中嵌入式处理器同时控制多个传感器采集各种环境数据(比如温度、湿度、光照等),然后分析处理,做出智能的决策,存储于数据库中,调节相应数字家电的状态。用户离开家后,可以利用网络,通过各种终端(手机、网络、PDA等) 查看各信息设备的状态,对家里的各种信息设备进行远程控制,实现家庭信息设备的智能化。嵌入式控制器还可以将家里的情况用网络视频画面的形式传送给用户,虽然用户离家在外,但可以监控是否有外者入侵(即防盗功能)。这样,家中一切尽在掌握之中,用户出外无忧。

家居智能控制和视频防盗监控系统总体设计主要分为4大部分:数据采集模块、智能分析处理模块、数据存储模块、远程监控模块。系统整体框图如图1所示:

图1——系统结构框图

3 系统硬件设计

由于该系统不仅要从下接收数据,并且还要对数据进行智能化分析处理,然后存储在数据库里,还要提供远程监控的功能,因此对处理器的速度有一定的要求,而且还要一个简单的操作系统提供多线程或多进程操作,故在本系统设计中CPU采用三星的S3C2410芯片。S3C2410芯片基于ARM920T内核,采用五级流水线和哈佛结构,提供1.1MIPS/MHz的性能,内部集成 ARM公司ARM920T处理器核的3 2位微控制器,并带有的16KB的指令Cache和16KB的数据Cache、L C D控制器、RAM控制器、NAND闪存控制器、3通道UART,4通道DMA,4通道具备PWM 功能的定时器,并行I/O口、8通道10bit精度ADC和触摸屏控制器,IIC总线接口,IIS数字音频总线接口,USB主机,USB设备,SD/MMC卡控制器,2通道SPI和PLL数字锁相环组成,主频最高可达203MHZ,是高性能和低功耗的硬宏单元。内核结构如图2所示,S3C2410内部结构如图3所示。

图2——ARM920内核结构【1】

图3——S3C2410内部结构(功能模块)【1】

在设计智能家居控制器时,考虑到系统的稳定性、扩展性和成本等因素,因此将系统硬件设计为3个部分, 即核心板、主板和GPRS 模块, 如图4所示。

图4——硬件结构图

核心板部件中,NAND FLASH 采用SAMSUNG K9F1208 芯片,将FLASH芯片连接到系统的nGCSO,所以它的起始地址为:0x000000000;SDRAM采用2片HY57V561620AT-H构成M,将它连接到系统nGCS6,所以它的起始地址为:003000000;为了让系统从NAND FLASH启动,要将S3C2410的OMO和OM1引脚都接地。

主板主要是一些接口电路。串行接口采用MAX3232 芯片,由于本系统只使用一个串口, 所以和S3C2410 的TXD0 和RXD0 相连, 构成第一个串口电路;JTAG 接口直接由S3C2410处理器控制; USB 接口电路直接采用S3C2410 内部的USB 主机控制器;摄像头网卡采用AX88796- X86 芯片, 接在BANK2 的位置上, 所以片选接处理器的nGCS2 信号, 其地址为0X200, 所以IO_BASE0、IO_BASE1、IO_BASE2 三个引脚悬空,中断选用INT2。网卡的逻辑地址是0x10000200。

将S3C2410处理器的串口控制信号、USB主机控制信号、LCD控制信号、触摸屏信号、数据总线、地址总线、控制总线、外部中断等信号全部连接到核心板上的200芯插座上。LC D直接由核心板来控制,但要增加驱动电路。触摸屏采用4线电阻式,直接将它和CPU的nYPON,YMON,nXPON,XMON相连。传感器接口的输出信号连接到CPU的EINT9外部中断引脚上,当传感器接收到某个信号时,就可以通过外部中断引脚向CPU申请服务。家电控制接口的输人控制信号连接到CPU的GPIO端口,当要对某个家电进行控制时,只需向指定的端口写人0或1,然后再由家电控制接口发遥控信号去控制相应的家电。

USB 摄像头使用的是市场上广泛应用的采用中芯微公司的ZC301 芯片的摄像头, 这种摄像头采用硬件压缩方式, 截取到的图片是JPEG 格式, 这样可以大大减少由于软件压缩所耗费的时间, 便于网络多媒体的应用。Linux 内核并未包括这种摄像头, 因此必须针对嵌入式Linux 环境, 打入摄像头驱动补丁文件。【2】

GPRS 模块采用SIMCOM公司生产的SIM100- E 芯片。通过第三个串口信号线TXD2 和RXD2 和处理器相连接。【2】

4 系统软件设计

系统软件设计为四个部分:数据采集模块、处理数据模块、设备驱动模块、远程通讯模块。如图5所示:

图5——软件结构图

4.1引导程序

首先要将引导程序烧写到处理器的FLASH芯片上。引导程序选用韩国MiZi 公司开发的vivi。vivi 必须经过裁剪、交叉编译、下载到芯片等几个过程。然后make 命令编译生成vivi的二进制镜像文件, 使用的编译器是armv4l- unknown- linux- gcc和armv4l- unknown- linux- as, 最后使用JTAG 将vivi 烧写到FLASH芯片上。

4.2操作系统

目前发行的Linux 操作系统都能支持ARM机的体系结构, 所以只要根据平台的具体结构进行移植。系统移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和编译等环节。【2】

⑴建立交叉编译环境

交叉编译是指利用运行在某台计算机上的编译器编译某个源程序生成在另一种结构计算机上运行的目标代码的过程。编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译。建立交叉编译环境就是将ARM使用的编译器(如:arm-linux-gcc)和函数库(如:glibc)安装到指定目录,并使用config。配置好Makefile文件。

⑵修改内核源代码

修改内核源代码主要包括启动代码的修改、内核的链接及装人、参数传递和内核引导几个部分。Linux内核分为体系结构相关部分和体系结构无关部分。在Linux启动的第一阶段,内核与体系结构相关部分首先执行,它会完成硬件寄存器设置,内存映射等初始化工作。然后把控制权转给内核中与系统体系结构无关的部分。在移植工作中要修改的代码主要集中在与体系结构相关的部分。首先根据芯片手册修改片选组基地址寄存器、DRAM存储配置寄存器、DRAM片选寄存器、中断屏蔽寄存器等。然后修改内核的链接及装人ELF。最后将系统中可用页面的数目、文件系统大小等信息以参数形式从启动代码传给内核,完成设置陷阱,初始化中断,初始化计时器,初始化控制台等一系列操作而使内核正常启动。

⑶内核裁剪和编译

内核裁剪是根据控制系统的要求将不需要的模块从内核中裁剪了,Linux内核的裁剪有好几个版本,可以使用命令make menuconfig对系统进行裁剪。

内核裁剪之后,最后要进行交叉编译生成内核映象文件zImage。具体命令如下:

make clean //清理编译环境

make dep //编译依赖文件

make

make zlmage/ /编译内核

内核裁剪时, 要让系统包括telnet 和ftp 服务。telnet 服务主要实现能够对嵌入式控制系统远程操作, ftp 服务主要实现嵌入式系统的文件上传和下载。最后将编译好的内核映象文件利用vivi 软件烧写到嵌入式系统核心板的flash芯片上。

4.3驱动程序

所设计的控制系统需要串口、USB、视频设备、网卡和传感器、家电控制口等多个设备驱动程序。由于串口、USB、视频设备、网卡设备都是标准设备, 所以可以到厂家去下载相应的设备驱动源程序, 然后交叉编译成Linux 下的驱动程序, 最后通过insmod 命令向内核加载驱动程序。如:Linux 系统提供了视频设备的内核驱动video4linux(简称V4L), 它为视频设备的应用程序编程提供一系列接口函数, 所以USB 摄像头就可以采用V4L 驱动程序。芯片SIM100-E是通过第三个串口与S3C2410相连的,所以可以直接使用标准的串口驱动程序。传感器接口和家电控制接口要设计专用的驱动程序。控制器的处理器通过外部中断来检测传感器,通过GPIO端口来控制家电,虽然它们的工作原理有所不同,但驱动程序设计的方法没有很大差别。在嵌人式Linux系统中设备驱动程序有一个标准的框架,设计驱动程序的大部分工作就是根据硬件结构来“填写”框架中的函数。

5 主要应用程序设计

为了提高应用程序的运行速度,以及程序运行的稳定性,所以将应用程序设计成多线程结构。【3】系统软件流程图如图6所示。

家电控制线程和视频拍照监控线程主要是根据控制数据、检测短信线程的内容和操作线程的内容来进行操作;发送短信线程主要是根据控制数据、检测传感器线程的内容和操作线程的内容来进行操作【3】。具体内容如下:

#include //线程库头文件

int main()

{…

ptherad _creat(&th-a,NULL,send_msg,0);//创建发送短信控制命令线程

pthread_ cerat(&th_b,NULL,control-driver,0);//创建家电控制线程

pthread_ cerat(&th_c,NULL,cramera,0);//创建视频监控线程

ptherad_join(th-c,&ertval);// 等待视频监控线程结束

ptherad_join(th-b,&ertval);// 等待家电控制线程结束

ptherad_join(th-a,&retval);// 等待发送短信控制命令线程结束

…}

/*发送控制命令线程*/

int send_ msg()

{…

tty_init(); //初始化串口

gprs_init ();/ /初始化GPRS模块

tty_ writecmd("at",strlen("at"));//发送AT命令

tty_writecmd("at+cmgf=l",strlen("at+cmgf=l")) ; //发送修改字符集命令

tty_write ("at+cmgs=",strlen("at+cmgs=")); /发送短信命令

tty_writecmd(msg.sendt el,strlen(msg.sendt el)); / /发送电话号码

tty_writecmd(msg.sendt ext,strlen(msg.sendt ext)); //发送短信内容

tty_end ();

return () ;

}

/*视频拍照监控线程*/【2】

int cramera (char * fileName)

{┅

if (device_init(DEFAULT_DEVICE, &vd, 0, 3) == - 1) //初始化设备

{

perror("device_init: failed...");

return - 1;

}

if (v4l_grab_frame(&vd, 0))// 采用mmap方法,内存映射

return - 1;

if (v4l_grab_sync(&vd))

return - 1;

img = device_get_address(&vd);

p=img; //读取图像数据

for (i=0;ifor (j=0;j{tmpc=*(p);*(p)=*(p+2);

*(p+2)=tmpc;p+=3; }

if (write_jpeg(fileName, img, 70, 0)) //转换图像数据格式, 保存为jpg 文件

return - 1;

┅}

图6——软件流程图

6 结束语

本文是在开放源代码的操作系统ARM—Linux的基础上,设计了一个利用嵌入式系统将许多相对的家用电器统一的系统,将家电、传感器、手机等许多的设备连接成为一个整体,从而方便本地和远程控制,并且可以完成防盗监控功能。这种控制系统体积小、可靠性高、具有操作方便、无需专人管理, 非常适合家居智能化控制,推动楼宇自动化的进程。由于处理器的高性能,图像压缩等工作都使用软件实现,使系统的开发成本大大降低。随着嵌人式技术、网络技术、多媒体技术的发展,远程监控功能的数字化、智能化及微型化相信不久的将来会有较好的应用空间和发展前景。

参考文献: 

[1] 周维,陈默.基于S3C2410的ARM开发平台[J].电子技术,2004(7):4-7

[2] 朱华生.基于ARM嵌入式IPCamera的设计与实现[J].微计算机信息(嵌入式与SOC),2008 ,24 (3-2 ):171-173

[3] 郑锐,黄佩伟.基于ARM-Linux的智能传感器控制器[J].电子技术,2006(12):43-46.

[4] 基于S3C2410的WLAN智能住宅控制终端的设计[EB/OL]. http://down.zhulong.com/tech/detailprof84991DQ.htm下载本文

显示全文
专题