學習目標 : 認識faya超音波距離感應模組的功能及使用方式
學習時間 : 50min
示範模組 : (1) faya brickNano
(2) faya蜂鳴器模組
(3) faya超音波距離感應模組
====================功能介紹====================
faya超音波距離感應模組採用市面上的超音波距離感應器(HC-HR04),他具有一對類似眼睛的超音波介面,一邊是發射器,另一邊是接受器,當發射器發出40KHz超音波,遇到障礙物時會反彈,接收器會感應到反彈回來的超音波,我們可以透過時間差來算出障礙物和模組間的距離,規格書上顯示此模組能夠量測從2~400公分的理想距離,應用在避障自走車、機器人、物體測距上都有不錯的效果。
HC-HR04簡單易用,只要幾行的指令就能夠測出感測距離。他的介面為Trig(輸入埠)和Echo(輸出埠),負責通知模組何時送出超音波訊號,何時收到超音波的反彈訊號。
- Trig埠 : 收到方波(10us)訊號後,會送出超音波
- Echo : 收到回彈的超音波訊號時,會送出HIGH訊號
模組的面板圖如下所示,右方有一個4pin的排母,其中上方的2pin為Trig埠,下方的2pin為Echo埠,上方標示Trig的2pin是相通的,下方標示Echo(但被遮住了)也是相通的,連接線路時,只要選擇其中一個孔位連接即可。
====================原理知識====================
以下解釋提供給有需要知道背後原理的人
HC-SR04的原理很簡單,當我們給模組一個10us的方波時,模組就會發射出8個40KHz的超音波,此時Echo會由LOW轉HIGH,等到模組接收到超音波的反彈訊號時,Echo由HIGH轉LOW。
===================範例實作(1)===================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:
目標:
(1)在串列埠監視視窗顯示超音波感應距離
接線:
(1) 電源線連接
如下圖所示,連接的說明請看這篇文章 或簡易版
(2) 訊號線連接
Arduino_D5 ===> 超音波距離感應模組_Trig
Arduino_D6 ===> 超音波距離感應模組_Echo
備註:
- L22~L24: 產生10uS脈衝寬度,觸發Trig
- L25: 利用pulseIn( )函式讀取指定針腳(Echo腳位)的脈衝時間,指令的參數填入HIGH,函式會等待Echo腳位變為HIGH後開始計時,再等待Echo腳位變為LOW並停止計時。輸出的脈衝寬度單位為uS,因此除以58uS後得到公分。
範例結果:
目標:
(1)在串列埠監視視窗顯示超音波感應距離
(2)蜂鳴器根據感測距離,輸出週期性聲音,距離愈短輸出聲音愈急促
(3)距離小於3公分時,蜂鳴器長叫
接線:
(1) 電源線連接
Arduino_D5 ===> 超音波距離感應模組_Trig
Arduino_D6 ===> 超音波距離感應模組_Echo
Arduino_D13 ===> 蜂鳴器模組_BZ
範例程式:
備註:
- 蜂鳴器的使用方式,請參考faya蜂鳴器模組
- L34~L46: 感測距離分成三個範圍,30cm以上靜音,30~5公分發出嗶嗶聲,愈短愈急促,5公分以內直接長鳴。
- L36~L37: 透過tone()和delay()函式,讓鳴叫和休鳴的時間成正比,也就是距離長時,鳴叫的時間變長,休鳴的時間也變成,距離短時,鳴叫的時間變短,休鳴的時間也會變短,會有急促的感覺。
- L41: 只發出鳴叫,但沒有休鳴時間,因此如果一直在此距離時,會一直發出鳴長鳴聲
- L45: 距離太長時,什麼事也不做,就像上一個範例一樣,每0.5秒在串列埠監視視窗顯示超音波感應距離。
範例結果:
討論:
大家有沒有發現第二個範例就是在模擬倒車雷達的動作,通常車子後方會裝上三顆超音波測距元件(發射和接收為同心圓,價格較貴),在車子打倒車檔時開始動作,快撞到牆壁時,會發出急促甚至長鳴聲,如果有三個超音波同時運作,我們就能夠偵測是正後方,右後方還是左後方快要碰撞到了。
大家有沒有想到利用此模組達到有意思的創作呢? 歡迎大家在底下留言或到我們的粉絲團留言喔!
====================================
沒有留言:
張貼留言