李帥,盧潔聰,王海潮,朱晨照,王晨超
(1.東南大學成賢學院 機械與電氣工程學院,江蘇南京,210000;2.東南大學成賢學院 電子與計算機工程學院,江蘇南京,210000)
我國的視障人群眾多且分布廣泛,隨著現代化社會的發展,落后的導盲輔具與現代化生活的矛盾日益加劇,導致視障人群難以融入現代化生活。市面上的大多數導盲輔具在使用時存在著一定的局限性,例如導盲犬存在著訓練周期長、飼養成本高的特點,且在適用環境上有多方面的限制。現在的盲人更多的使用盲杖作為出行工具,而盲杖作為一根普通的長桿,存在太多的局限與不足。為了協助盲人安全行進,人們也發明了許多高科技產品來助行、導航。但是,這些高科技產品普遍成本過高,使用復雜,受眾小,無法投入量產。因此,社會需要為視障人群提供更加方便使用、價格實惠的導航工具。基于以上導盲工具的不足,本文介紹設計了一款基于視力障礙人群的導盲小車,同時具備超聲波避障、語音提示和攝像頭跟隨功能,滿足了視障人群出行散步的基本需求。
本方案是在滿足系統功能的前提下以經濟實用的角度出發,采用了51系列的單片機,以該單片機為控制核心,結合了L298N驅動模塊,OpenMV攝像頭模塊以及直流電機模塊和其他控制模塊而設計出的智能導盲小車系統。此系統硬件部分由單片機單元、傳感器單元、語音提示單元、電機控制單元和電源單元組成,如圖1所示。

圖1
主控單元為STC89C52RC,主要負責與OpenMV串口通信,完成了檢測障礙物,語音識別提示,以及電機舵機步進電機PWM波的輸出等功能。圖2是基于STC89C52RC自制的主控和驅動電路的原理圖。

圖2
基于超聲波反應靈敏,檢測距離遠,適用范圍廣泛、精度高,受外界干擾小的優點,本項目采用超聲波HC-SR04芯片作為檢測前方障礙的工具。其原理是:超聲波由傳感器發出后,遇到障礙物便反射回來,再被超聲波傳感器接收。由單片機計算這個聲波在空氣中傳播的時間以此來確定障礙物的距離。具體就是第一步就是讓Trig 管腳所接的單片機I/O口置為高電平,而且需要持續10μs以上。此外,為了避免下一次超聲波發出的信號對上一次的返回信號產生影響,超聲波模塊發出信號的時間間隔要在200ms以上。第二步再讓Trig為低電平,這樣就可以達到超聲波模塊自動發出一次檢測信號的效果了。

圖3
基于紅外傳感器優越的環境適應性和工作穩定性,該導盲小車的左右兩邊采用E18-D80NK光電開關進行檢測障礙物。光電開關的工作原理是:通過單片機讀取該光電開關I/O口的電平高低,來判斷小車兩側有沒有障礙物。當檢測到障礙物時,與黑線連接的單片機I/O口被置低電平0。同時有效地避免了可見光的干擾。而光電開關中透鏡的使用,也使得這款傳感器最遠可以檢測到80cm內的障礙。
本設計是通過MP3提示器來實現語音播報功能的。該MP3兼容Arduino功能,由帶256M的TF卡、一個帶3W4Ω喇叭和一個音源箱組成。該模塊采用排針朝下焊接方式,直流5V1A供電、包含9個觸發端口。具有16G的最大內存。該模塊具備9個直接觸發端口 ,是A1~A9這9根排針,分別對應第一首到第九首的MP3。語音模塊是通過低電平觸發的。如果要觸發A1口,只要向A1口提供1個低電平,就馬上進行播放第一首MP3。為了給盲人提供規避路障的語音提示,我們在制作語音模塊時,把各種常用的導航提示語分別錄入MP3,當語音對應的路障出現時,該首MP3被觸發,即向盲人發出相應的語音提示。

圖4
此模塊包括OpenMV攝像頭、舵機驅動,從而完成監測盲人位置和精確跟蹤功能。在盲人腿上穿戴提前設定好顏色的腳環,利用OpenMV顏色閾值判斷,計算與中心線偏差返回值給主控單元,主控單元處理后發出PWM控制電機舵機驅動,從而控制小車的移動。 OpenMV是一個低成本且功能強大的機器視覺模塊。以STM32F427芯片為核心,集成了OV7725攝像頭芯片。其有UART,I2C,SPI,PWM,ADC,DAC以及GPIO等接口方便擴展外圍功能。
本次使用的180度MG905金屬齒輪加強版舵機,其原理是舵機通過PWM脈沖的脈寬來控制其自身的轉動,每到固定脈寬的脈沖,舵機轉過一個特定的角度。
將OpenMV攝像頭安裝在舵機齒輪的旋轉架上,使舵機帶動攝像頭轉動,從而實現攝像頭0~180度的探測范圍。
此次的導盲小車是通過L298N來實現電機驅動的。其原理是改變輸入端的邏輯電平,當驅動直流電機時,可以直接控制步進電機,并可以實現電機的正轉與反轉。其輪胎部分選用麥克納姆輪,其原理是依靠各自機輪的方向和速度,使小車能在任意方向上實現平移和原地旋轉,從而快速、靈敏地跟隨使用者,保證使用者的出行安全。
在主程序中,系統初始化之后,攝像頭檢測人是否在小車的后方并且超聲波和光電開關不斷檢測小車的前方、左方、右方有無障礙物,在沒有檢測到障礙物時,小車繼續保持在人正前方預定距離內隨人的移動而移動。當在一定距離內有障礙物時,小車會通過光電開關來判斷左右的障礙物,若此時前方和左邊同時存在障礙物,則會語音提示向右拐彎。若此時前方和右邊同時存在障礙物,則會語音提示向左拐彎。否則,會發出警報。當位于小車后的人拐彎以后小車會自動移動到使用者的正前方繼續提醒前方的路況。

圖5
該導盲小車的左右方向采用光電開關,自動檢測距離小車30cm內是否有障礙物,例如當小車左側30cm內有障礙物時標志位(變量)Left_ray_flag置為0,否則置為1。小車前方采用超聲波檢測障礙,兩者同時進行。超聲波傳感器會自動發出8個40kHz的方波并且自動檢測是否有聲波信號返回,有信號返回則表示有障礙物,反之則無。若有信號返回那么此時Echo所接單片機的I/O口被置為高電平1,通過測量高電平持續的時間并運用公式:小車與障礙物之間的距離=(高電平時間*聲速/2)計算出障礙物距小車中傳感器的距離。小車通過距離判斷此障礙物是否會對人行走產生影響,若距離小于70cm (根據盲人步長設置)則小車發出語音提示提醒盲人前方有障礙物。
小車的攝像頭跟隨部分分為兩個單片機分別為STM32單片機和51單片機,STM32單片機嵌在攝像頭里面,用來處理攝像頭捕獲到的信號指令,51單片機通過與STM32單片機通信得到信號指令,進而控制小車的移動的方向、速度和距離等。

圖6
首先,攝像頭OpenMV檢測是否有色塊,STM32單片機與51單片機進行通信,51單片機接收到STM32單片機發來的信號指令,如果有色塊存在,那么小車根據OpenMV返回距離、左右偏移等調整自己的移動和速度使得人在小車攝像頭的中間;如果沒有色塊存在那么小車則調整攝像頭的角度,左轉45°再右轉90°如果還是沒有色塊存在那么小車停止并發出語音提示。

圖7
小車的移動是由51單片機控制的L298N電機來實現的,小車的前面和后面分別有兩個L298N電機,當兩個電機的輸入控制信號為1010時,小車前進;當電機輸入控制信號為0101時,小車后退;當電機輸入控制信號為0110時,小車左轉;當電機輸入控制信號為1001時,小車右轉;當電機輸入控制信號為0000是,小車停止;當前L298N電機輸入控制信號為1001,后L298N電機輸入控制信號為0110時,小車平行左移;當前L298N電機輸入控制信號為0110,后L298N電機輸入控制信號為1001時,小車平行右移。平行左移和平行右移是為了使小車轉彎的時候更加的靈活。
本設計需檢測各種環境指標。開始測試時,使用者站在小車后面,打開小車運行開關后,小車先檢測與測試者距離,同時行駛到預設的距離。當使用者開始行走時,通過不斷改變的間距小車也隨之行駛,并始終保持在正前方。當小車前方一定距離內出現障礙時,小車檢測左右兩邊的障礙情況,同時發出語音提示“前方有障礙,請向左/右行走”,當人開始轉向后,小車也開始轉向行駛到使用者前方。經測試小車功能實現良好,能達到預期的目標。
小車在使用測試程中,人和小車都在移動相對誤差就會比較大。總誤差在預設的范圍之內,誤差主要來源于光電開關的感應速度、超聲波的傳輸以及人與車之間的距離等。
本文討論了智能導盲小車的設計與實現,該設計具備人性化,能夠與使用者進行人機交互,帶領使用者在一定區域內安全行走,適用于盲人在陌生的地方想要進行散步等簡單活動。同時經過許多測試與改良,智能小車各項功能實現良好,能夠取得預期的應用效果,可以不斷拓寬應用領域,具有廣闊的應用前景。

測試項目 預設值/cm 四次測量平均值/cm 誤差/cm超聲波檢測檢測障礙物 70 70.8 +0.8光電開關檢測障礙 30 29.9 -0.1人直走時小車與人之間保持的距離 70 72.8 +2.8