Introduction: Bringing Toys to Life with Arduino
ในโปรเจกต์นี้ ผมจะแนะนำทุกคนในการเปลี่ยนตุ๊กตาธรรมดาให้กลายเป็นของเล่นอัจฉริยะแบบอินเทอร์แอคทีฟที่ตอบสนองต่อการสัมผัสได้ โดยจะสามารถเล่นไฟล์เสียง MP3 และพยักหน้าได้อย่างน่ารัก โปรเจกต์นี้ไม่เพียงแต่ทำให้ได้ของเล่นสุดเจ๋ง แต่ยังเป็นบทเรียนที่ยอดเยี่ยมในการเรียนรู้วิธีการใช้งาน DFPlayer Mini ร่วมกับ Arduino รวมถึงการประยุกต์ใช้เซ็นเซอร์ตรวจจับแรงกดแบบง่ายๆ
คุณสามารถนำหลักการพื้นฐานจากบทความนี้ไปพัฒนาโปรเจกต์อื่นๆ ได้อีกมากมาย เช่น นาฬิกาปลุกอัจฉริยะ, ลำโพง MP3 แจ้งสถานะ, หรือระบบแจ้งเตือนด้วยเสียงใน Home Automation
Concept and Working Principle (The Concept)
แนวคิดของโปรเจกต์นี้เรียบง่ายแต่มีประสิทธิภาพสูง:
- Input: เมื่อเราบีบมือตุ๊กตา แผ่น Piezoelectric ที่ซ่อนอยู่ภายในจะตรวจจับแรงกดและส่งสัญญาณไฟฟ้าไปยัง Arduino
- Processing: Arduino จะประมวลผลสัญญาณและสั่งการโมดูล DFPlayer Mini ให้เริ่มเล่นไฟล์เสียงที่เก็บไว้ในการ์ด MicroSD Card
- Output: ในขณะที่เสียงกำลังเล่น Arduino จะสั่งการ Servo Motor ให้ขยับขึ้นลงเพื่อจำลองการพยักหน้า และจะหยุดขยับทันทีเมื่อเสียงเล่นจบ
Detecting Squeeze Force with a Piezoelectric Sensor
เพื่อให้ตุ๊กตาสามารถตอบสนองต่อการสัมผัสได้ ผมเลือกที่จะใส่แผ่น Piezoelectric เข้าไปในมือตุ๊กตา

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

Nodding Mechanism (Nodding Mechanism)
หัวใจของการเคลื่อนไหวคือ Servo Motor ที่ติดตั้งอยู่ภายในคอตุ๊กตา ส่วนที่สำคัญที่สุดคือการสร้าง "Holder" ที่มั่นคง เพราะหาก Servo ไม่ได้ยึดติดแน่น แรงบิดจะทำให้ตัวมอเตอร์หมุนเองแทนที่จะขยับหัวตุ๊กตา
ผมได้ดัดแปลง plastic bottle เพื่อสร้างโครงสร้างการติดตั้งภายใน ซึ่งเป็นวิธีที่ประหยัดและมีประสิทธิภาพสูง

การควบคุมด้วย 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 จุด:

ตารางการเชื่อมต่อ:
- 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 ในโฟลเดอร์ mp3mp3.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 (เสียงและการเคลื่อนไหว)!