基于CY7C68013A的無線多路溫度采集系統(tǒng)設(shè)計與開發(fā)
0 引言
溫度采集系統(tǒng)在現(xiàn)代工業(yè)和農(nóng)業(yè)領(lǐng)域有著極其廣泛的應(yīng)用,在某些特殊環(huán)境下,采集的溫度必須通過無線電波才能傳輸出來。傳統(tǒng)的無線溫度采集系統(tǒng)一般只能在終端進(jìn)行顯示,沒有上位機(jī)數(shù)據(jù)采集存儲功能。本文設(shè)計與開發(fā)了一套無線傳輸多路溫度采集系統(tǒng),該系統(tǒng)由溫度采集端和溫度接收端兩部分組成。溫度采集端由DS18B20溫度傳感器,AT89C52單片機(jī)和NRF24L01無線發(fā)射模塊組成,八枚DS18B20溫度傳感器獲取數(shù)字溫度信號后,傳輸給主控AT89C52單片機(jī),然后通過NRF24L01無線模塊將數(shù)據(jù)通過2.5GHz的載波發(fā)送出來。接收端由CY7C68013A單片機(jī)、LCD12864顯示模塊、NRF24L01無線接收模塊和上位機(jī)組成。NRF24L01無線接收模塊將溫度采集端發(fā)送過來的數(shù)據(jù)送至CY7C68013A單片機(jī),然后通過USB2.0總線上傳給上位機(jī)進(jìn)行溫度數(shù)據(jù)采集和存儲,同時把溫度數(shù)據(jù)送至LCD12864進(jìn)行實時顯示。
1 系統(tǒng)硬件設(shè)計
系統(tǒng)總體框架如圖1所示。溫度采集端的8枚溫度傳感器采集將溫度數(shù)據(jù)送入主控芯片AT89C52,再通過NRF24L01無線模塊將數(shù)據(jù)發(fā)送出來。溫度接收端的NRF24L01無線模塊將收到的溫度數(shù)據(jù)送至CY7C68013A單片機(jī),然后通過USB2.0總線提交給上位機(jī)。
(1)溫度采集端。溫度采集端由8枚DS18B20溫度傳感器,AT89C52單片機(jī)和NRF24L01無線發(fā)射模塊組成。8枚DS18B20溫度傳感器共用一個總線與AT89C52單片機(jī)的P2.2口連接。每個DS18B20都具有唯一的64位二進(jìn)制ROM代碼作為識別序列號,利用唯一的序列號可以分別讀出各個DS18B20的溫度,這在多路采集中應(yīng)用非常方便,大大減少了I/O口的
占用。利用DS18B20的此特征,本系統(tǒng)也可以非常方便的擴(kuò)展為16路或32路溫度采集。NRF24L01無線模塊與單片機(jī)的P3.2口~P3.7口連接,負(fù)責(zé)將8路溫度數(shù)據(jù)通過2.5GHz的載波發(fā)送出來。本文所采用的是基于挪威VLSI公司出品的無線數(shù)字傳輸芯片NRF24L01開發(fā)的無線收發(fā)模塊,其豐富資料,硬件上無需附加其他元件,直接通過相應(yīng)接口與單片I/O端口相連即可由單片機(jī)控制使用,非常方便。
(2)CY7C68013A系統(tǒng)模塊。溫度接收端的主控芯片為CY7C68013A,其為美國CYPRESS公司推出的功能強(qiáng)大的USB2.0接口芯片,內(nèi)建增強(qiáng)型51單片機(jī),是USB2.0設(shè)備常用的主控芯片。CY7C68013A的系統(tǒng)模塊電路圖如圖3所示,其中LT1763CS8—3.3為3.3V穩(wěn)壓芯片,負(fù)責(zé)將USB接口的5V電壓轉(zhuǎn)換為CY7C68013A工作所需的3.3V電壓。AT24C08為I2C總線的E2PROM存儲芯片,其容量為8K,用來存儲CY7C68013A的固件程序。
(3)LCD顯示模塊與無線接收模塊。為了讓溫度接收端實時直觀顯示溫度數(shù)據(jù),本系統(tǒng)設(shè)置了LCD12864液晶模塊,LCD12864工作在串行顯示模式,由CY7C68013A通過PD0~PD2端口控制顯示,PA0~PA7端口控制數(shù)據(jù)的傳輸。NRF24L01無線接收模塊與CY7C68013A的PB0~PB5端口連接,負(fù)責(zé)接收溫度采集端發(fā)來的無線溫度數(shù)據(jù)。圖4 LCD顯示模塊與無線接收模塊電路圖。
2.系統(tǒng)軟件設(shè)計
系統(tǒng)軟件的開發(fā)包含了溫度采集端AT89C52和溫度接收端CY7C68013A的固件程序開發(fā)、CY7C68013A的windows驅(qū)動程序開發(fā)以及USB上位機(jī)應(yīng)用程序的開發(fā)。對于溫度接收端的CY7C68013A的固件、驅(qū)動和上位機(jī)的程序的開發(fā),我們可以利用CYPRESS公司提供的開發(fā)包,縮短開發(fā)周期,提高開發(fā)效率。
溫度采集端的AT89C52的固件程序主要完成對8枚DS18B20溫度采集的控制和對NRF24L01無線模塊數(shù)據(jù)發(fā)送的控制。為此我們采用TC51語言編寫,開發(fā)環(huán)境為Keil uVision 4.0。其固件程序的主要思路為:先初始化NRF24L01,然后進(jìn)入大循環(huán),從DS18B20讀取溫度數(shù)值(采用默認(rèn)12位精度),將得到的溫度數(shù)據(jù)(2字節(jié)16位)進(jìn)行標(biāo)記,將此數(shù)據(jù)表示的溫度路數(shù)標(biāo)記在高4位(1~8路的數(shù)據(jù)分別對應(yīng)為0000~0111),然后將數(shù)據(jù)寫入發(fā)射數(shù)組,再將溫度發(fā)射出去,經(jīng)過延時溫度發(fā)送完畢。然后循環(huán)切換到下一路DS18B20的ROM地址,繼續(xù)下一路溫度的讀取與發(fā)射。
CY7C68013A的固件程序主要完成對NRF24L01無線模塊的通信控制,將其接收的無線數(shù)據(jù)傳送給LCD12864進(jìn)行實時顯示和上傳給USB上位機(jī)。對于CYTC68013A的固件程序的開發(fā),我們采用了C51語言編寫,開發(fā)環(huán)境為Keil uVision4.0,并利用了CYPRESS公司提供的固件程序框架,免去了編寫一些通用性比較強(qiáng)、模式化的程序,提高了開發(fā)效率。在驅(qū)動程序開發(fā)方面,我們直接利用了CYPRESS公司的SDK中為CY7C68013A提供的通用設(shè)備驅(qū)動程序CYUSB.SYS,其不僅完全符合Windows Driver Foundation規(guī)范,而且還具有兼容USB1.1和USB2.0設(shè)備、支持即插即用和支持高帶寬數(shù)據(jù)傳輸?shù)葍?yōu)點。我們只對CYUSB.SYS通用驅(qū)動程序相匹配的CYUSB.INF文件進(jìn)行相應(yīng)的簡單修改,使其符合我們USB硬件的VID和PID數(shù)值。在上位機(jī)的應(yīng)用程序的開發(fā)方面,我們同樣利用CYPRESS公司SDK中為CY7C68013A提供的功能強(qiáng)大的C++編程接口:CyAPLLib庫函數(shù)。我們選用了Microsoft Visual C++6.0作為開發(fā)工具,通過CyAPLLib函數(shù)與CYUSB.SYS設(shè)備驅(qū)動程序傳遞溫度數(shù)據(jù),并將8路溫度數(shù)據(jù)存入了相應(yīng)的服務(wù)器上的SQL2005數(shù)據(jù)庫,從而實現(xiàn)了溫度數(shù)據(jù)的實時采集和儲存。
3.總結(jié)
本文針對目前無線測溫系統(tǒng)的不足,利用CY7C68013A芯片、NRF24L01無線模塊、DS18B20數(shù)字溫度傳感器等元件設(shè)計與開發(fā)了一套無線傳輸多路溫度采集系統(tǒng)。該系統(tǒng)具有以下優(yōu)點:溫度米集端利用8個DS18B20數(shù)字溫度傳感器進(jìn)行并聯(lián),共用一根I/O總線,不僅大幅度節(jié)約了端口資源,而且非常容易擴(kuò)展為16路和32路溫度采集;溫度接收端采用CY7C68013A芯片為主控CPU,不僅能實現(xiàn)8路溫度數(shù)據(jù)的LCD實時顯示,而且可以與上位機(jī)直接進(jìn)行USB通信,通過上位機(jī)的應(yīng)用程序可以非常方便的對溫度數(shù)據(jù)進(jìn)行圖形顯示、計算分析和上傳數(shù)據(jù)服務(wù)器進(jìn)行儲存。經(jīng)實物測試,該系統(tǒng)測溫精度可達(dá)0.1攝氏度,無線傳輸距離可達(dá)50米,能同時采集8路溫度數(shù)據(jù)。