สร้างผู้ช่วย AI สั่งงานด้วยเสียงขนาดพกพาด้วย ESP32 และ Xiaozhi (ฉบับจับมือทำ)

DIY Pocket Size ESP32 AI Voice Assistant

ผมเป็นคนที่อินกับพวกระบบสั่งงานด้วยเสียง (Voice Assistants) มากๆ ครับ แต่ปัญหาคือส่วนใหญ่มันมักจะถูกฝังอยู่ในสมาร์ทโฟนหรือไม่ก็เป็นลำโพงอัจฉริยะเครื่องใหญ่ๆ ผมเลยอยากได้อะไรที่มัน "เล็กกว่านั้น" แบบที่ตั้งบนโต๊ะทำงานได้ หรือพกใส่กระเป๋าไปไหนมาไหนได้สะดวก

สุดท้ายเลยตัดสินใจว่าจะสร้างมันขึ้นมาเองด้วยบอร์ด ESP32 ซะเลย! ตอนแรกก็คิดว่าคงยากและต้องเขียนโค้ดซับซ้อนแน่ๆ แต่พอได้รู้จักกับเฟิร์มแวร์ที่ชื่อว่า Xiaozhi ทุกอย่างก็กลายเป็นเรื่องง่ายไปเลยครับ เราแทบไม่ต้องแตะโค้ดหนักๆ เลย แค่แฟลชเฟิร์มแวร์แล้วตั้งค่าก็จบ!

ผลลัพธ์ที่ได้คือ ผู้ช่วย AI สั่งงานด้วยเสียงขนาดพกพา ที่สามารถฟังเสียงเรา ตอบกลับได้ และยังแสดงข้อมูลบนหน้าจอเล็กๆ ได้ด้วย ให้ความรู้สึกเหมือนเป็น Gadget จริงๆ มากกว่าแค่โปรเจกต์ DIY ธรรมดาครับ

ผู้ช่วย AI ตัวนี้ทำอะไรได้บ้าง?

เจ้าเครื่องจิ๋วนี้สามารถเอาไปประยุกต์ใช้งานได้หลายอย่างเลยครับ:

  • ใช้เป็น Smart Home Assistant พื้นฐาน สำหรับเช็คสภาพอากาศหรือคุมอุปกรณ์ในบ้าน
  • เป็น Learning companion เอาไว้ถามคำถามหรือขอคำอธิบายสั้นๆ
  • เอาไว้เล่นสนุกๆ ชวนคุย ให้เล่านิทาน หรือสร้างความบันเทิงพื้นฐาน
  • เป็น Development platform ที่ดีมากสำหรับคนที่อยากทดลองทำโปรเจกต์ AI และระบบเสียง
  • สามารถทำหน้าที่เป็นอินเทอร์เฟซ IoT ภายในระบบสมาร์ทโฮมที่ใหญ่ขึ้นได้

อุปกรณ์ที่ต้องใช้ (Supplies)

โปรเจกต์นี้ผมไม่ได้ทำรวดเดียวจบนะครับ แต่เริ่มจากการต่อทดสอบบน Breadboard ก่อน พอเวิร์กแล้วค่อยเปลี่ยนไปทำลงแผ่น PCB เพื่อให้มันเล็กและดูสะอาดตา

(ถ้าใครกำลังหาซื้อบอร์ด ESP32-S3, ไมโครโฟน, ลำโพงจิ๋ว หรือแม้แต่ เส้นพลาสติก 3D Print เกรดพรีเมียม เพื่อเอาไปปริ้นท์ทำเคสใส่ AI Assistant ตัวนี้ให้สวยงาม แวะไปช้อปปิ้งอุปกรณ์คุณภาพได้ที่ Globalbyte เลยครับ ครบจบในที่เดียว!)

สำหรับเวอร์ชันทดสอบบน Breadboard:

  • บอร์ดพัฒนา ESP32-S3 (DevKitC-1)
  • ไมโครโฟนดิจิทัล INMP441
  • โมดูลขยายเสียง MAX98357A
  • ลำโพงขนาดเล็ก (4Ω–8Ω, 2–3W)
  • หน้าจอ OLED (SSD1306, 0.91" หรือ 0.96")
  • ปุ่มกด (Push button), เบรดบอร์ด และสายจัมเปอร์
Supplies Overview

สำหรับเวอร์ชัน PCB (ประกอบจริง): นอกจากชิ้นส่วนหลักแล้ว จะมีเพิ่มปุ่มกดขนาดเล็ก (Reset, Boot, Vol+, Vol-), สวิตช์เปิด-ปิด, พิน Header, และจุดต่อแบตเตอรี่พร้อมโมดูลชาร์จ TP4056 ครับ

Component 1 Component 2 Component 3 Component 4 Component 5 Component 6 Component 7 Component 8 Component 9

Step 1: หลักการทำงานของระบบ (How It Works)

How it works architecture

ก่อนลงมือทำ มาทำความเข้าใจกันก่อนครับว่าระบบมันทำงานยังไง โปรเจกต์นี้ ไม่ได้รัน AI โดยตรงบนบอร์ด ESP32 นะครับ แต่มันใช้การประมวลผลบน Cloud นี่คือเหตุผลว่าทำไมบอร์ดเล็กๆ ถึงสามารถทำงานเป็นผู้ช่วยอัจฉริยะได้

การทำงาน (Workflow) เป็นแบบนี้ครับ:

  1. เราพูดใส่ไมโครโฟน
  2. ESP32 บันทึกเสียงผ่านอินเทอร์เฟซเสียง I2S
  3. ESP32 ส่งไฟล์เสียงผ่าน WiFi ไปยังระบบคลาวด์ของ Xiaozhi
  4. บนระบบคลาวด์จะรับหน้าที่หนักทั้งหมด:
    • แปลงเสียงเป็นข้อความ (Speech-to-Text)
    • ส่งข้อความให้โมเดล AI (LLM) คิดและสร้างคำตอบ
    • แปลงคำตอบที่เป็นข้อความกลับมาเป็นเสียง (Text-to-Speech)
  5. ระบบคลาวด์ส่งไฟล์เสียงตอบกลับมาที่ ESP32
  6. ESP32 เล่นเสียงผ่านลำโพง

สรุปง่ายๆ คือ ESP32 มีหน้าที่แค่ อัดเสียง, เล่นเสียง, ต่อ WiFi และคุมอุปกรณ์ ส่วนการใช้ "สมองคิด" จะเกิดขึ้นบน Cloud ทั้งหมดครับ!

Step 2-6: เจาะลึกฮาร์ดแวร์แต่ละชิ้น

มาทำความรู้จักฮาร์ดแวร์หลักๆ กันสักนิดครับ จะได้ต่อวงจรกันง่ายขึ้น

ESP32-S3 Dev Board
  • ESP32-S3 (Main Controller): นี่คือสมองสั่งการฝั่งฮาร์ดแวร์ มี Dual-core ความเร็ว 240 MHz มี WiFi และ Bluetooth ในตัว มีกำลังเหลือเฟือสำหรับจัดการสัญญาณเสียงและคุยกับ Cloud
  • INMP441 (Digital Microphone): ไมค์ตัวนี้เป็นแบบดิจิทัล MEMS ที่ใช้โปรโตคอล I2S หมายความว่ามันแปลงเสียงเป็นข้อมูลดิจิทัลส่งให้ ESP32 ได้โดยตรง ไม่ต้องผ่านวงจร ADC ให้วุ่นวาย ทำให้เสียงเคลียร์และน้อยส์ (Noise) ต่ำครับ
  • MAX98357A (I2S Audio Amplifier): แอมป์จิ๋วแต่แจ๋ว ทำงานบนโปรโตคอล I2S เช่นกัน มันทำหน้าที่รับข้อมูลดิจิทัลจาก ESP32 มาแปลงเป็นเสียง (DAC) และขยายสัญญาณส่งออกลำโพงได้ในตัวเดียวเลย
  • OLED Display 128x32: จอแสดงผลจิ๋วๆ ใช้ชิป SSD1306 ต่อผ่าน I2C (ใช้สายสัญญาณแค่ 2 เส้น) เอาไว้แสดงสถานะการเชื่อมต่อและข้อความต่างๆ ให้โปรเจกต์ดูสมบูรณ์ขึ้นครับ
Hardware Overview MAX98357A INMP441 OLED Display

Step 7: การต่อวงจร (Make the Circuit)

Circuit Diagram

การต่อสายบน Breadboard ให้ยึดตามผังวงจรด้านบนได้เลยครับ สรุปพิน (Pinout) คร่าวๆ ดังนี้:

  • ไมค์ INMP441 → ESP32: WS → GPIO4, SCK → GPIO5, SD → GPIO6 (อย่าลืมต่อ L/R ลง GND เพื่อใช้เป็นโมโน)
  • แอมป์ MAX98357A → ESP32: DIN → GPIO7, BCLK → GPIO15, LRC → GPIO16
  • จอ OLED → ESP32: SDA → GPIO41, SCL → GPIO42

ต่อสายให้แน่นหนา ระวังเรื่องพิน 3.3V และ 5V อย่าต่อสลับกันนะครับ!

Breadboard Build 1 Breadboard Build 2

Step 8: การแฟลชเฟิร์มแวร์ Xiaozhi

ประกอบวงจรเสร็จแล้ว มาอัปโหลดวิญญาณ AI ลงบอร์ดกันครับ!

  1. ดาวน์โหลดเครื่องมือ ESP Flash Download Tool
  2. ดาวน์โหลดไฟล์ Firmware และข้อมูลทั้งหมดจาก GitHub: esp32-ai-pocket-assistant
  3. เปิดโปรแกรม Flash Tool เลือกชิปเป็น ESP32-S3
  4. กดปุ่ม ... เลือกไฟล์ Firmware (merged-binary.bin) และตั้งค่า Address เป็น 0x0
  5. เลือก COM Port ของบอร์ด แล้วกด Erase เพื่อล้างข้อมูลเก่า
  6. กด Start เพื่อแฟลชเฟิร์มแวร์ รอจนกว่าจะขึ้นคำว่า FINISH
Flash Tool 1
Flash Tool 2 Flash Tool 3 Flash Tool 4 Flash Tool 5 Flash Tool 6

Step 9: ตั้งค่า WiFi และเปิดใช้งานอุปกรณ์

หลังจากแฟลชเสร็จ บอร์ดจะสร้าง WiFi Hotspot ของตัวเองชื่อ Xiaozhi-XXXX ขึ้นมาครับ

  1. เอามือถือหรือคอมพิวเตอร์เชื่อมต่อ WiFi นั้น แล้วเข้าเบราว์เซอร์ไปที่ IP: 192.168.4.1
  2. เลือก WiFi บ้านของคุณ (ต้องเป็น 2.4GHz เท่านั้นนะ) ใส่รหัสผ่าน แล้วกด Connect
  3. บอร์ดจะรีสตาร์ทตัวเอง แล้วมันจะส่งเสียงพูด (หรือแสดงบนจอ) เป็นตัวเลข 6 หลัก ออกมาครับ จดไว้ให้ดี!
  4. ไปที่เว็บไซต์ xiaozhi.me สมัครสมาชิกและล็อกอิน
  5. เข้าไปที่เมนู Console → กด Add Device แล้วเอาเลข 6 หลักนั้นไปกรอก
  6. เสร็จแล้ว! ตอนนี้บอร์ดของคุณก็พร้อมใช้งาน คุณสามารถตั้งชื่อ, เลือกภาษา, เลือกเสียงพูด, เปลี่ยนบุคลิก AI หรือแม้แต่เลือกโมเดล AI ในหน้าเว็บได้เลยครับ
WiFi Setup 1
WiFi Setup 2 WiFi Setup 3 WiFi Setup 4 WiFi Setup 5 WiFi Setup 6

Step 10: ทดสอบบน Breadboard

Breadboard Testing

รีสตาร์ทอุปกรณ์หนึ่งรอบ รอจนมันต่อ WiFi ได้ แล้วลองกดปุ่มพูดทักทายง่ายๆ ดูครับ เช่น "Hello" หรือ "What can you do?"

ถ้าต่อวงจรถูก ไมค์จะรับเสียงเราไปประมวลผล แล้วสักพักจะมีเสียงตอบกลับออกมาจากลำโพงครับ (ตอนที่ผมได้ยินมันตอบกลับมาครั้งแรกคือฟินสุดๆ!)
ถ้ามันไม่ติด: ลองเช็คว่าต่อ WiFi ได้ไหม, สาย I2S ของไมค์กับแอมป์ต่อถูกพินหรือเปล่า และไฟเลี้ยงพอไหม (ส่วนใหญ่ตกม้าตายตอนต่อสายผิดครับ ฮ่าๆ)

Step 11-15: อัปเกรดเป็นเวอร์ชัน PCB และสรุปผล

พอทำบน Breadboard สำเร็จ ผมก็พบว่าสายมันระโยงระยางเยอะมาก พกพาก็ลำบาก ผมเลยเปลี่ยนไปใช้แผ่น PCB ครับ โดยไปเจอดีไซน์ Open-source สวยๆ จาก surferlong (ต้องขอบคุณเจ้าของผลงานด้วยครับ) ดีไซน์นี้จัดวาง ESP32, ไมค์, แอมป์, ปุ่ม และจอ OLED ไว้แบบคอมแพคสุดๆ

ผมสั่งผลิต PCB กับทาง NextPCB รอประมาณอาทิตย์นึงก็ได้ของ พอเอาชิ้นส่วนทั้งหมดมาบัดกรีลงไป... โอ้โห มันดูคลีนและมีความน่าเชื่อถือขึ้นเยอะเลยครับ เหมือนเราได้ Pocket AI Device ของจริงมาใช้เลย!

PCB Design
PCB Bare Board PCB Assembly Finished Device 1 Finished Device 2

บทสรุป (Conclusion): โปรเจกต์นี้เป็นตัวอย่างที่เจ๋งมากในการจับเอาความฉลาดของ AI มาใส่ในฮาร์ดแวร์ขนาดจิ๋ว (Embedded hardware) มันพิสูจน์ให้เห็นว่าเราไม่ต้องใช้ฮาร์ดแวร์แพงๆ ก็สามารถสร้าง Smart Device ที่ฟังและโต้ตอบแบบเรียลไทม์ได้ ด้วยบอร์ดราคาหลักร้อยอย่าง ESP32-S3 และพลังของระบบ Cloud/Open-source ครับ หวังว่าทุกคนจะสนุกกับโปรเจกต์นี้นะครับ!

อ้างอิงข้อมูลจาก: Globalbyteshop Blog

ต้นฉบับโปรเจกต์โดย: Rau7han | Original Link | ดาวน์โหลด PDF ต้นฉบับ

*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความโปรเจกต์ต้นฉบับภาษาอังกฤษ ข้อมูลและขั้นตอนฉบับภาษาไทยอาจมีความคลาดเคลื่อนหรือถูกปรับแต่งเพื่อให้เข้าใจง่าย หากต้องการตรวจสอบเนื้อหาและกระบวนการทำงานเชิงลึก สามารถอ้างอิงได้ที่ ต้นฉบับภาษาอังกฤษ

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี