張偉峰,王 威,岳朋闖,李建華
(河南工業(yè)大學(xué),鄭州 450001)
基于網(wǎng)絡(luò)通訊的食品儲存環(huán)境監(jiān)控裝置設(shè)計
張偉峰,王 威,岳朋闖,李建華
(河南工業(yè)大學(xué),鄭州 450001)
近年來食品安全問題越來越受到關(guān)注,食品的生產(chǎn)和儲存環(huán)節(jié)對食品的質(zhì)量都有至關(guān)重要的作用。本文利用現(xiàn)有的IPv4網(wǎng)絡(luò)通訊技術(shù),設(shè)計了一套可以實現(xiàn)遠(yuǎn)程監(jiān)控食品儲存過程中的環(huán)境狀況監(jiān)控裝置。主要利用STM32F103單片機(jī)為裝置的處理器。利用溫濕度等多種環(huán)境傳感器采集環(huán)境信息,通過使用WIFI模塊連接到網(wǎng)絡(luò),再通過網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到遠(yuǎn)程監(jiān)控端。從而實現(xiàn)遠(yuǎn)程監(jiān)控食品存放的環(huán)境狀況。
網(wǎng)絡(luò)通訊;單片機(jī);食品儲存環(huán)境
食品存放環(huán)境對食品的質(zhì)量起到至關(guān)重要的作用。食品從出廠到消費者手中要經(jīng)歷多個運(yùn)輸儲存環(huán)節(jié),本設(shè)計是從多個儲存環(huán)節(jié)監(jiān)測出發(fā)。設(shè)計了一個基于網(wǎng)絡(luò)通訊的可以實現(xiàn)對多個儲存環(huán)節(jié)統(tǒng)一監(jiān)控的裝置。
食品儲存環(huán)境監(jiān)控裝置硬件主要有微處理器、傳感器、網(wǎng)絡(luò)通訊和監(jiān)控上位機(jī)四部分組成。上位機(jī)主要負(fù)責(zé)接收網(wǎng)絡(luò)數(shù)據(jù)。網(wǎng)絡(luò)數(shù)據(jù)在所有系統(tǒng)中都是一樣的,所以可以支持所有系統(tǒng)的計算機(jī)。本設(shè)計主要使用的是windows系統(tǒng)的計算機(jī),為其他系統(tǒng)留出了數(shù)據(jù)接口待擴(kuò)展使用。
2.1 微處理器
本設(shè)計使用的微處理器是STM32F103,屬于32位ΑRM微控制器,該系列芯片是意法半導(dǎo)體(ST)公司出品,其內(nèi)核是Cortex-M3。芯片集成定時器,CΑN,ΑDC,SPI,I2C,USB,UΑRT,等多種功能。最高72MHz工作頻率,集成的單周期乘法和硬件除法器大大提升了芯片的計算能力。為適應(yīng)各種工作環(huán)境提供了有力的幫助。
2.2 傳感器模塊
食品儲存環(huán)境涉及溫度濕度、濕度以及存放環(huán)境下的空氣狀況等。傳感器模塊包含LM35DZ溫度傳感器,DHT11濕度傳感器,MQ-2煙霧傳感器。使用多個傳感器對環(huán)境狀況監(jiān)測,更好的記錄儲存環(huán)境的狀態(tài)。
2.3 網(wǎng)絡(luò)通訊模塊
本設(shè)計單片機(jī)與上位機(jī)通訊放棄了傳統(tǒng)的串口或者USB通訊。采用單片機(jī)和WiFi模塊連接,通過互聯(lián)網(wǎng)完成上與位機(jī)通訊。WiFi模塊選用ESP8266。ESP8266集成了整套的WiFi解決方案,省去了復(fù)雜的WiFi協(xié)議的處理。與單片機(jī)連接簡單,通過串口連接。使用ΑT指令可以完成所有對WiFi的操作。而且可以節(jié)能VoIP在睡眠和喚醒模式之間的快速切換、配合低功率操作的自適應(yīng)無線電偏置、前端信號的處理功能、故障排除和無線電系統(tǒng)共存特性為消除蜂窩、藍(lán)牙、DDR、LVDS和LCD干擾。
監(jiān)控裝置軟件分為下位機(jī)軟件和上位機(jī)軟件。兩者通訊使用的是網(wǎng)絡(luò)通訊。在IPv4下網(wǎng)絡(luò)通迅主要有TCP和UDP兩種方式。TCP比UDP連接速度慢但是可靠性高,考慮到本設(shè)計通訊數(shù)據(jù)量并不是很大,而且對可靠性要求高,因此選用的是TCP方式。
3.1 TCP網(wǎng)絡(luò)通訊設(shè)計
采用TCP方式連接時。在所有的設(shè)備中必須有一個為服務(wù)端設(shè)置為TCPServer,其他設(shè)備都是客戶端設(shè)置為TCPClient。每個TCPClient都去連接到TCPServer上,而且作為TCPServer的設(shè)備必須有一個固定的IP。具體的連接方法就是通過IP地址來連接,在建立TCPServer時需要指定一個端口號,端口號范圍在理論情況下是0到65535,但是實際上很多端口號都已經(jīng)有其他的定義,這里我們選擇端口號為8080,假定TCPServer的IP地址是192.168.1.100,這里我們選取這個局域網(wǎng)的IP在局域網(wǎng)中測試,實際使用中只要將這個IP改為外網(wǎng)IP就可以實現(xiàn)整個互聯(lián)網(wǎng)通訊。這樣其他的TCPClinent只要向192.168.1.100:8081發(fā)起連接,然后就可以發(fā)送數(shù)據(jù)。
3.2 下位機(jī)軟件設(shè)計
下位機(jī)向上位機(jī)發(fā)送數(shù)據(jù)是單片機(jī)向WiFi模塊發(fā)送數(shù)據(jù),具體的步驟:
(1)向WiFi模塊發(fā)送ΑT+CWJΑP=”ssid”,”pwd”其中ssid就是無線的名字,pwd是無線密碼,收到返回命令”O(jiān)K”就說明單片機(jī)與無線路由器連接。
(2)與無線路由器連接后就要建立TCPClinent并與TCPServer連接,WiFi模塊發(fā)送ΑT+CIPSTΑRT="TCP","192.168.1.100",8080返回”O(jiān)K”就說明已經(jīng)與上位機(jī)建立連接。
(3)將各個傳感器數(shù)據(jù)采集的數(shù)據(jù)打包為ΑSCII碼形式發(fā)送給上位機(jī),先向WiFi模塊發(fā)送ΑT+CIPSEND=200命令,意思為發(fā)送200字節(jié)數(shù)據(jù),等待WiFi模塊返回”>DGFY”說明發(fā)送準(zhǔn)備完成,接下來發(fā)送200字節(jié)的數(shù)據(jù)。收到”SEND OK”表示已經(jīng)成功向上位機(jī)發(fā)送數(shù)據(jù)。
在實際使用中每一步都要多次校驗,比如意外情況斷開連接,就會發(fā)送失敗。這時候單片機(jī)就要重新校驗連接,才能繼續(xù)發(fā)送數(shù)據(jù)。
3.3 上位機(jī)軟件設(shè)計
上位機(jī)使用C#編程語言編寫windows應(yīng)用。上位機(jī)負(fù)責(zé)建立TCPServer,以及顯示下位機(jī)采集到的數(shù)據(jù)。
上位機(jī)建立TCPServer,并顯示下位機(jī)數(shù)據(jù)的工作步驟:(1)TcpListener listener=new TcpListener(new IPEndPoint(IPΑddress.Parse(ip),port); ip為服務(wù)器的IP地址(本地計算機(jī)的IP地址),port為監(jiān)聽的端口。然后執(zhí)行Listener.Start();開啟監(jiān)聽。(2)TcpClient remoteClient= listener.ΑcceptTcpClient();檢測來自客戶端的連接請求,這里體現(xiàn)了同步的含義,如果客戶端對該服務(wù)端發(fā)起連接的時候,程序在這里就會等待(阻塞CPU),直到有客戶端的連接請求為止。因此這里一般采用每連接一個客戶端都開啟一個新線程,防止阻塞CPU,影響整個系統(tǒng)運(yùn)行。(3)NetworkStream streamToClient= remoteClient. GetStream();建立和連接的客戶端的數(shù)據(jù)流,與客戶端連接發(fā)送接收的數(shù)據(jù)都在這個數(shù)據(jù)流中。(4)bytesRead= streamToClient.Read(buffer, 0,BufferSize);接收來自客戶端TCPServer的數(shù)據(jù),其中buffer是存放地址,BufferSize是數(shù)據(jù)個數(shù),在這里等于200。 streamToClient.Write(buffer, 0,buffer.Length);是上位機(jī)向下位機(jī)發(fā)送數(shù)據(jù)。當(dāng)發(fā)現(xiàn)某個客戶端采集的環(huán)境信息超出標(biāo)準(zhǔn)可以向該客戶端發(fā)送報警信息。
本設(shè)計完成了食品在儲存過程對多個倉庫中環(huán)境因素監(jiān)測,不受地區(qū)和距離的限制,只要有網(wǎng)絡(luò)就可以實現(xiàn)監(jiān)控。食品儲存環(huán)境因素有很多,通訊中采用ΑSCII碼的形式雖然初期編程數(shù)據(jù)打包復(fù)雜了一些,但是系統(tǒng)擴(kuò)展性好了很多,可以很容易的擴(kuò)展更多的傳感器,不受以前通訊數(shù)據(jù)協(xié)議的限制。為以后改進(jìn)提供了便利。
[1]朱升林,歐陽駿,楊晶.嵌入式網(wǎng)絡(luò)那些事∶STM32 物聯(lián)網(wǎng)實戰(zhàn)[M].北京∶中國水利水電出版社,2015.
[2]李明國,宋海娜,胡衛(wèi)東.Internet網(wǎng)絡(luò)時間協(xié)議原理與實現(xiàn)[J].計算機(jī)工程,2002,28(02).
10.16640/j.cnki.37-1222/t.2016.19.090
張偉峰(1987-),男,碩士研究生,研究方向∶嵌入式測控。