กลับไปหน้ารวมไฟล์
arduino-mp3-nodding-toy-fa2bf8.md

Introduction: Bringing Toys to Life with Arduino

ในโปรเจกต์นี้ ผมจะแนะนำทุกคนในการเปลี่ยนตุ๊กตาธรรมดาให้กลายเป็นของเล่นอัจฉริยะแบบอินเทอร์แอคทีฟที่ตอบสนองต่อการสัมผัสได้ โดยจะสามารถเล่นไฟล์เสียง MP3 และพยักหน้าได้อย่างน่ารัก โปรเจกต์นี้ไม่เพียงแต่ทำให้ได้ของเล่นสุดเจ๋ง แต่ยังเป็นบทเรียนที่ยอดเยี่ยมในการเรียนรู้วิธีการใช้งาน DFPlayer Mini ร่วมกับ Arduino รวมถึงการประยุกต์ใช้เซ็นเซอร์ตรวจจับแรงกดแบบง่ายๆ

คุณสามารถนำหลักการพื้นฐานจากบทความนี้ไปพัฒนาโปรเจกต์อื่นๆ ได้อีกมากมาย เช่น นาฬิกาปลุกอัจฉริยะ, ลำโพง MP3 แจ้งสถานะ, หรือระบบแจ้งเตือนด้วยเสียงใน Home Automation


Concept and Working Principle (The Concept)

แนวคิดของโปรเจกต์นี้เรียบง่ายแต่มีประสิทธิภาพสูง:

  1. Input: เมื่อเราบีบมือตุ๊กตา แผ่น Piezoelectric ที่ซ่อนอยู่ภายในจะตรวจจับแรงกดและส่งสัญญาณไฟฟ้าไปยัง Arduino
  2. Processing: Arduino จะประมวลผลสัญญาณและสั่งการโมดูล DFPlayer Mini ให้เริ่มเล่นไฟล์เสียงที่เก็บไว้ในการ์ด MicroSD Card
  3. Output: ในขณะที่เสียงกำลังเล่น Arduino จะสั่งการ Servo Motor ให้ขยับขึ้นลงเพื่อจำลองการพยักหน้า และจะหยุดขยับทันทีเมื่อเสียงเล่นจบ

Detecting Squeeze Force with a Piezoelectric Sensor

เพื่อให้ตุ๊กตาสามารถตอบสนองต่อการสัมผัสได้ ผมเลือกที่จะใส่แผ่น Piezoelectric เข้าไปในมือตุ๊กตา

การติดตั้งแผ่น Piezo ภายในมือตุ๊กตา

ในมุมมองทางวิศวกรรม: แผ่น Piezo จะสร้าง Voltage เมื่อได้รับ Mechanical Stress แต่สัญญาณที่ได้มักจะมี Noise สูง ดังนั้นจึงจำเป็นต้องต่อ 1M Ohm resistor แบบขนานเข้ากับสายสัญญาณ เพื่อช่วยในการคายประจุและทำให้สัญญาณที่ส่งไปยัง Arduino มีความเสถียรและแม่นยำยิ่งขึ้น (ป้องกัน False Triggers)

แผนภาพวงจรของ Piezo Sensor พร้อมตัวต้านทาน 1M

Nodding Mechanism (Nodding Mechanism)

หัวใจของการเคลื่อนไหวคือ Servo Motor ที่ติดตั้งอยู่ภายในคอตุ๊กตา ส่วนที่สำคัญที่สุดคือการสร้าง "Holder" ที่มั่นคง เพราะหาก Servo ไม่ได้ยึดติดแน่น แรงบิดจะทำให้ตัวมอเตอร์หมุนเองแทนที่จะขยับหัวตุ๊กตา

ผมได้ดัดแปลง plastic bottle เพื่อสร้างโครงสร้างการติดตั้งภายใน ซึ่งเป็นวิธีที่ประหยัดและมีประสิทธิภาพสูง

การติดตั้ง Servo Motor ภายในโครงสร้างตุ๊กตา

การควบคุมด้วย Code: เราจะใช้ฟังก์ชันเพื่อควบคุมมุมของ Servo โดยสลับระหว่างมุมเริ่มต้นและมุมพยักหน้าที่ต้องการ

void nodd()
{
   servo1.write(SERVO_NODD);    // Command to rotate to the nodding angle
   delay(300);                  // Wait for the mechanism to move
   servo1.write(SERVO_INITIAL); // Return to the upright position
}

Audio System with DFPlayer Mini

DFPlayer Mini เป็นโมดูล MP3 ขนาดเล็กที่มีประสิทธิภาพสูงมาก รองรับการสื่อสารแบบ Serial (UART) ทำให้เราสามารถควบคุมการเล่นเพลงได้อย่างอิสระ

1. MicroSD Card Preparation

  • การ์ดจะต้องถูกฟอร์แมตเป็น FAT หรือ FAT32 เท่านั้น
  • การตั้งชื่อไฟล์: นี่คือส่วนที่สำคัญที่สุด
    • สร้างโฟลเดอร์ชื่อ mp3 และ advert
    • ไฟล์ในโฟลเดอร์เหล่านี้จะต้องขึ้นต้นด้วยตัวเลข 4 หลัก (เช่น 0001.mp3, 0002.mp3)
    • หากสร้างโฟลเดอร์อื่น (ชื่อ 01-99) ไฟล์จะต้องขึ้นต้นด้วยตัวเลข 3 หลัก (เช่น 001.mp3)

2. Circuit Connection

สำหรับการใช้งานร่วมกับ Arduino การเชื่อมต่อจะผ่าน Software Serial โดยมีจุดหลักๆ ทั้งหมด 7 จุด:

ผังขาของ DFPlayer Mini

ตารางการเชื่อมต่อ:

  • Arduino TX (D5) <---> DFPlayer RX (ควรต่อผ่านตัวต้านทาน 1K เพื่อลด Noise)
  • Arduino RX (D4) <---> DFPlayer TX
  • Arduino 5V <---> VCC
  • Speaker Pin 1 & 2 <---> SPK_1, SPK_2 (สามารถต่อเข้ากับลำโพงได้โดยตรง)
  • Digital Pin (D2) <---> BUSY pin (ใช้สำหรับตรวจสอบว่ากำลังเล่นเพลงอยู่หรือไม่)

3. Library Usage and Code Logic

สำหรับการพัฒนา ผมแนะนำให้ใช้ Library จาก RobotsForFun ซึ่งมีความเสถียรสูงกับโมดูลนี้

  • ดาวน์โหลด Library: ที่นี่ (DFPlayer.zip)
  • เริ่มต้นใช้งาน: ในส่วนของ setup() เราจำเป็นต้องตั้งค่า Volume และเริ่มต้นการสื่อสารแบบ Serial
 // Initialize MP3 module
 mp3.begin();  
 mp3.setVolume(VOLUME_INITIAL); // Set desired volume level (0-30)

การควบคุมการเล่นเพลงทำได้ง่ายๆ ด้วยคำสั่งเหล่านี้:

  • mp3.playMP3Folder(1); - เล่นไฟล์ 0001.mp3 ในโฟลเดอร์ mp3
  • mp3.playing(BUSYPIN) - ฟังก์ชันนี้สำคัญมาก ใช้สำหรับตรวจสอบสถานะจากขา BUSY หากค่าเป็น 1 แสดงว่ากำลังเล่นเพลงอยู่ เราจะใช้ค่านั้นเป็นเงื่อนไขในการสั่งให้ Servo พยักหน้าไปพร้อมกับเพลง

Project Demonstration Video (Project Demonstration)

มาดูผลลัพธ์เมื่อทุกอย่างประกอบเข้าด้วยกัน ตุ๊กตาจะสามารถตอบสนองต่อการบีบได้อย่างเป็นธรรมชาติ

รับชมวิดีโอการทำงานของตุ๊กตา

Future Extensions (Future Extensions)

โปรเจกต์นี้เป็นรากฐานที่คุณสามารถต่อยอดได้อีกมาก:

  • เพิ่มจุดสัมผัส: ติดตั้ง Piezo Plates เพิ่มเติมที่เท้าหรือมืออีกข้างเพื่อเล่นเพลงที่แตกต่างกัน
  • การเคลื่อนไหวที่สมจริง: เพิ่ม Servo Motor อีกตัวเพื่อให้คอสามารถเอียงซ้าย-ขวา หรือควบคุมการเคลื่อนไหวของแขนได้
  • ระบบโต้ตอบอัจฉริยะ: ผนวก Passive Infrared (PIR) motion sensor เพื่อให้ตุ๊กตาทักทายผู้คนเมื่อเดินผ่านไปมา

การสร้างตุ๊กตาตัวนี้เป็นวิธีที่สนุกในการเรียนรู้เกี่ยวกับ Sensor Fusion หรือการประสานงานที่สมบูรณ์แบบระหว่าง Input (Piezo), Logic (Arduino) และ Output (เสียงและการเคลื่อนไหว)!

ข้อมูล Frontmatter ดั้งเดิม

title: "Arduino MP3 Nodding Toy"
description: "Stuffed toy with MP3 module, speaker, servo and piezoelectric sensor that nods to music."
author: "sadreactonly"
category: "Motors & Robotics"
tags:
  - "music"
  - "toys"
  - "mp3"
views: 8888
likes: 7
price: 2450
difficulty: "Easy"
components:
  - "1x Piezoelectric"
  - "1x Arduino UNO"
  - "1x Flash Memory Card, MicroSD Card"
  - "1x  DFPlayer Mini MP3 Player For Arduino"
  - "1x Jumper wires (generic)"
  - "1x SG90 Micro-servo motor"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "99c2ddac242f08412f7cb96f07331291f204dfb83dcc5a809d84aaf7174d5a06"
encryptedPayload: "U2FsdGVkX19k5/Ep46TixdYC4AUdKbl7eUPE4l15O2tRN8aav0f96VbUhKRWnh1KxlshI8vTzU5Q+aaN/BY+hU/lj0+kxKZ8SYoXIqy/Tus="
seoDescription: "Build an Arduino MP3 nodding toy with a servo and piezoelectric sensor. A fun stuffed toy project that reacts to music."
videoLinks:
  - "https://www.youtube.com/embed/HKANJF97OxU"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-mp3-nodding-toy-fa2bf8_cover.jpg"
lang: "th"