基于嵌入式Linux的养殖水质监控 智能仪表的平台设计
2016-02-21
作者:王 超1,郭显久1,2,阎笑彤1
来源:2015年微型机与应用第22期
摘 要: 介绍了一种基于嵌入式Linux的养殖水质监控智能仪表的平台设计。该仪表通过ARM核心处理器连接其他外设功能模块,实现硬件平台搭建;通过裁剪和移植Linux内核,完善操作系统和驱动程序等开发,实现硬件平台上成功安装操作系统。该智能仪表主要用于水产养殖领域的各项水质参数的监测,能够满足未来养殖的高效率和高质量的需要。
关键词: 智能仪表;平台设计;移植
0 引言
水产养殖是我国农业的支柱产业之一,近年来,水产养殖的品种和产量不断增加,且养殖的规模越来越大,这为物联网技术在水产养殖中的应用提供了良好的条件和广阔的发展空间。未来的水产养殖将以高成活率和高质量为目的,实现这些目的的前提条件之一是要保持养殖水质的稳定性,如水温、溶解氧、PH值和浊度等水质参数,都需要及时获取[1]。
传统的定时取样和化学分析法获取养殖水质数据,获取不及时、可靠性低、实时操作性差且成本高,远远不能实现上述的需求。后来,人们引入了水质实时监测系统,该系统以ZigBee、GPRS、智能水质监测传感器等物联网技术为手段,能实时采集养殖水的水位、溶解氧、PH值、温度和浊度等参数,实现水产养殖水质的实时监测[2]。但是,该系统主要是与上位机通信,需要一个固定的PC终端来进行远程、实时的监控和操作。因此,设计一种可靠的养殖水质监控系统的智能仪表,对养殖业的发展具有重大意义。
1 硬件平台架构设计
本文中的智能仪表的硬件平台选用了天嵌公司出品的tq2440开发板实验平台。该开发板的CPU是基于ARM920T的S3C2440芯片、512 MB的Nand Flash和64 MB的DDRAM、117个I/O通用Pin脚和24位外部中断源、12位的逐次逼近型A/D转换器等,处理器资源丰富,基本满足数据的采集和信号的转化[3]。
1.1 智能仪表监控平台的架构
平台硬件架构设计采用了模块化设计模式,即各模块之间相互独立地挂载到控制板上,以ARM处理器为核心,协调其他各个功能模块工作。其结构框图如图1所示。
其中,ARM处理器上运行Linux操作系统,负责数据的采集、运算和通信等功能;图像采集模块是常用的USB摄像头;水质检测模块主要由采集各类参数的传感器构成,通过串口连接平台,即插即用;标准输出模块主要是输出处理后的数据[4]。4G无线通信模块使用USB 4G无线网卡;LCD模块作为智能仪表的输入和输出模块;存储器模块,因板子Flash容量不足,大存储主要靠SD卡。
1.2 平台系统的工作模式
为实现仪表低功耗、高效率的工作,设置了两种工作模式:常态模式和用户态模式。常态模式即系统在一般状态下的工作模式,该模式下,仪表处于低功耗状态,多数模块处于休眠状态,不占CPU资源。用户模式即用户控制仪表工作的模式,该模式下,各模块受用户控制抢占CPU资源工作。
摄像头、LCD模块应设置为常态模式,一般处在休眠状态,当用户向内核进程发送唤醒消息后,模块被内核唤醒,才会向CPU申请资源,运行起来。4G无线网络传输速度快,考虑通信流量的费用高,设置网络模块定时联网,间歇式打包发送数据。水质监测模块的各个传感器是实时采集数据的,但实际中,养殖水质参数如温度、溶解氧等是不会实时快速变化的,所以,该模块常态模式下,设置为定时采样,用户可自定义采集时间,这样既降低了功耗,同时避免采集太多冗余数据。
1.3 平台系统的智能处理机制
因为该智能仪表是监控养殖水质的,所以该仪表的智能性主要体现在系统对水质参数数据的运算处理上,即实现大数据处理。系统中先加载各个参数的标准数据库,当模块采集的参数数据定时被CPU采样时,CPU会对比采样参数和标准参数:若结果没有发生异常,CPU将数据自动保存到存储器模块,打包联网传送给数据库;若比较结果发生异常,CPU立即进入异常处理模式,网络模块抢占资源联网,CPU向用户发送异常警报,同时将已经采集的数据打包发送给用户。平台系统的智能处理机制能帮助养殖户及时、准确地发现问题所在,还可以结合用户的专家系统给出一些解决问题的方法,有效降低了养殖风险。
2 软件平台架构设计
由于智能仪表的整个系统比较复杂,为了管理和协调好各项复杂的任务,决定选用嵌入式Linux操作系统[5]。
结合嵌入式Linux软件开发步骤,确定开发流程如图2所示。
2.1 建立Linux交叉编译环境
首先在PC上安装上Linux操作系统并建立适用于ARM的交叉编译器arm-linux-gcc。交叉编译工具安装包可以从网上获取。建立好Linux交叉开发环境后,即可开始软件系统平台的移植了。
2.2 移植Bootloader和Linux内核
Bootloader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
Bootloader的制作过程这里不做详细介绍。不同于以往的移植方法,在tq2440平台上,本文提出一种基于USB的移植方法,该方法操作简单,效率高。下面以Bootloader的移植为例,给予详细介绍。将开发板从nor_flash启动,进入命令输入模式,如图3所示。
(1)输入命令usbslave 1 30008000,开发板处于下载等待状态;
(2)进入Linux下,输入命令dnw u-boot.bin 30008000,使用dnw将u-boot.bin文件下载到内存地址30008000处;
(3)输入命令nand erase 0 40000,擦除从0地址开始长度为40000的内存空间;
(4)输入命令nand write 30008000 0 40000,从30008000地址处读取数据,写入到0地址处,长度为40000。
说明:(1)中的subslave是启动USB下载的命令,上述的内存起始地址和长度,在内核文件中已经固定设置,不可更改;(2)中dnw是USB下载软件,可以由其他USB下载软件替换;(3)格式化内存空间;(4)向内存中烧写Bootloader。
完成了Bootloader的移植以后,下面进行移植Linux内核。
Linux内核文件提供了大量的功能驱动文件,因此需要选择适当的模块来裁剪内核,配置步骤如下:
(1)make distclean,清除原有的配置文件和中间文件;
(2)make menuconfig ARCM=arm,进入内核配置界面,按需要裁剪内核模块,如图4所示。
(3)make uImage ARCH=arm CROSS_COMPILE=arm-linux-,编译内核,产生uImage镜像文件。注意,这个内核镜像是不带根文件系统的,因调试需要,内核中文件系统配置为NFS文件系统。
移植内核,步骤基本重复移植U-Boot的步骤。
2.3 移植根文件系统
文件系统是操作系统的重要组成部分。在嵌入式Linux系统启动时,首先是启动U-Boot引导程序,然后便会进入制作的文件系统中,如果没有设置或挂载文件系统,那么Linux就会进行系统报错,并重新启动。在启动的同时可以手动挂载新的文件系统。所以,可以制作多个不同的文件系统,放在Linux下[6]。
本文中制作的是yaffs2文件系统。制作好yaffs2文件镜像后,移植到ARM平台上,移植步骤基本重复Bootloader移植步骤。
这3步成功烧写到开发板上,仪表的系统平台就构建完成了,从Nand Flash启动仪表的系统,如图5所示。
2.4 开发调试应用程序
软件应用程序将使用专门为嵌入式Linux操作系统的消费电子设备而开发的应用平台——Qtopia构建。Qtopia是构建在Qt/Embeded上,专为嵌入式设备的图形用户接口和应用开发而设计的C++工具包[7]。其包含有完整的应用层、用户界面、窗口操作系统、应用程序的启动程序和开发框架。Qt/E开发的应用程序最终要成功在开发板上运行,开发过程一般是先在Linux系统上使用Qt/E进行应用程序的编写和调试,进行交叉编译后下载到开发板。
3 结论
本文提出了一种基于嵌入式Linux的养殖水质监控智能仪表的平台设计。所介绍的仪表的模块化架构和系统的两态工作模式能实现该智能仪表的高效率和低功耗工作。仪表的智能处理机制能有效降低养殖风险。文中还给出了该平台系统的一种新的基于USB的详细移植过程,实现了平台系统从零到操作系统移植的实现过程,让读者更容易理解和实现。同时,文中的模块化的设计思想也可以有效地移植到其他实验平台上。
总体而言,该智能仪表能满足水产养殖领域的各项水质参数监测的要求,对实现未来养殖业的高效率和高质量具有重要意义。
参考文献
[1] 蔡苏华.基于ARM的养殖水质监测系统的设计与研究[D].南京:南京师范大学,2012.
[2] 吴宇.小型移动水质监测系统的研究[D].杭州:浙江大学,2013.
[3] 罗志灶,周赢武,罗志仕.基于嵌入式LINUX的智能仪表设计方案[J].微计算机信息,2010,26(10-2):73-75.
[4] 曾宝国,刘美岑.基于物联网的水产养殖水质实时监测系统[J].计算机系统应用,2013,22(6):53-56.
[5] 周桂成.嵌入式Linux无线传输车载信息平台关键技术研究与开发[D].长春:吉林大学,2013.
[6] 甄海涛,聂洪淼,陈庆文.基于嵌入式Linux的根文件系统制作与移植[J].自动化技术与应用,2014,33(12):21-24.
[7] 郝超,潘思阳,张文圳.基于ARM的短信收发系统的设计[J].信息技术,2013(5):111-114.