張一夫 陳天飛 馮明興



摘 要:文中設計了一種基于樹莓派的移動環境監測系統,使用該系統能夠釋放勞動力、提高工作效率,并監測人無法到達的惡劣環境。該系統以樹莓派嵌入式卡片電腦作為主控,與Arduino開發板控制的移動平臺和STM32單片機控制的環境監測平臺進行通信,能夠在遠程控制的情況下采集系統周圍的圖像和環境數據。經測試,發現該移動環境監測平臺能夠較好地實現預期功能,且工作穩定。
關鍵詞:樹莓派;移動平臺;環境監測;遠程控制;Arduino;STM32單片機
中圖分類號:TP393文獻標識碼:A文章編號:2095-1302(2019)07-00-03
0 引 言
近年來自然環境逐漸惡化,對人們帶來的負面影響越來越嚴重,保護環境的重要性日益提升[1]。為了更好地保護環境,需要對環境數據進行測量,目前雖然出現了一些遠程測量技術,但由于種種原因[2],有時人們不得不暴露在惡劣的環境下測量數據。針對以上問題,本文設計了一種移動環境監測系統,系統中樹莓派[3]分別通過兩個USB串口、小車底盤的Arduino開發板[4]和環境監測系統的STM32單片機[5]通信,以實現獲取環境監測數據和底盤自由移動的功能,配合USB攝像機完成圖傳,通過WiFi與上位機傳輸數據進行遠程控制。
1 整體方案設計
系統的核心是樹莓派,它與移動平臺Arduino的通信由串口UART1完成,與STM32環境監測平臺的通信通過串口UART2完成。除樹莓派上的USB攝像機外,系統的傳感器主要分布在STM32環境監測平臺上。上位機與樹莓派通信的目的在于遠程控制平臺移動,傳輸環境監測移動平臺測得的環境數據和攝像機捕獲的圖像借助WiFi實現。
(1)樹莓派通過WiFi與電腦進行遠程連接實現遠程監控的功能;
(2)通過樹莓派上的攝像機捕捉畫面,然后樹莓派經串口控制移動平臺并讀取環境監測平臺的數據;
(3)實現遠距離控制系統的功能。
移動平臺選擇Arduino開發板作為控制器,還包括航模電池、電機驅動器、電機、編碼器、穩壓電源,能夠根據樹莓派發送的命令做出不同的動作。
環境監測系統選擇STM32F103單片機,包括煙霧傳感器模塊、有害氣體傳感器模塊、溫濕度傳感器模塊、人體紅外檢測模塊、光敏電阻光照檢測模塊。使用串口將偵測到的數據傳遞給樹莓派進行遠程監測,數據可通過系統自帶的TFT-LCD屏顯示,方便現場查看。
2 硬件設計
2.1 樹莓派部分
樹莓派共使用三個USB接口,分別接攝像機和兩個USB串口模塊。其中USB3連接攝像機用來采集圖像,與樹莓派VNC功能[6]配合實現遠程監視;USB2接USB轉串口模塊與STM32環境監測系統通信以實現環境監測的功能;USB1接USB轉串口模塊負責與Arduino開發板通信,以實現通過樹莓派控制小車行走的功能。樹莓派USB口分配見表1所列。
2.2 小車底盤部分
Arduino開發板基于Atmega168單片機,其I/O口已映射到開發板的接口[7]。使用其作為控制器,配合樹莓派、編碼器、電機驅動器等設計移動平臺,硬件設計如圖2所示。
Arduino的I/O口中,0引腳和1引腳作為串口使用,以完成與樹莓派的通信,小車使用2號和3號引腳采取外部中
斷[8]的方法測速,電機驅動器使用兩個BTS7960[9]驅動模塊,將使能端接高電平,然后將正轉端和反轉端分別接入PWM引腳以調速。本文的兩個電機驅動器分別使用開發板的5,6號引腳與9,10號引腳,其中5號引腳輸出PWM脈沖時,代表小車左輪向前轉;6號引腳輸出PWM脈沖時,代表小車右輪向后轉;9號引腳輸出PWM脈沖時,代表小車右輪向前轉;10號引腳輸出PWM脈沖時,代表小車左輪向后轉。根據對應管腳依次連接電源、串口、編碼器、電機驅動器,開發板接線見表2所列。
2.3 環境監測部分
在環境監測平臺中,各模塊與STM32的對應關系如圖3
所示。除STM32單片機外圍電路占用的引腳[10]外,還包括與樹莓派通信的UART2:引腳PA9,PA10;煙霧傳感器模塊的MQ2_ADC:引腳PA1;有害氣體傳感器模塊的MQ135_ADC:引腳PC1;溫濕度傳感器模塊的DHT11:引腳PC3;人體紅外檢測模塊的PESON_CHECK:引腳PA4;光敏電阻光照檢測模塊的GZ_ADC:引腳PC2;LCD屏的SPI1:引腳PC6,PC7,PC8,PB12,PB13,PB14,PB15;FLASH存儲模塊的SPI2:引腳PA5,PA6,PA7。
3 軟件設計
3.1 樹莓派軟件設計
樹莓派在系統中與各組塊通信,作為遙控信號的接收器以及圖像數據和環境數據的發送器,其主要作用是根據用戶命令完成動作,并將圖像與環境數據通過WiFi回傳,具體流程如圖4所示。
小車底盤的操縱命令由樹莓派的遙控程序提供,通過串口發送根據用戶鍵盤輸入的命令以控制Arduino動作。因為系統的串口通信距離較短,可以不考慮干擾以及數據丟失的情況,故采用十六進制數來代表各命令。命令分為設置檔位、停車和移動三種,按Ctrl鍵串口輸出十六進制的0,按空格鍵串口輸出十六進制的1,按鍵盤方向鍵前后左右串口分別輸出十六進制的2,3,4,5。命令與數據的對應關系見表3所列。
3.2 小車控制軟件設計
小車底盤由樹莓派通過串口控制,當Arduino接收到不同的命令后,會根據命令進行相應的動作,流程如圖6所示,具體命令及其優先級如圖7所示。
3.2.1 小車運動建模
小車運動速度的變化通過PWM調節驅動電機的電壓實現,反饋測量則通過每個電機后面的編碼器輸出脈沖實現。使用Arduino對小車速度進行實時監測,小車電機安裝的編碼器輸出脈沖分辨率PPR為375.22,即小車輪子轉一圈后,輸出的脈沖數量為375.22個。對脈沖進行計數,設共有n個脈沖,然后n除以分辨率PPR,得到輪子旋轉的圈數,再除以時間t即可得到輪子的轉速N,公式如下:
3.2.2 小車運動控制
小車的啟停必須緩慢加速緩慢停車,否則容易空翻。以等梯度加速啟動,剛開始速度設為0,經過延時、測速后判斷是否達到預定速度,達到后不再加速,否則繼續加速,具體流程如圖8所示。
與等梯度加速類似,停車時緩慢減速。當接收到停車指令時進入停車程序,逐步減速,直至速度為0后停車。停車流程如圖9所示。
3.3 環境監測系統軟件設計
環境監測系統的主要功能是獲取各傳感器的數據,STM32單片機讀取各傳感器信息,并將其輸出的模擬量或數字量轉化為可讀的量后通過串口發送給樹莓派,同時顯示在LCD液晶屏上,循環執行,如圖10所示。
4 系統調試
4.1 整體調試
搭建的系統如圖11所示。
樹莓派連接WiFi,通過VNC Viewer軟件遠程登錄對系統進行調試。運行程序界面如圖12所示,可以觀測到樹莓派回傳的攝像機畫面,以及環境監測開啟按鈕“Open”和環境監測關閉按鈕“Close”。對小車進行控制,發現小車可以根據鍵盤的命令切換速度、停車以及移動。
4.2 環境監測系統調試
環境監測系統的PCB板及界面測試如圖13所示。
5 結 語
本文通過樹莓派搭建了一個移動環境監測平臺,該平臺能夠替代環境工作者進行環境數據監測,在提高效率的同時保障工作人員的生命健康。本系統中,樹莓派通過WiFi與上位機交換數據,通過兩個串口分別控制STM32環境監測平臺和Arduino移動平臺,通過調試發現系統能夠穩定地實現圖傳、遠程遙控和實時采集環境數據的功能。
參 考 文 獻
[1]孫曉東.環境監測與環境監測技術的發展分析[J].當代化工研究,2018(1):84-85.
[2]王幸,孫雯郁.抗惡劣環境下新型監控設備應用的重要性[J].經濟師,2015(4):66-67.
[3]柯博文.樹莓派(Raspberry Pi)實戰指南[M].北京:清華大學出版社,2015.
[4] Michael McRoberts. Arduino從基礎到實踐[M].2版.北京:電子工業出版社,2017.
[5]喻金錢,喻斌.STM32F系列ARMCortex.M3核微控制器開發與應用[M].北京:清華大學出版社,2011.
[6] Simon Monk.樹莓派開發實戰[M].北京:人民郵電出版社,2017.
[7]蔡睿妍.Arduino的原理及應用[J].電子設計工程,2012,20(16):155-157.
[8]董錚,袁磊,寧彬.基于Arduino的電機轉速控制系統[J].清遠職業技術學院學報,2015,8(6):59-62.
[9]李慧,李秀歌,婁利峰.飛思卡爾智能車設計方法討論[J].長春工程學院學報(自然科學版),2012,13(1):50-52.
[10]劉軍,張洋,嚴漢宇.例說STM32[M].2版.北京:北京航空航天大學出版社,2014.