基于ARM+GPRS的智能家居安防监控系统设计
入模块采集的数据,又要控制输出模块的相应处理,同时还得与远程监控中心进行数据交互,这就要求其具有较强的数据处理能力。基于此考虑,本系统选用了基于Samsllng公司的Cotex_A8内核的FS_S5PC100作为实验平台。考虑到市场的普及度与可靠性的要求,GPRS模块选用SIEMENS公司的TC35i/MC35,该模块内嵌强大的TCP/IP协议栈,低功耗,增强的AT控制指令。由于具体的硬件设计电路图比较繁杂,在此给出系统硬件实现框图,如图2所示。
![](../img/eep/emb/emb-45600xludzmz05ce.jpg)
3 系统软件设计
系统软件实现主要包括:S5PC100软件编程,监控页面的编程两大部分,在此只介绍S5PC100微控制器的软件编程部分。
3.1 系统移植与驱动设计思想
考虑到系统的稳定性和可靠性,在S5PC100上采用Linux嵌入式实时操作系统,与传统的实时操作系统(RTOS)相比,采用嵌入式Linux这样的开放源码的操作系统的另外一个好处是Linux开发团体看来会比RTOS的供应商更快地支持新的IP协议和其它协议。例如,用于Linux的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接口卡(NIC)驱动程序以及并口和串口驱动程序。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
各种设备由于功能不同,驱动程序提供的函数接口也不相同,但Linux为能够统一管理,规定了Linux下设备驱动程序必须使用统一的接口函数file_operations。根据功能填充对应的file_operations中的接口函数。为便于开机启动,统一地将驱动程序静态编译到内核。
另外,涉及设备节点的创建,选择了udev机制来自动创建设备节点,具体步骤如下:
1)在一开始定义一个类class,再在类下面定义一个设备class_dev;2)xx_init()函数中,使用class_creat()和device_creat()创建设备节点;3)xx_exit()函数中,使用class_destory()卸载设备节点。其中,设备号的选择,通过查询内核中Documents/device.txt选用空闲的设备号,当然也可以用major=register_chrdev(0,"name",&file_operation)自动生成。
3.2 串口通信程序设计
系统的主要功能是实现家居环境参数的采集、上传和监控页面控制命令的下发,所以数据传输是整个应用程序的关键部分,即S5PC100与GPRS模块的串口通信程序的设计。
在定义与串口相关寄存器地址的基础上,以结构体构造新的串口数据类型,结构体成员为函数指针,它们指向编写的具体实现函数,而函数体中的数据直接操作串口寄存器,实现了串口驱动程序,实际上就是上面驱动程序思想,填充对应的file_operations中的接口函数,实现我们自己的驱动程序。以下是实现串口数据类型的主要源代码:
![](../img/eep/emb/emb-45602duxodosmkgy.jpg)
串口采用中断方式接收数据,提高了串口数据处理的实时性和整个CPU的工作效率。具体来说,S5PC100的串口1收到输入模块发送的家居环境参数,进行逻辑判断,结合输出模块处理后,传输到监控页面,实现数据的上传;S5PC100的串口1收到监控页面发送的指令后,调用相应的处理函数,把指令同步到各个模块,实现数据的下发。
3.3 Web服务器的搭建
为方便用户通过internet或GPRS网络接入互联网,远程监控家里情况,提供远程Web服务。本模块主要包括2个部分:
1)BOA服务器模块设计:在嵌入式系统中移植BOA服务器,提供Web服务;
2)cgi模块详细设计:根据监控页面上的不同按钮,发送不同信息给S5PC100,S5PC100调用相应的处理函数,执行网页按钮相应功能。
3.4 应用程序整体设计
在搭建好系统环境,成功移植硬件驱动后,在Ubuntul2.04上Linux2.6内核环境下进行程序的开发调试。系统中主要的进程,包括3个线程等待控制命令,在代码中采用轮询的形式来对线程状况进行检测,发生问题的时候进行相应得处理,用户可通过网络访问本系统并远程进行控制操作。调用了两个线程分别操作thief处理线程和fire处理线程。thief线程和fire线程分别调用GPRS模块和摄像头模块进行短消息的发送和图像的采集及保存。同时调用FS_S5PC100开发板自带的,蜂鸣器模块和LED模块实现报警,另外利用流水灯模拟灭火的操作。具体框架如图3所示。
![](../img/eep/emb/emb-45603dwxzookrzlc.jpg)
输入模块和输出模块也是分别创建线程处理不同的任务,模块之间通信选用了消息队列,对于共享资源采用了互斥锁和条件变量,保证资源的共享和原子操作。
4 测试结果
整个系统在实验室环境下进行了测试,利用S5PC100开发板上自带的按键key1模拟外人闯入,按键key2模拟主人进入,温度的采集使用了LM75温度传感器采集,同时为便于调试我们同时也利用ADC来模拟温度变化。整个监控界面效果图如图4所示。
![](../img/eep/emb/emb-45604oorryofdi5s.jpg)
通过点击页面上的用户设置按钮,可以设置用户名、密码的修改及新用户的增加;手机短信号码的修
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)