《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于Cortex-A8的移动在线水质监测平台的研究
基于Cortex-A8的移动在线水质监测平台的研究
来源:电子技术应用2012年第10期
吴 宇,杨 江,张 龙
浙江大学 控制科学与工程学院,浙江 杭州310027
摘要: 为实现大面积水域的实时监测,提出一种低成本、高实时性的移动在线水质监测平台。该平台采用Cortex-A8为核心处理器,通过GPS模块实时监控平台位置,通过GPRS技术实现移动平台与监控中心的数据通信及控制,为保证平台能长时间在水面检测,系统配置了太阳能电池板。阐述了运动模块的改进和图像的远程传输。实践证明,该系统在江河中运行良好,数据通信流畅,有一定的经济价值。
关键词: Linux JPEG 无刷电机 GPRS
中图分类号: TP216
文献标识码: A
文章编号: 0258-7998(2012)10-0034-03
Research of mobile water quality monitoring platform based on Cortex-A8
Wu Yu,Yang Jiang,Zhang Long
College of Control Science and Engineering, Zhejiang University,Hangzhou 310027,China
Abstract: In order to achieve real-time monitoring of large-area water, this paper proposes a low-cost real-time mobile water quality monitoring platform. The platform uses Cortex-A8 processor, it achieves real-time monitoring of platform position through GPS module ,data communication and control of the mobile platform ordering by the monitoring center through the GPRS technology. In order to ensure that the platform can do long time job on water, the system deploys solar panels.This paper mainly describes the improvement of the motion module and the remote transmission of images .Practice proves that the system works well in water with smooth data communication, which reflects a certain economic value of this system.
Key words : Linux;JPEG;brushless motor;GPRS

    随着我国工业发展,水污染问题日益突出,对水质进行监测越来越重要。2000年我国自主生产的“长江水环检测2000”[1],因其检测船造价昂贵,难以在全国推广。电子技术的发展,使得以更微型、更廉价的方式制造出类似“长江2000”监测船功能的在线水质监测平台成为可能。因此,本文提出了以德州仪器2012年最新发布的以低功耗且价格敏感的工业用芯片AM3359为核心处理器的移动在线水质监测平台。该平台可以实现水域中的任意移动、平台的经纬度实时监测、水样本的自动获取及各项水质指标的检测、图像数据及被检水质数据的无线传输。平台配备了柔性太阳能电池板、12 V蓄电池以及相应的电源控制电路,可实现蓄电池的自动充电。

1 系统构成
    整个系统主要由移动平台和监控中心两部分组成。监控中心主要由基于PC机的上位机软件和算法组成。移动平台包括核心处理器、电源模块以及各种功能模块。核心处理器采用AM3359低功耗芯片,它是一款基于Cortex-A8内核的高性能低价格(约5美元一片)工业型芯片,具有720 MHz的主频,采用32 bit RISC精简指令,具有12 bit高精度ADC、3路增强型的PWM通道、SGX530图像引擎,支持ddr2和ddr3内存,支持最新的Linux和Wince操作系统,功耗低至7 mW。功能模块包括水质测量模块、图像采集模块、电源模块、电机控制模块、GPS定位模块、GPRS无线传输模块、电子罗盘方向导航模块、超声波测障模块。
    水质监测平台系统构成图如图1所示。

2 硬件设计
    在图1中,电子罗盘模块采用霍尼韦尔公司推出的3轴数字罗盘HMC5883;GPS模块和GPRS模块采用SIMCom公司最新推出的sim908模块,该模块把GPS和GPRS集成到一起,由AT指令控制;水质采样模块使用2个小型水泵,通过I/O口控制继电器实现水泵的抽水和排水;太阳能充电模块采用CN3063太阳能充电管理芯片。这些模块在应用时十分简单,本文不详细阐述。本文将重点介绍运动控制模块的改进和基于Linux操作系统的图像采集与传输。
2.1 运动控制模块设计
    本设计选用无刷直流电机作为运动控制模块的核心部件,选用IR21365和GIB10B60KD1构成无刷电机的驱动电路。无刷电机由于没有电刷,寿命比有刷电机提高了6倍,同时还具有结构简单、性能可靠、永无磨损、空载电流小、过载能力大等优点[2-3]。运动控制模块结构框图如图2所示。

2.2 硬件逻辑防短路电路设计
    软件逻辑上的错误可能导致与电机某相连接的上下两只IGBT管同时导通,使电路出现短路[4],引起电流过大而烧坏IGBT管。对此,本文通过“与非门”搭建一个电路,使得当与上下两只IGBT管栅极相连的PWM波引脚都为高电平时,与电机相连的相不导通。由于电机三相存在对称性,这里仅取电机的A相来分析硬件上如何防止上下两只IGBT管同时导通,其原理图如图3所示。

    由于IR2136S只是增强信号的驱动能力,不改变信号逻辑上的值,因此从逻辑上说Q1′和Q1、Q2′和Q2是一样的。根据本文的设计,当Q1′、Q2′为低电平时,相应的IGBT管为导通状态,其真值表如表1所示。
      由表1可知,当由于软件误操作导致PWM1和PWM2同时高电平或者同时低电平时,与之相连的两个IGBT管都是截止状态,防止了短路的发生,从硬件上有效地保护了电机。
2.3 图像采集模块
    本文采用OV7620 COMS摄像头,其分辨率达到640&times;480,支持 RGB和YUV图像数据格式。5 V电源供电,工作时功耗<120 mW,待机时功耗<10 &mu;W[5]。该模块与微处理器的连接框图如图4所示。

 

 

    OV7620的控制符合SCCB(Serial Camera Control Bus)协议,它是一种简化了的I2C协议,本文采用I/O模拟SCCB总线的方式来控制OV7620。编写一个I2CSendByte()函数来写寄存,该函数的第一个参数为OV7620的芯片地址0x42,第二个参数为片内寄存器地址,第三个参数为相应寄存器的设定值。本文设置OV7620为连续扫描、RGB原始数据16位方式输出。用如下的函数可以完成设置:
Void Camera_Setup()
{
    I2CSendByte(0x42,0x12,0x2d);
    I2CSendByte(0x42,0x13,0x01);
    I2CSendByte(0x42,0x28,0x20);
    I2CSendByte(0x42,0x20,0x02);
}
    处理器把OV7620采集到的RGB格式的图像数据压缩成JPEG格式并存储于SD卡中,当收到相应命令时,通过GPRS无线模块把图像发送给监控中心。
3 系统软件设计
3.1 操作系统

    本文采用具有可靠性高、源代码开放等优点的Linux操作系统。在为系统移植Linux操作系统之后,将为OV7620添加驱动程序。
    整个系统流程为:系统开机后进行初始化并创建各个任务,任务创建成功后系统检测GPRS缓冲区中的数据并判断是自主导航还是手动导航。如果是手动导航,则系统直接接收远程遥控到目的地采集水样;如果是自动导航,则系统通过GPS获取目标位置和当前位置并计算运动路线。运动过程中通过超声波不断探测前方是否有障碍物,如果有障碍则系统进行避障运动。避障后系统重新确定运动路线和运动方向。当系统到达指定位置时便开始水质采样和分析以及水质的影像采集。最后数据通过无线模块传输回监控中心。这样就完成了一次水质采样。
3.2 驱动程序的编写
    摄像头设备属于字符设备,它能够像字节流一样被访问,并且只能够顺序读写[6]。添加一个设备驱动程序的标准流程如图5所示。

    当调用驱动程序时,操作系统会自动调用module_
init()函数;退出驱动程序时,操作系统会自动调用module_exit()函数以释放系统资源。
    关键的函数如下:
    register_chrdev_region(devno,1,&Prime;ov7620&Prime;);
    /*申请设备号*/
    cdev_init(&dev.cdev,&ov7620_fops);
    /*初始化cdev结构体*/
    dev.cdev.owner=THIS_MODULE;
    dev.cdev.ops=&ov7620_fops;
    /*关联cdev结构体和file_operations结构体*/
    cdev_add(&dev.cdev,devno,1);
    /*添加cdev结构体*/
    其中有一个非常重要的结构体(即file_operations结构体)是Linux系统中为应用程序提供各种操作接口的核心结构体,编写驱动的大部分工作实际上就是填充file_operations结构体中的各个子函数。在本文中,摄像头的file_operations结构体如下:
static const struct file_operations ov7620_fops=
{
    .owner=THIS_MODULE,
    .open=ov7620_open,
    .read=ov7620_read,
    .write=ov7620_write,
    .ioctl=ov7620_ioctl,
};
    如填充ov7620_open子函数如下:
static void ov7620_open(struct inode *inode,struct file *filp)
{
    GPIO_Init();/*初始化IO口*/
    Camera_Setup();/*通过SCCB接口设置OV7620摄像头
中的各个寄存器,使摄像头处于合适的工作模式*/
}
    当应用程序调用open函数时,程序最终会调用到驱动程序里的OV7620_open()函数,从而操作硬件。其他的应用程序的函数调用,最终也会寻找到file_operations结构体中对应的钩子函数,在此不再赘述。
3.3 图像的压缩传输
    为加快图像传输的速度和节省流量,本文采用JPEG的图像压缩方式。在JPEG算法中,通常是将图像分成一个个8&times;8的图像子块,对每一个图像子块进行离散余弦变换。所使用的二维离散余弦变换(DCT)公式如下[7]:

    JPEG图像压缩在Linux操作系统中的具体实现方式为:在工程文件夹下一次拷贝libjpeg.lib、jconfig、jmorecfg.h、jpeglib.h这4个文件;然后在主程序所在的#include &ldquo;jpeglib.h&rdquo;源文件中,调用jpeg_start_compress()函数进行压缩;压缩完成后需调用jpeg_finish_compress()函数来完成压缩;最后需要调用jpeg_destroy_compress()函数来释放压缩过程中申请的资源。压缩效果如图6所示,压缩(上接第36页)
前图片大小为850 KB,压缩后图片大小为45 KB,可见采用JPEG压缩效果十分明显。

    本文介绍了以高性能Cortex-A8微处理器为核心的移动在线水质监测平台的开发和系统的软、硬件组成,并且对一些不足提出了改进。实践证明,该系统可长期在水域中监测水质,并可顺畅地传输回所在位置的水质图像,具有一定的应用价值。
参考文献
[1] 李飞飞,杨江.遥控式移动水质快速监测系统[DB].中国优秀硕士学位论文全文数据库,2011:6-7.
[2] 韦鲲,任军军.三次谐波检测无刷直流电机转子位置的研究[J].中国电机工程学报,2004,24(5):163-167.
[3] 黄小莉,何毅.三相直流无刷电机驱动板设计[J].机械设计与制造,2011,5(5):60-62.
[4] 让余奇,曹彦.采用IGBT的无刷直流电动机保护技术[J]. 微特电机,2004,5(5):38-40.
[5] 雷霏霖,梁志毅.基于CMOS传感器OV7620采集系统设计[J].电子测量技术,2008,31(12):110-112.
[6] 樊国栋,石红瑞.嵌入式Linux下CMOS摄像头驱动的设计与实现[J].工业仪表与自动化装置,2010,3(3):68-70.
[7] 郑凯华,章旭东.基于S3C2440的图像采集与显示系[J].计算机系统应用,2011,20(8):225-228.

此内容为AET网站原创,未经授权禁止转载。