2 系统设计
2.1 平台的选择
系统所使用的操作系统为联詠科技为NT系列微处理器产品所推出的、符合μITRON 2.0规范的NDK实时操作系统,即μITRON嵌入式实时操作系统。
μITRON操作系统与其他操作系统相比较,除具有一般嵌入式操作系统的实时性和可裁剪性外,还具有弱标准化的特点[4,5],即TRON操作系统没有严格规定软件开发环境,可以使用多种编译环境。在本系统设计时,采用Source insight编译器。
本系统硬件平台采用NT96211微处理器,其兼容ARM9、支持各种硬件接口,包含串口、USB、GPIO、TV、LCD、SD卡接口等。操作平台结构如图2所示。
μITRON操作系统内部框架可分为库层、应用层和项目层三个层次。
(1)库层。包括驱动程序(Driver)、内核(μITRON v2 Kernel)和子系统(Lib(subsystem)、LibExt(subsystem))三个部分,如图2所示。驱动模块(Drive)是控制系统最底层硬件的软件部分,该部分包含各种外围设备的驱动代码。内核模块(?滋ITRON v2 Kernel)是库层的独自软件模块,其作用与其他操作系统内核一样,是整个实时系统的核心部分。该系统的内核符合?滋ITRON内核标准。子系统与驱动模块区别不是很明显,严格地讲是上层驱动的一种,它与底层驱动的主要区别在于子系统一般会包含控制流,而底层驱动本身不具备此功能。子系统又可分为两部分:操作系统本身所带的标准驱动和库等级代码Lib(subsystem)和用户自己编写的外围驱动和库等级代码LibExt(subsystem)。
(2)应用层。为用户编写的应用程序,这些应用程序用于特定的操作。简单的应用程序包含单任务就能完成操作,对于复杂的应用程序则需要多个任务协助才能完成操作。与子系统一样,应用层也可分为标准应用程序和用户添加的应用程序两个部分,分类也类似。
(3)项目层。是操作系统中最灵活的部分,它可以根据硬件平台对操作系统进行配置。系统的配置文件、初始化和UI文件均在这一层。基本上,应用层和库层模块都可以看作是项目层代码,原因在于这些层中的函数,都与项目相关且都需要被定制。
在本系统设计时,底层的硬件驱动程序主要存在驱动模块内,应用程序以及图像处理程序主要存放在应用模块中。项目层主要存放一些上层文件,如配置文件、初始化程序以及一些图像界面文件等。
2.2 功能模块设计
该监测系统主要由图像感应模块、GPRS无线发射模块、温度采集模块、太阳能充电模块等部分组成。
(1)图像感应模块
与CCD图像感应器相比较,CMOS图像感应器具有体积小、成本低、耗电小且图像质量符合本设计的要求的特点[6].所以选用型号为MI51120的CMOS图像感应器用于感应蜂箱内的红外图像。采集的图像信息经过滤光透镜被CMOS图像传感器接收,传感器再把图像信息通过总线传递给MCU进行处理。电路设计如图3所示。
(2)GPRS无线发射模块
在系统设计时,因只使用GPRS模块的MMS发射功能,因此选用功能有限,但性能稳定、价格实惠的M10模块。其硬件电路设计如图4所示[7].
需要注意的是:为了电路工作的稳定性,需根据实际情况添加一些上拉电阻和匹配电阻。
GPRS模块通过串行总线与CPU进行通信。可通过运行相关的AT命令从存储器中提取和发送图片信息。为了节省功耗,可通过MCU的I/O端口控制GPRS 模块的PWRKEY的高低电平,使GPRS模块只有在发送彩信的时候启动,平时模块不启动。
(3)温度采集模块
温度采集模块采用AD590温度传感器,温度采集电路如图5所示。其中,AD581为高精度集成稳压器,LF355为结型场效应管输入的运放。假设AD581输出端电压为U,AD590输出端电流为I,反馈支路上的电流为If,则根据“虚短”原理可知:
图5中电位器R2用于调整零点,R4用于调整运放LF355的增益。调整方法如下:在0 ℃时调整R2,使输出Vo=0,然后在100 ℃时调整R4,使Vo=100 mV,最后在室温下进行校验。例如,若室温为25 ℃,则Vo应为25 mV.
采集的温度信息用电压信息来表征,通过GPIO口传输给处理器内部的A/D转换器,转换器将模拟信号转换为数字信号,再传递给处理器进行处理。处理器根据这些信息判断箱内温度是否过低(温度低于17 ℃)或过高(温度高于37 ℃),并根据用户设置决定是否要启动报警功能。
(4)太阳能充电模块
为了避免经常更换电池所带来的麻烦,系统采用太阳能充电方式供电。设计的太阳能充电模块采用CN3083芯片对充电过程进行管理。其模块硬件电路设计如图6所示。
在本系统设计时,为了使太阳能充电速度能满足需要,选择输出电压为18 V的太阳能电池板。而CN3083的输入电压最大只有6.0 V,不能直接与太阳能电池板连接。为此输入端电压必须经过降压(可用DC/DC电路进行处理)。在设计中选择RT34063芯片进行降压,通过降压芯片将CN3083的输入电压控制在5.7 V左右,这样就能使充电芯片正常地工作。