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