網頁

2022年8月16日 星期二

ESP32 - 使用 BlocklyDuino-超音波測距模組

 主題

以 ESP32 設計一個程式,當有人靠近時,播放聲音,如「你太靠近我了,請保持距離!」,並亮紅燈。

使用的電子元件

本主題使用「HC-SR04 超音波測距模組」 和「ISD1820 錄放音模組」。

HC-SR04 超音波測距模組


此模組是由超音波發射器、接收器和控制電路所組成。被觸發時,會發射 40 kHz 的聲波,從離它最近的物體接收回音。
偵測距離:輸入DC5V時、偵測距離2cm~450cm

接腳

有關「ISD1820 錄放音模組」,請看我寫的另一篇文章:

請先使用「ISD1820 錄放音模組」錄一段聲音,如 「你太靠近我了,請保持距離!」。

接線方式

「HC-SR04 超音波測距模組」
Vcc 接 ESP32 開發板  Pin 16 的 V。
Gnd 接 ESP32 開發板  Pin 16 的 G。
Trig 接 ESP32 開發板  Pin 16 的 S。
Echo 接 ESP32 開發板  Pin 17 的 S。

「ISD1820 錄放音模組」
VCC  接 ESP32 開發板  Pin 5 的 V。
GND  接 ESP32 開發板  Pin 5 的 G。
P-E    接 ESP32 開發板  Pin 5 的 S。

紅色 led 燈
長腳接 ESP32 開發板  Pin 2 的 S。
短腳接 ESP32 開發板  Pin 2 的 G。

程式








程式說明

從「變數」類別,拿出「宣告 全域  整數  i」block。

整數 改為 浮點數(因距離有小數),重新命名變數...
輸入 distance,按「確定」,distance 變數用來存 距離。
從「數位 I/O」類別,拿出「數位寫入 Pin 0 狀態 高電位」block,將 Pin 0 改成 Pin 16。
觸發 「HC-SR04 超音波測距模組」,讓「HC-SR04 超音波測距模組」可以偵測距離。

從「環境感測/距離感測」類別,取出 「超音波測距感應器 HC-SR04P  觸發腳(Trig) 0 回應腳(Echo) 0  量測數值 : 公分」block。
觸發腳(Trig) 0 改成  16, 回應腳(Echo) 0 改成  17。

按右鍵,選「外部輸入」,積木(block)看起來比較短。
如果 按右鍵,選「單行輸入」,積木(block)變成一行,比較長。

從「邏輯」類別 ,取出「如果 執行」block。
「如果」原本祇有1個條件,按 「*」,可以增加條件,移進來是增加,移出去是減少。再按一次「*」關掉小視窗。



從「邏輯」類別,取出 「=」  block,將 「=」 改成 「<」 。
從「數學」類別,取出 「0」  block,將 「0」 改成 「100」 。
如果 distance  < 100
執行  
「數位寫入 Pin 2 狀態 高電位」,開啟 紅光led 。
「數位寫入 Pin 5 狀態 高電位」,「ISD1820 錄放音模組」播音。
從「時間」類別,拿出「延遲毫秒 1000」block,將 1000 改成 100。
「數位寫入 Pin 5 狀態 低電位」,「ISD1820 錄放音模組」停止播音,如果沒有加入此程式碼,如果距離一直小於 100公分,祇會播放一次,不會反覆播放。

否則
 「數位寫入 Pin 2 狀態 低電位」,關閉 紅光led 。
「數位寫入 Pin 5 狀態 低電位」,「ISD1820 錄放音模組」停止播音。
「延遲毫秒 1000」,經過1秒再偵測1次。

執行結果

當距離小於 100公分,會播放聲音,打開 紅光 led 。

當距離大於等於 100公分,停止播放聲音,關閉 紅光 led 。