《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(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
來源:2015年微型機(jī)與應(yīng)用第22期

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

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

0 引言

  水產(chǎn)養(yǎng)殖是我國農(nóng)業(yè)的支柱產(chǎn)業(yè)之一,,近年來,水產(chǎn)養(yǎng)殖的品種和產(chǎn)量不斷增加,,且養(yǎng)殖的規(guī)模越來越大,,這為物聯(lián)網(wǎng)技術(shù)在水產(chǎn)養(yǎng)殖中的應(yīng)用提供了良好的條件和廣闊的發(fā)展空間。未來的水產(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)上述的需求,。后來,人們引入了水質(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終端來進(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開發(fā)板實(shí)驗(yàn)平臺(tá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)成,通過串口連接平臺(tái),,即插即用,;標(biāo)準(zhǔn)輸出模塊主要是輸出處理后的數(shù)據(jù)[4]。4G無線通信模塊使用USB 4G無線網(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)行起來,。4G無線網(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ù)庫,,當(dāng)模塊采集的參數(shù)數(shù)據(jù)定時(shí)被CPU采樣時(shí),CPU會(huì)對(duì)比采樣參數(shù)和標(biāo)準(zhǔn)參數(shù):若結(jié)果沒有發(fā)生異常,,CPU將數(shù)據(jù)自動(dòng)保存到存儲(chǔ)器模塊,,打包聯(lián)網(wǎng)傳送給數(shù)據(jù)庫;若比較結(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)問題所在,還可以結(jié)合用戶的專家系統(tǒng)給出一些解決問題的方法,,有效降低了養(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軟件開發(fā)步驟,確定開發(fā)流程如圖2所示,。

002.jpg

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

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

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

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

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

003.jpg

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

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

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

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

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

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

  Linux內(nèi)核文件提供了大量的功能驅(qū)動(dòng)文件,,因此需要選擇適當(dāng)?shù)哪K來裁剪內(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)中,,如果沒有設(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步成功燒寫到開發(fā)板上,,儀表的系統(tǒng)平臺(tái)就構(gòu)建完成了,,從Nand Flash啟動(dòng)儀表的系統(tǒng),如圖5所示,。

005.jpg

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

  軟件應(yīng)用程序?qū)⑹褂脤iT為嵌入式Linux操作系統(tǒng)的消費(fèi)電子設(shè)備而開發(fā)的應(yīng)用平臺(tái)——Qtopia構(gòu)建,。Qtopia是構(gòu)建在Qt/Embeded上,專為嵌入式設(shè)備的圖形用戶接口和應(yīng)用開發(fā)而設(shè)計(jì)的C++工具包[7],。其包含有完整的應(yīng)用層,、用戶界面、窗口操作系統(tǒng),、應(yīng)用程序的啟動(dòng)程序和開發(fā)框架,。Qt/E開發(fā)的應(yīng)用程序最終要成功在開發(fā)板上運(yùn)行,開發(fā)過程一般是先在Linux系統(tǒng)上使用Qt/E進(jìn)行應(yīng)用程序的編寫和調(diào)試,,進(jìn)行交叉編譯后下載到開發(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ì)移植過程,實(shí)現(xiàn)了平臺(tái)系統(tǒng)從零到操作系統(tǒng)移植的實(shí)現(xiàn)過程,,讓讀者更容易理解和實(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)未來養(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] 曾寶國,,劉美岑.基于物聯(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無線傳輸車載信息平臺(tái)關(guān)鍵技術(shù)研究與開發(fā)[D].長(zhǎng)春:吉林大學(xué),,2013.

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

  [7] 郝超,潘思陽,,張文圳.基于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)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。