主題
以 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 。