摘 要:傳統(tǒng)的檢視方法不僅費時費力,更無法準(zhǔn)確掌握未抽檢農(nóng)產(chǎn)品的情況,因此設(shè)計了一種基于ESP32-CAM的農(nóng)產(chǎn)品包裝免拆封預(yù)檢預(yù)視系統(tǒng)。系統(tǒng)前端采用ESP32-CAM實現(xiàn)現(xiàn)場封裝前的拍照上傳功能,服務(wù)器端在存儲照片后向前端推送生成的二維碼并將其打印、粘貼在包裝箱上,方便檢查人員和購買者直接通過掃描二維碼來獲取農(nóng)產(chǎn)品裝箱時的原始情況,實現(xiàn)對裝箱農(nóng)產(chǎn)品在免拆封情況下的預(yù)檢預(yù)視。由此可知,該系統(tǒng)有利于保證農(nóng)產(chǎn)品質(zhì)量,保障消費者權(quán)益,促進(jìn)農(nóng)產(chǎn)品消費。
關(guān)鍵詞:農(nóng)產(chǎn)品;免拆封;預(yù)檢預(yù)視;二維碼;ESP32-CAM;翻轉(zhuǎn)裝置
中圖分類號:TP391;S24 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2025)02-00-04
0 引 言
近年來,隨著全球農(nóng)產(chǎn)品貿(mào)易的不斷增長和市場需求的不斷擴大,包裝箱在農(nóng)產(chǎn)品運輸和儲存中起著至關(guān)重要的作用。在物流鏈中,為了確保產(chǎn)品質(zhì)量,封裝在包裝箱中的農(nóng)產(chǎn)品也面臨著各種檢視與監(jiān)管。
傳統(tǒng)的檢視方法往往需要打開包裝箱,由人工直接觀察包裝箱內(nèi)部的產(chǎn)品情況。拆箱抽檢不僅費時費力,更無法準(zhǔn)確掌握未抽檢農(nóng)產(chǎn)品的情況,只能依靠推測,不確定性極高,難以保障產(chǎn)品質(zhì)量。
本文提出了一種實現(xiàn)農(nóng)產(chǎn)品免拆封預(yù)檢預(yù)視的方法,其基本思路是:在農(nóng)產(chǎn)品封裝現(xiàn)場,利用攝像頭拍攝農(nóng)產(chǎn)品封裝時的原始情況并上傳到信息系統(tǒng)中,并提供二維碼,便于檢查人員和購買者掃碼獲得原始信息。通過這種方式,推動農(nóng)產(chǎn)品經(jīng)營者誠信經(jīng)營,賦予檢查人員免拆封預(yù)檢能力,為購買者提供購前免拆封預(yù)視手段,進(jìn)而提升農(nóng)產(chǎn)品在物流、銷售環(huán)節(jié)的管理水平和用戶體驗。
1 總體方案設(shè)計
本系統(tǒng)由翻轉(zhuǎn)裝置、嵌入式前端和后端信息系統(tǒng)3部分組成。系統(tǒng)結(jié)構(gòu)如圖1所示。其中,翻轉(zhuǎn)裝置的主要作用是對農(nóng)產(chǎn)品的包裝箱進(jìn)行上下面翻轉(zhuǎn),使得機器能夠?qū)Πb箱上下兩面的農(nóng)產(chǎn)品情況進(jìn)行拍攝;嵌入式前端以ESP32-CAM作為主控制器[1],使用攝像頭實現(xiàn)拍攝功能,通過外接小型觸摸屏進(jìn)行操作,連接打印機,由Python實現(xiàn)軟件功能[2],將拍攝數(shù)據(jù)上傳至后端信息系統(tǒng),打印回傳的二維碼[3];后端信息系統(tǒng)在數(shù)據(jù)庫和文件系統(tǒng)中存儲相關(guān)數(shù)據(jù),并通過Web應(yīng)用提供數(shù)據(jù)管理界面和鏈接解析服務(wù),以便用戶掃描二維碼時可以顯示對應(yīng)的拍攝信息,后端信息系統(tǒng)可通過公網(wǎng)IP或?qū)⑵洳渴鹪诠性破脚_為檢查人員和購買者提供訪問服務(wù)。
2 翻轉(zhuǎn)裝置設(shè)計
翻轉(zhuǎn)裝置能夠?qū)b箱抬起并進(jìn)行翻轉(zhuǎn),使攝像頭能夠拍攝到箱內(nèi)的細(xì)節(jié)。設(shè)計過程中考慮了機構(gòu)的穩(wěn)定性、可靠性和操作的便捷性,以確保包裝箱能夠順利翻轉(zhuǎn)并保持穩(wěn)定。包裝箱剖面如圖2所示。
在對包裝箱內(nèi)農(nóng)作物拍照前,用戶通過裝置上的把手推動連桿,將左右支撐桿撐開,伸入如圖3所示的包裝箱透氣孔中,對包裝箱進(jìn)行支撐和夾持。支撐桿在包裝箱中起到分隔上下兩面和放置農(nóng)作物的作用,并在一面農(nóng)作物拍照完成并封箱后,利用手柄將包裝箱進(jìn)行180°翻轉(zhuǎn),對包裝箱的另一面進(jìn)行同樣的裝箱、拍照、封裝操作。
包裝箱翻轉(zhuǎn)裝置可以將包裝箱從不同角度翻轉(zhuǎn),便于攝像頭拍攝箱內(nèi)的各個角落,無死角檢測包裝箱的內(nèi)部情況,同時可以減少人工操作的干預(yù),減少誤差和降低風(fēng)險。
3 嵌入式前端設(shè)計
3.1 ESP32-CAM簡介
ESP32-CAM 是一款強大的物聯(lián)網(wǎng)開發(fā)板,集成了ESP32芯片和OV2640 200萬像素攝像頭模塊,支持最高1 600×1 200像素的靜態(tài)圖像捕捉和視頻流輸出,它內(nèi)置WiFi和藍(lán)牙功能,支持IEEE 802.11b/g/n WiFi協(xié)議和藍(lán)牙4.2協(xié)議棧,可以進(jìn)行無線數(shù)據(jù)傳輸和遠(yuǎn)程控制,具有較好的通信和計算能力并支持Arduino IDE開發(fā)。本系統(tǒng)使用ESP32-CAM便可實現(xiàn)拍照上傳功能。
3.2 前端結(jié)構(gòu)與開發(fā)環(huán)境
前端結(jié)構(gòu)如圖4所示。
選擇帶I2C(Inter-Integrated Circuit)接口的小型OLED顯示屏來顯示系統(tǒng)當(dāng)前狀態(tài)和操作提示。I2C是一種串行通信總線,使用多主從架構(gòu)。I2C使用2條雙向漏極開路線。其中一條線為傳輸數(shù)據(jù)的串行數(shù)據(jù)線(Serial Data Line, SDA),連接GPIO26;另一條線是啟動或停止傳輸以及發(fā)送時鐘序列的串行時鐘線(Serial Clock Line, SCL),連接GPIO27。SDA和SCL連接完成后需要安裝u8g2庫進(jìn)行顯示屏驅(qū)動,其針對Arduino內(nèi)存小的特點,使用分時顯示的方式,只需占用較小內(nèi)存就可以驅(qū)動比較大的屏幕。
在GPIO12~GPIO15端口連接按鈕實現(xiàn)對拍照、打印的控制,GPIO12~GPIO15通常用于連接SPI總線的MISO、MOSI、SCLK和CS引腳,由于本系統(tǒng)使用I2C接口連接顯示器,所以它們也可以用作一般的輸入引腳。
在存儲方面,ESP32-CAM支持容量最大4 GB的TF卡,所以我們選擇用它來完成照片和二維碼的存儲。
Arduino IDE是一個用于編寫和上傳代碼到Arduino微控制器板的開發(fā)工具,適用于Windows、macOS和Linux操作系統(tǒng)。其提供了一些預(yù)定義的庫和函數(shù),用于控制各種輸入和輸出設(shè)備,如LED、電機、傳感器等。它具有平臺開源、跨平臺支持、強大的庫和函數(shù)支持、廣泛的硬件支持等優(yōu)點。
首先在PC端安裝 Arduino IDE,并設(shè)置開發(fā)環(huán)境,添加所需的ESP32-CAM開發(fā)板數(shù)據(jù)包,以及WiFi庫、攝像頭庫和Web庫等,并對ESP32-CAM進(jìn)行識別。之后將ESP32-CAM連接到PC上,在所使用的PC端安裝CH340驅(qū)動,后根據(jù)圖5連接CH340與ESP32-CAM。CH340是一款通用的USB轉(zhuǎn)串口芯片,可以使用USB接口將ESP32-CAM連接到上位機,從而進(jìn)行編程和調(diào)試。驅(qū)動程序安裝完成后,可以使用CH340連接ESP32-CAM,將ESP32-CAM的UOR和UOT端口分別用杜邦線連接到CH340的TX和RX端口,然后將ESP32-CAM的GND端口連接到CH340的GND端口。需要注意的是,IO0和GND短接時為下載模式,斷開時為運行模式,所以在開發(fā)時需要將IO0與GND短接。之后將CH340與PC連接。安裝完成后,由于需要將拍攝的照片上傳至服務(wù)器,所以要設(shè)置WiFi連接參數(shù),包括SSID和密碼,便于將ESP32-CAM連接到本地網(wǎng)絡(luò)。隨后創(chuàng)建1個異步網(wǎng)絡(luò)服務(wù)器端口上的對象,并初始化攝像頭模塊,燒錄程序,當(dāng)ESP32連接網(wǎng)絡(luò)后,將出現(xiàn)以HTTP開頭的地址鏈接,點擊該鏈接即可看到攝像頭拍攝的圖像。
3.3 圖片拍攝與上傳
要實現(xiàn)拍照上傳功能,需將待上傳圖像保存為JPEG格式。ESP32-CAM內(nèi)置WiFi模塊,采用TCP/IP協(xié)議,以保證圖像能完整傳輸,且在傳輸過程中需對圖像進(jìn)行壓縮。將圖像上傳到服務(wù)器,就需要在程序中設(shè)置WiFi網(wǎng)絡(luò)的SSID、密碼和服務(wù)器上傳照片的端點,每次拍攝完成后,從攝像頭幀緩存ESP32的“HTTPClient”庫上傳圖像,并將圖像類型設(shè)置為JPEG,發(fā)送圖片后返回“成功”或“失敗”,之后釋放攝像頭幀緩存并斷開連接。
3.4 回傳二維碼打印
當(dāng)上傳的圖片在服務(wù)器端成功生成二維碼后,ESP32-CAM通過發(fā)起HTTPGET請求從服務(wù)器獲取二維碼的圖像數(shù)據(jù),在程序中指定服務(wù)器的IP地址及提供包含二維碼圖像的URL,獲取二維碼圖像數(shù)據(jù)后,可以選擇將二維碼顯示在連接的OLED顯示屏上,或直接打印。
若要將二維碼打印并制作成可粘貼標(biāo)簽,則根據(jù)需要打印的標(biāo)簽要求,使用PIL庫中的Image.resize()函數(shù)來調(diào)整二維碼圖片的尺寸;之后在打印設(shè)備上,準(zhǔn)備一個與標(biāo)簽尺寸匹配的模板,設(shè)置合適的頁面大小,將調(diào)整尺寸后的二維碼圖片粘貼到標(biāo)簽?zāi)0宓奈恢蒙?,確保二維碼圖片的尺寸不超過標(biāo)簽的可打印區(qū)域;最后連接打印設(shè)備,并根據(jù)打印設(shè)備的要求設(shè)置打印參數(shù),如紙張大小、打印質(zhì)量等,即可完成二維碼的打印,并將其粘貼在封裝好的包裝箱指定位置上。
4 后端信息系統(tǒng)設(shè)計
4.1 后端架構(gòu)
后端架構(gòu)如圖6所示。
在軟件設(shè)計中,選擇Windows操作系統(tǒng),使用Python編寫代碼,并通過Flask框架來搭建服務(wù)器,采用MySQL進(jìn)行數(shù)據(jù)存儲管理。Flask框架是一個輕量級Python Web框架,它具有簡單而直觀的API,易于學(xué)習(xí)和使用,適用于快速開發(fā)和構(gòu)建各種規(guī)模的Web應(yīng)用程序,簡潔、易用且具有擴展性。
4.2 上傳圖片管理
當(dāng)ESP32-CAM攝像頭拍攝圖片后,將采集的圖像數(shù)據(jù)保存到內(nèi)存中,之后對圖像進(jìn)行編碼與上傳。建立服務(wù)器的HTTP(S)連接,將編碼后的圖像數(shù)據(jù)通過POST方法上傳至服務(wù)器,信息包含:文件名、文件路徑、拍攝時間。保存圖片URL及二維碼等后,等待服務(wù)器響應(yīng),以確認(rèn)圖像是否上傳成功,圖7為拍攝上傳示意圖。
用戶需要通過自己的賬號密碼登錄進(jìn)入主界面,在主界面即可通過點擊“打開攝像頭”按鍵進(jìn)入拍照界面,拍攝完包裝前的物品后,使用翻轉(zhuǎn)裝置轉(zhuǎn)動包裝箱,再對另一面物品進(jìn)行拍攝,若對拍攝結(jié)果不滿意,可重新拍攝。拍攝完成后,系統(tǒng)上傳圖片至服務(wù)器,并返回圖片和對應(yīng)的二維碼,由用戶校驗。若拍攝的圖片能夠反映包裝內(nèi)物品的狀態(tài),則可打印二維碼,將打印的二維碼粘貼到包裝箱指定位置上。
管理員可以管理用戶信息及照片信息,在管理員界面,可以看到前端上傳的二維碼相關(guān)信息,也能夠?qū)π畔⑦M(jìn)行修改和刪除,同時還能通過輸入拍攝時間、用戶信息等進(jìn)行搜索。
檢查人員和購買者通過掃描包裝箱上的二維碼,即可獲取對應(yīng)包裝箱內(nèi)的圖片和相關(guān)信息。
4.3 二維碼生成
二維碼是用某種特定的幾何圖形,按照一定規(guī)律在二維平面上分布的黑白相間的圖形。二維碼在代碼編制上巧妙地利用了二進(jìn)制“0”“1”的概念,使用若干與二進(jìn)制相對應(yīng)的幾何形體來表示文字和數(shù)字信息,通過圖像輸入設(shè)備或光電掃描設(shè)備自動識讀信息,以實現(xiàn)信息的自動處理。目前常用的二維碼有:Data Matrix、QR Code、Maxicode、Code 49等。本系統(tǒng)二維碼選用QR Code。
預(yù)視二維碼是整個系統(tǒng)的核心,在農(nóng)產(chǎn)品生產(chǎn)、運輸、和銷售環(huán)節(jié)不可或缺。在生產(chǎn)階段,農(nóng)產(chǎn)品裝箱時,需要將二維碼貼在包裝箱上;運輸階段,檢查人員可通過掃描二維碼對封裝的農(nóng)產(chǎn)品進(jìn)行預(yù)檢;銷售階段,不論是銷售者還是消費者,都可以通過掃描包裝上的二維碼對當(dāng)前包裝箱內(nèi)的農(nóng)作物進(jìn)行預(yù)視,查看農(nóng)產(chǎn)品的原始外觀和尺寸,判斷該農(nóng)產(chǎn)品是否滿足自己的購買要求。
QR Code庫[4]是一個用于生成和解析二維碼的Python庫,它允許通過調(diào)用函數(shù)或使用命令行調(diào)用程序來生成二維碼,可以指定文本、URL、電話號碼、圖像或其他信息作為輸入,且QR Code庫具備容錯能力,可以自動修復(fù)由于噪聲或破壞而導(dǎo)致的錯誤,這使得生成的二維碼具有一定程度的彈性和健壯性[5-7]。
為了使通過ESP32-CAM上傳的圖片生成二維碼,需要在服務(wù)器端導(dǎo)入QR Code庫,確認(rèn)圖片上傳成功后,將其存儲到一個變量中。QR Code庫會將輸入的數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制格式,然后根據(jù)QR碼規(guī)范和錯誤糾正級別來對數(shù)據(jù)進(jìn)行分塊和編碼處理。之后QR Code庫會使用相應(yīng)算法來選擇最佳的掩碼模式,用于增加識別難度和提高容錯能力。在生成二維碼圖像之前,QR Code庫會根據(jù)規(guī)范對二進(jìn)制數(shù)據(jù)進(jìn)行布局和填充,包括在二維碼周圍添加特定的定位圖案、對齊圖案和定時圖案,以及在數(shù)據(jù)區(qū)域中插入格式信息和版本信息,一旦布局和填充完成,QR Code庫將根據(jù)二進(jìn)制數(shù)據(jù)的布局創(chuàng)建出一個矩陣,矩陣的每個單元格代表1個黑色或白色的模塊,用于構(gòu)成最終的二維碼圖像[8-11]。二維碼掃描結(jié)果如圖8所示。
5 結(jié) 語
本文設(shè)計了一種基于ESP32-CAM的農(nóng)產(chǎn)品預(yù)檢預(yù)視系統(tǒng),該系統(tǒng)利用機械翻轉(zhuǎn)裝置對包裝箱進(jìn)行翻轉(zhuǎn),借助ESP32-CAM實現(xiàn)拍攝及圖片上傳,也可以在封箱前使用攝像頭對包裝箱內(nèi)部進(jìn)行拍照。攝像頭可以捕捉到包裝箱內(nèi)部的細(xì)節(jié)。隨后系統(tǒng)將圖片上傳到服務(wù)器轉(zhuǎn)化為二維碼,并將其粘貼到包裝箱的表面。生成的二維碼包含有關(guān)包裝箱內(nèi)部狀況的信息。掃描二維碼后,相關(guān)人員可以迅速獲取包裝箱內(nèi)部的情況,識別潛在問題并及時采取必要措施。
但系統(tǒng)仍有許多改進(jìn)的地方:
(1)翻轉(zhuǎn)裝置可以利用電機驅(qū)動,實現(xiàn)快速、穩(wěn)定的翻轉(zhuǎn),提高預(yù)檢預(yù)視的效率和準(zhǔn)確性;
(2)可以在傳輸過程中添加加密算法,并通過身份認(rèn)證系統(tǒng)進(jìn)行驗證,提高安全性。
農(nóng)產(chǎn)品生產(chǎn)、運輸和銷售環(huán)節(jié)都要用到包裝箱,而免拆封農(nóng)產(chǎn)品預(yù)檢預(yù)視系統(tǒng)對于追溯農(nóng)產(chǎn)品質(zhì)量源頭、保障消費者權(quán)益、提升誠信經(jīng)營水平和促進(jìn)農(nóng)產(chǎn)品消費具有一定的推動作用。
參考文獻(xiàn)
[1]呂嫄.基于ESP32-CAM的無線監(jiān)控小車系統(tǒng)設(shè)計[J].科學(xué)技術(shù)創(chuàng)新,2023(24):1-4.
[2]張俊,李銀,張紫瑞,等.樹莓派智能花卉澆灌系統(tǒng)設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2023,19(19):107-109.
[3]劉強,李廣,聶志剛,等.二維碼標(biāo)簽在農(nóng)產(chǎn)品包裝中的應(yīng)用研究[J].中國包裝工業(yè),2015(16):74-75.
[4]岐艷芳.基于Python的個性二維碼設(shè)計與實現(xiàn)[J].科技視界,2019(15):96-97.
[5]趙國棟,郭鋒,周洋.國產(chǎn)嵌入式操作系統(tǒng)的I2C驅(qū)動設(shè)計與實現(xiàn)[J].電腦編程技巧與維護(hù),2023(1):56-58.
[6]管小衛(wèi).基于Python的二維碼生成與識別[J].科學(xué)技術(shù)創(chuàng)新,2020(25):99-100.
[7]李超,徐云龍,華中偉,等.一種基于Python Flask的Web服務(wù)器端設(shè)計[J].信息與電腦(理論版),2019(8):87-88.
[8]何鵬陽.針對以農(nóng)副產(chǎn)品銷售為主的農(nóng)村物流建設(shè)分析[J].中國集體經(jīng)濟,2021(12):120-122.
[9]王建,梁振濤,鄭文斌,等. STM32和OV2640的嵌入式圖像采集系統(tǒng)設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2014,14(9):46-48.
[10]梁世何,莊嘉豪.常見二維碼印制方式的比較與分析[J].中國自動識別技術(shù),2023(4):73-78.
[11]劉懷北.基于物聯(lián)網(wǎng)技術(shù)的食品安全溯源系統(tǒng)[J].軟件導(dǎo)刊,2012,11(9):99-100.
作者簡介:王 宏(1968—),男,碩士,副教授,研究方向為物聯(lián)網(wǎng)技術(shù)、模式識別、信創(chuàng)行業(yè)應(yīng)用。
王曉波(1998—),男,碩士,研究方向為物聯(lián)網(wǎng)技術(shù)、模式識別。
姚 帥(1997—),男,碩士,研究方向為物聯(lián)網(wǎng)技術(shù)、人工智能應(yīng)用。
收稿日期:2024-01-16 修回日期:2024-02-28
基金項目:2018教育部產(chǎn)學(xué)合作協(xié)同育人項目(201802224022);陜西省學(xué)位與研究生教育研究項目(SXGERC2023085)