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