冉 述,曾 維,楊劍鋒,楊 雪,丁中濤,譚 浩
(成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 610000)
在城市信息化浪潮與數(shù)據(jù)科學(xué)崛起的共同推動(dòng)下,智慧城市開始在全球范圍內(nèi)成為未來城市發(fā)展的新理念與新實(shí)踐[1],物聯(lián)網(wǎng)技術(shù)是智慧城市獲取數(shù)據(jù)和控制設(shè)備不可或缺的手段;而溫度這一物理量無處不在、無時(shí)不在。將溫度用電子技術(shù)和計(jì)算機(jī)技術(shù)數(shù)字化,并借助于計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程監(jiān)測(cè)、甚至大數(shù)據(jù)分析,對(duì)各行各業(yè),尤其是智慧城市、工業(yè)智能都有積極意義。
目前,測(cè)量方法和數(shù)據(jù)的傳輸方式多樣,測(cè)溫方法主要有:① 熱電效應(yīng)測(cè)溫,利用這種方法的溫度傳感器主要是熱電偶,發(fā)展較早,技術(shù)較為成熟,至今仍是應(yīng)用最廣泛的溫度傳感器,其弊端是線性度不佳,參考端需要溫度補(bǔ)償[2]。② 熱阻效應(yīng)測(cè)溫,利用感溫元件電阻隨溫度變化的特點(diǎn),達(dá)到溫度檢測(cè)目的。這類元件如鎳、鉑電阻,陶瓷熱敏電阻等,其優(yōu)點(diǎn)是耐高溫、穩(wěn)定性好,弊端在于隨著傳輸線路長度的改變需要溫度補(bǔ)償。物聯(lián)網(wǎng)傳輸數(shù)據(jù)方法主要有:ZigBee無線傳感技術(shù)[3],傳輸距離遠(yuǎn)、網(wǎng)絡(luò)拓?fù)淠芰?qiáng)、功耗低,缺點(diǎn)在于需要專用的硬件設(shè)備和軟件系統(tǒng),開發(fā)難度大,開發(fā)周期長,成本高,穿透能力差。WiFi無線數(shù)據(jù)傳輸[4],普及率高,能直接聯(lián)通互聯(lián)網(wǎng),傳輸速率快,可靠性好,無線網(wǎng)絡(luò)的搭建簡(jiǎn)單,缺點(diǎn)是功耗較大。
為了適應(yīng)溫度監(jiān)測(cè)環(huán)境的多樣、多變、復(fù)雜,本文設(shè)計(jì)了基于WiFi(Wireless Fidelity)的多路溫度采集系統(tǒng)[5-6]。WiFi是一種短程無線傳輸技術(shù),傳輸速率高,在信號(hào)較弱和有干擾時(shí),可調(diào)整帶寬,能有效地保障數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性。WiFi局域網(wǎng)普及率高,搭建和拓展簡(jiǎn)單,只需要將傳感器節(jié)點(diǎn)接入WiFi局域網(wǎng)即可實(shí)現(xiàn)無線傳感網(wǎng)絡(luò)的建設(shè),比起傳統(tǒng)的無線傳感網(wǎng)絡(luò)需要各種專用的硬件、軟件,大大降低了成本。
本設(shè)計(jì)核心處理器為樂鑫信息科技公司專為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)的高性能無線SOC─ESP8266EX[7-10],如圖1所示,所有傳感器節(jié)點(diǎn)通過WiFi連接到無線路由器,與計(jì)算機(jī)組成局域網(wǎng),在局域網(wǎng)內(nèi)計(jì)算機(jī)的上位機(jī)軟件(數(shù)據(jù)顯示、分析軟件)搭建SERVER,傳感節(jié)點(diǎn)通過TCP/IP協(xié)議連接到計(jì)算機(jī)并向計(jì)算機(jī)POST設(shè)備ID、時(shí)間和溫度數(shù)據(jù)。同時(shí)計(jì)算機(jī)將顯示和保存這些數(shù)據(jù),并能夠通過上位機(jī)軟件分析這些數(shù)據(jù)。
在能接入互聯(lián)網(wǎng)的情況下,傳感節(jié)點(diǎn)向局域網(wǎng)發(fā)送數(shù)據(jù)完成后,建立與云服務(wù)器(YeeLink)的TCP/IP連接,并向其POST數(shù)據(jù)。
手持設(shè)備和計(jì)算機(jī)可以在任意有網(wǎng)絡(luò)的地方,連接到云服務(wù)器查看所有傳感節(jié)點(diǎn)的數(shù)據(jù)。
圖1 系統(tǒng)設(shè)計(jì)結(jié)構(gòu)
傳感節(jié)點(diǎn)設(shè)計(jì)如圖2(a)所示,其中數(shù)字溫度傳感器選用DS18B20,用作熱電偶參考端溫度補(bǔ)償;信號(hào)放大、濾波、ADC轉(zhuǎn)換;整個(gè)傳感節(jié)點(diǎn)開發(fā)階段采用Micro USB接口供電,批量生產(chǎn)可用3節(jié)1.5 V干電池供電,經(jīng)降壓、穩(wěn)壓芯片ASM117-3V3和濾波電路后,為ESP8266-12E提供穩(wěn)定的3.3 V直流電壓;另外,ESP8266-12E通過USB轉(zhuǎn)串口芯片CH340與計(jì)算機(jī)連接僅用于開發(fā)階段的固件燒錄和調(diào)試。實(shí)物圖如圖2(b)所示。
圖 2 傳感節(jié)點(diǎn)設(shè)計(jì)與實(shí)物
熱電勢(shì)由兩部分組成:帕爾帖(Peltier)效應(yīng)產(chǎn)生的接觸電勢(shì)和湯姆遜(Thomson)效應(yīng)產(chǎn)生的溫差電勢(shì)[11-12]??傠妱?dòng)勢(shì)與電子密度和接觸點(diǎn)的溫度有關(guān),當(dāng)材料一定時(shí),電子密度隨溫度的變化而變化,所以總電勢(shì)可看作溫度T和T0的函數(shù)差,即:
EAB(T,T0)=f(T)-f(T0)。
(1)
當(dāng)冷端溫度固定式f(T0)成為常數(shù),對(duì)確定的材料,其總電勢(shì)就只與熱端溫度有關(guān),于是可以通過測(cè)量總電勢(shì)來得到熱端溫度T的值。根據(jù)測(cè)溫范圍和成本,本設(shè)計(jì)選用上海自動(dòng)化儀表三廠生產(chǎn)的WRNT-1熱電偶,標(biāo)準(zhǔn)K型熱電偶,測(cè)量范圍為0~600 ℃。選用德州儀器(TI)公司的運(yùn)放芯片LM321作為該部分電路的核心器件,它是一種單通道、高性價(jià)比的解決方案,具有杰出的電源利用效率和速度,擁有1 MHz的帶寬和0.4 V/μs的轉(zhuǎn)換速率,主要應(yīng)用于低電壓(2.7~5.5 V)、體積要求嚴(yán)格的場(chǎng)合。查K型熱電偶分度表得,0~600℃時(shí)熱電偶的輸出電勢(shì)為0~24.905 mV,ADC的測(cè)量范圍為0~1 V,所以設(shè)計(jì)的信號(hào)放大倍數(shù)約為40倍。考慮到使用環(huán)境的干擾情況,低通濾波器截止頻率設(shè)計(jì)約為50 Hz。電路原理如圖3所示。
圖 3 弱電信號(hào)放大電路圖
其中,放大倍數(shù):
(2)
低通濾波器的截止頻率:
(3)
采用ESP8266集成的ADC,該ADC精度為10 bit,模擬輸入電壓范圍為0~1 V。具有2種功能,測(cè)量VDD3P3的電源電壓和測(cè)量TOUT管腳6的輸入電壓,在這里測(cè)量TOUT管腳6的輸入電壓。其實(shí)現(xiàn)方法如下:電源電壓使用經(jīng)過穩(wěn)壓濾波的3.3 V電壓;設(shè)置vdd33_const值為33,范圍:18~36;使用系統(tǒng)接口編程,其函數(shù)接口為uint16 system_adc_read(void);返回TOUT管腳6的輸入電壓,單位:1/1 024 mV。需注意:在ESP8266發(fā)包時(shí)不可使用ADC,否則將會(huì)導(dǎo)致電壓值的不準(zhǔn)確。
由于ADC測(cè)量的是放大后的電勢(shì),所以需要工程量變換,將ADC測(cè)得的電壓值還原為具有意義的量綱:
(4)
式中,Ymax、Ymin為被測(cè)溫度電勢(shì)的上下限;Nmax、Nmin為ADC的上下限,Yx為ADC測(cè)得電勢(shì)Nx對(duì)應(yīng)的被測(cè)溫度電勢(shì)。
在使用補(bǔ)償導(dǎo)線延長后的熱電偶電路示意圖如圖4所示。
圖 4 熱電偶電路示意圖
再采用新型兩端集成器補(bǔ)償法,利用高精度單總線數(shù)字溫度傳感器DS18B20測(cè)出參考端溫度T0,并送回CPU,然后在固件軟件中實(shí)現(xiàn)補(bǔ)償。其原理為熱電偶的中間溫度定律:
EAB(T,T0)=EAB(T,0)-EAB(T0,0),
(5)
式中,EAB(T,T0)為ADC實(shí)際測(cè)得的電勢(shì),EAB(T0,0)可根據(jù)DS18B20測(cè)出的T0在熱電偶分度表中查出,由此可以計(jì)算出EAB(T,0 ),再通過查表即可得到工作端溫度T。經(jīng)查閱資料得K型熱電偶0~600 ℃的溫度曲線采用四次多項(xiàng)式擬合效果最好,其擬合方程如下:
T=α4E4+α3E3+α2E2+α1E+α0,
(6)
式中,系數(shù)α4,α3,α2,α1,α0由K型熱電偶的分度表和最小二乘法求得,分別為:0,-0.001 8,-0.008 8,24.852 6,-0.575 8,在處理時(shí),為提高運(yùn)算速度,可將公式 改寫為:
T={[(α4E+α3)E+α2]E+α1}E+α0;
(7)
用同樣的方法求得:
E={[(β4T+β3)T+β2]T+β1}T+β0,
(8)
式中,系數(shù)β4,β3,β2,β1,β0由K型熱電偶的分度表和最小二乘法求得,分別為:0,0,0,0.040 2,0.025 4。最后按照?qǐng)D5所示流程圖處理傳感器數(shù)據(jù),求得所測(cè)溫度值。
圖 5 數(shù)據(jù)擬合流程圖
設(shè)置模塊的工作模式[13]:
WiFi_set_opmode(0x01); //設(shè)置WiFi模塊的工作模式為Station。
配置WiFi的接口參數(shù):
user_set_station_config(void) //設(shè)置WiFi Station的接口配置參數(shù)
{
char ssid[32] = "TP-LINK_28DB06"; //設(shè)置連接路由器的ssid
char password[64] = "fanren008"; //設(shè)置連接路由器的無線接入密碼
struct station_config my_config; //定義接口參數(shù)結(jié)構(gòu)體
my_config.bssid_set = 0; //設(shè)置為不檢查AP的MAC
os_memcpy(&my_config.ssid,ssid,32);
os_memcpy(&my_config.password,password,64);
WiFi_station_set_config(&my_config);
}
本軟件是在基于Linux的Ubuntu桌面操作系統(tǒng)上搭建Qt開發(fā)平臺(tái)。信號(hào)與槽式Qt的核心機(jī)制,本軟件設(shè)計(jì)中大量使用。
信號(hào)指當(dāng)對(duì)象改變其狀態(tài)時(shí),該對(duì)象發(fā)送的消息。并且對(duì)象本身不需要知道誰接收這個(gè)信號(hào)。槽用于接收信號(hào),只是普通的對(duì)象成員函數(shù)。槽也不知道是否有任何信號(hào)與自己連接,同時(shí)對(duì)象也不了解具體的通信機(jī)制。信號(hào)與槽的連接是通過QObject 的connect() 成員函數(shù)來實(shí)現(xiàn)的,當(dāng)信號(hào)發(fā)射時(shí),調(diào)用連接的槽。
為使改軟件能與傳感節(jié)點(diǎn)通信,采用了TCP/IP通信協(xié)議,SERVER的搭建,基于面向連接的socket編程,其服務(wù)器端的搭建方法為:創(chuàng)建套接字(socket),將套接字綁定到一個(gè)本地地址和端口,并設(shè)置為監(jiān)聽模式準(zhǔn)備接收客戶端的請(qǐng)求,當(dāng)請(qǐng)求到來后,接收連接請(qǐng)求,用返回的套接字和客戶端進(jìn)行通信[14-16]。其代碼實(shí)現(xiàn)如下所示:
tcpServer = new QTcpServer;
tcpServer->listen(QHostAddress::LocalHost,8989);
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(connect_slot()));
tcpSocket = tcpServer->nextPendingConnection();
在MySQL數(shù)據(jù)庫下創(chuàng)建數(shù)據(jù)庫system,然后在system數(shù)據(jù)庫下創(chuàng)建表data,該表主要用于存儲(chǔ)傳感器上傳的數(shù)據(jù),設(shè)計(jì)字段包括:
Id:主鍵,類型int;
Condition:存儲(chǔ)傳感器狀態(tài),類型Boolean;
Number:存儲(chǔ)傳感器編號(hào),類型int;
Temperature:存儲(chǔ)溫度值,類型double;
Time:存儲(chǔ)數(shù)據(jù)上傳時(shí)間,類型datetime;
Address:存儲(chǔ)傳感器地址,類型string;
Isno:存儲(chǔ)傳感器的狀態(tài),類型Boolean。
通過c++相應(yīng)的模塊來連接數(shù)據(jù)庫,當(dāng)TCP服務(wù)端接收到客戶端的信息,先對(duì)數(shù)據(jù)進(jìn)行判斷,然后再把數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫。在前端展示數(shù)據(jù)時(shí),只需要調(diào)用api在數(shù)據(jù)庫里查詢符合條件的數(shù)據(jù)并顯示出來。如最新數(shù)據(jù),是按照時(shí)間來查找,找到時(shí)間最近的一條數(shù)據(jù)顯示出來。數(shù)據(jù)分析功能可以按照時(shí)間和傳感器來篩選數(shù)據(jù),可以計(jì)算出不同時(shí)間段和不同傳感器溫度的均值、方差和范圍等,也可以實(shí)現(xiàn)對(duì)所有傳感器溫度的數(shù)據(jù)分析。圖6是在計(jì)算機(jī)軟件中呈現(xiàn)的是傳感器上傳的最新數(shù)據(jù),并根據(jù)預(yù)警閾值顯示警報(bào)狀態(tài)(其中綠色為正常,紅色為高溫)。后續(xù)版本中可對(duì)傳感器進(jìn)行激活和休眠控制,并顯示工作狀態(tài),詳情如圖6所示。
圖6 計(jì)算機(jī)軟件顯示實(shí)驗(yàn)結(jié)果
向云服務(wù)器POST數(shù)據(jù),與IP為42.96.164.52端口為80的服務(wù)器建立TCP/IP連接[17-18],最后得到如圖7所示云服務(wù)器數(shù)據(jù)展示。
圖7 云服務(wù)器數(shù)據(jù)展示圖
按照以下格式向該端口發(fā)送數(shù)據(jù)(注意相鄰數(shù)據(jù)上傳間隔必須大于等于10 s,過于頻繁會(huì)收到406錯(cuò)誤):
POST /v1.0/device/
Host: api.yeelink.net
U-ApiKey:0609d9ef2b260cc2032c4441694ac8c8
Content-Length:data_length注釋:數(shù)據(jù)長度
{
"timestamp":"2012-03-15T16:13:14",
"value":294.34
}注釋:timestamp和value 為數(shù)據(jù)索引
同步所有時(shí)鐘,將測(cè)溫探頭與二等標(biāo)準(zhǔn)水銀溫度計(jì)放入實(shí)驗(yàn)室可調(diào)恒溫烘箱或者冰水混合物,調(diào)節(jié)烘箱溫度,傳感節(jié)點(diǎn)數(shù)據(jù)變化為延時(shí)基準(zhǔn),水銀溫度計(jì)溫度顯示數(shù)據(jù)穩(wěn)定為溫度誤差基準(zhǔn)。系統(tǒng)功能性測(cè)試顯示界面如圖6、圖7所示,能實(shí)現(xiàn)本地和云端的數(shù)據(jù)采集顯示、存儲(chǔ),本地?cái)?shù)據(jù)分析等功能;性能測(cè)試結(jié)果如表1與表2所示。從實(shí)驗(yàn)測(cè)試數(shù)據(jù)可以看出,該多路溫度采集系統(tǒng)的誤差和延遲較小。
表1 系統(tǒng)溫度采集誤差測(cè)試(單位:℃)
標(biāo)準(zhǔn)讀數(shù)0.7523.5684.45111.24193.51272.14351.63433.78509.93597.25系統(tǒng)采集讀數(shù)2.5424.2384.89111.64193.88272.45351.76433.58509.55596.79誤差1.790.670.440.400.370.310.13-0.20-0.38-0.46
表2 系統(tǒng)采集時(shí)延測(cè)試(單位:s)
測(cè)試編號(hào)12345678910本地PC延遲0.70.30.50.90.50.60.41.20.60.5云服務(wù)器延遲3.21.42.45.31.61.71.41.51.61.4
在大量查閱有關(guān)溫度測(cè)量、無線數(shù)據(jù)傳輸相關(guān)資料的基礎(chǔ)上,設(shè)計(jì)了一種基于K型熱電偶和WiFi的多路溫度采集系統(tǒng)。該系統(tǒng)由傳感節(jié)點(diǎn)、上位機(jī)軟件、云服務(wù)平臺(tái)組成。完成了硬件電路設(shè)計(jì)、印制電路板制作、電路焊接、固件程序編寫調(diào)試、上位機(jī)軟件設(shè)計(jì)、數(shù)據(jù)推送到云平臺(tái)等工作。由系統(tǒng)測(cè)試結(jié)果可知,該系統(tǒng)具有搭建容易、擴(kuò)展簡(jiǎn)單、穩(wěn)定性好、精度高等特點(diǎn),能滿足普通工業(yè)智能和智慧城市的實(shí)際應(yīng)用。