超音波感測器

超音波距離感測器 HC-SR04,是利用超音波射出(人類聽不見的音頻)和反射的時間差,來測定感測器和障礙物之間的距離 。感測器有兩個筒狀物,其中一個為超音波發射器 (Transmitter),另一個為接收器 (Receiver)。在Micro:bit上接超音波感測器,它成為另一個輸入裝置,Micro:bit可以透過它取得前方障礙物目前的距離。

超音波感測器的運作原理

當發射的超音波遇到感測器前方的障礙物後,會被反射。接收器接到反射的超音波後,會計算出從發射到接收的時間差。同一天氣狀態下,超音波在空氣中傳播速度是固定的(在攝氏20度下音波的速度約為每秒343.2公尺,約29.1微秒移動1公分),利用時間差乘以傳播速度,就可以得到感測器和障礙物之間的距離。

左圖取自:www.circuitgeeks.com/hc-sr04-ultrasonic-sensor-with-arduino/ 

看清楚感測器的接腳

超音波感測器(HC-SR04)價錢並不貴(這顆二十幾元),有四個接腳

VCC接電源正極(有二種版本5V版和寬電壓3.3V-5V版,當然寬電壓好)GND接負極,Trig和Echo就各接不同的pin,然後在程式中設定

接Micro:bit取得偵測結果

在Micro:bit上使用超音波感測器很簡單,先把電路接腳接好,取得對應的程式積木(Makecode預設沒有載入這個感測器的積木)可以按下「+擴展」來取得。

這兒我們介紹吉哥老師所寫的積木:

https://github.com/lioujj/pxt-sensors

在擴展的搜尋欄填入網址就可以找到要安裝的積木,之後就可以看到名為感測器的積木了

取得障礙物的距離

以這個例子來說,先建一個變數a,在重覆循環的程式中,設定a的值就是超音波感測器回傳的數值,然後要求它顯示在Micro:bit的Led上,原則上我們透過感測器取得數值之後接下來的運用就看個人的巧思了…

※注意的是實際接線和程式裡的腳位設定要一致

※你應該會發現Micro:bit的Led開始會出現數字跑馬灯,因為一次只能顯示一個位數,但超音波感測器回傳的數值是精準的,小數以下好幾位,程式迴圈的速度很快,但跑馬灯很慢,你覺得有什麼問題?

我們要怎樣獲取最準確又即時的距離資料?

可以在啟動時使用「序列 重新導向USB」,意思是Micro:bit的資料可以透過usb傳回電腦,然後在程式中取得的距離資料,可以使用「序列 寫入一行文字“超音波的變數”」就好了,當這樣的程式建立後,畫面上會多出「show data 模擬器」、「show data 裝置」,點選裝置那個,就可以看到即時數據了~

一般在實務上,我們常常把超音波安裝在車子上,利用它取得的數據來作為車子移動的參考依據,不只是手做的小車,你想想汽車倒車雷達不就是這麼一回事嗎?