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