
現在我講一講這個系統設計:基于STM32單片機設計的消毒小車主體構成由STM32單片機、紅外傳感器、超聲波傳感器、紅外接收管、藍牙通訊模塊、OLED液晶顯示、四驅小車、除塵模塊、霧化加濕與消毒模塊、串口和指示燈等模塊構成。通過STM32F030C8T6單片機對各功能模塊的控制或者處理探測以及通訊模塊發送的信息,從而根據設定的程序去控制和使能紅外避障、超聲波測距、紅外循跡、小車電機驅動、紅外遙控、除塵、加濕、消毒等模塊,實現了對消毒小車的智能控制,完成室內環境的清潔、加濕和消毒等工作。并且通過STM32F030C8T6主控芯片讀取當前消毒小車的工作狀態,并將讀取的數據通過程序轉化成可讀字符,通過串口發送到OLED顯示屏實時顯示當前工作狀態。消毒小車的總體設計基于STM32單片機處理設定程序和算法計算對消毒小車的各個模塊進行控制,實現了無人智能的危險場所的消毒工作。如下圖是消毒小車的總體設計方案:

本消毒小車集成了探測模塊、清潔模塊和消毒模塊。探測模塊的作用是用于探測和采集外界環境信息;清潔裝置用于環境的除塵和加濕;消毒裝置用于區域的消毒工作。其基本工作過程是啟動消毒小車后,STM32單片機通過處理程序代碼控制消毒小車的各個模塊,首先根據規劃路徑自動循跡行駛,并且開始進行除塵和加濕工作,當清潔任務完成之后,開始對室內進行消毒工作,從而實現對危險區域的非人工消毒。所以任務完成之后消毒小車停止運行并等待工作人員重新發布指令,此時工作人員可以通過紅外遙控或者藍牙端控制消毒小車重新進行室內消毒或者驅動消毒小車駛出消毒的室內,進行消毒液的填充和儲塵罐的清除工作。
1、STM32單片機主控模塊
本消毒小車設計采用STM32F030C8T6 單片機作為主控芯片,STM32F030C8T6單片機是基于ARM公司的 Cortex?-M0 32 位 RISC 內核。其程序閃存的容量高達64KB字節,CPU頻率達到48MHz,提供高速嵌入式存儲器,足以滿足完成改設計的程序存儲和通訊需求,其工作電壓在2.4 至 3.6 V,可以在零下四十攝氏度至八十五攝氏度之間保持正常的工作,具有低電壓和低功率和實時性能等特性,其包括各種外設和I/O口,如12 位的 ADC數據采集通道、16 位計時器和一個高級控制 PWM 計時器,以及SPI 、I2C和 USART(UART) 等通信接口,具有易于使用功能,足以滿足完成對消毒小車的控制和通訊接口的需求。此主控芯片的主要作用是進行程序處理及執行并對外設電路進行控制和處理的采集信息等。在本次設計里我使用的是基于STM32F030C8T6芯片的最小系統開發板,所謂最小系統板就是滿足單片機的正常工作的情況下,使用最少的元件讓整個系統板的功能引腳引出,使其根據操作者需求來自由配置及使用進行開發。如下圖是STM32F030C8T6 最小系統板:

在這個STM32F030C8T6最小系統板上使用USB接口的5V通過線性穩壓芯片AMS1117-3.3轉換為單片機工作電壓的3.3V給其供電,然后根據需求配置所需的單片機I/O引腳并燒錄的程序使能各模塊對應I/O引腳,即可通過單片機使能消毒小車電機驅動、消毒、除塵、加濕等模塊,以及讀取紅外傳感器、紅外遙控、藍牙通訊等模塊輸出數據,從而實現消毒小車各個模塊的正常工作。作為主控芯片STM32F030C8T6是消毒小車整體功能實現的核心,對了解各模塊的工作狀態、控制各模塊數據的輸入輸出發揮著關鍵的作用。
2、L298N芯片電機驅動模塊
本消毒小車的電機驅動模塊采用ST公司的L298N作為驅動芯片。該L298N驅動板的工作電壓范圍在6V至46V內,可持續穩定的提供2A的工作電流,具有抗干擾能力強、發熱量低、驅動能力強等特性,并且具有反饋檢測功能和過熱自斷安全保護等,滿足了驅動消毒小車的動力,也保障了消毒小車的用電安全性。其內部有兩個H橋,是專用驅動的IC芯片,其輸入端可以直接與單片機相連,通過TTL邏輯電平信號對使能控制端進行控制輸出端。其工作原理是通過STM32F030C8T6主控芯片的I/O輸入對其控制電平進行設定,使能邏輯通道IN1,IN2,IN3,IN4分別控制out1,out2,out3,out4,利用out1與out2,out3與out4兩者電位差(即電位的不同)就可以實現驅動電機進行正轉或者反轉。本設計使用四個電機分別控制消毒小車的左前輪、左后輪、右前輪和右后輪,而一片L298N芯片可以同時驅動兩臺直流電機,通過左前輪和左后輪電機并聯,右前輪和右后輪電機并聯的方式,對IN1,IN2,IN3,IN4不同組合搭配進行使能,從而滿足實現控制消毒小車的左(前后)輪、右(前后)輪電機實現驅動消毒小車前進、后退、左轉和右轉等功能。本設計使用STM32F030C8T6的GPIOA3、GPIOA4、GPIOA5、GPIOA6引腳作為對應使能L298N驅動板的IN1、IN2、IN3、IN4的I/O口進行控制。如下圖是STM32電機驅動接口原理圖和 L298N芯片電機驅動模塊原理圖:

3、紅外循跡和避障模塊
本設計用到的循跡及避障傳感器采用TCRT5000紅外光電傳感器模塊,TCRT5000光電傳感器模塊設計是基于一款紅外反射式開關器件,工作電壓為 3.3V-5V。傳感器采用紅外線對射管原理,發射功率紅外光電二極管和光電接收管組成,其可通過調節模塊上的電位器調節探測距離,即通過調節硬件外設就能實現檢測距離的設定,極大程度的減少了程序開發的復雜性,具有使用方便、功能易使用的特點,用于消毒小車設計的避障及循跡模塊足以滿足需求,并且其模塊價格便宜,具有很好的性價比。
當用于循跡功能時,結合其高靈敏度,靈敏度可調以及感應的遮擋距離 0-3cm等特性,其工作原理是TCRT5000傳感器的紅外發射二極管不斷發射紅外線,通過比較器LM393芯片進行電壓比較,當沒有檢測到物體出現在檢測范圍內時,發射出的紅外線沒有被反射回來或被反射回來但強度不夠大時,紅外接收管一直處于關斷狀態,模塊的OUT口輸出端為高電平,指示二極管一直處于熄滅狀態,此時主控芯片讀取GPIOA11、GPIOA12引腳電平都為高電平,控制消毒小車保持正常行駛(即前進狀態);當檢測到物體出現在檢測范圍內時,紅外線被反射回來且強度足夠大,紅外接收管飽和,模塊的OUT輸出端為低電平,指示二極管被點亮,此時主控芯片讀取GPIOA11、GPIOA12引腳電平為GPIOA11低電平或者GPIOA12為低電平或者兩者都為低電平,分別控制消毒小車進行左循跡、右循跡和停止等狀態,從而完成消毒小車的自主循跡功能。
當用于避障功能時,首先根據其有效距離范圍 2~8厘米的探測距離,通過調節電位器旋鈕設定最佳檢測距離,然后根據檢測角度35度進行模塊固定,達到有效檢測物體的目的。其工作原理:一定頻率的紅外線通過紅外光電發射管朝35度探測角發射,當探測方向檢查到障礙物時,紅外接收管接收到反射回來的紅外線,經過LM393芯片組成的比較電路對紅外接收管電壓的變化進行比較,通過OUT輸出接口輸出低電平信號給到相連的單片機I/O口,此時主控芯片讀取GPIOF6、GPIOF7的引腳電平狀態,控制消毒小車進行左避障或者右避障或者停止及后退等狀態。綜上所述,該紅外光電傳感器模塊滿足了實現消毒小車自主循跡以及避障的功能需求。
在本設計中使用STM32F030C8T6的GPIOA11、GPIOA12、GPIOF6、GPIOF7引腳分別連接4個TCRT5000紅外光電傳感器模塊的OUT引腳進行數據的傳輸,并且使用VCC 3.3V進行供電。如下圖是STM32紅外循跡和避障接口和紅外光電傳感器模塊所示:


4、JDY-30藍牙模塊
本設計使用的藍牙通訊模塊是JDY-30藍牙模塊,JDY-30藍牙模塊基于藍牙 3.0 SPP 設計,具有藍牙2.1協議標準,支持 Windows、Linux、android 等數據透傳, 其工作頻段 2.4GHZ,最大發射功率 8db,最大發射離 30 米,具有數據傳輸快、信號器強、性能穩定等特性;其工作原理,首先需要主控芯片的串口通訊的波特率與藍牙模塊的波特率相一致,然后通過手機端安裝的藍牙調試助手進行藍牙連接,客戶端進行發送特定數據指令通過JDY-30藍牙模塊接收數據然后發送給主控芯片,主控芯片對數據指令進行讀取并處理,即可對消毒小車進行遠程的指令控制。該模塊在消毒小車設計中用于實現消毒小車與客戶端的無線通訊的功能,讓用戶通過手機端也能對小車進行控制,方便用戶控制消毒小車駛出危險工作環境等,是實現消毒小車更好的減少人們對危險環境的人工介入可能,同時也是消毒小車與用戶進行人機交互的重要途徑之一。本設計用到STM32F030C8T6的GPIOB7引腳USART1_RX同步串口接收端、GPIOB6引腳USART1_TX同步串口發送端,JDY-30的兩個引腳TXD發送端和RXD接收端,其中需要注意藍牙模塊和主控芯片引腳的接收與發送引腳的對應關系,STM32F030C8T6的USART1_RX引腳與JDY-30模塊的TXD發送端相連,USART1_TX引腳與RXD接收端相連,以此實現JDY-30藍牙模塊接收客戶端發送的數據指令并把接收的數據指令發送到主控芯片的接收端,然后主控芯片對數據指令進行處理,從而實現客戶端對消毒小車的無線通訊。使用STM32F030C8T6最小系統板的VCC 3.3V進行供電,保持其供電的穩定性,以此保障了藍牙無線通訊的穩定性。如下圖是STM32藍牙模塊接口和 JDY-30藍牙模塊所示:

5、超聲波測距模塊
本設計采用了HC-SR04 超聲波測距模塊,由于超聲波在空氣中傳播途中碰到物體會發生反射和折射,可通過超聲波接收裝置接收超聲波發射裝置發射的超聲波的時間差,計算得出跟障礙物的距離,其指向性強、檢測比較方便且計算簡單,非常適用于消毒小車對外界環境的測距,該模塊可提供 2cm-400cm 的非接觸式距離感測功能,測距精度可達高到 3mm,足以滿足消毒小車做出正常的避障反應。超聲波測距模塊電路包括超聲波發射器、接收器以及控制電路等,其基本工作原理:首先通過主控芯片的GPIOB10引腳給超聲波測距模塊的I/O 口 Trig上拉10us以上的高電平觸發信號和輸出一個40kHz的脈沖信號,使其觸發測距并驅動超聲波發送器發出40KHz的脈沖,超聲波超聲波測距模塊的發射器向一定方向發射超聲波[15]。同時,單片機通過啟動時設定的程序進行定時啟動,超聲波在空氣中傳播并在途中遇到障礙物時返回,此時超聲波接收器會自動檢測是否有信號返回,當超聲波測距模塊的接收器收到反射波后通過產生一個回應信號并通過模塊 I/0 口 Echo 輸出一個持續的高電平反饋給主控芯片的GPIOB11引腳,此時單片機就立即停止計時,高電平持續的時間就是超聲波從發射到返回的時間T。如下圖是超聲波測距信號時序圖。由于超聲波在空氣中的傳播速度V為340m/s,根據計時器記錄的時間T,就可以計算出發射點距障礙物的距離,即:S=VT/2,通過單片機來算出距離。該超聲波測距模塊能通過實時模擬最佳的設定消毒小車遇到障礙時的距離,確保消毒小車能及時有效的做出避障響應動作,該模塊在消毒小車的避障設計中具有重要的意義。本設計用到STM32F030C8T6的GPIOB10、GPIOB11分別與超聲波模塊的Trig和Echo引腳相連。如下圖是超聲波測距模塊原理圖:

6、紅外遙控模塊
本次設計中為了使消毒小車能更加的方便移動和更多的趣味性,加入了紅外遙控器遠程控制的功能,可以直接通過遙控器發送指令對消毒小車進行控制。該紅外遙控模塊主要由一個紅外發光管、信號調制電路、一體化紅外接收頭和按鍵等組成。其工作原理是,其紅外遙控器將按鍵信息編碼和調制之后,通過一個紅外發光二極管,以紅外光為載體的形式把按鍵信息傳遞到STM32最小系統板的一體化紅外接收端,然后通過單片機對按鍵信息進行接收和解碼。該紅外遙控具有兩種狀態,分別是控制狀態和學習狀態,本次設計中用到控制狀態對消毒小車進行遠程的遙控。當遙控器處于控制狀態時,按下一個按鍵,在處理器讀取一系列二進制數串行輸出并通過調制電路進行調制,通過紅外LED發出一系列調制信號,該信號通過一體紅外接收端接收,輸出解調后的數字脈沖,因為每個按鍵對應的按鍵脈沖不同,故能通過程序對不同按鍵進行不同的控制編寫,從而實現按鍵對消毒小車的控制。本次設計用到STM32F030C8T6的GPIOB2與紅外接收管相連,如下圖是STM32 紅外遙控接口:

7、除塵模塊
本次設計中對除塵模塊的硬件選型,考慮到消毒小車可供電電壓的大小、其裝載空間以及與消毒小車整體結構適配等因素,故選擇了5V供電的USB吸塵器作為除塵模塊,以此可整合到其他模塊實現消毒小車的設計要求。該吸塵器主要包括通風管、中間的儲塵倉、抽氣渦輪、馬達和空氣過濾網等,其工作原理就是通過驅動馬達讓抽氣渦輪旋轉,使其內部產生壓差,然后其通風管的口徑相對較小,因此通風管處產生較強的吸力,從而實現對灰塵和一些小垃圾的清除。除塵模塊的使能采用ULN20001N驅動芯片構成的驅動電路進行控制,然后由單片機根據程序設定控制GPIO口的輸出電平,對應的使能驅動芯片的使能控制引腳來達到對除塵模塊控制。本次設計用到STM32F030C8T6的GPIOA7引腳(Dust)與ULN20001N驅動芯片的IN1使能引腳相連。
8、霧化消毒及加濕模塊
本次設計采用了微孔霧化片來實現消毒小車消毒及加濕的功能,其采用不銹鋼材質制作而成,使其表面光滑細膩,具有防腐蝕性和耐酸堿的特點,諧振頻率在108KHz至110KHz之間,能夠產生極其細小的水霧。該霧化消毒及加濕模塊主要包括微孔霧化片、集成驅動電路板、霧化支架和海綿吸棒等。其工作原理就是將海綿吸棒通過霧化支架固定在浸泡在水里的容器中,然后霧化片中間的微孔與海綿吸棒接觸,通過給集成驅動電路板使能上電讓微孔霧化片產生高頻的振蕩運動,使其將水或者消毒水等液態水分子結構打散而產生非常多細小的水霧,通過中間的微孔區域飄散出去,從而實現霧化的作用。霧化消毒及加濕模塊的使能采用ULN20001N驅動芯片構成的驅動電路進行控制,然后由單片機根據程序設定控制GPIO口的輸出電平,對應的使能驅動芯片的使能控制引腳來達到對加濕和消毒模塊的控制。本次設計用到STM32F030C8T6的GPIOB0引腳(Wet)、GPIOB1引腳(SAM)分別與ULN20001N驅動芯片的IN2、IN3使能引腳相連。如下圖是STM32 除塵加濕消毒接口所示:

9、OLED顯示屏模塊
本次設計采用OLED顯示屏模塊進行功能狀態的中文顯示,采用的0.96寸OLED顯示屏具備自發光,具有反應速度快、對比度高和價格便宜等特點,該顯示屏使用的是SSD1306集成芯片進行驅動,SSD1306具有128個列輸出和64個行輸出的,剛好驅動0.96寸OLED顯示屏的128*64點陣大小,即分辨率為128*64,足以滿足本次設計中消毒小車(除塵、加濕、消毒)三種工作狀態的中文顯示。其基于集成電路總線的通信屏幕,當我們讀寫集成電路總線時,必須使用IIC的通信協議,并根據協議的要求設置相應的值,通過程序控制SCL時鐘控制引腳和SDA數據傳輸引腳的高電平和低電平的變化對OLED屏幕進行控制的。因此,根據IIC協議對單片機的GPIO口配置相應的輸入輸出,就可以實現對OLED顯示模塊的控制。該模塊在消毒小車的設計中起到實時顯示工作狀態的功能,能讓我們更好的觀察和知曉消毒小車具體的工作模式等。本設計用到STM32F030C8T6的GPIOB8、GPIOB9分別與OLED顯示模塊的SDA和SCL引腳相連。如下圖是 STM32 OLED顯示屏接口所示:

10、 程序下載與調試模塊
本次設計采用ST-LINK V2進行STM32單片機的仿真燒錄調試。其支持JTAG和SWD兩種下載方式,在本設計里選擇的是SWD下載方式,該編譯器跟單片機連接的所需引腳數量較少,而且使用比較簡單,只需要將其3.3V 電源?正極、電源負極、數據輸出引腳SWDIO、時鐘配置引腳SWCLK等四個引腳與STM32最小系統板對應連接。當程序燒錄時,需要在Keil5 MDK 上選擇使用ST-link Debugger為ARM編譯器,然后勾選燒錄模式為SW,即可將程序運行成功自動生成的.HEX文件燒錄到單片機。如下圖是 STM32 下載及調試接口所示:



優秀原創文章要求:
1、文章條理清晰,非流水賬堆積,非機翻
2、內容和電子行業相關,
3、多圖,有代碼,可提高打賞
活動時間:2023年全年
點擊閱讀原文,了解活動詳情!