ESP32-C3 Smart Dial ลูกบิด BLE ที่ตั้งเมนูเองได้

ESP32-C3 Smart Dial ลูกบิด BLE ที่ตั้งเมนูเองได้

เมาส์ก็มี คีย์บอร์ดก็มี... แต่สาย Maker จะยอมกดปุ่มแบบเดิมทำไม ถ้าเราสามารถเอา ESP32-C3 + OLED + Rotary Encoder มาทำลูกบิดไร้สายที่มีเมนูของตัวเองได้?

โปรเจกต์ ESP32-C3 Smart Dial เป็น Controller ขนาดเล็กที่ใช้ Bluetooth Low Energy HID หรือ BLE HID ส่งคำสั่งไปยังคอมพิวเตอร์และอุปกรณ์มือถือ โดยไม่ต้องสร้าง App เฉพาะขึ้นมาเพิ่ม

วิธีใช้งานก็ตรงไปตรงมา: หมุน Encoder เพื่อเลื่อนเมนูบน OLED แล้วกดเพื่อเลือกคำสั่ง จากนั้น ESP32-C3 จะส่ง Keyboard, Media หรือ Shortcut Command ไปยังเครื่องที่ Pair ผ่าน Bluetooth

จุดที่ทำให้โปรเจกต์นี้น่าสนใจกว่า DIY Volume Knob ทั่วไป คือ Firmware ไม่ได้มีแค่ Volume Up / Down แต่มีทั้ง Media, Keyboard, Browser, Presentation, Custom Macros, Device Profiles, Favorites, Controller Lock, OLED Brightness, Idle Screen และ Deep Sleep รวมอยู่ใน Controller ตัวเดียว

ESP32-C3 Smart Dial BLE Menu Controller พร้อม OLED และ Rotary Encoder
ESP32-C3 Smart Dial ต้นแบบ BLE HID Controller ที่ใช้ OLED แสดงเมนูและ Rotary Encoder เป็น Input หลัก

Key Takeaways

  • ใช้ ESP32-C3 Super Mini เป็น Controller หลัก
  • แสดงเมนูผ่าน SH1106 OLED 128×64 เชื่อมต่อผ่าน I²C
  • ใช้ Rotary Encoder สำหรับเลื่อนเมนูและกดเลือกคำสั่ง
  • เชื่อมต่อคอมพิวเตอร์หรือมือถือผ่าน BLE HID
  • รองรับ Profile สำหรับ Auto / Universal, Windows, macOS, Android และ iPhone / iPad
  • มี Media Control, Keyboard Shortcuts, Browser, Presentation และ Custom Text Macros
  • Settings ถูกบันทึกด้วย ESP32 Preferences ทำให้ยังอยู่หลัง Reset ได้
  • มี Controller Lock, OLED Brightness, Idle Mode และ Deep Sleep

หมายเหตุก่อนเริ่ม: Source มีชื่อ Rotary Encoder ไม่ตรงกันเล็กน้อย โดย Hardware List บน Hackster แสดง M274 แต่ Build Guide, GitHub README และ Firmware อ้างถึง KY-040 / Encoder แบบ CLK-DT-SW ดังนั้นบทความนี้จะยึด KY-040 ตาม README และ Firmware เป็นหลัก

ESP32-C3 Smart Dial คืออะไร?

Smart Dial ตัวนี้เป็น Physical Controller สำหรับสั่งงานคอมพิวเตอร์หรืออุปกรณ์มือถือ โดยใช้ ESP32-C3 Super Mini เป็นสมองหลัก

แทนที่จะมีปุ่มเต็มแผง ผู้สร้างใช้ Rotary Encoder เป็น Input หลักเพียงชุดเดียว แล้วเอา OLED มาช่วยแสดง Menu

เวลาใช้งาน:

  • หมุนลูกบิดเพื่อเลื่อน Selection
  • กดเพื่อเลือกหรือ Execute คำสั่ง
  • ESP32-C3 ส่งคำสั่งผ่าน BLE HID
  • Host มอง Controller เป็น Keyboard / Media Input Device

ข้อดีของแนวคิดนี้คือ ไม่ต้องพัฒนา Mobile App หรือ Desktop App เพื่อรับคำสั่งเฉพาะของ Controller เพราะใช้ BLE HID ซึ่งเป็นแนวคิดเดียวกับ Bluetooth Keyboard และ Media Controller

สุดท้ายเราจะสร้างอะไร?

Prototype ตาม Source มีองค์ประกอบหลักดังนี้:

  • ESP32-C3 Super Mini
  • SH1106 OLED 128×64
  • Rotary Encoder
  • BLE HID Wireless Communication
  • OLED Menu Interface
  • Device Profiles หลายระบบ
  • Media Controls
  • Keyboard Shortcuts
  • Browser Controls
  • Presentation Controls
  • Custom Text Macros
  • Favorites
  • Settings
  • Controller Lock
  • OLED Brightness
  • Deep Sleep
  • Idle Screen / Animation

มองแบบง่าย ๆ: นี่คือการเอา ESP32-C3 มาทำเป็น Mini Control Surface ที่เปลี่ยนหน้าที่ได้ตาม Menu แทนที่จะให้ Rotary Encoder ทำงานแค่ Volume อย่างเดียว

Hardware ที่ต้องใช้

Hardware จำนวน หน้าที่
ESP32-C3 Super Mini 1 Controller หลัก + BLE HID
SH1106 128×64 OLED 1 แสดง Menu และ Status
KY-040 Rotary Encoder 1 หมุนเลือก Menu และกดคำสั่ง
Breadboard 1 ประกอบ Prototype
Jumper Wires ตามต้องการ เชื่อม ESP32-C3, OLED และ Encoder
USB-C Cable 1 Power และ Upload Firmware

กำลังหาของทำโปรเจกต์? ถ้าต้องการ ESP32, Development Board, OLED, Sensor หรืออุปกรณ์ Maker สามารถสอบถามทีม Globalbyte ผ่าน LINE OA Globalbyte ก่อนเลือกอุปกรณ์ให้ตรงกับงานได้

Smart Dial ทำงานอย่างไร?

Architecture ของโปรเจกต์แบ่งเป็นส่วนง่าย ๆ ได้ดังนี้:

1

Rotary Encoder รับ Input

Encoder ส่งข้อมูลทิศทางผ่าน CLK และ DT ส่วน SW ใช้รับการกดลูกบิด

2

ESP32-C3 ประมวลผล Menu

Firmware ตัดสินใจว่าตอนนี้ผู้ใช้อยู่หน้า Menu ไหน และคำสั่งที่เลือกคืออะไร

3

OLED แสดง Menu

SH1106 OLED เชื่อมกับ ESP32-C3 ผ่าน I²C และใช้แสดง Menu, Status, Lock, Sleep และหน้าจอต่าง ๆ

4

BLE HID ส่งคำสั่ง

เมื่อเลือก Action ESP32-C3 จะส่ง Keyboard หรือ Media Command ไปยัง Host ที่ Pair อยู่

5

Preferences เก็บ Configuration

ค่า Settings และ Custom Macros สามารถบันทึกไว้ เพื่อให้ยังอยู่หลัง Reset

Wiring และ Pin Connections

GitHub README และ Firmware ใช้ Pin Mapping ดังนี้:

อุปกรณ์ ขา ESP32-C3
OLED VCC 3.3V
OLED GND GND
OLED SDA GPIO 5
OLED SCL GPIO 6
Encoder CLK GPIO 3
Encoder DT GPIO 4
Encoder SW GPIO 7
Encoder VCC 3.3V
Encoder GND GND

Firmware ใช้ OLED Address: 0x3C และตั้งจอเป็น SH1106 128×64

ระวังแรงดัน: Source กำหนดให้ใช้ OLED ที่รองรับ 3.3V และไม่ควรต่อ 5V เข้ากับ ESP32-C3 GPIO โดยตรง

เตรียม Arduino IDE และ Libraries

Software หลักที่ใช้คือ Arduino IDE

1. ติดตั้ง ESP32 Arduino Board Package

ใน Arduino IDE เปิด:

File → Preferences

แล้วเพิ่ม Espressif Boards Manager URL:

Espressif Boards Manager URL
https://espressif.github.io/arduino-esp32/package_esp32_index.json

จากนั้นไปที่:

Tools → Board → Boards Manager

Search: esp32 แล้วติดตั้ง esp32 by Espressif Systems

ถ้าไม่มีชื่อ Board ของ Super Mini รุ่นที่ใช้ Source แนะนำเลือก:

ESP32C3 Dev Module

2. ติดตั้ง Libraries

ไปที่:

Sketch → Include Library → Manage Libraries

แล้วติดตั้ง:

  • Adafruit GFX Library
  • Adafruit SH110X
  • NimBLE-Arduino
  • HijelHID / HijelHID_BLEKeyboard

ส่วน Preferences, Wire, esp_sleep และ GPIO Driver มาจาก ESP32 / Arduino Environment ที่ Firmware ใช้อยู่

Version Compatibility: Source ระบุว่าเอกสาร HijelHID ในช่วงที่โปรเจกต์จัดทำ กำหนด NimBLE-Arduino ≥ 2.3.8 และ ESP32 Arduino Core ≥ 3.3.7 หาก Compile ไม่ผ่าน ให้ตรวจ Version ของสองส่วนนี้ก่อน

Upload Firmware ลง ESP32-C3

เปิด Firmware จาก Repository ของผู้สร้าง ใน Arduino IDE

จากนั้นเลือก:

Tools → Board → ESP32 Arduino → ESP32C3 Dev Module

เลือก COM Port ที่ถูกต้อง แล้วกด Upload

ถ้า Upload ไม่เข้า: Super Mini บางรุ่นอาจต้องกดหรือกดค้างปุ่ม BOOT ระหว่างเริ่ม Upload ตามพฤติกรรมของ Board ที่ใช้

เรื่อง Version ของ Firmware: Hackster อ้างถึงชื่อไฟล์ V8 แต่ GitHub Repository ปัจจุบันมีชื่อไฟล์ ESP32_C3_Smart_Dial_V0.1.ino ขณะที่ Comment ใน Firmware เขียนว่า SMART DIAL CONTROLLER V8 ดังนั้นบทความนี้ไม่ฟันธงเลข Version และแนะนำให้ใช้ไฟล์ปัจจุบันจาก Repository ของผู้สร้าง

First Boot และ Serial Monitor

หลัง Upload สำเร็จ เปิด:

Tools → Serial Monitor

ตั้ง Baud Rate:

Serial Monitor
115200 baud

Source ระบุว่าระบบจะแสดงข้อมูลเริ่มต้นของ Smart Dial และแจ้งชื่อ Bluetooth Device สำหรับ Pair

Pair Bluetooth กับ C3 Smart Dial

  1. เปิด Smart Dial
  2. เปิด Bluetooth Settings บนคอมพิวเตอร์หรือโทรศัพท์
  3. Search Bluetooth Devices
  4. หาอุปกรณ์ชื่อ C3 Smart Dial
  5. กด Pair / Connect

Firmware สร้าง BLE Keyboard Device โดยใช้ชื่อ:

C3 Smart Dial

เมื่อเชื่อมต่อสำเร็จ OLED สามารถแสดง BLE Status ของ Controller ได้

วิธีหมุนและกด Smart Dial

Input Function
Rotate Clockwise เลื่อน Selection
Rotate Counter-clockwise เลื่อน Selection
Single Press Select / Execute
Double Press Favorites
Long Press Back
Triple Press Home
Very Long Press Settings

Timing โดยประมาณที่ Source ระบุ:

  • Long Press: ประมาณ 700 ms
  • Very Long Press: ประมาณ 2200 ms

Firmware ยังมี Button Debouncing และ Encoder Debouncing เพื่อลดการอ่าน Input ซ้ำโดยไม่ตั้งใจ

Main Menu มีอะไรบ้าง?

Menu จริงใน Firmware ประกอบด้วย:

  • TEST EVERYTHING
  • Quick Control
  • Device Profile
  • Media
  • System
  • Navigation
  • Editing
  • Browser
  • Presentation
  • Keyboard / F Keys
  • Custom Macros
  • Utilities
  • Controller Power
  • Settings

Media Controller

Media Menu รองรับคำสั่ง:

  • Volume Up
  • Volume Down
  • Mute
  • Play / Pause
  • Next Track
  • Previous Track
  • Stop
  • Display Brightness Commands
  • Keyboard Backlight Commands

ตรงนี้ทำให้ Smart Dial ใช้เป็น DIY Volume Knob หรือ Desktop Media Controller ได้

Keyboard และ Navigation

  • Up / Down / Left / Right
  • Enter
  • Escape
  • Tab
  • Space
  • Home / End
  • Page Up / Page Down
  • Backspace
  • Delete
  • Insert
  • F1–F12
  • Print Screen

Editing

  • Copy
  • Paste
  • Cut
  • Undo
  • Redo
  • Select All
  • Save
  • Find
  • Bold
  • Italic
  • Underline

Browser Controller

  • New Tab
  • Close Tab
  • Reopen Tab
  • Refresh
  • Address Bar
  • Back / Forward
  • Zoom In / Out
  • Reset Zoom
  • Fullscreen
  • Downloads
  • History

Presentation Controller

  • Next Slide
  • Previous Slide
  • First Slide
  • Last Slide
  • Start Presentation
  • End Presentation
  • Black Screen

เพราะฉะนั้น Smart Dial ตัวเดียว สามารถเปลี่ยน Character จาก Volume Knob เป็น Browser Remote หรือ Presentation Remote ผ่าน Menu ได้เลย

Custom Macros: หมุนหนึ่งที แล้วพิมพ์ข้อความให้เลย

Firmware มี Custom Text Macro จำนวน 4 Slot

Default Example ใน Source คือ:

Default Macros
Hello!
Thank you.
I will get back to you shortly.
support@example.com

Macro เหล่านี้ถูกบันทึกด้วย ESP32 Preferences ทำให้ข้อมูลยังอยู่หลัง Restart

แนวคิดนี้สามารถนำไปใช้กับข้อความที่พิมพ์บ่อย เช่น:

  • Email Signature
  • ข้อความตอบลูกค้าที่ใช้บ่อย
  • Chat Message
  • Coding Snippet แบบข้อความ
  • Frequently Used Command
  • Template Text

อย่าเก็บ Password หรือ Credential สำคัญเป็น Macro: Source เตือนชัดเจนว่า ไม่ควรเก็บรหัสผ่านหรือข้อมูล Sensitive เพราะ Macro ถูกใช้เพื่อพิมพ์ข้อความผ่าน BLE HID

Device Profiles ทำไมต้องแยก Windows, macOS และมือถือ?

Smart Dial มี Profile:

  • Auto / Universal
  • Windows
  • macOS
  • Android
  • iPhone / iPad

เหตุผลคือ BLE HID ไม่สามารถบอก Controller ได้อย่างน่าเชื่อถือเสมอไปว่า Host ที่เชื่อมอยู่เป็น Windows, macOS, Android หรือ iOS

Firmware จึงเปิดให้ผู้ใช้เลือก Profile เอง เมื่อต้องใช้ Shortcut ที่แตกต่างกันตาม Operating System

ส่วน Auto / Universal ถูกออกแบบให้ใช้คำสั่งที่เป็น Universal ก่อนเป็นหลัก

Settings, OLED, Idle Mode, Lock และ Deep Sleep

Settings Menu ใน Source มี:

  • OLED Off
  • Controller Lock
  • Deep Sleep
  • Volume Regulator
  • OLED Brightness
  • Confirmation Enable / Disable
  • Reverse Encoder
  • Action Popup
  • Cute Animations
  • Idle Screen
  • Clear BLE Pairing
  • Factory Reset
  • About

OLED Brightness

OLED สามารถปรับ Contrast / Brightness ได้ โดยหมุน Encoder เพื่อเปลี่ยนค่า และกดเพื่อ Save

Firmware เก็บค่าดังกล่าวใน Preferences ทำให้ยังอยู่หลัง Reset

Idle Mode

หาก Controller ไม่มีการใช้งานประมาณ 30 วินาที Firmware สามารถเข้าสู่ Idle Screen

หน้าจอแสดงข้อความลักษณะ:

Idle Screen
BLE connected

Turn or press to wake

Controller Lock

Lock Mode ช่วยป้องกัน Encoder ถูกหมุนหรือกดโดยไม่ตั้งใจ

Firmware ต้องใช้ Long Press เพื่อ Unlock Controller

Deep Sleep

เมื่อเลือก Deep Sleep ESP32 จะตั้ง Encoder Switch เป็น Wake-up Source ก่อนเข้า Sleep

Feature นี้เหมาะกับแนวคิด Future Battery-powered Version ที่ผู้สร้างกล่าวถึง

ข้อจำกัดที่ควรรู้ก่อนเรียกมันว่า Universal Controller

1. Volume % บน OLED เป็นค่าประมาณ

BLE HID ในโปรเจกต์นี้ ส่ง Volume Up / Down Command ไปยัง Host แต่ไม่ได้อ่านระดับเสียงจริงจาก Host กลับมา

ดังนั้นถ้าจอขึ้น:

50%

ไม่ได้หมายความว่า Volume จริงของคอมพิวเตอร์ ต้องอยู่ที่ 50% เสมอไป

Volume บนจอคือ Local Estimate: Controller คำนวณค่าประมาณจากคำสั่งที่ตัวเองส่ง ไม่ใช่ Feedback จาก Host

2. Mobile Control มีข้อจำกัดตาม Android / iOS

Source มีคำสั่งอย่าง:

  • Camera Shutter
  • Home
  • Back
  • App Switch
  • Search

แต่ System-level Function บางอย่าง ถูก Operating System จำกัด และอาจไม่ทำงานเหมือนกันทุกอุปกรณ์

คำอธิบายที่ถูกต้อง: Smart Dial ใช้ BLE HID เพื่อส่ง Keyboard, Media และ Shortcut Command ที่ Host รองรับ โดยความสามารถบางอย่างแตกต่างกันตาม Platform ไม่ควรอธิบายว่าเป็น “Complete iPhone System Control”

Troubleshooting: เปิดไม่ติด หมุนกลับด้าน หรือ Bluetooth หาไม่เจอ

OLED ไม่ขึ้น

เช็ก Wiring:

  • SDA → GPIO 5
  • SCL → GPIO 6
  • VCC → 3V3
  • GND → GND

Firmware คาดหวัง OLED Address: 0x3C

หาก Module ใช้ 0x3D Source ระบุให้เปลี่ยน Address ใน Firmware

OLED Address
#define OLED_ADDRESS 0x3C

Encoder หมุนผิดทิศ

เข้า:

Settings → Reverse Encoder

Firmware มี Option สำหรับกลับทิศ Encoder โดยตรง

Bluetooth Device ไม่ขึ้น

  • เช็กว่า ESP32-C3 ได้ Power
  • เช็กว่า Upload BLE Firmware สำเร็จ
  • เปิด Bluetooth บน Host
  • ค้นหา `C3 Smart Dial`
  • หากมี Pairing เก่าค้าง ใช้ Clear BLE Pairing

Compile ไม่ผ่าน

ตรวจ Library / Core:

  • ESP32 Arduino Core
  • NimBLE-Arduino
  • HijelHID_BLEKeyboard
  • Adafruit GFX
  • Adafruit SH110X

Code สำคัญจาก Firmware จริง

Firmware เต็มของโปรเจกต์มีขนาดค่อนข้างใหญ่ จึงไม่ควรวางทั้งหมดลงใน Blog แต่ส่วนสำคัญด้านล่าง คัดจาก Firmware ของผู้สร้างโดยตรง เพื่อให้เห็นโครงสร้างจริงของโปรเจกต์

Libraries ที่ Firmware Include
#include <Arduino.h>
#include <Wire.h>
#include <Preferences.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#include <HijelHID_BLEKeyboard.h>
#include <esp_sleep.h>
#include <driver/gpio.h>
Pin Definitions
#define OLED_SDA_PIN       5
#define OLED_SCL_PIN       6
#define ENCODER_CLK_PIN    3
#define ENCODER_DT_PIN     4
#define ENCODER_SW_PIN     7

#define SCREEN_WIDTH       128
#define SCREEN_HEIGHT      64
#define OLED_RESET_PIN     -1
#define OLED_ADDRESS       0x3C
OLED และ BLE HID Initialization
Adafruit_SH1106G display(
  SCREEN_WIDTH,
  SCREEN_HEIGHT,
  &Wire,
  OLED_RESET_PIN
);

HijelHID_BLEKeyboard keyboard(
  "C3 Smart Dial",
  "ESP32-C3",
  100
);

Preferences preferences;
Default Custom Macros
const char *DEFAULT_MACRO_1 = "Hello!";
const char *DEFAULT_MACRO_2 = "Thank you.";
const char *DEFAULT_MACRO_3 = "I will get back to you shortly.";
const char *DEFAULT_MACRO_4 = "support@example.com";

String customMacros[4];
Device Profiles
enum DeviceProfile : uint8_t {
  PROFILE_AUTO = 0,
  PROFILE_WINDOWS,
  PROFILE_MACOS,
  PROFILE_ANDROID,
  PROFILE_IOS,
  PROFILE_COUNT
};

ต้องการ Firmware เต็ม: แนะนำให้เปิด GitHub Repository — ESP32-C3 Smart Dial Custom BLE Menu Controller เพื่อดูไฟล์ล่าสุดจากผู้สร้างโดยตรง

ทำไมโปรเจกต์นี้เหมาะกับคนเริ่ม Embedded?

ถึง Feature List จะยาว แต่ Hardware หลักมีไม่กี่ชิ้น ทำให้โปรเจกต์นี้แตะหลาย Concept โดยไม่ต้องเริ่มจากวงจรใหญ่

Hardware ที่ได้เรียนรู้

  • GPIO
  • I²C
  • Digital Inputs
  • Rotary Encoder
  • Internal Pull-ups
  • USB Power

Software ที่ได้เรียนรู้

  • Arduino C++
  • Menu System
  • State Machine
  • Button Debouncing
  • Encoder Handling
  • Non-volatile Storage
  • BLE HID
  • OLED Graphics
  • Power Management

จุดสำคัญคือ โปรเจกต์ไม่ต้องสร้าง App ใหม่บนมือถือ แต่ใช้ BLE HID Standard ทำให้ Host ตีความ Controller เป็น Keyboard / Media Device ได้

Future Improvements: จาก Breadboard ไปเป็นอุปกรณ์ใช้จริง

Source เสนอแนวทางต่อยอด Hardware เช่น:

  • Custom PCB
  • 3D-printed Enclosure
  • Rechargeable Battery
  • USB-C Charging
  • RGB Status LED
  • Better Encoder
  • Larger OLED
  • Mechanical Rotary Knob

ส่วน Software สามารถไปต่อได้ด้วย:

  • Custom Macro Editor
  • More User Profiles
  • Per-profile Macros
  • Custom Menu Creation
  • Icon-based OLED UI
  • More Animations
  • Battery Monitoring
  • BLE Connection Indicator
  • Configurable Button Actions

แนวคิด Advanced Version สามารถพัฒนาไปเป็น Desktop Productivity Controller พร้อม Profile สำหรับงานเฉพาะ เช่น:

  • Windows
  • macOS
  • Android
  • iOS
  • Photoshop
  • Premiere Pro
  • VS Code
  • Spotify
  • PowerPoint
  • YouTube
  • CAD
  • Embedded Development

อยากทำ Prototype ให้เป็นชิ้นงานจริง? ถ้ากำลังทำ ESP32 Controller แบบนี้ สามารถสอบถามบอร์ดและอุปกรณ์ Maker จาก Globalbyte ได้ และถ้าจะต่อยอดจาก Breadboard ไปเป็นตัวเครื่อง โปรเจกต์ต้นฉบับเองก็เสนอ 3D-printed Enclosure เป็นหนึ่งใน Future Improvements ซึ่งสามารถสอบถามบริการรับปริ้นท์ 3D ผ่าน LINE OA ได้เช่นกัน

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

บทความแสดง Hero Image เพียงภาพเดียวเป็นค่าเริ่มต้น ส่วนภาพเพิ่มเติมถูกซ่อนด้วย Pure CSS View more เพื่อไม่ให้หน้า Blog ยาวเกินไปตั้งแต่เปิดหน้า

ภาพประกอบการเชื่อมต่อ ESP32-C3 Smart Dial
ภาพประกอบจาก Source ของ ESP32-C3 Smart Dial ในส่วน Hardware และการเชื่อมต่อของโปรเจกต์
ภาพเพิ่มเติมของ ESP32-C3 Smart Dial และ OLED Menu
ภาพเพิ่มเติมจากโปรเจกต์ต้นฉบับ สำหรับดู Smart Dial และ Interface ของ Controller
ภาพตัวอย่างการทำงาน ESP32-C3 Smart Dial BLE Controller
ภาพประกอบเพิ่มเติมจาก Hackster ของ ESP32-C3 Smart Dial BLE Menu Controller

อยากทำตามจริง แนะนำให้เปิด Source ต้นฉบับควบคู่ไปด้วย

แม้โปรเจกต์นี้ถูกระบุเป็น Beginner-friendly แต่ Firmware มีทั้ง BLE HID, Menu State, Preferences, Multi-click Button Handling, OS Profiles และ Power Management อยู่ในโปรเจกต์เดียว

ก่อน Upload หรือแก้ Firmware: แนะนำให้เปิด อ่านคู่มือ ESP32-C3 Smart Dial ฉบับเต็มบน Hackster และ ดู Firmware และไฟล์ล่าสุดจาก GitHub ของผู้สร้าง ควบคู่กันก่อนลงมือจริง

FAQ: ESP32-C3 Smart Dial

Smart Dial ใช้บอร์ดอะไร?

โปรเจกต์ใช้ ESP32-C3 Super Mini เป็น Controller หลัก สำหรับ Menu, OLED และ BLE HID

ใช้ OLED รุ่นไหน?

Source และ Firmware ใช้ SH1106 128×64 เชื่อมผ่าน I²C โดย Address หลักคือ 0x3C

Rotary Encoder ต่อ GPIO ไหน?

Firmware ใช้ CLK → GPIO3, DT → GPIO4 และ SW → GPIO7

ต้องทำ App บนมือถือเองหรือไม่?

ไม่จำเป็นสำหรับ Workflow หลัก เพราะ Controller ใช้ BLE HID ให้ Host รับคำสั่งในรูปแบบ Keyboard และ Media Input

ใช้กับ Windows และ Mac ได้ไหม?

Firmware มี Profile สำหรับ Windows และ macOS รวมถึง Auto / Universal, Android และ iPhone / iPad แต่ Shortcut บางอย่างขึ้นอยู่กับ Platform

ใช้กับ iPhone ได้ทุก Function ไหม?

ไม่ Source ระบุว่าบาง System-level Control ถูก Android / iOS จำกัด จึงไม่ควรคาดหวัง Complete System Control ทุกคำสั่ง

Volume 50% บนจอคือ Volume จริงของ PC หรือไม่?

ไม่จำเป็นต้องตรงกัน เพราะ Firmware เก็บเป็น Local Estimate จาก Volume Command ที่ส่งออก ไม่ได้อ่าน Actual Host Volume กลับมา

สามารถทำเป็น Battery-powered Controller ได้ไหม?

Firmware มี Deep Sleep อยู่แล้ว และ Source ระบุ Rechargeable Battery กับ USB-C Charging เป็น Future Improvement

สามารถทำเคส 3D Print ได้ไหม?

ได้ในฐานะ Future Improvement เพราะ Source ระบุ 3D-printed Enclosure เป็นหนึ่งในแนวทางพัฒนาตัว Prototype ต่อ

ลูกบิดหนึ่งตัว แต่สอน Embedded ได้เกือบทั้งโต๊ะ

ความสนุกของ ESP32-C3 Smart Dial ไม่ได้อยู่แค่ว่าหมุนแล้ว Volume ขึ้นลง

แต่เป็นการรวมหลายเรื่องไว้ใน Project เล็ก ๆ:

Encoder → Menu → OLED → State Machine → BLE HID → Profiles → Preferences → Power Management

คนเริ่มต้นสามารถเริ่มจาก Volume Controller ง่าย ๆ แล้วค่อยเข้าใจว่าพอมี Menu ตัวลูกบิดเดียวสามารถเปลี่ยนเป็น Browser Controller, Presentation Remote, Keyboard Shortcut Pad หรือ Macro Controller ได้อย่างไร

และถ้าจะขยับไปอีกระดับ จาก Breadboard Prototype ก็ยังมีเส้นทางต่อไปถึง Custom PCB, Battery และ 3D-printed Enclosure

นี่จึงเป็นโปรเจกต์ประเภท “เริ่มง่าย แต่มีพื้นที่ให้เล่นต่อเยอะมาก” ที่เหมาะกับสาย ESP32 และ Maker โดยตรง

References / แหล่งข้อมูลต้นฉบับ

อยากทำ Smart Dial ของตัวเอง?

ถ้ากำลังหา ESP32, Development Board, OLED, Sensor หรืออุปกรณ์สำหรับงาน Maker สามารถเข้ามาดูสินค้า พูดคุยกับ Community หรือส่งโจทย์มาสอบถามทีม Globalbyte ได้ และถ้าต่อยอดไปทำ Enclosure ก็สามารถสอบถามบริการ 3D Printing ได้เช่นกัน

 


Blog posts