บอร์ดพัฒนา ESP32 Dev Kitc

ข้อมูลสินค้า

ข้อมูลจำเพาะ

  • ผลิตภัณฑ์: ESP32
  • คู่มือการเขียนโปรแกรม: ESP-IDF
  • เวอร์ชันที่วางจำหน่าย: v5.0.9
  • ผู้ผลิต: เอสเพรสซิฟ ซิสเต็มส์
  • วันที่วางจำหน่าย: 16 พฤษภาคม 2025

คำแนะนำการใช้ผลิตภัณฑ์

1. เริ่มต้น

ก่อนที่จะเริ่มต้นด้วย ESP32 ควรทำความคุ้นเคยกับ
กำลังติดตาม:

1.1 บทนำ

เรียนรู้เกี่ยวกับฟังก์ชันพื้นฐานและความสามารถของ
อีเอสพี32

1.2 สิ่งที่คุณต้องการ

ตรวจสอบให้แน่ใจว่าคุณมีฮาร์ดแวร์และซอฟต์แวร์ที่จำเป็น:

  • ฮาร์ดแวร์: ตรวจสอบรายการฮาร์ดแวร์ที่จำเป็น
    ส่วนประกอบ
  • ซอฟต์แวร์: ติดตั้งซอฟต์แวร์ที่จำเป็น
    ส่วนประกอบ

1.3 การติดตั้ง

ปฏิบัติตามขั้นตอนเหล่านี้เพื่อติดตั้ง IDE และตั้งค่า
สิ่งแวดล้อม:

  • ไอดี: ติดตั้ง IDE ที่แนะนำสำหรับ
    การเขียนโปรแกรม ESP32
  • การติดตั้งด้วยตนเอง: ตั้งค่าด้วยตนเอง
    สิ่งแวดล้อมหากจำเป็น

1.4 สร้างโครงการแรกของคุณ

สร้างและสร้างโครงการเริ่มต้นของคุณโดยใช้ ESP32

1.5 ถอนการติดตั้ง ESP-IDF

หากจำเป็น ให้เรียนรู้วิธีถอนการติดตั้ง ESP-IDF จาก
ระบบ.

2. เอกสารอ้างอิง API

ดูเอกสาร API เพื่อดูข้อมูลโดยละเอียด
โปรโตคอลแอปพลิเคชัน การจัดการข้อผิดพลาด และการกำหนดค่า
โครงสร้าง

คำถามที่พบบ่อย (FAQ)

ถาม: ฉันจะแก้ไขปัญหาทั่วไปของ ESP32 ได้อย่างไร

ก: ดูที่ส่วนการแก้ไขปัญหาในคู่มือการเขียนโปรแกรม
หรือเยี่ยมชมโรงงานผู้ผลิต webเว็บไซต์สำหรับทรัพยากรสนับสนุน

ถาม: ฉันสามารถใช้ ESP-IDF ร่วมกับไมโครคอนโทรลเลอร์อื่นได้หรือไม่

A: ESP-IDF ได้รับการออกแบบมาโดยเฉพาะสำหรับ ESP32 แต่คุณอาจพบว่า
ความเข้ากันได้กับไมโครคอนโทรลเลอร์ Espressif อื่นๆ

ESP32
คู่มือการเขียนโปรแกรม ESP-IDF
เผยแพร่ v5.0.9 Espressif Systems 16 พฤษภาคม 2025

สารบัญ

สารบัญ

i

1 เริ่มต้น

3

1.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 สิ่งที่คุณต้องการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 ฮาร์ดแวร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 ซอฟต์แวร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 การติดตั้ง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1 IDE. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 14

1.3.2 การติดตั้งด้วยตนเอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4 สร้างโครงการแรกของคุณ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.5 ถอนการติดตั้ง ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 อ้างอิง API

45

2.1 ข้อตกลง API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.1 การจัดการข้อผิดพลาด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.2 โครงสร้างการกำหนดค่า . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.3 API ส่วนตัว . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.4 ส่วนประกอบใน exampโครงการต่างๆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.5 เสถียรภาพ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.2 โปรโตคอลแอปพลิเคชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.1 พอร์ต ASIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 48

2.2.2 การสื่อสารผ่าน ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2.4 โปรโตคอลการสื่อสารแบบ ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.2.5 ไคลเอนต์ ESP HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.2.6 การควบคุม ESP ในพื้นที่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.2.7 ลิงก์สเลฟอนุกรม ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

2.2.8 ชุดใบรับรอง ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.2.9 เซิร์ฟเวอร์ HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.2.10 เซิร์ฟเวอร์ HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.2.11 การสื่อสารข้อมูลแบบ ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.2.12 บริการ mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.13 การโอนข้อมูลแบบ Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.14 เลเยอร์เครือข่าย IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3 API บลูทูธ . ...

2.3.1 บลูทูธ® ทั่วไป . ...

2.3.2 บลูทูธ® พลังงานต่ำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

2.3.3 บลูทูธ® แบบคลาสสิก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

2.3.4 ตัวควบคุมและ HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2.3.6 API โฮสต์ที่ใช้ NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

2.4 การอ้างอิงรหัสข้อผิดพลาด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

2.5 API การเชื่อมต่อเครือข่าย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.1 ไวไฟ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 776

2.5.2 อีเธอร์เน็ต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

2.5.3 เธรด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

i

2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 เลเยอร์เครือข่าย IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 ชั้นแอปพลิเคชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API อุปกรณ์ต่อพ่วง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 ไดร์เวอร์โหมด Oneshot ตัวแปลงอนาล็อกเป็นดิจิทัล (ADC) . . . . . . . . . . . . . . . . 977 2.6.2 ไดร์เวอร์โหมดต่อเนื่องตัวแปลงอนาล็อกเป็นดิจิทัล (ADC) . . . . . . . . . . . . . . 986 2.6.3 ไดรเวอร์การสอบเทียบตัวแปลงอนาล็อกเป็นดิจิทัล (ADC) . . . . . . . . . . . . . . . . . . 993 2.6.4 ต้นไม้นาฬิกา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 ตัวแปลงดิจิตอลเป็นแอนะล็อก (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO และ RTC GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 ตัวจับเวลาวัตถุประสงค์ทั่วไป (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 วงจรรวมระหว่างกัน (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 เสียงระหว่างไอซี (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 จอแอลซีดี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 การควบคุม LED (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 เครื่องปรับความกว้างพัลส์ควบคุมมอเตอร์ (MCPWM) . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 เครื่องนับชีพจร (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 เครื่องรับส่งสัญญาณควบคุมระยะไกล (RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 ข้อกำหนดการดึงขึ้น SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 ไดรเวอร์โฮสต์ SDMMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 ไดรเวอร์โฮสต์ SD SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 ไดรเวอร์สเลฟการ์ด SDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 การมอดูเลตซิกม่าเดลต้า (SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 ไดรเวอร์ SPI Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 ไดรเวอร์ SPI Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (องค์ประกอบที่ปลอดภัย) . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 เซ็นเซอร์สัมผัส . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 อินเทอร์เฟซยานยนต์สองสาย (TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 ตัวรับ/ตัวส่งสัญญาณอะซิงโครนัสสากล (UART) . . . . . . . . . . . . . . . . . 1317 2.7 การกำหนดค่าโครงการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 เมนูการกำหนดค่าโครงการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 การใช้ sdkconfig.defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 กฎการจัดรูปแบบ Kconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 ความเข้ากันได้แบบย้อนกลับของตัวเลือก Kconfig . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 การอ้างอิงตัวเลือกการกำหนดค่า . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 การจัดเตรียม API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 โปรโตคอลการสื่อสาร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 การจัดเตรียมแบบรวม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 การจัดเตรียม Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API การจัดเก็บข้อมูล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fileระบบ สนับสนุน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 ยูทิลิตี้การผลิต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 ไลบรารีหน่วยเก็บข้อมูลแบบไม่ลบเลือน . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 ยูทิลิตี้ตัวสร้างพาร์ติชั่น NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 ไดรเวอร์ SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI Flash API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 สปิฟส์ Fileระบบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 เสมือน fileส่วนประกอบของระบบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API การปรับระดับการสึกหรอ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API ระบบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 รูปแบบรูปภาพแอป . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 การติดตามระดับแอปพลิเคชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 เรียกใช้ฟังก์ชันด้วยสแต็กภายนอก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 การแก้ไขชิป . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 คอนโซล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 ตัวจัดการ eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 รหัสข้อผิดพลาดและฟังก์ชันช่วยเหลือ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 ไลบรารี Event Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (มากกว่าview) . ... . . . 1988 2.10.13 การจัดสรรหน่วยความจำฮีป . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 การดีบักหน่วยความจำฮีป . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 ตัวจับเวลาความละเอียดสูง (ตัวจับเวลา ESP) . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 API ภายในและไม่เสถียร . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 ไลบรารีการบันทึกข้อมูล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 API ของระบบอื่นๆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 การอัปเดตผ่านอากาศ (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 ตัวตรวจสอบประสิทธิภาพการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 การจัดการพลังงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 การรองรับ POSIX Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 การสร้างตัวเลขสุ่ม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 โหมดสลีป . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 ความสามารถของ SoC . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 การเขียนโปรแกรมโคโปรเซสเซอร์ ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 วอทช์ด็อก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161

3 การอ้างอิงฮาร์ดแวร์

2167

3.1 การเปรียบเทียบชิปซีรีส์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167

3.1.1 เอกสารที่เกี่ยวข้อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170

คู่มือ API 4 รายการ

2171

4.1 ไลบรารีการติดตามระดับแอปพลิเคชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.1 เกินview - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2171

4.1.2 โหมดการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.3 ตัวเลือกการกำหนดค่าและการอ้างอิง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 วิธีการใช้งานไลบรารีนี้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173

4.2 ขั้นตอนการเริ่มต้นแอปพลิเคชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181

4.2.1 ครั้งแรกtagและ bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.2 วินาทีtagและ bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.3 การเริ่มต้นใช้งานแอปพลิเคชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183

4.3 บลูทูธ® คลาสสิก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 เกินview - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2184

4.4 บลูทูธ® พลังงานต่ำ . ...

4.4.1 เกินview - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2186

4.4.2 เริ่มต้นใช้งาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191

4.4.3 โปรfile - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2240

4.5 บูตโหลดเดอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 ความเข้ากันได้ของ Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.2 ระดับการบันทึก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.3 การรีเซ็ตเป็นค่าโรงงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.4 บูตจากเฟิร์มแวร์ทดสอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.5 การย้อนกลับ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 เฝ้าระวัง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.7 ขนาด Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.8 การบูทเครื่องอย่างรวดเร็วจากโหมด Deep Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.9 โปรแกรม bootloader แบบกำหนดเอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.6 ระบบการสร้าง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.1 เกินview - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2288

4.6.2 การใช้ระบบสร้าง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289

สาม

4.6.3 อดีตampโครงการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 โปรเจ็กต์ CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 ส่วนประกอบ CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 การกำหนดค่าส่วนประกอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 คำจำกัดความของพรีโปรเซสเซอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 ข้อกำหนดส่วนประกอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 การเขียนทับส่วนต่างๆ ของโครงการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 ส่วนประกอบการกำหนดค่าเท่านั้น . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 การดีบัก CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 ตัวอย่างampส่วนประกอบ CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 ค่าเริ่มต้น sdkconfig แบบกำหนดเอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 อาร์กิวเมนต์ Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 การสร้าง Bootloader . ... 2306 4.6.18 การใช้ไลบรารีที่สร้างไว้ล่วงหน้ากับคอมโพเนนต์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 การใช้ ESP-IDF ในโปรเจ็กต์ CMake ที่กำหนดเอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 ESP-IDF API ระบบสร้าง CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File การสร้างแบบรวมและแบบเพิ่มหน่วย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 ข้อมูลเมตาของระบบสร้าง . ... 2313 4.6.24 การย้ายจากระบบ ESP-IDF GNU Make . ...2316 4.7.1 จบview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 การกำหนดค่า . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 บันทึก core dump ไปยังแฟลช . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 พิมพ์ core dump ไปยัง UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 ฟังก์ชัน ROM ใน Backtraces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 การดัมพ์ตัวแปรตามความต้องการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 การรัน espcoredump.py . ...2319 4.8 Wake Stubs ในช่วง Deep Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 กฎสำหรับ Wake Stubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 การนำ Stub ไปใช้งาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 การโหลดโค้ดลงในหน่วยความจำ RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 การโหลดข้อมูลลงในหน่วยความจำ RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 การจัดการข้อผิดพลาด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 จบview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 การแปลงรหัสข้อผิดพลาดเป็นข้อความแสดงข้อผิดพลาด . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 มาโคร ESP_ERROR_CHECK . ... 2325 4.9.7 มาโคร ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 มาโคร ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 มาโคร ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 ตรวจสอบแมโคร Examp2326 4.9.11 รูปแบบการจัดการข้อผิดพลาด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 ข้อยกเว้นของ C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 จบview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 แนวคิด ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 การสร้างเครือข่าย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 การจัดการเครือข่าย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 การส่งข้อมูล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 การสลับช่องสัญญาณ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv

4.10.8 ประสิทธิภาพการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 หมายเหตุเพิ่มเติม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 การจัดการเหตุการณ์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 เหตุการณ์ Wi-Fi, อีเทอร์เน็ต และ IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 เหตุการณ์ Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 เหตุการณ์ Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 เกินview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 ตัวจัดการเหตุฉุกเฉิน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 ลงทะเบียน Dump และ Backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB สตับ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 RTC Watchdog หมดเวลา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 ข้อผิดพลาดในการทำสมาธิของครู . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 ข้อผิดพลาดร้ายแรงอื่นๆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 การเข้ารหัสแฟลช . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 eFuses ที่เกี่ยวข้อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 กระบวนการเข้ารหัสแฟลช . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 การกำหนดค่าการเข้ารหัสแฟลช . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 ความล้มเหลวที่อาจเกิดขึ้น . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 สถานะการเข้ารหัส ESP32 Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 การอ่านและการเขียนข้อมูลใน Flash ที่เข้ารหัส . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 การอัปเดต Flash ที่เข้ารหัส . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 การปิดใช้งานการเข้ารหัสแฟลช . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 ประเด็นสำคัญเกี่ยวกับการเข้ารหัส Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 ข้อจำกัดของการเข้ารหัส Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 การเข้ารหัสแฟลชและการบูตอย่างปลอดภัย . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 คุณสมบัติขั้นสูง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 รายละเอียดทางเทคนิค . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 การแยกฮาร์ดแวร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 สถาปัตยกรรม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 เลเยอร์ LL (ระดับต่ำ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (เลเยอร์นามธรรมฮาร์ดแวร์) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 การขัดจังหวะระดับสูง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 ระดับการขัดจังหวะ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 หมายเหตุ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG การแก้ไขจุดบกพร่อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 วิธีการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 การเลือก JTAG อะแดปเตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 การกำหนดค่าเป้าหมาย ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 การเปิดตัว Debugger . ...amples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 การสร้าง OpenOCD จากซอร์สโค้ด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 เคล็ดลับและปัญหา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 เอกสารที่เกี่ยวข้อง . ...2396 4.17 การสร้างสคริปต์ลิงก์เกอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 จบview . ... . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API ของ BSD Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API Netconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 งาน lwIP FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 การรองรับ IPv6 . ...
v

4.18.7 การเพิ่มประสิทธิภาพการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 ประเภทหน่วยความจำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (แรมข้อมูล) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (แรมคำสั่ง) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (โค้ดที่รันจากแฟลช) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (ข้อมูลที่เก็บไว้ในแฟลช) . ... . . . . . . . . . . . . . . . . . . . 2441 4.19.7 ความต้องการความสามารถของ DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 บัฟเฟอร์ DMA ในสแตก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 โหมดของสแต็ก OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 วิธีการเขียนแอปพลิเคชัน OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 เราเตอร์ Border Router ของ OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 จบview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 การสร้างตารางแบบกำหนดเอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 การสร้างตารางพาร์ติชั่นแบบไบนารี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 การตรวจสอบขนาดพาร์ติชั่น . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 การแฟลชตารางพาร์ติชั่น . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 เครื่องมือแบ่งพาร์ติชัน (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 ประสิทธิภาพการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 วิธีการเพิ่มประสิทธิภาพการทำงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 แนวทาง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 การสอบเทียบ RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 การสอบเทียบบางส่วน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 การสอบเทียบเต็มรูปแบบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 ไม่มีการสอบเทียบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 ข้อมูลการเริ่มต้น PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 เอกสารอ้างอิง API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 การบูตแบบปลอดภัย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 กระบวนการบูตแบบปลอดภัยเสร็จสิ้นview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 คีย์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 ขนาด Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 วิธีเปิดใช้งาน Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 ซอฟต์แวร์ Bootloader ที่สามารถแฟลชซ้ำได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 การสร้างคีย์การลงนาม Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 การลงนามภาพจากระยะไกล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 แนวทางปฏิบัติที่ดีที่สุดในการบูตแบบปลอดภัย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 รายละเอียดทางเทคนิค . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 การบูตแบบปลอดภัยและการเข้ารหัส Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 การตรวจสอบแอปที่ลงนามโดยไม่ต้องใช้การบูตแบบปลอดภัยด้วยฮาร์ดแวร์ . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 คุณสมบัติขั้นสูง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Secure Boot V2 . ...2478 4.25.1 พื้นหลัง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 ขั้นสูงtages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 รูปแบบบล็อกลายเซ็น . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 การแพดที่ปลอดภัย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 การตรวจสอบบล็อกลายเซ็น . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 การตรวจสอบรูปภาพ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 ขนาด Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 การใช้งาน eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 วิธีเปิดใช้งาน Secure Boot V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 ข้อจำกัดหลังจากเปิดใช้งาน Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 การสร้างคีย์การลงนาม Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi

4.25.13 การลงนามภาพจากระยะไกล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 แนวทางปฏิบัติที่ดีที่สุดในการบูตแบบปลอดภัย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 รายละเอียดทางเทคนิค . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 การบูตแบบปลอดภัยและการเข้ารหัส Flash . ... 2485 4.26 การรองรับ RAM ภายนอก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 ฮาร์ดแวร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 การกำหนดค่า RAM ภายนอก . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 ข้อจำกัด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 ไม่สามารถเริ่มต้นระบบได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 เธรดที่เก็บข้อมูลภายในเครื่อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 เกินview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 API ดั้งเดิมของ FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 API Pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 มาตรฐาน C11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 เครื่องมือ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 ส่วนติดต่อผู้ใช้ IDF – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 รูปภาพ Docker ของ IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 โปรแกรมติดตั้ง IDF สำหรับ Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 ตัวจัดการส่วนประกอบ IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 เครื่องมือที่ดาวน์โหลดได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 การทดสอบยูนิตใน ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 กรณีทดสอบปกติ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 กรณีทดสอบอุปกรณ์หลายเครื่อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 หลายอุปกรณ์tage กรณีทดสอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 การทดสอบสำหรับเป้าหมายที่แตกต่างกัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 การสร้างแอปทดสอบหน่วย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 การรันการทดสอบยูนิต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 รหัสเวลาพร้อมตัวจับเวลาชดเชยแคช . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 ล้อเลียน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 การทดสอบยูนิตบน Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 การทดสอบซอฟต์แวร์ฝังตัว . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 การทดสอบยูนิต IDF บนโฮสต์ Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 ไดร์เวอร์ Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 รายการคุณลักษณะ Wi-Fi ของ ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 วิธีการเขียนแอปพลิเคชัน Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 รหัสข้อผิดพลาด API Wi-Fi ของ ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 การเริ่มต้นพารามิเตอร์ API Wi-Fi ของ ESP32 . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 แบบจำลองการเขียนโปรแกรม Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 คำอธิบายเหตุการณ์ ESP32 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 สถานี Wi-Fi ESP32 สถานการณ์ทั่วไป . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 ESP32 Wi-Fi AP สถานการณ์ทั่วไป . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 การสแกน Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 สถานการณ์การเชื่อมต่อสถานี Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 สถานี Wi-Fi ESP32 เชื่อมต่อเมื่อพบ AP หลายตัว . . . . . . . . . . . . 2543 4.31.12 การเชื่อมต่อ Wi-Fi ใหม่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 สัญญาณ Wi-Fi Beacon หมดเวลา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 การกำหนดค่า Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 การจัดการเครือข่ายไร้สาย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 การวัดทรัพยากรวิทยุ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 การเปลี่ยนผ่าน BSS อย่างรวดเร็ว . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 โหมดประหยัดพลังงาน Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 อัตราการรับส่งข้อมูล Wi-Fi ของ ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7. เจ็ด

4.31.21 การส่งแพ็กเก็ต Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 โหมด Wi-Fi Sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 เสาอากาศ Wi-Fi หลายเสา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 ข้อมูลสถานะช่องสัญญาณ Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 การกำหนดค่าข้อมูลสถานะช่องสัญญาณ Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . - - - - - - - - - - - - - - - - 2557 4.31.27 QoS ไวไฟ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2557 4.31.28 Wi-Fi AMSDU . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2558 4.31.29 ส่วนของ Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 ผู้สมัคร WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 การใช้งานบัฟเฟอร์ Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 วิธีการปรับปรุงประสิทธิภาพ Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 เมนูการกำหนดค่า Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 การแก้ไขปัญหา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 ความปลอดภัย Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 คุณสมบัติความปลอดภัย Wi-Fi ของ ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 เฟรมการจัดการที่ได้รับการปกป้อง (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 การอยู่ร่วมกันของ RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 เกินview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 สถานการณ์การอยู่ร่วมกันที่รองรับสำหรับ ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 กลไกและนโยบายการอยู่ร่วมกัน . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 วิธีใช้คุณสมบัติการอยู่ร่วมกัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 การสร้างที่ทำซ้ำได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 เหตุผลในการสร้างที่ไม่สามารถทำซ้ำได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 การเปิดใช้งานการสร้างที่สามารถทำซ้ำได้ใน ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 วิธีการสร้างที่สามารถทำซ้ำได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 การสร้างและการดีบักที่ทำซ้ำได้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 ปัจจัยที่ยังคงส่งผลต่อการสร้างที่ทำซ้ำได้ . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 คู่มือผู้ใช้โหมดพลังงานต่ำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578

คู่มือการย้ายถิ่นฐาน 5 ประการ

2579

5.1 คู่มือการย้าย ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

5.1.1 การย้ายข้อมูลจาก 4.4 ไป 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

6 ห้องสมุดและกรอบงาน

2611

6.1 เฟรมเวิร์กคลาวด์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.3 แอปพลิเคชัน Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.4 Google IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.5 อาลียุน IoT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2611

6.1.6 จอยลิงค์ ไอโอที . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.7 เทนเซ็นต์ ไอโอที . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.8 เทนเซ็นต์ยุน ไอโอที . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.9 ไป่ตู้ ไอโอที . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2 เฟรมเวิร์ก Espressifns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.1 กรอบงานการพัฒนา Espressif Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.3 ไลบรารี Espressif DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.4 กรอบการทำงานการพัฒนา ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-WHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.7 โซลูชัน ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.8 โปรโตคอล ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

8. แปด

6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614

คู่มือการสนับสนุน 7 รายการ

2615

7.1 วิธีการร่วมสนับสนุน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.2 ก่อนการมีส่วนสนับสนุน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.3 ขั้นตอนการดึงคำขอ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.4 ส่วนกฎหมาย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5 เอกสารที่เกี่ยวข้อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.1 คู่มือรูปแบบกรอบการพัฒนา Espressif IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.2 ติดตั้ง Pre-commit Hook สำหรับโครงการ ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 การจัดทำเอกสารรหัส . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624

7.5.4 การสร้าง Exampเล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2629

7.5.5 เทมเพลตเอกสาร API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 ข้อตกลงผู้สนับสนุน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632

7.5.7 คำแนะนำส่วนหัวลิขสิทธิ์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634

7.5.8 การทดสอบ ESP-IDF พร้อมคำแนะนำ Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635

8 เวอร์ชัน ESP-IDF

2645

8.1 การเผยแพร่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.2 ฉันควรเริ่มต้นด้วยเวอร์ชันใด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.3 โครงร่างการกำหนดเวอร์ชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.4 ระยะเวลาการสนับสนุน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646

8.5 การตรวจสอบเวอร์ชันปัจจุบัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647

8.6 เวิร์กโฟลว์ Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 การอัปเดต ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7.1 การอัปเดตเป็นรุ่นเสถียร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.2 การอัปเดตเป็นเวอร์ชันก่อนการเผยแพร่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.3 การอัปเดตเป็น Master Branch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.4 การอัปเดตเป็นสาขาการเผยแพร่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650

9 ทรัพยากร

2651

9.1 แพลตฟอร์มIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.1 PlatformIO คืออะไร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.2 การติดตั้ง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.3 การกำหนดค่า . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.4 บทช่วยสอน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.5 โครงการ Exampเลส . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 ขั้นตอนถัดไป . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 ลิงก์ที่เป็นประโยชน์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

10 ลิขสิทธิ์และใบอนุญาต

2653

10.1 ลิขสิทธิ์ซอฟต์แวร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.1 ส่วนประกอบเฟิร์มแวร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.2 เอกสารประกอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.2 ลิขสิทธิ์ซอร์สโค้ด ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.3 ใบอนุญาต MIT ของ Xtensa libhal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2655

10.4 ใบอนุญาต TinyBasic Plus MIT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2655

10.5 ใบอนุญาต TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 เกี่ยวกับ

2657

12 การสลับระหว่างภาษา

2659

ดัชนี

2661

ดัชนี

2661

ix

x

สารบัญ
นี่คือเอกสารประกอบสำหรับ Espressif IoT Development Framework (esp-idf) ESP-IDF เป็นกรอบการทำงานอย่างเป็นทางการสำหรับ SoC ซีรีส์ ESP32, ESP32-S และ ESP32-C เอกสารนี้อธิบายการใช้ ESP-IDF กับ ESP32 SoC

เริ่มต้นใช้งาน

เอกสารอ้างอิง API

คู่มือ API

ระบบเอสเพรสซิฟ

1 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

สารบัญ

ระบบเอสเพรสซิฟ

2 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1
เริ่มต้นใช้งาน
เอกสารนี้มีวัตถุประสงค์เพื่อช่วยคุณตั้งค่าสภาพแวดล้อมการพัฒนาซอฟต์แวร์สำหรับฮาร์ดแวร์ที่ใช้ชิป ESP32 ของ Espressif หลังจากนั้น ให้ทำตามขั้นตอนง่ายๆampจะแสดงวิธีใช้ ESP-IDF (Espressif IoT Development Framework) สำหรับการกำหนดค่าเมนู จากนั้นสร้างและแฟลชเฟิร์มแวร์ลงบนบอร์ด ESP32
หมายเหตุ: นี่คือเอกสารประกอบสำหรับ ESP-IDF เวอร์ชันเสถียร v5.0.9 นอกจากนี้ยังมี ESP-IDF เวอร์ชันอื่นๆ อีกด้วย
1.1 บทนำ
ESP32 เป็นระบบบนชิปที่ผสานรวมคุณลักษณะต่อไปนี้: · Wi-Fi (แบนด์ 2.4 GHz) · Bluetooth · คอร์ CPU Xtensa® 32 บิต LX6 ประสิทธิภาพสูงแบบคู่ · โคโปรเซสเซอร์พลังงานต่ำพิเศษ · อุปกรณ์ต่อพ่วงหลายชิ้น
ขับเคลื่อนด้วยเทคโนโลยี 40 นาโนเมตร ESP32 มอบแพลตฟอร์มที่แข็งแกร่งและผสานรวมสูง ซึ่งช่วยตอบสนองความต้องการอย่างต่อเนื่องในด้านการใช้พลังงานอย่างมีประสิทธิภาพ ดีไซน์กะทัดรัด ความปลอดภัย ประสิทธิภาพสูง และความน่าเชื่อถือ Espressif มอบทรัพยากรฮาร์ดแวร์และซอฟต์แวร์พื้นฐานเพื่อช่วยให้นักพัฒนาแอปพลิเคชันบรรลุแนวคิดของพวกเขาโดยใช้ฮาร์ดแวร์ซีรีส์ ESP32 เฟรมเวิร์กการพัฒนาซอฟต์แวร์ของ Espressif มีไว้สำหรับการพัฒนาแอปพลิเคชันอินเทอร์เน็ตในทุกสิ่ง (IoT) ที่รองรับ Wi-Fi, Bluetooth, การจัดการพลังงาน และฟีเจอร์ระบบอื่นๆ อีกมากมาย
1.2 สิ่งที่คุณต้องการ
1.2.1 ฮาร์ดแวร์
· บอร์ด ESP32 · สาย USB – USB A / micro USB B · คอมพิวเตอร์ที่ใช้ระบบปฏิบัติการ Windows, Linux หรือ macOS
หมายเหตุ: ขณะนี้บอร์ดพัฒนาบางรุ่นใช้ขั้วต่อ USB Type-C โปรดตรวจสอบให้แน่ใจว่าคุณมีสายเคเบิลที่ถูกต้องสำหรับเชื่อมต่อบอร์ดของคุณ!
หากคุณมีบอร์ดพัฒนา ESP32 อย่างเป็นทางการใดบอร์ดหนึ่งที่ระบุไว้ด้านล่าง คุณสามารถคลิกลิงก์เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับฮาร์ดแวร์ได้
3

บทที่ 1 เริ่มต้น
ESP32-DevKitS(-R)
คู่มือผู้ใช้นี้ให้ข้อมูลเกี่ยวกับ ESP32-DevKitS(-R) ซึ่งเป็นบอร์ดแฟลชที่ใช้ ESP32 ซึ่งผลิตโดย Espressif ESP32-DevKitS(-R) เป็นการรวมชื่อบอร์ดสองชื่อเข้าด้วยกัน ได้แก่ ESP32-DevKitS และ ESP32-DevKitS-R โดย S ย่อมาจาก springs และ R ย่อมาจาก WROVER

ESP32-DevKitS

ESP32-DevKitS-R

เอกสารประกอบด้วยส่วนหลักดังต่อไปนี้: · เริ่มต้นใช้งาน: ให้ข้อมูลมากกว่าview ของ ESP32-DevKitS(-R) และคำแนะนำการตั้งค่าฮาร์ดแวร์/ซอฟต์แวร์เพื่อเริ่มต้นใช้งาน · ข้อมูลอ้างอิงฮาร์ดแวร์: ให้ข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับฮาร์ดแวร์ ESP32-DevKitS(-R)ns · เอกสารที่เกี่ยวข้อง: ให้ลิงก์ไปยังเอกสารที่เกี่ยวข้อง

การเริ่มต้นใช้งาน หัวข้อนี้จะอธิบายวิธีเริ่มต้นใช้งาน ESP32-DevKitS(-R) โดยเริ่มต้นด้วยหัวข้อแนะนำเกี่ยวกับ ESP32-DevKitS(-R) จากนั้น หัวข้อ วิธีการแฟลชบอร์ด จะให้คำแนะนำเกี่ยวกับวิธีการติดตั้งโมดูลบน ESP32-DevKitS(-R) การเตรียมใช้งาน และการแฟลชเฟิร์มแวร์

เกินview ESP32-DevKitS(-R) คือบอร์ดแฟลช Espressifns ที่ออกแบบมาสำหรับ ESP32 โดยเฉพาะ บอร์ดนี้สามารถใช้แฟลชโมดูล ESP32 ได้โดยไม่ต้องบัดกรีโมดูลเข้ากับแหล่งจ่ายไฟและสายสัญญาณ เมื่อติดตั้งโมดูลแล้ว ESP32-DevKitS(-R) ยังสามารถใช้เป็นบอร์ดพัฒนาขนาดเล็กเช่นเดียวกับ ESP32-DevKitC ได้อีกด้วย
บอร์ด ESP32-DevKitS และ ESP32-DevKitS-R แตกต่างกันเพียงรูปแบบของพินสปริงเท่านั้น เพื่อให้พอดีกับโมดูล ESP32 ต่อไปนี้
· ESP32-DevKit: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB และ IPEX) ESP32-WROVER-B (PCB และ IPEX) ESP32-WROVER-E ESP32-WROVER-IE
สำหรับข้อมูลเกี่ยวกับโมดูลข้างต้น โปรดดูที่โมดูลซีรีส์ ESP32

คำอธิบายของ Components

ระบบเอสเพรสซิฟ

4 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 1: ESP32-DevKitS – ด้านหน้า

ระบบเอสเพรสซิฟ

รูปที่ 2: ESP32-DevKitS-R – ด้านหน้า 5
ส่งคำติชมเอกสาร

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

สปริงส่วนประกอบหลัก 2.54 มม. ตัวเมีย
สะพาน USB-to-UART LDO ขั้วต่อ Micro-USB/พอร์ต Micro USB ปุ่ม EN ปุ่มบูต
LED เปิดเครื่อง

คำอธิบาย คลิกโมดูลเข้าไป พินจะพอดีกับรูที่ยึดโมดูลไว้ หัวต่อตัวเมียเหล่านี้เชื่อมต่อกับพินของโมดูลที่ติดตั้งบนบอร์ดนี้ สำหรับคำอธิบายของหัวต่อตัวเมีย โปรดดูที่ Header Blocks บริดจ์ USB to UART แบบชิปเดี่ยวให้อัตราการถ่ายโอนข้อมูลสูงสุด 3 Mbps
แรงดันไฟฟ้าต่ำ 5V ถึง 3.3Vtagตัวควบคุมอี (LDO)
อินเทอร์เฟซ USB แหล่งจ่ายไฟสำหรับบอร์ด รวมถึงอินเทอร์เฟซการสื่อสารระหว่างคอมพิวเตอร์และบอร์ด
ปุ่มรีเซ็ต
ปุ่มดาวน์โหลด กด Boot ค้างไว้แล้วกด EN เพื่อเริ่มโหมดดาวน์โหลดเฟิร์มแวร์สำหรับการดาวน์โหลดเฟิร์มแวร์ผ่านพอร์ตซีเรียล
เปิดเมื่อเชื่อมต่อ USB หรือแหล่งจ่ายไฟเข้ากับบอร์ด

วิธีการแฟลชบอร์ด ก่อนที่จะจ่ายไฟให้ ESP32-DevKitS(-R) โปรดตรวจสอบให้แน่ใจว่าบอร์ดอยู่ในสภาพดีและไม่มีสัญญาณความเสียหายที่ชัดเจน
ฮาร์ดแวร์ที่จำเป็น · โมดูล ESP32 ที่คุณเลือก · สาย USB 2.0 (Standard-A ถึง Micro-B) · คอมพิวเตอร์ที่ใช้ Windows, Linux หรือ macOS
การตั้งค่าฮาร์ดแวร์ โปรดติดตั้งโมดูลที่คุณเลือกบน ESP32-DevKitS(-R) ของคุณตามขั้นตอนต่อไปนี้:
· วางโมดูลของคุณลงบนบอร์ด ESP32-DevKitS(-R) อย่างระมัดระวัง ตรวจสอบให้แน่ใจว่ารูสลักบนโมดูลตรงกับหมุดสปริงบนบอร์ด
· กดโมดูลลงในบอร์ดจนกระทั่งได้ยินเสียงคลิก · ตรวจสอบว่าหมุดสปริงทั้งหมดถูกสอดเข้าไปในรูสลักหรือไม่ หากมีหมุดสปริงบางตัวที่อยู่ในตำแหน่งที่ไม่ถูกต้อง
นำไปใส่ไว้ในรูที่มีป้อมปราการด้วยแหนบ
การตั้งค่าซอฟต์แวร์
วิธีที่ต้องการ เฟรมเวิร์กการพัฒนา ESP-IDF นำเสนอวิธีที่ต้องการสำหรับการแฟลชไฟล์ไบนารีบน ESP32-DevKitS(-R) โปรดดำเนินการต่อไปใน "เริ่มต้นใช้งาน" ซึ่งส่วน "การติดตั้ง" จะช่วยคุณตั้งค่าสภาพแวดล้อมการพัฒนาและแฟลชแอปพลิเคชันได้อย่างรวดเร็วampเข้าสู่ ESP32-DevKitS(-R) ของคุณ
วิธีอื่น ผู้ใช้ Windows สามารถแฟลชไฟล์ไบนารีโดยใช้เครื่องมือดาวน์โหลด Flash ได้เช่นกัน เพียงดาวน์โหลด แตกไฟล์ และทำตามคำแนะนำในโฟลเดอร์ doc
หมายเหตุ: 1. การแฟลชไบนารี files, ESP32 ควรตั้งค่าเป็นโหมดดาวน์โหลดเฟิร์มแวร์ ซึ่งสามารถทำได้ทั้งโดยเครื่องมือแฟลชอัตโนมัติ หรือโดยการกดปุ่ม Boot ค้างไว้แล้วแตะปุ่ม EN 2. หลังจากแฟลชไบนารี fileเครื่องมือดาวน์โหลด Flash จะรีสตาร์ทโมดูล ESP32 ของคุณและบูตแอปพลิเคชันที่แฟลชตามค่าเริ่มต้น

ขนาดบอร์ด เนื้อหาและบรรจุภัณฑ์

ระบบเอสเพรสซิฟ

6 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น รูปที่ 3: ขนาดบอร์ด ESP32-DevKitS – ด้านหลัง

ระบบเอสเพรสซิฟ

รูปที่ 4: ขนาดบอร์ด ESP32-DevKitS-R – ด้านหลัง 7
ส่งคำติชมเอกสาร

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
การสั่งซื้อปลีก หากคุณสั่งซื้อจำนวนน้อยampESP32-DevKitS(-R) แต่ละชุดจะบรรจุแยกชิ้นในถุงป้องกันไฟฟ้าสถิตย์หรือบรรจุภัณฑ์อื่นๆ ขึ้นอยู่กับผู้ค้าปลีก สำหรับการสั่งซื้อปลีก โปรดไปที่ https://www.espressif.com/en/contact-us/get-sampเลส.
สั่งซื้อแบบขายส่ง หากคุณสั่งซื้อจำนวนมาก บอร์ดจะบรรจุในกล่องกระดาษแข็งขนาดใหญ่ สำหรับการสั่งซื้อแบบขายส่ง โปรดไปที่ https://www.espressif.com/en/contact-us/sales-questions
การอ้างอิงฮาร์ดแวร์
ไดอะแกรมบล็อก ไดอะแกรมบล็อกด้านล่างนี้แสดงส่วนประกอบของ ESP32-DevKitS(-R) และการเชื่อมต่อระหว่างส่วนประกอบเหล่านั้น

รูปที่ 5: ESP32-DevKitS(-R) (คลิกเพื่อขยาย)
ตัวเลือกแหล่งจ่ายไฟ มีสามวิธีที่แตกต่างกันในการจ่ายไฟให้กับบอร์ด: · พอร์ต Micro USB แหล่งจ่ายไฟเริ่มต้น · พินส่วนหัว 5V และ GND · พินส่วนหัว 3V3 และ GND
ขอแนะนำให้ใช้ตัวเลือกแรก: พอร์ต micro USB

ระบบเอสเพรสซิฟ

.

ป้ายสัญญาณ

L1 3V3 วีดีดี 3V3

L2 EN ชิป_PU

เซ็นเซอร์ L3 VP_VP

เซ็นเซอร์ L4 VN_VN

L5 ล34

GPIO34

L6 ล35

GPIO35

L7 ล32

GPIO32

L8 ล33

GPIO33

ต่อในหน้าถัดไป

8 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

ตาราง 1 ต่อจากหน้าก่อนหน้า

.

ป้ายสัญญาณ

L9 ล25

GPIO25

L10 ล26

GPIO26

L11 ล27

GPIO27

L12 ล14

GPIO14

L13 ล12

GPIO12

L14 GND GND

L15 ล13

GPIO13

L16 D2 SD_DATA2

L17 D3 SD_DATA3

L18 คำสั่ง SD_CMD

L19 5V

ภายนอก 5V

R1 GND GND

2 บาท

GPIO23

3 บาท

GPIO22

R4 TX U0TXD

R5 RX U0RXD

6 บาท

GPIO21

R7 GND GND

8 บาท

GPIO19

9 บาท

GPIO18

10 บาท

GPIO5

11 บาท

GPIO17

12 บาท

GPIO16

13 บาท

GPIO4

14 บาท

GPIO0

15 บาท

GPIO2

16 บาท

GPIO15

R17 D1 SD_DATA1

R18 D0 SD_DATA0

R19 ซีแอลเค เอสดี_ซีแอลเค

บล็อกส่วนหัว สำหรับรูปภาพของบล็อกส่วนหัว โปรดดูคำอธิบายของส่วนประกอบ

เอกสารที่เกี่ยวข้อง
· แผนผัง ESP32-DevKitS(-R) (PDF) · แผ่นข้อมูล ESP32 (PDF) · แผ่นข้อมูล ESP32-WROOM-32 (PDF) · แผ่นข้อมูล ESP32-WROOM-32D และ ESP32-WROOM-32U (PDF) · แผ่นข้อมูล ESP32-SOLO-1 (PDF) · แผ่นข้อมูล ESP32-WROVER (PDF) · แผ่นข้อมูล ESP32-WROVER-B (PDF) · ตัวเลือกผลิตภัณฑ์ ESP

ESP32-DevKitM-1

คู่มือผู้ใช้เล่มนี้จะช่วยให้คุณเริ่มต้นใช้งาน ESP32-DevKitM-1 ได้ และยังจะให้ข้อมูลเชิงลึกเพิ่มเติมอีกด้วย
ESP32-DevKitM-1 คือบอร์ดพัฒนาที่ใช้ ESP32-MINI-1 (1U) ซึ่งผลิตโดย Espressif พิน I/O ส่วนใหญ่ถูกแยกออกจากส่วนหัวของพินทั้งสองด้านเพื่อให้เชื่อมต่อได้ง่าย ผู้ใช้สามารถเชื่อมต่ออุปกรณ์ต่อพ่วงด้วยสายจัมเปอร์ หรือติดตั้ง ESP32-DevKitM-1 บนแผงทดลองได้

ระบบเอสเพรสซิฟ

9 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

ESP32-DevKitM-1 – ด้านหน้า

ESP32-DevKitM-1 – ไอโซเมตริก

เอกสารประกอบด้วยส่วนหลักดังต่อไปนี้: · เริ่มต้นใช้งาน: ให้ข้อมูลมากกว่าview ของ ESP32-DevKitM-1 และคำแนะนำการตั้งค่าฮาร์ดแวร์/ซอฟต์แวร์เพื่อเริ่มต้นใช้งาน · ข้อมูลอ้างอิงฮาร์ดแวร์: ให้ข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับฮาร์ดแวร์ ESP32-DevKitM-1ns · เอกสารที่เกี่ยวข้อง: ให้ลิงก์ไปยังเอกสารที่เกี่ยวข้อง

การเริ่มต้นใช้งาน หัวข้อนี้อธิบายวิธีเริ่มต้นใช้งาน ESP32-DevKitM-1 โดยเริ่มต้นด้วยส่วนแนะนำเกี่ยวกับ ESP32-DevKitM-1 จากนั้นจะเป็นส่วน "เริ่มต้นการพัฒนาแอปพลิเคชัน" ซึ่งให้คำแนะนำเกี่ยวกับวิธีการตั้งค่าฮาร์ดแวร์เบื้องต้น และวิธีการแฟลชเฟิร์มแวร์ลงบน ESP32-DevKitM-1

เกินview นี่คือบอร์ดพัฒนาขนาดเล็กและสะดวกที่มีคุณสมบัติ:
· โมดูล ESP32-MINI-1 หรือ ESP32-MINI-1U · อินเทอร์เฟซการเขียนโปรแกรม USB-to-serial ที่ให้พลังงานแก่บอร์ด · พินเฮดเดอร์ · ปุ่มกดสำหรับรีเซ็ตและเปิดใช้งานโหมดดาวน์โหลดเฟิร์มแวร์ · ส่วนประกอบอื่นๆ อีกเล็กน้อย

สารบัญและบรรจุภัณฑ์

การสั่งซื้อปลีก หากคุณสั่งซื้อจำนวนน้อยampESP32-DevKitM-1 แต่ละชิ้นมาในแพ็คเกจแยกชิ้นในถุงป้องกันไฟฟ้าสถิตย์หรือบรรจุภัณฑ์อื่น ๆ ขึ้นอยู่กับผู้ค้าปลีกของคุณ
สำหรับคำสั่งซื้อปลีก โปรดไปที่ https://www.espressif.com/en/contact-us/get-sampเลส.

สั่งซื้อแบบขายส่ง หากคุณสั่งซื้อจำนวนมาก บอร์ดจะบรรจุในกล่องกระดาษแข็งขนาดใหญ่ สำหรับการสั่งซื้อแบบขายส่ง โปรดไปที่ https://www.espressif.com/en/contact-us/sales-questions

คำอธิบายส่วนประกอบ รูปภาพและตารางด้านล่างอธิบายส่วนประกอบหลัก อินเทอร์เฟซ และการควบคุมของบอร์ด ESP32-DevKitM-1 เราใช้บอร์ดที่มีโมดูล ESP32-MINI-1 เป็นส่วนประกอบหลักampในหัวข้อต่อไปนี้

ระบบเอสเพรสซิฟ

10 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 6: ESP32-DevKitM-1 – ด้านหน้า

ส่วนประกอบหลัก โมดูลออนบอร์ด
ปุ่มบูต LDO 5 V ถึง 3.3 V
ปุ่มรีเซ็ต พอร์ต Micro-USB
ไฟ LED แสดงสถานะเปิดเครื่อง USB-to-UART Bridge 3.3 V
ขั้วต่อ I/O

คำอธิบาย
โมดูล ESP32-MINI-1 หรือ ESP32-MINI-1U ESP32-MINI-1 มาพร้อมกับเสาอากาศ PCB ในตัว ส่วน ESP32-MINI-1U มาพร้อมกับขั้วต่อเสาอากาศภายนอก โมดูลทั้งสองมีชิปแฟลชขนาด 4 MB ในตัว สำหรับรายละเอียดเพิ่มเติม โปรดดูเอกสารข้อมูล ESP32-MINI-1 และ ESP32-MINI-1U
ตัวควบคุมกำลังแปลง 5 V เป็น 3.3 V.
ปุ่มดาวน์โหลด กดปุ่ม Boot ค้างไว้แล้วกด Reset เพื่อเริ่มโหมดดาวน์โหลดเฟิร์มแวร์สำหรับดาวน์โหลดเฟิร์มแวร์ผ่านพอร์ตซีเรียล
ปุ่มรีเซ็ต
อินเทอร์เฟซ USB แหล่งจ่ายไฟสำหรับบอร์ดรวมถึงอินเทอร์เฟซการสื่อสารระหว่างคอมพิวเตอร์และชิป ESP32
ชิปบริดจ์ USB-UART ตัวเดียวให้อัตราการถ่ายโอนสูงสุด 3 Mbps
จะเปิดขึ้นเมื่อเชื่อมต่อ USB เข้ากับบอร์ด สำหรับรายละเอียดเพิ่มเติม โปรดดูแผนผังวงจรในเอกสารที่เกี่ยวข้อง พิน GPIO ที่มีอยู่ทั้งหมด (ยกเว้นบัส SPI สำหรับแฟลช) จะถูกแยกออกเป็นพินเฮดเดอร์บนบอร์ด ผู้ใช้สามารถตั้งโปรแกรมชิป ESP32 เพื่อเปิดใช้งานฟังก์ชันต่างๆ ได้

เริ่มการพัฒนาแอปพลิเคชัน ก่อนที่จะจ่ายไฟให้ ESP32-DevKitM-1 ของคุณ โปรดตรวจสอบให้แน่ใจว่าอยู่ในสภาพดีและไม่มีสัญญาณความเสียหายที่ชัดเจน
ฮาร์ดแวร์ที่จำเป็น · ESP32-DevKitM-1 · สาย USB 2.0 (Standard-A ถึง Micro-B) · คอมพิวเตอร์ที่ใช้ Windows, Linux หรือ macOS
การตั้งค่าซอฟต์แวร์ โปรดดำเนินการไปที่เริ่มต้นใช้งาน ซึ่งส่วนการติดตั้งจะช่วยคุณตั้งค่าสภาพแวดล้อมการพัฒนาและแฟลชแอปพลิเคชันได้อย่างรวดเร็วampเข้าสู่ ESP32-DevKitM-1 ของคุณ

ระบบเอสเพรสซิฟ

11 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
หมายเหตุ: บอร์ด ESP32-DevKitM-1 ที่ผลิตก่อนวันที่ 2 ธันวาคม 2021 มีโมดูลแกนเดี่ยวติดตั้งอยู่ หากต้องการตรวจสอบโมดูลที่คุณมี โปรดตรวจสอบข้อมูลการทำเครื่องหมายโมดูลใน PCN-2021-021 หากบอร์ดของคุณมีโมดูลแกนเดี่ยวติดตั้งอยู่ โปรดเปิดใช้งานโหมดแกนเดี่ยว (CONFIG_FREERTOS_UNICORE) ใน menuconfig ก่อนแฟลชแอปพลิเคชันของคุณ
ไดอะแกรมบล็อกอ้างอิงฮาร์ดแวร์ ไดอะแกรมบล็อกด้านล่างนี้แสดงส่วนประกอบของ ESP32-DevKitM-1 และการเชื่อมต่อระหว่างส่วนประกอบเหล่านั้น

รูปที่ 7: ESP32-DevKitM-1
เลือกแหล่งจ่ายไฟ มีสามวิธีที่แตกต่างกันในการจ่ายไฟให้กับบอร์ด: · พอร์ต Micro USB แหล่งจ่ายไฟเริ่มต้น · พินส่วนหัว 5V และ GND · พินส่วนหัว 3V3 และ GND
คำเตือน: · ต้องใช้แหล่งจ่ายไฟอย่างใดอย่างหนึ่งจากตัวเลือกข้างต้นเท่านั้น มิฉะนั้น บอร์ดและ/หรือแหล่งจ่ายไฟอาจเสียหายได้ · ขอแนะนำให้ใช้แหล่งจ่ายไฟผ่านพอร์ต micro USB

คำอธิบายพิน ตารางด้านล่างนี้แสดงชื่อและฟังก์ชันของพินทั้งสองด้านของบอร์ด สำหรับการกำหนดค่าพินรอบข้าง โปรดดูเอกสารข้อมูล ESP32

เลขที่

ชื่อ

พิมพ์

1

ก.ย.ด.

P

2

3V3

P

ฟังก์ชั่น แหล่งจ่ายไฟฟ้ากราวด์ 3.3 V

ต่อในหน้าถัดไป

ระบบเอสเพรสซิฟ

12 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

ตาราง 2 ต่อจากหน้าก่อนหน้า

เลขที่

ชื่อ

พิมพ์

การทำงาน

3

ไอ36

I

GPIO36, ADC1_CH0, RTC_GPIO0

4

ไอ37

I

GPIO37, ADC1_CH1, RTC_GPIO1

5

ไอ38

I

GPIO38, ADC1_CH2, RTC_GPIO2

6

ไอ39

I

GPIO39, ADC1_CH3, RTC_GPIO3

7

ร.ส.ท.

I

รีเซ็ต; สูง: เปิดใช้งาน; ต่ำ: ปิดไฟ

8

ไอ34

I

GPIO34, ADC1_CH6, RTC_GPIO4

9

ไอ35

I

GPIO35, ADC1_CH7, RTC_GPIO5

10

IO32

ไอ/โอ

GPIO32, XTAL_32K_P (อินพุตออสซิลเลเตอร์คริสตัล 32.768 kHz)

ADC1_CH4,TOUCH9,RTC_GPIO9

11

IO33

ไอ/โอ

GPIO33, XTAL_32K_N (เอาต์พุตคริสตัลออสซิลเลเตอร์ 32.768 kHz),

ADC1_CH5,TOUCH8,RTC_GPIO8

12

IO25

ไอ/โอ

GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0

13

IO26

ไอ/โอ

GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1

14

IO27

ไอ/โอ

GPIO27, ADC2_CH7, สัมผัส7, RTC_GPIO17, EMAC_RX_DV

15

IO14

ไอ/โอ

GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,

HS2_CLK, SD_CLK, EMAC_TXD2

16

5V

P

แหล่งจ่ายไฟ 5 โวลต์

17

IO12

ไอ/โอ

GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,

HS2_DATA2, SD_DATA2, EMAC_TXD3

18

IO13

ไอ/โอ

GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,

HS2_DATA3, SD_DATA3, EMAC_RX_ER

19

IO15

ไอ/โอ

GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,

HS2_CMD, SD_CMD, EMAC_RXD3

20

IO2

ไอ/โอ

GPIO2, ADC2_CH2, ทัช2, RTC_GPIO12, HSPIWP,

HS2_DATA0, SD_DATA0

21

IO0

ไอ/โอ

GPIO0, ADC2_CH1, สัมผัส1, RTC_GPIO11, CLK_OUT1,

EMAC_TX_CLK

22

IO4

ไอ/โอ

GPIO4, ADC2_CH0, ทัช 0, RTC_GPIO10, HSPIHD,

HS2_DATA1, SD_DATA1, EMAC_TX_ER

23

IO9

ไอ/โอ

GPIO9, HS1_DATA2, U1RXD, SD_DATA2

24

IO10

ไอ/โอ

GPIO10, HS1_DATA3, U1TXD, SD_DATA3

25

IO5

ไอ/โอ

GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK

26

IO18

ไอ/โอ

GPIO18, HS1_DATA7, VSPICLK

27

IO23

ไอ/โอ

GPIO23, HS1_STROBE, VSPID

28

IO19

ไอ/โอ

GPIO19, VSPIQ, U0CTS, EMAC_TXD0

29

IO22

ไอ/โอ

GPIO22, VSPIWP, U0RTS, EMAC_TXD1

30

IO21

ไอ/โอ

GPIO21, VSPIHD, EMAC_TX_EN

31

TXD0

ไอ/โอ

GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2

32

RXD0

ไอ/โอ

GPIO3, U0RXD, CLK_OUT2

รายละเอียดการแก้ไขฮาร์ดแวร์ ไม่มีเวอร์ชันก่อนหน้า
เอกสารที่เกี่ยวข้อง
· แผ่นข้อมูล ESP32-MINI-1 และ ESP32-MINI-1U (PDF) · แผนผังวงจร ESP32-DevKitM-1 (PDF) · เค้าโครง PCB ESP32-DevKitM-1 (PDF) · เค้าโครง ESP32-DevKitM-1 (DXF) – คุณสามารถ view มันด้วย Autodesk Viewer ออนไลน์ · แผ่นข้อมูล ESP32 (PDF) · ตัวเลือกผลิตภัณฑ์ ESP
หากต้องการเอกสารการออกแบบอื่นๆ สำหรับบอร์ด โปรดติดต่อเราที่ sales@espressif.com

ระบบเอสเพรสซิฟ

13 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
ซอฟต์แวร์ 1.2.2
หากต้องการเริ่มใช้ ESP-IDF บน ESP32 ให้ติดตั้งซอฟต์แวร์ต่อไปนี้: · Toolchain สำหรับคอมไพล์โค้ดสำหรับ ESP32 · เครื่องมือสร้าง – CMake และ Ninja เพื่อสร้างแอปพลิเคชันเต็มรูปแบบสำหรับ ESP32 · ESP-IDF ซึ่งประกอบด้วย API (ไลบรารีซอฟต์แวร์และโค้ดต้นฉบับ) สำหรับ ESP32 และสคริปต์สำหรับใช้งาน Toolchain

1.3 การติดตั้ง
เพื่อติดตั้งซอฟต์แวร์ที่จำเป็นทั้งหมด เรามีวิธีต่างๆ มากมายที่จะช่วยอำนวยความสะดวกให้กับงานนี้ เลือกจากตัวเลือกที่มี
1.3.1 IDE

หมายเหตุ: เราขอแนะนำให้ติดตั้ง ESP-IDF ผ่าน IDE ที่คุณชื่นชอบ
· ปลั๊กอิน Eclipse · ส่วนขยาย VSCode

1.3.2 การติดตั้งด้วยตนเอง
สำหรับขั้นตอนด้วยตนเอง โปรดเลือกตามระบบปฏิบัติการของคุณ

ระบบเอสเพรสซิฟ

14 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
การตั้งค่ามาตรฐานของ Toolchain สำหรับ Windows
บทนำ ESP-IDF จำเป็นต้องติดตั้งเครื่องมือที่จำเป็นบางอย่างเพื่อให้คุณสามารถสร้างเฟิร์มแวร์สำหรับชิปที่รองรับ เครื่องมือที่จำเป็น ได้แก่ Python, Git, cross-compilers, CMake และ Ninja build tools สำหรับการเริ่มต้นใช้งานนี้ เราจะใช้ Command Prompt แต่หลังจากติดตั้ง ESP-IDF แล้ว คุณสามารถใช้ Eclipse Plugin หรือ IDE แบบกราฟิกอื่นๆ ที่รองรับ CMake แทนได้ หมายเหตุ: ข้อจำกัด: – เส้นทางการติดตั้งของ ESP-IDF และ ESP-IDF Tools ต้องไม่เกิน 90 อักขระ เส้นทางการติดตั้งที่ยาวเกินไปอาจทำให้ build ล้มเหลว – เส้นทางการติดตั้งของ Python หรือ ESP-IDF ต้องไม่มีช่องว่างหรือวงเล็บ – เส้นทางการติดตั้งของ Python หรือ ESP-IDF ไม่ควรมีอักขระพิเศษ (ไม่ใช่ ASCII) เว้นแต่ระบบปฏิบัติการจะได้รับการกำหนดค่าด้วย oUnicode UTF-8psupport ผู้ดูแลระบบสามารถเปิดใช้งานการสนับสนุนผ่านทางแผงควบคุม – เปลี่ยนวันที่ เวลา หรือรูปแบบตัวเลข – แท็บการดูแลระบบ – เปลี่ยนตำแหน่งระบบ – เลือกตัวเลือก oBeta: ใช้ Unicode UTF-8 สำหรับการรองรับภาษาต่างๆ ทั่วโลก – ตกลง และรีบูตคอมพิวเตอร์
โปรแกรมติดตั้งเครื่องมือ ESP-IDF วิธีที่ง่ายที่สุดในการติดตั้งข้อกำหนดเบื้องต้นของ ESP-IDF คือดาวน์โหลดโปรแกรมติดตั้งเครื่องมือ ESP-IDF ตัวใดตัวหนึ่ง

ดาวน์โหลดตัวติดตั้ง Windows
กรณีการใช้งานของโปรแกรมติดตั้งแบบออนไลน์และออฟไลน์คืออะไร โปรแกรมติดตั้งแบบออนไลน์มีขนาดเล็กมากและอนุญาตให้ติดตั้ง ESP-IDF ทุกรุ่นที่มีอยู่ โปรแกรมติดตั้งจะดาวน์โหลดเฉพาะไฟล์ที่จำเป็น รวมถึง Git สำหรับ Windows ในระหว่างกระบวนการติดตั้ง โปรแกรมติดตั้งจะจัดเก็บไฟล์ที่ดาวน์โหลดมา files ในไดเร็กทอรีแคช %userprofile%. เอสเพรสซิฟ
ตัวติดตั้งแบบออฟไลน์ไม่จำเป็นต้องเชื่อมต่อเครือข่ายใดๆ ตัวติดตั้งมีไฟล์ที่ต้องติดตั้งทั้งหมด รวมถึง Git สำหรับ Windows
ส่วนประกอบของการติดตั้ง โปรแกรมติดตั้งจะติดตั้งส่วนประกอบต่อไปนี้:
· Python แบบฝัง · คอมไพเลอร์แบบครอส · OpenOCD · เครื่องมือสร้าง CMake และ Ninja · ESP-IDF
ตัวติดตั้งยังอนุญาตให้นำไดเรกทอรีที่มีอยู่กลับมาใช้ซ้ำกับ ESP-IDF ได้ด้วย ไดเรกทอรีที่แนะนำคือ %userprofile%Desktopesp-idf โดยที่ %userprofile% คือไดเร็กทอรีโฮมของคุณ

ระบบเอสเพรสซิฟ

15 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
การเปิดใช้สภาพแวดล้อม ESP-IDF เมื่อสิ้นสุดกระบวนการติดตั้ง คุณสามารถเลือกตัวเลือก เรียกใช้ ESP-IDF PowerShell Environment หรือ เรียกใช้ ESP-IDF Command Prompt (cmd.exe) โปรแกรมติดตั้งจะเปิดใช้งานสภาพแวดล้อม ESP-IDF ในพรอมต์ที่เลือก เรียกใช้ ESP-IDF PowerShell Environment:

รูปที่ 8: การดำเนินการตามตัวช่วยตั้งค่าเครื่องมือ ESP-IDF ให้เสร็จสมบูรณ์ด้วยการเรียกใช้สภาพแวดล้อม PowerShell ของ ESP-IDF
เรียกใช้พรอมต์คำสั่ง ESP-IDF (cmd.exe):
การใช้ Command Prompt สำหรับขั้นตอนการเริ่มต้นใช้งานที่เหลือ เราจะใช้ Command Prompt ของ Windows ตัวติดตั้ง ESP-IDF Tools ยังสร้างทางลัดในเมนู Start เพื่อเปิด ESP-IDF Command Prompt ทางลัดนี้จะเปิด Command Prompt (cmd.exe) และเรียกใช้สคริปต์ export.bat เพื่อตั้งค่าตัวแปรสภาพแวดล้อม (PATH, IDF_PATH และอื่นๆ) ภายใน Command Prompt นี้ เครื่องมือที่ติดตั้งทั้งหมดจะพร้อมใช้งาน โปรดทราบว่าทางลัดนี้ใช้เฉพาะกับไดเรกทอรี ESP-IDF ที่เลือกไว้ใน ESP-IDF Tools Installer หากคุณมีไดเรกทอรี ESP-IDF หลายไดเรกทอรีในคอมพิวเตอร์ (เช่นampเพื่อให้สามารถทำงานกับ ESP-IDF เวอร์ชันต่างๆ ได้ คุณมีสองตัวเลือกในการใช้งาน:
1. สร้างสำเนาของทางลัดที่สร้างโดยโปรแกรมติดตั้ง ESP-IDF Tools และเปลี่ยนไดเร็กทอรีการทำงานของทางลัดใหม่เป็นไดเร็กทอรี ESP-IDF ที่คุณต้องการใช้
2. หรืออีกวิธีหนึ่งคือ เรียกใช้ cmd.exe จากนั้นเปลี่ยนไปยังไดเรกทอรี ESP-IDF ที่ต้องการใช้ แล้วเรียกใช้ export.bat โปรดทราบว่าวิธีนี้แตกต่างจากวิธีก่อนหน้านี้ ตรงที่ต้องมี Python และ Git อยู่ใน PATH หากคุณพบข้อผิดพลาดเกี่ยวกับ Python หรือ Git ที่ไม่พบ ให้ใช้ตัวเลือกแรก
ขั้นตอนแรกใน ESP-IDF เนื่องจากตรงตามข้อกำหนดทั้งหมดแล้ว หัวข้อถัดไปจะแนะนำคุณเกี่ยวกับวิธีเริ่มต้นโครงการแรกของคุณ

ระบบเอสเพรสซิฟ

16 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น รูปที่ 9: ESP-IDF PowerShell

รูปที่ 10: การดำเนินการตามตัวช่วยตั้งค่าเครื่องมือ ESP-IDF ให้เสร็จสมบูรณ์ด้วยการเรียกใช้พรอมต์คำสั่ง ESP-IDF (cmd.exe)

ระบบเอสเพรสซิฟ

17 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 11: พรอมต์คำสั่ง ESP-IDF

ระบบเอสเพรสซิฟ

18 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
คู่มือนี้จะช่วยคุณในขั้นตอนแรกๆ ของการใช้ ESP-IDF ทำตามคำแนะนำนี้เพื่อเริ่มต้นโปรเจ็กต์ใหม่บน ESP32 และสร้าง แฟลช และตรวจสอบเอาต์พุตของอุปกรณ์ หมายเหตุ: หากคุณยังไม่ได้ติดตั้ง ESP-IDF โปรดไปที่ "การติดตั้ง" และทำตามคำแนะนำเพื่อรับซอฟต์แวร์ทั้งหมดที่จำเป็นสำหรับการใช้คู่มือนี้

เริ่มโครงการ ตอนนี้คุณพร้อมที่จะเตรียมแอปพลิเคชันของคุณสำหรับ ESP32 แล้ว คุณสามารถเริ่มต้นด้วยโครงการ getstarted/hello_world จาก examples ไดเร็กทอรีใน ESP-IDF
สิ่งสำคัญ: ระบบสร้าง ESP-IDF ไม่รองรับช่องว่างในเส้นทางไปยัง ESP-IDF หรือไปยังโปรเจ็กต์
คัดลอกโครงการ get-started/hello_world ไปยังไดเร็กทอรี ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%exampเริ่มต้นใช้งานhello_world hello_world
หมายเหตุ: มีช่วงของ exampโครงการในอดีตamples ไดเร็กทอรีใน ESP-IDF คุณสามารถคัดลอกโครงการใด ๆ ในลักษณะเดียวกับที่แสดงด้านบนและเรียกใช้ นอกจากนี้ยังสามารถสร้าง exampอยู่ในสถานที่โดยไม่ต้องคัดลอกก่อน

เชื่อมต่ออุปกรณ์ของคุณ ตอนนี้เชื่อมต่อบอร์ด ESP32 เข้ากับคอมพิวเตอร์ และตรวจสอบว่าบอร์ดมองเห็นพอร์ตอนุกรมใด ชื่อพอร์ตอนุกรมใน Windows จะขึ้นต้นด้วย COM หากคุณไม่แน่ใจวิธีตรวจสอบชื่อพอร์ตอนุกรม โปรดดูรายละเอียดเพิ่มเติมในหัวข้อ สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32
หมายเหตุ: เก็บชื่อพอร์ตไว้ใกล้ตัว เพราะคุณจะต้องใช้ในขั้นตอนถัดไป

กำหนดค่าโครงการของคุณ ไปที่ไดเร็กทอรี hello_world ของคุณ ตั้งค่า ESP32 เป็นเป้าหมาย และเรียกใช้เมนูยูทิลิตี้กำหนดค่าโครงการ menuconfig
Windows cd %userprofile%esphello_world idf.py ตั้งค่าเป้าหมาย esp32 idf.py menuconfig
หลังจากเปิดโปรเจ็กต์ใหม่ คุณควรตั้งค่าเป้าหมายด้วยไฟล์ idf.py set-target esp32 ก่อน โปรดทราบว่าบิลด์และคอนฟิกูเรชันที่มีอยู่ในโปรเจ็กต์ (ถ้ามี) จะถูกล้างและเริ่มต้นใช้งานในกระบวนการนี้ คุณสามารถบันทึกเป้าหมายไว้ในตัวแปรสภาพแวดล้อมเพื่อข้ามขั้นตอนนี้ได้เลย ดูข้อมูลเพิ่มเติมได้ที่ เลือกชิปเป้าหมาย: set-target หากทำตามขั้นตอนก่อนหน้านี้อย่างถูกต้อง เมนูต่อไปนี้จะปรากฏขึ้น: คุณกำลังใช้เมนูนี้เพื่อตั้งค่าตัวแปรเฉพาะของโปรเจ็กต์ เช่น ชื่อและรหัสผ่านเครือข่าย Wi-Fi ความเร็วโปรเซสเซอร์ เป็นต้น การตั้งค่าโปรเจ็กต์ด้วย menuconfig อาจถูกข้ามไปสำหรับ ohello_wordp เนื่องจาก ex นี้ample ทำงานโดยใช้การกำหนดค่าเริ่มต้น
หมายเหตุ: หากคุณใช้บอร์ด ESP32-DevKitC กับโมดูล ESP32-SOLO-1 หรือบอร์ด ESP32-DevKitM-1 กับโมดูล ESP32-MIN1-1(1U) โปรดเปิดใช้งานโหมดคอร์เดียว (CONFIG_FREERTOS_UNICORE) ใน menuconfig ก่อนที่จะแฟลช exampเลส.

ระบบเอสเพรสซิฟ

19 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 12: การกำหนดค่าโครงการ – หน้าต่างหลัก
หมายเหตุ: สีของเมนูอาจแตกต่างกันไปในเทอร์มินัลของคุณ คุณสามารถเปลี่ยนรูปลักษณ์ได้ด้วยตัวเลือก –style โปรดดูข้อมูลเพิ่มเติมในไฟล์ idf.py menuconfig –help
หากคุณกำลังใช้บอร์ดพัฒนาที่รองรับอยู่ คุณสามารถเร่งการพัฒนาของคุณได้โดยใช้แพ็คเกจ Board Support ดูเคล็ดลับเพิ่มเติมสำหรับข้อมูลเพิ่มเติม
สร้างโครงการ สร้างโครงการโดยการรัน:
idf.py สร้าง
คำสั่งนี้จะรวบรวมแอปพลิเคชันและส่วนประกอบ ESP-IDF ทั้งหมด จากนั้นจะสร้าง bootloader ตารางพาร์ติชั่น และไบนารีของแอปพลิเคชัน
$ idf.py build กำลังรัน cmake ในไดเร็กทอรี /path/to/hello_world/build กำลังดำเนินการ “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… แจ้งเตือนเกี่ยวกับค่าที่ไม่ได้กำหนดค่า — พบ Git: /usr/bin/git (พบเวอร์ชัน “2.17.0”) — กำลังสร้างส่วนประกอบ aws_iot ที่ว่างเปล่าเนื่องจากการกำหนดค่า — ชื่อส่วนประกอบ: … — เส้นทางส่วนประกอบ: …
… (บรรทัดเอาต์พุตระบบบิลด์เพิ่มเติม)
[527/527] กำลังสร้าง hello_world.bin esptool.py v2.3.1
การสร้างโปรเจ็กต์เสร็จสมบูรณ์ หากต้องการแฟลช ให้รันคำสั่งนี้: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin หรือรันคำสั่ง 'idf.py -p PORT flash'
หากไม่มีข้อผิดพลาด การสร้างจะเสร็จสิ้นโดยการสร้างเฟิร์มแวร์ไบนารี .bin files.

ระบบเอสเพรสซิฟ

20 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
แฟลชลงในอุปกรณ์ แฟลชไฟล์ไบนารีที่คุณเพิ่งสร้าง (bootloader.bin, partition-table.bin และ hello_world.bin) ลงในบอร์ด ESP32 ของคุณโดยรัน: idf.py -p PORT [-b BAUD] flash
แทนที่ PORT ด้วยชื่อพอร์ตอนุกรมของบอร์ด ESP32 ของคุณ คุณยังสามารถเปลี่ยนอัตราบอดของแฟลชเชอร์ได้โดยการแทนที่ BAUD ด้วยอัตราบอดที่คุณต้องการ อัตราบอดเริ่มต้นคือ 460800 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอาร์กิวเมนต์ใน idf.py โปรดดู idf.py
หมายเหตุ: ตัวเลือก flash จะสร้างและแฟลชโครงการโดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องรัน idf.py build

พบปัญหาขณะแฟลชหรือไม่? หากคุณรันคำสั่งที่กำหนดและพบข้อผิดพลาด เช่น การเชื่อมต่อล้มเหลว (Failed to connectp) อาจมีสาเหตุหลายประการ หนึ่งในสาเหตุอาจเกิดจากปัญหาที่พบใน esptool.py ซึ่งเป็นยูทิลิตี้ที่ระบบบิลด์เรียกใช้เพื่อรีเซ็ตชิป เชื่อมต่อกับ ROM bootloader และแฟลชเฟิร์มแวร์ วิธีแก้ปัญหาง่ายๆ อย่างหนึ่งที่ควรลองทำคือการรีเซ็ตด้วยตนเองตามที่อธิบายไว้ด้านล่าง และหากวิธีดังกล่าวไม่ได้ผล คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่อาจเกิดขึ้นได้ในหัวข้อ "การแก้ไขปัญหาเบื้องต้น"
esptool.py จะรีเซ็ต ESP32 โดยอัตโนมัติโดยการยืนยันสายควบคุม DTR และ RTS ของชิปแปลง USB เป็นอนุกรม เช่น FTDI หรือ CP210x (สำหรับข้อมูลเพิ่มเติม โปรดดูที่ สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32) สายควบคุม DTR และ RTS จะเชื่อมต่อกับพิน GPIO0 และ CHIP_PU (EN) ของ ESP32 ตามลำดับ ซึ่งทำให้เกิดการเปลี่ยนแปลงใน voltagระดับ e ของ DTR และ RTS จะบูต ESP32 เข้าสู่โหมดดาวน์โหลดเฟิร์มแวร์ เช่นample ตรวจสอบแผนผังสำหรับบอร์ดพัฒนา ESP32 DevKitC
โดยทั่วไปแล้ว คุณไม่น่าจะมีปัญหากับบอร์ดพัฒนา esp-idf อย่างเป็นทางการ อย่างไรก็ตาม esptool.py ไม่สามารถรีเซ็ตฮาร์ดแวร์ของคุณโดยอัตโนมัติในกรณีต่อไปนี้:
· ฮาร์ดแวร์ของคุณไม่มีสาย DTR และ RTS ที่เชื่อมต่อกับ GPIO0 และ CHIP_PU · สาย DTR และ RTS ได้รับการกำหนดค่าแตกต่างกัน · ไม่มีสายควบคุมแบบอนุกรมดังกล่าวเลย
ขึ้นอยู่กับชนิดของฮาร์ดแวร์ที่คุณมี คุณอาจสามารถตั้งค่าบอร์ด ESP32 ของคุณให้เป็นโหมดดาวน์โหลดเฟิร์มแวร์ (รีเซ็ต) ด้วยตนเองได้
· สำหรับบอร์ดพัฒนาที่ผลิตโดย Espressif ข้อมูลนี้สามารถพบได้ในคู่มือเริ่มต้นใช้งานหรือคู่มือผู้ใช้ที่เกี่ยวข้อง ตัวอย่างเช่นampหากต้องการรีเซ็ตบอร์ดพัฒนา ESP-IDF ด้วยตนเอง ให้กดปุ่ม Boot (GPIO0) ค้างไว้แล้วกดปุ่ม EN (CHIP_PU)
· สำหรับฮาร์ดแวร์ประเภทอื่น ลองดึง GPIO0 ลงมา

การทำงานปกติ เมื่อทำการแฟลช คุณจะเห็นบันทึกเอาต์พุตคล้ายกับต่อไปนี้:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev พอร์ตอนุกรม /dev/ttyUSB0 กำลังเชื่อมต่อ…….._ ชิปคือ ESP32D0WDQ6 (การแก้ไข 0) คุณสมบัติ: WiFi, BT, Dual Core, รูปแบบการเขียนโค้ด ไม่มี Crystal คือ 40MHz MAC: 24:0a:c4:05:b9:14 กำลังอัปโหลดสตับ… สตับกำลังทำงาน… สตับกำลังทำงาน… เปลี่ยนอัตราบอดเรทเป็น 460800 เปลี่ยนแปลงแล้ว
(ต่อในหน้าถัดไป)

ระบบเอสเพรสซิฟ

21 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
(ต่อจากหน้าก่อนหน้า) การกำหนดค่าขนาดแฟลช… บีบอัด 3072 ไบต์เป็น 103… เขียนที่ 0x00008000… (100%) เขียน 3072 ไบต์ (บีบอัด 103) ที่ 0x00008000 ใน 0.0 วินาที (ความเร็วจริง 5962.8 กิโลบิต/วินาที)… ยืนยันแฮชของข้อมูลแล้ว บีบอัด 26096 ไบต์เป็น 15408… เขียนที่ 0x00001000… (100%) เขียน 26096 ไบต์ (บีบอัด 15408) ที่ 0x00001000 ใน 0.4 วินาที (ความเร็วจริง 546.7 กิโลบิต/วินาที)… ยืนยันแฮชของข้อมูลแล้ว บีบอัด 147104 ไบต์เป็น 77364… เขียนที่ 0x00010000… (20%) เขียนที่ 0x00014000… (40%) เขียนที่ 0x00018000… (60%) เขียนที่ 0x0001c000… (80%) เขียนที่ 0x00020000… (100%) เขียน 147104 ไบต์ (บีบอัด 77364) ที่ 0x00010000 ใน 1.9 วินาที (มีผล 615. 5 kbit/s)… แฮชของข้อมูลได้รับการตรวจสอบแล้ว
กำลังออกจากระบบ… ฮาร์ดรีเซ็ตผ่านพิน RTS… เสร็จสิ้น
หากไม่มีปัญหาใดๆ ภายในสิ้นสุดกระบวนการแฟลช บอร์ดจะรีบูตและเริ่มต้นแอปพลิเคชัน ohello_worldpapplication หากคุณต้องการใช้ Eclipse หรือ VS Code IDE แทนการรัน idf.py โปรดดูปลั๊กอิน Eclipse, ส่วนขยาย VSCode
ตรวจสอบเอาต์พุต หากต้องการตรวจสอบว่า ohello_worldpis ทำงานอยู่จริงหรือไม่ ให้พิมพ์ idf.py -p PORT monitor (อย่าลืมแทนที่ PORT ด้วยชื่อพอร์ตซีเรียลของคุณ)
คำสั่งนี้เปิดใช้แอปพลิเคชัน IDF Monitor:
$ idf.py -p ตรวจสอบการรัน idf_monitor ในไดเร็กทอรี […]/esp/hello_world/build กำลังดำเนินการ “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor บน 115200 —– ออก: Ctrl+] | เมนู: Ctrl+T | ช่วยเหลือ: Ctrl+T ตามด้วย Ctrl+H –ets 8 มิ.ย. 2016 00:22:57 น.
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 มิ.ย. 2016 00:22:57 น. …
หลังจากเริ่มระบบและเลื่อนบันทึกการวินิจฉัยขึ้นไป คุณควรจะเห็นข้อความ oHello world! พิมพ์ออกมาโดยแอปพลิเคชัน
… สวัสดีโลก! รีสตาร์ทใน 10 วินาที… นี่คือชิป esp32 ที่มี 2 คอร์ CPU, WiFi/BT/BLE, ซิลิกอนรีวิชั่น 1, แฟลชภายนอก 2MB ขนาดฮีปว่างขั้นต่ำ: 298968 ไบต์ รีสตาร์ทใน 9 วินาที… รีสตาร์ทใน 8 วินาที… รีสตาร์ทใน 7 วินาที…
หากต้องการออกจากจอภาพ IDF ให้ใช้ปุ่มลัด Ctrl+]

ระบบเอสเพรสซิฟ

22 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
หากการตรวจสอบ IDF ล้มเหลวหลังจากอัปโหลดไม่นาน หรือหากแทนที่จะแสดงข้อความข้างต้น คุณกลับพบข้อผิดพลาดแบบสุ่มคล้ายกับที่แสดงด้านล่าง แสดงว่าบอร์ดของคุณน่าจะใช้คริสตัลความถี่ 26 MHz บอร์ดพัฒนาส่วนใหญ่ใช้ความถี่ 40 MHz ดังนั้น ESP-IDF จึงใช้ความถี่นี้เป็นค่าเริ่มต้น

หากคุณประสบปัญหาดังกล่าว ให้ทำดังต่อไปนี้: 1. ออกจากจอภาพ 2. กลับไปที่ menuconfig 3. ไปที่ Component config > Hardware Settings > Main XTAL Config > Main XTAL frequency จากนั้นเปลี่ยน CONFIG_XTAL_FREQ_SEL เป็น 26 MHz 4. หลังจากนั้น สร้างและแฟลชแอปพลิเคชันอีกครั้ง
ในเวอร์ชันปัจจุบันของ ESP-IDF ความถี่ XTAL หลักที่รองรับโดย ESP32 มีดังต่อไปนี้:
· 26 เมกะเฮิรตซ์ · 40 เมกะเฮิรตซ์
หมายเหตุ: คุณสามารถรวมการสร้าง การแฟลช และการตรวจสอบเป็นขั้นตอนเดียวได้โดยรัน: idf.py -p PORT flash monitor
ดูเพิ่มเติม: · IDF Monitor สำหรับทางลัดที่มีประโยชน์และรายละเอียดเพิ่มเติมเกี่ยวกับการใช้ IDF Monitor · idf.py สำหรับการอ้างอิงคำสั่งและตัวเลือกของ idf.py อย่างครบถ้วน
แค่นี้ก็พร้อมสำหรับการเริ่มต้นใช้งาน ESP32 แล้ว! ตอนนี้คุณก็พร้อมที่จะลองสิ่งอื่นๆ แล้วampหรือไปพัฒนาแอพพลิเคชั่นของคุณเองได้เลย
สำคัญ: บางส่วนของอดีตamples ไม่รองรับ ESP32 เนื่องจากไม่มีฮาร์ดแวร์ที่จำเป็นรวมอยู่ใน ESP32 จึงไม่สามารถรองรับได้ หากสร้าง exampโปรดตรวจสอบ README file สำหรับตารางเป้าหมายที่รองรับ หากมีอยู่ รวมถึงเป้าหมาย ESP32 หรือไม่มีตารางเลย ฟังก์ชัน example จะทำงานบน ESP32
เคล็ดลับเพิ่มเติม
ปัญหาการอนุญาต /dev/ttyUSB0 ใน Linux บางรุ่น คุณอาจได้รับข้อความแสดงข้อผิดพลาด "ไม่สามารถเปิดพอร์ต /dev/ttyUSB0 ได้" เมื่อทำการแฟลช ESP32 ปัญหานี้สามารถแก้ไขได้โดยการเพิ่มผู้ใช้ปัจจุบันลงในกลุ่ม dialout
ความเข้ากันได้กับ Python: ESP-IDF รองรับ Python 3.7 หรือใหม่กว่า ขอแนะนำให้อัปเกรดระบบปฏิบัติการของคุณเป็นเวอร์ชันล่าสุดที่ตรงตามข้อกำหนดนี้ ตัวเลือกอื่นๆ ได้แก่ การติดตั้ง Python จากซอร์สโค้ด หรือการใช้ระบบจัดการเวอร์ชัน Python เช่น pyenv
เริ่มต้นด้วยแพ็คเกจสนับสนุนบอร์ด หากต้องการเร่งความเร็วในการสร้างต้นแบบบนบอร์ดพัฒนาบางบอร์ด คุณสามารถใช้แพ็คเกจสนับสนุนบอร์ด (BSP) ซึ่งจะทำให้การเริ่มต้นบอร์ดเฉพาะเป็นเรื่องง่ายด้วยการเรียกใช้ฟังก์ชันไม่กี่ครั้ง

ระบบเอสเพรสซิฟ

23 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

โดยทั่วไป BSP จะรองรับส่วนประกอบฮาร์ดแวร์ทั้งหมดที่มีให้ในบอร์ดพัฒนา นอกจากฟังก์ชันการกำหนดพินเอาต์และการเริ่มต้นระบบแล้ว BSP ยังมาพร้อมกับไดรเวอร์สำหรับส่วนประกอบภายนอก เช่น เซ็นเซอร์ จอแสดงผล ตัวแปลงสัญญาณเสียง เป็นต้น BSP เหล่านี้จะถูกแจกจ่ายผ่าน IDF Component Manager ดังนั้นจึงสามารถพบได้ใน IDF Component Registry นี่คือตัวอย่างampวิธีเพิ่ม ESP-WROVER-KIT BSP ลงในโครงการของคุณ: idf.py add-dependency esp_wrover_kit
อดีตเพิ่มเติมampการใช้งาน BSP น้อยกว่าสามารถพบได้ใน BSP เช่นampโฟลเดอร์ไฟล์.
เอกสารที่เกี่ยวข้อง สำหรับผู้ใช้ขั้นสูงที่ต้องการปรับแต่งกระบวนการติดตั้ง: · การอัปเดตเครื่องมือ ESP-IDF บน Windows · สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32 · ปลั๊กอิน Eclipse · ส่วนขยาย VSCode · IDF Monitor
การอัปเดตเครื่องมือ ESP-IDF บน Windows
ติดตั้งเครื่องมือ ESP-IDF โดยใช้สคริปต์ จาก Command Prompt ของ Windows ให้เปลี่ยนไปยังไดเร็กทอรีที่ติดตั้ง ESPIDF จากนั้นรัน:
ติดตั้ง.bat
สำหรับ Powershell ให้เปลี่ยนไปยังไดเร็กทอรีที่ติดตั้ง ESP-IDF จากนั้นรัน:
ติดตั้ง ps1
ขั้นตอนนี้จะดาวน์โหลดและติดตั้งเครื่องมือที่จำเป็นสำหรับการใช้งาน ESP-IDF หากติดตั้งเครื่องมือเวอร์ชันที่ระบุไว้แล้ว จะไม่มีการดำเนินการใดๆ เครื่องมือจะถูกดาวน์โหลดและติดตั้งลงในไดเรกทอรีที่ระบุไว้ในระหว่างกระบวนการติดตั้ง ESP-IDF Tools โดยค่าเริ่มต้นคือ C:Usersusername.espressif
เพิ่มเครื่องมือ ESP-IDF ลงใน PATH โดยใช้สคริปต์ส่งออก ตัวติดตั้งเครื่องมือ ESP-IDF จะสร้างทางลัดเมนู Start สำหรับ Command Prompt ของ oESP-IDF ทางลัดนี้จะเปิดหน้าต่าง Command Prompt ที่มีเครื่องมือทั้งหมดอยู่แล้ว
พร้อมใช้งาน ในบางกรณี คุณอาจต้องการทำงานกับ ESP-IDF ในหน้าต่าง Command Prompt ที่ไม่ได้เริ่มต้นโดยใช้ทางลัดนั้น หากเป็นกรณีนี้ ให้ทำตามคำแนะนำด้านล่างเพื่อเพิ่มเครื่องมือ ESP-IDF ลงใน PATH ใน Command Prompt ที่คุณต้องการใช้ ESP-IDF ให้เปลี่ยนไปยังไดเรกทอรีที่ติดตั้ง ESP-IDF แล้วเรียกใช้ไฟล์ export.bat:
ซีดี %userprofile%espesp-idf export.bat
อีกวิธีหนึ่งคือ ใน Powershell ที่คุณต้องการใช้ ESP-IDF ให้เปลี่ยนไปยังไดเร็กทอรีที่ติดตั้ง ESP-IDF จากนั้นดำเนินการ export.ps1:
ซีดี ~/esp/esp-idf export.ps1
เมื่อดำเนินการเสร็จสิ้น เครื่องมือต่างๆ จะพร้อมใช้งานในพรอมต์คำสั่งนี้
สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32 ส่วนนี้ให้คำแนะนำเกี่ยวกับวิธีการสร้างการเชื่อมต่อแบบอนุกรมระหว่าง ESP32 และพีซี

ระบบเอสเพรสซิฟ

24 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
เชื่อมต่อ ESP32 กับพีซี เชื่อมต่อบอร์ด ESP32 เข้ากับพีซีโดยใช้สาย USB หากไดรเวอร์อุปกรณ์ไม่ติดตั้งโดยอัตโนมัติ ให้ระบุชิปแปลง USB เป็นอนุกรมบนบอร์ด ESP32 ของคุณ (หรือดองเกิลแปลงภายนอก) ค้นหาไดรเวอร์ในอินเทอร์เน็ตและติดตั้ง ด้านล่างนี้คือรายการชิปแปลง USB เป็นอนุกรมที่ติดตั้งบนบอร์ด ESP32 ส่วนใหญ่ที่ผลิตโดย Espressif พร้อมลิงก์ไปยังไดรเวอร์:
· CP210x: ไดรเวอร์ CP210x USB to UART Bridge VCP · FTDI: ไดรเวอร์ FTDI Virtual COM Port โปรดตรวจสอบคู่มือผู้ใช้บอร์ดสำหรับชิปแปลง USB เป็นอนุกรมที่ใช้ ไดรเวอร์ข้างต้นใช้สำหรับการอ้างอิงเป็นหลัก โดยปกติแล้วไดรเวอร์ควรมาพร้อมกับระบบปฏิบัติการและติดตั้งโดยอัตโนมัติเมื่อเชื่อมต่อบอร์ดเข้ากับพีซี
ตรวจสอบพอร์ตบน Windows ตรวจสอบรายการพอร์ต COM ที่ระบุใน Windows Device Manager ถอด ESP32 ออกแล้วเชื่อมต่อกลับเข้าไปใหม่ เพื่อตรวจสอบว่าพอร์ตใดหายไปจากรายการแล้วกลับมาแสดงอีกครั้ง รูปภาพด้านล่างแสดงพอร์ตอนุกรมสำหรับ ESP32 DevKitC และ ESP32 WROVER KIT

รูปที่ 13: สะพาน USB ถึง UART ของ ESP32-DevKitC ใน Windows Device Manager

ตรวจสอบพอร์ตบน Linux และ macOS ในการตรวจสอบชื่ออุปกรณ์สำหรับพอร์ตอนุกรมของบอร์ด ESP32 ของคุณ (หรือดองเกิลตัวแปลงภายนอก) ให้รันคำสั่งนี้สองครั้ง ครั้งแรกโดยถอดบอร์ด/ดองเกิลออก จากนั้นจึงเสียบกลับเข้าไป พอร์ตที่ปรากฏขึ้นครั้งที่สองคือพอร์ตที่คุณต้องการ: Linux
ls /dev/tty*
แมคโอเอส

ระบบเอสเพรสซิฟ

25 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 14: พอร์ต USB Serial สองพอร์ตของ ESP-WROVER-KIT ใน Windows Device Manager

ระบบเอสเพรสซิฟ

26 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

ls /dev/cu.* หมายเหตุ: ผู้ใช้ macOS: หากไม่เห็นพอร์ตอนุกรม ให้ตรวจสอบว่าได้ติดตั้งไดรเวอร์ USB/อนุกรมแล้ว ดูหัวข้อ เชื่อมต่อ ESP32 เข้ากับพีซี สำหรับลิงก์ไปยังไดรเวอร์ สำหรับ macOS High Sierra (10.13) คุณอาจต้องอนุญาตให้โหลดไดรเวอร์โดยชัดเจน เปิด การตั้งค่าระบบ -> ความปลอดภัยและความเป็นส่วนตัว -> ทั่วไป แล้วตรวจสอบว่ามีข้อความแสดงที่นี่เกี่ยวกับ oSystem Software จากผู้พัฒนา lp ซึ่งชื่อผู้พัฒนาคือ Silicon Labs หรือ FTDI หรือไม่

การเพิ่มผู้ใช้ในกลุ่ม dialout บน Linux ผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบันควรมีสิทธิ์อ่านและเขียนข้อมูลผ่านพอร์ตอนุกรมผ่าน USB ในระบบปฏิบัติการ Linux ส่วนใหญ่ การเพิ่มผู้ใช้ในกลุ่ม dialout สามารถทำได้โดยคำสั่งต่อไปนี้:
sudo usermod -a -G การโทรออก $USER
ใน Arch Linux จะทำได้โดยการเพิ่มผู้ใช้ลงในกลุ่ม uucp ด้วยคำสั่งต่อไปนี้:
sudo usermod -a -G uucp $ผู้ใช้
ตรวจสอบให้แน่ใจว่าคุณลงชื่อเข้าใช้อีกครั้งเพื่อเปิดใช้สิทธิ์ในการอ่านและเขียนสำหรับพอร์ตอนุกรม
ตรวจสอบการเชื่อมต่อแบบอนุกรม ตรวจสอบว่าการเชื่อมต่อแบบอนุกรมใช้งานได้ คุณสามารถทำได้โดยใช้โปรแกรมเทอร์มินัลแบบอนุกรม โดยตรวจสอบว่ามีเอาต์พุตใดๆ บนเทอร์มินัลหลังจากรีเซ็ต ESP32 หรือไม่ อัตราบอดเริ่มต้นของคอนโซลบน ESP32 คือ 115200
Windows และ Linux ในอดีตนี้ampเราจะใช้ PuTTY SSH Client ซึ่งใช้งานได้ทั้งบน Windows และ Linux คุณสามารถใช้โปรแกรมอนุกรมอื่นๆ และตั้งค่าพารามิเตอร์การสื่อสารได้ดังที่แสดงด้านล่าง เรียกใช้เทอร์มินัลและตั้งค่าพอร์ตอนุกรมที่ระบุ อัตราบอด = 115200 (หากจำเป็น ให้เปลี่ยนเป็นอัตราบอดเริ่มต้นของชิปที่ใช้งานอยู่) บิตข้อมูล = 8, บิตหยุด = 1 และพาริตี้ = N ด้านล่างนี้เป็นตัวอย่างampภาพหน้าจอของการตั้งค่าพอร์ตและพารามิเตอร์การส่งข้อมูล (เรียกสั้นๆ ว่า 115200-8-1-N) บน Windows และ Linux โปรดจำไว้ว่าต้องเลือกพอร์ตอนุกรมเดียวกันกับที่คุณระบุไว้ในขั้นตอนข้างต้น จากนั้นเปิดพอร์ตอนุกรมในเทอร์มินัลและตรวจสอบว่าคุณเห็นบันทึกใดๆ ที่พิมพ์โดย ESP32 หรือไม่ เนื้อหาของบันทึกจะขึ้นอยู่กับแอปพลิเคชันที่โหลดลงใน ESP32 โปรดดูตัวอย่างampเอาท์พุท
หมายเหตุ: ปิดเทอร์มินัลซีเรียลหลังจากตรวจสอบว่าการสื่อสารทำงานได้ หากคุณเปิดเซสชันเทอร์มินัลไว้ พอร์ตซีเรียลจะไม่สามารถเข้าถึงได้เพื่ออัปโหลดเฟิร์มแวร์ในภายหลัง

macOS เพื่อหลีกเลี่ยงปัญหาในการติดตั้งโปรแกรมเทอร์มินัลแบบอนุกรม macOS จึงมีคำสั่ง screen มาให้ · ตามที่กล่าวไว้ในหัวข้อ ตรวจสอบพอร์ตบน Linux และ macOS ให้รันคำสั่งต่อไปนี้

ls /dev/cu.* · คุณควรเห็นผลลัพธ์ที่คล้ายกัน:

/dev/cu.Bluetooth-พอร์ตขาเข้า /dev/cu.SLAB_USBtoUART USBtoUART7

/dev/cu.SLAB_

· ผลลัพธ์จะแตกต่างกันไปขึ้นอยู่กับประเภทและจำนวนบอร์ดที่เชื่อมต่อกับพีซีของคุณ จากนั้นเลือกชื่ออุปกรณ์ของบอร์ดและรัน (หากจำเป็น ให้เปลี่ยน o115200p เป็นอัตราบอดเริ่มต้นของชิปที่ใช้งานอยู่):

หน้าจอ /dev/cu.device_name 115200 แทนที่ device_name ด้วยชื่อที่พบขณะใช้งาน ls /dev/cu.*.

ระบบเอสเพรสซิฟ

27 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 15: การตั้งค่าการสื่อสารแบบอนุกรมใน PuTTY บน Windows

ระบบเอสเพรสซิฟ

28 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

รูปที่ 16: การตั้งค่าการสื่อสารแบบอนุกรมใน PuTTY บน Linux

ระบบเอสเพรสซิฟ

29 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
· สิ่งที่คุณกำลังมองหาคือบันทึกที่แสดงบนหน้าจอ เนื้อหาของบันทึกจะขึ้นอยู่กับแอปพลิเคชันที่โหลดลงใน ESP32 โปรดดูตัวอย่างample Output หากต้องการออกจากเซสชันหน้าจอ ให้พิมพ์ Ctrl-A + .
หมายเหตุ: อย่าลืมออกจากเซสชันหน้าจอหลังจากตรวจสอบว่าการสื่อสารทำงานได้ หากไม่สำเร็จและเพียงแค่ปิดหน้าต่างเทอร์มินัล พอร์ตอนุกรมจะไม่สามารถเข้าถึงเพื่ออัปโหลดเฟิร์มแวร์ในภายหลังได้
Example Output An exampบันทึกแสดงอยู่ด้านล่าง รีเซ็ตบอร์ดหากคุณไม่เห็นอะไร ets 8 มิ.ย. 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 มิ.ย. 2016 00:22:57 น.
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage bootloader I (45) บูต: เวลาคอมไพล์ 18:48:10
-
หากคุณเห็นเอาท์พุตบันทึกที่อ่านได้ แสดงว่าการเชื่อมต่อแบบอนุกรมทำงานได้ และคุณพร้อมที่จะดำเนินการติดตั้งและอัปโหลดแอปพลิเคชันไปยัง ESP32 ในที่สุด
หมายเหตุ: สำหรับการกำหนดค่าการเดินสายพอร์ตอนุกรมบางแบบ จำเป็นต้องปิดใช้งานพิน RTS และ DTR แบบอนุกรมในโปรแกรมเทอร์มินัลก่อนที่ ESP32 จะบูตและแสดงผลเอาต์พุตแบบอนุกรมได้ ทั้งนี้ขึ้นอยู่กับฮาร์ดแวร์ของบอร์ดพัฒนาส่วนใหญ่ (รวมถึงบอร์ด Espressif ทั้งหมด) ไม่พบปัญหานี้ ปัญหานี้จะเกิดขึ้นหากเชื่อมต่อ RTS และ DTR เข้ากับพิน EN และ GPIO0 โดยตรง ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบของ esptool
หากคุณมาถึงที่นี่จากขั้นตอนที่ 5 ขั้นตอนแรกใน ESP-IDF เมื่อติดตั้งซอฟต์แวร์สำหรับการพัฒนา ESP32 คุณสามารถดำเนินการต่อด้วยขั้นตอนที่ 5 ขั้นตอนแรกใน ESP-IDF ได้
IDF Monitor เป็นโปรแกรมเทอร์มินัลแบบอนุกรมที่ทำหน้าที่ถ่ายทอดข้อมูลแบบอนุกรมไปยังและจากพอร์ตอนุกรมของอุปกรณ์เป้าหมาย นอกจากนี้ยังมีฟีเจอร์เฉพาะของ IDF อีกด้วย สามารถเรียกใช้ IDF Monitor จากโปรเจกต์ IDF ได้โดยการรัน idf.py monitor
แป้นพิมพ์ลัด สำหรับการโต้ตอบกับ IDF Monitor ได้อย่างง่ายดาย ให้ใช้แป้นพิมพ์ลัดที่ระบุไว้ในตาราง

ระบบเอสเพรสซิฟ

30 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

แป้นพิมพ์ลัด Ctrl+] Ctrl+T
· Ctrl+ที
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (หรือ A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (หรือ I)
· Ctrl+H (หรือ H)
· Ctrl+X (หรือ X)
Ctrl+ซี

การกระทำ

คำอธิบาย

ออกจากโปรแกรม ปุ่ม escape เมนู ส่งตัวอักขระเมนูไปยังรีโมท
ส่งอักขระทางออกไปยังรีโมตเอง
รีเซ็ตเป้าหมายเป็น bootloader เพื่อหยุดแอปผ่านสาย RTS
รีเซ็ตบอร์ดเป้าหมายผ่าน RTS
สร้างและแฟลชโครงการ

สร้างและแฟลชแอปเท่านั้น

หยุด/ดำเนินการต่อการพิมพ์ผลลัพธ์บันทึกบนหน้าจอ

บันทึกผลลัพธ์การหยุด/ดำเนินการต่อไปยัง file

เวลาหยุด/เริ่มใหม่amps

การพิมพ์

แสดงแป้นพิมพ์ลัดทั้งหมด

กดและทำตามโดยใช้หนึ่งในปุ่มที่ระบุไว้ด้านล่าง
รีเซ็ตเป้าหมายเข้าสู่โหมด bootloader ผ่านสาย RTS (หากเชื่อมต่ออยู่) เพื่อให้บอร์ดไม่รันโปรแกรมใดๆ มีประโยชน์เมื่อคุณต้องรอให้อุปกรณ์อื่นเริ่มทำงาน รีเซ็ตบอร์ดเป้าหมายและรีสตาร์ทแอปพลิเคชันผ่านสาย RTS (หากเชื่อมต่ออยู่)
หยุด idf_monitor เพื่อรันเป้าหมายแฟลชของโปรเจ็กต์ จากนั้นจึงเริ่ม idf_monitor ต่อ แหล่งที่มาที่เปลี่ยนแปลงใดๆ files จะถูกคอมไพล์ใหม่แล้วจึงแฟลชซ้ำ เป้าหมาย encrypted-flash จะถูกเรียกใช้หาก idf_monitor เริ่มทำงานด้วยอาร์กิวเมนต์ -E หยุด idf_monitor ชั่วคราวเพื่อรันเป้าหมาย app-flash จากนั้นจึงเริ่ม idf_monitor ต่อ คล้ายกับเป้าหมาย flash แต่เฉพาะแอปหลักเท่านั้นที่ถูกสร้างขึ้นและแฟลชซ้ำ เป้าหมาย encrypted-app-flash จะถูกเรียกใช้หาก idf_monitor เริ่มทำงานด้วยอาร์กิวเมนต์ -E ยกเลิกข้อมูลอนุกรมขาเข้าทั้งหมดในขณะที่เปิดใช้งาน ช่วยให้สามารถหยุดชั่วคราวและตรวจสอบผลลัพธ์บันทึกได้อย่างรวดเร็วโดยไม่ต้องออกจากมอนิเตอร์ สร้าง file ในไดเร็กทอรีโครงการและเอาท์พุตจะถูกเขียนลงไป file จนกว่าจะปิดใช้งานด้วยแป้นพิมพ์ลัดเดียวกัน (หรือ IDF Monitor ออกจากระบบ) IDF Monitor สามารถพิมพ์ค่าเวลาได้amp ในตอนต้นของแต่ละบรรทัด เวลาสูงสุดamp รูปแบบสามารถเปลี่ยนแปลงได้โดยใช้ –timestamp-รูปแบบอาร์กิวเมนต์บรรทัดคำสั่ง

ออกจากโปรแกรม

ขัดจังหวะการทำงานของแอปพลิเคชัน

หยุดการทำงานของ IDF Monitor และเรียกใช้โปรแกรมดีบักโครงการ GDB เพื่อดีบักแอปพลิเคชันขณะรันไทม์ ต้องเปิดใช้งานตัวเลือก :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME

การกดปุ่มใดๆ นอกเหนือจาก Ctrl-] และ Ctrl-T จะถูกส่งผ่านพอร์ตซีเรียล

คุณสมบัติเฉพาะของ IDF

การถอดรหัสที่อยู่อัตโนมัติ เมื่อใดก็ตามที่ ESP-IDF ส่งออกที่อยู่รหัสเลขฐานสิบหกในรูปแบบ 0x4_______ IDF Monitor จะใช้ addr2line_ เพื่อค้นหาตำแหน่งในโค้ดต้นฉบับและค้นหาชื่อฟังก์ชัน
หากแอป ESP-IDF ขัดข้องและเกิดข้อผิดพลาด จะมีการสร้างข้อมูลดัมพ์รีจิสเตอร์และแบ็คเทรซ เช่นต่อไปนี้:

ระบบเอสเพรสซิฟ

31 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

ข้อผิดพลาดของการทำสมาธิของครูประเภท StoreProhibited เกิดขึ้นบนแกน 0 ข้อยกเว้นคือ

ไม่ได้รับการจัดการ

ดัมพ์ทะเบียน:

PC

: 0x400f360d ป.ล.

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

ขนาด 0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

เอ10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

เอ14

: 0x00000047 A15

: 0x0000000f ภาษีขาย

: 0x00000019 ข้อยกเว้น:

0x0000001d

EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :

ขนาด 0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90

IDF Monitor เพิ่มรายละเอียดเพิ่มเติมลงในข้อมูลดัมพ์:

ข้อผิดพลาดของการทำสมาธิของครูประเภท StoreProhibited เกิดขึ้นบนแกน 0 ข้อยกเว้นคือ

ไม่ได้รับการจัดการ

ดัมพ์ทะเบียน:

PC

: 0x400f360d ป.ล.

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d: do_something_to_crash ที่ /home/gus/esp/32/idf/exampเลส/เริ่มต้น/

สวัสดีโลก/เมน/./สวัสดีโลก_เมน.c:57

(มีเส้นแบ่ง) inner_dont_crash ที่ /home/gus/esp/32/idf/exampเลส/เริ่มต้น/สวัสดี_

โลก/หลัก/./hello_world_main.c:52

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

ขนาด 0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

เอ10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

เอ14

: 0x00000047 A15

: 0x0000000f ภาษีขาย

: 0x00000019 ข้อยกเว้น:

0x0000001d

EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :

ขนาด 0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (แทรกโดย) inner_dont_crash ที่ /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash ที่ /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash ที่ /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main ที่ /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task ที่ /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254

ในการถอดรหัสแต่ละที่อยู่ IDF Monitor จะรันคำสั่งต่อไปนี้ในพื้นหลัง: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS

หมายเหตุ: ตั้งค่าตัวแปรสภาพแวดล้อม ESP_MONITOR_DECODE เป็น 0 หรือเรียกใช้ idf_monitor.py ด้วยบรรทัดคำสั่งเฉพาะ

ระบบเอสเพรสซิฟ

32 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
ตัวเลือก: idf_monitor.py –disable-address-decoding เพื่อปิดใช้งานการถอดรหัสที่อยู่
การรีเซ็ตเป้าหมายเมื่อเชื่อมต่อ โดยค่าเริ่มต้น IDF Monitor จะรีเซ็ตเป้าหมายเมื่อเชื่อมต่อ การรีเซ็ตชิปเป้าหมายจะดำเนินการโดยใช้สายอนุกรม DTR และ RTS เพื่อป้องกันไม่ให้ IDF Monitor รีเซ็ตเป้าหมายโดยอัตโนมัติเมื่อเชื่อมต่อ ให้เรียกใช้ IDF Monitor ด้วยตัวเลือก –no-reset (เช่น idf_monitor.py –no-reset)
หมายเหตุ: ตัวเลือก –no-reset จะใช้ลักษณะการทำงานเดียวกันแม้เมื่อเชื่อมต่อ IDF Monitor เข้ากับพอร์ตใดพอร์ตหนึ่ง (เช่น idf.py monitor –no-reset -p [PORT])
การเรียกใช้ GDB ด้วย GDBStub GDBStub เป็นฟีเจอร์ดีบักแบบรันไทม์ที่มีประโยชน์ซึ่งทำงานบนเป้าหมายและเชื่อมต่อกับโฮสต์ผ่านพอร์ตอนุกรมเพื่อรับคำสั่งดีบัก GDBStub รองรับคำสั่งต่างๆ เช่น การอ่านหน่วยความจำและตัวแปร การตรวจสอบเฟรมสแต็กการเรียก เป็นต้น แม้ว่า GDBStub จะมีความยืดหยุ่นน้อยกว่า JTAG การดีบักนั้นไม่จำเป็นต้องใช้ฮาร์ดแวร์พิเศษใดๆ (เช่น JTAG ไปยัง USB bridge) เนื่องจากการสื่อสารทำผ่านพอร์ตอนุกรมทั้งหมด คุณสามารถกำหนดค่าเป้าหมายให้รัน GDBStub ในเบื้องหลังได้โดยการตั้งค่า CONFIG_ESP_SYSTEM_PANIC ให้กับ GDBStub ขณะรันไทม์ GDBStub จะทำงานเบื้องหลังจนกว่าจะมีการส่งข้อความ Ctrl+C ผ่านพอร์ตอนุกรม และทำให้ GDBStub หยุดทำงาน (กล่าวคือ หยุดการทำงานของโปรแกรม) ทำให้ GDBStub สามารถจัดการคำสั่งดีบักได้ นอกจากนี้ ตัวจัดการ panic ยังสามารถกำหนดค่าให้รัน GDBStub เมื่อเกิดการขัดข้องได้โดยการตั้งค่า CONFIG_ESP_SYSTEM_PANIC ให้กับ GDBStub เมื่อเกิดการขัดข้อง GDBStub จะแสดงรูปแบบสตริงพิเศษผ่านพอร์ตอนุกรมเพื่อระบุว่ากำลังทำงานอยู่ ในทั้งสองกรณี (เช่น การส่งข้อความ Ctrl+C หรือการรับรูปแบบสตริงพิเศษ) IDF Monitor จะเปิด GDB โดยอัตโนมัติเพื่อให้ผู้ใช้สามารถส่งคำสั่งดีบักได้ หลังจาก GDB ออกจากระบบ เป้าหมายจะถูกรีเซ็ตผ่านสายอนุกรม RTS หากไม่ได้เชื่อมต่อสายนี้ ผู้ใช้สามารถรีเซ็ตเป้าหมายได้ (โดยการกดปุ่มรีเซ็ตบนบอร์ด)
หมายเหตุ: ในพื้นหลัง IDF Monitor จะรันคำสั่งต่อไปนี้เพื่อเปิดใช้งาน GDB:
xtensa-esp32-elf-gdb -ex “ตั้งค่าบอดอนุกรม BAUD” -ex “กำหนดเป้าหมายพอร์ตระยะไกล” -ex ขัดจังหวะการสร้าง/โครงการ elf :idf_target:`สวัสดีชิปชื่อ`

การกรองเอาต์พุต สามารถเรียกใช้ IDF monitor ได้โดยใช้ idf.py monitor –print-filter=”xyz” โดยที่ –print-filter คือพารามิเตอร์สำหรับการกรองเอาต์พุต ค่าเริ่มต้นคือสตริงว่าง ซึ่งหมายความว่าทุกอย่างจะถูกพิมพ์ออกมา
ข้อจำกัดในการพิมพ์สามารถระบุได้เป็นชุดtag- รายการที่tag> คือ tag สตริงและ เป็นอักขระจากชุด {N, E, W, I, D, V, *} ที่อ้างอิงถึงระดับสำหรับการบันทึกข้อมูล
เช่นample, PRINT_FILTER=”tag1:W” จับคู่และพิมพ์เฉพาะเอาต์พุตที่เขียนด้วย ESP_LOGW(“tag1”, …) หรือที่ระดับความละเอียดต่ำกว่า เช่น ESP_LOGE(“tag1″, …). ไม่ได้ระบุ หรือใช้ * ค่าเริ่มต้นจะเป็นระดับ Verbose
หมายเหตุ: ใช้การบันทึกข้อมูลหลักเพื่อปิดใช้งานเอาต์พุตที่ไม่ต้องการผ่านไลบรารีการบันทึกข้อมูลขณะคอมไพล์ การกรองเอาต์พุตด้วย IDF Monitor เป็นโซลูชันรองซึ่งมีประโยชน์สำหรับการปรับตัวเลือกการกรองโดยไม่ต้องคอมไพล์แอปพลิเคชันใหม่
แอปของคุณ tags ต้องไม่ประกอบด้วยช่องว่าง เครื่องหมายดอกจัน * หรือเครื่องหมายโคลอน : เพื่อให้เข้ากันได้กับฟีเจอร์การกรองเอาต์พุต
หากบรรทัดสุดท้ายของเอาต์พุตในแอปของคุณไม่ได้ตามด้วย carriage return การกรองเอาต์พุตอาจเกิดความสับสน กล่าวคือ มอนิเตอร์จะเริ่มพิมพ์บรรทัดนั้น และภายหลังพบว่าบรรทัดนั้นไม่ควรถูกเขียน นี่เป็นปัญหาที่ทราบกันดีและสามารถหลีกเลี่ยงได้โดยการเพิ่ม carriage return เสมอ (โดยเฉพาะอย่างยิ่งเมื่อไม่มีเอาต์พุตตามมาทันที)

ระบบเอสเพรสซิฟ

33 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
Exampกฎการกรอง:
· * สามารถใช้จับคู่กับอะไรก็ได้ tagsอย่างไรก็ตาม สตริง PRINT_FILTER=”*:I tag1:E” เกี่ยวกับ tag1 พิมพ์ข้อผิดพลาดเท่านั้นเนื่องจากกฎสำหรับ tag1 มีลำดับความสำคัญสูงกว่ากฎสำหรับ *
· กฎเริ่มต้น (ว่างเปล่า) เทียบเท่ากับ *:V เนื่องจากตรงกับทุก ๆ tag ในระดับ Verbose หรือต่ำกว่า หมายถึง การจับคู่ทุกอย่าง
· “*:N” ไม่เพียงแต่ระงับเอาต์พุตจากฟังก์ชันการบันทึกเท่านั้น แต่ยังระงับการพิมพ์ที่สร้างโดย printf เป็นต้น เพื่อหลีกเลี่ยงปัญหานี้ ให้ใช้ *:E หรือระดับความละเอียดที่สูงกว่า
· กฎ "tag1:วี”, “tag1:v”, “tag1:”, “tag1:*” และ “tag1” เทียบเท่ากัน · กฎ “tag1:ว. tag1:E” เทียบเท่ากับ “tag1:E” เพราะการเกิดขึ้นต่อเนื่องของสิ่งเดียวกัน tag
ชื่อจะเขียนทับชื่อก่อนหน้า · กฎ “tag1:ฉัน tag2:W” พิมพ์เฉพาะ tag1 ในระดับความละเอียดของข้อมูลหรือต่ำกว่าและ tag2 ที่คำเตือน
ระดับความเยิ่นเย้อหรือต่ำกว่า · กฎ “tag1:ฉัน tag2:ว. tag3:N” เทียบเท่ากับตัวก่อนหน้าโดยพื้นฐานแล้วเนื่องจาก tag3:N ระบุ
ที่ tag3 ไม่ควรพิมพ์ · tag3:N ในกฎ “tag1:ฉัน tag2:ว. tag3:N *:V” มีความหมายมากกว่าเพราะไม่มี tag3:N เดอะ
tagสามารถพิมพ์ข้อความได้ 3 ข้อความ; ข้อผิดพลาดสำหรับ tag1 และ tag2 จะถูกพิมพ์ที่ระดับความละเอียดที่ระบุ (หรือต่ำกว่า) และทุกอย่างอื่นจะถูกพิมพ์ตามค่าเริ่มต้น
การกรองที่ซับซ้อนยิ่งขึ้นample ได้รับบันทึกสั้นๆ ต่อไปนี้โดยไม่มีตัวเลือกการกรองใดๆ:
โหลด: 0x40078000, len: 13564 รายการ 0x40078d4c E (31) esp_image: ภาพที่ 0x30000 มีไบต์วิเศษที่ไม่ถูกต้อง W (31) esp_image: ภาพที่ 0x30000 มีโหมด SPI ที่ไม่ถูกต้อง 255 E (39) boot: พาร์ติชันแอปจากโรงงานไม่สามารถบูตได้ I (568) cpu_start: Pro cpu กำลังทำงาน I (569) heap_init: กำลังเริ่มต้น RAM ที่พร้อมใช้งานสำหรับการจัดสรรแบบไดนามิก: I (603) cpu_start: รหัสผู้ใช้ Pro cpu start D (309) light_driver: [light_init, 74]: สถานะ: 1, โหมด: 2 D (318) vfs: esp_vfs_register_fd_range สำเร็จสำหรับช่วง <54; 64) และ VFS ID 1 I (328) wifi: งานไดรเวอร์ wifi: 3ffdbf84, prio:23, stack:4096, core=0
ผลลัพธ์ที่จับได้สำหรับตัวเลือกการกรอง PRINT_FILTER=”wifi esp_image:E light_driver:I” มีดังต่อไปนี้:
E (31) esp_image: รูปภาพที่ 0x30000 มีไบต์วิเศษที่ไม่ถูกต้อง I (328) wifi: งานไดรเวอร์ wifi: 3ffdbf84, prio:23, stack:4096, core=0
ตัวเลือก “PRINT_FILTER=”light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V” จะแสดงผลลัพธ์ต่อไปนี้:
โหลด: 0x40078000, len: 13564 รายการ 0x40078d4c I (569) heap_init: กำลังเริ่มต้น RAM ที่พร้อมใช้งานสำหรับการจัดสรรแบบไดนามิก: D (309) light_driver: [light_init, 74]: สถานะ: 1, โหมด: 2
ปัญหาที่ทราบเกี่ยวกับ IDF Monitor
ปัญหาที่พบบน Windows
· ปุ่มลูกศร รวมถึงปุ่มอื่นๆ บางปุ่ม จะไม่ทำงานใน GDB เนื่องจากข้อจำกัดของคอนโซล Windows · ในบางครั้ง เมื่อ oidf.pype ออกจากระบบ อาจเกิดการหยุดชะงักนานถึง 30 วินาที ก่อนที่ IDF Monitor จะกลับมาทำงานอีกครั้ง · เมื่อ ogdbpis ทำงาน อาจเกิดการหยุดชะงักชั่วขณะหนึ่ง ก่อนที่จะเริ่มสื่อสารกับ GDBStub

ระบบเอสเพรสซิฟ

34 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้นการตั้งค่า Toolchain มาตรฐานสำหรับ Linux และ macOS

แผนงานการติดตั้งแบบทีละขั้นตอน นี่คือแผนงานโดยละเอียดที่จะแนะนำคุณตลอดกระบวนการติดตั้ง
การตั้งค่าสภาพแวดล้อมการพัฒนา นี่คือขั้นตอนในการตั้งค่า ESP-IDF สำหรับ ESP32 ของคุณ ขั้นตอนที่ 1: ติดตั้งข้อกำหนดเบื้องต้น ขั้นตอนที่ 2: รับ ESP-IDF ขั้นตอนที่ 3: ตั้งค่าเครื่องมือ ขั้นตอนที่ 4: ตั้งค่าตัวแปรสภาพแวดล้อม ขั้นตอนที่ 5: ขั้นตอนแรกใน ESP-IDF
ขั้นตอนที่ 1: ติดตั้งข้อกำหนดเบื้องต้น ในการใช้ ESP-IDF กับ ESP32 คุณจำเป็นต้องติดตั้งแพ็กเกจซอฟต์แวร์บางตัวตามระบบปฏิบัติการของคุณ คู่มือการตั้งค่านี้จะช่วยคุณในการติดตั้งทุกอย่างบนระบบที่ใช้ Linux และ macOS
สำหรับผู้ใช้ Linux ในการคอมไพล์โดยใช้ ESP-IDF คุณจะต้องมีแพ็กเกจต่อไปนี้ คำสั่งที่จะรันขึ้นอยู่กับระบบปฏิบัติการ Linux ที่คุณใช้:
· Ubuntu และ Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 และ 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 ยังคงรองรับอยู่ แต่แนะนำให้ใช้ CentOS เวอร์ชัน 8 เพื่อประสบการณ์ผู้ใช้ที่ดีขึ้น · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
หมายเหตุ: · ต้องใช้ CMake เวอร์ชัน 3.16 หรือใหม่กว่าเพื่อใช้งานร่วมกับ ESP-IDF เรียกใช้ otools/idf_tools.py install cmakep เพื่อติดตั้งเวอร์ชันที่เหมาะสม หากระบบปฏิบัติการของคุณไม่มีเวอร์ชันดังกล่าว · หากคุณไม่พบเวอร์ชัน Linux ของคุณในรายการด้านบน โปรดตรวจสอบเอกสารประกอบเพื่อดูว่าควรใช้คำสั่งใดในการติดตั้งแพ็กเกจ
สำหรับผู้ใช้ macOS ESP-IDF จะใช้เวอร์ชันของ Python ที่ติดตั้งไว้ตามค่าเริ่มต้นบน macOS · ติดตั้ง CMake และ Ninja build: หากคุณมี HomeBrew คุณสามารถรัน: brew install cmake ninja dfu-util หากคุณมี MacPorts คุณสามารถรัน: sudo port install cmake ninja dfu-util หรือดูที่หน้าแรกของ CMake และ Ninja สำหรับการดาวน์โหลดการติดตั้ง macOS

ระบบเอสเพรสซิฟ

35 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
· ขอแนะนำอย่างยิ่งให้ติดตั้ง ccache ด้วยเพื่อให้สร้างได้เร็วขึ้น หากคุณมี HomeBrew สามารถทำได้ผ่าน brew install ccache หรือ sudo port install ccache บน MacPorts
หมายเหตุ: หากแสดงข้อผิดพลาดเช่นนี้ในขั้นตอนใดก็ตาม: xcrun: ข้อผิดพลาด: เส้นทางนักพัฒนาที่ใช้งานอยู่ไม่ถูกต้อง (/Library/Developer/CommandLineTools) xcrun หายไปที่: /Library/Developer/CommandLineTools/usr/bin/xcrun
จากนั้นคุณจะต้องติดตั้งเครื่องมือบรรทัดคำสั่ง XCode เพื่อดำเนินการต่อ คุณสามารถติดตั้งเครื่องมือเหล่านี้ได้โดยรันคำสั่ง xcode-select –install
ผู้ใช้ Apple M1 หากคุณใช้แพลตฟอร์ม Apple M1 และพบข้อผิดพลาดดังนี้: คำเตือน: มีไดเร็กทอรีสำหรับเครื่องมือ xtensa-esp32-elf เวอร์ชัน esp-2021r2-patch3-8.4.0 แต่ไม่พบเครื่องมือ ข้อผิดพลาด: เครื่องมือ xtensa-esp32-elf ไม่มีเวอร์ชันที่ติดตั้ง โปรดเรียกใช้ไฟล์ 'install.sh' เพื่อติดตั้ง
หรือ: zsh: ประเภท CPU ไม่ดีในไฟล์ปฏิบัติการ: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
จากนั้นคุณจะต้องติดตั้ง Apple Rosetta 2 โดยรัน /usr/sbin/softwareupdate –install-rosetta –agree-to-license
การติดตั้ง Python 3 อ้างอิงจากบันทึกประจำรุ่นของ macOS Catalina 10.15 ไม่แนะนำให้ใช้ Python 2.7 และจะไม่มี Python 2.7 รวมอยู่ใน macOS เวอร์ชันถัดไปโดยค่าเริ่มต้น โปรดตรวจสอบเวอร์ชัน Python ที่คุณมีในปัจจุบัน: python –version
หากผลลัพธ์เป็นเช่น Python 2.7.17 ล่ามเริ่มต้นของคุณคือ Python 2.7 หากเป็นเช่นนั้น ให้ตรวจสอบว่าคอมพิวเตอร์ของคุณยังไม่ได้ติดตั้ง Python 3 ไว้หรือไม่: python3 –version
หากคำสั่งข้างต้นส่งกลับข้อผิดพลาด แสดงว่าไม่ได้ติดตั้ง Python 3 ไว้ ด้านล่างนี้คือตัวอย่างview ขั้นตอนการติดตั้ง Python 3
· การติดตั้งด้วย HomeBrew สามารถทำได้ดังนี้: brew install python3
· หากคุณมี MacPorts คุณสามารถรัน: sudo port install python38
ขั้นตอนที่ 2: รับ ESP-IDF ในการสร้างแอปพลิเคชันสำหรับ ESP32 คุณต้องมีไลบรารีซอฟต์แวร์ที่ Espressif จัดเตรียมไว้ให้ในคลังข้อมูล ESP-IDF หากต้องการรับ ESP-IDF ให้ไปที่ไดเรกทอรีการติดตั้งของคุณและโคลนคลังข้อมูลด้วย git clone ตามคำแนะนำด้านล่างสำหรับระบบปฏิบัติการของคุณ เปิด Terminal และรันคำสั่งต่อไปนี้:

ระบบเอสเพรสซิฟ

36 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF จะถูกดาวน์โหลดลงใน ~/esp/esp-idf ศึกษารุ่น ESP-IDF สำหรับข้อมูลเกี่ยวกับรุ่น ESP-IDF ที่จะใช้ในสถานการณ์ที่กำหนด
ขั้นตอนที่ 3 ตั้งค่าเครื่องมือ นอกเหนือจาก ESP-IDF แล้ว คุณยังต้องติดตั้งเครื่องมือที่ใช้โดย ESP-IDF เช่น คอมไพเลอร์ ดีบักเกอร์ แพ็คเกจ Python ฯลฯ สำหรับโปรเจ็กต์ที่รองรับ ESP32 cd ~/esp/esp-idf ./install.sh esp32
หรือด้วย Fish shell cd ~/esp/esp-idf ./install.fish esp32
คำสั่งข้างต้นติดตั้งเครื่องมือสำหรับ ESP32 เท่านั้น หากคุณต้องการพัฒนาโครงการสำหรับเป้าหมายชิปเพิ่มเติม คุณควรแสดงรายการทั้งหมดและเรียกใช้คำสั่งเหล่านี้ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
หรือด้วย Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
หากต้องการติดตั้งเครื่องมือสำหรับเป้าหมายที่รองรับทั้งหมด โปรดรันคำสั่งต่อไปนี้: cd ~/esp/esp-idf ./install.sh all
หรือด้วย Fish shell cd ~/esp/esp-idf ./install.fish all
หมายเหตุ: สำหรับผู้ใช้ macOS หากแสดงข้อผิดพลาดเช่นนี้ในระหว่างขั้นตอนใดๆ ให้ทำดังนี้:urlข้อผิดพลาดการเปิด [SSL: CERTIFICATE_VERIFY_FAILED] การตรวจสอบใบรับรองล้มเหลว: ไม่สามารถรับใบรับรองผู้ออกใบรับรองในพื้นที่ (_ssl.c:xxx)
คุณสามารถเรียกใช้คำสั่ง Install Certificates.command ในโฟลเดอร์ Python ของคอมพิวเตอร์เพื่อติดตั้งใบรับรองได้ สำหรับรายละเอียดเพิ่มเติม โปรดดูข้อผิดพลาดในการดาวน์โหลดขณะติดตั้งเครื่องมือ ESP-IDF

ทางเลือก File ดาวน์โหลดเครื่องมือติดตั้งจะดาวน์โหลดจำนวนหนึ่ง fileแนบมากับ GitHub Releases หากการเข้าถึง GitHub ช้า คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมให้เลือกใช้เซิร์ฟเวอร์ดาวน์โหลด Espressifns สำหรับการดาวน์โหลดทรัพยากร GitHub ได้

หมายเหตุ: การตั้งค่านี้ควบคุมเฉพาะเครื่องมือแต่ละรายการที่ดาวน์โหลดจากรุ่น GitHub เท่านั้น ไม่เปลี่ยนแปลง URLใช้ในการเข้าถึงที่เก็บ Git ใด ๆ

หากต้องการเลือกใช้เซิร์ฟเวอร์ดาวน์โหลด Espressif เมื่อติดตั้งเครื่องมือ ให้ใช้ลำดับคำสั่งต่อไปนี้เมื่อรัน install.sh:

ระบบเอสเพรสซิฟ

37 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

ซีดี ~/esp/esp-idf ส่งออก IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
การปรับแต่งเส้นทางการติดตั้งเครื่องมือ สคริปต์ที่แนะนำในขั้นตอนนี้จะติดตั้งเครื่องมือคอมไพล์ที่จำเป็นสำหรับ ESP-IDF ภายในไดเรกทอรีหลักของผู้ใช้: $HOME/.espressif บน Linux หากคุณต้องการติดตั้งเครื่องมือในไดเรกทอรีอื่น ให้ตั้งค่าตัวแปรสภาพแวดล้อม IDF_TOOLS_PATH ก่อนเรียกใช้สคริปต์การติดตั้ง ตรวจสอบให้แน่ใจว่าบัญชีผู้ใช้ของคุณมีสิทธิ์เพียงพอที่จะอ่านและเขียนเส้นทางนี้ หากเปลี่ยน IDF_TOOLS_PATH โปรดตรวจสอบให้แน่ใจว่าได้ตั้งค่าเป็นค่าเดียวกันทุกครั้งที่เรียกใช้สคริปต์ติดตั้ง (install.bat, install.ps1 หรือ install.sh) และสคริปต์ส่งออก (export.bat, export.ps1 หรือ export.sh)
ขั้นตอนที่ 4. ตั้งค่าตัวแปรสภาพแวดล้อม เครื่องมือที่ติดตั้งยังไม่ได้ถูกเพิ่มเข้าไปในตัวแปรสภาพแวดล้อม PATH เพื่อให้เครื่องมือสามารถใช้งานได้จากบรรทัดคำสั่ง จำเป็นต้องตั้งค่าตัวแปรสภาพแวดล้อมบางตัว ESP-IDF มีสคริปต์อื่นที่ทำหน้าที่นี้ ในเทอร์มินัลที่คุณจะใช้ ESP-IDF ให้รันคำสั่งต่อไปนี้:
- $HOME/esp/esp-idf/export.sh
หรือสำหรับปลา (รองรับตั้งแต่เวอร์ชันปลา 3.0.0 เท่านั้น):
. $HOME/esp/esp-idf/ส่งออกปลา
โปรดสังเกตช่องว่างระหว่างจุดนำหน้าและเส้นทาง! หากคุณวางแผนที่จะใช้ esp-idf บ่อยๆ คุณสามารถสร้างนามแฝงสำหรับการดำเนินการ export.sh ได้:
1. คัดลอกและวางคำสั่งต่อไปนี้ลงใน shellns pro ของคุณfile (.โปรfile, .bashrc, .zprofileฯลฯ)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. รีเฟรชการกำหนดค่าโดยการรีสตาร์ทเซสชันเทอร์มินัลหรือโดยการรัน source [path to profile],
สำหรับอดีตample, source ~/.bashrc ตอนนี้คุณสามารถรัน get_idf เพื่อตั้งค่าหรือรีเฟรชสภาพแวดล้อม esp-idf ในเซสชันเทอร์มินัลใดๆ ก็ได้ ในทางเทคนิคแล้ว คุณสามารถเพิ่ม export.sh ลงใน shellns pro ของคุณได้file โดยตรง อย่างไรก็ตาม ไม่แนะนำให้ทำเช่นนี้ การทำเช่นนี้จะเปิดใช้งานสภาพแวดล้อมเสมือนของ IDF ในทุกเซสชันเทอร์มินัล (รวมถึงเซสชันที่ไม่จำเป็นต้องใช้ IDF) ซึ่งขัดต่อวัตถุประสงค์ของสภาพแวดล้อมเสมือนและอาจส่งผลกระทบต่อซอฟต์แวร์อื่นๆ
ขั้นตอนที่ 5: ขั้นตอนแรกใน ESP-IDF เมื่อตรงตามข้อกำหนดทั้งหมดแล้ว หัวข้อถัดไปจะแนะนำวิธีเริ่มต้นโปรเจกต์แรกของคุณ คู่มือนี้จะช่วยคุณในขั้นตอนแรกในการใช้ ESP-IDF ทำตามคำแนะนำนี้เพื่อเริ่มต้นโปรเจกต์ใหม่บน ESP32 และสร้าง แฟลช และตรวจสอบเอาต์พุตของอุปกรณ์
หมายเหตุ: หากคุณยังไม่ได้ติดตั้ง ESP-IDF โปรดไปที่การติดตั้งและทำตามคำแนะนำเพื่อรับซอฟต์แวร์ทั้งหมดที่จำเป็นในการใช้คู่มือนี้

เริ่มโครงการ ตอนนี้คุณพร้อมที่จะเตรียมแอปพลิเคชันของคุณสำหรับ ESP32 แล้ว คุณสามารถเริ่มต้นด้วยโครงการ getstarted/hello_world จาก examples ไดเร็กทอรีใน ESP-IDF

สิ่งสำคัญ: ระบบสร้าง ESP-IDF ไม่รองรับช่องว่างในเส้นทางไปยัง ESP-IDF หรือไปยังโปรเจ็กต์

คัดลอกโครงการ get-started/hello_world ไปยังไดเร็กทอรี ~/esp:

ระบบเอสเพรสซิฟ

38 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
ซีดี ~/esp cp -r $IDF_PATH/examples/get-started/hello_world
หมายเหตุ: มีช่วงของ exampโครงการในอดีตamples ไดเร็กทอรีใน ESP-IDF คุณสามารถคัดลอกโครงการใด ๆ ในลักษณะเดียวกับที่แสดงด้านบนและเรียกใช้ นอกจากนี้ยังสามารถสร้าง exampอยู่ในสถานที่โดยไม่ต้องคัดลอกก่อน
เชื่อมต่ออุปกรณ์ของคุณ ตอนนี้เชื่อมต่อบอร์ด ESP32 ของคุณเข้ากับคอมพิวเตอร์ และตรวจสอบว่าบอร์ดมองเห็นพอร์ตซีเรียลใด พอร์ตซีเรียลมีรูปแบบการตั้งชื่อดังต่อไปนี้:
· Linux: เริ่มต้นด้วย /dev/tty · macOS: เริ่มต้นด้วย /dev/cu หากคุณไม่แน่ใจว่าจะตรวจสอบชื่อพอร์ตอนุกรมอย่างไร โปรดดูรายละเอียดเพิ่มเติมในหัวข้อ สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32
หมายเหตุ: เก็บชื่อพอร์ตไว้ใกล้ตัว เพราะคุณจะต้องใช้ในขั้นตอนถัดไป
กำหนดค่าโครงการของคุณ ไปที่ไดเร็กทอรี hello_world ของคุณ ตั้งค่า ESP32 เป็นเป้าหมาย และเรียกใช้ยูทิลิตี้กำหนดค่าโครงการ menuconfig cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
หลังจากเปิดโปรเจ็กต์ใหม่ คุณควรตั้งค่าเป้าหมายด้วยไฟล์ idf.py set-target esp32 ก่อน โปรดทราบว่าบิลด์และคอนฟิกูเรชันที่มีอยู่ในโปรเจ็กต์ (ถ้ามี) จะถูกล้างและเริ่มต้นใช้งานในกระบวนการนี้ คุณสามารถบันทึกเป้าหมายไว้ในตัวแปรสภาพแวดล้อมเพื่อข้ามขั้นตอนนี้ได้เลย ดูข้อมูลเพิ่มเติมได้ที่ เลือกชิปเป้าหมาย: set-target หากทำตามขั้นตอนก่อนหน้านี้อย่างถูกต้อง เมนูต่อไปนี้จะปรากฏขึ้น:

รูปที่ 17: การกำหนดค่าโครงการ – หน้าต่างหลัก คุณกำลังใช้เมนูนี้เพื่อตั้งค่าตัวแปรเฉพาะของโครงการ เช่น ชื่อและรหัสผ่านเครือข่าย Wi-Fi ความเร็วโปรเซสเซอร์ ฯลฯ การตั้งค่าโครงการด้วย menuconfig อาจถูกข้ามไปสำหรับ ohello_worldp เนื่องจาก ex นี้ampเลอวิ่งด้วย

ระบบเอสเพรสซิฟ

39 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
การกำหนดค่าเริ่มต้น
หมายเหตุ: หากคุณใช้บอร์ด ESP32-DevKitC กับโมดูล ESP32-SOLO-1 หรือบอร์ด ESP32-DevKitM-1 กับโมดูล ESP32-MIN1-1(1U) โปรดเปิดใช้งานโหมดคอร์เดียว (CONFIG_FREERTOS_UNICORE) ใน menuconfig ก่อนที่จะแฟลช exampเลส.
หมายเหตุ: สีของเมนูอาจแตกต่างกันไปในเทอร์มินัลของคุณ คุณสามารถเปลี่ยนรูปลักษณ์ได้ด้วยตัวเลือก –style โปรดดูข้อมูลเพิ่มเติมในไฟล์ idf.py menuconfig –help
หากคุณกำลังใช้บอร์ดพัฒนาที่รองรับอยู่ คุณสามารถเร่งการพัฒนาของคุณได้โดยใช้แพ็คเกจ Board Support ดูเคล็ดลับเพิ่มเติมสำหรับข้อมูลเพิ่มเติม
สร้างโครงการ สร้างโครงการโดยการรัน:
idf.py สร้าง
คำสั่งนี้จะรวบรวมแอปพลิเคชันและส่วนประกอบ ESP-IDF ทั้งหมด จากนั้นจะสร้าง bootloader ตารางพาร์ติชั่น และไบนารีของแอปพลิเคชัน
$ idf.py build กำลังรัน cmake ในไดเร็กทอรี /path/to/hello_world/build กำลังดำเนินการ “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… แจ้งเตือนเกี่ยวกับค่าที่ไม่ได้กำหนดค่า — พบ Git: /usr/bin/git (พบเวอร์ชัน “2.17.0”) — กำลังสร้างส่วนประกอบ aws_iot ที่ว่างเปล่าเนื่องจากการกำหนดค่า — ชื่อส่วนประกอบ: … — เส้นทางส่วนประกอบ: …
… (บรรทัดเอาต์พุตระบบบิลด์เพิ่มเติม)
[527/527] กำลังสร้าง hello_world.bin esptool.py v2.3.1
การสร้างโปรเจ็กต์เสร็จสมบูรณ์ หากต้องการแฟลช ให้รันคำสั่งนี้: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin หรือรันคำสั่ง 'idf.py -p PORT flash'
หากไม่มีข้อผิดพลาด การสร้างจะเสร็จสิ้นโดยการสร้างเฟิร์มแวร์ไบนารี .bin files.
แฟลชลงในอุปกรณ์ แฟลชไฟล์ไบนารีที่คุณเพิ่งสร้าง (bootloader.bin, partition-table.bin และ hello_world.bin) ลงในบอร์ด ESP32 ของคุณโดยรัน:
idf.py -p PORT [-b BAUD] แฟลช
แทนที่ PORT ด้วยชื่อพอร์ตอนุกรมของบอร์ด ESP32 ของคุณ คุณยังสามารถเปลี่ยนอัตราบอดของแฟลชเชอร์ได้โดยการแทนที่ BAUD ด้วยอัตราบอดที่คุณต้องการ อัตราบอดเริ่มต้นคือ 460800 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอาร์กิวเมนต์ใน idf.py โปรดดู idf.py
หมายเหตุ: ตัวเลือก flash จะสร้างและแฟลชโครงการโดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องรัน idf.py build

ระบบเอสเพรสซิฟ

40 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น

พบปัญหาขณะแฟลชหรือไม่? หากคุณรันคำสั่งที่กำหนดและพบข้อผิดพลาด เช่น การเชื่อมต่อล้มเหลว (Failed to connectp) อาจมีสาเหตุหลายประการ หนึ่งในสาเหตุอาจเกิดจากปัญหาที่พบใน esptool.py ซึ่งเป็นยูทิลิตี้ที่ระบบบิลด์เรียกใช้เพื่อรีเซ็ตชิป เชื่อมต่อกับ ROM bootloader และแฟลชเฟิร์มแวร์ วิธีแก้ปัญหาง่ายๆ อย่างหนึ่งที่ควรลองทำคือการรีเซ็ตด้วยตนเองตามที่อธิบายไว้ด้านล่าง และหากวิธีดังกล่าวไม่ได้ผล คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่อาจเกิดขึ้นได้ในหัวข้อ "การแก้ไขปัญหาเบื้องต้น"
esptool.py จะรีเซ็ต ESP32 โดยอัตโนมัติโดยการยืนยันสายควบคุม DTR และ RTS ของชิปแปลง USB เป็นอนุกรม เช่น FTDI หรือ CP210x (สำหรับข้อมูลเพิ่มเติม โปรดดูที่ สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32) สายควบคุม DTR และ RTS จะเชื่อมต่อกับพิน GPIO0 และ CHIP_PU (EN) ของ ESP32 ตามลำดับ ซึ่งทำให้เกิดการเปลี่ยนแปลงใน voltagระดับ e ของ DTR และ RTS จะบูต ESP32 เข้าสู่โหมดดาวน์โหลดเฟิร์มแวร์ เช่นample ตรวจสอบแผนผังสำหรับบอร์ดพัฒนา ESP32 DevKitC
โดยทั่วไปแล้ว คุณไม่น่าจะมีปัญหากับบอร์ดพัฒนา esp-idf อย่างเป็นทางการ อย่างไรก็ตาม esptool.py ไม่สามารถรีเซ็ตฮาร์ดแวร์ของคุณโดยอัตโนมัติในกรณีต่อไปนี้:
· ฮาร์ดแวร์ของคุณไม่มีสาย DTR และ RTS ที่เชื่อมต่อกับ GPIO0 และ CHIP_PU · สาย DTR และ RTS ได้รับการกำหนดค่าแตกต่างกัน · ไม่มีสายควบคุมแบบอนุกรมดังกล่าวเลย
ขึ้นอยู่กับชนิดของฮาร์ดแวร์ที่คุณมี คุณอาจสามารถตั้งค่าบอร์ด ESP32 ของคุณให้เป็นโหมดดาวน์โหลดเฟิร์มแวร์ (รีเซ็ต) ด้วยตนเองได้
· สำหรับบอร์ดพัฒนาที่ผลิตโดย Espressif ข้อมูลนี้สามารถพบได้ในคู่มือเริ่มต้นใช้งานหรือคู่มือผู้ใช้ที่เกี่ยวข้อง ตัวอย่างเช่นampหากต้องการรีเซ็ตบอร์ดพัฒนา ESP-IDF ด้วยตนเอง ให้กดปุ่ม Boot (GPIO0) ค้างไว้แล้วกดปุ่ม EN (CHIP_PU)
· สำหรับฮาร์ดแวร์ประเภทอื่น ลองดึง GPIO0 ลงมา

การทำงานปกติ เมื่อทำการแฟลช คุณจะเห็นบันทึกเอาต์พุตคล้ายกับต่อไปนี้:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev พอร์ตอนุกรม /dev/ttyUSB0 กำลังเชื่อมต่อ…….._ ชิปคือ ESP32D0WDQ6 (การแก้ไข 0) คุณสมบัติ: WiFi, BT, Dual Core, รูปแบบการเขียนโค้ด ไม่มี Crystal คือ 40MHz MAC: 24:0a:c4:05:b9:14 กำลังอัปโหลดสตับ… สตับกำลังทำงาน… สตับกำลังทำงาน… เปลี่ยนอัตราบอดเรทเป็น 460800 เปลี่ยนแปลงแล้ว กำลังกำหนดค่าขนาดแฟลช… บีบอัด 3072 ไบต์เป็น 103… เขียนที่ 0x00008000… (100%) เขียน 3072 ไบต์ (บีบอัด 103) ที่ 0x00008000 ใน 0.0 วินาที (ความเร็วจริง 5962.8 กิโลบิต/วินาที)… ยืนยันแฮชของข้อมูลแล้ว บีบอัด 26096 ไบต์เป็น 15408… เขียนที่ 0x00001000… (100%) เขียน 26096 ไบต์ (บีบอัด 15408) ที่ 0x00001000 ใน 0.4 วินาที (ความเร็วจริง 546.7 กิโลบิต/วินาที)… ยืนยันแฮชของข้อมูลแล้ว บีบอัด 147104 ไบต์เป็น 77364… เขียนที่ 0x00010000… (20%) เขียนที่ 0x00014000… (40%) เขียนที่ 0x00018000… (60%) เขียนที่ 0x0001c000… (80%)
(ต่อในหน้าถัดไป)

ระบบเอสเพรสซิฟ

41 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
(ต่อจากหน้าก่อนหน้า) เขียนที่ 0x00020000… (100%) เขียน 147104 ไบต์ (บีบอัด 77364) ที่ 0x00010000 ใน 1.9 วินาที (มีผล 615. 5 kbit/s)… แฮชของข้อมูลได้รับการตรวจยืนยันแล้ว
กำลังออกจากระบบ… ฮาร์ดรีเซ็ตผ่านพิน RTS… เสร็จสิ้น
หากไม่มีปัญหาใดๆ ภายในสิ้นสุดกระบวนการแฟลช บอร์ดจะรีบูตและเริ่มต้นแอปพลิเคชัน ohello_worldpapplication หากคุณต้องการใช้ Eclipse หรือ VS Code IDE แทนการรัน idf.py โปรดดูปลั๊กอิน Eclipse, ส่วนขยาย VSCode
ตรวจสอบผลลัพธ์ หากต้องการตรวจสอบว่า ohello_worldpis ทำงานอยู่จริงหรือไม่ ให้พิมพ์ idf.py -p PORT monitor (อย่าลืมแทนที่ PORT ด้วยชื่อพอร์ตอนุกรมของคุณ) คำสั่งนี้จะเปิดแอปพลิเคชัน IDF Monitor:
$ idf.py -p ตรวจสอบการรัน idf_monitor ในไดเร็กทอรี […]/esp/hello_world/build กำลังดำเนินการ “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor บน 115200 —– ออก: Ctrl+] | เมนู: Ctrl+T | ช่วยเหลือ: Ctrl+T ตามด้วย Ctrl+H –ets 8 มิ.ย. 2016 00:22:57 น.
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 มิ.ย. 2016 00:22:57 น. …
หลังจากเริ่มระบบและเลื่อนบันทึกการวินิจฉัยขึ้นไป คุณควรจะเห็นข้อความ oHello world! พิมพ์ออกมาโดยแอปพลิเคชัน
… สวัสดีโลก! รีสตาร์ทใน 10 วินาที… นี่คือชิป esp32 ที่มี 2 คอร์ CPU, WiFi/BT/BLE, ซิลิกอนรีวิชั่น 1, แฟลชภายนอก 2MB ขนาดฮีปว่างขั้นต่ำ: 298968 ไบต์ รีสตาร์ทใน 9 วินาที… รีสตาร์ทใน 8 วินาที… รีสตาร์ทใน 7 วินาที…
หากต้องการออกจาก IDF monitor ให้ใช้ปุ่มลัด Ctrl+] หาก IDF monitor ล้มเหลวหลังจากอัปโหลดไม่นาน หรือหากแทนที่จะเห็นข้อความข้างต้น แต่กลับพบข้อผิดพลาดแบบสุ่มคล้ายกับที่แสดงด้านล่าง แสดงว่าบอร์ดของคุณน่าจะใช้คริสตัลความถี่ 26 MHz บอร์ดพัฒนาส่วนใหญ่ใช้ความถี่ 40 MHz ดังนั้น ESP-IDF จึงใช้ความถี่นี้เป็นค่าเริ่มต้น

หากคุณประสบปัญหาดังกล่าว ให้ทำดังต่อไปนี้:
1. ออกจากจอภาพ 2. กลับไปที่ menuconfig 3. ไปที่ Component config > Hardware Settings > Main XTAL Config > Main XTAL
ความถี่ จากนั้นเปลี่ยน CONFIG_XTAL_FREQ_SEL เป็น 26 MHz 4. หลังจากนั้นสร้างและแฟลชแอปพลิเคชันอีกครั้ง

ระบบเอสเพรสซิฟ

42 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
ในเวอร์ชันปัจจุบันของ ESP-IDF ความถี่ XTAL หลักที่รองรับโดย ESP32 มีดังต่อไปนี้:
· 26 เมกะเฮิรตซ์ · 40 เมกะเฮิรตซ์
หมายเหตุ: คุณสามารถรวมการสร้าง การแฟลช และการตรวจสอบเป็นขั้นตอนเดียวได้โดยรัน: idf.py -p PORT flash monitor
ดูเพิ่มเติม: · IDF Monitor สำหรับทางลัดที่มีประโยชน์และรายละเอียดเพิ่มเติมเกี่ยวกับการใช้ IDF Monitor · idf.py สำหรับการอ้างอิงคำสั่งและตัวเลือกของ idf.py อย่างครบถ้วน
แค่นี้ก็พร้อมสำหรับการเริ่มต้นใช้งาน ESP32 แล้ว! ตอนนี้คุณก็พร้อมที่จะลองสิ่งอื่นๆ แล้วampหรือไปพัฒนาแอพพลิเคชั่นของคุณเองได้เลย
สำคัญ: บางส่วนของอดีตamples ไม่รองรับ ESP32 เนื่องจากไม่มีฮาร์ดแวร์ที่จำเป็นรวมอยู่ใน ESP32 จึงไม่สามารถรองรับได้ หากสร้าง exampโปรดตรวจสอบ README file สำหรับตารางเป้าหมายที่รองรับ หากมีอยู่ รวมถึงเป้าหมาย ESP32 หรือไม่มีตารางเลย ฟังก์ชัน example จะทำงานบน ESP32
เคล็ดลับเพิ่มเติม
ปัญหาการอนุญาต /dev/ttyUSB0 ใน Linux บางรุ่น คุณอาจได้รับข้อความแสดงข้อผิดพลาด "ไม่สามารถเปิดพอร์ต /dev/ttyUSB0 ได้" เมื่อทำการแฟลช ESP32 ปัญหานี้สามารถแก้ไขได้โดยการเพิ่มผู้ใช้ปัจจุบันลงในกลุ่ม dialout
ความเข้ากันได้กับ Python: ESP-IDF รองรับ Python 3.7 หรือใหม่กว่า ขอแนะนำให้อัปเกรดระบบปฏิบัติการของคุณเป็นเวอร์ชันล่าสุดที่ตรงตามข้อกำหนดนี้ ตัวเลือกอื่นๆ ได้แก่ การติดตั้ง Python จากซอร์สโค้ด หรือการใช้ระบบจัดการเวอร์ชัน Python เช่น pyenv
เริ่มต้นด้วยแพ็คเกจสนับสนุนบอร์ด เพื่อเร่งการสร้างต้นแบบบนบอร์ดพัฒนาบางรุ่น คุณสามารถใช้แพ็คเกจสนับสนุนบอร์ด (BSP) ซึ่งทำให้การเริ่มต้นใช้งานบอร์ดเฉพาะเป็นเรื่องง่ายด้วยการเรียกใช้ฟังก์ชันไม่กี่รายการ โดยทั่วไป BSP จะรองรับส่วนประกอบฮาร์ดแวร์ทั้งหมดที่มีให้บนบอร์ดพัฒนา นอกจากการกำหนดพินเอาต์และฟังก์ชันการเริ่มต้นใช้งานแล้ว BSP ยังมาพร้อมกับไดรเวอร์สำหรับส่วนประกอบภายนอก เช่น เซ็นเซอร์ จอแสดงผล ตัวแปลงสัญญาณเสียง เป็นต้น BSP เหล่านี้แจกจ่ายผ่าน IDF Component Manager ดังนั้นจึงสามารถพบได้ใน IDF Component Registry นี่คือตัวอย่างampวิธีเพิ่ม ESP-WROVER-KIT BSP ลงในโครงการของคุณ: idf.py add-dependency esp_wrover_kit
อดีตเพิ่มเติมampการใช้งาน BSP น้อยกว่าสามารถพบได้ใน BSP เช่นampโฟลเดอร์ไฟล์.
เคล็ดลับ: การอัปเดต ESP-IDF ขอแนะนำให้อัปเดต ESP-IDF เป็นครั้งคราว เนื่องจากเวอร์ชันใหม่จะแก้ไขข้อบกพร่องและ/หรือมีฟีเจอร์ใหม่ๆ โปรดทราบว่า ESP-IDF เวอร์ชันหลักและเวอร์ชันรองแต่ละเวอร์ชันจะมีระยะเวลาการสนับสนุนที่เกี่ยวข้อง และเมื่อเวอร์ชันใดเวอร์ชันหนึ่งใกล้จะสิ้นสุดอายุการใช้งาน (EOL) ขอแนะนำให้ผู้ใช้ทุกคนอัปเกรดโปรเจกต์ของตนเป็น ESP-IDF เวอร์ชันล่าสุด หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับระยะเวลาการสนับสนุน โปรดดูที่ เวอร์ชัน ESP-IDF

ระบบเอสเพรสซิฟ

43 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 1 เริ่มต้น
วิธีที่ง่ายที่สุดในการอัปเดตคือลบโฟลเดอร์ esp-idf ที่มีอยู่แล้วและโคลนใหม่อีกครั้ง เหมือนกับการติดตั้งครั้งแรกตามที่อธิบายไว้ในขั้นตอนที่ 2 รับ ESP-IDF อีกวิธีหนึ่งคือการอัปเดตเฉพาะส่วนที่เปลี่ยนแปลงไป ขั้นตอนการอัปเดตขึ้นอยู่กับเวอร์ชันของ ESP-IDF ที่คุณใช้ หลังจากอัปเดต ESP-IDF แล้ว ให้รันสคริปต์ติดตั้งอีกครั้ง ในกรณีที่ ESP-IDF เวอร์ชันใหม่จำเป็นต้องใช้เครื่องมือเวอร์ชันอื่น ดูคำแนะนำในขั้นตอนที่ 3 ตั้งค่าเครื่องมือ เมื่อติดตั้งเครื่องมือใหม่แล้ว ให้อัปเดตสภาพแวดล้อมโดยใช้สคริปต์ Export ดูคำแนะนำในขั้นตอนที่ 4 ตั้งค่าตัวแปรสภาพแวดล้อม
เอกสารที่เกี่ยวข้อง · สร้างการเชื่อมต่อแบบอนุกรมกับ ESP32 · ปลั๊กอิน Eclipse · ส่วนขยาย VSCode · IDF Monitor
1.4 สร้างโครงการแรกของคุณ
หากคุณติดตั้ง ESP-IDF ไว้แล้วและไม่ได้ใช้ IDE คุณสามารถสร้างโปรเจ็กต์แรกของคุณจากบรรทัดคำสั่งโดยปฏิบัติตามคำสั่ง เริ่มโปรเจ็กต์บน Windows หรือ เริ่มโปรเจ็กต์บน Linux และ macOS
1.5 ถอนการติดตั้ง ESP-IDF
หากคุณต้องการลบ ESP-IDF โปรดทำตามถอนการติดตั้ง ESP-IDF

ระบบเอสเพรสซิฟ

44 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 2
เอกสารอ้างอิง API
2.1 ข้อตกลง API
เอกสารนี้อธิบายถึงข้อตกลงและสมมติฐานทั่วไปของอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ของ ESP-IDF ESP-IDF มีอินเทอร์เฟซการเขียนโปรแกรมหลายประเภท:
· ฟังก์ชัน C โครงสร้าง ค่า enum คำจำกัดความประเภท และแมโครพรีโพรเซสเซอร์ที่ประกาศในส่วนหัวสาธารณะ fileของส่วนประกอบ ESPIDF หน้าต่างๆ ในส่วนอ้างอิง API ของคู่มือการเขียนโปรแกรมมีคำอธิบายเกี่ยวกับฟังก์ชัน โครงสร้าง และประเภทเหล่านี้
· สร้างฟังก์ชันระบบ ตัวแปรที่กำหนดไว้ล่วงหน้า และตัวเลือกต่างๆ สิ่งเหล่านี้มีอยู่ในคู่มือการสร้างระบบ · ตัวเลือก Kconfig สามารถใช้ได้ทั้งในโค้ดและในระบบการสร้าง (CMakeLists.txt) files. · เครื่องมือโฮสต์และพารามิเตอร์บรรทัดคำสั่งก็เป็นส่วนหนึ่งของอินเทอร์เฟซ ESP-IDF เช่นกัน ESP-IDF ประกอบด้วยส่วนประกอบที่เขียนขึ้นโดยเฉพาะสำหรับ ESP-IDF รวมถึงไลบรารีของบุคคลที่สาม ในบางกรณี แรปเปอร์เฉพาะของ ESP-IDF จะถูกเพิ่มเข้าไปในไลบรารีของบุคคลที่สาม ทำให้อินเทอร์เฟซง่ายขึ้นหรือผสานรวมกับส่วนอื่นๆ ของ ESP-IDF ได้ดีขึ้น ในกรณีอื่นๆ API ดั้งเดิมของไลบรารีของบุคคลที่สามจะถูกนำเสนอต่อนักพัฒนาแอปพลิเคชัน หัวข้อต่อไปนี้จะอธิบายลักษณะบางประการของ ESP-IDF API และการใช้งาน
2.1.1 การจัดการข้อผิดพลาด
API ของ ESP-IDF ส่วนใหญ่ส่งคืนรหัสข้อผิดพลาดที่กำหนดด้วยชนิด esp_err_t ดูส่วนการจัดการข้อผิดพลาดสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการจัดการข้อผิดพลาด การอ้างอิงรหัสข้อผิดพลาดประกอบด้วยรายการรหัสข้อผิดพลาดที่ส่งคืนโดยส่วนประกอบ ESP-IDF
2.1.2 โครงสร้างการกำหนดค่า
สิ่งสำคัญ: การเริ่มต้นโครงสร้างการกำหนดค่าที่ถูกต้องถือเป็นส่วนสำคัญในการทำให้แอปพลิเคชันเข้ากันได้กับ ESP-IDF เวอร์ชันในอนาคต
ฟังก์ชันการเริ่มต้นหรือการกำหนดค่าส่วนใหญ่ใน ESP-IDF จะใช้อาร์กิวเมนต์เป็นตัวชี้ไปยังโครงสร้างการกำหนดค่า ตัวอย่างเช่นampเลอ:
45

บทที่ 2. การอ้างอิง API

const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, .arg = callback_arg, .name = “my_timer”
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
ฟังก์ชันการเริ่มต้นจะไม่เก็บตัวชี้ไปยังโครงสร้างการกำหนดค่า ดังนั้นจึงสามารถจัดสรรโครงสร้างบนสแต็กได้อย่างปลอดภัย
แอปพลิเคชันต้องตั้งค่าเริ่มต้นฟิลด์ทั้งหมดของโครงสร้าง ข้อความต่อไปนี้ไม่ถูกต้อง:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* ไม่ถูกต้อง! ฟิลด์ .arg และ .name ไม่ได้รับการเริ่มต้น */ esp_timer_create(&my_timer_args, &my_timer);
ส่วนใหญ่แล้ว ESP-IDF exampให้ใช้ตัวเริ่มต้นที่กำหนดโดย C99 สำหรับการเริ่มต้นโครงสร้าง เนื่องจากตัวเริ่มต้นเหล่านี้ให้วิธีที่กระชับในการตั้งค่าเซ็ตย่อยของฟิลด์ และการเริ่มต้นฟิลด์ที่เหลือเป็นศูนย์:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* ถูกต้อง ฟิลด์ .arg และ .name มีการกำหนดค่าเริ่มต้นเป็นศูนย์ */
};
ภาษา C++ ไม่รองรับไวยากรณ์ของตัวเริ่มต้นที่กำหนดไว้จนกระทั่งถึง C++20 อย่างไรก็ตาม คอมไพเลอร์ GCC รองรับบางส่วนในฐานะส่วนขยาย เมื่อใช้ ESP-IDF API ในโค้ด C++ คุณอาจพิจารณาใช้รูปแบบต่อไปนี้:
esp_timer_create_args_t my_timer_args = {}; /* ฟิลด์ทั้งหมดมีการกำหนดค่าเริ่มต้นเป็นศูนย์ */ my_timer_args.callback = &my_timer_callback;

ตัวเริ่มต้น
สำหรับโครงสร้างการกำหนดค่าบางอย่าง ESP-IDF จะให้มาโครสำหรับการตั้งค่าค่าเริ่มต้นของฟิลด์:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG ขยายไปเป็นตัวเริ่มต้นที่กำหนด
ตอนนี้ฟิลด์ทั้งหมดถูกตั้งค่าเป็นค่าเริ่มต้นแล้ว ฟิลด์ใดๆ ก็ยังสามารถแก้ไขได้: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
ขอแนะนำให้ใช้แมโครตัวเริ่มต้นแบบเริ่มต้นทุกครั้งที่มีการจัดเตรียมให้กับโครงสร้างการกำหนดค่าเฉพาะ

2.1.3 API ส่วนตัว
ส่วนหัวบางอย่าง files ใน ESP-IDF ประกอบด้วย API ที่ออกแบบมาเพื่อใช้ในโค้ดต้นฉบับของ ESP-IDF เท่านั้น ไม่ใช่แอปพลิเคชัน ส่วนหัวดังกล่าว files มักจะมี private หรือ esp_private อยู่ในชื่อหรือพาธ ส่วนประกอบบางอย่าง เช่น hal จะมีเฉพาะ API ส่วนตัวเท่านั้น API ส่วนตัวอาจถูกลบหรือเปลี่ยนแปลงในลักษณะที่เข้ากันไม่ได้ระหว่างการเผยแพร่เวอร์ชันย่อยหรือแพตช์

2.1.4 ส่วนประกอบใน exampเลอ โปรเจ็กต์
ESP-IDF อดีตamples ประกอบด้วยโครงการต่างๆ มากมายที่สาธิตการใช้งาน ESP-IDF API เพื่อลดความซ้ำซ้อนของโค้ดในอดีตampเลส ตัวช่วยทั่วไปบางตัวถูกกำหนดไว้ภายในส่วนประกอบที่ใช้โดย ex หลายตัวampเลส.

ระบบเอสเพรสซิฟ

46 ส่งเอกสาร ข้อเสนอแนะ

เผยแพร่เวอร์ชัน v5.0.9

บทที่ 2. การอ้างอิง API
ซึ่งรวมถึงส่วนประกอบที่ตั้งอยู่

เอกสาร / แหล่งข้อมูล

บอร์ดพัฒนา Espressif Systems ESP32 Dev Kitc [พีดีเอฟ] คู่มือการใช้งาน
บอร์ดพัฒนา ESP32 Dev Kitc, ESP32, บอร์ดพัฒนา Dev Kitc, บอร์ดพัฒนา Kitc, บอร์ดพัฒนา, บอร์ด

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *