殷佳寶 , 韓四滿 , 祁學祥 , 朱永琪
(寧夏工商職業技術學院,寧夏 銀川 750021)
目前,學校各類工科類專業實訓室工具存放多以工具箱為主,然而工具箱內并未對各類工具進行明確的區域劃分,致使工具箱中工具多是雜亂無章的[1],對于學校的工具管理員來說是一項繁重的工作。為了解決企業和學校當中煩瑣的發放和收納管理工具的問題,項目小組設計了一種基于Arduino 開源電子原型平臺的智能工具箱。通過壓力傳感器、RC522射頻傳感器、按鍵模塊、顯示模塊、蜂鳴器等,實現智能工具箱的密碼開鎖、工具檢測、工具缺失報警等功能。
系統總體設計方案如圖1所示。本系統主要由Arduino UNO開發板、傳感器(壓力傳感器、RC522射頻傳感器)、按鍵模塊、顯示模塊、繼電器、電磁鎖、蜂鳴器組成[2]。系統供電有三種方式:1)電源插座供電;2)由外部電池供電,電池連接電源連接器的GND和VIN引腳;3)USB接口供電。當外部直流電源接入電源插座時,可以通過VIN向外部繼電器和電磁鎖供電;也可以通過此引腳向UNO開發板直接供電;VIN有電時將忽略從USB或者其他引腳接入的電源。通過主板與壓力傳感器、RC522射頻傳感器、按鍵模塊相連,實現工具的重量檢測和密碼設置。工具使用者通過按鍵模塊輸入密碼,打開工具箱獲得使用權限。當工具使用完畢閉合工具箱后,通過顯示模塊顯示工具箱內工具是否齊全,若工具有缺失則有蜂鳴報警聲,便于提醒工具管理者檢查工具情況。

圖1 系統總體設計方案
工具箱只允許有權限的人打開。此功能有利于追蹤使用工具箱的人,若工具有損壞則可以確定目標。
通過設定工具箱內部工具類型、工具位置、工具數量,在特定位置安裝檢測元件,用于檢測工具的特征點,用于檢測工具是否按要求歸位、是否齊全。若工具缺失或者擺放不到位,關閉工具箱時報警,不允許關閉,顯示缺失工具類型。通過警報聲提醒工具使用者及管理員,管理人員只需處理有報警情況的工具箱,便于管理人員監管工具,減輕管理人員的工作強度,同時減少工具的丟失,實現工具的精細化管理,并更加有效地提高了工具損壞后的追查效率。
本研究選用Arduino UNO開源平臺作為核心部件,其主要優勢在于性價比高、便捷靈活、方便上手,配合外圍器件傳感器、控制開關、LED屏等,任何稍有電子電路基礎的人都可以基于這個平臺快速搭建出具有各種有趣功能的實用電子電路。Arduino UNO開發板以ATmega328 MCU控制器為基礎,有6個模擬輸入,14個數字輸入/輸出管腳,可以由程序自己定義為輸入或者輸出,還可以外接各種擴展板,連接各種功能的傳感器,可拓展性很大。Arduino UNO集成開發環境為Arduino IDE,使得編寫代碼以及將代碼上傳到板上非常容易。
為了簡化硬件接線,選用開發板配套的傳感器擴展板 V7.1,把Arduino的端口擴展成直插3P傳感器模塊,14個數字口(6個PWM口),6個模擬口,豐富的通信和存儲模塊,外部電源擴展為Arduino開發板負載持續供電,擴展板角落接線柱為主控器和擴展板供電,中部接線柱為數字口上的舵機供電[3]。圖2為Arduino主板。

圖2 Arduino主板
壓力傳感器選擇電阻應變片式壓力傳感器。它是通過粘貼在彈性敏感元件上的應變片的阻值變化來測量壓力值的,這樣就把彈性的機械力轉化為電阻應變片的阻值變化[4]。把4個電阻應變片按照四臂全橋的方式進行連接,兩輸入端施加一定的電壓值,兩輸出端輸出的共模電壓隨著橋路上電阻阻值的變化增加或者減小,找到壓力變化和輸出共模電壓變化的對應關系,就可以通過測量共模電壓得到壓力值,再由HX711模數轉換器將采集到的模擬信號轉換為數字信號交給Arduino UNO板進行處理,對其他外部元件進行控制[5]。圖3為 HX711數模轉換傳感器。

圖3 HX711數模轉換傳感器
在開鎖的選型上采用了密碼輸入和身份驗證兩種方式開鎖。密碼輸入解鎖工具箱時需要權限輸入,在保證滿足功能的前提下選擇性價比更高的4×4矩陣鍵盤模塊,需占用8個標準的I/O口,用于連接Arduino UNO主板的4~11數字串口,實現開發板與按鍵間的通信,完成工具箱的解鎖功能;身份驗證則采用射頻傳感器進行身份ID認證進行開鎖,當ID磁卡進入到磁場后,接收讀寫器發出的射頻信號,憑借感應電流所獲得的能量發送出存儲在芯片中的產品信息,讀寫器讀取到信息并解碼后,送至處理單元進行數據處理,將處理完成的身份信息發送給Arduino UNO板,主板在得到認證成功的信息后,再對電磁鎖進行開鎖動作[6]。圖4為本系統使用的RC522射頻傳感器。

圖4 RC522射頻傳感器
使用Fritzing 軟件繪制系統電路圖。圖5為系統電路圖,該電路圖只以一種工具的檢測、報警為例繪制,為了接線方便、清晰,使用面包板完成,并加入二極管使實驗現象更加直觀。

圖5 系統電路圖
系統軟件設計流程如圖6所示。系統上電開機后,首先需要進行初始化,然后進入待機模式,紅色指示燈亮,當使用者需要打開工具箱時,輸入身份賬號或者刷身份卡,認證成功后電磁鎖打開并亮起綠色指示燈,則可以取用工具;若認證失敗則電磁鎖不會開啟,閃爍黃色指示燈并發出警報。當歸還工具后合上工具箱蓋子時需輸入1,工具箱進行自檢,確認工具是否全部歸還,若未全部歸還則亮紅色指示燈并發出警報,管理員利用權限再次打開工具箱檢查工具,如出現誤報警的情況,只需管理員復位即可;若出現丟失,及時查找追回或者記錄,實現工具的精細化管理。

圖6 系統軟件設計流程
在Arduino程序運行時首先要調用setup()函數,用于初始化變量、設置針腳的輸出輸入類型、配置串口、引入類庫文件等。本系統定義了波特率、監視管腳、工具最大重量、指示燈接口、繼電器接口等,每次Arduino 上電或重啟后,setup()函數只運行一次[7]。圖7為部分主程序。

圖7 部分主程序
在主程序setup()函數中初始化和定義變量,然后在圖8所示的循環運行程序中執行loop()函數。loop()函數在程序運行過程中不斷地循環,通過該函數將數值動態反饋給Arduino主程序[8]。循環程序主要是用于壓力傳感器檢測工具,當幾個檢測點檢測到工具,并達到設定工具的重量時檢測成功,若未檢測到工具或者工具重量不滿足要求,則檢測失敗[9-10]。

圖8 循環運行程序
智能工具箱系統搭建完成后,通過試驗可實現工具箱的解鎖、工具檢測、報警等功能。本系統設計的工具箱按照不同功能和工具箱中
固定位置存放指定工具,如要改變工具箱的功能,需要重新調整工具箱內部結構,調整重量。該系統設計思路可復制、可遷移,可為相關產品設計人員提供思路。