วัตถุประสงค์และสถานะ
คู่มือนี้เตรียมการทดลองบนโต๊ะเพื่อศึกษาปุ่ม LED การจัดเวลา และที่มาของ Log ก่อนนำแนวคิดไปศึกษาระบบโดรน เลือกทำกับบอร์ดที่มีและตรงชุดอ้างอิงทีละรุ่น ไม่ต้องมีอากาศยาน ไม่ต่อ ESC/มอเตอร์หรือใบพัดในชุดฝึกนี้
สถานะ: โค้ดอ้างอิงและผลตรวจบน PC อยู่ในบทเดิม คู่มือ/ใบงานพร้อมใช้ แต่ยังไม่มี upload, การวัดแรงดัน/สัญญาณ/IRQ latency/timing บนบอร์ดจริง หรือผลทดลองผู้เรียนในรอบนี้ ช่องผลการวัดเว้นว่างไว้ ไม่ใช้ผล compile, ข้อมูลสังเคราะห์ หรือ SITL กรอกแทน
ใบงานบอร์ดจริง (CSV) · แม่แบบเตรียมรอบ (JSON) · คำอธิบายช่องบันทึก · รายการชุดอ้างอิงและแฮช
เตรียมก่อนต่อบอร์ด
- อ่าน บทพื้นฐาน หรือ STM32 และงบเวลา ตามรุ่นที่เลือก ตรวจความเข้าใจด้วย แบบประเมิน
- บันทึกชื่อบอร์ด/ชิป/board revision และ pinout จากผู้ผลิต GPIO number ไม่ใช่ตำแหน่งขาบนแผงเสมอไป ตรวจระดับแรงดัน การจ่ายไฟ jumper และ connector ตามรุ่นจริง
- เลือก ZIP และ core ตามรายการด้านล่าง เก็บต้นฉบับ เทียบ SHA ของ ZIP/ไฟล์กับ manifest แล้วบันทึกเวอร์ชันเครื่องมือ target และ options ผล compile ใหม่เป็นของเครื่องผู้ทดลอง ไม่ใช่ผลอ้างอิงเดิม
- วาด wiring ก่อนต่อ เก็บภาพวงจรจริงที่อ่านชื่อขาได้ ตรวจโดยยังไม่จ่ายไฟ ใช้สาย USB ส่งข้อมูลและวิธีจ่ายไฟตามคู่มือบอร์ด หลีกเลี่ยงการต่อแหล่งจ่ายหลายทางโดยไม่ตรวจวงจร
- ตั้งชื่อรอบและแยกโฟลเดอร์ เตรียมวิธีหยุด/ถอดไฟและอุปกรณ์วัดที่เหมาะกับสัญญาณที่จะศึกษา ชื่อรอบที่เขียนเองยังไม่ใช่ boot identity ที่อุปกรณ์ยืนยัน
เวลาที่เสนอสำหรับเตรียมและอ่านคู่มือ 30 นาที ทดลอง LED/input 45–60 นาทีต่อบอร์ด หรือวางแผน STM32 Log 60–90 นาที เป็นเวลาเสนอ ไม่ใช่ผลวัดกับผู้เรียน
เส้นทาง A: UNO R3 กับปุ่มและ LED
จุดฝึก: อ่าน raw/stable input พร้อมจัดเวลาโดยไม่รอค้าง ใช้ ชุด UNO input/debounce เป้าหมาย arduino:avr:uno, AVR core 1.8.8 ตามผลอ้างอิง ไม่เหมารวม UNO R4 หรือบอร์ดชื่อคล้ายกัน
- เปิด sketch/header ของชุดเดียวกันและ Verify ก่อนต่อบอร์ด บันทึก source SHA/core/target/options และข้อความ compiler ของตนเอง
- เมื่อมี UNO R3 ตรวจคู่หน้าสัมผัสปุ่ม ต่อ D2 → ปุ่มชั่วขณะ → GND ตามภาพ ใช้
INPUT_PULLUP, LOW เมื่อกด เริ่มโดยไม่จ่ายไฟ แล้วตรวจ USB/พอร์ตและ upload ตามคู่มือ - เปิด Serial 115200 baud เก็บ
millis,raw_pressed,stable_pressed,eventจากการกด/ปล่อยปกติ สังเกตว่า raw กับ stable เปลี่ยนต่างกันอย่างไร และ event เกิดเมื่อ stable เปลี่ยน - หากจะพิสูจน์ขอบ 30 ms ต้องมีสัญญาณทดสอบและวิธีวัดความกว้างพัลส์ที่ทราบ ไม่ใช้ความรู้สึกว่า “กดเร็ว” แทนตัวเลขเวลา
- เปลี่ยนงานพิมพ์ข้อความทีละปัจจัย เก็บกรณีฐานและกรณีเปลี่ยนแยกกัน ช่วงรายงานประมาณ 200 ms/LED ประมาณ 500 ms เป็นเป้าหมายของโปรแกรม ต้องวัดของจริงก่อนสรุป
ตรวจงาน: wiring/รุ่นตรง 1, raw/stable/event มีไฟล์ดิบ 1, ระบุ clock/จุดวัด 1, จำกัดข้อสรุปให้ตรงสิ่งที่สังเกต 1 คะแนน หากวัดเพียงเวลารายงาน Serial ยังไม่ได้ยืนยันคาบ LED ที่ขาสัญญาณ
เส้นทาง B: classic ESP32 กับ GPIO ที่ระบุชัด
จุดฝึก: ย้ายแนวคิดเดียวกันโดยตรวจขาและแรงดันใหม่ ใช้ ชุด ESP32 input/debounce target esp32:esp32:esp32, Arduino-ESP32 core 3.3.12 ตามผลอ้างอิง ไม่ครอบคลุม ESP32-C3/S3
- ตรวจว่าบอร์ด classic ที่มีนำ GPIO25/27 ออกมา และ Verify sketch/header ตรงชุดก่อน upload
- ต่อโดยยังไม่จ่ายไฟ: GPIO27 → ปุ่ม → GND (
INPUT_PULLUP), GPIO25 → 330 Ω → anode LED, cathode → GND ตรวจทิศ LED/หน้าสัมผัสปุ่ม/กราวด์ตาม pinout จริง - ใช้ logic 3.3 V ของชุดนี้ ไม่ต่อสัญญาณ 5 V จาก UNO เข้าขา ESP32 และไม่สมมติ LED บนบอร์ดแทน LED ภายนอกที่ตัวอย่างกำหนด
- เมื่อพร้อมจึง upload ตามคู่มือรุ่นจริง เปิด Serial 115200 baud เก็บข้อมูลและเปรียบเทียบการกด/ปล่อย/งานพิมพ์แบบเส้นทาง A ชุดนี้ไม่เปิด Wi-Fi/Bluetooth
ตรวจงาน: ระบุบอร์ด/pinout/core 1, wiring/แรงดันตรง 1, ข้อมูลพร้อมเวลาและกรณีฐาน 1, แยกข้อสรุปจาก host tests/compile 1 คะแนน รุ่นอื่นต้องมี target/pinout และผลตรวจใหม่
เส้นทาง C: NUCLEO-F446RE และขอบเขต Log
จุดฝึก: ศึกษา callback → FIFO → freshness gate → task/log ใช้ ชุด STM32 data freshness, target STMicroelectronics:stm32:Nucleo_64:pnum=NUCLEO_F446RE, STM32duino 3.0.0 ตามผลอ้างอิง อ่าน Timer Interrupt และ คิวข้อมูล ก่อน
- ตรวจ NUCLEO-F446RE/MB1136 และ connector/jumper/การจ่ายไฟจากคู่มือ revision ที่มี บอร์ด Nucleo มี ST-LINK สำหรับโปรแกรม/debug แต่ยังต้องตรวจ driver/พอร์ต/การตั้งค่าที่ตรงรุ่น หากใช้ core/SDK ต่างจากชุดอ้างอิง ให้บันทึกรุ่นและตรวจใหม่ แยกผลจากรายงานเดิม
- Verify sketch/header ชุดเดิมก่อน upload เมื่อมีบอร์ดพร้อมเท่านั้น TIM2 requested 100 Hz เป็นค่าที่ตั้งในโค้ด ไม่ใช่อัตราที่วัดจากบอร์ดในเว็บนี้
- วางแผนเก็บ CSV หกช่องตามสัญญา:
tick,age_us,work_us,state,overflow,droppedระบุจุด callback/main ที่ใช้ timestamp, การ reset และช่วงเริ่ม–จบบันทึก เก็บข้อมูลดิบไม่แก้ line endings หลังแฮช - อ่านด้วย เครื่องมือ Log บนเว็บ ถ้าอยู่ในขอบ 1 MB/10,000 แถว หรือใช้ analyzer ตามคู่มือชุดเต็มที่รองรับขอบเขตต่างกัน ไฟล์ที่ผ่านรูปแบบยังไม่พิสูจน์ว่า capture ครบ
- อ่าน ที่มาและขอบเขต Log เพื่อทำ sidecar ตาม schema ของชุดนั้น
origin=user-suppliedเป็นคำประกาศของผู้จัดทำ ไม่ใช่การยืนยันบอร์ดอัตโนมัติ แม่แบบเตรียมรอบในบทนี้เป็นคนละรูปแบบและส่งเข้า validator นั้นไม่ได้ - หากต้องวัด IRQ latency หรือคาบจริง ให้กำหนด reference event และจุดวัดบน clock ที่สัมพันธ์กัน ระบุ resolution/uncertainty ของเครื่องมือ พร้อมผลกระทบจาก instrumentation การเพิ่ม probe/GPIO ใน sketch เป็น source ใหม่ที่ต้องตรวจ compile และผลจริงใหม่ อย่าเรียก callback age ว่า IRQ latency
ตรวจงาน: รุ่น/source/core 1, clock/measurement points 1, raw bytes/hash/capture boundary 1, ข้อจำกัด boot/capture/instrumentation 1 คะแนน ไม่มีเกณฑ์รับรองการบินจาก cutoff 20,000 µs หรืองบงาน 2,000 µs ของโจทย์
เริ่มทดลองไม่ผ่าน: แยกปัญหาทีละขั้น
วัตถุประสงค์: หาว่าติดที่โค้ด เครื่องมือ การเชื่อมต่อ หรือรูปแบบข้อมูล ก่อนเปลี่ยนหลายอย่างพร้อมกัน เริ่มอ่านและทำ Verify ได้โดยไม่ต่อบอร์ด ขั้นพอร์ต/upload/สัญญาณต้องรออุปกรณ์จริง คู่มือนี้เป็นแนวทางวินิจฉัย ไม่ได้รายงานว่าแก้ปัญหาบอร์ดจริงสำเร็จแล้ว
เลือกอาการด้านล่าง แล้วใช้ แบบบันทึกปัญหา (Markdown) เก็บรุ่น เครื่องมือ error และสิ่งที่เปลี่ยนทีละอย่าง ดู แฮชไฟล์ดาวน์โหลด ผลเริ่มต้นเป็น not-run; เมื่อลองจริงแล้วแต่ยังปิดปัญหาไม่ได้ ใช้ needs-validation พร้อมหลักฐาน
Verify ไม่ผ่าน หรือพบ header ไม่ครบ
เปิด sketch พร้อมไฟล์ .h ของ ZIP เดียวกัน ตรวจชื่อโฟลเดอร์/ไฟล์และ target/core ที่ระบุในเส้นทาง A–C ก่อนกด Verify เก็บ console ฉบับเต็มแล้วอ่าน error ที่เกี่ยวข้องกับ source/header ก่อนข้อความสรุปท้ายสุด อย่าแก้ด้วยการเปลี่ยนบอร์ดหรืออัปเกรดทุก library พร้อมกัน ถ้าเปลี่ยน core ให้จดเป็นเงื่อนไขใหม่ ไม่เทียบเป็นผลอ้างอิงเดิม ดู แนวตรวจ compilation ของ Arduino
เกณฑ์ผ่านขั้นนี้: Verify สำเร็จสำหรับ source/target/options ที่บันทึกไว้ ยังไม่ยืนยันว่า upload หรือวงจรทำงาน
ไม่พบพอร์ต หรือพอร์ตถูกใช้งาน
เมื่อมีบอร์ด ใช้สาย USB ที่ส่งข้อมูลได้ ตรวจ connector ของรุ่นจริงและลองต่อตรงกับคอมพิวเตอร์ เปรียบเทียบรายการพอร์ตเมื่อถอด/เสียบบอร์ด แล้วเลือกพอร์ตที่เปลี่ยนจริง ไม่เลือก COM หมายเลขสูงสุดโดยเดา หากพอร์ตถูกจับไว้ ให้ปิด Serial Monitor/terminal ของงานนั้นก่อนลองใหม่ การเลือก Board กำหนดวิธี compile ส่วน Port ระบุอุปกรณ์จริง เป็นคนละค่า ตาม คำอธิบาย board/port ของ Arduino
เกณฑ์ผ่านขั้นนี้: ตรวจพบและเลือกอุปกรณ์ที่ตรงรุ่น พร้อมบันทึกพอร์ต ณ รอบทดลอง การเห็นพอร์ตยังไม่ยืนยันผล upload
Upload ไม่สำเร็จ: ตรวจตามรุ่น
- UNO R3: ทบทวน board/port และสายข้อมูล ปิดโปรแกรมที่ใช้พอร์ต ตรวจอุปกรณ์ที่ต่อ D0/RX หรือ D1/TX ซึ่งอาจรบกวนการส่งข้อมูล เริ่มทดสอบ upload ด้วยการต่อขั้นต่ำตามคู่มือ เก็บ error ของ
avrdudeก่อนสรุปสาเหตุ ดู Arduino: ตรวจ upload และ avrdude สำหรับ UNO - Classic ESP32: ถ้าเชื่อมต่อไม่สำเร็จ ตรวจสาย/ไฟ/พอร์ตและสิ่งที่ต่อ TX/RX ก่อน จากนั้นตรวจวิธีเข้า download mode ด้วย BOOT/EN ของบอร์ดที่มีตาม Espressif troubleshooting ไม่ใช้ตำแหน่งปุ่มหรือวิธีของ C3/S3 แทนกัน และไม่เริ่มดัดแปลงวงจร reset จากอาการเดียว
- NUCLEO-F446RE: แยกพอร์ต Serial ที่อ่านข้อมูลออกจากวิธีโปรแกรมด้วย ST-LINK/SWD ตรวจเมนู Upload Method และเครื่องมือที่ต้องใช้ วิธี STM32CubeProgrammer (SWD) ต้องมี CubeProgrammer ที่เครื่องมือค้นพบได้ตาม STM32duino upload methods ผล ARM compile ในเว็บไม่ได้ตรวจการติดตั้งโปรแกรมนี้หรือผล upload บนเครื่องผู้ทดลอง
เกณฑ์ผ่านขั้นนี้: เครื่องมือ upload รายงานสำเร็จและมี console ของรอบนั้น เก็บเวอร์ชัน/วิธี upload ร่วมกับ source hash ยังต้องตรวจการทำงานของโปรแกรมแยกต่างหาก
Serial ว่าง อ่านไม่ออก หรือดูเหมือนเวลาผิด
สำหรับชุด UNO และ classic ESP32 ในบทนี้ ตั้ง monitor ให้ตรง Serial.begin(115200) ของ source ตรวจพอร์ตหลัง reset และดูว่าโปรแกรมเปิดส่งข้อความแล้วหรือยัง ค่า baud ของ monitor กับ upload speed เป็นคนละการตั้งค่า ส่วน STM32 ต้องตรวจ serial routing/connector และ board options ของชุดนั้น ไม่สมมติว่าทุก USB connector เป็นเส้นทางข้อความเดียวกัน
เก็บหลายบรรทัดพร้อมช่วงเริ่ม–จบและการ reset ถ้ามี เวลาเรียงต่อเนื่องจาก Serial ยังไม่พิสูจน์คาบ LED หรือ IRQ latency เพราะเวลาบน host กับ timestamp ใน MCU ต่าง clock กัน เมื่อข้อความเพิ่มแล้วงานช้า ให้ทำกรณีฐานและกรณีเปลี่ยนแยกกันตาม บทงบเวลา
LED หรือปุ่มไม่ตรงกับที่คาด
ถอดไฟก่อนตรวจ wiring ทิศ LED ตัวต้านทานและคู่หน้าสัมผัสปุ่ม เทียบกับภาพวงจรในเส้นทาง A/B ชุด UNO ใช้ D2 ส่วน classic ESP32 ใช้ GPIO27 และ LED ภายนอก GPIO25; GPIO number ต้องเทียบ pinout ของบอร์ดจริง อ่าน raw/stable/event ให้ตรง INPUT_PULLUP ซึ่ง LOW เมื่อกด อย่าตีความปุ่มที่กดเร็วด้วยมือว่าเป็นการวัดขอบ debounce 30 ms
เกณฑ์ผ่านขั้นนี้: อธิบายวงจรและไฟล์ raw/stable/event ที่เก็บจริงได้ ถ้าต้องสรุปคาบหรือ threshold ต้องมีจุดวัด clock และความละเอียดที่รองรับ
เครื่องมือ Log บนเว็บปฏิเสธไฟล์
เครื่องมือเว็บรับ CSV STM32 หกช่อง tick,age_us,work_us,state,overflow,dropped ไม่รับ CSV ปุ่มสี่ช่องของ UNO/ESP32 หรือ JSON เหตุการณ์ SITL อย่าเปลี่ยนชื่อ header ให้ผ่านโดยไม่เปลี่ยนความหมาย หากเกิน 1,000,000 bytes หรือ 10,000 แถว ให้ใช้ analyzer ของชุดเต็มตามคู่มือของมัน เก็บต้นฉบับไว้และระบุ window ถ้าตัดช่วงบันทึก
อ่านข้อความผิดพลาดพร้อม ตัวอย่าง Log และขอบเขตเครื่องมือ การผ่านตัวตรวจรูปแบบยังไม่ยืนยัน capture ครบ ที่มา boot หรือการทำงานจริงบนบอร์ด
บันทึกผลโดยไม่ข้ามระดับหลักฐาน
กรอกตามลำดับ สิ่งที่คาดจากโค้ด → สิ่งที่สังเกตหรือวัด → หน่วย/clock/จุดวัด → ข้อสรุปที่รองรับ → สิ่งที่ยังไม่ได้ตรวจ เก็บ source hash, firmware/build output hash ถ้ามี, รูป wiring, รุ่นเครื่องมือ, ไฟล์ดิบ และ protocol ที่เปลี่ยนทีละปัจจัยร่วมกัน
ถ้าไม่ได้ทดลองให้ใช้ not-run; ถ้าลองแล้วแต่ข้อมูลไม่พอให้ใช้ needs-validation พร้อมบอกสาเหตุ ไม่เติมค่าเฉลยสังเคราะห์หรือเลขจาก compiler ลงช่องผลวัดจริง การเปลี่ยนรุ่น/ไฟเลี้ยง/SDK/clock/วิธี probe ต้องบันทึกเป็นเงื่อนไขใหม่ก่อนเทียบผล
งานที่ยังรอ: อุปกรณ์ตรงรุ่น การ upload/วัดจริง การตรวจสัญญาณและเวลา และการทดลองกับผู้เรียน ส่วนนี้ต้องเก็บหลักฐานจริงก่อนอัปเดตสถานะเว็บ ไม่มีการทดลองดังกล่าวในรอบจัดทำคู่มือ
แหล่งอ้างอิงและเรียนต่อ
ตรวจแหล่งทางการวันที่ 2 ตุลาคม 2026 ใช้เพื่ออ่าน pinout/API/คู่มือ แต่ผล compile เดิมยังตรึง core ที่ระบุ
- Arduino UNO R3: pinout และเอกสาร
- Espressif: GPIO API และข้อจำกัดตามบอร์ด
- ST: NUCLEO-F446RE และเอกสารบอร์ด
กลับภาพรวมสามระดับ · กิจกรรม Sim/SITL ก่อนมีบอร์ด · ตรวจความเข้าใจ