李健偉,冼燦嬌,王瑞鐿,嚴曉媚,藍妙飛,楊豐源
(廣西民族師范學院,廣西崇左,532200)
在分揀電子元器件這樣繁雜的生產環境下,零部件散落在傳送帶上姿態萬千,原有的示教編程和離線編程的機器人很難去進行有效的定位拾取,而將龍門模組結合視覺識別定位可以在較大范圍內精準抓取以及定點投放[1]。機器視覺進行元器件的識別與分類和傳統手工分揀相比,可以極大地降低勞動量大、人力成本高和效率低等問題。機器視覺系統可以通過圖像進行處理從而對元器件進行準確識別和分類,避免了檢測人員因視覺疲勞從而導致出現錯檢現象進而對分揀結果產生人為因素的影響[2~3]。因此,研究和開發基于機器視覺的元器件分揀系統對于提高生產效率、降低成本具有重要的實際意義。
元器件型號的識別使用YOLO V2 對目標元器件識別,YOLO V2(You Only Look Once version 2)是一種目標檢測算法,它是YOLO 算法的升級版。YOLO V2 通過將圖像分成多個網格,并在每個網格中預測邊界框和類別,從而實現對圖像中多個目標的同時檢測。相較于傳統的目標檢測算法,YOLO V2 具有更快的檢測速度和更高的準確率。
YOLO V2 采用了一種基于卷積神經網絡(CNN)的架構,將輸入圖像經過多個卷積層和池化層提取特征,然后通過全連接層進行目標分類和邊界框回歸。與YOLO 相比,YOLO V2 引入了一些改進措施,如使用更深的網絡結構(Darknet-19)、使用Anchor Boxes 來提高邊界框的準確性、使用多尺度訓練來提高對不同大小目標的檢測能力等。
首先K210 通過攝像頭拍照,對獲取到的圖片信息進行預處理,先對圖片進行二值化,經過二值化的圖像能夠增強圖像對比度同時還能降低背景帶來的干擾,再對二值化的圖像進行高斯濾波,對已經濾波后的圖像進行腐蝕膨脹等圖像增強操作,再使用訓練模型對處理后圖像進行識別。
本系統可以分為四個系統,供電系統、交互系統、抓取系統和識別系統,硬件部分主要包括主控ESP32 和視覺模塊K210 兩個核心部件,及龍門模組、真空泵和2.4 寸顯示屏和電磁鐵等器件,通過主控對各模塊的配合從而實現元器件的識別和抓取;軟件部分,主控芯片和視覺系統都使用MicroPython 進行編程,MicroPython 是一種精簡的Python 3 解釋器,MicroPython 能夠讓開發者快速地開發;供電系統由ME3116AM6G DC-DC 芯片進行穩壓,交互系統由一塊2.4 寸觸摸屏構成,抓取系統使用真空泵和電磁鐵配合龍門模組進行對元器件的抓取;識別系統通過K210 模型訓練實現元器件型號的識別。系統框架如圖1 所示。

圖1 系統框架圖
在基于機器視覺的元器件分揀系統中,系統架構是整個系統設計的基礎。系統架構旨在提供一個清晰的組織結構,以便實現元器件的智能識別和檢測功能。系統的架構主要分為硬件層、軟件層、數據管理層和通信層四個層次,下面分別對四個架構層次進行描述。
(1)硬件層:系統的硬件層包括ESP32 主控芯片、K210識別模塊、觸摸屏,以及其他必要的傳感器和接口。其中,K210 識別模塊作為元器件識別處理的核心,用于采集元器件圖像,使得系統能夠提取到相關有用的元器件圖像信息;負責處理圖像數據和進行算法計算。ESP32 主控芯片作為控制及處理系統的核心,負責對整個系統的實時監控和管理;顯示屏用于顯示識別數據的結果以及整個系統實時狀態的情況。
(2)軟件層:系統的軟件層主要包括圖像處理算法、機器學習模型。圖像處理算法用于對采集的圖像進行預處理,包括圖像增強、邊緣檢測等。機器學習模型用于對預處理后的圖像進行識別和分類,以實現元器件的智能識別功能。
(3)數據管理層:系統的數據管理層用于管理元器件數據和整個系統實時狀態。元器件數據包括元器件的采集、元器件圖像信息、提取元器件特征信息、元器件識別結果等。系統狀態包括系統實時運行狀態、元器件識別進度和系統的異常處理等。
(4)通信層:系統的通信層用于實現系統與外部設備的數據交互和通信。例如,系統可以通過網絡接口與其他設備進行數據傳輸或通過串口與外部設備進行通信。
通過以上系統架構,基于機器視覺的元器件分揀系統可以實現對元器件的智能識別和分揀功能。系統架構的設計需要考慮硬件和軟件的兼容性、性能和可擴展性,以滿足實際應用的需求。
檢測系統即元器件的識別包括了器件的圖像采集、特征提取和圖像識別等內容。
(1)采集元器件圖像:首先,系統需要通過攝像頭來獲取元器件的圖像。這些圖像將作為系統進行元器件識別和檢測的輸入數據。
(2)圖像預處理:在進行元器件識別和檢測之前,系統需要對采集到的圖像進行預處理。這包括去噪、圖像增強、圖像分割等步驟,以提高后續處理的準確性和效果。
(3)元器件特征提取:在進行元器件檢測之前,系統還需要提取元器件的關鍵特征。這些特征可以包括元器件的尺寸、顏色、形狀等等信息,以便后續的識別和分析。
(4)元器件識別:接下來,系統需要使用深度學習算法或其他圖像識別技術,對提取出來的特征進行元器件識別。這可以通過訓練一個神經網絡模型來實現,該模型能夠將輸入的圖像與已知的元器件類型進行匹配,并輸出相應的識別結果。
通過以上的設計,基于機器視覺的元器件分揀系統可以實現對元器件的準確識別分類,利用機器視覺技術可大幅提升實驗室等元器件混合一起需要分揀場景的分揀效率。
系統的硬件主要包括ESP32 和K210 兩個核心部件,以及龍門模組、真空泵和2.4 寸顯示屏和電磁鐵等器件構成,下面對各模塊的硬件設計進行描述。
ESP32 是一款自帶WiFi 和藍牙雙模雙核處理器MCU,主頻高達240MHz,具有強大的計算能力,并且ESP32 有著豐富的可編程GPIO,可擴展性高。ESP32 內置了WiFi和藍牙協議棧,支持多種安全加密算法,能夠實現可靠的無線通信。ESP32 有著支持超低功耗待機的優勢,利用這個優勢使得本模塊能協同各個模塊不斷地處理所需數據,提升了整個系統的工作效率[4]。
通過使用ESP32 作為主控模塊,我們可以實現對元器件分揀系統的控制和管理。ESP32 的高性能雙核處理器和豐富的外設接口可以實現對分揀龍門模組的控制、屏幕顯示和觸摸等設備的控制和數據采集。ESP32 通過與K210 視覺模塊的通信,接收到由k210 識別和檢測的元器件圖像信息。其次,通過與龍門模組的協調,ESP32 可以實現元器件的精確快速地抓取和分揀,提高整個系統的準確性和效率。此外,ESP32 還可以與外部設備進行通信,如顯示屏模塊,以提供系統的狀態顯示和分揀進度的查看。通過ESP32模塊與這些設備模塊的實時配合,ESP32 可以實現對整個系統的實時監控和管理,主控單元電路如圖2 所示。

圖2 主控單元電路圖
K210 是基于RISC-V 精簡指令集的一款MCU,在眾多特色功能中,芯片架構包含了一個自研的神經網絡硬件加速器KPU 是最重大特色功能,可以高性能地進行卷積神經網絡運算。在MCU 的AI 計算方面,K210 芯片的算力非常出色,根據嘉楠官網的描述,K210 的KPU 算力能夠達到0.8TFLOPS。
K210 可以通過訓練模型實現對元器件圖像的識別和分類,將不同類型的元器件進行區分,為后續的分揀工作提供準確的數據支持。K210 具有較高的計算速度和處理能力,可以實時地對元器件圖像進行處理和分析,實現快速的分揀和判斷。K210 也應用于廣泛的嵌入式、人工智能等場景,并擁有良好的性能,如功耗性能、處理能力、圖形處理能力,提高了對采集數據、識別數據等操作的穩定性與可靠性。
ME3116AM6G 是內部集成了 MOSFET 的異步整流降壓穩壓器,它在較寬的輸入電壓范圍內(4.75V~40V)能夠提供高達1A 的負載能力。內置功率管具有較低的RDSON (典型值0.9Ω),典型情況下效率高達90%,該芯片能為系統提供3.3V 和5V 的電壓。
A4988 步進電機驅動是一種常用的驅動電路,用于控制步進電機的運動。它采用了先進的微步驅動技術,能夠精確地控制步進電機的轉動角度和速度。該驅動器具有高效、穩定的特點,廣泛應用于各種自動化設備和機械系統中。該驅動器的工作原理是通過控制電流的大小和方向來控制步進電機的轉動。它使用了H橋電路來實現電流的正反向控制,通過調節電流大小和脈沖信號的頻率來控制步進電機的轉速和轉向。同時具有多種保護功能,如過流保護、過溫保護和短路保護等,可以有效地保護步進電機和驅動器的安全運行。此外,它還具有低功耗和低噪音的特點,適用于對噪音和能耗要求較高的場合。本系統使用的步進電機旋轉角度為1.8°,經過A4988 步進電機驅動16 細分后能夠使步進電機旋轉角度變成0.1125°,旋轉一圈需要3200 個脈沖,在本系統中龍門模組的軸轉動一圈即移動40mm,一個脈沖即0.0125mm,能夠為本系統提供很好的精度控制。步進電機電路圖如圖3 所示。

圖3 步進電機驅動電路
軟件設計方面使用MicroPython 進行編寫,MicroPython 是一種精簡的Python 3 解釋器,專門為嵌入式系統和物聯網設備設計。它具有Python 語言的簡潔性和易用性,同時也具備了嵌入式系統所需的高效性和低資源占用。MicroPython 的目標是讓開發者能夠在資源受限的設備上編寫Python 代碼,并且能夠直接運行。
ESP32 主控芯片上電對各模塊進行初始化,觸摸屏實時對觸摸采集觸摸信息,當采集到開始運行信號時,對龍門模組進行歸零操作,再配合電磁鐵進行混合元器件存放區的元器件吸取,再送至K210 視覺識別區,K210 視覺識別區進行識別判斷電磁鐵是否吸上元器件。如果沒有吸上元器件將重復抓取和識別步驟,成功吸上元器件則將對元器件放置元器件置底平臺,經過置底平臺的抖動后元器件絲印面置底。經過至底后的元器件使用龍門模組配合氣泵吸取元器件,再送至K210 視覺識別區,如果有吸到元器件將進行元器件的識別,沒有則重復吸取識別步驟,最后對識別的元器件送至對應的元器件存放區,程序流程如圖4 所示。

圖4 程序流程圖
通過硬件和軟件兩部分的相互配合使我們的系統正常運行,為了進行系統測試,首先需要準備一批不同型號的DIP16 封裝元器件樣本,我們選取五個型號的元器件,每個型號分別有二十個,總共一百個元器件。然后,將這些樣本放入到系統的混合元器件存放區域中,觀察系統是否能夠正確地將它們分揀到相應的類別中。對每個型號的存放區域進行記錄,再分析出系統的準確率,以評估系統的分類效果,圖5 為系統實物圖。

圖5 系統實物圖
在基于機器視覺的元器件分揀系統設計的系統測試中,我們對系統的各項功能進行了全面的測試,并記錄了測試結果。表1 是我們對各項功能的測試結果記錄。

表1 測試結果
通過圖像處理算法和機器學習算法,能創建一個與機器視覺與人類視覺相類似的圖像處理系統以及一個能模擬人類手臂的器件組件,以便于能夠高效、迅速地完成對元器件采集圖像、圖像預處理、識別、特征提取以及檢測的一系列操作,以保證元器件的分類、質量和性能[5]。總的來說,基于機器視覺的元器件分揀系統具有較高的準確率和實時性,可以廣泛應用于電子通信專業課程的實驗室和關于電子的社團在元器件管理方面問題等多種應用場景。未來,我們可以進一步優化系統的性能和功能,使其更加智能化和自動化。