กลับไปหน้ารวมไฟล์
scrolling-text-matrix-with-bluetooth-app-control-22d2e1.md

นี่คือโปรเจกต์ 'Work In Progress' ล่าสุดของพี่ ใช้ ESP32 WROOM กับ เมทริกซ์ LED WS2812b ขนาด 8x32 หลักการคือส่งข้อความจากแอปในมือถือผ่านบลูทูธไปหา ESP32 แล้วข้อความจะวิ่งสกรอลไปทางซ้ายทันที แถมในแอปยังเลือกสีได้ตั้ง 9 สีที่ตั้งไว้ล่วงหน้าอีกด้วย

หน้าจอเมทริกซ์ LED

ความยาวข้อความน่าจะไม่จำกัด (แต่ยังไม่ได้ลองส่งนิยายทั้งเรื่องนะน้อง)

โค้ดที่แอปในมือถือส่งมาจะเป็นตัวเลข 0-8 แทนสีที่ตั้งไว้ ส่วนเลข 9 คือสัญญาณบอกว่ากำลังจะส่งข้อความตามมา

ตอนเปิดเครื่อง ESP32 มันจะส่ง ID ว่า "BT_Text" ออกมา ให้เชื่อมต่อบลูทูธจากมือถือก่อน แล้วค่อยเปิดแอป ระวังนิดนึงสำหรับอัปเดต Android เวอร์ชันใหม่ๆ มันจะขออนุญาตใช้งานบลูทูธเฉพาะเจาะจง ถ้าไม่อนุญาตงานไม่เข้าเลย ตอนติดตั้งแอปครั้งแรกอาจขึ้นข้อความผิดพลาดขออนุญาต ให้กดอนุญาตแล้วเปิดแอปใหม่ ถ้าพลาดไปแล้วแอปไม่ยอมทำงาน ให้เข้าไปที่การตั้งค่าแอปในมือถือ แล้วไปเปิดสิทธิ์บลูทูธให้มันตรงนั้นเลย

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

การจัดการสตริงแบบไดนามิก

โปรเจกต์นี้สร้างขึ้นจากแนวคิดการจัดการสตริงแบบไดนามิก แม้จะใช้ ESP32 กับเมทริกซ์ WS2812b แต่หลักการพื้นฐานก็คล้ายกับการใช้ไลบรารีสำหรับจอแสดงผลโดยเฉพาะ เช่น MD_Parola สำหรับโมดูล MAX7219 กระบวนการมีดังนี้:

  1. บัฟเฟอร์สำหรับแสดงผล: โค้ดจะมีบัฟเฟอร์ (อาร์เรย์ของตัวอักษร) ไว้เก็บข้อความที่กำลังจะสกรอล
  2. ดักจับสัญญาณบลูทูธ: บลูทูธ Classic ในตัว ESP32 (หรือ UART ที่ต่อกับโมดูลอย่าง HC-05) จะคอยฟังข้อมูลที่เข้ามา
  3. เมื่อแอปในมือถือส่งสตริงมา เช่น "Hello World\n" ESP32 จะจับข้อมูลนั้นทีละตัวอักษร
  4. อักขระขึ้นบรรทัดใหม่ (\n) ทำหน้าที่เป็นตัวแบ่ง ส่งสัญญาณว่าจบการส่งแล้ว
  5. สตริงใหม่จะถูกคัดลอกไปยังบัฟเฟอร์ของฟังก์ชันแสดงผลอย่างปลอดภัย และป้ายข้อความจะอัปเดตทันทีเพื่อเริ่มสกรอลข้อความใหม่

สถาปัตยกรรมการต่อแบบ Daisy-Chain

เมทริกซ์ 8x8 แผ่นเดียวเล็กเกินไปสำหรับแสดงคำอ่านได้สบายตา โปรเจกต์นี้ใช้ เมทริกซ์ LED WS2812b ขนาด 8x32 ซึ่งจริงๆ แล้วคือการนำแผง 8x8 จำนวน 4 แผ่นมาต่อแบบ daisy-chain เข้าด้วยกันเป็นกริดต่อเนื่องกว้าง 32 พิกเซล ไลบรารีอย่าง FastLED หรือ NeoPixel จะจัดการเรื่องมัลติเพล็กซ์ให้ ทำให้โซ่ทั้งหมดทำงานเหมือนเป็นจอแสดงผลชุดเดียวที่ต่อเนื่องกัน

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

  • ESP32 WROOM (ที่มีบลูทูธในตัว)
  • โมดูลเมทริกซ์ LED WS2812b ขนาด 8x32
  • สมาร์ทโฟนระบบ Android ที่รันแอป Bluetooth Terminal ที่เราทำขึ้น

วิดีโอสาธิต -->

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

apps:
  - "1x Arduino IDE"
author: "stevie135s"
category: ""
components:
  - "1x ESP32 WROOM"
  - "1x 8x32 WS2812b Matrix"
description: "แสดงข้อความวิ่งตึงๆ บนจอแมทริกซ์ WS2812b ขนาด 32x8 ควบคุมผ่าน Bluetooth ด้วยแอพ Android สั่งงานได้แบบวัยรุ่นจัดไป"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/591f267d-526b-45f9-91c1-3c7bca1690e3.ino"
encryptedPayload: "U2FsdGVkX18Y/gk7l6xpVPu5RwFHamlRl49IYveeW4yLvcuB3X5OHJm8eg59mFkKmqfvs/47fqtLkPe2jE6sQHXIVxfnDUDyUEe9Hb1I9vI="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/scrolling-text-matrix-with-bluetooth-app-control-22d2e1_cover.jpg"
lang: "en"
likes: 1
passwordHash: "7b3715c90f7b3e78966870aa428929b5be86f6d2f1c9109e4ab0b56a196bb690"
price: 699
seoDescription: "Build a Scrolling Text Matrix using 32x8 WS2812b and Arduino. Control your display wirelessly via a Bluetooth Android app."
tags:
  - "matrix"
  - "esp32"
  - "scroll"
title: "แมทริกซ์สายรุ้งเลื่อนข้อความสั่งผ่านมือถือ งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/6_LXg1T_JoY"
views: 5344