土壤墑情(溫度和濕度等)是重要的土壤信息,是農作物和樹木生長的重要生態因素,進行森林土壤墑情的測定,掌握土壤墑情變化的規律,對森林生態狀況的監測和預報具有重要意義。隨著計算機技術的不斷進步和智能化測量技術的飛速發展,嵌入式系統已成為各類數據采集系統的優選設計方案,同時,基于CDMA 1X的無線數據傳輸又使嵌入式數據采集具有了高可靠性和高智能化等優點。
CDMA 1X是在現有CDMA IS-95系統上發展起來的一種新的承載業務,它支持TCP/IP、X.25協議,可在網絡上實現“一次連接,長期在線”,而只有在傳輸數據占用信道時才計費。目前的實際應用帶寬大約在100 Kb/s左右(雙向對稱傳輸),非常適用于森林土壤監測數據的無線傳輸。
本文所描述的土壤溫濕度采集系統就是一種建立在基于嵌入式32位ARM處理器平臺以及CD-MA技術上的森林土壤墑情智能監測系統,通過該系統可以實現遠程無線數據采集。
1 系統組成與工作原理
本系統具有森林土壤溫濕度數據的查詢、存儲、定時上報和告警(火災或水災)等功能。整個系統由溫濕度數據采集和數據接收兩部分組成,采集系統由數據采集模塊、CDMA模塊和電源模塊構成;數據接收系統由服務器、顯示控制計算機及監測服務器組成。通過系統中的土壤溫濕度傳感器可對檢測到的數據通過CPU進行處理,并以串行通信模式輸出到CDMA的DTU (DataTerminal Unit,數據終端系統),再通過DTU由CDMA 1X無線網絡經Internet公網連接到數據接收系統。這樣,只要有CDMA網絡信號的地方就可進行無線數據的采集和傳輸,因而應用地域非常廣泛。對于上位機而言,下位機(包括傳感器、嵌入式數據處理器和DTU等)可作為一個無線終端進行操作和管理。
嵌入式CPU在初始化CDMA無線模塊后,即可使之附著在CDMA網絡上,并通過撥號過程(號碼、用戶名、密碼)建立PPP連接,以獲得網絡運營商ISP動態分配給數傳終端的IP地址,并與服務器固定IP之間建立Socket鏈接。一旦該鏈接成功,數傳終端即可通過RS232串口向采集系統收、發數據或指令。由于該數據采集系統設置在森林里,故采用太陽能電池板+蓄電池的形式來為采集系統供電。
采集系統軟件模塊主要包括操作系統移植、主體程序設計模塊和A/D轉換微處理器程序設計模塊.接收系統軟件主要包括上位機、服務器應用界面和數據庫等軟件。
2 硬件電路設計
本系統中的數據采集系統結構如圖1所示,它主要由采集控制模塊、CDMA DTU傳輸模塊、模數轉換模塊和電源等幾個部分組成。
![]() |
2.1 采集系統控制模塊
CPU控制器是整個采集系統的核心。考慮到雙串口性能和高速傳輸需要,系統中的嵌入式CPU選用ATMEL的低功耗32位RISC微處理器AT91SAM9261芯片作為MCU模塊的處理器芯片,該處理器具有獨立的16 KB指令和16 KB數據cache,以及全功能的MMU虛擬內存管理系統。同時具有DSP擴展功能的指令集和豐富的外部接口,可工作在180 MHz頻率下其運算速度可達200MHz,能夠滿足系統工作要求。AT91SAM9261通過串口1直接與DTU模塊相連接,可完成對DTU的模塊初始化和基于CDMA的數據收發。SDRAM用于系統運行時暫存操作系統和有關數據,為提高系統的運行速度。設計中選用兩片32 M×8位的外擴64 MB的SDRAM存儲器MT48LC16M16A2-75B,存儲空間分配到AT91SAM9261的NCS1(0x20000000)地址空間。FLASH ROM主要用于存放引導程序、操作系統內核和應用程序代碼,本設計中選用兩片16 M×8位的外擴32 MB的ROM存儲器E28F128,存儲空間分配到AT91SAM9261的NCS0 (0x10000000)地址空間。
2.2 CDMA DTU傳輸模塊
系統中的DTU對上可建立CDMA無線通信鏈路,對下可提供RS-232用戶數據接口,CDMA數據傳輸終端選用CDMA Modem模塊MG801A,該模塊是中興通興公司推出的一款基于高通MSM5105的移動式Modem,它內嵌TCP/IP協議棧,支持達153.6 kbit/s的數據吞吐速率。該器件為工業級芯片,具有良好的穩定性,其優點是可直接提供RS 232/422/485接口,能為用戶的數據設備提供透明、全雙工和對等的數據傳輸通道,而且開機就能自動附著到CDMA網絡上,并與數據接收系統建立通信鏈路,以便隨時收發數據;DTU使用前,需對其進行初始化配置,并選擇適宜的模式;其主要配置是為每一個DTU設定對應的SIM卡卡號,這個卡號可以作為下位機的ID來為數據中心所識別和管理;而設定通信波特率則可根據森林土壤溫濕度檢測的實際需要來進行,本系統選用1200 bit/s;然后應設定上位機數據中心的IP地址,并給予數據流指向。
2.3 模數轉換模塊
土壤的溫濕度模擬數據須經模數轉換才能輸入到嵌入式CPU進行處理,數據采集處理器必須具有豐富的外設接口資源和足夠高的運算速度才能滿足系統的緊湊性和實時性要求。本設計選用CYGNAL公司的C8051F020作為數據采集的處理器,C8051F020的ADC0為增益可編程的12位逐次逼近型A/D轉換器,且自帶8路外部模擬量檢測通道。為了滿足系統對不同深度土層的濕度測量,本系統外加了4片單16/雙8選一模擬開關DG407來與C8051F020的ADC0相連接,以對每路模擬量進行巡回檢測。鑒于C8051F020的I/O口資源問題,本設計中選用了4片16位并/串轉換器74HC674并采用相級聯的方式來完成可能多達64個采集點的采集。C8051F020自帶兩個增強型串口UART0和UART1,設計中將UART0作為與CDMA模塊的接口,UART1作為預留的擴展口。考慮到C8051F020與AT91SAM9261之間的數據交換量較大,本設計選用一片2K×8位的雙口RAM芯片CY7C142來作為兩者之間的數據交換緩沖區。
2.4 電源模塊
本數據采集系統使用12V/40AH的鉛酸免維護蓄電池供電。白天,太陽能電池通過充電器對蓄電池充電。太陽能電池的額定功率為34 W,輸出電壓17 V,輸出電流2 A;充電器過壓和過流保護點分別設置為17.5 V和2.5 A,超過此值則停止充電,一般夏季七個小時就可充滿,蓄電池可連續供電六天以上;系統中的嵌入式CPU有兩種工作模式。其一是在正常工作模式時執行定時采集子程序;其余時間,CPU則進入節電的睡眠工作模式,但可隨時喚醒以接收采集指令;為了防止雷擊,系統在太陽能電池上方設置了避雷針。
3 軟件設計
3.1 數據采集系統的軟件設計
當采集系統接收無線控制命令后,便可通過I/O模塊定時執行數據采集指令并發送采集的數據。本采集系統的軟件流程如圖2所示。
![]() |
3.2 設備訪問和靜態加載
與硬件連接有關的驅動程序arinc.c定義如下:
#define ARINC_PHY_START、0x40000000 ∥AT91SAM9261的NCS3地址空間
#define ARINC_PHY_SIZE SZ_4K ∥ACEXEP1KS0的RAM空間
#define DEVICE_NAME“ARINC”
#define ARINCRAW MINOR 1
#define ARINC_Devfs_path “arinc/0”
static int arincMajor=0;∥使得系統可以隨機給ARINC總線接口分配主設備號
定義了驅動程序之后,即可在…/drivers/char目錄下的config.in中增加如下代碼:
bool′support for arincdrive′CONFIG_AR-INCDRIVE
這樣,在運行make menuconfig (或xconfig)后。就可在內核配置的字符設備選項里看到已經添加了‘support for arincdrive’選項,此時,驅動程序arinc.c已經被添加到了Linux內核中。
完成上述步驟之后,即可將arinc.c復制到…/drivers/char下,并在…/drivers/char目錄下的mem.中的int chr_dev_init()函數中添加如下代碼:
#ifdef CONFIG_ARINCDRIVE
init_arinc ();
#endif
,應在…/drivers/char目錄下的Makefile中添加如下代碼:
![]() |
3.3 數據接收系統的軟件設計
數據接收系統由控制計算機及通信服務器等構成。其數據接收程序可以根據DTU提供的動態庫來完成,并可在VC環境下實現。CDMA Server和DTU之間的通訊可使用開發包中的動態庫wcomm dll.dll。該文件包括了和DTU通訊所需要的全部API函數,包括服務的啟動、數據發送、數據接收和關閉服務等。CDMA Server與IOServer的通訊則基于SOCKET編程,并采用TCP/IP協議進行傳輸,但需要設置端口和IP地址,以便IOServer通過此端口和IP地址與CDMA Server建立通訊。CDMA Server是整個系統的通訊樞紐,可實現與IOServer和DTU的通訊。OPC Server與DTU的通信設計是基于開發工具包的用戶程序接口,即動態鏈接庫cdmagpr s.dll,如:
stop gpr s server:停止服務;
do send user data:向DTU發送數據;
do close one user:關閉一個DTU終端,令其下線;
do read proc:讀數據,層服務接收到DTU發送的數據后。會向啟動服務函數中指定的DSC的窗口發送消息,該窗口中的消息響應函數應立即調用讀數據函數將DTU發送過來的數據讀出;
start gpr s server:該函數用于啟動底層服務,服務啟動后才能和DTU要訊;啟動該服務后,主窗口要有響應消息的函數,以和底層服務通訊;
do close all user:關閉所有的在線DTU終端。
在Windows中可直接調用API函數LoadLibrary裝載動態庫:
#define MYMESS WM_USER+0x23∥定義用戶消息char mess[512];
HMODULE hDllMudule;∥指向動態庫的句柄Int(*start_cdma_server) (HWND,int,int,char*);∥定義一個指向函數的地址的指針
hDllModule=LoadLibrary(“cdma_dll.dll”);
If (hDllModule! =NULL)∥判斷調用是否成功
{start_cdma_server=GetProcAddress (hDllModule,”
start_cdma_server”);∥從動態庫取函數地址
if (start! =NULL),∥判斷是否取到該函數地址
{if ((*start_cdma__server) (this - >m_hWnd,MYMESS,5002,mess)==0)
MessageBox(“啟動成功”);
Else MessageBox (“啟動失敗”);
}}
動態庫裝載后,可從動態庫中取出要調用的函數地址;取到地址后,就可以執行該函數以實現啟動服務、停止服務、接收數據、發送數據等功能。土壤墑情數據庫可選擇開放源碼的MySQL數據庫,也可以選用Microsoft SQL Sever 2000數據庫,兩種數據庫都可擴展,可用于實現數據分析、歷史數據查詢、火災和水災的預警等功能。
4 結束語
本文介紹了一種基于CDMA 1X的嵌入式森林土壤溫濕度數據采集方案。該系統具有很高的可靠性和實用性。使用時,用戶也可根據實際需要對相關模塊進行裁減和組合,因此,基于CDMA1X的嵌入式無線采集系統,作為一個發展方向,具有廣闊的應用前景。