基于AI的私家車位阻車器_第1頁
基于AI的私家車位阻車器_第2頁
基于AI的私家車位阻車器_第3頁
基于AI的私家車位阻車器_第4頁
基于AI的私家車位阻車器_第5頁
已閱讀5頁,還剩49頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

摘要當前國內外由于人口日益增多導致汽車的使用也與日俱增,公共場所的停車面臨空前的壓力與此同時相應的人員使用也隨之增加,隨之科技的發展將AI技術應用到阻車器上可大大減少人力物力的使用。本文主要研究基于人工智能視覺技術的私家車位阻車器是一種創新的解決方案,能夠有效解決私家車位的管理問題,提高車輛的通行能力,同時還能保障私人財產的安全。相比傳統的管理方式,該系統能夠更加智能、快速地實現車輛的管理和安全控制,減輕工作人員的工作壓力,提高管理效率,給車主帶來更好的停車體驗。此外,基于人工智能視覺技術的停車管理系統還有許多其他的應用場景,例如在城市道路上的停車管理、商業中心、公共停車場等,都可以采用該系統進行車輛管理和安全控制,提高管理效率和安全性,為車主提供更好的停車服務體驗。關鍵詞:傳感器;單片機;藍牙ABSTRACTAtpresent,theresearchonAIvisiontechnologyhasmadegreatprogressbothathomeandabroad.Becausethedevelopmentabroadisrelativelyearly,theresearchonAIVisionTechnologyisalsoearlierthanours,soabroadforAIvisiontechnologyhasamorepowerfuldevelopmentcapacity,butthedevelopmentofAItechnologyalsocontinuedtomakeconsiderableprogress.Inthispaper,wemainlystudythecar-blockingdeviceofprivateparkingspacebasedonArtificialIntelligenceVisionTechnology,whichisaninnovativesolutiontoeffectivelysolvetheproblemofprivateparkingspacemanagementandimprovethetrafficcapacityofvehicles,italsoguaranteesthesafetyofprivateproperty.Comparedwiththetraditionalmanagementmode,thesystemcanrealizethevehiclemanagementandsafetycontrolmoreintelligentandfaster,reducetheworkpressureofthestaff,improvethemanagementefficiency,andbringbetterparkingexperiencetotheowner.Inaddition,parkingmanagementsystemsbasedonAIvisiontechnologyhavemanyotherapplicationscenarios,suchasparkingmanagementonurbanroads,commercialcenters,publicparking,etc.,thesystemcanbeusedforvehiclemanagementandsafetycontrol,improvemanagementefficiencyandsafety,toprovidebetterparkingserviceexperienceforcarowners.Keywords:Sensors,MCUandBluetooth目錄TOC\o"1-3"\h\u第一章緒論-1-第一章緒論1.1研究目的及意義智能化技術已經廣泛應用于各個領域,包括服務行業。人們對于服務的需求越來越高,也要求服務行業采用更加高效、智能化的管理系統。在私家車停車場這個領域,智能化管理系統的應用可以大大提高停車場的管理效率和車輛通行能力,減少人為管理的成本和錯誤率,為車主提供更加便捷、高效、安全的停車服務。通過引入人工智能視覺技術,例如車牌識別等,可以實現對車輛的自動識別和控制,不僅提高了管理效率,也為停車場管理帶來更高的精度和準確性。因此,推進私家車停車場的智能化管理系統,是服務行業智能化發展的一個重要方向。1.2國內外研究現狀是的,近年來AI視覺技術在國內外都取得了很大的進步,尤其是在智能停車場管理、車牌識別等領域應用越來越廣泛。AI視覺技術通過對圖像、視頻的識別、分析和處理,實現對物體、場景、人臉等的自動識別、跟蹤、分類等功能,具有很強的智能化和自動化能力。在智能停車場管理中,AI視覺技術可以通過識別車牌號碼、車輛類型、入場時間等信息,實現車輛自動進出、停車位管理、停車費用計費等功能,大大提高了停車場的管理效率和用戶體驗。國內的AI視覺技術發展也在逐步跟進國外先進技術,尤其在5G、云計算、大數據等方面的應用,為AI視覺技術的發展提供了更強大的支撐。未來隨著技術的不斷創新和應用場景的不斷拓展,AI視覺技術有望在更多領域展現其強大的應用價值REF_Ref10752\r\h[2]。2020年,MooreAlison在《Howtobuy:carparking:Removethebarrierstoyourperfectvehicle》文章中講到美國通過AI視覺標志AI視覺技術在停車場管理領域的應用是當前的研究熱點之一,不僅可以提高停車場的管理效率,還可以提高停車場的安全性和用戶體驗。基于AI視覺的私家車位阻車器系統可以根據車輛識別卡或車牌號碼,自動識別車輛的身份信息,并且根據預設的規則,自動控制車位的開關,從而實現私家車位的攔阻功能REF_Ref10654\r\h[1]。該系統可以實現自動化的車位管理,減少人工干預,提高停車場的管理效率,降低管理成本,提高用戶滿意度。同時,該系統還可以通過記錄車輛的停車時間和停車位號,提供車位使用情況的統計和查詢功能,幫助停車場管理者更好地管理停車場資源REF_Ref10841\r\h[3]。1.3主要研究內容這套基于AI視覺的私家車位阻車器系統設計聽起來很有趣。通過使用單片機作為基本開發語言,它可以設計出一個專門用于管理私家車位阻車的軟件,同時使用數據庫作為后臺存儲車輛信息,通過客戶服務器網絡模式結構來管理車輛進出停車場REF_Ref10916\r\h[4]。通過及時獲取車輛的運行信息和車牌號碼,系統可以自動管理車輛進出停車場,并根據車輛識別號碼數據庫導出系統自動發現車輛信息,實現自動阻車、車輛通行及完整的車輛安全系統報警。這套系統的應用可以提高私家車位的管理效率和安全性。第二章系統的總體結構2.1設計方案這套系統的基本原理是通過AI視覺技術實現對車輛的識別和管理,主要包括以下幾個方面:車輛識別:系統使用攝像頭捕捉車輛圖像,通過AI視覺算法進行車牌識別或車輛識別號碼識別,確定車輛的身份。車輛管理:系統根據車輛的身份信息,判斷其是否有權限進入停車場,如果有權限,則自動抬起道閘,允許車輛進入;如果沒有權限,則自動阻止車輛通行,并報警提示。數據庫管理:系統采用數據庫作為后臺,將識別到的車輛信息存儲到數據庫中,便于日后查詢和管理。安全報警:系統可以通過聲音、光線、圖像等多種方式進行報警,確保停車場的安全性和穩定性。這套系統的優點是自動化程度高,可以大大減少人工管理和操作成本,提高停車場管理的效率和準確性。同時,通過AI技術的應用,可以提高識別的準確性和速度,實現更智能、更高效的車輛管理。2.2功能需求分析2.2.1技術路線(1)硬件部分需要單片機、傳感器、舵機、藍牙遠程APP模塊;

(2)畫原理圖用AD;

(3)用戶信息顯示查看;

2.2.2預期結果通過對系統的布設和完善,最終完成的基于基于AI視覺的私家車位阻車器預期有如下成果:上位機:1.發送下位機記錄車輛指令;2.發送下位機指令使下位機進入阻車模式;3.對下位機阻車器進行手機端控制;4.接收下位機參數,并顯示;5.設定閾值;下位機:1.接收上位機命令,記錄允許駛入的私家車;2.接收上位機命令,開啟阻車模式,檢測車輛駛出,自動開啟阻車器;3.阻車模式:(1)識別駛入車輛與記錄的車輛信息進行對比確認是否是已錄入的車輛;(2)若不是已錄入的車輛,聲光警告,提醒車輛駛離;(3)若是已錄入的車輛,自動關閉阻車器,允許車輛駛入;(4)在自家車輛駛入過程中,檢測后方距離,若過小,進行蜂鳴器提示用戶,并發送上位機警告信息;4.手動模式:接收上位機命令,開啟/關閉阻車器;2.3總體方案設計理論知識準備階段:在這個階段,需要深入了解課題所涉及到的概念、理論、技術等方面的知識,以便在后續的設計和實現中得到應用。確定系統各個模塊:在這個階段,需要確定系統的各個功能模塊,并理清各個模塊之間的關系。這有助于確定系統的整體架構和設計方案。規劃課題:在這個階段,需要根據系統的各個模塊和功能需求,確定系統組成結構和大體框架,并提出原理框圖。這有助于對系統設計的整體把握和規劃。完成硬件電路設計:在這個階段,需要使用軟件工具完成系統的硬件電路設計,并繪制出各部分電路圖。這有助于在后續實現過程中,對電路連接和元器件的選型等問題進行規劃。完成軟件設計:在這個階段,需要根據系統的控制過程,設計軟件程序,繪制出主流程圖,以便在后續實現過程中,對程序代碼的編寫和調試提供指導。模擬仿真:在這個階段,需要利用軟件仿真工具,對系統的各個功能進行模擬仿真,以檢查系統是否能夠按照要求實現控制功能。這有助于在實際實現過程中,避免由于軟硬件不兼容或其他因素引起的問題。整理論文:在這個階段,需要整理出一份完整的論文,將設計和實現過程中所涉及到的方方面面進行詳細的闡述和解釋,以便讓讀者了解到整個課題的研究過程和研究成果。2.4單片機型號選擇KendryteK210是一種集成了機器視覺和機器聽覺能力的SoC芯片,采用了臺積電(TSMC)超低功耗的28納米先進制程技術,擁有雙核64位處理器,具備較好的功耗性能、穩定性和可靠性。該芯片力求零門檻開發,可在最短時效部署于用戶的產品中,為產品賦予人工智能。K210定位于AI和IoT市場的SoC,同時也是一種非常方便的MCU。Kendryte中文含義為勘智,取自勘物探智。該芯片主要應用領域為物聯網領域,在物聯網領域進行開發,因此為勘物;該芯片主要提供的是人工智能解決方案,在人工智能領域探索,因此為探智。K210具備機器視覺能力和機器聽覺能力,具有更好的低功耗視覺處理速度和準確率。此外,K210還具備卷積人工神經網絡硬件加速器KPU,可高性能進行卷積人工神經網絡運算。它采用TSMC28納米先進制程技術,溫度范圍為-40°C到125°C,穩定可靠。K210支持固件加密,并具有獨特的可編程IO陣列,使產品設計更加靈活。K210采用低電壓設計,在相同處理能力的系統中具有更低的功耗。它支持3.3V/1.8V雙電壓,無需電平轉換,節約成本。圖2-1單片機最小系統原理圖第三章系統的硬件部分設計3.1系統總體設計該系統利用AI視覺技術實現對車輛的自動管理,解決了人工阻車管理的弊端,提高了停車場的管理效率和安全性。系統通過攝像頭獲取車輛運行信息和車牌號,經過圖像處理和車牌識別技術識別出車輛身份或車輛識別號碼,并自動進行阻車或通行管理。同時,系統將車輛信息存儲在數據庫中,方便后續管理和查詢。系統還具備完整的車輛安全系統報警功能,確保停車場的安全和穩定運行。該系統采用單片機作為基本開發語言,具有開發成本低、易于維護和升級等優點,具有廣泛的應用前景。圖3-1主系統原理圖3.2系統的主要功能模塊設計3.2.12.4寸LCD顯示屏模塊設計2.4寸LCD顯示屏是一種小尺寸液晶顯示屏,通常用于移動設備、嵌入式系統和便攜式電子產品等領域。它的尺寸為2.4英寸,即對角線長度約為6.1厘米。這種顯示屏可以通過液晶顯示技術來呈現圖像和文本內容。2.4寸LCD顯示屏通常具有240x320像素的分辨率,這意味著它可以呈現240行、320列的像素矩陣,總共76800個像素點。這樣的分辨率雖然不是非常高,但對于小尺寸的顯示屏來說已經足夠。同時,由于顯示屏尺寸較小,像素密度相對較高,可以呈現清晰、銳利的圖像和文本。2.4寸LCD顯示屏通常采用TFT技術,即薄膜晶體管技術,這是一種高質量的液晶顯示技術。TFT技術可以使液晶分子的旋轉速度更快、更穩定,從而可以實現更快的刷新率和更高的對比度。此外,TFT技術還可以通過后期加工使顯示屏更加均勻、穩定。2.4寸LCD顯示屏通常具有LED背光,這可以使顯示屏呈現更加鮮明、亮麗的顏色,并且能夠在低光環境下提供良好的可視性。LED背光還具有低功耗、長壽命的優點,這對于移動設備和便攜式電子產品來說尤為重要。2.4寸LCD顯示屏通常具有廣視角特性,即可以在不同角度下提供相同的色彩和亮度。這意味著即使從側面或上下角度觀看顯示屏,圖像和文本仍然可以清晰可見。這對于移動設備和便攜式電子產品來說非常重要,因為用戶通常需要在不同的角度下使用這些設備。2.4寸LCD顯示屏還具有快速響應時間的優點,通常在10毫秒以下,這可以使動態圖像和視頻更加流暢。同時,2.4寸LCD顯示屏還可以支持觸摸屏功能,這使得用戶可以通過觸摸屏幕來與設備進行交互,從而實現更加自然和直觀的操作。圖3-22.4寸LCD顯示屏模塊原理圖3.2.2藍牙模組模塊設計藍牙模塊是一種用于在不同設備之間建立無線通信的技術。它可以實現不同設備之間的數據傳輸、音頻傳輸和控制等功能。在現代的智能設備中,藍牙模塊已經成為一種基本的通信方式,如手機、平板電腦、音響、智能手表等,都集成了藍牙模塊,可以與其他設備進行無線通信。藍牙模塊一般由無線電芯片和相應的軟件組成。在硬件方面,藍牙模塊通常采用集成了藍牙協議棧的單芯片解決方案,如CSR、TI、Nordic、ST等。這些芯片都支持標準的藍牙4.0或以上版本,具有低功耗、高速傳輸、可靠性高等特點。在軟件方面,藍牙模塊通常提供了標準的AT指令集或者API接口,可以方便地與其他設備進行通信和控制。藍牙模塊具有以下優點:低功耗:藍牙模塊的低功耗設計,可以使設備長時間工作,不需要頻繁更換電池,同時還能夠滿足對電池壽命的要求。高速傳輸:藍牙模塊采用了先進的傳輸技術,能夠在短時間內傳輸大量數據,保證數據傳輸的效率和準確性。安全性高:藍牙模塊支持強大的加密和認證技術,確保通信過程的安全性,防止數據泄露和攻擊。易于集成:藍牙模塊的硬件和軟件設計都十分成熟,可以方便地集成到各種設備中,提高設備的通信能力和互聯性。適應性強:藍牙模塊支持不同的設備類型和不同的應用場景,可以滿足多樣化的需求,例如智能家居、健康監測、車聯網等。總之,藍牙模塊作為一種成熟的無線通信技術,已經廣泛應用于各種智能設備中,成為實現設備互聯和數據傳輸的重要手段。未來,隨著物聯網技術的不斷發展,藍牙模塊的應用前景將更加廣闊。圖3-3藍牙模組原理圖3.2.3舵機模塊設計舵機是一種常見的電子元件,用于控制物體在特定角度位置上的運動。其主要構成部分包括外殼、板、驅動馬達、減速器和位置檢測元件。當接收到控制信號后,電路板上的IC會驅動馬達旋轉,通過減速器將動力傳至擺臂,位置檢測元件可以檢測轉動的角度。舵機中的馬達采用空心杯馬達設計,以減小重量和功耗,同時可以根據不同需求進行防水和防塵設計,并選擇塑膠或金屬齒輪以適應不同負載。如圖3-4舵機原理圖。圖3-4舵機原理圖第四章系統的軟件設計4.1軟件的主要流程首先進行系統初始化,系統初始化完成后,單片機進行設定的程序采集,傳感器開始進行數據的采集,采集的數據會在我們的顯示屏上進行顯示。采集的數據達到設定程序要求時,舵機會進行轉動。與上位機之間可以通過藍牙進行通信。圖4-1主系統流程圖4.2LCD顯示屏軟件設計首先進行系統初始化,系統初始化完成后,單片機進行設定的程序采集,傳感器開始進行數據的采集,采集的數據會在我們的顯示屏上進行顯示。圖4-2LCD顯示屏軟件設計4.3藍牙模塊軟件設計首先進行系統初始化,系統初始化完成后,單片機進行設定的程序采集,傳感器開始進行數據的采集,采集的數據會在我們的顯示屏上進行顯示。采集的數據達到設定程序要求時,舵機會進行轉動。與上位機之間可以通過藍牙進行通信。圖4-3藍牙模塊軟件設計4.4舵機模塊軟件設計首先進行系統初始化,系統初始化完成后,單片機進行設定的程序采集,傳感器開始進行數據的采集,采集的數據會在我們的顯示屏上進行顯示。采集的數據達到設定程序要求時,舵機會進行轉動。圖4-4舵機模塊軟件設計第五章系統測試5.1系統實物圖圖5-1系統實物圖實物分為合金板,藍牙模塊,180°舵機,顯示器導線若干,攝像頭,屏幕以及按鍵。其中按鍵功能分為學習按鍵,復位按鍵以及系統按鍵。開始時先識別環境以及需要錄入的合法車不同角度的前臉及車位各十張,識別完后需要錄入周邊環境不同角度五張。錄入完后開啟系統按鍵,開啟時是自動模式可以監測車輛距離并且車輛距離警報已經非法車輛警報開啟。若出現合法車輛舵機放下,若出現非法車輛舵機不開啟并且蜂鳴機長響,若車輛距離過近則觸發距離警報5.2測試步驟圖圖5-2模擬步驟圖圖中為車輛的前后臉識別,分別各拍十組照片之后在對周圍環境進行拍照識別讓識別裝置充分識別圖片信息。開啟識別按鈕后會自動識別自己車輛和違法車輛,若是合法車輛則閘機開啟,非法車輛閘機關閉并且發出警報圖5-3測試步驟圖此項為開啟藍牙裝置首先給設備供電,供電以后設備開始進行啟動,根據設備上的按鍵,要先進行對車輛的學習,完成以后可以進行檢測,當檢測識別到私家車輛以后,舵機將會進行轉動,阻車器就會進行落下,檢測到非法車輛的時候,也就是不是私家車的時候,阻車器并不會落下,同時傳感器也會進行測距報警。上位機也可以進行一個顯示,閾值的設定等。第六章總結與展望本文把AI視覺技術,藍牙技術,視頻監控技術及軟件技術等有機的結合在一起,形成了一套完善的控制系統,成功的把AI視覺技術推廣并且在今后的社會應用中保持主導地位。本文取得的重大成果有:1.進行了深度的研究和調查。通過對學習資料的學習和貫通,對AI視覺技術中考慮的幾個問題有了更為明確的認知,對人工智能技術的控制系統有了更為全面,深刻的認識。2.對AI私家車位阻車器進行了考察,對AI智能監控設施有了更好的認知,為今后的阻車系統打下了更為堅實的基礎3.按照生產過程具體需要,編制了可編程控制的報警系統。車輛監控系統需要單獨的設備,單獨的工藝步驟,和全流程的操作自動化。4.在此基礎上,提出了一種基于AI視覺的控制系統,通過拍照識別,對車輛進行更好的管理。流程圖,實現了流程的控制;其他都由顯示器進行實時監控。在設計基于AI視覺的私家車位阻車器系統時,已經做了許多工作,并獲得了一定的成功但是在系統中還存在著一些不足和進一步完善的地方,下一項工作可從以下幾個方面入手1.在機器故障時,主計算機仍能工作確保業主能繼續使用阻車器2.現場的多種場景變換,對AI識別的影響較大,必須能使系統的抗干擾性進一步完善。參考文獻馮凌穎.基于車牌識別的園區道閘車輛管理系統軟件設計[P].浙江大學2021.董海濤;肖銘辰;伍興;林義忠.基于低分辨率傳感器的高性能道閘控制算法研究[C].微電機.2021.王寒益.基于ZigBee技術的智能停車場管理系統研究[C].集美大學.2022.孫昕怡.AI視覺檢測項目范圍管理的研究[M].北京郵電大學,2020.喬旭;趙偉;張煒;趙建.面向交通行業的AI視覺應用研究[P].江蘇科技信息,2021.劉爽.智能車輛出入控制系統研究[M].東北石油大學,2021.張春光.公交停車場智能場站的設計[P].吉林大學,2019.潘志友;葉芃;薛春雷.基于人臉識別技術的道閘控制系統研究[M].自動化技術與應用.2020,.王成軍;嚴晨.機器視覺技術在分揀系統中的應用研究綜述[J].制造技術與機床.2019劉建斌.基于RFID技術的嵌入式停車場系統的設計與實現[M]. 湘潭大學.2019.MooreAlison.Howtobuy:carparking:Removethebarrierstoyourperfectvehicle..[M].2021TomRye;StephenIson.OvercomingbarrierstotheimplementationofcarparkingchargesatUKworkplaces.2019. JosephWLstiburek.WhereDoVaporBarriersGoinParkingGarages?.2021Anonymous.Networks:MeruNetworks'RFBarrier',pioneeringfirstinsecuringwirelessperimeter;IntroducesNewApproachtoDefendingEnterprisesAgainst'ParkingLotAttacks'[P].2021WeiSHEN;JiaoLI.DesignandImplementationofParkingMonitoringSystemofBikeSharingIntheElectronicBarrier.2020劉志勇.基于UML的酒店視覺AI解決方案軟件建模[J].現代計算機,2022,28(22):99-102+108.陳元威,王雁平,黃瓊桃,陳澤娜,黃龍子.基于AI的機械視覺控制系統設計[J].儀表技術,2022(06):37-38+57.DOI:10.19432/ki.issn1006-2394.2022.06.009.楊李奇,李昱龍,駱陽,代函可,章紅.基于AI視覺的交通標志識別與車輛控制[J].電子技術與軟件工程,2022(20):157-161.顧方,胡良勇,黃堅,劉鵬.基于機器視覺AI智能識別的計量器具信息檢索系統研究與應用[J].中國計量,2022(10):47-48.DOI:10.16569/11-3720/t.2022.10.009.智能視覺應用快車道端邊云協同的AI視覺產業研究報告[C]//.艾瑞咨詢系列研究報告(2022年第9期).[出版者不詳],2022:48-89.高赟,王津,吳昊,楊旭濤.基于AIStudio平臺的《數字圖像與計算機視覺》課程改革[J].電子元器件與信息技術,2022,6(08):244-247.DOI:10.19772/ki.2096-4455.2022.8.059.周能兵,齊世龍,劉棟.基于計算機視覺識別的AI技術在工地安全管理的應用[J].建筑安全,2022,37(08):74-77.附錄電路圖源代碼classBEEP_3V3:def__init__(self,ctr_beep,ctr_init_level):self.ctr_beep=ctr_beepself.ctr_init_level=ctr_init_leveldefON(self):self.ctr_beep.value(self.ctr_init_level)defOFF(self):self.ctr_beep.value((1-self.ctr_init_level))defInit(self):self.OFF()defRUN(self,beep_state):self.ctr_beep.value(beep_state)classHC_SR04:def__init__(self,uart):self.uart=uartdefInit(self):self.uart.init(9600,timeout=1000,read_buf_len=10240)#重新設置串口波特率defRece_Data_Handle(self):distance_f_cm_err=0.0distance_f_cm_min=3.0distance_f_cm_max=55.0temp=[0.0,0.0,0.0,0.0,0.0,0.0]distance_f_cm_temp=distance_f_cm_errself.uart.write(b'\xA0')forrece_delay_countinrange(len(temp)):distance_f_cm_temp=0.0rece_data=self.uart.read()ifnotrece_dataisNone:#if(notrece_data[0]isNone)and(notrece_data[1]isNone)and(notrece_data[2]isNone):iflen(rece_data)==3:print('[0]:',rece_data[0])print('[1]:',rece_data[1])print('[2]:',rece_data[2])distance_f_cm_temp=(rece_data[0]*255*255+rece_data[1]*255+rece_data[2])/10000if0<distance_f_cm_temp<distance_f_cm_min:distance_f_cm_temp=distance_f_cm_minelifdistance_f_cm_temp>distance_f_cm_max:distance_f_cm_temp=distance_f_cm_maxelse:passtemp[rece_delay_count]=distance_f_cm_tempforcount_temp_1inrange(len(temp)):ifdistance_f_cm_errintemp:temp.remove(distance_f_cm_err)iflen(temp)==0:returndistance_f_cm_erreliflen(temp)==1:returntemp[0]else:forcount_temp_2inrange(len(temp)):ifdistance_f_cm_minintemp:temp.remove(distance_f_cm_min)iflen(temp)==0:returndistance_f_cm_mineliflen(temp)==1:returntemp[0]else:forcount_temp_3inrange(len(temp)):ifdistance_f_cm_maxintemp:temp.remove(distance_f_cm_max)iflen(temp)==0:returndistance_f_cm_maxeliflen(temp)==1:returntemp[0]eliflen(temp)==2:returnsum(temp)/2else:return(sum(temp)-max(temp)-min(temp))/(len(temp)-2)classLED_X:def__init__(self,ctr_led,ctr_init_level):#端口,點亮電平self.ctr_led=ctr_ledself.ctr_init_level=ctr_init_leveldefON(self):self.ctr_led.value(self.ctr_init_level)defOFF(self):self.ctr_led.value((1-self.ctr_init_level))defInit(self):self.OFF()defRUN(self,led_state):self.ctr_led.value(led_state)importKPUaskpuimportsensorimportlcdfromMaiximportGPIOfromfpioa_managerimportfmimporttimeimportgcfrommicropythonimportconst#導入constfromboardimportboard_infofrommachineimportTimer,PWM#ServofrommachineimportUARTimportHC_SR04_Drive#測距importSG90_180_Drive#阻車器importBEEP_3V3_Drive#蜂鳴器使用了模塊,低電平觸發importLED_Drive#LED#########################################My-config##############################################SYS_Status='END'#系統狀態:狀態可設置Operation_State=0#識別結果:0-環境,1-車前臉(合法),2-車后臉(合法),3,車前臉(非法),4,車后臉(非法)#自動/手動Manual_Mode=0#手動模式:0:自動模式1:手動模式--開阻車器2:手動模式--關閉阻車器可設置Squeezer_State=0#阻車器狀態Warning_State=[0,0]#警告狀態--Warning_State[0]車輛:0正常,1非法Warning_State[1]距離:0正常,1過近#測量Distance_1_f_cm=50.0Distance_1_f_cm_THR=30#閾值可設置###############################################################################################################################################config#################################################class_num=3#類數量sample_num=25#樣本數量THRESHOLD=12.5#閾值class_names=['Surroundings','Car-front','Car-back']#類名稱:環境、車前臉、車后臉board_cube=0Identify_Results={'Identify_Situation':"",'Identify_Index':''}#識別結果cap_num=0#抓取訓練數量train_status=0#訓練狀態last_cap_time=0#上次訓練抓取時間last_btn_status=1#上次按鍵狀態#############################################################################################################################################HC_SR041################################################fm.register(board_info.PIN_DIS_RXD_MCU_TX_1,fm.fpioa.UART1_TX,force=True)fm.register(board_info.PIN_DIS_TXD_MCU_RX_1,fm.fpioa.UART1_RX,force=True)uart_1=UART(UART.UART1,9600,read_buf_len=10240)HC_SR04_1=HC_SR04_Drive.HC_SR04(uart_1)HC_SR04_1.Init()#Distance_1_f_cm=0.0#Distance_1_f_cm_THR=30.0#閾值#Distance_1_f_cm=HC_SR04_1.Rece_Data_Handle()############################################################################################################################################SG-90180#################################################tim1=Timer(Timer.TIMER1,Timer.CHANNEL0,mode=Timer.MODE_PWM)Ctr_Sg90_180_1=PWM(tim1,freq=50,duty=0,pin=board_info.PIN_Ctr_SG90_180)Sg90_180_1=SG90_180_Drive.SG90_180(Ctr_Sg90_180_1)Sg90_180_1.Init()#initSG-90180#Sg90_180_1.Open(0)#不予開啟(關閉舵機)#Sg90_180_1.Open(-90)#予以開啟(開舵機-90)##############################################################################################################################################BEEP###################################################fm.register(board_info.PIN_Ctr_BEEP,fm.fpioa.GPIO0)#注冊IO-Ctr_BEEPCtr_BEEP=GPIO(GPIO.GPIO0,GPIO.OUT)BEEP=BEEP_3V3_Drive.BEEP_3V3(Ctr_BEEP,0)#構建對象:BEEP,使用了模塊,低電平觸發(必須3V3供電,否則有問題)BEEP.Init()#初始化:BEEP#time.sleep_ms(1000)#BEEP.OFF()#蜂鳴器關閉#BEEP.ON()#蜂鳴器開啟##############################################################################################################################################LED###################################################fm.register(board_info.PIN_Ctr_LED,fm.fpioa.GPIO1)#注冊IO-Ctr_LEDCtr_LED_01=GPIO(GPIO.GPIO1,GPIO.OUT)LED_01=LED_Drive.LED_X(Ctr_LED_01,0)#構建對象:LED_01,低電平點亮LED_01.Init()#初始化:LED_01#time.sleep_ms(1000)#LED_01.OFF()#LED關閉#LED_01.ON()#LED開啟##############################################################################################################################################KEY######################################################KEY_BOOTfm.register(board_info.PIN_KEY_BOOT,fm.fpioa.GPIOHS0)KEY_BOOT=GPIO(GPIO.GPIOHS0,GPIO.PULL_UP)#KEY_SYSfm.register(board_info.PIN_KEY_SYS,fm.fpioa.GPIOHS1)#注冊IO-KEY_SYSKEY_SYS=GPIO(GPIO.GPIOHS1,GPIO.IN,GPIO.PULL_UP)#構建KEY_SYS對象defexit_KEY_SYS_fun(KEY_SYS):#KEY_SYS中斷回調函數globalSYS_Status,train_statusglobalManual_Modeiftrain_status!=0:#若:訓練完成time.sleep_ms(10)#消除抖動ifKEY_SYS.value()==0:#確認按鍵被按下ifSYS_Status=='END':SYS_Status='RUN'else:SYS_Status='END'Manual_Mode=0KEY_SYS.irq(exit_KEY_SYS_fun,GPIO.IRQ_FALLING)#開啟中斷,下降沿觸發#########################################################################################################################################文字顯示######################################################defdraw_string(img,x,y,text,color,scale,bg=None):ifbg:img.draw_rectangle(x-2,y-2,len(text)*8*scale+4,16*scale,fill=True,color=bg)img=img.draw_string(x,y,text,color=color,scale=scale)returnimg#########################################################################################################################################異常/正常#######################################################Operation(SYS_Status,Manual_Mode,Operation_State,Distance_1_f_cm_THR,Distance_1_f_cm)defOperation(sys_status,manual_mode,operation_state,thr_distance,m_distance):globalSg90_180_1,BEEP,LED_01#資源globalSqueezer_State#阻車器狀態globalWarning_State#警告狀態--Warning_State[0]車輛:0正常,1非法Warning_State[1]距離:0正常,1過近Warning_State[0]=0#警告狀態--車輛:0正常,1非法Warning_State[1]=0#警告狀態--距離:0正常,1過近squeezer_flag=1#阻車器Flag:初始默認開啟阻車器ifsys_status=='RUN':#RUNifmanual_mode==0:#自動模式ifoperation_state==1:#(允許駛入)squeezer_flag=0#關閉阻車器elifoperation_state==2:#(不允許駛入)Warning_State[0]=1#警告狀態--車輛:0正常,1非法else:#環境/其他passelifmanual_mode==1:#手動模式:開passelifmanual_mode==2:#手動模式:關squeezer_flag=0#關閉阻車器else:pass#判斷距離非法:ifm_distance<thr_distance:Warning_State[1]=1#警告狀態--距離:0正常,1非法else:passelse:#ENDpass#警告判斷:蜂鳴器、燈光beep_flag=0#蜂鳴器Flag:初始默認關閉led_flag=0#燈珠Flag:初始默認關閉ifWarning_State[0]==1:#非法車輛(蜂鳴器、燈光)beep_flag=1#開啟:蜂鳴器led_flag=1#開啟:ledelse:passifWarning_State[1]==1:#非法距離(蜂鳴器示警)beep_flag=1#開啟:蜂鳴器else:pass#執行執行:蜂鳴器、燈光、阻車器#蜂鳴器ifbeep_flag==1:#開啟蜂鳴器BEEP.ON()#蜂鳴器開啟else:BEEP.OFF()#蜂鳴器關閉#燈光ifled_flag==1:#開啟ledLED_01.ON()#led開啟else:LED_01.OFF()#led關閉#阻車器ifsqueezer_flag==1:#開啟阻車器Squeezer_State=1#阻車器狀態Sg90_180_1.Open(-90)#予以開啟(開舵機-90)else:#關閉阻車器Squeezer_State=0Sg90_180_1.Open(0)#不予開啟(關閉舵機)###############################################################################################################################################HC-05#################################################fm.register(board_info.PIN_HRXD_MCU_TX,fm.fpioa.UART2_TX,force=True)#注冊到內部IOfm.register(board_info.PIN_HTXD_MCU_RX,fm.fpioa.UART2_RX,force=True)#注冊到內部IOHC_05=UART(UART.UART2,9600,8,1,0,timeout=1000,read_buf_len=4096)#inituartSend_Data='-'Rece_Data='-'#######################################################################################################################################Send_Data_Handle############################################defSend_Data_Handle():#發送globalSend_DataglobalSYS_Status,Manual_Mode,Operation_StateglobalDistance_1_f_cm_THR,Distance_1_f_cmglobalSqueezer_State,Warning_StateSend_Data="+SS%sMM%1dAS%1dTHR%02dDT%04.1fS%1dW%d%d-"%(SYS_Status,Manual_Mode,Operation_State,Distance_1_f_cm_THR,Distance_1_f_cm,Squeezer_State,Warning_State[0],Warning_State[1])HC_05.write(Send_Data)##############################################################################################################################################Tim-0################################################TIM_0_THRESHOLD_MS=1000#定時器回調函數周期1000msdeffun_tim0(tim0):globaltrain_statusiftrain_status!=0:#若:訓練完成Send_Data_Handle()#定時器1初始化,周期10mstim0=Timer(Timer.TIMER0,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=TIM_0_THRESHOLD_MS,callback=fun_tim0)#######################################################################################################################################Rece_Data_Handle############################################defRece_Data_Handle():globalRece_DataglobalSYS_StatusglobalManual_ModeglobalDistance_1_f_cm_THRtmp=HC_05.read()ifnottmpisNone:print(tmp)Rece_Data=tmp.decode()print(Rece_Data)ifRece_Data[0]=='+'andRece_Data[-1]=='-':ifRece_Data[1]=='S'andRece_Data[2]=='S':if(Rece_Data[3:-1]=='RUN')or(Rece_Data[3:-1]=='END'):SYS_Status=Rece_Data[3:-1]ifSYS_Status=='END':Manual_Mode=0else:passelifRece_Data[1]=='M'andRece_Data[2]=='M':mm_tmp=0mm_tmp=int(Rece_Data[3])ifSYS_Status=="RUN":if0<=mm_tmp<=2:Manual_Mode=mm_tmp#賦值else:passelse:passelifRece_Data[1]=='T'andRece_Data[2]=='H'andRece_Data[3]=='R':thr_tmp=0thr_tmp=int(Rece_Data[4:-1])ifSYS_Status=="END":if1<=thr_tmp<=50:Distance_1_f_cm_THR=thr_tmp#賦值else:passelse:passelse:passRece_Data=Noneelse:Rece_Data=Nonetmp=None#####################################################################################################設置攝像頭sensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QVGA)sensor.set_windowing((224,224))#ifboard_cube==1:#sensor.set_vflip(True)#sensor.set_hmirror(True)#lcd.init(type=2)#lcd.rotation(2)#else:#lcd.init()#初始化LCDlcd.init()#設置攝像頭水平與垂直鏡像sensor.set_vflip(True)sensor.set_hmirror(True)#再次運行刪除模型try:delmodelexceptException:passtry:delclassifierexceptException:passgc.collect()model=kpu.load("/sd/sipeed_learn_model.smodel")#加載模型#model=kpu.load(0x300000)classifier=kpu.classifier(model,class_num,sample_num)#模型初始化while1:Identify_Results['Identify_Situation']=''Identify_Results['Identify_Index']=''img=sensor.snapshot()#采集圖片ifboard_cube:img=img.rotation_corr(z_rotation=90)img.pix_to_ai()#captureimgiftrain_status==0:#如果訓練狀態:0(未訓練)ifKEY_BOOT.value()==0:#如果按鍵值為:0(按下)time.sleep_ms(30)#延時30msifKEY_BOOT.value()==0and(last_btn_status==1)and(time.ticks_ms()-last_cap_time>500):#如果按鍵按下&&上次按鍵狀態==1&&時差大于500last_btn_status=0#上次按鍵狀態=1last_cap_time=time.ticks_ms()#更新上次抓取時間ifcap_num<class_num:#如果抓取數量<類數量index=classifier.add_class_img(img)#添加類圖片,并獲取當前添加圖片的indexcap_num+=1#cap_num自增1print("addclassimg:",index)#打印當前添加的類elifcap_num<class_num+sample_num:#如果:類數量<抓取數量<類數量+樣例數量index=clas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論