吳麗娟 曾石峭 成蓮 陳子凡
?
基于物聯(lián)網(wǎng)平臺(tái)的食品實(shí)驗(yàn)室溫度監(jiān)測(cè)系統(tǒng)*
吳麗娟 曾石峭 成蓮 陳子凡
(河源市食品檢驗(yàn)所)
為實(shí)現(xiàn)食品實(shí)驗(yàn)室溫度監(jiān)測(cè)的自動(dòng)化和智能化,研究一種基于OneNET物聯(lián)網(wǎng)的溫度監(jiān)測(cè)系統(tǒng),采用樹莓派3B和DS18B20溫度檢測(cè)器,將采集到的溫度數(shù)據(jù)通過無線網(wǎng)絡(luò),推送到物聯(lián)網(wǎng)平臺(tái),用戶可通過互聯(lián)網(wǎng)或手機(jī)APP查看溫度數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明:系統(tǒng)讀取的溫度數(shù)據(jù)誤差在4.5%以內(nèi),能夠滿足食品實(shí)驗(yàn)室溫度監(jiān)測(cè)使用要求。
溫度監(jiān)測(cè);食品實(shí)驗(yàn)室;物聯(lián)網(wǎng)
中小型食品實(shí)驗(yàn)室一般按照溫度控制操作規(guī)程,由工作人員定時(shí)查看溫度計(jì),并記錄溫度數(shù)據(jù)。有些大型實(shí)驗(yàn)室利用自動(dòng)化溫度監(jiān)測(cè)系統(tǒng)實(shí)時(shí)檢測(cè)溫度變化。黃建輝提出使用AT89S52單片機(jī)設(shè)計(jì)實(shí)驗(yàn)室溫度監(jiān)測(cè)系統(tǒng),采用LED屏幕輸出溫度,設(shè)置報(bào)警功能[3]。朱蘭采用基于ZigBee技術(shù)的CC2530芯片,構(gòu)建無線溫度監(jiān)測(cè)平臺(tái),利用SQL數(shù)據(jù)庫保存數(shù)據(jù),并將各節(jié)點(diǎn)數(shù)據(jù)上傳保存在平臺(tái)主機(jī)[4]。茆玉辰等人提出使用樹莓派與LabVIEW智能實(shí)驗(yàn)室系統(tǒng)在局域網(wǎng)內(nèi)實(shí)時(shí)連接,對(duì)實(shí)驗(yàn)室進(jìn)行監(jiān)控和管理[5]。
本文提出一種基于物聯(lián)網(wǎng)的樹莓派溫度監(jiān)測(cè)系統(tǒng),可以跨平臺(tái)查看實(shí)時(shí)數(shù)據(jù),具有數(shù)據(jù)保存和查詢功能。
樹莓派第三代B型(以下簡(jiǎn)稱為樹莓派3B),安裝Debian Linux系統(tǒng),使用16 GB的TF內(nèi)存卡[6]。檢測(cè)程序采用Debian Linux的Python 3.0編寫。
溫度傳感器DS18B20通過GPIO總線連接到樹莓派3B;分布在實(shí)驗(yàn)室4、5層各監(jiān)測(cè)點(diǎn)的樹莓派3B通過自帶的WiFi網(wǎng)卡接入無線路由器登錄互聯(lián)網(wǎng);溫度監(jiān)測(cè)程序定時(shí)向OneNET推送溫度數(shù)據(jù),溫度數(shù)據(jù)以數(shù)據(jù)流的模式存儲(chǔ)于OneNET平臺(tái)。工作人員可以通過瀏覽器進(jìn)入物聯(lián)網(wǎng)平臺(tái),也可以使用手機(jī)登錄OneNET平臺(tái)App查看數(shù)據(jù)。檢測(cè)原理圖如圖1所示。
樹莓派3B為一個(gè)裸露的PCB主板,用作調(diào)試和演示,直觀方便,但在實(shí)驗(yàn)室的復(fù)雜條件下,則需要一個(gè)保護(hù)外殼,提高穩(wěn)定性和安全性。密閉式的保護(hù)外殼只保留電源接口和探頭接口,電源線和數(shù)據(jù)線接合處采用硅膠套進(jìn)行密封,使樹莓派與實(shí)驗(yàn)室環(huán)境隔絕。樹莓派3B使用mini USB口便于手機(jī)充電器供電。溫度探頭連接采用3節(jié)式3.5 mm插頭母座,更換溫度探頭方便,數(shù)據(jù)傳輸穩(wěn)定。
不銹鋼管封裝的DS18B20傳感器有3個(gè)引腳接線,地線、供電線和數(shù)據(jù)線。根據(jù)DS18B20的使用說明,分別與樹莓派GPIO總線的Ground、GPIO4和3V3引腳連接,線路圖如圖2所示。由于DS18B20的輸出信號(hào)電壓較高,連接在樹莓派GPIO總線上會(huì)造成損壞[7],因此在供電線與數(shù)據(jù)線之間接入電壓拉低電阻,阻值為4.7 kΩ。
圖1 檢測(cè)原理圖
圖2 DS18B20與樹莓派3B接線圖
大部分的云服務(wù)系統(tǒng),在數(shù)據(jù)推送后,由數(shù)據(jù)庫軟件保存和分析數(shù)據(jù)。但由于數(shù)據(jù)庫軟件界面不夠直觀,如果在Web網(wǎng)頁圖形化顯示,還需要額外的Web編程。OneNET平臺(tái)的應(yīng)用編輯模式,提供了簡(jiǎn)單實(shí)用的界面設(shè)計(jì)程序,并且可以對(duì)坐標(biāo)軸進(jìn)行自定義修改,便于觀察溫度變化。
登錄OneNET平臺(tái),新建立一個(gè)產(chǎn)品,填入溫度監(jiān)測(cè)裝置的信息,并添加溫度監(jiān)測(cè)設(shè)備,創(chuàng)建數(shù)據(jù)流、定義數(shù)據(jù)流的上傳模式,對(duì)每個(gè)數(shù)據(jù)流進(jìn)行命名和分類。完成產(chǎn)品信息模塊填寫后,進(jìn)入APIkey設(shè)置,為推送數(shù)據(jù)的設(shè)備注冊(cè)一個(gè)APIkey,該信息是設(shè)備在服務(wù)器上的唯一識(shí)別號(hào),數(shù)據(jù)流通過APIkey認(rèn)證上傳至平臺(tái)。進(jìn)入應(yīng)用編輯器編輯頁面,添加應(yīng)用曲線圖到編輯區(qū)域,設(shè)置關(guān)聯(lián)樹莓派設(shè)備,選用溫度數(shù)據(jù)流,調(diào)整軸顯示的數(shù)據(jù)量為360,其余數(shù)值默認(rèn),保存退出。
2.3.1協(xié)議選擇
溫度數(shù)據(jù)上傳模式由物聯(lián)網(wǎng)平臺(tái)支持的協(xié)議決定,OneNET平臺(tái)支持EDP、MQTT、HTT和TCP等透?jìng)鲄f(xié)議,且溫度監(jiān)測(cè)數(shù)據(jù)不需要對(duì)數(shù)據(jù)進(jìn)行反饋操作,本文采用HTTP協(xié)議對(duì)數(shù)據(jù)進(jìn)行封裝傳輸。HTTP協(xié)議可支持上傳整數(shù)型、浮點(diǎn)數(shù)、字符串、JSON格式和二進(jìn)制共5種數(shù)據(jù)。為方便計(jì)算和讀取數(shù)據(jù)精度要求,本文采用浮點(diǎn)數(shù)進(jìn)行傳輸。
2.3.2溫度讀取程序
在樹莓派3B的TF內(nèi)存卡安裝最新版的Debian Linux系統(tǒng),啟動(dòng)系統(tǒng)后,打開WiFi接入互聯(lián)網(wǎng)。在python命令行界面,執(zhí)行系統(tǒng)更新命令:
apt-get update
apt-get upgrade
如果沒有更新有可能會(huì)導(dǎo)致命令錯(cuò)誤。
安裝DS18B20傳感器的驅(qū)動(dòng)模塊,輸入以下命令:
sudo modprobe w1-gpio
sudo modprobe w1-therm
進(jìn)入系統(tǒng)目錄查看連接的DS18B20是否被識(shí)別
cd /sys/bus/w1/devices/
ls
如果安裝成功會(huì)出現(xiàn)28-xxxxxxxxxxx的目錄。
在根目錄下,建立一個(gè)temp.py文件,根據(jù)DS18B20的說明,編寫如下語句讀取探頭的溫度:
tfile = open("/sys/bus/w1/devices/28-xxxxxxxxxxx/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split(" ")[1]
tempdata = secondline.split(" ")[9]
temp = float(tempdata[2:])
temp = temp / 1000
print "溫度: %.1f" %temp
運(yùn)行該程序,如果返回溫度數(shù)據(jù),則說明溫度讀取成功。
2.3.3數(shù)據(jù)推送程序
參考設(shè)備HTTP協(xié)議上傳數(shù)據(jù)到OneNET接口規(guī)范,下載基本格式模板進(jìn)行修改,以適合樹莓派上溫度數(shù)據(jù)上傳。新建POST.PY,輸入以下語句:
# -*- coding:utf-8 -*-
import json
import datetime
import urllib2
APIKEY = 'XXXXXXXXXXXX' #語句中的X為網(wǎng)站注冊(cè)時(shí)提供的APIKEY
def get_temp():
temp = 25 #運(yùn)作成功后,將該段改成溫度讀取程序的語句
return temp
def http_put():
temp = get_temp()
Cur Time = datetime.datetime.now()
url='http://api.heclouds.com/devices/YYYYYYYY/ZZZZ' # Y為網(wǎng)站中個(gè)人設(shè)備的編號(hào),Z為路徑名
values={'datastreams':[{"id":"temp","ZZZZ":[{"at":CurTime.isoformat(),"value":temp}]}]} # ZZZZ為網(wǎng)站中個(gè)人設(shè)備的路徑
print "時(shí)間:%s" %CurTime.isoformat()
print "溫度值: %.1f" %temp
jdata = json.dumps(values)
print jdata
request = urllib2.Request(url, jdata)
request.add_header('api-key', APIKEY)
request.get_method = lambda:'POST'
request = urllib2.urlopen(request)
return request.read()
while True:
time.sleep(5)
resp = http_put()
print "上傳結(jié)果: %s" %resp
time.sleep(5)
運(yùn)行該程序,如果最后返回上傳結(jié)果數(shù)值25,則數(shù)據(jù)上傳程序成功。
2.3.4環(huán)境設(shè)置
利用樹莓派的系統(tǒng)管理員賬號(hào)PI登錄系統(tǒng),運(yùn)行計(jì)劃任務(wù)程序,輸入語句:
crontab –l
默認(rèn)使用nano程序打開,進(jìn)入計(jì)劃任務(wù)界面,按照文件里說明,編寫自動(dòng)執(zhí)行語句。
*/5 * * * * /usr/bin/python
/home/pi/POST.py >/dev/null 2>&1
保存后退出nano,重啟樹莓派3B。
使用瀏覽器登錄OneNET,可以看到每隔5 min就有溫度數(shù)據(jù)推送到服務(wù)器上,在設(shè)置好的曲線圖上生成溫度曲線。6月7日14點(diǎn)至15點(diǎn)間監(jiān)測(cè)到的數(shù)據(jù)如圖3所示。
圖3 溫度數(shù)據(jù)曲線圖
將DS18B20溫度傳感器放入樣品保存冰箱,冰箱放有計(jì)量合格的玻璃溫度計(jì)。每隔30 min讀取溫度監(jiān)測(cè)系統(tǒng)和溫度計(jì)的溫度,記錄10個(gè)測(cè)量值進(jìn)行對(duì)比,如表1所示。
表1 溫度測(cè)量數(shù)據(jù)對(duì)比表
由表1可知:溫度監(jiān)測(cè)系統(tǒng)測(cè)量值的相對(duì)誤差小于4.5%,測(cè)量精度符合實(shí)驗(yàn)室10%使用要求。
食品實(shí)驗(yàn)室溫度監(jiān)測(cè)系統(tǒng)使用溫度傳感器DS18B20監(jiān)測(cè)溫度,監(jiān)測(cè)精度滿足使用要求。利用樹莓派3B將數(shù)據(jù)上傳到互聯(lián)網(wǎng)云服務(wù)器,可以使用網(wǎng)頁和手機(jī)APP查看實(shí)時(shí)溫度,使得實(shí)驗(yàn)室溫度監(jiān)測(cè)工作更加自動(dòng)化和智能化,節(jié)省大量的人力資源。在后續(xù)開發(fā)過程中,可添加控制功能,連接無線電源開關(guān)、空調(diào)、抽濕機(jī)和加熱器等,達(dá)到控制溫度、濕度的需要;在觸發(fā)條件功能上,可連接火焰探測(cè)器、煙霧探測(cè)器、有毒氣體探測(cè)器等,形成檢測(cè)報(bào)警功能。
[1] 周菁楠.遠(yuǎn)程對(duì)醫(yī)院實(shí)驗(yàn)室溫度優(yōu)化監(jiān)控仿真[J].計(jì)算機(jī)仿真,2017,34(5):327-330.
[2] 中國合格評(píng)定國家認(rèn)可委員會(huì).CNAS-CL01: 2006檢測(cè)和校準(zhǔn)實(shí)驗(yàn)室能力認(rèn)可準(zhǔn)則[EB/OL]. https://www.cnas.org.cn/ rkgf/sysrk/jbzz/2015/06/868982.shtml.
[3] 黃建輝.實(shí)驗(yàn)室溫度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].海峽科學(xué),2017 (2):31-32.
[4] 朱蘭.一種基于CC2530的實(shí)驗(yàn)室設(shè)備溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].江蘇科技信息,2016(14):72-74.
[5] 茆玉辰,張宸烽,史洪瑋.基于LabVIEW的智慧實(shí)驗(yàn)室的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2017,13(16):46-48.
[6] 張利民,鄒益民.一種基于樹莓派及Yeelink的溫室控制實(shí)驗(yàn)裝置[J].工業(yè)儀表與自動(dòng)化裝置,2017(6):108-111,127.
[7] 王寧,張雷,張征.FatFS在離線溫度監(jiān)控系統(tǒng)上的應(yīng)用[J].電子世界,2014(12):379-380.
Food Laboratory Temperature Monitoring System Based on Internet of Things Platform
Wu Lijuan Zeng Shiqiao Cheng Lian Chen Zifan
(Food Inspection Institute of Heyuan)
In order to achieve automation and intellectualization of temperature monitoring in food laboratories, a temperature monitoring system based on OneNET Internet of things is studied. By using the DS18B20 temperature detector in stainless steel and Raspberry PI 3B, the temperature data was collected and pushed to the Internet of things on the Internet by wireless network, and the users can use web page or mobile phone to check the temperature data. The error of the temperature data read by this system is within 4.5%, it can meet the requirement of temperature monitoring in food laboratory.
Temperature Monitoring; Food Laboratory; Internet of Things
吳麗娟,女,1976年生,大學(xué)本科,主要研究方向:食品實(shí)驗(yàn)室管理。
陳子凡(通信作者),男,1981 年生,大學(xué)本科,高級(jí)工程師,主要研究方向:實(shí)驗(yàn)室儀器分析。E-mail:chenzifan@21cn.com
廣東省河源市社會(huì)發(fā)展科技計(jì)劃(河科000847)