網頁

2022年8月12日 星期五

ESP32 - 使用 BlocklyDuino-錄放音模組,人體紅外線感應器

主題

以 ESP32 設計一個程式,當有人經過時,播放聲音,如「歡迎光臨到統一超商,謝謝你!」。

使用的電子元件

本主題使用「ISD1820 錄放音模組」 和「人體紅外線感應器」。

ISD1820 錄放音模組

 錄放音模組內建 麥克風頭 ,附喇叭。錄音時間為10秒。

接線方式

ISD1820 錄放音模組 的正面。
背面是 喇叭。

使用三條杜邦線 連到 開發板右邊 Pin 17 的 S-V-G。
ISD1820 的VCC 接開發板的 V,GND 接開發板的 G ,P-E 接開發板的 S。
註:如果祇是單純錄音,沒有要使用程式來控制,祇要 ISD1820 的VCC 接 V,GND 接 G 即可。

先按住 ISD1820  下面的紅色 REC鈕,開始講話錄音,放開按鈕,表示錄音完成。
按 PLAYE 鈕 ,放開,可播放剛才的錄音 。
 PLAYL 鈕要一直按住才會播放聲音,如果放開就不播放 。

程式






程式說明

從「數位 I/O」類別,拿出「數位寫入 Pin 0 狀態 高電位」block,將 Pin 0 改成 Pin 17。
因為 ISD1820 的 P-E 接到開發板的 S。當 S 是高電位 , ISD1820 的 P-E 也是高電位,表示 播放聲音。
從「時間」類別,拿出「延遲毫秒 1000」block,1000 改成 100 ,即0.1秒。

「數位寫入 Pin 17  狀態 低電位」此block,因為 ISD1820 的 P-E 接到開發板的 S。當 S 是低電位 ,ISD1820 的 P-E 也是低電位,就不播放聲音。

執行結果

先按住 ISD1820  下面的紅色 REC鈕,開始講話錄音,放開按鈕,表示錄音完成。
執行此程式,會一直重複播放剛才錄音的內容。

人體紅外線感應器

利用紅外線來偵測是否有 生物體移動。

正面圖 ,有蓋子,此半圓蓋子的作用在於折射人體紅外線,讓原本的偵測角度可以擴大。

反面圖,可以看到有兩個可以調整的橘色旋鈕。
有些板子,有看到 「 SX」和「TX」,我的板子沒有寫。

 SX ( Sensitivity ) 的旋鈕是偵測的靈敏度,靈敏度以偵測距離計算,範圍 3~7 公尺,順時針旋轉靈敏度越高。

 TX ( Time Delay ) 的旋鈕是偵測到訊號之後,下一次再繼續偵測的延遲時間,時間範圍是5~300 秒,順時針旋轉延遲時間越長。

請先將2個旋鈕逆時針轉至最左邊(使用2個手指夾住旋鈕,即可旋轉,不一定要使用 十字起字)。狀態約五秒才能再啟動。

把上面的白色蓋子先拿開,可以發現裡面有一個接收器,可以看到3根接腳的意義。
VCC 接開發板的V,GND 接開發板的G,OUT 接開發板的S。

假設 人體紅外線感應器接到開發板的  Pin 2,先將蓋子拿開,才能看到3隻腳的意義,並將之接到 開發板的 S-V-G。

接正確後,再把蓋子蓋回去。

程式


程式說明

在「序列埠 I/O」類別,拿出「序列埠印出(換行)」block。
在「邏輯」類別,取出 「如果 ...執行」block。

從「數位 I/O」類別,拿出「數位寫入 Pin 0 」block,將  0 改成  2。
如果 人體紅外線感應器感應到有人經過(數位讀取 Pin 2 的值是1 ),就播放聲音。

雖然高電位後寫 延遲毫秒 100,好像是祇播0.1秒,經測試的結果,還是把聲音播完, ISD1820 錄音時間最多大概為10秒。

執行結果

有人經過就播放聲音,否則就沒聲音,如果是有人在旁邊,但靜止不動,也不會播放聲音。
「序列埠印出(換行)」此block 是用來偵錯用,按「PuTTY序列埠監看視窗」鈕,可在 PuTTY 視窗看到結果,有人經過顯示1,否則顯示0 。實際應用上,此功能可刪除。

可將程式改成如下:
1秒鐘後才判斷有無生物走過。