รัน AI ตรวจจับผลไม้แบบ Real-Time บนบอร์ด STM32N6 ด้วย Edge Impulse

STM32N6570-DK Real-time Fruit Detection
โชว์ศักยภาพบอร์ด STM32N6570-DK ตรวจจับผลไม้ด้วย Edge AI แบบ Real-time

สวัสดีชาว Maker และสายพัฒนา IoT ทุกคนครับ! 🚀 ถ้าคุณเคยลองทำโปรเจกต์ Vision AI บนอุปกรณ์ปลายทาง (Edge) เช่น ทำระบบ AI ตรวจสอบการเกษตร หรือนับสต็อกสินค้า คุณน่าจะเคยเจอกำแพงที่ว่า "ไมโครคอนโทรลเลอร์ (MCU) ทั่วไป แรมไม่พอ!" แรมไม่พอพักเฟรมภาพจากกล้อง รอมไม่พอเก็บน้ำหนักโมเดล (Model weights) สุดท้ายก็ต้องไปจบที่การใช้บอร์ดคอมพิวเตอร์ (Linux SBC) ซึ่งกินไฟเยอะและทำให้ต้นทุนบานปลาย

แต่วันนี้ปัญหานั้นจะหมดไปครับ! เพราะ STM32N6570-DK ถูกออกแบบมาเพื่อทลายข้อจำกัดนี้โดยเฉพาะ บอร์ดตัวนี้มาพร้อมกับชิป Neural-ART Accelerator และหน่วยความจำที่ปรับแต่งมาเพื่อรันโมเดล AI หนักๆ ได้สบายๆ ลองมาดูกันว่าเบื้องหลังความเทพนี้มีอะไรบ้าง!

1. ข้อได้เปรียบของสถาปัตยกรรม "Zero Internal Flash" ⚡

เรื่องแปลกแต่จริงของชิปตัวนี้คือ "มันไม่มี Internal Flash" ครับ! ST เลือกใช้ External Octo-SPI flash จับคู่กับ Internal SRAM ขนาดใหญ่ถึง 4.2MB แทน

ดีไซน์แบบนี้ทำให้บอร์ดมีพื้นที่ SRAM กว้างขวางพอที่จะยัดทั้ง Frame buffers ของกล้อง, Model weights, และ NPU activations ไว้ด้วยกันได้สบายๆ โดยไม่แย่งพื้นที่กันเอง แถมยังช่วยให้โมเดล AI รันบน SRAM ที่อ่านเขียนได้เร็วกว่า Flash ทั่วไปมากๆ ครับ

💡 Maker's Tip: บอร์ด AI เทพๆ แบบนี้ ถ้ามีเคสใส่เท่ๆ คงจะดูโปรเฟสชันนัลสุดๆ ไปเลยครับ!

หากเพื่อนๆ คนไหนทำโปรเจกต์เสร็จแล้วต้องการกล่องใส่บอร์ดสวยๆ ทาง Globalbyte มีบริการรับปริ้นท์ 3D Printing วัสดุคุณภาพ งานเนี๊ยบ หรือถ้ากำลังมองหา บอร์ดพัฒนาโปรเจกต์อิเล็กทรอนิกส์และเซนเซอร์ต่างๆ ก็สามารถแวะมาช้อปที่ร้านเราได้เลยครับ!

2. ลำดับการบูตระบบ (Boot Sequence) 🧠

พอไม่มี Flash ภายใน การบูตระบบจึงไม่สามารถเริ่มจาก Address ศูนย์ได้เหมือนบอร์ดปกติครับ มันมีลำดับขั้นตอนดังนี้:

  1. Boot ROM: โค้ดที่รันเป็นอย่างแรกเพื่อตั้งค่าพื้นฐานและไปสะกิด External Flash
  2. FSBL (First-Stage Boot Loader): โหลดเข้ามาใน AXI SRAM2 และต้องผ่านการตรวจสอบลายเซ็นความปลอดภัย (ECDSA signature) ก่อนเสมอ
  3. Load and Run (LRUN): FSBL จะตั้งค่า Clock แล้วก๊อปปี้ไฟล์ Application หลักจาก External flash มาลงใน Internal SRAM เพื่อเริ่มรันระบบทั้งหมด

3. ซอฟต์แวร์สุดโกง: Edge Impulse + ST Neural-ART 🛠️

การเอาโมเดล AI มาลงบอร์ด STM32N6 ด้วยตัวเองเป็นเรื่องที่หินมากครับ แต่แพลตฟอร์ม Edge Impulse เข้ามาช่วยจัดการ MLOps Pipeline ทั้งหมดให้เราเลย

เราเลือกใช้โมเดล YOLO-Pro (รุ่น Pico และ Nano) ซึ่งปกติน้ำหนักโมเดลจะเยอะมากจน MCU รับไม่ไหว แต่บนบอร์ดตัวนี้รันได้ชิลๆ ครับ ความเจ๋งคือ Edge Impulse ใช้ระบบ Relocatable Mode แยกไฟล์ Model Weights ออกจากไฟล์ Firmware หลัก แปลว่าถ้าเราต้องการอัปเดตโมเดล AI ใหม่ เราสามารถแฟลชแค่ไฟล์ Weights เข้าไปทับได้เลย โดยไม่ต้องยุ่งกับโค้ดหลักครับ! โคตรสะดวก!

4. Step-by-Step: สร้างเดโมตรวจจับผลไม้ (Orange & Avocado) 🍊🥑

  • เก็บข้อมูล (Data Acquisition): ใช้คำสั่ง edge-impulse-daemon เพื่อเชื่อมกล้องบนบอร์ดเข้ากับเว็บ Edge Impulse โดยตรง และทยอยถ่ายรูปผลไม้ในสภาพแสงต่างๆ เพื่อให้โมเดลฉลาดขึ้น (ตั้งค่า Resize ภาพเป็น 160 x 160)
  • เทรนโมเดล (Training): เลือกบล็อก Object Detection และใช้ YOLO-Pro (แนะนำรุ่น Pico เพราะทำงานเร็วกว่า) ก่อนเทรนอย่าลืมใช้ Target Profiler เช็คสเปค แรม/รอม ดูว่าโมเดลเราล้นบอร์ดไหม
STM32N6 Board Setup
การตั้งค่าและการเชื่อมต่อฮาร์ดแวร์เบื้องต้น
Data Acquisition in Edge Impulse
กระบวนการเก็บภาพ (Data Acquisition) ใน Edge Impulse Studio
Create Impulse Model Training Keras
การตั้งค่า Layer ของ Neural Network สำหรับการทำ Object Detection
Target Profiler Live Classification
ผลลัพธ์การทำ Live Classification ตรวจจับผลไม้แบบ Real-Time

5. การแฟลชบอร์ด (Deployment: 3 ไฟล์, 3 ตำแหน่ง!) ⚡

เมื่อ Export มา เราจะได้ไฟล์ 3 ตัว ซึ่งเราต้องเขียนลงไปใน Address ที่กำหนดเป๊ะๆ ห้ามพลาดแม้แต่ตัวเลขเดียวครับ:

  • ai_fsbl_cut_2_0.hex แฟลชไปที่ 0x70000000
  • firmware-st-stm32n6.bin แฟลชไปที่ 0x70100000
  • network_data.hex แฟลชไปที่ 0x71000000

ทริค: ก่อนแฟลช ต้องเลื่อนสวิตช์ BOOT1 ไปทางขวา เพื่อเข้า DEV Mode และกดปุ่มรีเซ็ต (NRST) ไม่งั้นบอร์ดจะไม่ยอมให้เขียนข้อมูลทับครับ พอแฟลชเสร็จค่อยดันสวิตช์กลับทางซ้ายแล้วรีเซ็ตอีกรอบ

Command Line (Flash Scripts)
# หากใช้ Linux / macOS ให้รันสคริปต์นี้
./flash.sh

# หากใช้ Windows ให้รันสคริปต์นี้
flash.bat

วิดีโอสาธิตการทำงาน (Demo Video) 🎬

⚠️ ข้อควรระวัง (Common Pitfalls) ที่คุณควรรู้:

  • CPU Tax: ถ้าใช้ภาพความละเอียดสูงจากกล้อง บอร์ดจะต้องใช้คอร์ M55 ย่อขนาดภาพก่อนส่งเข้า NPU ทำให้ FPS อาจจะตกกว่าที่คำนวณไว้ใน Profiler ครับ
  • ปัญหาไฟไม่พอ (Brownouts): การรันกล้อง + CPU + NPU พร้อมกัน จะกินกระแสไฟสูงมาก! สาย USB เส้นเดียวเอาไม่อยู่แน่ๆ วิธีแก้คือ: ให้ต่อไฟเลี้ยงเสริมเข้าพอร์ต CN8 และสลับจัมเปอร์ JP2 ไปที่ 3-4 (5V_USB_STLK) ครับ ถ้าไม่ทำ บอร์ดอาจจะรีเซ็ตตัวเองรัวๆ จนคุณคิดว่าโค้ดพัง!

บอร์ด STM32N6 ถือเป็นการปลดล็อกขีดจำกัดของ Edge AI อย่างแท้จริงครับ คุณได้ระบบ Vision ที่เสถียร ประหยัดพลังงาน โดยไม่ต้องพึ่งพาระบบ Linux แถมยังอัปเดตโมเดลได้อย่างอิสระ สามารถนำไปประยุกต์ใช้กับกล้องตรวจสอบคุณภาพในโรงงาน หรืออุปกรณ์สวมใส่ (Wearables) อัจฉริยะได้อย่างสบายๆ ครับ!

อ้างอิงและเรียบเรียงข้อมูลจาก: Globalbyteshop Blog

แหล่งที่มาบทความต้นฉบับ: Hackster.io - Real-Time Fruit Detection on the STM32N6

ซอร์สโค้ดโปรเจกต์ (GitHub): STM32N6 Object Detection Repository

คู่มือการสร้าง AI บน STM32N6570-DK: ST Community Guide

*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความเทคโนโลยีต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา การตั้งค่าหน่วยความจำ (Memory Layout) และการแฟลช Address บนบอร์ดไมโครคอนโทรลเลอร์มีความละเอียดอ่อนสูง หากระบุ Address ผิดพลาดอาจส่งผลให้บอร์ดเกิด Hard Fault ได้ ผู้สนใจควรตรวจสอบเอกสารข้อมูลทางเทคนิคและคู่มือการใช้งานอย่างเป็นทางการจาก เว็บไซต์ต้นฉบับ ก่อนลงมือปฏิบัติตาม

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี