เริ่มอ่านสัญญาณด้วย คู่มือ ADC และ PWM พร้อมโจทย์และใบวางแผน ก่อนต่อยอดช่องสื่อสาร
อ่านต่อ บท Complementary Filter พร้อมตัวอย่างคำนวณ เพื่อแยก prediction จากมุมที่ผสานแล้ว
อ่านต่อ บทมุมข้าม ±180° พร้อมตัวอย่าง เพื่ออ่านผลต่างมุมที่ข้ามขอบช่วง
อ่านต่อ บทมุมต่อเนื่องและอัตราหมุนจาก Log เพื่อฝึกสะสมมุมและตรวจช่วงเวลาจริง
อ่านต่อ บทกรองมุมให้เรียบกับความหน่วง เพื่อฝึกค่าเฉลี่ยสามจุดและแยกเวลาพร้อมใช้
อ่านต่อ บทสะสมมุมจาก Gyro ด้วยเวลาจริง เพื่อฝึก dt ไม่เท่ากันและผลของ offset ที่สะสม
เลือกอ่านหรือฝึกตามเป้าหมาย
- อยากเริ่มลงมือ: เลือกชุดฝึก MCU 20 ชุด ดูเป้าหมาย พื้นฐานที่ควรรู้ โจทย์ ใบงาน แบบวางแผน และเฉลย แยกพื้นฐาน–ประยุกต์–ขั้นสูง
- อยากรู้ว่าควรทบทวนเรื่องใด: ทำแบบประเมินความเข้าใจ 12 ข้อ เลือกระดับและรอบก่อน–หลัง คะแนนใช้ทบทวนส่วนตัว
- อยากเตรียมทดลองกับอุปกรณ์: อ่านคู่มือบอร์ด UNO/ESP32/STM32 แยกสิ่งที่ตรวจในเครื่องได้จากขั้นที่ต้องมีบอร์ดและวัดจริง
เลือกใช้เฉพาะส่วนที่ตรงคำถามได้ ชุดฝึก แบบประเมิน และผลบอร์ดจริงมีขอบเขตหลักฐานต่างกัน
หลังเลือกชุด ดู วิธีเปิดไฟล์และกรอกใบงาน ก่อนแก้ไฟล์ดาวน์โหลด
ถ้าติดคำศัพท์ ให้เปิด คำศัพท์ หน่วย และเวลาของชุดฝึก ก่อนอ่าน Log หรือคำตอบ
ถ้าจะเลือกช่องต่อเซนเซอร์หรือ Log เปิด คู่มือ I2C, SPI และ UART ก่อนวางแผนต่ออุปกรณ์
ทำไมโดรนดูเหมือนอยู่นิ่ง แต่สมองกลทำงานตลอดเวลา
ลม การสั่น และแรงขับที่เปลี่ยนทำให้ท่าทางโดรนคลาดจากค่าที่ต้องการ ระบบจึงต้องอ่านเซนเซอร์ ประมาณสถานะ เปรียบเทียบกับเป้าหมาย และปรับคำสั่งซ้ำอย่างต่อเนื่อง นี่คือวงจร feedback หรือการควบคุมแบบป้อนกลับ ความนิ่งขึ้นกับทั้งข้อมูล การควบคุม และเวลาที่ใช้ประมวลผล ดูการแบ่งหน้าที่ของระบบจริงใน สถาปัตยกรรม PX4 v1.16
บทเรียนชุดนี้ใช้แนวคิดจากคลิป “เบื้องหลังสมองกลที่ทำให้โดรนบินนิ่ง” ที่ผู้ใช้ให้เป็นโครงเรื่อง แล้วจัดใหม่ให้ลงมือเรียนตามลำดับ พร้อมตรวจศัพท์และรายละเอียดกับเอกสารทางการที่เชื่อมไว้ในแต่ละบท
แผนภาพแนวคิด: ระบบวัดผลของคำสั่งย้อนกลับอย่างต่อเนื่อง แต่ละขั้นมีข้อจำกัดด้านข้อมูลและเวลา
รู้จักชิ้นส่วนก่อนเลือกบอร์ด
| คำที่พบ | ทำหน้าที่อะไร | ตัวอย่างการเรียน |
|---|---|---|
| MCU หรือไมโครคอนโทรลเลอร์ | รวมหน่วยประมวลผล หน่วยความจำ และวงจรรับส่งสัญญาณไว้ในชิป | อ่านปุ่ม เก็บเวลา อ่านเซนเซอร์ |
| Development board | นำ MCU มาต่อไฟ USB และขาสัญญาณให้ทดลองได้ง่าย | Arduino UNO R3 หรือบอร์ด ESP32 รุ่นที่เลือก |
| Flight controller | บอร์ดควบคุมการบินที่รวม MCU เซนเซอร์ และช่องเชื่อมต่อสำหรับระบบโดรน | อ่าน IMU และส่งคำสั่งผ่าน ESC |
| Firmware | ซอฟต์แวร์ที่จัดการอุปกรณ์และตรรกะการควบคุม | PX4 หรือ ArduPilot บนบอร์ดที่รองรับ |
| Companion computer | คอมพิวเตอร์เพิ่มเติมสำหรับงานที่แยกจากวงจรควบคุมการบิน | ประมวลผลภาพหรือวางแผนภารกิจ |
Arduino หมายถึงทั้งเครื่องมือพัฒนาและตระกูลบอร์ด ส่วน ESP32 และ STM32 มีหลายรุ่นย่อย จึงต้องเลือกชิป บอร์ด และ SDK ให้ตรงกัน เริ่มอ่านการเชื่อมต่อและโปรแกรมเบื้องต้นจาก Arduino Learn
เลือกระดับตามสิ่งที่อยากทำ
ขั้นพื้นฐาน: Arduino/ESP32
วัตถุประสงค์: เข้าใจ I/O และเวลาในโปรแกรม ลงมือทำ: อ่านปุ่ม กระพริบ LED และส่งข้อมูล serial โดยไม่หยุดทั้งโปรแกรม ผลลัพธ์: อธิบาย GPIO, ADC, PWM และทำสองงานร่วมกันได้
ขั้นประยุกต์: เซนเซอร์และการสื่อสาร
วัตถุประสงค์: เปลี่ยนค่าที่อ่านได้ให้เป็นข้อมูลที่เชื่อถือได้ ลงมือทำ: อ่าน IMU ตรวจแกนและหน่วย บันทึก timestamp แล้วทดลองข้อความตกหล่น ผลลัพธ์: แยกความผิดพลาดจากเซนเซอร์ เวลา และการสื่อสารได้
ฝึกต่อด้วย ใบงานนำทาง IMU/ข้อความ 8 ข้อ เพื่ออ่านแกน หน่วย อายุข้อมูลและลำดับข้อความ พร้อมเฉลยเหตุผลจากข้อมูล PC เดิม
ขั้นสูง: STM32 และเฟิร์มแวร์โดรน
วัตถุประสงค์: เข้าใจข้อจำกัดของระบบควบคุมจริง ลงมือทำ: วิเคราะห์ timing, PID, failsafe และ log ด้วยแผนทดลอง SITL ผลลัพธ์: อธิบายเหตุผลของอาการผิดปกติจากหลักฐานได้
หากยังไม่เคยเขียนโปรแกรม ให้เริ่มบทพื้นฐานและทำแบบฝึก LED ให้จบก่อนซื้ออุปกรณ์เพิ่ม หากอ่านเซนเซอร์ได้แล้วให้เริ่มบทประยุกต์ ส่วนผู้ที่มีประสบการณ์ flight controller ควรอ่านบทขั้นสูงโดยตรวจคำศัพท์และหน่วยย้อนกลับเมื่อจำเป็น
เส้นทางฝึกที่เลือกได้
| จุดเริ่ม | งานที่ฝึก | ก่อนเลื่อนไปบทถัดไป |
|---|---|---|
| พื้นฐาน Arduino/ESP32 | LED, ปุ่ม, Serial และ debounce | อธิบาย I/O กับเวลาได้ พร้อมอ่านผล compile แยกจากผลบอร์ด |
| ประยุกต์เซนเซอร์และการสื่อสาร | แกน หน่วย timestamp และข้อความตกหล่น | ระบุหน่วยและหลักฐานความผิดพลาดได้ |
| ขั้นสูงแยกเจ็ดบท | Timing → Interrupt → Queue → Freshness → วินิจฉัย Log → ที่มา Log → PID/SITL | ตรวจคำตอบพร้อมระบุขอบเขตผลที่ยังไม่ยืนยัน |
เลือกเรียนเพื่ออ้างอิงเฉพาะเรื่องได้ ลำดับนี้เป็นทางแนะนำสำหรับผู้ที่ต้องการฝึกต่อเนื่อง
ขั้นตอนเรียนให้ต่อกันเป็นระบบ
- วาดเส้นทางข้อมูล: เซนเซอร์ → การประมาณสถานะ → ตัวควบคุม → ตัวกระทำ → เซนเซอร์ ระบุว่าแต่ละจุดวัดหรือสั่งอะไร
- เลือกงานเล็กหนึ่งงาน: เช่น อ่านปุ่มและกระพริบ LED แล้วเขียนสิ่งที่คาดว่าจะเกิดก่อนรัน
- เก็บหลักฐาน: บันทึกรุ่นบอร์ด SDK การต่อสาย หน่วย อัตราเก็บข้อมูล และผลที่ได้
- เปลี่ยนทีละปัจจัย: ใช้ log อธิบายผล แล้วค่อยต่อเซนเซอร์หรือเพิ่มการสื่อสาร
- เลื่อนไประดับถัดไปเมื่ออธิบายได้: แยก “โปรแกรมรันได้” ออกจาก “ข้อมูลถูกต้อง” และ “พฤติกรรมควบคุมเหมาะสม”
ใช้ Sim ให้ตรงวัตถุประสงค์
เปิด DroneSim เพื่อฝึกออกแบบและประกอบโดรน วางแผนภารกิจ หรือฝึกสนามและอ่าน Replay ใช้ประกอบการมองภาพระบบและภารกิจได้ ปัจจุบัน DroneSim ยังไม่ประมวลผลโค้ด Arduino/ESP32/STM32 และไม่จำลองวงจรอิเล็กทรอนิกส์ของบอร์ด
เมื่ออยากศึกษาพฤติกรรม เฟิร์มแวร์ควบคุมการบิน ให้ต่อด้วย บท SITL ในคลังความรู้ ซึ่งอธิบายการรันซอฟต์แวร์ควบคุมกับแบบจำลองบนคอมพิวเตอร์ การผ่านแบบฝึกในคอมพิวเตอร์ยังต้องตรวจอุปกรณ์และสภาพแวดล้อมก่อนนำไปใช้จริง
ชุดฝึกพร้อมใช้บน PC: input/debounce ของ UNO R3 มีโค้ดที่คอมไพล์และ host tests ผ่าน; IMU/การสื่อสาร ใช้ข้อมูลสังเคราะห์; timing/PID และ ArduCopter SITL failsafe แยกสมการสอนจากผล firmware จริงพร้อม log และเฉลย ส่วนบอร์ด เซนเซอร์ วิทยุและการบินจริงยังต้องตรวจตามอุปกรณ์ที่เลือก
คำแนะนำก่อนเริ่ม
เริ่มจาก USB, LED และเซนเซอร์บนโต๊ะ ใช้คู่มือ pinout ของบอร์ดและตรวจระดับแรงดันของอุปกรณ์ที่ต่อร่วมกัน แบบฝึกชุดนี้ไม่ต้องติดใบพัดหรือสั่งมอเตอร์ เลือกเครื่องมือที่บันทึกและทำซ้ำได้ เพื่อให้วิเคราะห์ความผิดพลาดได้ก่อนเพิ่มความซับซ้อน
ตรวจความเข้าใจ: ลองอธิบายว่า MCU, flight controller และ firmware ต่างกันอย่างไร แล้วเลือกหนึ่งตัวแปรที่ควรบันทึกเมื่อโดรนสั่น เช่น angular rate, ค่าที่สั่ง หรือระยะห่างระหว่างเวลาเก็บข้อมูล พร้อมเหตุผล
ตรวจความเข้าใจด้วยตนเอง
เปิดแบบประเมินสามระดับพร้อมเหตุผล ระดับละ 4 ข้อ บันทึกรอบก่อนอ่าน/หลังทบทวนเฉพาะในเบราว์เซอร์ ใช้คำถามเดิม ไม่ใช่การวัดผลผู้เรียนจริงหรือใบรับรอง
กิจกรรมเชื่อมความรู้ MCU กับการจำลอง
เลือกกิจกรรม DroneSim อ่าน Log หรือศึกษาผล firmware SITL พร้อมวัตถุประสงค์ ขั้นตอน ใบงาน และเหตุการณ์ย่อจากผล ArduCopter 4.7.1 ที่เก็บไว้แล้ว แยกสิ่งที่แต่ละเครื่องมือยืนยันได้
เตรียมเก็บหลักฐานจากบอร์ดจริง
คู่มือเตรียมทดลอง UNO/ESP32/STM32 พร้อมใบงาน ตรวจรุ่น wiring source/core clock และไฟล์ดิบก่อนสรุปผล คู่มือพร้อมใช้ แต่การ upload/วัดจริงยังรออุปกรณ์
แยกปัญหา Verify พอร์ต upload Serial และไฟล์ Log พร้อมแบบบันทึกปัญหาว่าง เริ่มตรวจโค้ดในเครื่องได้ ส่วนที่ใช้บอร์ดยังรออุปกรณ์จริง
ฝึกพื้นฐานก่อนต่อเซนเซอร์
ชุดฝึกนำทางปุ่มและ debounce 8 ข้อ ไล่สถานะ 15 calls และ due สี่ตัวอย่างจาก source เดิม พร้อมใบงาน เฉลย และรายงานที่แยกค่าคำนวณจากผลบอร์ดจริง
เลือกชุดฝึกให้ตรงเป้าหมาย
เลือกชุดฝึก MCU 20 ชุด พร้อมโจทย์ ใบงาน แบบวางแผน และเฉลย แยกพื้นฐาน ประยุกต์ และขั้นสูง พร้อมพื้นฐานที่ควรรู้และวิธีทบทวน เลือกหนึ่งปัญหาที่สนใจได้โดยไม่ต้องทำทุกชุดตามลำดับ
คำศัพท์ หน่วย และเวลาที่ใช้ในชุดฝึก
วัตถุประสงค์: เปิดเทียบความหมายก่อนอ่านโจทย์หรือ Log พื้นฐาน: อ่านชื่อคอลัมน์และรู้ชุดต้นทาง เวลาเสนอ: 5–10 นาทีสำหรับหนึ่งคำตอบ ยังไม่ได้วัดกับผู้เรียน ใช้คู่มือนี้เป็นจุดอ้างอิงได้โดยไม่ต้องอ่านทุกบทตามลำดับ
- เลือกคำที่สงสัยในกลุ่มด้านล่าง แล้วเปิดบทที่เชื่อมไว้
- ตรวจหน่วย จุด timestamp, clock/session และกติกาของชุดนั้นก่อนแทนสูตร
- จดคำอธิบายหนึ่งคอลัมน์ แล้วใช้ คู่มือตรวจข้อสรุปจากหลักฐาน แยกสิ่งที่ยังต้องเก็บเพิ่ม
ใช้ภาพเสมือนจริงเดิมในหน้าภาพรวมประกอบบริบท แผนภาพนี้เป็นคู่มืออ่านข้อมูล ไม่มี trace หรือผลวัดใหม่
พื้นฐาน · สัญญาณและหน่วย
-
GPIO — ขารับ/ส่งสถานะดิจิทัล เช่น HIGH/LOW ใช้อ่านปุ่มหรือสั่ง LED หน่วย/บริบท: สถานะลอจิก; ตรวจแรงดันตามรุ่นบอร์ด ระวัง: หมายเลข GPIO ไม่ใช่ตำแหน่งขาบนบอร์ดทุกชนิด GPIO · บทพื้นฐาน
-
ADC — แปลงสัญญาณแอนะล็อกเป็นค่าดิจิทัล; ค่าดิบต้องตรวจความละเอียดและการแปลงหน่วย หน่วย/บริบท: raw count หรือ mV ตาม API ระวัง: ค่าดิบจาก analogRead ไม่ใช่แรงดันที่คาลิเบรตแล้ว ADC · บทพื้นฐาน
-
PWM / duty cycle — PWM สลับสัญญาณเป็นคาบ; duty cycle คือสัดส่วนเวลาที่สัญญาณอยู่ในสถานะ active ต่อคาบ หน่วย/บริบท: คาบ/ความถี่และสัดส่วน duty; ตรวจช่วงค่าตาม API ระวัง: ตัวอย่างปรับ LED ไม่ยืนยันว่าใช้สั่ง ESC ได้ PWM · บทพื้นฐาน
-
ms / µs / s — 1 ms = 1,000 µs และ 1 s = 1,000 ms; แปลงให้เป็นหน่วยเดียวกันก่อนคำนวณ หน่วย/บริบท: ระยะเวลา; เช่น 10,000 µs = 10 ms ระวัง: ตัวเลขเท่ากันต่างหน่วยไม่ใช่เวลาเท่ากัน หน่วยเวลา · Polling Timing
ประยุกต์ · ข้อมูลและเวลา
-
timestamp / clock / session — timestamp ระบุเวลาที่จุดหนึ่ง ต้องรู้เหตุการณ์ที่ประทับเวลา แหล่ง clock และรอบการทำงาน หน่วย/บริบท: ms หรือ µs ตามสัญญาข้อมูล ระวัง: เวลา host กับ MCU ลบกันตรง ๆ ไม่ได้เมื่อยังไม่มีความสัมพันธ์ของ clock clock และ session · ที่มา Log
-
angular rate / angle — gyro บอกอัตราการหมุน ส่วนมุมต้องประมาณจากข้อมูลและช่วงเวลา; ตรวจแกนและทิศบวก หน่วย/บริบท: deg/s หรือ rad/s สำหรับอัตรา; deg หรือ rad สำหรับมุม ระวัง: อย่าอ่านค่าการหมุนต่อวินาทีเป็นมุมโดยตรง อัตราการหมุน · บท IMU
-
age / fresh / stale — age คือเวลาจาก timestamp ที่กำหนดถึงจุดตรวจ; fresh/stale เป็นผลเทียบ cutoff ของงาน หน่วย/บริบท: ข้อความใช้ ms; Freshness Gate ใช้ µs ตามคู่มือ ระวัง: fresh ตอนตรวจไม่ยืนยันว่า fresh ตอนใช้ภายหลัง; callback age ไม่ใช่ sensor age เสมอ อายุข้อมูล · Freshness Gate
-
sequence / accepted-stream gap — sequence เป็นเลขลำดับ; gap ในชุดข้อความนี้นับเลขที่ขาดระหว่างข้อความที่ยอมรับตาม protocol หน่วย/บริบท: จำนวนลำดับ; ชุดข้อความสอนใช้ 16 bit และ session เดียว ระวัง: gap ไม่ใช่จำนวนแพ็กเก็ตวิทยุสูญหาย; ต้องตรวจเลขวนและนโยบายรับ ลำดับข้อความ · บทสื่อสาร
ขั้นสูง · งานและหลักฐาน
-
ISR / snapshot / handoff — ISR จัดการ interrupt; snapshot อ่านข้อมูลร่วมให้สอดคล้อง; handoff ส่งข้อมูลให้ main ใช้ต่อ หน่วย/บริบท: tick/เวลาและสถานะตามชุด Timer Interrupt ระวัง: volatile อย่างเดียวไม่รับรอง snapshot หลายช่อง; source ไม่ใช่ผลวัด concurrency บนบอร์ด ISR และ handoff · Timer Interrupt
-
late_us / work_us — polling: late คือช้าจากรอบล่าสุด; work วัดช่วง scheduler/LED ก่อนจัด CSV และส่ง serial หน่วย/บริบท: µs; ใช้ขอบจุดวัดของชุด polling นี้ ระวัง: late น้อยยังอาจพลาดรอบเก่า; work ไม่ครอบคลุมทั้ง loop และไม่เทียบชุด ISR เป็น benchmark ตรง ๆ ขอบเวลา · Polling Timing
-
skipped / dropped — polling: skipped คือคาบเก่าที่ไม่ได้ทำในครั้งนั้น; dropped เป็นยอดสะสมแถว Log ที่ส่งไม่ได้ตั้งแต่ boot หน่วย/บริบท: จำนวนคาบรายแถว / จำนวนแถวสะสม ตามลำดับ ระวัง: Log ส่งไม่ได้ไม่แปลว่างานไม่ได้ทำ; ใช้ delta counter ภายในรอบที่ยืนยันได้ skipped/dropped · Polling Timing
-
observed / declared / unknown — แยกสิ่งที่อ่านได้จากไฟล์ คำประกาศในใบกำกับ และสิ่งที่ไฟล์ยังไม่ยืนยัน หน่วย/บริบท: ชนิด/ขอบเขตหลักฐาน ไม่ใช่หน่วยตัวเลข ระวัง: แฮชตรงยืนยันความตรงกันของไบต์ แต่ไม่ยืนยัน capture ครบหรือผลบอร์ดจริง ขอบเขตหลักฐาน · ที่มา Log
คำแนะนำ: ชื่อ field เดียวกันอาจวัดคนละช่วงในแต่ละชุด โดยเฉพาะ work_us และ age_us ให้ถือ protocol กับจุดวัดเป็นหลัก ค่าตัวอย่างและ cutoff สำหรับฝึกยังไม่ใช่ requirement ของโดรนจริง
ดาวน์โหลด คำศัพท์ MCU 12 รายการ CSV, แบบจดความหมายหนึ่งคอลัมน์ และ คู่มือคำศัพท์ ตรวจ ที่มาและแฮชบทต้นทาง กับ manifest รายชุด
นิยามเฉพาะชุดอ้างบทที่เชื่อมไว้ ส่วน API พื้นฐานตรวจประกอบจากเอกสาร Espressif ทางการ: GPIO, ADC และ LEDC/PWM ไม่สมมติ pinout ความละเอียด หรือขอบแรงดันเหมือนกันทุกบอร์ด
ตรวจข้อสรุปจากชุดฝึก
ฝึกเขียนข้อสรุปให้ตรงกับหลักฐาน ด้วยตัวอย่างพื้นฐาน ประยุกต์ และขั้นสูง พร้อมรายการตรวจหกข้อและแบบรายงานว่าง เพื่อระบุแถว หน่วย clock ขอบเขต และหลักฐานที่ยังต้องเก็บ