ESP32-S3 • ePaper • Deep Sleep • Wi-Fi • 3D Printing
eChain: ทำพวงกุญแจ ePaper ด้วย ESP32-S3, Wi-Fi และ Deep Sleep
หลังใช้เวลาทำ Productivity Tool และระบบจริงจังอยู่หลายเดือน Ameya Angadi เริ่มเจอกับ Maker Burnout และอยากสร้างอะไรที่ไม่ต้องช่วยเพิ่มประสิทธิภาพชีวิตอีกแล้ว ผลที่ได้คือ eChain — พวงกุญแจ ePaper ที่เอาไว้แสดง Meme, Cartoon, Photo หรือ Digital Business Card บนกระเป๋า เพียงเพราะมันทำแล้วสนุก
แต่ภายใต้ไอเดียที่ดูเล่น ๆ กลับมี Engineering ค่อนข้างครบ: XIAO ESP32-S3, ePaper 4 สี, Local Wi-Fi Web UI, LittleFS, Image Dithering, Battery Monitoring, Deep Sleep และเคส 3D Print ที่ออกแบบมาสำหรับพกพาจริง
- ใช้ XIAO ePaper Display Board EE05 บนแพลตฟอร์ม ESP32-S3
- ใช้จอ ePaper 2.9 นิ้ว 128×296 แสดง Black / White / Yellow / Red
- รูปถูกเตรียมด้วย SenseCraft Dither Tool เป็น E4 Four-Color 4bpp
- Web UI บนตัวเครื่องใช้จัดการรูป, ลำดับ Slideshow, Flip, Contact Card และ Settings
- รูปที่ Upload ถูกจัดเก็บใน LittleFS และสามารถเปลี่ยนได้โดยไม่ต้อง Compile Firmware ใหม่ทุกครั้ง
- Normal Operation เน้น Deep Sleep และเปิด Wi-Fi เฉพาะ Setup Mode
- ผู้สร้างระบุว่าออกแบบให้ใช้งานได้หลายสัปดาห์ต่อการชาร์จหนึ่งครั้ง แต่ไม่ได้ให้ Runtime Test Log แบบละเอียด
- Source มี Conflict เรื่อง ADC active time และ Battery Percentage Ceiling ระหว่าง Hackster Story กับ Current GitHub Code
- มี STL และ Print Settings จริง จึงสามารถสร้าง Enclosure ตามได้
eChain คืออะไร?
eChain เป็น Open-source Digital Keychain ที่ใช้ ESP32-S3 และจอ ePaper 4 สี เพื่อแสดง Content แบบภาพนิ่ง
Use Case หลักไม่ได้ซับซ้อน:
- เอา Meme ไปติดกระเป๋า
- โชว์ Cartoon หรือรูปโปรด
- หมุนรูปเป็น Slideshow
- กดเข้าสู่ Digital Business Card
- เปลี่ยน Content ผ่าน Browser โดยไม่ต้องต่อจอ Monitor
จาก Maker Burnout สู่ Project ที่ทำเพราะสนุก
ผู้สร้างเล่าว่า หลังทำ Project ที่พยายามแก้ปัญหาในโลกจริง และเพิ่ม Productivity ต่อเนื่อง เขาเริ่มรู้สึกหมดไฟ
eChain จึงตั้งใจเป็น Project ที่ตรงกันข้าม: ไม่ต้อง Revolutionize อะไร ไม่ต้อง Optimize Workflow แค่เอารูปตลกไปติดกระเป๋าแล้วทำให้เจ้าของยิ้มได้
แต่จาก Concept ง่าย ๆ Project กลับต้องแตะหลายหัวข้อ: Mechanical Design, ePaper, File Storage, Local Web Server, Image Processing และ Low-power Firmware
Hardware หลักมีอะไร?
| Hardware | หน้าที่ |
|---|---|
| XIAO ePaper Display Board EE05 | ESP32-S3 Platform, ePaper Driver, Battery Interface และ User Buttons |
| 2.9" 4-Color ePaper | 128×296 pixels แสดง Black / White / Yellow / Red |
| Li-Ion Battery 1000 mAh | แหล่งพลังงานตาม Hackster BOM |
| Passive Buzzer | Feedback เสียงจาก Button / Setup Action |
| FFC Extension | เชื่อม ePaper Display เข้ากับ Driver Board |
| FPC Wi-Fi Antenna | ใช้กับ Wi-Fi ของ ESP32-S3 |
| 3D Printed Case | รวมจอ, Board, Battery และ Buzzer เป็น Keychain |
Official EE05 มี User Button 3 ปุ่ม แต่ Current eChain Firmware ใช้สองปุ่มสำหรับ Interaction หลัก
ทำไม ePaper ถึงเหมาะกับพวงกุญแจ?
eChain ไม่ต้องเล่น Video หรือ Animation แบบต่อเนื่อง แต่ต้องการให้ภาพค้างอยู่บนหน้าจอนาน ๆ
นี่เข้ากับพฤติกรรมของ ePaper: หลัง Refresh เสร็จ ภาพสามารถค้างอยู่ได้ ขณะที่ Microcontroller กลับไปพัก
Official Product Page ของจอ ระบุ Full-screen Refresh ประมาณ 25 วินาที แต่ตัวเลขนี้เป็น Specification ของ Display ไม่ใช่ Benchmark ของ eChain Firmware
ออกแบบและพิมพ์เคส 3D
Source ให้ Print Settings สำหรับ Main Body ไว้จริง:
| รายการ | ค่าจาก Source |
|---|---|
| Material | PLA |
| Layer Height | 0.1–0.2 mm |
| Infill | 30% Grid |
หลัง Print ผู้สร้างแนะนำให้เก็บงาน Stringing และ Burr รวมถึง Edge-sand จุด Mount ด้านในอย่างระมัดระวัง เพื่อให้ Battery และ Hardware เข้าได้พอดี โดยไม่สร้างแรงกดต่อจอ ePaper
ประกอบจอ ePaper และ FFC
Source แนะนำให้ล็อก Latch ของ Adapter ให้แน่น และระวังไม่พับหรือหนีบ FFC Cable ขณะเก็บสายลงในเคส
ตัวจอถูกวางใน Front Track แล้วใช้ Hot Glue ปริมาณเล็กน้อย ที่มุมทั้งสี่เพื่อยึดตำแหน่ง โดยหลีกเลี่ยงแรงกดบนกระจก ePaper
เตรียม EE05, Buzzer, Battery และ Wi-Fi Antenna
Wiring ของ Passive Buzzer ที่ Main Source ระบุคือ:
| อุปกรณ์ | Connection |
|---|---|
| Buzzer Positive | D13 |
| Buzzer Negative | GND |
| Battery | JST Connector บน EE05 |
จัด Board, Button และ USB-C ให้ตรงเคส
Main Source ใช้ Double-sided Tape และ Hot Glue ช่วยยึด Board, Battery และชิ้นส่วนภายใน หลังตรวจ Alignment แล้ว
อย่าเพิ่งปิดเคส — ทดสอบทุกอย่างก่อน
Source ย้ำว่า ก่อนใช้ Super Glue ปิด Back Plate ให้ Boot Device และตรวจ:
- ePaper Screen
- Wi-Fi
- Buzzer
- Buttons
เพราะเมื่อ Seal Enclosure แล้ว การเปิดกลับมาแก้งานจะยากกว่าเดิมมาก
เตรียม Meme เป็น E4 Four-Color 4bpp
Workflow ที่ Main Source แนะนำ:
- Upload รูปเข้า SenseCraft Dither Tool
- เลือก E4 Four-Color 4bpp
- ตั้ง 128×296 หรือ 296×128
- เลือก Dither Algorithm
- ปรับ Gamma, Vibrance, Clarity และ Darkness
- Generate และ Download ไฟล์ .h
Source ยกตัวอย่าง Dither Algorithm เช่น:
- Atkinson
- Floyd-Steinberg
ไฟล์ .h ถูกแปลงและเก็บใน LittleFS ยังไง?
Main Tutorial บอกให้เตรียมไฟล์ .h จาก SenseCraft แต่ Current Web UI ไม่ได้เอา Header File ไป Compile ลง Firmware ใหม่ทุกครั้ง
JavaScript ใน Control Center จะ:
- อ่าน Text จากไฟล์ .h
- Extract Byte รูปแบบ 0xXX
- แปลงเป็น Binary Data
- Upload ไปยัง ESP32-S3
- บันทึกเป็นไฟล์ .bin ใน LittleFS
LittleFS ยังเก็บ Metadata อื่น ๆ เช่น:
- ลำดับภาพ
- สถานะ Flip
- Orientation / Dimensions
- Contact Information
- Device Settings
Setup Mode และ Local Wi-Fi Web UI
เมื่อกดสองปุ่มพร้อมกัน eChain จะเข้า Setup Mode และสร้าง Wi-Fi Access Point ของตัวเอง
| รายการ | ค่าใน Current Firmware |
|---|---|
| SSID | eChain Setup |
| Password | img@1234 |
| Local IP | 192.168.4.1 |
| Setup Timeout | 5 นาที |
Wi-Fi จึงไม่ได้เปิดตลอดเวลาระหว่างใช้งานปกติ แต่เปิดเฉพาะตอนที่ต้องการจัดการ Content หรือ Settings
Control Center บน Browser ทำอะไรได้บ้าง?
Current Firmware รองรับ:
- Upload รูปหลายไฟล์
- Move Up / Move Down
- Flip 180°
- Delete Selected / Delete All
- ดู LittleFS Storage Usage
- ดู Battery Percentage
- ตั้ง Digital Business Card
- เปิด/ปิด Buzzer
- ตั้ง Slideshow Timer
- Exit Setup และ Reboot
Digital Business Card มี Limit เท่าไร?
- Name: 15 ตัวอักษร
- Phone: 15 ตัวอักษร
- Email: 30 ตัวอักษร
- Custom Message: 30 ตัวอักษร
Default Slideshow Interval ใน Current Code คือ: 30 นาที
และ Web UI / Backend Enforce Minimum: 5 นาที
Deep Sleep คือหัวใจของ Battery Life
Current Firmware ยืนยัน Architecture ที่ปิด Wi-Fi, สั่ง ePaper Sleep แล้วเข้าสู่ ESP32 Deep Sleep
epaper.sleep();
WiFi.mode(WIFI_OFF);
esp_sleep_enable_timer_wakeup(sleepTime_ms * 1000ULL);
esp_deep_sleep_start();
Firmware ยังตั้ง Button เป็น Wake Source เพื่อให้ผู้ใช้เปลี่ยนภาพ หรือเข้า Contact Mode ได้ โดยไม่ต้องเปิด ESP32 ตลอดเวลา
Battery Monitoring และ Source Conflict
eChain ใช้:
ADC_EN = D12
เพื่อเปิด Battery Measurement Path เฉพาะตอนที่ต้องอ่านค่า แทนการปล่อย Voltage Divider ต่ออยู่ตลอด
const float CALIBRATION_FACTOR = 0.968;
digitalWrite(ADC_EN_PIN, HIGH);
delay(10);
/* ADC sampling */
digitalWrite(ADC_EN_PIN, LOW);
Conflict 1 — 3 ms หรือมากกว่า 10 ms?
Main Hackster Story ระบุว่า ADC Path ถูกเปิดเพียงประมาณ 3 ms ต่อการอ่าน
แต่ Current GitHub Code มี delay(10) ก่อน ADC Sampling และยังอ่านหลาย Sample ก่อนปิด ADC_EN
Conflict 2 — 4.05V หรือ 4.2V?
Hackster Story กล่าวถึง Software Ceiling ที่ 4.05V
แต่ Current Firmware คำนวณ Battery Percentage บนช่วง:
3.2V → 4.2V
ขณะที่ Calibration Factor: 0.968 ตรงกันทั้งใน Story และ Current Code
“อยู่ได้หลายสัปดาห์” ควรตีความยังไง?
ทั้ง Main Story และ GitHub README ระบุว่า eChain ถูกออกแบบให้ใช้งานได้หลายสัปดาห์ ต่อการชาร์จหนึ่งครั้ง
Build ใน Hackster ใช้ Battery: 1000 mAh
แต่ Source ไม่ได้ให้ Runtime Test Log ที่แจกแจง:
- Refresh กี่ครั้งต่อวัน
- เข้า Setup Mode นานเท่าไร
- Buzzer ทำงานบ่อยแค่ไหน
- Runtime จริงกี่วันในแต่ละ Usage Pattern
eChain ใช้งานจริงหน้าตาเป็นยังไง?
ดู eChain ทำงานจริง
Video ต้นฉบับช่วยให้เห็น Flow ตั้งแต่ Enclosure, Hardware Assembly, การเตรียมภาพ ไปจนถึงการใช้งาน Web UI และ Final Build
โปรเจกต์นี้มีหลายขั้น แนะนำอ่านต้นฉบับควบคู่กัน
eChain มีทั้ง Mechanical Assembly, Firmware, Local Web UI, Filesystem, Power Management และ Image Preparation จึงควรตรวจ Source ล่าสุดก่อนสร้างตาม โดยเฉพาะ Battery Monitoring ที่คำอธิบายใน Hackster Story ไม่ตรงกับ Current GitHub Code บางจุด
FAQ: คำถามที่พบบ่อย
1. eChain คืออะไร?
เป็น Open-source Digital Keychain ที่ใช้ ESP32-S3 และ ePaper 4 สี สำหรับแสดง Meme, Cartoon, Photo และ Digital Business Card
2. ใช้บอร์ดอะไร?
ใช้ Seeed Studio XIAO ePaper Display Board EE05 บนแพลตฟอร์ม ESP32-S3
3. จอขนาดเท่าไร?
Project ใช้ 2.9 นิ้ว ความละเอียด 128×296 pixels
4. จอแสดงกี่สี?
Black, White, Yellow และ Red
5. ต้อง Compile Firmware ใหม่ทุกครั้งที่เปลี่ยนรูปไหม?
ไม่ Current Firmware มี Local Web UI สำหรับ Upload รูปเข้า LittleFS
6. เตรียมรูปอย่างไร?
Main Source ใช้ SenseCraft Dither Tool ตั้ง E4 Four-Color 4bpp และขนาด 128×296 หรือ 296×128
7. รองรับภาพแนวนอนไหม?
Current Web UI ตรวจ Width/Height และรองรับทั้ง 128×296 กับ 296×128 รวมถึง Flip ภาพ 180° ได้
8. Web UI ใช้ Internet ไหม?
Setup Mode ใช้ ESP32-S3 สร้าง Local Wi-Fi Access Point และเปิด Control Center ที่ 192.168.4.1
9. Wi-Fi เปิดตลอดเวลาหรือไม่?
ไม่ Normal Operation เน้น Deep Sleep และ Wi-Fi เปิดใน Setup Mode
10. Digital Business Card ทำงานยังไง?
ปุ่มหนึ่งใช้ Toggle Contact Mode แล้ว Firmware วาดข้อมูลติดต่อบน ePaper ก่อนเข้า Deep Sleep โดยไม่ตั้ง Timer Wake
11. Default Slideshow กี่นาที?
Current Code ตั้ง Default ไว้ 30 นาที และ Web UI Enforce Minimum ที่ 5 นาที
12. ใช้ Battery ขนาดเท่าไร?
Hackster BOM ระบุ Li-Ion Battery 1000 mAh
13. Battery อยู่ได้กี่วัน?
ผู้สร้างระบุว่าใช้งานได้หลายสัปดาห์ต่อการชาร์จหนึ่งครั้ง แต่ Source ไม่ได้ให้ Runtime Test Log ที่เพียงพอสำหรับ Guarantee จำนวนวัน
14. Deep Sleep กินกระแสเท่าไร?
Hackster Story รายงานประมาณ 20–30 µA แต่บทความนี้ไม่ได้มี Measurement Hardware มายืนยันค่าดังกล่าวซ้ำ
15. Battery Measurement เปิด ADC แค่ 3 ms จริงไหม?
Main Story ระบุประมาณ 3 ms แต่ Current GitHub Code มี delay 10 ms ก่อน Sampling และยังอ่านหลาย Sample จึงมี Conflict ระหว่าง Story กับ Current Firmware
16. มีไฟล์ 3D Print ไหม?
มี STL ของเคสให้ดาวน์โหลดจาก Source
17. Print Settings ใช้อะไร?
Main Source ระบุ PLA, Layer Height 0.1–0.2 mm และ 30% Grid Infill
18. Source ระบุ Nozzle หรือ Print Temperature ไหม?
ไม่ Source ไม่ได้ระบุ Nozzle Size, Print Temperature, Bed Temperature หรือ Support Setting
19. Firmware ใช้ชื่อไฟล์อะไร?
Hackster Tutorial ใช้ชื่อ eChain_OS.ino แต่ Current GitHub ที่ตรวจได้ใช้ eChain/eChain.ino
20. เอา Design ไปขายได้ไหม?
Project ระบุ License เป็น CC BY-NC 4.0 ควรอ่าน License ต้นฉบับก่อนนำ Firmware หรือ Design ไปใช้เชิงพาณิชย์
References / แหล่งข้อมูลต้นฉบับ
Project สนุก ๆ ก็สอน Engineering ได้เยอะเหมือนกัน
eChain เป็นตัวอย่างของ Project ที่ไม่ได้เริ่มจากคำถามว่า “จะทำให้ Productivity เพิ่มกี่เปอร์เซ็นต์” แต่เริ่มจากความอยากสร้างของที่สนุก แล้วค่อยพัฒนาไปถึง ePaper, ESP32-S3, Local Web UI, Filesystem และ Low-power Design
หากกำลังทำ ESP32, ePaper หรือ Portable Electronics Project สามารถสอบถามทีม Globalbyte เรื่องบอร์ดและอุปกรณ์ที่เหมาะกับ Project ได้
Project นี้มี STL ของ Enclosure แล้ว หากมีไฟล์แต่ไม่มีเครื่องพิมพ์ สามารถส่งไฟล์ให้ทีม Globalbyte ช่วยประเมินบริการพิมพ์ 3D ได้เช่นกัน