สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ดูวิดีโอ
- ขั้นตอนที่ 2: ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
- ขั้นตอนที่ 3: ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
- ขั้นตอนที่ 4: ซอฟต์แวร์: การติดตั้ง PlatformIO
- ขั้นตอนที่ 5: ซอฟต์แวร์: การใช้ PlatformIO
- ขั้นตอนที่ 6: การดีบัก: ผิวกล้วยที่มีศักยภาพ
- ขั้นตอนที่ 7: การดีบัก: การกำหนดค่า
- ขั้นตอนที่ 8: การดีบัก: การเริ่มต้นการดีบัก
- ขั้นตอนที่ 9: การดีบัก: การใช้งานพื้นฐาน
- ขั้นตอนที่ 10: การแก้ไขปัญหา
- ขั้นตอนที่ 11: บทสรุป
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
คุณเคยต้องการที่จะมองเข้าไปในโค้ดของคุณเพื่อดูว่าเหตุใดจึงทำงานในลักษณะที่เป็นอยู่? ตามเนื้อผ้าในโครงการ ESP32 คุณจะต้องเพิ่มคำสั่งการพิมพ์ไม่รู้จบเพื่อลองค้นหาว่าเกิดอะไรขึ้น แต่มีวิธีที่ดีกว่า!
ดีบักเกอร์เป็นวิธีหนึ่งในการดูว่าเกิดอะไรขึ้นในส่วนใดส่วนหนึ่งของโค้ดของคุณ และเพื่อลองใช้ค่าตัวแปรต่างๆ โดยไม่ต้องคอมไพล์โค้ดของคุณใหม่ โดยปกติแล้ว นี่ไม่ใช่สิ่งที่เราสามารถใช้ได้ในโปรเจ็กต์แบบฝัง แต่ในคู่มือนี้ ฉันจะแสดงให้คุณเห็น วิธีใช้งานบน ESP32
ในคู่มือนี้ ฉันจะแสดงให้คุณเห็นถึงการตั้งค่าฮาร์ดแวร์ ตั้งค่าซอฟต์แวร์ และแสดงตัวอย่างง่ายๆ ของการใช้ดีบักเกอร์
เสบียง
-
ESP-Prog - นี่คือบอร์ดที่จำเป็นสำหรับการดีบัก
- อันเดียวที่ฉันซื้อ*
- ถูกกว่า $ 5 แต่ฉันยังไม่ได้ทดสอบ *
-
ESP32 ที่แยกพิน 12, 13, 14, 15
- Adafruit Feather Huzzah32
- D1 มินิ ESP32*
-
[ไม่บังคับ] Debug Shield ที่ฉันขายใน Tindie
- Feather Huzzah32
- D1 มินิ ESP32
* = ลิงค์พันธมิตร
ขั้นตอนที่ 1: ดูวิดีโอ
ฉันมีวิดีโอเกี่ยวกับหัวข้อนี้หากคุณต้องการตรวจสอบ
ในช่องของฉัน ฉันมักจะสร้างวิดีโอที่ใช้ ESP8266 และ ESP32 ดังนั้น หากคุณสนใจในวิดีโอเหล่านั้น โปรดลองดู!
ขั้นตอนที่ 2: ฮาร์ดแวร์ - ชิ้นส่วนและสายไฟ
ในการใช้ดีบักเกอร์ คุณจะต้องใช้ ESP-Prog และบอร์ด ESP32 เกือบทั้งหมด (ลิงก์ไปยังสิ่งเหล่านี้ในขั้นตอนก่อนหน้า)
ESP-Prog:
ESP-Prog เป็นบอร์ดที่ออกแบบโดย espressif ซึ่งเป็นผู้ผลิตชิป ESP32 และ ESP8266 มันเชื่อมต่อกับหมุด JTAG ของ ESP32 เพื่อให้เราใช้ดีบักเกอร์ได้ นอกจากนี้ยังสามารถใช้สำหรับการเขียนโปรแกรมบอร์ด ESP32 ได้อีกด้วย แต่ฉันจะไม่กล่าวถึงที่นี่
บอร์ด ESP32:
โดยพื้นฐานแล้วคุณสามารถใช้บอร์ด ESP32 ใดก็ได้สำหรับสิ่งนี้เมื่อแยกหมุด JTAG ซึ่งก็คือ 12, 13, 14 และ 15 ฉันได้ทดสอบทั้ง Adafruit feather Huzzah32 และบอร์ด D1 Mini 32 แล้วและทั้งคู่ก็ทำงานได้ดี
โปรดทราบว่าคุณสามารถใช้หมุด JTAG ในแบบร่างของคุณกับดีบักเกอร์ได้ ตัวอย่างเช่น LED ในตัวของบอร์ด Huzzah32 อยู่ที่พิน 13 ดังนั้นคุณจึงไม่สามารถใช้งานได้ในขณะที่ทำการดีบั๊ก
การเดินสายไฟ:
ในการเชื่อมต่อ ESP-Prog กับ ESP32 เพียงใช้คู่มือการเดินสายตามที่ให้ไว้ในภาพด้านบน ตรวจสอบแผนภาพการเดินสายไฟของบอร์ด ESP32 หากคุณไม่เห็นหมุดที่เหมาะสมในทันที เนื่องจากบางครั้งหมุดใช้รูปแบบการตั้งชื่อที่ต่างออกไป
ดีบักโล่:
สิ่งเหล่านี้เป็นทางเลือก แต่ฉันขายเกราะป้องกันบน Tindie สำหรับ Huzzah32 และ D1 Mini 32 ที่ทำให้การเชื่อมต่อ ESP-Prog เป็นเรื่องง่ายมาก มันแยกพินที่เหมาะสมกับตัวเชื่อมต่อ IDC ซึ่งคุณสามารถใช้สายแพเพื่อเชื่อมต่อโดยตรงระหว่าง โล่และ ESP-Prog
ขั้นตอนที่ 3: ฮาร์ดแวร์ - การติดตั้งไดรเวอร์
เพื่อที่จะใช้ ESP-prog สำหรับการดีบัก เราจำเป็นต้องติดตั้งไดรเวอร์ที่เหมาะสมสำหรับมัน PlatformIO มีขั้นตอนบางอย่างสำหรับเรื่องนี้ แต่ฉันจะทำตามขั้นตอนของ Windows ในคู่มือนี้
- ดาวน์โหลดและติดตั้งไดรเวอร์ FTDI สำหรับ ESP-Prog จากที่นี่ เลื่อนไปทางขวาเพื่อดาวน์โหลดเวอร์ชัน "ปฏิบัติการตั้งค่า" เพื่อให้ง่ายขึ้น
- ดาวน์โหลดและติดตั้งเครื่องมือ Zadig จากที่นี่ ซึ่งช่วยให้เราติดตั้งไดรเวอร์ทั่วไปที่จำเป็นสำหรับการดีบักได้
- เมื่อเสียบปลั๊ก ESP-Prog แล้ว ให้เปิด Zadig
- ในแอปพลิเคชัน Zadig ในส่วน "ตัวเลือก" ให้คลิก "แสดงรายการอุปกรณ์ทั้งหมด"
- เมนูแบบเลื่อนลงใน Zadig จะถูกเติม เลือกตัวเลือก "Dual RS232-HS (อินเทอร์เฟซ 0)" ตรวจสอบให้แน่ใจว่าเป็นอินเทอร์เฟซ 0 ที่คุณเลือก!
- ทางด้านขวาของลูกศรสีเขียว ควรเลือก "WinUSB" จากนั้นคลิก "แทนที่ไดรเวอร์"
เมื่อเสร็จแล้วไดรเวอร์ของคุณควรได้รับการตั้งค่าสำหรับการใช้งาน!
หมายเหตุ: หากคุณเปลี่ยนพอร์ต USB ที่คุณใช้สำหรับ ESP-Prog คุณอาจต้องทำซ้ำขั้นตอนที่ 3-6 อีกครั้ง หากคุณได้รับข้อผิดพลาดตามที่แสดงในภาพด้านบนเมื่อทำการดีบั๊ก คุณต้องทำตามขั้นตอนซ้ำ
ขั้นตอนที่ 4: ซอฟต์แวร์: การติดตั้ง PlatformIO
PlatformIO เป็น IDE สำหรับการพัฒนาด้วยเฟรมเวิร์กฝังตัวต่างๆ รวมถึงระบบนิเวศ Arduino การใช้งานมีความซับซ้อนมากกว่าบางอย่างเช่น Arduino IDE แต่มีประสิทธิภาพมากและมีคุณสมบัติบางอย่างที่ Arduino IDE พลาดอย่างมาก เช่น การเติมข้อความอัตโนมัติ
จำเป็นต้องใช้ PlatformIO เพื่อใช้ดีบักเกอร์ หากคุณคุ้นเคยกับ PlatformIO อยู่แล้ว ข้ามไปสองสามขั้นตอนได้เลย
- ดาวน์โหลดและติดตั้ง Visual Studio Code (VS Code) จากลิงค์ที่ให้ไว้บนเว็บไซต์ PlatformIO.org
- เปิด VS Code และเปิดเมนูส่วนขยาย ปุ่มจะถูกเน้นในภาพด้านบน
- พิมพ์ "platformio" ในการค้นหา เลือกแล้วคลิกติดตั้ง
ขั้นตอนที่ 5: ซอฟต์แวร์: การใช้ PlatformIO
การใช้ PlatformIO นั้นแตกต่างจากการใช้ Arudino IDE เล็กน้อย ดังนั้นในขั้นตอนนี้ เราจะครอบคลุมถึงพื้นฐานของการเรียกใช้ตัวอย่างบนบอร์ด
การเปิดตัวอย่าง:
- คลิกปุ่มโฮมบนแถบเครื่องมือ PlatformIO (ดังแสดงในภาพ)
- คลิกปุ่ม "ตัวอย่างโครงการ"
- เลือกตัวอย่าง "Arduino-blink" ใต้ส่วน Espressif 32
ซึ่งจะเปิดตัวอย่างโครงการกะพริบตา เลย์เอาต์ของ PlatformIO ค่อนข้างแตกต่างเมื่อเทียบกับโปรเจ็กต์ Arduino ดังนั้นเรามาทำความเข้าใจพื้นฐานกัน
รหัสอยู่ที่ไหน
รหัสสำหรับโครงการของคุณจะถูกเก็บไว้ในโฟลเดอร์ "src" สำหรับตัวอย่างการกะพริบคุณจะเห็นไฟล์ "blink.cpp" ไฟล์นี้จะเหมือนกับไฟล์สเก็ตช์ของคุณ (.ino) ในโครงการ Arduino
ฉันจะกำหนดค่าบอร์ดของฉันได้อย่างไร?
การกำหนดค่าสำหรับโครงการของคุณจะถูกเก็บไว้ในไฟล์ "platformio.ini" ในโครงการของคุณ นี่เป็นหนึ่งในสิ่งที่ฉันโปรดปรานเกี่ยวกับ PlatformIO เมื่อเทียบกับ Arduino IDE ฉันไม่เคยคิดว่าการตั้งค่าบอร์ดไม่ได้ผูกติดอยู่กับการสเก็ตช์
ตัวอย่าง.ini มีคำจำกัดความสำหรับกระดานต่างๆ แต่เพื่อให้ง่ายขึ้น เรามาลบคำจำกัดความสองรายการด้านล่าง
ฉันจะตั้งค่าพอร์ต COM ได้ที่ไหน
PlatformIO จะพยายามค้นหาพอร์ต COM ที่ถูกต้องโดยอัตโนมัติเพื่อใช้งาน คุณจึงไม่ต้องตั้งค่าอะไรเลย แต่ถ้าคุณมีพอร์ต COM หลายพอร์ต ซึ่งคุณจะทำได้เมื่อใช้ดีบักเกอร์ ฉันคิดว่าควรตั้งค่าพอร์ตเฉพาะที่คุณต้องการ คุณสามารถดูอุปกรณ์ต่างๆ ที่คุณมีได้โดยคลิกส่วน "อุปกรณ์" ในแท็บหน้าแรก และ คุณสามารถตั้งค่าให้ ESP32 ของคุณอยู่ใน "platformio.ini" โดยเพิ่มการกำหนดค่า "upload_port"
ฉันจะอัปโหลดรหัสของฉันได้อย่างไร
คลิกที่ปุ่มอัปโหลด (ไอคอนเป็นลูกศรชี้ไปทางขวา) และควรรวบรวมและอัปโหลดโค้ด ตอนนี้คุณควรมีไฟ LED กะพริบบนบอร์ดของคุณ
ขั้นตอนที่ 6: การดีบัก: ผิวกล้วยที่มีศักยภาพ
นี่คือสิ่งที่ดึงดูดใจฉันตอนที่ฉันกำลังเตรียมสิ่งนี้ และหวังว่าจะได้รับการแก้ไขเมื่อคุณลองทำ แต่ฉันคิดว่ามันสำคัญที่ต้องออกจากที่นี่
ในขณะที่จัดทำคู่มือนี้ PlatformIO เวอร์ชันล่าสุดคือ 4.3.0 และมีข้อบกพร่องที่เกี่ยวข้องกับความสามารถในการแก้ไขข้อบกพร่อง โชคดีที่เราสามารถอัปเดตเป็นเวอร์ชันการพัฒนาล่าสุดได้อย่างง่ายดายซึ่งช่วยแก้ปัญหาได้
ตรวจสอบโฮมเพจเวอร์ชันของ Core PlatformIO หากเป็น "4.3.0" ให้ทำตามขั้นตอนต่อไปนี้
- บนแถบเครื่องมือ PlatformIO คลิกไอคอนเทอร์มินัล
- ในประเภทเทอร์มินัล: pio upgrade --dev
- ควรอัปเดตโค้ด RestartVS และ PlatfromIO
ขั้นตอนที่ 7: การดีบัก: การกำหนดค่า
เราจำเป็นต้องแก้ไขไฟล์ "PlatofrmIO.ini" เพื่อเปิดใช้งานการดีบัก เราจำเป็นต้องเพิ่มสองสิ่งเข้าไปเท่านั้น
debug_tool = esp-prog
นี่เป็นชุดเครื่องมือดีบั๊กที่เรากำลังใช้
debug_init_break = ตั้งค่า tbreak
นี่เป็นเคล็ดลับที่เราได้เรียนรู้จากวิดีโอของ Andress Spiess เกี่ยวกับการดีบักบน ESP32 มันบอกให้ดีบักเกอร์หยุดในการตั้งค่าแอปพลิเคชันของเรา
ขั้นตอนที่ 8: การดีบัก: การเริ่มต้นการดีบัก
ก่อนที่เราจะพูดถึงเรื่องนี้ เราจะทำการเปลี่ยนแปลงเล็กน้อยกับภาพสเก็ตช์ ซึ่งจะทำให้ง่ายต่อการสาธิตว่าคุณสามารถทำอะไรกับการดีบักได้บ้าง
- สร้างตัวแปรใหม่ "int delayTime = 1000;" นอกเหนือจากวิธีการใด ๆ สิ่งนี้จะทำให้เป็นตัวแปรส่วนกลาง
- แทนที่ตัวเลขภายในการเรียกล่าช้าในลูปด้วยตัวแปรใหม่นี้: delay(delayTime);
อัปโหลดโค้ดไปที่บอร์ดอีกครั้ง จากนั้นเพื่อเริ่มการดีบัก ในแถบเครื่องมือ คลิก "เรียกใช้" จากนั้น "เริ่มการดีบัก"
คุณจะเห็นสิ่งต่าง ๆ เคลื่อนไหวในหน้าต่างเทอร์มินัล แต่ถึงแม้จะระบุว่าสำเร็จแล้ว หากคุณคลิกที่ "คอนโซลดีบัก" คุณจะเห็นว่ามันยังคงทำงานอยู่ จะใช้เวลาสองสามวินาทีในการดำเนินการให้เสร็จสิ้น
หากทุกอย่างเป็นไปตามที่คาดไว้ คุณจะเห็นดีบักเกอร์หยุดทำงานเมื่อเริ่มต้นการตั้งค่า
ขั้นตอนที่ 9: การดีบัก: การใช้งานพื้นฐาน
มาพูดถึงพื้นฐานบางอย่างของสิ่งที่คุณสามารถทำได้ด้วยดีบักเกอร์กัน
การสร้างเบรกพอยต์:
เบรกพอยต์เป็นจุดของรหัสที่คุณต้องการให้ดีบักเกอร์หยุด หากต้องการสร้างเบรกพอยต์ ให้คลิกที่ด้านซ้ายของหมายเลขบรรทัด ในการสาธิต ให้เพิ่มเบรกพอยต์ที่บรรทัดแรกในวิธีวนซ้ำ
การนำทางเบรกพอยต์:
หากต้องการย้ายไปมาระหว่างจุดพักหรือย้ายไปยังบรรทัดถัดไปของโค้ด คุณสามารถใช้เครื่องมือที่จะปรากฏที่ด้านบนของหน้าจอได้ กดปุ่ม "ดำเนินการต่อ" (ดูเหมือนปุ่มเล่น) เพื่อย้ายจุดพักที่เราเพิ่งสร้างขึ้นภายในลูป
นาฬิกาตัวแปร:
นาฬิกาตัวแปรช่วยให้คุณตรวจสอบค่าของตัวแปรได้เมื่อดีบักเกอร์หยุดที่จุดพัก หากต้องการเพิ่มนาฬิกาตัวแปรใหม่ คุณสามารถคลิกที่ไอคอน + จากนั้นพิมพ์ชื่อของตัวแปร ในการสาธิต ให้พิมพ์ตัวแปรที่เราเพิ่มในขั้นตอนก่อนหน้า "delayTime"
โปรแกรมดูตัวแปร:
คุณยังสามารถดูตัวแปรทั้งหมดและค่าของตัวแปรที่มีอยู่ที่เบรกพอยต์ปัจจุบันของคุณได้ หากต้องการสาธิตสิ่งนี้ หากคุณดูในส่วน "สากล" คุณจะพบตัวแปร "delayTime"
การแก้ไขค่าของตัวแปร:
คุณยังสามารถแก้ไขค่าของตัวแปรได้ และจะมีผลกับพฤติกรรมโค้ดของคุณทันที เพื่อแสดงสิ่งนี้ ให้คลิกที่ตัวแปร delayTime ในส่วน Variable Viewer และเปลี่ยนค่าเป็น "100" หากต้องการแสดงการทำงานนี้ ให้ปิดใช้งานเบรกพอยต์ภายในลูปโดยคลิกทางด้านซ้ายของหมายเลขบรรทัดอีกครั้ง กดปุ่มดำเนินการต่อบนแถบนำทางของเบรกพอยต์ ไฟ LED บน ESP32 ของคุณควรกะพริบเร็วกว่าเมื่อก่อนมาก
ขั้นตอนที่ 10: การแก้ไขปัญหา
ฉันพบว่าระหว่างการทดสอบ บางครั้งฉันไม่สามารถอัปโหลดไปยัง ESP32 ในขณะที่เชื่อมต่อกับ ESP-prog และฉันไม่สามารถหารูปแบบที่ว่าทำไมสิ่งนี้ถึงเกิดขึ้น เพราะโดยส่วนใหญ่แล้วฉันสามารถอัปโหลดได้โดยไม่ต้อง ปัญหาใดๆ ฉันพบว่าฉันสามารถยกเลิกการเชื่อมต่อ ESP32 และ ESP-Prog ได้ อัปโหลดรหัสไปยัง ESP32 แล้วเชื่อมต่อใหม่อีกครั้ง และมันจะทำงานได้ดี
ขั้นตอนที่ 11: บทสรุป
ฉันคิดว่านี่เป็นเครื่องมือที่ยอดเยี่ยมมากที่จะเพิ่มลงในกล่องเครื่องมือเพื่อช่วยในการค้นหาว่าเกิดอะไรขึ้นในโครงการของคุณ
ฉันชอบที่จะได้ยินถ้าคุณพบว่ามีประโยชน์! โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง หรือเข้าร่วมกับฉันและผู้ผลิตรายอื่นๆ บนเซิร์ฟเวอร์ Discord ของฉัน ที่ซึ่งเราสามารถพูดคุยเกี่ยวกับหัวข้อนี้หรือผู้ผลิตรายอื่นๆ ที่เกี่ยวข้องกับสิ่งที่คุณมี ผู้คนช่วยเหลือดีที่นั่น จึงเป็นที่ที่ดี ออก.
ฉันยังอยากจะขอบคุณมากสำหรับผู้สนับสนุน Github ของฉันที่ช่วยสนับสนุนสิ่งที่ฉันทำ ฉันรู้สึกซาบซึ้งจริงๆ หากคุณไม่ทราบ Github กำลังจับคู่การสนับสนุนสำหรับปีแรก ดังนั้นหากคุณเป็นผู้สนับสนุน พวกเขาจะจับคู่ 100% ในอีกไม่กี่เดือนข้างหน้า ขอบคุณที่อ่าน!