《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于嵌入式Linux的養(yǎng)殖水質(zhì)監(jiān)控 智能儀表的平臺(tái)設(shè)計(jì)

基于嵌入式Linux的養(yǎng)殖水質(zhì)監(jiān)控 智能儀表的平臺(tái)設(shè)計(jì)

2016-02-21
作者:王 超1,郭顯久1,2,閻笑彤1
來(lái)源:2015年微型機(jī)與應(yīng)用第22期

  摘  要: 介紹了一種基于嵌入式Linux的養(yǎng)殖水質(zhì)監(jiān)控智能儀表平臺(tái)設(shè)計(jì)。該儀表通過(guò)ARM核心處理器連接其他外設(shè)功能模塊,實(shí)現(xiàn)硬件平臺(tái)搭建;通過(guò)裁剪和移植Linux內(nèi)核,完善操作系統(tǒng)和驅(qū)動(dòng)程序等開(kāi)發(fā),實(shí)現(xiàn)硬件平臺(tái)上成功安裝操作系統(tǒng)。該智能儀表主要用于水產(chǎn)養(yǎng)殖領(lǐng)域的各項(xiàng)水質(zhì)參數(shù)的監(jiān)測(cè),能夠滿足未來(lái)養(yǎng)殖的高效率和高質(zhì)量的需要。

  關(guān)鍵詞: 智能儀表;平臺(tái)設(shè)計(jì);移植

0 引言

  水產(chǎn)養(yǎng)殖是我國(guó)農(nóng)業(yè)的支柱產(chǎn)業(yè)之一,近年來(lái),水產(chǎn)養(yǎng)殖的品種和產(chǎn)量不斷增加,且養(yǎng)殖的規(guī)模越來(lái)越大,這為物聯(lián)網(wǎng)技術(shù)在水產(chǎn)養(yǎng)殖中的應(yīng)用提供了良好的條件和廣闊的發(fā)展空間。未來(lái)的水產(chǎn)養(yǎng)殖將以高成活率和高質(zhì)量為目的,實(shí)現(xiàn)這些目的的前提條件之一是要保持養(yǎng)殖水質(zhì)的穩(wěn)定性,如水溫、溶解氧、PH值和濁度等水質(zhì)參數(shù),都需要及時(shí)獲取[1]。

  傳統(tǒng)的定時(shí)取樣和化學(xué)分析法獲取養(yǎng)殖水質(zhì)數(shù)據(jù),獲取不及時(shí)、可靠性低、實(shí)時(shí)操作性差且成本高,遠(yuǎn)遠(yuǎn)不能實(shí)現(xiàn)上述的需求。后來(lái),人們引入了水質(zhì)實(shí)時(shí)監(jiān)測(cè)系統(tǒng),該系統(tǒng)以ZigBee、GPRS、智能水質(zhì)監(jiān)測(cè)傳感器等物聯(lián)網(wǎng)技術(shù)為手段,能實(shí)時(shí)采集養(yǎng)殖水的水位、溶解氧、PH值、溫度和濁度等參數(shù),實(shí)現(xiàn)水產(chǎn)養(yǎng)殖水質(zhì)的實(shí)時(shí)監(jiān)測(cè)[2]。但是,該系統(tǒng)主要是與上位機(jī)通信,需要一個(gè)固定的PC終端來(lái)進(jìn)行遠(yuǎn)程、實(shí)時(shí)的監(jiān)控和操作。因此,設(shè)計(jì)一種可靠的養(yǎng)殖水質(zhì)監(jiān)控系統(tǒng)的智能儀表,對(duì)養(yǎng)殖業(yè)的發(fā)展具有重大意義。

1 硬件平臺(tái)架構(gòu)設(shè)計(jì)

  本文中的智能儀表的硬件平臺(tái)選用了天嵌公司出品的tq2440開(kāi)發(fā)板實(shí)驗(yàn)平臺(tái)。該開(kāi)發(fā)板的CPU是基于ARM920T的S3C2440芯片、512 MB的Nand Flash和64 MB的DDRAM、117個(gè)I/O通用Pin腳和24位外部中斷源、12位的逐次逼近型A/D轉(zhuǎn)換器等,處理器資源豐富,基本滿足數(shù)據(jù)的采集和信號(hào)的轉(zhuǎn)化[3]。

  1.1 智能儀表監(jiān)控平臺(tái)的架構(gòu)

  平臺(tái)硬件架構(gòu)設(shè)計(jì)采用了模塊化設(shè)計(jì)模式,即各模塊之間相互獨(dú)立地掛載到控制板上,以ARM處理器為核心,協(xié)調(diào)其他各個(gè)功能模塊工作。其結(jié)構(gòu)框圖如圖1所示。

001.jpg

  其中,ARM處理器上運(yùn)行Linux操作系統(tǒng),負(fù)責(zé)數(shù)據(jù)的采集、運(yùn)算和通信等功能;圖像采集模塊是常用的USB攝像頭;水質(zhì)檢測(cè)模塊主要由采集各類參數(shù)的傳感器構(gòu)成,通過(guò)串口連接平臺(tái),即插即用;標(biāo)準(zhǔn)輸出模塊主要是輸出處理后的數(shù)據(jù)[4]。4G無(wú)線通信模塊使用USB 4G無(wú)線網(wǎng)卡;LCD模塊作為智能儀表的輸入和輸出模塊;存儲(chǔ)器模塊,因板子Flash容量不足,大存儲(chǔ)主要靠SD卡。

  1.2 平臺(tái)系統(tǒng)的工作模式

  為實(shí)現(xiàn)儀表低功耗、高效率的工作,設(shè)置了兩種工作模式:常態(tài)模式和用戶態(tài)模式。常態(tài)模式即系統(tǒng)在一般狀態(tài)下的工作模式,該模式下,儀表處于低功耗狀態(tài),多數(shù)模塊處于休眠狀態(tài),不占CPU資源。用戶模式即用戶控制儀表工作的模式,該模式下,各模塊受用戶控制搶占CPU資源工作。

  攝像頭、LCD模塊應(yīng)設(shè)置為常態(tài)模式,一般處在休眠狀態(tài),當(dāng)用戶向內(nèi)核進(jìn)程發(fā)送喚醒消息后,模塊被內(nèi)核喚醒,才會(huì)向CPU申請(qǐng)資源,運(yùn)行起來(lái)。4G無(wú)線網(wǎng)絡(luò)傳輸速度快,考慮通信流量的費(fèi)用高,設(shè)置網(wǎng)絡(luò)模塊定時(shí)聯(lián)網(wǎng),間歇式打包發(fā)送數(shù)據(jù)。水質(zhì)監(jiān)測(cè)模塊的各個(gè)傳感器是實(shí)時(shí)采集數(shù)據(jù)的,但實(shí)際中,養(yǎng)殖水質(zhì)參數(shù)如溫度、溶解氧等是不會(huì)實(shí)時(shí)快速變化的,所以,該模塊常態(tài)模式下,設(shè)置為定時(shí)采樣,用戶可自定義采集時(shí)間,這樣既降低了功耗,同時(shí)避免采集太多冗余數(shù)據(jù)。

  1.3 平臺(tái)系統(tǒng)的智能處理機(jī)制

  因?yàn)樵撝悄軆x表是監(jiān)控養(yǎng)殖水質(zhì)的,所以該儀表的智能性主要體現(xiàn)在系統(tǒng)對(duì)水質(zhì)參數(shù)數(shù)據(jù)的運(yùn)算處理上,即實(shí)現(xiàn)大數(shù)據(jù)處理。系統(tǒng)中先加載各個(gè)參數(shù)的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù),當(dāng)模塊采集的參數(shù)數(shù)據(jù)定時(shí)被CPU采樣時(shí),CPU會(huì)對(duì)比采樣參數(shù)和標(biāo)準(zhǔn)參數(shù):若結(jié)果沒(méi)有發(fā)生異常,CPU將數(shù)據(jù)自動(dòng)保存到存儲(chǔ)器模塊,打包聯(lián)網(wǎng)傳送給數(shù)據(jù)庫(kù);若比較結(jié)果發(fā)生異常,CPU立即進(jìn)入異常處理模式,網(wǎng)絡(luò)模塊搶占資源聯(lián)網(wǎng),CPU向用戶發(fā)送異常警報(bào),同時(shí)將已經(jīng)采集的數(shù)據(jù)打包發(fā)送給用戶。平臺(tái)系統(tǒng)的智能處理機(jī)制能幫助養(yǎng)殖戶及時(shí)、準(zhǔn)確地發(fā)現(xiàn)問(wèn)題所在,還可以結(jié)合用戶的專家系統(tǒng)給出一些解決問(wèn)題的方法,有效降低了養(yǎng)殖風(fēng)險(xiǎn)。

2 軟件平臺(tái)架構(gòu)設(shè)計(jì)

  由于智能儀表的整個(gè)系統(tǒng)比較復(fù)雜,為了管理和協(xié)調(diào)好各項(xiàng)復(fù)雜的任務(wù),決定選用嵌入式Linux操作系統(tǒng)[5]。

  結(jié)合嵌入式Linux軟件開(kāi)發(fā)步驟,確定開(kāi)發(fā)流程如圖2所示。

002.jpg

  2.1 建立Linux交叉編譯環(huán)境

  首先在PC上安裝上Linux操作系統(tǒng)并建立適用于ARM的交叉編譯器arm-linux-gcc。交叉編譯工具安裝包可以從網(wǎng)上獲取。建立好Linux交叉開(kāi)發(fā)環(huán)境后,即可開(kāi)始軟件系統(tǒng)平臺(tái)的移植了。

  2.2 移植Bootloader和Linux內(nèi)核

  Bootloader是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過(guò)這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。

  Bootloader的制作過(guò)程這里不做詳細(xì)介紹。不同于以往的移植方法,在tq2440平臺(tái)上,本文提出一種基于USB的移植方法,該方法操作簡(jiǎn)單,效率高。下面以Bootloader的移植為例,給予詳細(xì)介紹。將開(kāi)發(fā)板從nor_flash啟動(dòng),進(jìn)入命令輸入模式,如圖3所示。

003.jpg

 ?。?)輸入命令usbslave 1 30008000,開(kāi)發(fā)板處于下載等待狀態(tài);

 ?。?)進(jìn)入Linux下,輸入命令dnw u-boot.bin 30008000,使用dnw將u-boot.bin文件下載到內(nèi)存地址30008000處;

 ?。?)輸入命令nand erase 0 40000,擦除從0地址開(kāi)始長(zhǎng)度為40000的內(nèi)存空間;

 ?。?)輸入命令nand write 30008000 0 40000,從30008000地址處讀取數(shù)據(jù),寫(xiě)入到0地址處,長(zhǎng)度為40000。

  說(shuō)明:(1)中的subslave是啟動(dòng)USB下載的命令,上述的內(nèi)存起始地址和長(zhǎng)度,在內(nèi)核文件中已經(jīng)固定設(shè)置,不可更改;(2)中dnw是USB下載軟件,可以由其他USB下載軟件替換;(3)格式化內(nèi)存空間;(4)向內(nèi)存中燒寫(xiě)B(tài)ootloader。

  完成了Bootloader的移植以后,下面進(jìn)行移植Linux內(nèi)核。

  Linux內(nèi)核文件提供了大量的功能驅(qū)動(dòng)文件,因此需要選擇適當(dāng)?shù)哪K來(lái)裁剪內(nèi)核,配置步驟如下:

 ?。?)make distclean,清除原有的配置文件和中間文件;

 ?。?)make menuconfig ARCM=arm,進(jìn)入內(nèi)核配置界面,按需要裁剪內(nèi)核模塊,如圖4所示。

004.jpg

 ?。?)make uImage ARCH=arm CROSS_COMPILE=arm-linux-,編譯內(nèi)核,產(chǎn)生uImage鏡像文件。注意,這個(gè)內(nèi)核鏡像是不帶根文件系統(tǒng)的,因調(diào)試需要,內(nèi)核中文件系統(tǒng)配置為NFS文件系統(tǒng)。

  移植內(nèi)核,步驟基本重復(fù)移植U-Boot的步驟。

  2.3 移植根文件系統(tǒng)

  文件系統(tǒng)是操作系統(tǒng)的重要組成部分。在嵌入式Linux系統(tǒng)啟動(dòng)時(shí),首先是啟動(dòng)U-Boot引導(dǎo)程序,然后便會(huì)進(jìn)入制作的文件系統(tǒng)中,如果沒(méi)有設(shè)置或掛載文件系統(tǒng),那么Linux就會(huì)進(jìn)行系統(tǒng)報(bào)錯(cuò),并重新啟動(dòng)。在啟動(dòng)的同時(shí)可以手動(dòng)掛載新的文件系統(tǒng)。所以,可以制作多個(gè)不同的文件系統(tǒng),放在Linux下[6]。

  本文中制作的是yaffs2文件系統(tǒng)。制作好yaffs2文件鏡像后,移植到ARM平臺(tái)上,移植步驟基本重復(fù)Bootloader移植步驟。

  這3步成功燒寫(xiě)到開(kāi)發(fā)板上,儀表的系統(tǒng)平臺(tái)就構(gòu)建完成了,從Nand Flash啟動(dòng)儀表的系統(tǒng),如圖5所示。

005.jpg

  2.4 開(kāi)發(fā)調(diào)試應(yīng)用程序

  軟件應(yīng)用程序?qū)⑹褂脤iT為嵌入式Linux操作系統(tǒng)的消費(fèi)電子設(shè)備而開(kāi)發(fā)的應(yīng)用平臺(tái)——Qtopia構(gòu)建。Qtopia是構(gòu)建在Qt/Embeded上,專為嵌入式設(shè)備的圖形用戶接口和應(yīng)用開(kāi)發(fā)而設(shè)計(jì)的C++工具包[7]。其包含有完整的應(yīng)用層、用戶界面、窗口操作系統(tǒng)、應(yīng)用程序的啟動(dòng)程序和開(kāi)發(fā)框架。Qt/E開(kāi)發(fā)的應(yīng)用程序最終要成功在開(kāi)發(fā)板上運(yùn)行,開(kāi)發(fā)過(guò)程一般是先在Linux系統(tǒng)上使用Qt/E進(jìn)行應(yīng)用程序的編寫(xiě)和調(diào)試,進(jìn)行交叉編譯后下載到開(kāi)發(fā)板。

3 結(jié)論

  本文提出了一種基于嵌入式Linux的養(yǎng)殖水質(zhì)監(jiān)控智能儀表的平臺(tái)設(shè)計(jì)。所介紹的儀表的模塊化架構(gòu)和系統(tǒng)的兩態(tài)工作模式能實(shí)現(xiàn)該智能儀表的高效率和低功耗工作。儀表的智能處理機(jī)制能有效降低養(yǎng)殖風(fēng)險(xiǎn)。文中還給出了該平臺(tái)系統(tǒng)的一種新的基于USB的詳細(xì)移植過(guò)程,實(shí)現(xiàn)了平臺(tái)系統(tǒng)從零到操作系統(tǒng)移植的實(shí)現(xiàn)過(guò)程,讓讀者更容易理解和實(shí)現(xiàn)。同時(shí),文中的模塊化的設(shè)計(jì)思想也可以有效地移植到其他實(shí)驗(yàn)平臺(tái)上。

  總體而言,該智能儀表能滿足水產(chǎn)養(yǎng)殖領(lǐng)域的各項(xiàng)水質(zhì)參數(shù)監(jiān)測(cè)的要求,對(duì)實(shí)現(xiàn)未來(lái)養(yǎng)殖業(yè)的高效率和高質(zhì)量具有重要意義。

  參考文獻(xiàn)

  [1] 蔡蘇華.基于ARM的養(yǎng)殖水質(zhì)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與研究[D].南京:南京師范大學(xué),2012.

  [2] 吳宇.小型移動(dòng)水質(zhì)監(jiān)測(cè)系統(tǒng)的研究[D].杭州:浙江大學(xué),2013.

  [3] 羅志灶,周贏武,羅志仕.基于嵌入式LINUX的智能儀表設(shè)計(jì)方案[J].微計(jì)算機(jī)信息,2010,26(10-2):73-75.

  [4] 曾寶國(guó),劉美岑.基于物聯(lián)網(wǎng)的水產(chǎn)養(yǎng)殖水質(zhì)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(6):53-56.

  [5] 周桂成.嵌入式Linux無(wú)線傳輸車載信息平臺(tái)關(guān)鍵技術(shù)研究與開(kāi)發(fā)[D].長(zhǎng)春:吉林大學(xué),2013.

  [6] 甄海濤,聶洪淼,陳慶文.基于嵌入式Linux的根文件系統(tǒng)制作與移植[J].自動(dòng)化技術(shù)與應(yīng)用,2014,33(12):21-24.

  [7] 郝超,潘思陽(yáng),張文圳.基于ARM的短信收發(fā)系統(tǒng)的設(shè)計(jì)[J].信息技術(shù),2013(5):111-114.


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。