[蘇神保 劉丹]
Mind+是一款基于Scratch3.0開發(fā)的青少年編程軟件,支持arduino、micro:bit、掌控板等各種開源硬件,用戶只需要拖動圖形化程序塊即可完成編程,還可以使用python/c/c++等高級編程語言,讓大家輕松體驗創(chuàng)造的樂趣。對于使用Mind+的用戶來說,可以根據(jù)自己的想法,結合Arduino開發(fā)板以及擴展面包板或者智能小車機器人,借助不同的傳感器如電位器、聲音、光敏、熱敏、火焰、傾斜、有害氣體、紅外、人體熱釋電、超聲波、溫濕度等來創(chuàng)造不同的產品。Mind+還集成有各式各樣的傳感器、執(zhí)行器、顯示器和通信模塊,用戶只需直接調用即可,無需重新調用或者編寫庫函數(shù)。Mind+工作于實時模式時,可以實現(xiàn)視頻偵測、文字朗讀、語音識別、AI圖像人臉識別等功能,在目前人工智能領域應用較為廣泛。
Mind+的工作模式分為實時執(zhí)行模式和上傳模式兩種。實時執(zhí)行模式下可以實現(xiàn)硬件與舞臺角色的交互,以及可以實時的控制硬件而不需要上傳程序,通過計算機鍵盤、鼠標、語音等實時來控制硬件的工作,工作過程中全程需要數(shù)據(jù)線連接。上傳模式與傳統(tǒng)單片機下載程序類似,可以將根據(jù)用戶硬件需求編寫的積木代碼通過串口(需安裝驅動程序)燒錄至Arduino開發(fā)板,硬件脫機工作。Arduino還預留有串口通信接口,可以通過串口藍牙或者串口WIFI模塊實現(xiàn)手機端藍牙控制或者WIFI控制。
Arduino開發(fā)板提供14路數(shù)字輸入輸出接口,除了本身的高低電平輸入輸出功能外,某些IO口還具有其它特定用途,如0、1管腳用作串口通信,可以外接串口通信設備,3、5、6、9、10、11六個管腳可以輸出脈沖寬度調制PWM信號,提供6路8位即(0~255)輸出信號,該PWM信號通常用于調速、調光等實驗。Arduino開發(fā)板還提供6路模擬輸入信號(A0-A5),每一路具有10位(210=1024)的分辨率,通常用于連續(xù)變化模擬量的輸入,可以將該模擬輸入信號(0~1024)映射MAP至PWM端口(0~255)實現(xiàn)PWM控制。13管腳是Arduino專門用于測試LED的保留接口,輸出為高時點亮LED,輸出為低時LED熄滅。
Arduino開發(fā)板配合相關傳感器,可以完成很多實驗如閃爍LED燈、流水燈、按鍵控制LED燈、呼吸燈、電子鋼琴、調光燈、聲控燈、光控燈、熱敏報警器、火焰報警器、人體熱釋電感應報警器、繼電器控制、紅外遙控、藍牙遙控等,也是目前創(chuàng)客使用較多的單片機。Arduino開發(fā)板配合智能小車機器人底板可以實現(xiàn)智能小車的紅外遙控控制、紅外循跡、紅外避障、超聲波避障等相關實驗。
Arduino開發(fā)板控制智能小車前進與左轉程序如圖1所示,5腳控制左輪前進,6腳控制右輪前進,9腳控制左輪后退,10腳控制右輪后退,因5、6、9、10的輸出值范圍為0~255,通過改變每個PWM引腳的輸出值即可以實現(xiàn)智能小車機器人的前進、后退、左轉、右轉、停止以及速度的變化[1],下圖只列出了前進和左轉程序,當需要智能小車機器人完成其它動作時,修改引腳PWM值即可。
圖1 智能小車機器人前進與左轉程序
在實際避障實驗中,可以將小車的前進、后退、左轉、右轉、停止五種狀態(tài)分別用子函數(shù)MOTORRUN、MOTORBACK、MOTORLEFT、MOTORRIGHT、MOTORSTOP來定義模塊,在主程序中調用即可。
Mind+的傳感器模塊中已經包含有HC-SR04超聲波傳感器,用戶只需直接調用即可。在進行避障實驗前,可以先用串口測試一下超聲波模塊的距離測量功能,將超聲波模塊的觸發(fā)腳Trig接至Arduino開發(fā)板第8腳(也可以根據(jù)程序來設定),回響腳Echo接至第12腳,其測距程序如圖2所示,前方障礙物的距離通過串口打印窗口顯示出來[2]。
圖2 串口輸出超聲波測距程序
超聲波測距模塊需要Arduino開發(fā)板在Trig管腳輸入一個10 μs以上的高電平,系統(tǒng)便可發(fā)出8個40 kHz的超聲波脈沖,然后檢測回波信號。當檢測到回波信號后,通過Echo管腳輸出。由于聲音的傳播速度為340 m/s,根據(jù)Echo管腳輸出高電平的持續(xù)時間可以計算距離值[3]。其距離值為(公式1):
HC-SR04超聲波測距模塊可提供大約2 cm~400 cm的非接觸式距離測量功能,測距精度可達高到3 mm。通過超聲波測量到前方障礙物距離后,需要智能小車機器人根據(jù)這個距離做出判斷。當距離小于或等于某一標準值(如20 cm)則后退左轉,而當距離大于這一標準值則前進。流程圖與程序設計如圖3所示。
圖3 超聲波避障流程圖與Mind+程序設計
Arduino智能小車機器人和51單片機智能小車一樣,在小車底板上都設置有紅外循跡探頭與紅外避障探頭,紅外循跡探頭位于小車底板背面,用于檢測地面黑線。紅外避障探頭位于小車的左右兩邊,分別由一對紅外發(fā)射管與紅外接收管構成。紅外發(fā)射管發(fā)射出一定頻率的紅外線,當檢測前方遇到障礙物時,紅外線反射回來并被接收管接收,經過LM324比較器電路處理之后,輸出LED燈會亮起,信號輸出接口輸出一個低電平信號,同時將這一信號送至Arduino開發(fā)板的數(shù)字輸入輸出管腳,Arduino通過檢測這一關鍵信息后對小車的行駛路線做出改變即可以實現(xiàn)避障的目的:當左側紅外探頭檢測到障礙物控制小車右轉,右側紅外探頭檢測到障礙物控制小車左轉,前方無障礙物時小車前進,左右兩側均有障礙物時小車后退左轉??梢酝ㄟ^電位器旋鈕調節(jié)紅外檢測距離的靈敏度,有效距離范圍2~30 cm左右[4]。
程序設計流程圖如圖4所示。
圖4 紅外避障程序設計流程圖
將左右兩側紅外感應信號P3.4,P3.5分別接至Arduino數(shù)字輸入輸出口的2、3引腳。主程序代碼如下:(全部程序因篇幅有限未列出,小車的運行狀態(tài)用子函數(shù)列出。)
在人工智能時代領域,智能傳感的應用越來越廣泛,各種不同傳感器的使用也給人們的生活帶來了諸多方便。Mind+軟件在程序設計方面較傳統(tǒng)的單片機開發(fā)軟件如keil、Arduino等都具有更通俗、更直觀的優(yōu)點,尤其適合高等職業(yè)教育單片機入門教學。
自主避障機器人主要依靠超聲波傳感器和紅外傳感器來實現(xiàn),超聲波傳感器通過發(fā)射超聲波信號來測量機器人與障礙物之間的距離,當接近障礙物時,Arduino通過PWM改變智能小車機器人的行駛方向。紅外傳感器主要是通過發(fā)射與反射紅外線來判斷前方是否有障礙物,雖無測距功能,但其避障原理與超聲波類似。上述兩種傳感器結合Arduino雖然能實現(xiàn)簡單的避障功能,但檢測方式過于單一,超聲波方面可以考慮通過加裝舵機的方式來檢測180°范圍內障礙物的情況,同時可以加裝LCD1602液晶顯示模塊來實時顯示目前的距離。紅外感應方面則可以通過使用光電開關E18-D80NK來取代普通的紅外發(fā)射與接收二極管,從而提高其感應距離和靈敏度,提高避障的準確性。