楊振宇,劉燕,張萬堯,寇凌峰,劉源
(甘肅農業大學 機電工程學院,甘肅蘭州,730070)
隨著信息技術的不斷發展,人們的生活觀念以及對生活品質的要求也發生了根本性變化。目前,快遞行業已成為城市及農村發展中又一新興市場[1],然而隨著各類病毒與流感的傳播,使我們不得不關注于如何有效阻止和降低快遞投遞過程中病毒的傳播。針對這一情況,本設計對快遞柜做了如下改進:第一,設計了短信發送功能,用戶可以在手機上就看到自己的快遞狀態,節省了時間;第二,柜體加裝機械控制的紫外線消毒燈,從根本上切斷病毒流感的傳播途徑、減小感染風險。
本方案以STM32 單片機為主要控制單元,同時還包含GSM 短信發送部分、OLED 顯示部分、繼電器控制部分、LED 聲光報警系統、供電部分以及機械消毒部分八大部分。單片機系統主要處理內外數據,對按鍵指令進行分析處理,并作出響應[2];OLED 顯示主要將單片機的響應進行顯示;矩陣鍵盤可以用于切換界面、輸入號碼、輸入驗證碼、刪除、選擇儲物柜、確認等;繼電器部分主要根據單片機指令進行開關閉柜門;GSM 模塊主要用于發送驗證碼,實現用戶取快遞;LED 聲光報警是為了快遞的安全設計,當三次輸錯驗證碼,聲光報警則啟動,返回主界面,一分鐘之內不進行存取件;供電部分則為整個存取件系統和消毒模塊進行供電;機械消毒模塊則是通過紫外線消毒燈對快遞實現消殺工作。

圖1 系統框圖
1.2.1 柜格與消毒模塊設計
柜格具備放置快遞及消毒的雙重功能。為避免包裝腐蝕等問題,柜體采用紫外線消毒方式。同時為防止紫外線及臭氧外泄,柜格應具有良好密閉特性,在每一個柜格中按安裝三根紫外線消毒燈并加裝保護罩,進行消毒[3],效果圖如圖2 所示。

圖2 消毒柜體設計
1.2.2 消毒燈的控制
由于紫外線消毒燈不可以照射人體[4],所以在消毒燈的開關控制上選擇采用機械控制,在柜格內安裝消毒燈的觸動開關,在柜門關閉的瞬間連接電路,消毒燈打開并進行消毒,取件時柜門打開、電路斷開,消毒燈隨即關閉、防止對人體造成傷害,確保使用者安全,電路如圖3 所示。

圖3 消毒燈控制電路設計
STM32 單片機主要功能是通過不斷掃描矩陣按鍵獲取輸入數據[5],當數據傳輸給單片機時,單片機對其進行分析處理、輸出指令。輸入數據主要由按鍵進行控制,通過程序設計,按鍵可以完成存取的所有步驟,包括:“選擇存取界面、輸入號碼、輸入驗證碼、刪除、選擇儲物柜、確認等功能模塊”;單片機輸出指令主要通過顯示模塊對用戶的操作進行實時顯示、對繼電器傳輸指令控制繼電器開關、單片機若連續收到三次錯誤驗證碼信息進行聲光報警、當有快遞員完成存件時,系統控制GSM 模塊給收件人手機發送驗證碼[6]。單片機電路如圖4 所示。

圖4 單片機主控系統
OLED 顯示屏采用嵌入式設計,主要用于對快遞柜的運行狀況進行實時顯示[7],顯示用戶輸入號碼、輸入驗證碼、刪除、選擇儲物柜、確認、身份選擇界面、顯示快遞員拿/取選擇界面、用戶拿/取選擇界面、顯示存儲箱型號、空/滿、顯示“請輸入驗證碼”、顯示“請輸入手機號”、顯示“快遞已存好”等情況,并將單片機分析處理的數據進行輸出顯示,對用戶動作進行提示。
快遞柜存取系統由于所需輸入指令較多,為滿足操作人員需要,本系統采用了4×4 矩陣式鍵盤,系統提前將每個按鍵的功能進行設定,矩陣鍵盤工作方式是通過系統編輯的軟件不間斷地掃描矩陣鍵盤按下情況,以保證系統不會錯過按鍵輸入數據。本系統的主要工作思路為:單片機系統不斷給行線傳輸低電平信號,每次保證其中一行為低電平信號,其余都為高電平信號,然后系統立即檢測列線是否有低電平信號,從而就可判斷出是哪個按鍵被按下,系統用同樣的方法給其他行線輸出低電平信號,同時檢測各列線電平信號。通過掃描按鍵判斷按鍵按下情況,STM32 單片機通過給按鍵設置不同鍵值,系統根據鍵值執行不同的子程序。系統提供了“確定”“清除”“我是快遞員”“我是用戶”“存”“取”六個功能鍵和0~9 十個數字鍵,共十六個按鍵來完成用戶必要信息的輸入。矩陣鍵盤需要用到8 個I/O 口,將單片機PB 口上的PB.8~PB.15 分配給鍵盤模塊。如圖5 所示。

圖5 矩陣按鍵
繼電器模塊之間與單片機連接使用,無需搭建外部電路,單片機的VCC、GND、IN口接入程序中定義的單片機的I/O口。繼電器工作時,電磁鐵通電,產生磁力,電路斷開時,磁力消失,利用這一原理可以更好的控制快遞柜門開關[8],當柜門關了后啟動消毒功能。繼電器控制電路如圖6 所示。

圖6 繼電器控制模塊
SIM800C 是一種廣泛使用的GSM 模塊,帶有串行接口調制解調器,可在3.4V~4.4V 電壓等級之間運行。SIM800C是一款四頻GSM/GPRS 模塊,可用作對遠程數據傳輸的嵌入式應用。SIM800C 工作在850/900/1800/1900MHz,它還可以低功耗接收和發送語音電話、短信。該模塊通過AT指令控制,支持一個SIM 卡接口,并具有UART(TX 和RX)引腳以及一個RS232 串行協議,可用于與嵌入式應用中的不同微控制器接口。將SIM 卡接入SIM800C 模塊中,則可以實現短信發送功能。
當取界面輸入的驗證碼與系統中箱柜儲存的驗證碼均不相同時,就會進入密碼錯誤界面,提示用戶重新輸入密碼,稍作延時后,系統將會自動返回取件界面,如若用戶連續三次輸錯驗證碼[9],系統會將用戶操作識別為非法操作,進入報警界面,揚聲器報警,紅色LED 燈亮,一段時間內,鍵盤將不接受任何操作,報警結束后自動返回主界面。
在軟件開始運行時,主程序最先進行顯示模塊內部程序的初始化,同時對系統中的各子程序進行相應初始化,之后系統開始不間斷掃描矩陣鍵盤,檢測是否有電平信號輸入,并根據不同的電平信號輸入數據從而執行相對應的子程序模塊。
當系統檢測到“存件鍵”按下時,系統將首先在數據庫中查看剩余空柜數量,并在顯示界面進行顯示,若檢測到有空柜剩余,系統則提示可以進行存件操作,用戶可以通過輸入取件人的手機號碼進行存件。該程序設計中同時設有清除和確定指令,可以滿足用戶輸錯或輸入信息完成時可以按下使用,信息輸入完成后系統對輸入信息進行處理,并自動生成六位隨機驗證碼,系統給繼電器發出信號,繼電器工作柜門打開,在用戶放入物件并關閉儲物柜后,系統收到柜門關閉信息,隨即GSM 模塊向取件人發送生成的六位驗證碼,發送成功后顯示模塊進行顯示,之后系統回到主界面,存件過程進行完畢,紫外線開始消毒[10]。
當系統檢測到“取件鍵”按下時,系統進入取件界面,顯示界面提示用戶輸入六位驗證碼。該程序設計中同時設有清除和確定指令,可以滿足用戶輸入錯誤和輸入完成時操作使用,系統接收到輸入的驗證碼后,根據提供的驗證碼與系統內部存儲的信息進行比對找到相應信息,若核實正確則繼電器工作,柜門打開,隨即對應的LED 燈點亮,用戶可將物品取走,取件后關上快遞柜門,系統則返回主界面,若系統內部沒有和驗證碼相同的密碼信息,則顯示模塊顯示錯誤提示,并返回上一界面,用戶可進行重新輸入。如果用戶連續三次輸入錯誤,系統程序將用戶操作識別為非法操作,聲光報警系統啟動發出報警,短期內系統將不掃描鍵盤按下信號。成功取件后將在系統內部將會得到對應物件已被取走的信息,系統會對之前的存儲信息進行清除,確保后續取件順利進行。由此完成了一個取件過程。系統總體流程圖如圖7所示。

圖7 系統總體流程圖
在main.c 中,先寫入其他.c 的頭文件,接著是定義用到的全局變量和用到的子程序,然后就進入到主程序中[11]。在主程序中,首先進行系統初始化,然后按照順序循環子程序,主系統程序中有:按鍵子程序、顯示子程序、監測子程序和處理子程序。程序中的按鍵子程序用于切換模式、選擇快遞柜、輸入取件碼、手機號碼等;監測子程序獲得100000~999999 之間的隨機數;顯示子程序通過OLED 顯示身份、拿/取快遞界面、快遞柜是否已滿、輸入的手機號、驗證碼等;在處理子程序中,若有快遞員寄快遞/用戶存快遞,GSM 發送驗證碼。
3.2.1 按鍵子程序
系統對按鍵不斷進行掃描判斷是否有按鍵按下,如果按下的數字鍵是1~9,則可進行輸入號碼、選擇快遞柜、輸入驗證碼等操作;如果按鍵4 被按下,則進行快遞員存快遞模式;如果按鍵8 被按下,切換用戶存取快遞模式;如果按鍵12 被按下,切換選擇快遞柜模式;如果按鍵13被按下,確定驗證碼;如果按鍵15 被按下,刪除輸入數據或者返回上一步;如果按鍵16 被按下,直接輸入驗證碼進行取件[12]。
3.2.2 顯示子程序
根據不同的系統指令顯示不同界面。在顯示界面0 時,界面0,顯示身份選擇界面;界面1,顯示快遞員拿/取選擇界面;界面2,用戶拿/取選擇界面。在空箱選擇界面,顯示存儲箱型號、空/滿。在輸入驗證碼界面,顯示“請輸入驗證碼”。在輸入手機號碼界面,顯示“請輸入手機號”。在成功界面,顯示“快遞已存好”。
本快遞儲物柜在原先快遞柜的存取方式下,新增聲光報警和柜內自動消毒功能,該技術融合了傳統快遞存取模式和消毒控制,實現了更加安全化、人性化的存取件方式。使用這種集體無差別消殺后進行的逐一消毒,在最大程度上杜絕了快遞柜成為疫情源或中轉點的可能性,在快遞的最后運輸環節豎起了一道科技的“銅墻鐵壁”;同時,這種設計增強了人們對快遞取件點的信任度,加之以消毒模塊的使用,這種讓人耳目一新的人性化設計。在后期項目會升級系統,逐步實現人臉識別存取件,運用科技的力量,實現更和諧、美好、安全、進步的生活體驗。