【DIY】萬聖節驚聲尖叫小魔女-一起 Trick or Treat!

萬聖節已經送膩了市售的禮物了嗎?

不妨自己製作一個嚇死人不償命的萬聖轉轉驚聲尖叫小魔女吧!

材料清單:

1. Arduino_nano x 1個

2. 紅外線避障模組 x 1個

3. N 20 微型金屬減速馬達 x 1個

4. 2路H橋 馬達驅動模組(L9110) x 1個

5. DFPlayer Mini MP3 Player 播放模組 x 1個

6. 4歐姆 3瓦 喇叭 x 1個

7. 迷你麵包板/實驗板(可拼接) x 2個

8. 馬達固定座 x 1組

9. M3 304不銹鋼螺母 x 9個

10. 十字圓頭螺絲 M3*8mm x 4個

11. 十字圓頭螺絲 M3*6mm x 5個

12. 公公杜邦線 x10條

13. 公母杜邦線 x6條

14. 尼龍萬向輪 x 3顆

15. 木頭外殼 x 1

材料清單圖
材料清單圖
木頭外殼
木頭外殼

使用工具:

1. 電烙鐵

2. 焊錫

3. 十字起子

4. 撥線鉗

工具清單
工具清單

馬達驅動模組接腳圖:

馬達驅動模組接腳圖
馬達驅動模組接腳圖

DFPlayer Mini MP3 Player 播放模組接腳圖:

MP3 Player 播放模組接腳圖
MP3 Player 播放模組接腳圖

硬體空間配置:

硬體空間配置圖
硬體空間配置圖

接線圖:

接線圖
接線圖

Step1.請將Nano板及DF Player插在麵包板上,並撕開背面的泡棉膠貼在底板上。

固定 Nano板及DF Player
固定 Nano板及DF Player

Step2. 請將Nano板的5V電源及GND腳位,分別額外接到麵包版的空腳位。

Step3. 請先將馬達兩端焊上杜邦線,再使用馬達固定座將馬達固定在中間長方形雙凸板。

馬達焊上杜邦線並固定
馬達焊上杜邦線並固定

Step4. 請使用十字圓頭螺絲 M3*6mm及螺母將馬達驅動模組固定在中間長方形雙凸板的背面。

固定馬達驅動模組
固定馬達驅動模組

Step5. 請將馬達兩端連接到馬達驅動模組的0A1及0B1,將另一側的IA1及IB1接到Nano板的D3及D4腳位,並將VCC接到麵包板電源腳位、GND接到麵包板接地腳位。

連接馬達、馬達驅動模組與Nano板
連接馬達、馬達驅動模組與Nano板

Step6. 請將紅外線避障模組的D0腳位接到Nano板的D2腳位,並將VCC接到麵包版電源腳位、GND接到麵包版接地腳位。

連接紅外線避障模組
連接紅外線避障模組

Step7. 請將喇叭焊上杜邦線,再使用螺絲起子及M3螺絲、螺母將喇叭固定在側板上。

將喇叭焊上杜邦線並固定
將喇叭焊上杜邦線並固定

Step8. 固定好之後將喇叭接到DF Player的SPK_1和SPK_2腳位。

連接喇叭
連接喇叭

Step9. 請將DF Player的IO_1腳位接到Nano板的D13腳位,並將VCC接到麵包板電源腳位、GND接到麵包板接地腳位。

連接各組件
連接各組件

Step10. 裝上側板。

裝上側板
裝上側板

Step11. 裝上頂蓋並放上尼龍萬向輪。

裝上頂蓋並放上尼龍萬向輪
裝上頂蓋並放上尼龍萬向輪

Step12. 組裝驚聲尖叫小魔女。

組裝驚聲尖叫小魔女
組裝驚聲尖叫小魔女

Step13. 使用十字圓頭螺絲 M3*6mm及螺母組裝底部旋轉盤。

組裝底部旋轉盤
組裝底部旋轉盤

Step14. 將驚聲尖叫小魔女和馬達連結,並裝上含有音檔的SD卡以及將Nano板燒入程式。

 連接驚聲尖叫小魔女和馬達
連接驚聲尖叫小魔女和馬達

參考程式:

const char PLAY_IO1 = 13;

const char sensor = 2;

const int high = 3;

const int low = 4;

void setup() {

// initialize digital pin 13 as an output.

pinMode(PLAY_IO1, OUTPUT);

digitalWrite(13, HIGH);

pinMode(sensor, INPUT_PULLUP);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

delay(5000);

}

// the loop function runs over and over again forever

void loop() {

if (digitalRead(sensor) == 0) {

//digitalWrite(3, HIGH);

//digitalWrite(4, LOW);

digitalWrite(13, LOW);

delay(100);

digitalWrite(13, HIGH);

driver();

while (!digitalRead(sensor));

digitalWrite(3, LOW);

digitalWrite(4, LOW);

}

}

void driver()

{

digitalWrite(3, HIGH);

digitalWrite(4, LOW);

delay(3000);

}