กลับไปหน้ารวมไฟล์
rgb-led-cube-with-bluetooth-app-animationcreator-c6e79c.md

นี่คือ คิวบ์ LED RGB ขนาด 6x6x6 (แบบแอโนดร่วม) ควบคุมด้วยแอป Bluetooth โดยใช้ Arduino Nano ตัวนี้ ปรับขนาดได้ง่ายมาก จะเอาเป็น 4x4x4 หรือ 8x8x8 ก็จัดได้ตามใจชอบ โปรเจกต์นี้ได้แรงบันดาลใจมาจาก [GreatScott] ตัวพี่เลยตัดสินใจทำเวอร์ชันที่จัดเต็มขึ้นหน่อย โดยใช้ LED ขนาดใหญ่กว่า (8mm) ระยะห่างน้อยกว่า + เพิ่ม การสื่อสารผ่าน Bluetooth เข้าไป ทำให้การเพิ่มฟังก์ชันใหม่ๆ ง่ายขึ้นโคตรๆ และยังเปิดโอกาสให้ เขียนแอปมาควบคุมคิวบ์ ได้ด้วย อย่างเช่น พี่เขียนโค้ด เกมงู (Snake Game) ให้เล่นได้เลย (ดูตัวอย่างในวิดีโอที่ 3 ท้ายโพสต์) นอกจากนั้นพี่ยังเพิ่ม โหมด Audio Visualizer ที่ให้คิวบ์แสดงภาพตามเสียงจากอินพุต AUX เช่น เพลง โดยใช้ชิป MSGEQ7 (มีวิดีโอตัวอย่างให้ดูท้ายโพสต์) และที่สำคัญ พี่เขียนแอปพลิเคชัน AnimationCreator ขึ้นมาด้วย ใช้ Java เขียนนะ มี UI ใช้ง่ายสำหรับสร้างและปรับแต่งอนิเมชัน ทำให้ใครๆ ก็สร้างอนิเมชันแบบ custom ขึ้นมาได้เร็วมาก ดังนั้น Sketch + แอป Bluetooth ตัวนี้จึงเป็นเหมือนเฟรมเวิร์กสำหรับคิวบ์ LED ทุกรูปแบบ และด้วย Animation Creator คุณก็ไม่ต้องกังวลกับการเขียนโค้ดอนิเมชันเองให้วุ่นวาย

ภาพรวมโปรเจกต์

"Cubo Volumetric Display" คือเมทริกซ์ LED RGB ความหนาแน่นสูงขนาด 6x6x6 ที่ทำหน้าที่เป็นผืนผ้าใบ 3 มิติสำหรับงานศิลปะดิจิทัลและเกม โดยการบัดกรี LED RGB จำนวน 216 ดวง เข้าด้วยกันเป็นโครงตาข่ายแม่นยำ โปรเจกต์นี้สร้างพื้นที่ 3 มิติขึ้นมาให้สามารถแสดงอนิเมชัน, ภาพจากเสียง (visualizer) และแม้แต่ เกม "Snake" เวอร์ชัน 3D ได้เลย ควบคุมผ่าน แอป Bluetooth ที่เขียนขึ้นเอง และ โปรแกรมสร้างอนิเมชัน Java (Animation Creator) โปรเจกต์นี้สาธิตวิศวกรรมอิเล็กทรอนิกส์ระดับสูง ตั้งแต่การมัลติเพล็กซ์ความเร็วสูงไปจนถึงการจัดการกำลังไฟแบบกระแสคงที่

ลงลึกเรื่องเทคนิค

  • Constant Current Multiplexing (TLC5940 Chain):
    • ตัวเลขเบื้องหลัง: การขับ LED RGB 216 ดวง ต้องควบคุมแคโทดทั้งหมด 648 ตัว เพื่อจัดการกับสิ่งนี้บน Arduino Nano โปรเจกต์นี้จึงใช้ ชิป TLC5940 จำนวน 7 ตัวต่อแบบ Daisy Chain แต่ละ TLC5940 ให้ช่องสัญญาณ PWM 16 ช่อง ความละเอียด 12 บิต พร้อมฟังก์ชัน จำกัดกระแสคงที่ (Constant Current) ในตัว สิ่งนี้ทำให้แน่ใจว่า LED ทุกดวงในคิวบ์มีความสว่างเท่ากัน ไม่ว่าจะมี LED อีกกี่ดวงที่กำลังติดอยู่
    • Daisy Chaining: ข้อมูลถูกส่งออกจาก Arduino ผ่าน SPI ชิปทั้ง 7 ตัวทำหน้าที่เสมือนรีจิสเตอร์แบบ shift ขนาดยักษ์ 112 ช่อง ทำให้ Nano สามารถตั้งค่าความเข้มสีสำหรับทั้งเลเยอร์ได้ในครั้งเดียวด้วยการส่งข้อมูลความเร็วสูง
  • Volumetric Scanning & POV:
    • คิวบ์ไม่ได้จุด LED ทั้ง 216 ดวงพร้อมกัน แต่ใช้หลักการ Persistence of Vision (POV) แทน โดยมันจะจุด LED ในแนวนอนทีละเลเยอร์ (6x6) ด้วยการสลับเปิดปิดผ่านทั้ง 6 เลเยอร์ที่ความถี่สูงกว่า 60Hz ดวงตาของมนุษย์เราจะเห็นเป็นภาพ 3 มิติที่ต่อเนื่อง ไม่กระพริบ
    • High-Side Switching: เพื่อจัดการกับกระแสของ LED RGB 36 ดวง (สูงสุดถึง 2.1 แอมป์ต่อเลเยอร์) ระบบนี้ใช้ MOSFET ประเภท P-Channel รุ่น IRF9540 พวกมันทำหน้าที่เป็นสวิตช์ความเร็วสูง เปิด-ปิดไฟเลี้ยง (แอโนดร่วม) ให้กับแต่ละเลเยอร์ภายใต้การควบคุมของ Arduino
  • Java-Based Animation Modeling:
    • โปรเจกต์นี้รวม แอปพลิเคชันสร้างอนิเมชัน (Animation Creator) ที่เขียนขึ้นเองมาให้ด้วย ซอฟต์แวร์นี้มี GUI แบบ 3D ที่ให้ผู้ใช้คลิกที่ "ว็อกเซล" แต่ละจุดเพื่อตั้งสีและเฟรมได้ จากนั้นซอฟต์แวร์จะคอมไพล์พิกัด 3 มิติเหล่านั้นให้เป็นสตรีมข้อมูลไบนารีที่ถูกออกแบบให้เหมาะสมกับโปรโตคอลซีเรียลของ Bluetooth
  • Audio and Game Logic:
    • MSGEQ7 Integration: ในโหมด visualizer คิวบ์จะแมปแถบความถี่ 7 แถบจากชิป MSGEQ7 ไปเป็น "กราฟแท่งความถี่" แบบ 3D ที่เติบโตขึ้นจากพื้นของคิวบ์
    • 3D Snake: ตรรกะของเกมจะจัดการอาร์เรย์ของพิกัด (x, y, z) สำหรับลำตัวของงู การตรวจจับการชน (Collision detection) จะถูกคำนวณใหม่ในทุกเฟรม โดยตรวจสอบตำแหน่งว็อกเซลที่เป็นไปได้ทั้งหมด 216 ตำแหน่ง

วิศวกรรมและการประกอบ

  • แม่แบบสำหรับประกอบ (Prototyping Jig): ความแม่นยำคือหัวใจของงานนี้ รุ่นพี่ใช้แม่แบบไม้เจาะรูเพื่อยึด LED ขนาด 8mm ให้เรียงเป็นตาราง 6x6 แบบเป๊ะๆ ตอนประกอบแต่ละชั้น วิธีนี้ช่วยให้คิวบ์สุดท้ายออกมาสี่เหลี่ยมจัตุรัสสมบูรณ์ และสาย "บัส" ด้านใน (ทำจากทองแดงชุบดีบุก) ตรงดิ่งไม่บิดเบี้ยว
  • การจัดการสายริบบิ้น (Ribbon Cable Management): เพื่อไม่ให้กลายเป็นรังหนูของสายไฟ 216 เส้น เราจึงใช้สายริบบิ้นสายรุ้ง 40 พิน ในการเชื่อมต่อระหว่างบอร์ดฐานกับ MOSFET ของแต่ละชั้น และเฮดเดอร์ของ TLC5940
  • การคำนวณกำลังไฟ (Power Budgeting): คิวบ์ที่ติดสีขาวเต็มที่ทุกดวงในทางทฤษฎีอาจกินกระแสเกิน 10 แอมป์ ($216 \times 3 \text{ สี} \times 20\text{mA}$) แต่ว่าในหนึ่งช่วงเวลาจะมีแค่ชั้นเดียวที่ทำงาน ดังนั้นกระแสสูงสุดจริงๆ จะเหลือประมาณ 2.2A เท่านั้น ต้องใช้ Power Supply 5V 4A ที่จ่ายไฟได้มั่นคงเท่านั้น ไม่งั้นไฟตกตอนเล่นอนิเมชั่นหนักๆ แน่นอน ห้ามช็อตนะตัวนี้
  • การจัดการสถานะในเฟิร์มแวร์ (Firmware State Management): สเก็ตช์ Arduino ทำตัวเป็นตัวเรนเดอร์แบบพาสซีฟ มันคอยฟังข้อมูลเฟรมใหม่จาก โมดูลบลูทูธ HC-05 และเก็บไว้ในบัฟเฟอร์ชั่วคราว สถาปัตยกรรมแบบแยกส่วนนี้ทำให้เราสร้างอนิเมชั่นซับซ้อนได้ไม่จำกัด เพราะงานประมวลผลหนักๆ ถูกจัดการโดยแอปบนคอมหรือมือถือแทน

ลิงก์ไปยังสเก็ตช์ Arduino และแอปบลูทูธ:

RGBCube_Arduino Sketch (Github)+Animation Creator.jar

Cubo Bluetooth App (Github)

รายการชิ้นส่วนสำหรับสร้างคิวบ์:

  • 216x LED RGB (Common Anode) (8mm) -> 6x6x6=216

  • สายริบบิ้น (Ribbon Cable) (ยาว 1 เมตร 40 พิน น่าจะพอ)

  • เฮดเดอร์ตัวผู้และตัวเมีย (Female and Male Headers) (อย่างน้อย 4x40 พิน แต่ละแบบ)

  • สายทองแดง/เงินชุบดีบุก ขนาด 0.8 มม. (ยาวประมาณ 25 เมตร) (หาซื้อได้ตามเว็บขายของออนไลน์ทั่วไป)

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

apps:
  - "1x Cubo"
author: "PhilKey"
category: "Screens & Displays"
components:
  - "6x Power MOSFET N-Channel"
  - "1x Arduino Nano R3"
  - "216x RGB Diffused Common Anode"
  - "1x Soldering iron (generic)"
  - "1x HC-05 Bluetooth Module"
description: "คิวบ์ไฟ LED ขุมพลัง Arduino Nano ควบคุมผ่าน HC-05 รับคำสั่งจากแอปมือถือได้ชิลๆ แถมมีโปรแกรมสร้างอนิเมชั่นเองได้แบบจัดเต็ม และมีเกมงูให้เล่นแก้เบื่อ งานง่ายแต่หล่อมาก วัยรุ่นต้องมี!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/PhilKes/Cubo"
  - "https://github.com/PhilKes/RGBCube_Arduino"
  - "https://github.com/PhilKes/Cubo"
  - "https://github.com/PhilKes/RGBCube_Arduino"
encryptedPayload: "U2FsdGVkX18VFdVOY5gHPnAPgfJkGGgnLsSk65p3smv13W3jFGTpHKpeLDdi/FkgdYom6o4T1sAy0UXPb8hLjw=="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/rgb-led-cube-with-bluetooth-app-animationcreator-c6e79c_cover.jpg"
lang: "en"
likes: 18
passwordHash: "fcf01ba0d49e5bf12241096189a9b5ba3b0d7f7aae0fdf7db3900c5d4e3ad5d9"
price: 1499
seoDescription: "Build an RGB LED Cube using Arduino Nano and HC-05. Control via Bluetooth App with a custom Animation Creator and Snake Game."
tags:
  - "hc-05"
  - "cube"
  - "bluetooth"
  - "arduino"
  - "led"
  - "msgeq7"
title: "คิวบ์ไฟ RGB อลังการ + แอปบลูทูธสั่งงานได้ + สร้างอนิเมชั่นเทพๆ"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/7ZhhkueKalk"
  - "https://www.youtube.com/embed/hyaItBO_Ryo"
  - "https://www.youtube.com/embed/cXLUuhDKGbA"
views: 17900