引言
测温测量和控制在当今社会生活中扮演着至关重要的角色,国际国内市场现有的多种测温技术涵盖了安检、市 场、生活、消防、科研等诸多领域。温度的测量和控制在工 业生产中有广泛的应用,尤其在石油、化工、电力、冶金等 重要工业领域中,对温度的测量和监控是非常重要的一个环节。在传统的温度测量系统中,温度采集器通常采用模拟温 度传感器,模拟信号在传输的过程中容易受到干扰从而影响测量的准确度,模拟信号转化成数字信号,精度较高的A/D 转换器一般价格昂贵,对于传统系统存在的不足,结合国内外在温度监测系统上的研究现状,本文进行了新的设计。
本文智能测温系统基于物联网技术与嵌入式技术实现 远程无线可移动的视频监控系统,依托于FS_S5PC100开发 平台用三星公司先进的基于Cortex-A8 内核的 S5PC100处理 器和无线网卡WI-FI作为硬件载体,综合应用WLAN、嵌入 式Linux和JSP技术等技术,以程序软件的通用性和易用性为 方向,实现无线视频和智能测温系统控制以及环境信息采集。
图1 平台硬件组成结构图
图2 系统软件结构框图
1 系统总体设计
1.1 平台设计接口目标与功能
本文设计智能温度采集系统,需要具备温度采集、温 度数据的存储、温度数据的显示和网络通信功能。因此,平 台拟设计的接口如下:
图3 S5PC100 DDR2 SDRAM电路原理图
图4 S5PC100 NandFlash电路原理
电路板设计温度传感器采集接口1路,温度传感器采用 DS18B20一线制通信接口;由于平台需要对采集的数据存储 同时又需要存储本地操作系统代码,需要有稳定的存储方 案,因此平台设计NAND FLASH与SD卡结合的存储方案, 其中NAND FLASH主要用于存储本地代码,SD卡用于存储 采集数据;系统需要将采集的温度以及历史温度实时的显示
出来, 因此需要集成图形显示接口,系统中采用24bit TFT LCD接口电路;系统为满足远程对平台采集数据访问功能, 因此集成一路10M/100M 自适应以太网接口;为满足对温度 的监控需要,平台集成一路PWM蜂鸣器接口以及一路RS232 接口,RS232接口可连接GPRS模块。调试扩展接口:系统应集成1路RS232接口,用于使用控制终端对系统进行调试。课题设计平台可实现定时温度采集、显示 以及温度超限报警等功能,其主要 工作流程如下:
1.平台能够以定间间隔对采集 温度传感器数据;
2.采集的温度数据按时间顺序保存在本地数据库中;
3 . 每次采集温度与设定温度上、下限进行比较,当温度超限后 可发出本地报警或远程报警信号,本地报警信号通过蜂鸣器报警音实 现 , 远程报警信号可以通过外接GPRS实现短信报警;
4.平台具备远程数据访问功能,可通过网络实现对本地数据库 的访问。
1.2 平台的硬件电路各模块选型
根据平台的接口和功能需求,将系统按照功能划分进行模块化设 计,其个功能模块的选型如下:
1.2.1 平台处理器单元
平台需要具备温度采集、大容 量数据存储、网络通信等功能。因 此,其处理器部分具备运行文件系 统以及网络协议簇的能力。课题提 出以ARM微控制器为核心处理器的 解决方案,利用ARM微控制器可搭 载操作系统和能够处理复杂协议族 的能力;降低了系统设计的风险, 提高平台计的可实施性与灵活性。
ARM微 控 制 器 在 本 系 统 中 的 作用主要是,采集温度传感器温度 值,并实现存储以及转发功能。平台采用三星公司先进的 基于Cortex-A8 内核的 S5PC100处理器设计而成。S5PC100 处理器采用64位内部总线构架,包括强大的硬件加速器, 如:动态视频处理,显示控制和缩放。支持多种格式的硬件 编解码:MPEF-1/2/4、H263/H264、CV-1、DivX。其硬件
图5 S5PC100 SD卡电路原理图
图6 DS18B20与接口原理图
加速功能支持实时的视频会议和模拟电视输出,支持NTSC 和PAL模式的HDMI。S5PC100内部集成了24BIT LCD接口、 TVout接口、Camera输入接口、4路串口、SD卡接口、SPI、100M网口、USB2.0-OTG接口,USB Host接口、矩阵按键扫 描接口、SPI通信、I2C通信接口等硬件资源,适用于有高性 能要求的嵌入式系统应用场合。
在平台中需要NAND FALSH、SD卡、以太网等复杂接 口的支持,S5PC100具备强大的片内接口,平台需要的外设 接口通过S5PC100搭载简单的外部电路即可实现,提高了系 统设计的集成度,因此S5PC100非常适用于本系统。
1.2.2 温度传感器
平台采用美国DALL A S公司生产的DS18B20可组网数 字温度传感器。其耐磨耐碰,体积小,使用方便,封装形 式多样,适用于各种狭小空间设备数字测温和控制领域。
DS18B20具有一线通信接口,只需要单根口线即可实现微控 制器通信互联,极大地简化了外部温度传感器通信线路。 DS18B20具有宽泛的工作电压和温度测量范围,750毫秒内 完成温度测量,可在-10℃至+85℃范围达到±0.5℃的测量精 度。DS18B20在出厂时内部集成了唯一的序号, 可用于实现 DS18B20通过一总线进行组网。DS18B20简化的通信接口以 及便捷的组网方式可降低产品的设计成本,提高系统的灵活 性。目前,DS18B20已经被用于各种环控,设备温度监控测 量,以及各种温度测量系统中。
1.3 平台的硬件电路总体构成
平台硬件组成如图1所示。其中核心模块为S5PC100, DD2 SDRAM、NAND FLASH、TFT LCD、SD卡、RS232接 口均可通过S5PC100内部外设接口直接扩展,以太网接口通 过S5PC100的外部静态总线接口连接。
1.4 平台主要软件方案的选定
在简单系统中 , 一般采用前 、 后台编程方式设计软件,但在复杂的系统中,前后台方式的软件设计方法无法满 足系统的要求,需要网络协议栈支持、文件系统支持、多进 程支持后,前、后台软件由于其超循环编程方法的限制很 难实现系统的功能要求,因此复杂的嵌入式系统往往加入 了嵌入式操作系统的支持。 目前,常用嵌入式操作系统有 VxWorks、WinCE、Linux等。这里我选用的是Linux,它是开 放源代码的类UNIX操作系统。目前经过长期的发展Linux已 成为世界领先的操作系统,可以运行在服务器、大型机和超 级计算机, 由于Linux的可剪裁性和可移植性,目前也广泛 应用在嵌入式设备上,如消费电子产品、交换设备、工业控 制等。
Linux具备良好的多进程与多线程支持,并且支持多种 网络协议、具备丰富的文件系统,并且其开源代码的特性受 到广大的开发者支持。
在本系统中采用L inu x操作系统能够充分利用嵌入式 Linux中成熟的网络协议簇以及模块化的剪裁方法,降低系 统软件的开发难度,提高了系统设计的灵活性。
1.5 系统软件架构
平台设计的软件采用分层以及模块化的方式进行设计。由于采用嵌入式Linux操作系统作为解决方案。因此, 将软件划分为应用层、系统层、驱动层;系统层软件需要完 成Linux在操作系统上的移植和各个模块的驱动;应用层软 件需要完成温度采集模块、显示模块以及网络通信模块的软 件设计。软件层次示意图如图2所示。
2 系统各主要接口硬件电路设计
图7 PWM接口蜂鸣器电路连接图
图8 Linux系统软件组织示意图
2.1 S5PC100存储系统设计
设计的目标平台中需要扩展三种类型的存储介质,分 别为DDR2 SDRAM、NAND FLASH以及SD卡电路。下面按 照三种存储介质在系统中的功能分别进行阐述。
(1)DDR2 SDRAM电路
S5PC100 SDRAM控制器通过向外部16位或32位SDRAM提供接口来扩展芯片存储能力。本平台采用2片K4T1G16416位宽度DD2 SDRAM组成32位内存,容量256MB,如图3。
(2)NANDFLASH电路与SD卡存储电路 由于系统需要运行Linux系统,系统代码较为复杂,需
要一定容量的存储器存放Linux操作系统源代码以及应用程 序,由于S5PC100内置了NAND FL ASH控制器,因此平台 采用K9F2G08 256MB NAND FLASH直接与S5PC100 NAND FLASH控制器接口连接。SD卡可通过S5PC100内置SDIO1总 线直接连接。其NAND FLASH电路原理图如图4所示、SD卡 的原理图如图5所示。
2.2 温度传感器接口
平台设计了采用DS18B20一线制温度传感器接口。采用 S5PC100处理器GPIO引脚接口控制温度传感器DS18B20的温 度测量,LCD屏输出测量温度,原理图如图6所示。
2.3 温度报警电路
本 设 计 采 用 软 件 处 理 报 警 , 利 用 无 源 蜂 鸣 器 进 行 报 警,当所测温度超限后输出PWM信号,驱动蜂鸣器报警, 其电路原理图如图7所示。
3 系统软件设计
3.1 Linux操作系统移植
完整的嵌入式linux系统由bootloader、kernel、rootfs等3个基本部分组成。其中bootloader用于引导和装载操作系统、kernel为linux内核程序、rootfs为文件系统,如图8。
3.1.1 交叉编译环境
嵌入式开发系统受到自身硬件以及软件资源的限制, 无法完成代码的本地编译,其开发需要在宿主机上建立交叉 开发环境。
交叉开发环境是包含了编辑器、编译器、连接器、调 试器和libc库等的程序环境。在开发嵌入式Linux相关软件 时,常用的交叉开发工具是GNU工具链。系统中宿主机使 用的开发环境为ubuntu12.04操作系统,目标板内核版本号为 标准linux-2.6.35,使用到的交叉编译器是arm-linux-gcc-4.5.1。
3.1.2 Bootloader程序设计
Bootloader是在操作系统运行前运行的一段专用程序, 可以完成平台硬件设备的初始化,并能完成引导和调试操作 系统。 Bootloader依赖CPU体系结构,一般将Bootloader按功 能划分为两个阶段,其中第1阶段实现基本硬件电路的初始 化,为操作系统的运行准备环境。在平台中,由于使用的是 ARM微控制器,因此第一阶段需要实现设置处理器进入管 理模式、关闭处理器中断与快中断、设置处理器主频、高速 总线主频与告诉外设主频、CPU关闭MMU与数据Cache,初 始化内存控制器,代码由存储器自搬运至内存,设置运行程 序需要的临时堆栈、BSS段清零等工作。第2阶段主要实现 进入交互模式或者自引导模式,实现操作系统的加载,一般 要根据操作系统与硬件平台的需要实现相关硬件的初始化工 作, 如初始化GPIO、串口、网口等外部设备,完成向内核 传递启动参数等功能。
3.1.3 Linux内核的定制
Linux目前已经支持了x86、ARM、MIPS等多种处理器 架构,支持的平台类型多达3000多种。各种ARM处理器的 设计厂商为了更好地推广处理器的使用,都会Linux中添加补丁, 使得该处理器能够在L i nu x 行正常运行。 平台选用Linux-2.6.35版本,面对大规模的Linux源代码,我们需要对Linux进行剪裁移植。
Linux源代码采用模块化的组织方式,可以通过条件编 译的方式对Linux源码的功能进行剪裁,但是条件编译法裁 剪的是功能模块,对于具体的硬件驱动和优化就需要对源代 码进行细微的修改了。
3.1.4 根文件系统的建立
根文件系统是存放各种工具软件、库文件、脚本、配 置文件的地方,任何包括这些Linux系统启动所必须的文件 都可以成为根文件系统。Linux支持jffs2,nfs,cramfs,yaffs2 等多种文件系统。在本系统中使用的Ramdisk文件系统,实 际上是把内存划出一部分当作硬盘使用,使得程序运行效率 更高。系统中的工具集合采用BusyBox完成,BusyBox 将许多 具有共性的小版本的UNIX工具结合到一个单一的可执行文 件。这样的集合可以替代大部分常用工具比如GNU fileutils, shellutils等工具,BusyBox提供了一个比较完善的环境,可 以适用于任何嵌入式设备。
3.2 温度传感器驱动程序的设计
在Linux中,为实现模型抽象和统一操作接口,设备驱 动程序隐藏了设备的具体细节,向用户提供了统一的设备接 口。Linux设备驱动运行于内核中,完成直接硬件操作、设 备管理等工作,并向用户提供了统一的接口模型。Linux下 将设备分为字符、块和网络设备三类,同样设备驱动也分为 字符驱动、块设备驱动和网络设备驱动。字符设备面向的设 备是流式设备,如鼠标、键盘等;块设备面向的是需要随 机存储的设备,它主要包括硬盘、光驱等存储设备;其中 DS18B20属于字符设备。
在字符与块设备中由一个主设备号和一个次设备号(minor number)标识驱动设备。主设备号用于标识设备类 型,次设备号用于识别同类设备序号。字符驱动程序通过 file_operations结构的指针向用户程序提供接口抽象。
其内核定义如下:
struct file_operations
{
int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*设备读*/
int (*write) (struct inode *inode,struct file *filp,char *buf,int
count); /*设备写*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int
cmd,unsigned int arg); /*I/O控制*/
int (*open) (struct inode *inode,struct file *filp); /*设备打 开*/
void (*release) (struct inode *inode,struct file *filp); /*设备 关闭*/
??????
};
在结构file_operations里,指出了设备驱动程序所提供的 入口点位置,分别是:
read读操作,完成由应用设备向应用程序传递的数据。 write写操作,完成由应用程序向设备发送的数据。ioctl,进行读、写以外的其它命令操作。 open,打开设备准备进行I/O操作。 release,设备释放操作。 每一个字符设备驱动由一个cdev结构体抽象,具体的驱动的实现由 file_operations实现,用户程序通过dev_t代表设 备号查找到内核中的cdev,由cdev调用到file_operations,从 而调用到实际的硬件操作函数。
4 结论
本文以便携式手持温度测试仪为技术、应用背景,设 计了一套具备温度测量、数据记录、LCD显示以及网络通信 功能的温度测试设备。
由于便携式手持温度测试仪具有体积小、功耗低同时 又具备较高性能的要求,系统采用了ARM微控制器作为系 统的核心控制单元,并在平台上移植了Linux操作系统以满 足系统对联网、存储方面的需要。对比众多的处理器,选用 了三星公司基于Cortex-A8 内核的 S5PC100处理器,围绕核 心电路设计了温度采集,大容量存储、人机交互、以及网络 通讯等单元电路;在平台电路的基础上实现了Linux系统的 移植工作,并完成了这些设备接口电路的驱动移植工作; 在Linux系统下实现了DS18B20的驱动设计工作,并编写了基 于液晶显示的测试程序。经过实际测试,应用程序能够在 Linux下采集DS18B20的温度数据,并能够实现在LCD上的显 示、存储功能,存储文件能够通过网络的NFS服务导出到PC 端,实现了课题设计的功能。
更多内容:物联网
原创文章,作者:dongshuai,如若转载,请注明出处:http://boke.6ke.com.cn/?p=34660