4 คะแนน โดย GN⁺ 2026-02-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โปรเจ็กต์เดโมที่เปลี่ยนไมโครคอนโทรลเลอร์ ESP32-S3 ให้เป็น พีซีขนาดเล็กที่บูตใช้งานได้ทันที พร้อมเชลล์ ตัวแก้ไข คอมไพเลอร์ และตัวติดตั้งแอป
  • BreezyBox คือคอมโพเนนต์มินิเชลล์สำหรับ ESP-IDF ที่มีคำสั่งแบบคล้าย UNIX พร้อมความสามารถด้าน vterm และ VFS
  • ทำงานบนบอร์ด Waveshare ESP32-S3-Touch-LCD-7B และสามารถนำไปปรับใช้กับบอร์ดอื่นได้ง่าย
  • หลังจากฟอร์กแล้วสามารถรันบนบอร์ดของตนเองได้ หรือใช้ USB console เพื่อใช้งาน เอาต์พุตรหัส ANSI มาตรฐาน
  • เผยแพร่ภายใต้ไลเซนส์ MIT โดยมีเป้าหมายเพื่อขยายระบบนิเวศ

ภาพรวมของ BreezyBox

  • โปรเจ็กต์เดโมที่ทำให้สามารถ ใช้ ESP32-S3 ได้เหมือนพีซีแม้ไม่มี Linux โดยมีฟังก์ชันเชลล์ ตัวแก้ไข คอมไพเลอร์ และการติดตั้งแอป
    • มุ่งให้ประสบการณ์การใช้งานคล้าย Raspberry Pi แต่ ไม่มีโอเวอร์เฮดของ OS ระดับเซิร์ฟเวอร์/เดสก์ท็อป
    • BreezyBox เป็น คอมโพเนนต์มินิเชลล์ บนพื้นฐาน ESP-IDF สำหรับสร้างสภาพแวดล้อมรันคำสั่งอย่างง่าย
  • ESP32-S3 มี โครงสร้างทรัพยากรคล้ายพีซียุค DOS พร้อมความสามารถด้านการสื่อสารไร้สาย
    • โปรเจ็กต์อธิบายศักยภาพของชิปนี้ว่าเป็น “เทคโนโลยีขนาดเล็กที่สง่างาม” และลดขนาดโค้ดให้เล็กที่สุด

องค์ประกอบของ BreezyBox

  • BreezyBox มี vterm, VFS, การติดตาม CWD, คำสั่งแบบคล้าย UNIX และตัวติดตั้งแอป
    • ตัวโหลด ELF และ ความสามารถด้าน dynamic linking มีอยู่ในคอมโพเนนต์ ESP-IDF อยู่แล้ว
  • ชื่อนี้ได้แรงบันดาลใจจาก BusyBox และอยู่ในรูปแบบ เลเยอร์ user space ที่ทำงานบน FreeRTOS
    • สามารถเพิ่มเข้าไปในโปรเจ็กต์ ESP-IDF ได้ด้วยโค้ดเพียงบรรทัดเดียว และทำงานได้แม้มีแค่อินพุต/เอาต์พุตพื้นฐาน

จุดเด่นของรีโพซิทอรีเดโม

  • รีโพซิทอรีนี้เป็น ตัวอย่างการใช้งานจริง ของ BreezyBox ซึ่งตั้งค่าให้เหมาะกับบอร์ดเฉพาะรุ่น (Waveshare ESP32-S3-Touch-LCD-7B)
    • BreezyBox มอบหมายการตั้งค่าจอแสดงผลและบอร์ดให้กับเฟิร์มแวร์ของผู้ใช้
    • ผู้ใช้สามารถอ้างอิงโค้ดแล้ว ปรับแก้ให้เข้ากับบอร์ดหรือจอของตนเองได้
  • การใช้ คอนโทรล text label ของ LVGL ช่วยให้การทำเอาต์พุตบน LCD ง่ายขึ้น และยังสามารถรันผ่าน USB console ได้

วิธีใช้งาน

  • สามารถ ฟอร์กแล้วโคลนรีโพซิทอรี เพื่อรันบนบอร์ดของตนเองได้
    • ทดสอบบนบอร์ดราคาประมาณ 40 ยูโร และใช้งานได้กับบอร์ด LCD S3 ราคาประหยัดเช่นกัน
    • หากใช้ USB console จะสามารถดู เอาต์พุตรหัส ANSI ผ่าน IDF Monitor ของ VSCode หรือ Tabby ได้
  • ตัวเรนเดอร์ฟอนต์เขียนขึ้นเอง แต่เป็น การทำแบบเลือกใช้เพื่อให้ได้ประสิทธิภาพมากกว่า 30FPS

การมีส่วนร่วมและการขยายต่อ

  • โปรเจ็กต์เผยแพร่ภายใต้ ไลเซนส์ MIT จึงสามารถแก้ไขและแจกจ่ายต่อได้อย่างอิสระ
  • รายการที่ต้องการการมีส่วนร่วม
    • เพิ่มแอป ELF: สามารถอ้างอิงตัวอย่างจากรีโพซิทอรี breezyapps เพื่อสร้างแอปใหม่ได้
    • ตัวอย่างเฟิร์มแวร์สำหรับหลายบอร์ด: เสนอได้หลายรูปแบบ เช่น พื้นฐาน C/C++, มี GUI, หรือพอร์ตเกมเรโทร
  • เป้าหมายคือให้ผู้ใช้จำนวนมากขึ้นนำ BreezyBox ไปใช้ และขยาย ระบบนิเวศของตัวอย่างที่ทำซ้ำได้ทันที

1 ความคิดเห็น

 
GN⁺ 2026-02-09
ความเห็นจาก Hacker News
  • โปรเจกต์นี้เจ๋งมาก เดี๋ยวจะลองทำดูเอง
    เห็นอีกสองโปรเจกต์ที่เกี่ยวข้องกันด้วย

    1. ในคอมมูนิตี้ Reddit r/xteinkereader กำลังพัฒนาแอปสไตล์ OS สำหรับเครื่องอ่านอีบุ๊กจีนที่ใช้ esp32-s3
    2. ยังมีโปรเจกต์ Linux port สำหรับ esp32-s3 ด้วย S3 มี MMU แต่ดูเหมือนโปรเจกต์นี้จะไม่ได้ใช้มัน
      Boot-Linux-ESP32S3-Playground
    • XTEink ไม่ได้ใช้ ESP32-S3 แต่ใช้ C3 บอร์ด S3 ของ OP มี 8MB PSRAM แต่ C3 มี RAM แค่ 384kB ซึ่งสร้างความต่างอย่างมากเวลาสร้าง embedded OS
  • การบูตได้ทันทีนี่เจ๋งจริง พอเห็นโปรเจกต์แบบนี้หรือ Fruit Jam ของ Adafruit ก็ยิ่งชัดว่า “พอตัดความซับซ้อนที่ไม่จำเป็นออกไป ก็ได้อะไรกลับมาเยอะมาก”
    อยากให้สิ่งนี้เป็นคอมพิวเตอร์เครื่องแรกของเด็กเลย

    • ถ้ามี แล็ปท็อป $20 ออกมาขายใน AliExpress โดยใช้สิ่งนี้เป็นฐานก็คงดีมาก
  • สรุปแล้วรู้เลยว่าสุดสัปดาห์หน้าจะทำอะไร เดิมตั้งใจจะซื้อ esp32-s3 สำหรับอีกโปรเจกต์อยู่แล้ว ตอนนี้คงต้องซื้อสองตัว

  • ผมว่าบอร์ดพวกนี้ คุ้มค่าราคามาก และวางแผนจะใช้แทน KVM
    ถ้าแฟลช ESP32-Bus-Pirate แล้วต่อเข้ากับอุปกรณ์ที่จะควบคุมจากระยะไกล จะสะดวกมาก กินไฟแทบไม่มีเลย เลยปล่อยให้ต่อ Wi-Fi ไว้ตลอด

    • สงสัยว่าจัดการเรื่องการแชร์จอภาพกันยังไง ผมดูแลเซิร์ฟเวอร์รีเฟอร์หลายเครื่องอยู่ แต่มีงบไม่พอสำหรับ KVM ของจริง เลยอยากใช้สิ่งนี้แทน
  • สงสัยว่าจะพอร์ตให้ไปรันบน rp2350 ได้ไหม

    • บางส่วนคงได้ เชลล์มีแค่ linenoise กับ glue code เล็กน้อย ไม่แน่ใจสถานะการโหลด ELF บน rp2350 แต่ใน ESP-IDF มันเป็นคอมโพเนนต์มาตรฐาน เลยมีความเป็นไปได้
    • rp2350 รองรับ FreeRTOS ดังนั้นพอร์ตแบบใกล้เคียงกันน่าจะค่อนข้างง่าย โค้ด I/O DMA ของ Pico ค่อนข้างแปลก แต่ก็เป็นชิปที่ทรงพลังมาก
  • โอ้ คุณคือคนที่ทำ xcc700 ใช่ไหม! ผมสนใจการใช้ MCU กับงานคอมพิวติ้งทั่วไปมาก อยากรู้ว่าจะดันมันไปได้ไกลแค่ไหน

    • ใช่แล้ว ผมปล่อยเชลล์นี้ออกมาเพราะมีคนขอเชลล์ที่ใช้ในเดโม xcc700 กันเยอะ ESP32-S3 ยังแสดงศักยภาพออกมาเพียงส่วนน้อยมากเท่านั้น
      อาจจะจำได้ว่าเมื่อก่อน FabGL เคยรันเดโมเกมและการจำลอง DOS แต่กับ ESP-IDF รุ่นใหม่ ๆ มันอัปเดตต่อได้ยาก
      เลยกำลังทำใหม่ให้มี โครงสร้างแบบโมดูลาร์ มากขึ้น เพื่อให้ดูแลต่อระยะยาวได้ บางคนยังเคยรัน MacOS รุ่นเก่าผ่านการจำลองด้วย
  • เจ๋งมาก! ต้องเอาไปลง M5Stack Cardputer ทันที

  • ถ้าไม่มีโมเดลหน่วยความจำแบบแบน การทำ OS ทั่วไปมันไม่ยากเหรอ? Amiga1000 ก็ไม่มี MMU แต่มีโมเดลหน่วยความจำแบบแบน คิดว่าการหลบข้อจำกัดนี้น่าจะต้องทำอะไรซับซ้อนพอสมควร

    • โมเดลหน่วยความจำถือว่าแบนพอสมควร ปัญหาคือมี RAM แบบดั้งเดิมแค่ราว 200kB เท่านั้น แต่มี 8MB PSRAM แทน ซึ่งต้อง จัดแนว 4 ไบต์ และช้ากว่า
      เหตุผลที่ OS ทั่วไปทำได้ยากบนแพลตฟอร์มนี้คือ ไม่มี memory protection แต่ผมแค่อยากทำเชลล์กับตัวติดตั้งแอป เลยจัดการได้ในระดับนั้น
    • ปกติแล้วเหตุที่ OS ทั่วไปทำได้ยากบน SoC ก็คือ ไม่มี MMU ถ้าเป็นภาษาที่ไม่มีการเข้าถึง pointer อย่าง Java หรือ JS ก็ไม่ค่อยเป็นปัญหา แต่แอปเดสก์ท็อปที่เขียนด้วย C ต้องการ virtual address ที่สอดคล้องกันเสมอ
    • ผมไม่ค่อยคุ้นกับ MCU เท่าไร อยากรู้ว่าช่วยอธิบายประเด็นนี้เพิ่มเติมได้ไหม
  • เพิ่งรู้จัก BreezyBox ครั้งแรกตอนนี้เอง น่าสนใจมาก ผมไม่อยากต้องคอยกังวลเรื่องตั้งค่า Wi-Fi หรืออัปเดต แค่อยากเขียนแอปของตัวเองเท่านั้น
    เลยไม่เข้าใจว่าทำไมถึงยังไม่มี microcontroller OS แบบเรียบง่ายที่ช่วยจัดการเรื่องพวกนี้แทนให้ นี่อาจจะกลายเป็นฐานของสิ่งนั้นได้
    สงสัยว่ามี flow สำหรับการตั้งค่าแบบ headless deployment หรือยัง เช่น ตั้งค่า Wi-Fi ตอนแฟลช, ปล่อย remote shell/web UI เป็นต้น

    • BreezyBox ยังอยู่ใน ช่วงเริ่มพัฒนา สิ่งที่เห็นในเดโมแทบจะเป็นทั้งหมดแล้ว ถ้าจะให้แพร่หลายได้คงต้องมีนักพัฒนาเพิ่มแอปและฟีเจอร์เข้ามาอีก
      การเข้าถึงผ่านเว็บสำหรับตั้งค่าระยะไกลน่าจะทำได้ เพราะมีเว็บเซิร์ฟเวอร์อยู่แล้ว แค่ขยายให้รันโค้ดฝั่งเซิร์ฟเวอร์ได้
  • ขอถามแบบพื้นฐานหน่อย นี่รองรับแค่ S3 หรือรันบน C3 ได้ด้วย?

    • ส่วนใหญ่ คอมไพล์ได้บน C3, C6, P4 ด้วย เพียงแต่ xcc700 รองรับเฉพาะ Xtensa CPU เลยพอร์ตยากกว่า
      ไบนารี ELF ที่ติดตั้งด้วย eget ก็ต้องคอมไพล์ใหม่สำหรับ RISC-V ด้วย น่าจะดีถ้าเพิ่ม การรองรับ manifest เพื่อแยก ELF ตามแพลตฟอร์ม
      อีกอย่างคือต้องดูด้วยว่ามี PSRAM อยู่เท่าไร