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