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