ขั้นสูง: เส้นทาง STM32 และเฟิร์มแวร์โดรน

บอร์ดพัฒนาเชื่อม debugger ข้างกราฟ log และออสซิลโลสโคปบนโต๊ะวิเคราะห์ระบบควบคุม
ภาพจำลองแนวคิดสร้างด้วย AI ไม่ใช่ภาพหน้าจอหรือรุ่นอุปกรณ์ที่ยืนยันการรองรับ

เริ่มจาก คู่มือ Flash และ RAM เพื่ออ่านตัวเลขคอมไพล์และวางแผนพื้นที่ก่อนเพิ่มงาน

วัตถุประสงค์และทางเลือกในการฝึก

บทนี้ฝึกอ่านโครงสร้างระบบควบคุม วิเคราะห์เวลา และใช้หลักฐานหาสาเหตุของอาการผิดปกติ เริ่มได้จากคอมพิวเตอร์และ log โดยไม่ต้องซื้อ flight controller ถ้าต้องการวัด timer หรือ interrupt บนฮาร์ดแวร์ ค่อยเลือก STM32 development board กับ debugger ที่รองรับ

ควรผ่าน การอ่าน IMU และการสื่อสาร เข้าใจหน่วยและ C/C++ เบื้องต้น ชุดฝึก Python บน PC, ArduCopter 4.7.1 SITL และ ชุด timing อ้างอิง NUCLEO-F446RE/STM32duino 3.0.0 ในบทที่เชื่อมไว้ผ่านการตรวจส่วนซอฟต์แวร์แล้ว ยังไม่มีผล upload หรือ timing/เซนเซอร์/การบินจากอุปกรณ์จริง

เลือกบทตามพื้นฐานและเป้าหมาย

เรียนตามลำดับด้านล่าง หรือเปิดเฉพาะเรื่องที่ต้องการอ้างอิงได้ เวลาที่ระบุเป็นแผนฝึก ไม่ใช่เวลาอ่านอัตโนมัติหรือผลทดลองกับผู้เรียน

  1. STM32 และงบเวลา

    พื้นฐาน: อ่าน C/C++ และหน่วยเวลาได้ · เวลาฝึกเสนอ 45 นาที

    ตรวจความเข้าใจ: อธิบายหนึ่งแถว log พร้อมหน่วย และระบุว่ายังวัด IRQ latency ไม่ได้

  2. Timer Interrupt และการส่ง tick

    พื้นฐาน: ผ่านบทงบเวลาและเข้าใจ polling · เวลาฝึกเสนอ 45 นาที

    ตรวจความเข้าใจ: อธิบายเหตุที่ tick ถูกข้ามกับเหตุที่สังเกตไม่ได้จาก log

  3. คิวข้อมูลจาก ISR

    พื้นฐาน: ผ่าน Timer Interrupt และอ่าน counter ได้ · เวลาฝึกเสนอ 60 นาที

    ตรวจความเข้าใจ: แยก overflow ที่ enqueue จาก dropped ที่ส่ง Serial ไม่ได้

  4. อายุข้อมูลและ Freshness Gate

    พื้นฐาน: เข้าใจคิว FIFO และผลต่างเวลาจาก clock เดียวกัน · เวลาฝึกเสนอ 60 นาที

    ตรวจความเข้าใจ: อธิบาย fresh ที่ขอบเวลา stale ที่เกินขอบ และสิ่งที่ gate ไม่รับรอง

  5. วินิจฉัย Log ของ STM32

    พื้นฐาน: อ่าน CSV หกช่องจากบท Freshness Gate ได้ · เวลาฝึกเสนอ 45 นาที

    ตรวจความเข้าใจ: ทำใบงานเจ็ดกรณีและอ้างแถวที่สนับสนุนข้อสรุป

  6. ที่มาและขอบเขต Log

    พื้นฐาน: ผ่านการวินิจฉัย Log และเข้าใจยอดสะสมกับ delta · เวลาฝึกเสนอ 45 นาที

    ตรวจความเข้าใจ: ตรวจสี่กรณี อธิบายแฮชและขอบเขตหลักฐานที่ยังไม่ยืนยัน

  7. PID, Failsafe และเฟิร์มแวร์

    พื้นฐาน: ผ่านเซนเซอร์ หน่วย เวลา และการอ่าน log · เวลาฝึกเสนอ 90 นาที

    ตรวจความเข้าใจ: อ้างเวลา/โหมดใน log และระบุว่าไม่ได้ยืนยันการบินจริง

เลือกสภาพแวดล้อมการฝึก

  • Python บน PC: วิเคราะห์ข้อมูลสังเคราะห์และตรวจคำตอบ
  • Compile สำหรับ NUCLEO-F446RE: ตรวจโค้ดกับ target อ้างอิง ยังไม่ใช่ผลอัปโหลดหรือการวัดบอร์ด
  • ArduCopter SITL: ศึกษาเฟิร์มแวร์ในสภาพจำลองจากผลและ log เดิม
  • DroneSim: ฝึกประกอบ วางแผนภารกิจ และอ่าน Replay; ยังไม่รันโค้ด MCU

ไดอะแกรมวงควบคุมหลายชั้นจากท่าทางสู่อัตราการหมุนและ actuator

ภาพแนวคิดวงควบคุม ใช้อ้างอิงระหว่างบท ไม่ใช่ผลทดสอบบิน

เปิดหัวข้อจากลิงก์เดิม

ลิงก์หัวข้อที่บันทึกไว้ยังใช้หน้านี้เป็นทางผ่านไปบทที่แยกแล้ว

เลือก STM32 และอ่านโครงสร้างเฟิร์มแวร์

จากค่าที่วัดสู่คำสั่งแรงขับ

จัดงบเวลาและตรวจความหน่วง

ชุด STM32: ฝึก timing และอ่าน log

ชุด STM32: ฝึก Timer Interrupt และส่ง tick

ชุด STM32: คิวข้อมูล ISR ไป main loop

ชุด STM32: คัดข้อมูลเก่าก่อนนำไปใช้

ชุดฝึก: วินิจฉัย Log ของ STM32

ชุดฝึก: บันทึกที่มาและขอบเขต Log

Failsafe ต้องสัมพันธ์กับสถานะการบิน

ดาวน์โหลดแบบฝึก timing, PID และ failsafe บน PC

ทดลอง GCS failsafe กับ ArduCopter จริงใน SITL

ขั้นตอนต่อยอด firmware/SITL และอ่าน log

เชื่อมกับภารกิจและเรียนต่อ

อ่านข้อมูลผ่านเครื่องมือบนเว็บ

เปิดเครื่องมืออ่าน CSV และกราฟ Log เพื่อฝึกจากตัวอย่างสังเคราะห์หรือ CSV หกช่องของชุด Freshness Gate ประมวลผลในเครื่อง รองรับไม่เกิน 1 MB/10,000 แถว ขอบเขตแคบกว่า analyzer Python เดิม ใช้ผลจากทุกแถวคำนวณสถิติ ส่วนกราฟแสดงสูงสุด 1,000 จุดและอาจไม่เห็นยอดแหลมทั้งหมด

ตรวจความเข้าใจด้วยตนเอง

เปิดแบบประเมินสามระดับพร้อมเหตุผล ระดับละ 4 ข้อ บันทึกรอบก่อนอ่าน/หลังทบทวนเฉพาะในเบราว์เซอร์ ใช้คำถามเดิม ไม่ใช่การวัดผลผู้เรียนจริงหรือใบรับรอง

เตรียมเก็บหลักฐานจากบอร์ดจริง

คู่มือเตรียมทดลอง UNO/ESP32/STM32 พร้อมใบงาน ตรวจรุ่น wiring source/core clock และไฟล์ดิบก่อนสรุปผล คู่มือพร้อมใช้ แต่การ upload/วัดจริงยังรออุปกรณ์

ฝึกอ่าน PID และข้อมูลเก่าจากหลักฐาน

ชุดฝึกนำทาง PID/STOP_SIM 8 ข้อ ใช้ Log PC เดิม4กรณี มีใบงานว่าง/เฉลยเหตุผลและตำแหน่งแถวอ้างอิง ฝึกอ่านหน่วย deadline saturation และข้อจำกัดก่อนศึกษาผล firmware

ฝึกคิวISRและแยกเหตุข้อมูลหาย

ชุดฝึกนำทาง FIFO/counter 8 ข้อ ไล่คิว4ช่องด้วยตารางว่าง12ขั้น เทียบข้อมูลสังเคราะห์เดิม13แถว พร้อมเฉลยเหตุผล/หน่วย/ขอบเขต ก่อนต่อFreshness Gate

ฝึกอ่านอายุข้อมูลและจุดใช้

ชุดฝึกนำทาง Freshness Gate 8 ข้อ เทียบ Log เดิม13แถว คำนวณขอบเวลาและclock wrap6กรณี พร้อมใบงาน/เฉลย เพื่อแยกข้อมูลเก่าจากข้อมูลหาย

ฝึกวินิจฉัยและเขียนข้อสรุปจาก Log

ชุดฝึกนำทาง Log Diagnostics 8 ข้อ คำนวณ8คู่จาก7กรณีเดิม พร้อมแบบรายงานว่าง/เฉลย เพื่อแยกยอดสะสมกับdeltaและจำกัดข้อสรุปตามหลักฐาน

ฝึกตรวจที่มาและขอบเขตหลักฐาน

ชุดฝึกนำทางที่มาและขอบเขต Log 8 ข้อ ตรวจสี่คู่ไฟล์เดิม แยกค่าจากไฟล์กับคำประกาศ พร้อมแบบรายงานสามชั้น/เฉลย และตัวอย่างแปลงไบต์บนสำเนา

ฝึกอ่านเหตุและเวลาในเฟิร์มแวร์ SITL

ชุดฝึกนำทาง firmware SITL 8 ข้อ อ่านผลสอง run เดิม พร้อมเหตุการณ์ 11 รายการ ตารางเวลา 7 ช่วง และเฉลยที่แยก ACK/host observation/ขอบหลักฐาน

ฝึก phase และงบเวลาแบบ polling

ชุดฝึกนำทาง polling timing 8 ข้อ อ่าน 11 แถวสังเคราะห์เดิม คำนวณเจ็ดคู่ และไล่ scheduler เจ็ด calls พร้อมเฉลยที่แยก late/skipped/work/dropped

ฝึกส่ง tick จาก ISR ไป main

ชุดฝึกนำทาง Timer Interrupt 8 ข้อ อ่าน 11 แถวสังเคราะห์เดิม คำนวณเจ็ดคู่ และไล่ handoff เก้า calls พร้อมเฉลยที่แยก callback, hardware update และจุดวัดเวลา

STM32PX4ArduPilotRTOSPIDEKFfailsafeflight log