แฮ็กนาฬิกาจิ๋ว GeekMagic SmallTV เปลี่ยนหน้าจอด้วย Python (ไม่ต้องแฟลชบอร์ด!)

ภาพเคลื่อนไหวแสดงหน้าปัด Game Boy และ Usage Data บนจอ GeekMagic SmallTV
ตัวอย่างหน้าจอที่ถูกปรับแต่งบน GeekMagic SmallTV

เวลาเราพูดถึงการ "แฮ็ก" หรือปรับแต่งอุปกรณ์ IoT สำเร็จรูปที่วางขายในท้องตลาด (โดยเฉพาะของที่มาจากจีน) สาย Maker อย่างเรามักจะนึกถึงการแงะเคสพลาสติก ควานหาขา Pinout บนบอร์ด เสียบสาย USB-to-TTL แล้วพยายามแฟลช Firmware ตัวใหม่ลงไป (อย่างเช่น Tasmota หรือ ESPHome) ซึ่งขั้นตอนเหล่านี้กินเวลาและเสี่ยงทำเครื่องพังได้ง่ายๆ

แต่โปรเจกต์ล่าสุดจากผู้ใช้ที่ชื่อ Yongha Kim ได้ฉีกกฎเดิมๆ ทิ้งไป เพราะเขาสามารถเปลี่ยนหน้าจอของนาฬิกาจิ๋ว GeekMagic SmallTV ให้แสดงผลข้อมูลแบบ Custom ได้ตามต้องการ โดยที่ไม่ต้องจับหัวแร้งบัดกรี และไม่ต้องยุ่งกับ Firmware ศูนย์เลยแม้แต่นิดเดียว!

Key Takeaways

  • Hardware ยอดฮิต: GeekMagic SmallTV คือนาฬิกาตั้งโต๊ะราคาถูก (~$5) ที่ภายในใช้บอร์ด ESP8266 หรือ ESP32
  • ไม่ต้องแก้ฮาร์ดแวร์: ไม่ต้องแกะเครื่องบัดกรี ไม่ต้องแฟลชรอมใหม่
  • ใช้ช่องโหว่ฟีเจอร์เดิม: อาศัยฟีเจอร์ Photo Viewer ที่ติดมากับรอมศูนย์ เพื่อรับภาพจากเครือข่าย
  • สร้างภาพด้วย Python: เจนรูปขนาด 240x240 พิกเซล (รองรับทั้งภาพนิ่งและ GIF) ยิงผ่าน HTTP เข้าไปที่จอ

GeekMagic SmallTV คืออะไร?

หน้าตาของ GeekMagic SmallTV เครื่องจริงวางบนโต๊ะ
เครื่อง GeekMagic SmallTV ราคาประมาณ $5 ที่มาพร้อมบอร์ด ESP32/ESP8266 ด้านใน

GeekMagic SmallTV เป็นแกดเจ็ตตั้งโต๊ะราคาประหยัด (ประมาณ $5 ดอลลาร์) ที่ทำหน้าที่หลักเป็นนาฬิกาและแสดงสภาพอากาศ หากมองผ่านๆ มันอาจจะดูเหมือนของเล่นพลาสติกทั่วไป แต่หัวใจหลักด้านในนั้นขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ยอดฮิตอย่าง ESP8266 หรือ ESP32 (แล้วแต่ล็อตการผลิต)

ด้วยสเปกฮาร์ดแวร์ที่คุ้นมือ Maker ประกอบกับเคสที่ทำมาดูดี จึงไม่น่าแปลกใจที่อุปกรณ์ซีรีส์นี้จะถูกแฮ็กและนำมาทำโปรเจกต์ DIY อยู่บ่อยครั้ง

ไม่ต้องบัดกรี ไม่ต้องแฟลช Firmware ทำได้อย่างไร?

เคล็ดลับของโปรเจกต์นี้คือการ "ใช้ประโยชน์จากฟีเจอร์ที่มีอยู่แล้ว" แทนที่จะทำลายล้างของเก่าทิ้ง

ใน Firmware ดั้งเดิมของ SmallTV จะมีฟังก์ชั่นหนึ่งที่เรียกว่า Photo Viewer ซึ่งอนุญาตให้เครื่องรับไฟล์ภาพนิ่งหรือภาพเคลื่อนไหวผ่านเครือข่าย Wi-Fi มาแสดงบนจอได้

⚙️ ส่องการทำงานด้านหลังบ้าน:
แทนที่จะให้บอร์ด ESP32 บนนาฬิกาเป็นตัวประมวลผลดึงข้อมูล API ภายนอกเอง โปรเจกต์นี้สลับหน้าที่โดยใช้ เครื่องคอมพิวเตอร์ หรือ Server ในเครือข่าย (Local Network) เป็นตัวดึงข้อมูล จัดหน้าเลย์เอาต์ และสร้างเป็นไฟล์รูปภาพขนาด 240x240 พิกเซล ด้วยภาษา Python (ใช้ไลบรารี Pillow) จากนั้นค่อยส่งไฟล์ภาพนั้นผ่านโปรโตคอล HTTP โยนเข้าไปที่ตัวนาฬิกาตรงๆ

วิธีนี้ทำให้เราไม่ถูกจำกัดด้วยหน่วยความจำของ ESP32 เพราะการประมวลผลหนักๆ เกิดขึ้นที่เครื่อง Server ทั้งหมด หน้าจอมีหน้าที่แค่รับภาพมาแสดงผล (รองรับแม้กระทั่งไฟล์อนิเมชัน GIF!)

ตัวอย่างโปรเจกต์: หน้าปัด Game Boy และ AI API Usage

การเปรียบเทียบหน้าจอระหว่างรูปเรนเดอร์และภาพที่แสดงจริงบน SmallTV ธีม Game Boy
ภาพเปรียบเทียบ UI ต้นแบบ กับการแสดงผลจริงบนหน้าจอ SmallTV

ผู้สร้างโปรเจกต์อย่างคุณ Yongha ได้นำเทคนิคนี้ไปทำ "TokenTV" สำหรับแสดงโควตาการใช้งาน (Usage Limits) ของ AI อย่าง Claude และ Codex เพื่อตั้งไว้มอนิเตอร์บนโต๊ะทำงาน

และเนื่องจากการสร้างภาพทำผ่าน Python ทั้งหมด คุณจึงมีอิสระในการออกแบบกราฟิก 100% อยากได้หน้าปัดสไตล์ Game Boy สุดเรโทร หรือจะทำ Dashboard หุ้น ก็สามารถเขียนโค้ดต่อยอดได้เลย

ตัวอย่างการออกแบบหน้าปัดนาฬิกาหลายรูปแบบสำหรับ GeekMagic SmallTV
ตัวอย่างหน้าปัดดีไซน์อื่นๆ ที่สามารถเจนภาพแล้วยิงเข้าจอได้

อยากสร้าง Smart Display เองตั้งแต่ศูนย์?

แม้ว่าการแฮ็กของสำเร็จรูปจะสนุกและประหยัดเวลา แต่สำหรับโปรเจกต์ที่ต้องการควบคุมฮาร์ดแวร์แบบ 100% (เช่น อยากเพิ่มเซนเซอร์วัดอุณหภูมิ, ต่อ Relay ควบคุมไฟ) การประกอบ Smart Display ขึ้นมาเองก็เป็นทางเลือกที่ดีกว่า

สามารถสอบถามทีม Globalbyte เพื่อหาบอร์ดตระกูล ESP8266 หรือ ESP32 รวมถึงโมดูลหน้าจอขนาดต่างๆ ที่เหมาะกับโปรเจกต์ของคุณได้เลย เรามีบอร์ด Development พร้อมให้คุณนำไปลุยเขียนโค้ดได้เต็มที่!

ข้อควรระวัง (Caveats & Warnings)

⚠️ สิ่งที่ต้องรู้ก่อนเริ่มแฮ็ก
  • อัปเดต Firmware: วิธีการแฮ็กนี้อาศัยฟีเจอร์ที่ติดมากับ Firmware ปัจจุบัน หากผู้ผลิต (GeekMagic) ปล่อยอัปเดตเพื่อปิดช่องโหว่ หรือลบฟีเจอร์ Photo Viewer ออก วิธีการส่งผ่าน HTTP นี้อาจจะไม่สามารถใช้งานได้อีกต่อไป
  • ระบบเครือข่าย: สคริปต์ Python จำเป็นต้องทำงานอยู่บนเครื่องคอมพิวเตอร์หรือ Server ที่อยู่ใน เครือข่ายเดียวกัน (Local Network) กับตัวนาฬิกาเท่านั้น ไม่ได้เป็นการดึงข้อมูลจากอินเทอร์เน็ตเข้าบอร์ดโดยตรง

คำถามที่พบบ่อย (FAQ)

Q: โปรเจกต์นี้ต้องใช้หัวแร้งบัดกรีไหม?
A: ไม่ต้องเลย โปรเจกต์นี้เป็นการปรับแต่งผ่านซอฟต์แวร์ทาง Network (HTTP) ล้วนๆ

Q: รูปภาพที่ส่งไปต้องมีขนาดเท่าไร?
A: ต้องสร้างไฟล์ภาพให้มีขนาด 240x240 พิกเซล

Q: ภายใน GeekMagic SmallTV ใช้บอร์ดอะไร?
A: ตาม Source ระบุว่าด้านในขับเคลื่อนด้วย ESP8266 หรือ ESP32

Q: สามารถเล่นเป็นภาพเคลื่อนไหวได้ไหม?
A: ได้ ฟีเจอร์นี้รองรับการส่งไฟล์ภาพเคลื่อนไหวนามสกุล GIF

Q: เครื่องคอมพิวเตอร์ที่รันโค้ด Python ต้องเปิดทิ้งไว้ตลอดไหม?
A: Source ไม่ได้ระบุรายละเอียดเชิงลึกตรงนี้ แต่จากหลักการทำงานที่คอมพิวเตอร์เป็นฝ่ายส่งภาพให้จอ จึงจำเป็นต้องมีคอมพิวเตอร์/Server (เช่น Raspberry Pi) ที่เปิดรันสคริปต์อยู่ในวง LAN เดียวกันเพื่อคอยอัปเดตภาพ

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

หากต้องการดู Source Code ของฝั่ง Python ฉบับเต็ม หรืออ่านคู่มือการตั้งค่า สามารถตามไปศึกษาต่อได้จากผู้สร้างบน GitHub:

เริ่มต้นสร้างโปรเจกต์ Maker ของคุณกับ Globalbyte

สนใจอุปกรณ์ Electronics, บอร์ดไมโครคอนโทรลเลอร์อย่าง ESP32, ESP8266 หรือโมดูลหน้าจอ ปรึกษาพวกเราได้เลย!

ช้อปสินค้า / บริการ สอบถามผ่าน LINE OA เข้ากลุ่ม Community
ข้อจำกัดความรับผิดชอบ (Disclaimer): บทความนี้เป็นการสรุปและเรียบเรียงจากแหล่งข้อมูลภาษาอังกฤษ อาจมีความคลาดเคลื่อน กรุณาตรวจสอบ Source ต้นฉบับ (GitHub) ก่อนลงมือทำ

หมายเหตุเพิ่มเติม: วิธีการส่งภาพผ่าน HTTP เป็นการพึ่งพา Firmware ดั้งเดิมของผลิตภัณฑ์ (GeekMagic SmallTV) หากทางผู้ผลิตมีการอัปเดต Firmware ในอนาคต อาจส่งผลให้ฟีเจอร์นี้ไม่สามารถทำงานได้

แท็ก


Blog posts