張竣朋,崔志濤,孫 振,王逸卓
(1.合肥工業(yè)大學電子科學與應用物理學院,安徽合肥 230009;2.合肥工業(yè)大學儀器科學與光電工程學院,安徽 合肥 230009)
隨著居民城鎮(zhèn)化比例的提升,相比于農村,如今火災和氣體泄漏的事件屢有發(fā)生,因此有必要通過氣體檢測儀來檢測目的場所易燃易爆氣體濃度,從而判斷是否發(fā)生氣體泄漏。
氣體檢測儀有固定式和手持式兩種,其中固定式檢測儀較為笨重,使用不便;手持式檢測儀雖然便捷,但需要人到達室內手持設施進行檢測,這在室內氣體成分尚不明確的情況下,易使檢測者陷入危險境地。
因此計劃設計可無碰撞行走、可檢測房間易燃易爆氣體的智能小車尤其必要,既能夠有手持式檢測儀的便捷性,又能夠降低因室內檢測對人造成的安全風險。
該智能小車以Arduino Uno R3 為主板,搭配了超聲波測距模塊、易燃易爆氣體檢測模塊、藍牙模塊和舵機模塊,集成了自動避障、遙控回收、氣體檢測和實時傳輸數(shù)據(jù)等功能。
系統(tǒng)分為主控模塊、電源模塊、測距模塊、電機驅動模塊、無線通信模塊和氣體檢測模塊6 個部分。系統(tǒng)總體框圖如圖1 所示。
圖1 系統(tǒng)總體框圖
據(jù)此設計的智能小車實物圖如圖2 所示。
圖2 小車實物圖
2.1.1 MQ-2傳感器簡介
MQ-2 傳感器具有廣泛的應用,適用于液化氣、丙烷、氫氣及煙霧等氣體檢測。其使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫,故而靈敏度高。此傳感器可檢測多種可燃性氣體,是一款適合多種應用的低成本傳感器。
2.1.2 工作原理
當傳感器所處環(huán)境中存在可燃氣體時,傳感器的電導率隨空氣中可燃氣體濃度的增加而增大,電阻隨之減小,MQ-2 模塊有4 個引腳VCC、GND、D0和A0。其中D0 為開關信號(TTL)輸出,TTL 輸出有效信號為低電平,即當輸出低電平時信號燈亮。A0為模擬信號輸出,模塊內部電路將電導率的變化轉換為與該氣體濃度相對應的輸出電壓信號,因此濃度越高,輸出電壓越高。
圖3 為MQ-2 實物圖,圖4 為MQ-2 引腳說明圖,圖5 為其電路原理圖。由原理圖分析,MQ-2的4 腳輸出隨煙霧濃度變化的直流信號流入比較器U1A的2 腳,通過電阻Rp獲得比較器的門檻電壓。當煙霧濃度較大,輸出電壓高于門檻電壓時,比較器輸出低電平,此時LED 亮;反之當濃度較低,則LED 滅。
圖3 MQ-2實物圖
圖4 MQ-2引腳說明圖
圖5 MQ-2電路原理圖
2.1.3 MQ-2靜、動態(tài)電壓測試
由于MQ-2 在正常環(huán)境下也會輸出電壓,這一電壓稱為靜態(tài)電壓。將傳感器和Arduino 相連,打開電源,預熱2 min,用萬用表測量此時的模擬輸出端口的靜態(tài)電壓,測量結果如表1 所示。
表1 MQ-2靜態(tài)電壓
之后通過點燃干燥廢紙產生干燥煙霧模擬實景,測試煙霧源頭與傳感器的距離對輸出電壓的影響,此時電壓為動態(tài)電壓。
1)距傳感器5 cm 處點燃干燥廢紙產生煙霧飄入傳感頭,測試輸出電壓,如表2 所示。
表2 傳感器距煙霧5 cm時的輸出電壓
此時動態(tài)電壓比靜態(tài)電壓提高了0.4 V 左右,從而在實驗層面驗證了輸出電壓會因氣體濃度變大而增大的結論。
2)當傳感器距離煙霧變?yōu)?0 cm 時,方法同上,輸出電壓如表3 所示。
表3 傳感器距煙霧20 cm時的輸出電壓
此時動態(tài)電壓比靜態(tài)電壓提高了0.2 V 左右,較距離5 cm的情況降低了0.2 V,這說明距煙霧源頭越遠,電壓越小,即檢測到的濃度越低,與經驗相符。
2.2.1 測距原理
利用超聲波在空氣中的傳播速度已知,采用回波時間法,測量聲波在發(fā)射后遇到障礙物反射回來的時間,由發(fā)射和接收的時間差計算出發(fā)射點到障礙物的實際距離。測距公式為l=c×t/2。其中l(wèi)為測量的距離;c為超聲波在空氣中的傳播速度;t為發(fā)射到接收的時間差。
超聲波的傳播速度受空氣密度影響,空氣密度越高則超聲波的傳播速度越快,而空氣的密度又與溫度有著密切的關系,近似公式為c=c0+0.607×t。其中c0為零度時的聲波速度332 m/s;t為實際溫度,單位為℃。
2.2.2 模塊工作步驟
1)采用IO 觸發(fā)測距,給出至少10 μs的高電平信號。
2)模塊自動發(fā)送8 個40 kHz的方波,自動檢測是否有信號返回。
3)若有信號返回,則通過IO 口輸出一高電平,高電平持續(xù)時間就是超聲波從發(fā)射到返回的時間。
4)使用測距公式計算出測試距離。
此模塊有4 個引腳:VCC、GND、Trig和Echo。Trig 為發(fā)射端,Echo 為接收端。
應當注意,測距時,被測物體的面積不少于0.5 m2,且平面要求盡量平整,否則會影響測量。
在藍牙模塊與氣體傳感器的連接使用測試中,需要在手機端發(fā)送指令(如遙控或自動避障)到藍牙,同時需要藍牙將氣體傳感器模塊的氣體數(shù)據(jù)傳給手機端,如果只用一個藍牙則需不斷更換主從設置,同時發(fā)送與接收數(shù)據(jù)易造成信息亂碼等系統(tǒng)不穩(wěn)定情況,故選擇用兩個藍牙模塊,一個發(fā)送數(shù)據(jù),一個接收數(shù)據(jù),而為了避免藍牙分辨混淆,選擇HC-05、HC-08 兩種不同的藍牙模塊。由于Arduino 上的RX、TX 引腳有限,因此選擇軟串口的方法,選擇開發(fā)板上兩個未使用的2、3 引腳,分別定義為RX、TX,作為另一藍牙的收發(fā)引腳連接。
軟串口就是用程序模擬硬串口實現(xiàn)通信的功能,可以在Arduino 主板的引腳進行模擬實現(xiàn)。
圖6 為系統(tǒng)主程序流程圖。
圖6 系統(tǒng)主程序流程圖
首先對Arduino 以及各個模塊進行初始化,手機上選擇避障模式,然后進行超聲波測距,判斷接下來的路線,進行小車的無碰撞到達目的地,并完成氣體傳感器的數(shù)據(jù)采集,采集完畢后,系統(tǒng)通過藍牙模塊將數(shù)據(jù)傳輸?shù)绞謾CApp 予以顯示,最后通過手機App 遙控小車得以返回。
3.2.1 車體運動及模塊初始化
1)首先定義車體運動的5 種狀態(tài),即向前、向后、向左、向右與停止,再用Arduino 中的函數(shù)SoftwareSerial mySerial(2,3)定義軟串口,即拓展2、3引腳為新的RX、TX 引腳。
之后定義4 個減速電機的引腳,再進行舵機引腳與超聲波模塊的初始化,完成避障功能的模塊初始化工作。
2)小車5 種運動狀態(tài)算法如下:
前進狀態(tài)時,四車輪全部設置為正轉(即電機正轉)。
后退狀態(tài)時,車輪全部設置為反轉。
左轉時,左側車輪設置為停止運動,右側車輪設置為正轉(也可左側反轉,右側正轉,此算法使轉彎速度更快)。
右轉時,右側車輪設置為停止運動,而左側車輪設置為正轉。
3.2.2 設置小車命令模式
初始化完成之后,開始設置小車的命令模式為避障模式或遙控模式,兩種模式實現(xiàn)如下:
1)避障模式:向前直行,并同時測量小車與前方障礙物的距離,當距離小于30 cm 時(設置為30 cm的目的是小車從運動到停止需要一段剎車距離,若距離過小,則可能與墻體碰撞),小車停止運動,超聲波模塊在舵機的帶動下向左旋轉并測量與左側障礙物的距離,測量完畢后,向右轉并測量右側與障礙物的距離。倘若左側距離小于右側距離,即右側小車可活動空間大,則小車向右運動,反之則向左運動。同時設定當超聲波的測量距離大于50 cm 時,返回距離統(tǒng)一設置為50 cm(數(shù)據(jù)超過50 cm 之后則測量精度降低,且之后的距離數(shù)據(jù)為無效數(shù)據(jù)),若距離小于50 cm 則返回當前真實測量的距離。
2)遙控模式:需調用功能函數(shù)void motorRun(String cmd,int value),此函數(shù)會先調用analogWrite(pin,value),產生一個指定占空比的穩(wěn)定方波。pin為不同電機所接引腳,value 為占空比,取值為0~255,value 越大則轉速越大,在設計中默認設為255。cmd 則為選擇模式,分別為前進(UP)、后退(DOWN)、向左(LEFT)、向右(RIGHT)、停止(STOP),當在軟件中按下其中一個選項時,參數(shù)cmd設置為相應的狀態(tài)(如LEFT 向左)通過藍牙傳輸給Arduino 運行此函數(shù),從而帶動減速電機按給定占空比使小車進行相應的運動。
3.2.3 舵機轉動測距算法
1)若小車在之前的運行中已進行過左右距離測試,則首先運行系統(tǒng)函數(shù)myServo.write(90),將舵機歸為原位(90°)。
2)當正向測試距離dis[1]小于30 cm 時,則運行函數(shù)motorRun(STOP,255),使小車停止運動,之后算法為讓舵機每隔10 ms 向右轉動1°,直到150°,循環(huán)函數(shù)如下:
這時超聲波測距dis[2]=getDistance(),將距離存入dis[2]。
3)對左側測距,算法同上,即舵機相對于90°方向左轉60°,并測試距離dis[0]=getDistance(),將距離存入dis[0]。
4)比較dis[0]與dis[2]的大小,若前者小,則左側距離障礙物更近,運行motorRun(RIGHT,255)進行右轉,反之則左轉。
3.2.4 MQ-2模塊代碼實現(xiàn)
MQ-2 氣體檢測模塊實現(xiàn)代碼為:
數(shù)據(jù)val 為與讀取的氣體濃度相對應的電壓值,需要設定與氣體濃度相對應的val 臨界值,高于此值則報警燈亮。通過實驗測試,為與小車的實際應用相貼近,最后設定當val>260 時,室內易燃氣體超過安全值,ledpin 設置為高電平,報警燈亮。
選擇軟串口(即對應3.2.1 中的SoftwareSerial mySerial(2,3)函數(shù))來解決Arduino的RX、TX 口不足的問題,可實現(xiàn)雙向通信傳輸,由此類推,此方法思想可適用于其他嵌入式系統(tǒng)中有關引腳資源不足的問題,即硬件不足,用軟串口以及類似的軟件方式進行解決。
1)可在小車上安裝攝像頭,通過軟硬件的調試,將攝像頭捕獲的畫面數(shù)據(jù)實時傳輸?shù)絾纹瑱C上,再通過藍牙模塊傳輸?shù)绞謾CApp 上進行顯示,使操作人員可以借此知曉小車所處的地形,從而方便進行小車的遙控返回。
2)可在原單個超聲波模塊的基礎上在其左右增加兩個相同模塊,對超聲波避障算法進行改進,從而減少一些地形情況下出現(xiàn)的無法避障的“死循環(huán)”現(xiàn)象,避障更加順暢,進一步提高其實用性和容錯率。
該文針對傳統(tǒng)氣體檢測儀的不便捷或存在安全風險的現(xiàn)狀,設計了能夠避障、遙控檢測環(huán)境中易燃易爆氣體的智能小車,繼承了便攜式檢測儀的小巧、易攜帶特點,也減小了前者需要人為檢測可能導致的風險。經過小車的設計搭建和實踐使用,經過30次的實驗發(fā)現(xiàn),有28 次是正常避障,且能夠將氣體信息正常傳輸?shù)绞謾C,故系統(tǒng)具有較高的穩(wěn)定性。當然,也有不足之處,即用在較為復雜的室內環(huán)境中,室外的操作人員不一定能看到小車,因此可能無法正確遙控??梢栽谛≤嚽胺桨惭b攝像頭對此加以改進,方便清楚地了解室內環(huán)境,從而遙控小車完成任務。綜上,其意義不僅是在安全和便捷性上實現(xiàn)了氣體檢測功能,更是在人工智能的時代背景下為氣體檢測的運作提供了一種獨到且創(chuàng)新的思維方式。