Ameba Arduino: [RTL8722CSM] [RTL8722DM] GPIO – 幫Ameba加上雙眼(使用超音波測距模組)

材料準備
  • Ameba x 1
  • HC-SR04 Ultrasonic x 1
  • 降壓電阻 或 Level converter
範例說明
HC-SR04是一款超音波測距的模組,由於形狀像兩隻眼睛,所以常被裝在自走車或機械昆蟲上,兼俱美觀與實用的角色。它的運作方式,首先我們先在TRIG這根GPIO對它toggle high (即pull high再pull low) 。接著HC-SR04會發出8個40k Hz的音波訊號出去,並且將ECHO這根GPIO的訊號pull high。等到音波訊號回來,再將ECHO的GPIO pull low。 1 假設音速是340 m/s,那麼音波在空氣中行走1公分所需的時間是340 * 100 * 10^-6 = 29 us。 HC-SR04的音波從發射出到折回是兩段距離,所以HC-SR04與目標物的距離是 (time / 29) / 2 = time / 58。 HC-SR04的工作電壓是5V,為了避免ECHO這根GPIO在pull high的5V電壓會損壞Ameba的GPIO,所以我們需要做降壓的動作,底下是使用電阻降壓的方式: 2 其中電阻只要取適當大小,比例為1:2,圖中例子使用10kΩ與20kΩ。 HC-SR04的TRIG這根GPIO可以辨別3.3V的電壓,所以不需要特地做電壓轉換。 如果不想使用電阻,也可以使用Level converter。以TXB0108 8 channel level converter為例: 3 程式的部份,打開“File” -> “Examples” -> “AmebaGPIO” -> “HCSR04_Ultrasonic” 3 編譯並上傳到Ameba,完成之後按下Reset按鈕。打開Serial Monitor,可以看到每兩秒量出一筆數據。 4 因為HC-SR04使用超音波反射的方式,所以如果遇到表面粗糙或柔軟,音波可能會散射或被吸引,因而影響實驗數據,所以可以先找表面平整的物體做測試。
程式碼說明
每次測量時,將TRIG pin pull high 10us之後再pull low告訴HC-SR04準備測量:
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);
之後使用pulseIn測量ECHO pin pull high的時間
duration = pulseIn (echo_pin, HIGH);
再根據公式算出距離並印在Serial Monitor上
distance = duration / 58;
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved.
請先確認已安裝QQ通訊軟體