引言
測溫測量和控制在當今社會生活中扮演著至關重要的角色,國際國內市場現有的多種測溫技術涵蓋了安檢、市 場、生活、消防、科研等諸多領域。溫度的測量和控制在工 業生產中有廣泛的應用,尤其在石油、化工、電力、冶金等 重要工業領域中,對溫度的測量和監控是非常重要的一個環節。在傳統的溫度測量系統中,溫度采集器通常采用模擬溫 度傳感器,模擬信號在傳輸的過程中容易受到干擾從而影響測量的準確度,模擬信號轉化成數字信號,精度較高的A/D 轉換器一般價格昂貴,對于傳統系統存在的不足,結合國內外在溫度監測系統上的研究現狀,本文進行了新的設計。
本文智能測溫系統基于物聯網技術與嵌入式技術實現 遠程無線可移動的視頻監控系統,依托于FS_S5PC100開發 平臺用三星公司先進的基于Cortex-A8 內核的 S5PC100處理 器和無線網卡WI-FI作為硬件載體,綜合應用WLAN、嵌入 式Linux和JSP技術等技術,以程序軟件的通用性和易用性為 方向,實現無線視頻和智能測溫系統控制以及環境信息采集。
圖1 平臺硬件組成結構圖
圖2 系統軟件結構框圖
1 系統總體設計
1.1 平臺設計接口目標與功能
本文設計智能溫度采集系統,需要具備溫度采集、溫 度數據的存儲、溫度數據的顯示和網絡通信功能。因此,平 臺擬設計的接口如下:
圖4 S5PC100 NandFlash電路原理
電路板設計溫度傳感器采集接口1路,溫度傳感器采用 DS18B20一線制通信接口;由于平臺需要對采集的數據存儲 同時又需要存儲本地操作系統代碼,需要有穩定的存儲方 案,因此平臺設計NAND FLASH與SD卡結合的存儲方案, 其中NAND FLASH主要用于存儲本地代碼,SD卡用于存儲 采集數據;系統需要將采集的溫度以及歷史溫度實時的顯示
出來, 因此需要集成圖形顯示接口,系統中采用24bit TFT LCD接口電路;系統為滿足遠程對平臺采集數據訪問功能, 因此集成一路10M/100M 自適應以太網接口;為滿足對溫度 的監控需要,平臺集成一路PWM蜂鳴器接口以及一路RS232 接口,RS232接口可連接GPRS模塊。調試擴展接口:系統應集成1路RS232接口,用于使用控制終端對系統進行調試。課題設計平臺可實現定時溫度采集、顯示 以及溫度超限報警等功能,其主要 工作流程如下:
1.平臺能夠以定間間隔對采集 溫度傳感器數據;
2.采集的溫度數據按時間順序保存在本地數據庫中;
3 。 每次采集溫度與設定溫度上、下限進行比較,當溫度超限后 可發出本地報警或遠程報警信號,本地報警信號通過蜂鳴器報警音實 現 , 遠程報警信號可以通過外接GPRS實現短信報警;
4.平臺具備遠程數據訪問功能,可通過網絡實現對本地數據庫 的訪問。
1.2 平臺的硬件電路各模塊選型
根據平臺的接口和功能需求,將系統按照功能劃分進行模塊化設 計,其個功能模塊的選型如下:
1.2.1 平臺處理器單元
平臺需要具備溫度采集、大容 量數據存儲、網絡通信等功能。因 此,其處理器部分具備運行文件系 統以及網絡協議簇的能力。課題提 出以ARM微控制器為核心處理器的 解決方案,利用ARM微控制器可搭 載操作系統和能夠處理復雜協議族 的能力;降低了系統設計的風險, 提高平臺計的可實施性與靈活性。
ARM微 控 制 器 在 本 系 統 中 的 作用主要是,采集溫度傳感器溫度 值,并實現存儲以及轉發功能。平臺采用三星公司先進的 基于Cortex-A8 內核的 S5PC100處理器設計而成。S5PC100 處理器采用64位內部總線構架,包括強大的硬件加速器, 如:動態視頻處理,顯示控制和縮放。支持多種格式的硬件 編解碼:MPEF-1/2/4、H263/H264、CV-1、DivX。其硬件
圖5 S5PC100 SD卡電路原理圖
圖6 DS18B20與接口原理圖
加速功能支持實時的視頻會議和模擬電視輸出,支持NTSC 和PAL模式的HDMI。S5PC100內部集成了24BIT LCD接口、 TVout接口、Camera輸入接口、4路串口、SD卡接口、SPI、100M網口、USB2.0-OTG接口,USB Host接口、矩陣按鍵掃 描接口、SPI通信、I2C通信接口等硬件資源,適用于有高性 能要求的嵌入式系統應用場合。
在平臺中需要NAND FALSH、SD卡、以太網等復雜接 口的支持,S5PC100具備強大的片內接口,平臺需要的外設 接口通過S5PC100搭載簡單的外部電路即可實現,提高了系 統設計的集成度,因此S5PC100非常適用于本系統。
1.2.2 溫度傳感器
平臺采用美國DALL A S公司生產的DS18B20可組網數 字溫度傳感器。其耐磨耐碰,體積小,使用方便,封裝形 式多樣,適用于各種狹小空間設備數字測溫和控制領域。
DS18B20具有一線通信接口,只需要單根口線即可實現微控 制器通信互聯,極大地簡化了外部溫度傳感器通信線路。 DS18B20具有寬泛的工作電壓和溫度測量范圍,750毫秒內 完成溫度測量,可在-10℃至+85℃范圍達到±0.5℃的測量精 度。DS18B20在出廠時內部集成了唯一的序號, 可用于實現 DS18B20通過一總線進行組網。DS18B20簡化的通信接口以 及便捷的組網方式可降低產品的設計成本,提高系統的靈活 性。目前,DS18B20已經被用于各種環控,設備溫度監控測 量,以及各種溫度測量系統中。
1.3 平臺的硬件電路總體構成
平臺硬件組成如圖1所示。其中核心模塊為S5PC100, DD2 SDRAM、NAND FLASH、TFT LCD、SD卡、RS232接 口均可通過S5PC100內部外設接口直接擴展,以太網接口通 過S5PC100的外部靜態總線接口連接。
1.4 平臺主要軟件方案的選定
在簡單系統中 , 一般采用前 、 后臺編程方式設計軟件,但在復雜的系統中,前后臺方式的軟件設計方法無法滿 足系統的要求,需要網絡協議棧支持、文件系統支持、多進 程支持后,前、后臺軟件由于其超循環編程方法的限制很 難實現系統的功能要求,因此復雜的嵌入式系統往往加入 了嵌入式操作系統的支持。 目前,常用嵌入式操作系統有 VxWorks、WinCE、Linux等。這里我選用的是Linux,它是開 放源代碼的類UNIX操作系統。目前經過長期的發展Linux已 成為世界領先的操作系統,可以運行在服務器、大型機和超 級計算機, 由于Linux的可剪裁性和可移植性,目前也廣泛 應用在嵌入式設備上,如消費電子產品、交換設備、工業控 制等。
Linux具備良好的多進程與多線程支持,并且支持多種 網絡協議、具備豐富的文件系統,并且其開源代碼的特性受 到廣大的開發者支持。
在本系統中采用L inu x操作系統能夠充分利用嵌入式 Linux中成熟的網絡協議簇以及模塊化的剪裁方法,降低系 統軟件的開發難度,提高了系統設計的靈活性。
1.5 系統軟件架構
平臺設計的軟件采用分層以及模塊化的方式進行設計。由于采用嵌入式Linux操作系統作為解決方案。因此, 將軟件劃分為應用層、系統層、驅動層;系統層軟件需要完 成Linux在操作系統上的移植和各個模塊的驅動;應用層軟 件需要完成溫度采集模塊、顯示模塊以及網絡通信模塊的軟 件設計。軟件層次示意圖如圖2所示。
2 系統各主要接口硬件電路設計
圖7 PWM接口蜂鳴器電路連接圖
圖8 Linux系統軟件組織示意圖
2.1 S5PC100存儲系統設計
設計的目標平臺中需要擴展三種類型的存儲介質,分 別為DDR2 SDRAM、NAND FLASH以及SD卡電路。下面按 照三種存儲介質在系統中的功能分別進行闡述。
(1)DDR2 SDRAM電路
S5PC100 SDRAM控制器通過向外部16位或32位SDRAM提供接口來擴展芯片存儲能力。本平臺采用2片K4T1G16416位寬度DD2 SDRAM組成32位內存,容量256MB,如圖3。
(2)NANDFLASH電路與SD卡存儲電路 由于系統需要運行Linux系統,系統代碼較為復雜,需
要一定容量的存儲器存放Linux操作系統源代碼以及應用程 序,由于S5PC100內置了NAND FL ASH控制器,因此平臺 采用K9F2G08 256MB NAND FLASH直接與S5PC100 NAND FLASH控制器接口連接。SD卡可通過S5PC100內置SDIO1總 線直接連接。其NAND FLASH電路原理圖如圖4所示、SD卡 的原理圖如圖5所示。
2.2 溫度傳感器接口
平臺設計了采用DS18B20一線制溫度傳感器接口。采用 S5PC100處理器GPIO引腳接口控制溫度傳感器DS18B20的溫 度測量,LCD屏輸出測量溫度,原理圖如圖6所示。
2.3 溫度報警電路
本 設 計 采 用 軟 件 處 理 報 警 , 利 用 無 源 蜂 鳴 器 進 行 報 警,當所測溫度超限后輸出PWM信號,驅動蜂鳴器報警, 其電路原理圖如圖7所示。
3 系統軟件設計
3.1 Linux操作系統移植
完整的嵌入式linux系統由bootloader、kernel、rootfs等3個基本部分組成。其中bootloader用于引導和裝載操作系統、kernel為linux內核程序、rootfs為文件系統,如圖8。
3.1.1 交叉編譯環境
嵌入式開發系統受到自身硬件以及軟件資源的限制, 無法完成代碼的本地編譯,其開發需要在宿主機上建立交叉 開發環境。
交叉開發環境是包含了編輯器、編譯器、連接器、調 試器和libc庫等的程序環境。在開發嵌入式Linux相關軟件 時,常用的交叉開發工具是GNU工具鏈。系統中宿主機使 用的開發環境為ubuntu12.04操作系統,目標板內核版本號為 標準linux-2.6.35,使用到的交叉編譯器是arm-linux-gcc-4.5.1。
3.1.2 Bootloader程序設計
Bootloader是在操作系統運行前運行的一段專用程序, 可以完成平臺硬件設備的初始化,并能完成引導和調試操作 系統。 Bootloader依賴CPU體系結構,一般將Bootloader按功 能劃分為兩個階段,其中第1階段實現基本硬件電路的初始 化,為操作系統的運行準備環境。在平臺中,由于使用的是 ARM微控制器,因此第一階段需要實現設置處理器進入管 理模式、關閉處理器中斷與快中斷、設置處理器主頻、高速 總線主頻與告訴外設主頻、CPU關閉MMU與數據Cache,初 始化內存控制器,代碼由存儲器自搬運至內存,設置運行程 序需要的臨時堆棧、BSS段清零等工作。第2階段主要實現 進入交互模式或者自引導模式,實現操作系統的加載,一般 要根據操作系統與硬件平臺的需要實現相關硬件的初始化工 作, 如初始化GPIO、串口、網口等外部設備,完成向內核 傳遞啟動參數等功能。
3.1.3 Linux內核的定制
Linux目前已經支持了x86、ARM、MIPS等多種處理器 架構,支持的平臺類型多達3000多種。各種ARM處理器的 設計廠商為了更好地推廣處理器的使用,都會Linux中添加補丁, 使得該處理器能夠在L i nu x 行正常運行。 平臺選用Linux-2.6.35版本,面對大規模的Linux源代碼,我們需要對Linux進行剪裁移植。
Linux源代碼采用模塊化的組織方式,可以通過條件編 譯的方式對Linux源碼的功能進行剪裁,但是條件編譯法裁 剪的是功能模塊,對于具體的硬件驅動和優化就需要對源代 碼進行細微的修改了。
3.1.4 根文件系統的建立
根文件系統是存放各種工具軟件、庫文件、腳本、配 置文件的地方,任何包括這些Linux系統啟動所必須的文件 都可以成為根文件系統。Linux支持jffs2,nfs,cramfs,yaffs2 等多種文件系統。在本系統中使用的Ramdisk文件系統,實 際上是把內存劃出一部分當作硬盤使用,使得程序運行效率 更高。系統中的工具集合采用BusyBox完成,BusyBox 將許多 具有共性的小版本的UNIX工具結合到一個單一的可執行文 件。這樣的集合可以替代大部分常用工具比如GNU fileutils, shellutils等工具,BusyBox提供了一個比較完善的環境,可 以適用于任何嵌入式設備。
3.2 溫度傳感器驅動程序的設計
在Linux中,為實現模型抽象和統一操作接口,設備驅 動程序隱藏了設備的具體細節,向用戶提供了統一的設備接 口。Linux設備驅動運行于內核中,完成直接硬件操作、設 備管理等工作,并向用戶提供了統一的接口模型。Linux下 將設備分為字符、塊和網絡設備三類,同樣設備驅動也分為 字符驅動、塊設備驅動和網絡設備驅動。字符設備面向的設 備是流式設備,如鼠標、鍵盤等;塊設備面向的是需要隨 機存儲的設備,它主要包括硬盤、光驅等存儲設備;其中 DS18B20屬于字符設備。
在字符與塊設備中由一個主設備號和一個次設備號(minor number)標識驅動設備。主設備號用于標識設備類 型,次設備號用于識別同類設備序號。字符驅動程序通過 file_operations結構的指針向用戶程序提供接口抽象。
其內核定義如下:
struct file_operations
{
int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*設備讀*/
int (*write) (struct inode *inode,struct file *filp,char *buf,int
count); /*設備寫*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int
cmd,unsigned int arg); /*I/O控制*/
int (*open) (struct inode *inode,struct file *filp); /*設備打 開*/
void (*release) (struct inode *inode,struct file *filp); /*設備 關閉*/
??????
};
在結構file_operations里,指出了設備驅動程序所提供的 入口點位置,分別是:
read讀操作,完成由應用設備向應用程序傳遞的數據。 write寫操作,完成由應用程序向設備發送的數據。ioctl,進行讀、寫以外的其它命令操作。 open,打開設備準備進行I/O操作。 release,設備釋放操作。 每一個字符設備驅動由一個cdev結構體抽象,具體的驅動的實現由 file_operations實現,用戶程序通過dev_t代表設 備號查找到內核中的cdev,由cdev調用到file_operations,從 而調用到實際的硬件操作函數。
4 結論
本文以便攜式手持溫度測試儀為技術、應用背景,設 計了一套具備溫度測量、數據記錄、LCD顯示以及網絡通信 功能的溫度測試設備。
由于便攜式手持溫度測試儀具有體積小、功耗低同時 又具備較高性能的要求,系統采用了ARM微控制器作為系 統的核心控制單元,并在平臺上移植了Linux操作系統以滿 足系統對聯網、存儲方面的需要。對比眾多的處理器,選用 了三星公司基于Cortex-A8 內核的 S5PC100處理器,圍繞核 心電路設計了溫度采集,大容量存儲、人機交互、以及網絡 通訊等單元電路;在平臺電路的基礎上實現了Linux系統的 移植工作,并完成了這些設備接口電路的驅動移植工作; 在Linux系統下實現了DS18B20的驅動設計工作,并編寫了基 于液晶顯示的測試程序。經過實際測試,應用程序能夠在 Linux下采集DS18B20的溫度數據,并能夠實現在LCD上的顯 示、存儲功能,存儲文件能夠通過網絡的NFS服務導出到PC 端,實現了課題設計的功能。
評論
查看更多