เนื้อหา ซ่อน
2 การผจญภัยแบบไร้สาย ESP32-C3
2.1 คู่มือที่ครอบคลุมเกี่ยวกับ IoT

การผจญภัยแบบไร้สาย ESP32-C3

การผจญภัยแบบไร้สาย ESP32-C3

คู่มือที่ครอบคลุมเกี่ยวกับ IoT

ระบบ Espressif 12 มิถุนายน 2023

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

  • สินค้า: ESP32-C3 การผจญภัยแบบไร้สาย
  • ผู้ผลิต: เอสเพรสซิฟ ซิสเต็มส์
  • วันที่ : 12 มิถุนายน 2023

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

การตระเตรียม

ก่อนใช้ ESP32-C3 Wireless Adventure ตรวจสอบให้แน่ใจว่าคุณใช้แล้ว
คุ้นเคยกับแนวคิดและสถาปัตยกรรมของ IoT สิ่งนี้จะช่วยได้
คุณเข้าใจว่าอุปกรณ์ดังกล่าวเข้ากับระบบนิเวศ IoT ที่ใหญ่ขึ้นได้อย่างไร
และการใช้งานที่เป็นไปได้ในบ้านอัจฉริยะ

บทนำและการปฏิบัติของโครงการ IoT

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

แนวปฏิบัติ: โครงการสมาร์ทไลท์

ในโครงการฝึกหัดนี้ คุณจะได้เรียนรู้วิธีสร้างอัจฉริยะ
แสงโดยใช้ ESP32-C3 Wireless Adventure โครงสร้างโครงการ
ฟังก์ชั่น การเตรียมฮาร์ดแวร์ และกระบวนการพัฒนาจะเป็นดังนี้
อธิบายอย่างละเอียด

โครงสร้างโครงการ

โครงการประกอบด้วยองค์ประกอบหลายประการ ได้แก่
ESP32-C3 Wireless Adventure, LED, เซ็นเซอร์ และคลาวด์
แบ็คเอนด์

ฟังก์ชั่นโครงการ

โครงการไฟอัจฉริยะช่วยให้คุณควบคุมความสว่างและ
สีของไฟ LED จากระยะไกลผ่านแอพมือถือหรือ web
อินเทอร์เฟซ

การเตรียมฮาร์ดแวร์

ในการเตรียมตัวสำหรับโครงการคุณจะต้องรวบรวม
ส่วนประกอบฮาร์ดแวร์ที่จำเป็น เช่น ESP32-C3 Wireless
กระดานผจญภัย ไฟ LED ตัวต้านทาน และแหล่งจ่ายไฟ

กระบวนการพัฒนา

กระบวนการพัฒนาเกี่ยวข้องกับการตั้งค่าการพัฒนา
สภาพแวดล้อม, การเขียนโค้ดเพื่อควบคุมไฟ LED, การเชื่อมต่อกับ
แบ็กเอนด์บนคลาวด์และทดสอบการทำงานของสมาร์ท
แสงสว่าง.

ข้อมูลเบื้องต้นเกี่ยวกับ ESP RainMaker

ESP RainMaker เป็นเฟรมเวิร์กอันทรงพลังสำหรับการพัฒนา IoT
อุปกรณ์ ในส่วนนี้ คุณจะได้เรียนรู้ว่า ESP RainMaker คืออะไรและ
สามารถนำไปใช้ในโครงการของคุณได้อย่างไร

ESP RainMaker คืออะไร

ESP RainMaker เป็นแพลตฟอร์มบนคลาวด์ที่ให้บริการชุดของ
เครื่องมือและบริการสำหรับการสร้างและจัดการอุปกรณ์ IoT

การใช้งาน ESP RainMaker

ส่วนนี้จะอธิบายส่วนประกอบต่างๆ ที่เกี่ยวข้อง
การใช้ ESP RainMaker รวมถึงบริการการเคลม
RainMaker Agent, แบ็กเอนด์บนคลาวด์ และ RainMaker Client

แนวปฏิบัติ: ประเด็นสำคัญสำหรับการพัฒนาด้วย ESP RainMaker

ในส่วนแบบฝึกหัดนี้ คุณจะได้เรียนรู้เกี่ยวกับประเด็นสำคัญ
พิจารณาเมื่อพัฒนาด้วย ESP RainMaker รวมถึงอุปกรณ์ด้วย
การอ้างสิทธิ์ การซิงโครไนซ์ข้อมูล และการจัดการผู้ใช้

คุณสมบัติของ ESP RainMaker

ESP RainMaker นำเสนอคุณสมบัติที่หลากหลายสำหรับการจัดการผู้ใช้
ผู้ใช้และผู้ดูแลระบบ คุณสมบัติเหล่านี้ช่วยให้ใช้งานอุปกรณ์ได้ง่าย
การตั้งค่า การควบคุมระยะไกล และการตรวจสอบ

การตั้งค่าสภาพแวดล้อมการพัฒนา

ส่วนนี้ให้ข้อมูลมากกว่าview ของ ESP-IDF (Espressif IoT
กรอบการพัฒนา) ซึ่งเป็นกรอบการพัฒนาอย่างเป็นทางการ
สำหรับอุปกรณ์ที่ใช้ ESP32 มันอธิบายเวอร์ชันต่าง ๆ ของ
ESP-IDF และวิธีการตั้งค่าสภาพแวดล้อมการพัฒนา

การพัฒนาฮาร์ดแวร์และไดร์เวอร์

การออกแบบฮาร์ดแวร์ของผลิตภัณฑ์ไฟอัจฉริยะที่ใช้ ESP32-C3

ในส่วนนี้เน้นที่การออกแบบฮาร์ดแวร์ของไฟอัจฉริยะ
ผลิตภัณฑ์ที่ใช้ ESP32-C3 Wireless Adventure มันครอบคลุมถึง
คุณสมบัติและองค์ประกอบของผลิตภัณฑ์ไฟอัจฉริยะตลอดจน
การออกแบบฮาร์ดแวร์ของระบบหลัก ESP32-C3

คุณสมบัติและองค์ประกอบของผลิตภัณฑ์สมาร์ทไลท์

ส่วนย่อยนี้จะอธิบายคุณลักษณะและส่วนประกอบที่ทำ
ขึ้นผลิตภัณฑ์สมาร์ทไลท์ กล่าวถึงฟังก์ชันการทำงานต่างๆ
และข้อควรพิจารณาในการออกแบบเพื่อสร้างไฟอัจฉริยะ

การออกแบบฮาร์ดแวร์ของระบบหลัก ESP32-C3

การออกแบบฮาร์ดแวร์ของระบบหลัก ESP32-C3 รวมถึงพลังงาน
แหล่งจ่ายไฟ, ลำดับการเปิดเครื่อง, การรีเซ็ตระบบ, แฟลช SPI, แหล่งสัญญาณนาฬิกา,
และข้อควรพิจารณาเกี่ยวกับ RF และเสาอากาศ ส่วนย่อยนี้ให้
ข้อมูลโดยละเอียดเกี่ยวกับประเด็นเหล่านี้

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

ถาม: ESP RainMaker คืออะไร

ตอบ: ESP RainMaker เป็นแพลตฟอร์มบนคลาวด์ที่มีเครื่องมือต่างๆ
และบริการสำหรับการสร้างและจัดการอุปกรณ์ IoT มันทำให้ง่ายขึ้น
กระบวนการพัฒนาและช่วยให้ตั้งค่าอุปกรณ์ได้ง่ายจากระยะไกล
การควบคุมและการตรวจติดตาม

ถาม: ฉันจะตั้งค่าสภาพแวดล้อมการพัฒนาได้อย่างไร
ESP32-C3?

ตอบ: คุณต้องมีการตั้งค่าสภาพแวดล้อมการพัฒนาสำหรับ ESP32-C3
เพื่อติดตั้ง ESP-IDF (Espressif IoT Development Framework) และ
กำหนดค่าตามคำแนะนำที่ให้ไว้ ESP-IDF คือ
กรอบการพัฒนาอย่างเป็นทางการสำหรับอุปกรณ์ที่ใช้ ESP32

ถาม: ESP RainMaker มีฟีเจอร์อะไรบ้าง

ตอบ: ESP RainMaker นำเสนอคุณสมบัติที่หลากหลาย รวมถึงผู้ใช้ด้วย
การจัดการ คุณสมบัติผู้ใช้ และคุณสมบัติผู้ดูแลระบบ การจัดการผู้ใช้
ช่วยให้การอ้างสิทธิ์อุปกรณ์และการซิงโครไนซ์ข้อมูลทำได้ง่าย ผู้ใช้ปลายทาง
คุณสมบัติช่วยให้สามารถควบคุมอุปกรณ์จากระยะไกลผ่านแอพมือถือหรือ
web อินเตอร์เฟซ คุณสมบัติผู้ดูแลระบบมีเครื่องมือสำหรับการตรวจสอบอุปกรณ์
และการบริหารจัดการ

การผจญภัยแบบไร้สาย ESP32-C3
คู่มือที่ครอบคลุมเกี่ยวกับ IoT
ระบบ Espressif 12 มิถุนายน 2023

เนื้อหา

I. การเตรียมการ

1

1 ความรู้เบื้องต้นเกี่ยวกับ IoT

3

1.1 สถาปัตยกรรมของ IoT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3

1.2 แอปพลิเคชัน IoT ในบ้านอัจฉริยะ - - - - - - - - - - - - - - - - - - - - - - - - - 6

2 บทนำและการปฏิบัติของโครงการ IoT

9

2.1 ข้อมูลเบื้องต้นเกี่ยวกับโครงการ IoT ทั่วไป - - - - - - - - - - - - - - - - - - - - - - - 9

2.1.1 โมดูลพื้นฐานสำหรับอุปกรณ์ IoT ทั่วไป - - - - - - - - - - - - - - - - 9

2.1.2 โมดูลพื้นฐานของแอปพลิเคชันไคลเอนต์ - - - - - - - - - - - - - - - - - - 10

2.1.3 ข้อมูลเบื้องต้นเกี่ยวกับแพลตฟอร์มคลาวด์ IoT ทั่วไป - - - - - - - - - - - - - 11

2.2 แนวปฏิบัติ: โครงการ Smart Light . - - - - - - - - - - - - - - - - - - - - - - - - - - - 12

2.2.1 โครงสร้างโครงการ. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 13

2.2.2 หน้าที่ของโครงการ. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 13

2.2.3 การเตรียมฮาร์ดแวร์ - - - - - - - - - - - - - - - - - - - - - - - - - - 14

2.2.4 กระบวนการพัฒนา. - - - - - - - - - - - - - - - - - - - - - - - - - - - 16

2.3 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 17

3 ข้อมูลเบื้องต้นเกี่ยวกับ ESP RainMaker

19

3.1 ESP RainMaker คืออะไร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20

3.2 การใช้งาน ESP RainMaker - - - - - - - - - - - - - - - - - - - - - 21

3.2.1 บริการเรียกร้องสินไหม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 22

3.2.2 ตัวแทน RainMaker - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 22

3.2.3 แบ็กเอนด์คลาวด์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 23

3.2.4 ไคลเอนต์ RainMaker - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 24

3.3 แนวทางปฏิบัติ: ประเด็นสำคัญสำหรับการพัฒนาด้วย ESP RainMaker - - - - - - - - - - - 25

3.4 คุณสมบัติของ ESP RainMaker - - - - - - - - - - - - - - - - - - - - - - - - - - - 26

3.4.1 การจัดการผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 26

3.4.2 คุณลักษณะของผู้ใช้ปลายทาง - - - - - - - - - - - - - - - - - - - - - - - - - - - - 27

3.4.3 คุณสมบัติผู้ดูแลระบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 28

3.5 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 29

4 การตั้งค่าสภาพแวดล้อมการพัฒนา

31

4.1 ESP-IDF จบลงแล้วview - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 31

4.1.1 เวอร์ชัน ESP-IDF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 32

3

4.1.2 เวิร์กโฟลว์ Git ESP-IDF - - - - - - - - - - - - - - - - - - - - - - - - - - 33 4.1.3 การเลือกเวอร์ชันที่เหมาะสม - - - - - - - - - - - - - - - - - - - - - - - 34 4.1.4 โอเวอร์view ของไดเรกทอรี ESP-IDF SDK - - - - - - - - - - - - - - - - - - - 34 4.2 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF - - - - - - - - - - - - - - - - 38 4.2.1 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Linux - - - - - - - 38 4.2.2 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Windows - - - - - 40 4.2.3 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Mac - - - - - - - - 45 4.2.4 การติดตั้ง VS Code - - - - - - - - - - - - - - - - - - - - - - - - - - - - 46 4.2.5 ความรู้เบื้องต้นเกี่ยวกับสภาพแวดล้อมการพัฒนาของบุคคลที่สาม - - - - - - - 46 4.3 ระบบการคอมไพล์ ESP-IDF - - - - - - - - - - - - - - - - - - - - - - - - - - - 47 4.3.1 แนวคิดพื้นฐานของระบบการรวบรวม - - - - - - - - - - - - - - - - - 47 4.3.2 โครงการ File โครงสร้าง . - - - - - - - - - - - - - - - - - - - - - - - - - - - 47 4.3.3 กฎการสร้างเริ่มต้นของระบบคอมไพล์ - - - - - - - - - - - - 50 4.3.4 สคริปต์การคอมไพล์เบื้องต้น - - - - - - - - - - - - - - - - - 51 4.3.5 คำสั่งทั่วไปเบื้องต้น - - - - - - - - - - - - - - - - - - 52 4.4 แบบฝึกหัด: การคอมไพล์ เช่นampโปรแกรม “กะพริบ” . - - - - - - - - - - - - - - - - - 53 4.4.1 เช่นampการวิเคราะห์. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 53 4.4.2 การรวบรวมโปรแกรม Blink - - - - - - - - - - - - - - - - - - - - - - 56 4.4.3 การกะพริบโปรแกรมกะพริบ - - - - - - - - - - - - - - - - - - - - - - - 59 4.4.4 การวิเคราะห์บันทึกพอร์ตอนุกรมของโปรแกรมกะพริบ - - - - - - - - - - - - - 60 4.5 สรุป. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 63

II การพัฒนาฮาร์ดแวร์และไดรเวอร์

65

5 การออกแบบฮาร์ดแวร์ของผลิตภัณฑ์ไฟอัจฉริยะที่ใช้ ESP32-C3

67

5.1 คุณสมบัติและองค์ประกอบของผลิตภัณฑ์สมาร์ทไลท์ - - - - - - - - - - - - - - 67

5.2 การออกแบบฮาร์ดแวร์ของระบบหลัก ESP32-C3 - - - - - - - - - - - - - - - - - - 70

5.2.1 แหล่งจ่ายไฟ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 74

5.2.2 ลำดับการเปิดเครื่องและการรีเซ็ตระบบ - - - - - - - - - - - - - - - - - 74

5.2.3 SPI แฟลช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 75

5.2.4 แหล่งสัญญาณนาฬิกา - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 75

5.2.5 RF และเสาอากาศ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 76

5.2.6 หมุดรัด - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 79

5.2.7 คอนโทรลเลอร์ GPIO และ PWM - - - - - - - - - - - - - - - - - - - - - - - - 79

5.3 แนวทางปฏิบัติ: การสร้างระบบไฟอัจฉริยะด้วย ESP32-C3 - - - - - - - - - - - - 80

5.3.1 การเลือกโมดูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - 80

5.3.2 การกำหนดค่า GPIO ของสัญญาณ PWM - - - - - - - - - - - - - - - - - - - 82

5.3.3 การดาวน์โหลดเฟิร์มแวร์และอินเทอร์เฟซการดีบัก - - - - - - - - - - - 82

5.3.4 แนวทางการออกแบบ RF - - - - - - - - - - - - - - - - - - - - - - - - - 84 5.3.5 แนวทางการออกแบบพาวเวอร์ซัพพลาย. - - - - - - - - - - - - - - - - - - 86 5.4 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 86

6 การพัฒนาไดร์เวอร์

87

6.1 กระบวนการพัฒนาผู้ขับขี่ - - - - - - - - - - - - - - - - - - - - - - - - - - - 87

6.2 การใช้งานอุปกรณ์ต่อพ่วง ESP32-C3 - - - - - - - - - - - - - - - - - - - - - - - - 88

6.3 พื้นฐานไดร์เวอร์ LED - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 89

6.3.1 ปริภูมิสี - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 89

6.3.2 ไดร์เวอร์ LED . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 94

6.3.3 การหรี่ไฟ LED - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 94

6.3.4 ความรู้เบื้องต้นเกี่ยวกับ PWM - - - - - - - - - - - - - - - - - - - - - - - - - - - 95

6.4 การพัฒนาไดร์เวอร์ลดแสง LED - - - - - - - - - - - - - - - - - - - - - - - 96

6.4.1 พื้นที่จัดเก็บข้อมูลแบบไม่ลบเลือน (NVS) - - - - - - - - - - - - - - - - - - - - - - - 97

6.4.2 ตัวควบคุม LED PWM (LEDC) - - - - - - - - - - - - - - - - - - - - - - 98

6.4.3 การโปรแกรม LED PWM - - - - - - - - - - - - - - - - - - - - - - - - - 100

6.5 แนวปฏิบัติ: การเพิ่มไดรเวอร์ให้กับโครงการ Smart Light - - - - - - - - - - - - - - - - 103

6.5.1 ไดรเวอร์ปุ่ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 103

6.5.2 ไดร์เวอร์ลดแสง LED - - - - - - - - - - - - - - - - - - - - - - - - - - - 104

6.6 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 108

III การสื่อสารและการควบคุมไร้สาย

109

7 การกำหนดค่าและการเชื่อมต่อ Wi-Fi

111

7.1 พื้นฐานของ Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 111

7.1.1 ความรู้เบื้องต้นเกี่ยวกับ Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - - - - - 111

7.1.2 วิวัฒนาการของ IEEE 802.11 - - - - - - - - - - - - - - - - - - - - - - - - 111

7.1.3 แนวคิด Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 112

7.1.4 การเชื่อมต่อ Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 115

7.2 พื้นฐานของบลูทูธ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 122

7.2.1 ความรู้เบื้องต้นเกี่ยวกับบลูทูธ - - - - - - - - - - - - - - - - - - - - - - - - 123

7.2.2 แนวคิดเกี่ยวกับบลูทูธ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 124

7.2.3 การเชื่อมต่อบลูทูธ - - - - - - - - - - - - - - - - - - - - - - - - - - 127

7.3 การกำหนดค่าเครือข่าย Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - - - - 131

7.3.1 คู่มือการกำหนดค่าเครือข่าย Wi-Fi - - - - - - - - - - - - - - - - - - - 131

7.3.2 ซอฟท์เอพี - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 132

7.3.3 สมาร์ทคอนฟิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 132

7.3.4 บลูทูธ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 135

7.3.5 วิธีการอื่นๆ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 137

7.4 การเขียนโปรแกรม Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 139 7.4.1 ส่วนประกอบ Wi-Fi ใน ESP-IDF - - - - - - - - - - - - - - - - - - - - - - 139 7.4.2 การออกกำลังกาย: การเชื่อมต่อ Wi-Fi - - - - - - - - - - - - - - - - - - - - - - - 141 7.4.3 แบบฝึกหัด: การเชื่อมต่อ Wi-Fi อัจฉริยะ - - - - - - - - - - - - - - - - - - - - 145
7.5 แนวทางปฏิบัติ: การกำหนดค่า Wi-Fi ในโครงการ Smart Light - - - - - - - - - - - - - - 156 7.5.1 การเชื่อมต่อ Wi-Fi ในโครงการ Smart Light . - - - - - - - - - - - - - - - - 156 7.5.2 การกำหนดค่า Wi-Fi อัจฉริยะ - - - - - - - - - - - - - - - - - - - - - - - - 157
7.6 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 158

8 การควบคุมภายใน

159

8.1 ความรู้เบื้องต้นเกี่ยวกับการควบคุมท้องถิ่น - - - - - - - - - - - - - - - - - - - - - - - - - - 159

8.1.1 การใช้การควบคุมท้องถิ่น - - - - - - - - - - - - - - - - - - - - - - - 161

8.1.2 แอดวานtages ของการควบคุมท้องถิ่น - - - - - - - - - - - - - - - - - - - - - - - 161

8.1.3 การค้นหาอุปกรณ์ควบคุมผ่านสมาร์ทโฟน - - - - - - - - - 161

8.1.4 การสื่อสารข้อมูลระหว่างสมาร์ทโฟนและอุปกรณ์ - - - - - - - 162

8.2 วิธีการค้นพบในท้องถิ่นทั่วไป - - - - - - - - - - - - - - - - - - - - - - - 162

8.2.1 การออกอากาศ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 163

8.2.2 มัลติคาสต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 169

8.2.3 การเปรียบเทียบระหว่างการออกอากาศและมัลติคาสต์ - - - - - - - - - - - - - 176

8.2.4 Multicast Application Protocol mDNS สำหรับการค้นหาในเครื่อง - - - - - - - 176

8.3 โปรโตคอลการสื่อสารทั่วไปสำหรับข้อมูลภายในเครื่อง - - - - - - - - - - - - - - 179

8.3.1 โปรโตคอลควบคุมการส่งสัญญาณ (TCP) - - - - - - - - - - - - - - - - - - 179

8.3.2 โปรโตคอลการถ่ายโอนไฮเปอร์เท็กซ์ (HTTP) - - - - - - - - - - - - - - - - - - 185

8.3.3 ผู้ใช้ดาtagโปรโตคอลแรม (UDP) - - - - - - - - - - - - - - - - - - - - - 189

8.3.4 โปรโตคอลแอปพลิเคชันที่มีข้อจำกัด (CoAP) - - - - - - - - - - - - - - - 192

8.3.5 โปรโตคอลบลูทูธ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 197

8.3.6 สรุปโปรโตคอลการสื่อสารข้อมูล - - - - - - - - - - - - - - 203

8.4 การรับประกันความปลอดภัยของข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - 205

8.4.1 ข้อมูลเบื้องต้นเกี่ยวกับ Transport Layer Security (TLS) - - - - - - - - - - - - 207

8.4.2 ความรู้เบื้องต้นเกี่ยวกับดาtagความปลอดภัยของเลเยอร์การขนส่งราม (DTLS) - - - - - - 213

8.5 แนวปฏิบัติ: การควบคุมท้องถิ่นในโครงการไฟอัจฉริยะ. - - - - - - - - - - - - - - - - - 217

8.5.1 การสร้างเซิร์ฟเวอร์ควบคุมภายในที่ใช้ Wi-Fi - - - - - - - - - - - - - - 217

8.5.2 การตรวจสอบฟังก์ชันการควบคุมภายในโดยใช้สคริปต์ - - - - - - - - - - 221

8.5.3 การสร้างเซิร์ฟเวอร์ควบคุมภายในที่ใช้ Bluetooth - - - - - - - - - - - 222

8.6 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 224

9 การควบคุมคลาวด์

225

9.1 ข้อมูลเบื้องต้นเกี่ยวกับการควบคุมระยะไกล - - - - - - - - - - - - - - - - - - - - - - - - - 225

9.2 โปรโตคอลการสื่อสารข้อมูลบนคลาวด์ - - - - - - - - - - - - - - - - - - - - - 226

9.2.1 บทนำ MQTT - - - - - - - - - - - - - - - - - - - - - - - - - - - - 226 9.2.2 หลักการ MQTT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 227 9.2.3 รูปแบบข้อความ MQTT - - - - - - - - - - - - - - - - - - - - - - - - - 228 9.2.4 การเปรียบเทียบโปรโตคอล - - - - - - - - - - - - - - - - - - - - - - - - - - - 233 9.2.5 การตั้งค่าโบรกเกอร์ MQTT บน Linux และ Windows - - - - - - - - - - - 233 9.2.6 การตั้งค่าไคลเอนต์ MQTT ตาม ESP-IDF - - - - - - - - - - - - - - - 235 9.3 การรับรองความปลอดภัยของข้อมูล MQTT - - - - - - - - - - - - - - - - - - - - - - - - - - 237 9.3.1 ความหมายและหน้าที่ของใบรับรอง - - - - - - - - - - - - - - - - - - 237 9.3.2 การสร้างใบรับรองในเครื่อง - - - - - - - - - - - - - - - - - - - - - 239 9.3.3 การกำหนดค่าโบรกเกอร์ MQTT - - - - - - - - - - - - - - - - - - - - - - - - 241 9.3.4 การกำหนดค่าไคลเอนต์ MQTT - - - - - - - - - - - - - - - - - - - - - - - - 241 9.4 การปฏิบัติ: การควบคุมระยะไกลผ่าน ESP RainMaker - - - - - - - - - - - - - - - 243 9.4.1 พื้นฐาน ESP RainMaker - - - - - - - - - - - - - - - - - - - - - - - - - - 243 9.4.2 โปรโตคอลการสื่อสารโหนดและคลาวด์แบ็กเอนด์ - - - - - - - - - - 244 9.4.3 การสื่อสารระหว่างไคลเอนต์และคลาวด์แบ็กเอนด์ - - - - - - - - - - 249 9.4.4 บทบาทของผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 252 9.4.5 บริการพื้นฐาน. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 253 9.4.6 สมาร์ทไลท์ เช่นampเลอ - - - - - - - - - - - - - - - - - - - - - - - - - - - 255 9.4.7 แอป RainMaker และการรวมระบบของบุคคลที่สาม - - - - - - - - - - - - - - 262 9.5 สรุป. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 267

10 การพัฒนาแอพสมาร์ทโฟน

269

10.1 ความรู้เบื้องต้นเกี่ยวกับการพัฒนาแอพสมาร์ทโฟน - - - - - - - - - - - - - - - - - 269

10.1.1 เกินview ของการพัฒนาแอพสมาร์ทโฟน - - - - - - - - - - - - - - 270

10.1.2 โครงสร้างของโครงการ Android - - - - - - - - - - - - - - - - - - - - - 270

10.1.3 โครงสร้างของโครงการ iOS - - - - - - - - - - - - - - - - - - - - - - - 271

10.1.4 วงจรชีวิตของกิจกรรม Android - - - - - - - - - - - - - - - - - - - - - 272

10.1.5 วงจรการใช้งานของ iOS Viewคอนโทรลเลอร์ - - - - - - - - - - - - - - - - - - - - - 273

10.2 การสร้างโครงการแอพสมาร์ทโฟนใหม่ - - - - - - - - - - - - - - - - - - - - 275

10.2.1 การเตรียมพร้อมสำหรับการพัฒนา Android - - - - - - - - - - - - - - - - - - 275

10.2.2 การสร้างโครงการ Android ใหม่ - - - - - - - - - - - - - - - - - - - - - 275

10.2.3 การเพิ่มการพึ่งพาสำหรับ MyRainmaker - - - - - - - - - - - - - - - - 276

10.2.4 คำขอสิทธิ์ใน Android - - - - - - - - - - - - - - - - - - - - - 277

10.2.5 การเตรียมพร้อมสำหรับการพัฒนา iOS - - - - - - - - - - - - - - - - - - - - - 277

10.2.6 การสร้างโปรเจ็กต์ iOS ใหม่ - - - - - - - - - - - - - - - - - - - - - - - 278

10.2.7 การเพิ่มการพึ่งพาสำหรับ MyRainmaker - - - - - - - - - - - - - - - - 279

10.2.8 คำขอสิทธิ์ใน iOS - - - - - - - - - - - - - - - - - - - - - - - - 280

10.3 การวิเคราะห์ข้อกำหนดด้านการทำงานของแอป - - - - - - - - - - - - - - - - - 281

10.3.1 การวิเคราะห์ข้อกำหนดด้านการทำงานของโครงการ - - - - - - - - - - - 282

10.3.2 การวิเคราะห์ข้อกำหนดการจัดการผู้ใช้ - - - - - - - - - - - - - - 282 10.3.3 การวิเคราะห์ข้อกำหนดในการจัดเตรียมอุปกรณ์และการเชื่อมโยง - - - - - - 283 10.3.4 การวิเคราะห์ข้อกำหนดการควบคุมระยะไกล - - - - - - - - - - - - - - - 283 10.3.5 การวิเคราะห์ข้อกำหนดด้านตารางเวลา - - - - - - - - - - - - - - - - - - 284 10.3.6 การวิเคราะห์ข้อกำหนดของศูนย์ผู้ใช้ - - - - - - - - - - - - - - - - - 285 10.4 การพัฒนาการจัดการผู้ใช้. - - - - - - - - - - - - - - - - - - - - - - - 285 10.4.1 ข้อมูลเบื้องต้นเกี่ยวกับ RainMaker API - - - - - - - - - - - - - - - - - - - - - 285 10.4.2 การเริ่มต้นการสื่อสารผ่านสมาร์ทโฟน - - - - - - - - - - - - - - - 286 10.4.3 การลงทะเบียนบัญชี. - - - - - - - - - - - - - - - - - - - - - - - - - - - 286 10.4.4 เข้าสู่ระบบบัญชี. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 289 10.5 การพัฒนาการจัดเตรียมอุปกรณ์ - - - - - - - - - - - - - - - - - - - - - - 292 10.5.1 อุปกรณ์สแกน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 293 10.5.2 อุปกรณ์เชื่อมต่อ. - - - - - - - - - - - - - - - - - - - - - - - - - - - - 295 10.5.3 การสร้างคีย์ลับ - - - - - - - - - - - - - - - - - - - - - - - - - - 298 10.5.4 รับ Node ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 298 10.5.5 อุปกรณ์จัดเตรียม. - - - - - - - - - - - - - - - - - - - - - - - - - - - 300 10.6 การพัฒนาการควบคุมอุปกรณ์ - - - - - - - - - - - - - - - - - - - - - - - - - 302 10.6.1 การเชื่อมโยงอุปกรณ์กับบัญชีคลาวด์ - - - - - - - - - - - - - - - - - - - 303 10.6.2 การรับรายการอุปกรณ์ - - - - - - - - - - - - - - - - - - - - - - - - - 305 10.6.3 การรับสถานะอุปกรณ์ - - - - - - - - - - - - - - - - - - - - - - - - - - 308 10.6.4 การเปลี่ยนสถานะอุปกรณ์ - - - - - - - - - - - - - - - - - - - - - - - - - 310 10.7 การพัฒนาการจัดกำหนดการและศูนย์ผู้ใช้ - - - - - - - - - - - - - - - - - - 313 10.7.1 การใช้ฟังก์ชันกำหนดเวลา - - - - - - - - - - - - - - - - - - - 313 10.7.2 การใช้ศูนย์ผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - 315 10.7.3 Cloud API เพิ่มเติม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 318 10.8 สรุป. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 319

11 การอัพเกรดเฟิร์มแวร์และการจัดการเวอร์ชัน

321

11.1 การอัพเกรดเฟิร์มแวร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 321

11.1.1 เกินview ของตารางพาร์ติชั่น - - - - - - - - - - - - - - - - - - - - - - - 322

11.1.2 กระบวนการบู๊ตเฟิร์มแวร์ - - - - - - - - - - - - - - - - - - - - - - - - - - 324

11.1.3 เกินview ของกลไก OTA - - - - - - - - - - - - - - - - - - - - 326

11.2 การจัดการเวอร์ชันเฟิร์มแวร์ - - - - - - - - - - - - - - - - - - - - - - - - - 329

11.2.1 การทำเครื่องหมายเฟิร์มแวร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 329

11.2.2 การย้อนกลับและการป้องกันการย้อนกลับ - - - - - - - - - - - - - - - - - - - - - - - 331

11.3 การฝึกปฏิบัติ: Over-the-air (OTA) เช่นampเลอ - - - - - - - - - - - - - - - - - - - - - - 332

11.3.1 อัปเกรดเฟิร์มแวร์ผ่านโลคัลโฮสต์ - - - - - - - - - - - - - - - - 332

11.3.2 อัปเกรดเฟิร์มแวร์ผ่าน ESP RainMaker - - - - - - - - - - - - - - 335

11.4 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 342

การเพิ่มประสิทธิภาพ IV และการผลิตจำนวนมาก

343

12 การจัดการพลังงานและการเพิ่มประสิทธิภาพพลังงานต่ำ

345

12.1 การจัดการพลังงาน ESP32-C3 . - - - - - - - - - - - - - - - - - - - - - - - - - - 345

12.1.1 การปรับความถี่แบบไดนามิก - - - - - - - - - - - - - - - - - - - - - - - 346

12.1.2 การกำหนดค่าการจัดการพลังงาน - - - - - - - - - - - - - - - - - - - 348

12.2 โหมดพลังงานต่ำ ESP32-C3 - - - - - - - - - - - - - - - - - - - - - - - - - - - 348

12.2.1 โหมดสลีปของโมเด็ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - 349

12.2.2 โหมดสลีปแสง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351

12.2.3 โหมดการนอนหลับลึก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 356

12.2.4 การสิ้นเปลืองกระแสไฟในโหมดพลังงานที่แตกต่างกัน - - - - - - - - - - - - 358

12.3 การจัดการพลังงานและการดีบักพลังงานต่ำ - - - - - - - - - - - - - - - - 359

12.3.1 การดีบักบันทึก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 360

12.3.2 การดีบัก GPIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362

12.4 แนวปฏิบัติ: การจัดการพลังงานในโครงการไฟอัจฉริยะ. - - - - - - - - - - - - - - 363

12.4.1 การกำหนดค่าคุณสมบัติการจัดการพลังงาน - - - - - - - - - - - - - - - - 364

12.4.2 ใช้ล็อคการจัดการพลังงาน - - - - - - - - - - - - - - - - - - - - - 365

12.4.3 การตรวจสอบการใช้พลังงาน - - - - - - - - - - - - - - - - - - - - - - 366

12.5 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367

13 คุณสมบัติความปลอดภัยของอุปกรณ์ที่ได้รับการปรับปรุง

369

13.1 เกินview ของการรักษาความปลอดภัยข้อมูลอุปกรณ์ IoT - - - - - - - - - - - - - - - - - - - - - - 369

13.1.1 เหตุใดจึงต้องรักษาความปลอดภัยข้อมูลอุปกรณ์ IoT - - - - - - - - - - - - - - - - - - - - - - 370

13.1.2 ข้อกำหนดพื้นฐานสำหรับความปลอดภัยของข้อมูลอุปกรณ์ IoT - - - - - - - - - - - 371

13.2 การคุ้มครองความสมบูรณ์ของข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372

13.2.1 ข้อมูลเบื้องต้นเกี่ยวกับวิธีการตรวจสอบความสมบูรณ์ - - - - - - - - - - - - - 372

13.2.2 การตรวจสอบความสมบูรณ์ของข้อมูลเฟิร์มแวร์ - - - - - - - - - - - - - - - - - 373

13.2.3 อดีตampเลอ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 374

13.3 การคุ้มครองความลับของข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - 374

13.3.1 ข้อมูลเบื้องต้นเกี่ยวกับการเข้ารหัสข้อมูล - - - - - - - - - - - - - - - - - - - - - 374

13.3.2 ข้อมูลเบื้องต้นเกี่ยวกับแผนการเข้ารหัสแฟลช - - - - - - - - - - - - - - - - 376

13.3.3 การจัดเก็บคีย์การเข้ารหัสแฟลช - - - - - - - - - - - - - - - - - - - - - - 379

13.3.4 โหมดการทำงานของการเข้ารหัสแฟลช - - - - - - - - - - - - - - - - - - - 380

13.3.5 กระบวนการเข้ารหัสแฟลช - - - - - - - - - - - - - - - - - - - - - - - - - 381

13.3.6 ความรู้เบื้องต้นเกี่ยวกับการเข้ารหัส NVS - - - - - - - - - - - - - - - - - - - - - 383

13.3.7 อดีตampการเข้ารหัส Flash และการเข้ารหัส NVS - - - - - - - - - - 384

13.4 การคุ้มครองความถูกต้องของข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - 386

13.4.1 ข้อมูลเบื้องต้นเกี่ยวกับลายเซ็นดิจิทัล - - - - - - - - - - - - - - - - - - - - 386

13.4.2 เกินview ของ Secure Boot Scheme - - - - - - - - - - - - - - - - - - - - 388

13.4.3 ข้อมูลเบื้องต้นเกี่ยวกับซอฟต์แวร์ Secure Boot - - - - - - - - - - - - - - - - - - 388 13.4.4 ข้อมูลเบื้องต้นเกี่ยวกับการบูตอย่างปลอดภัยของฮาร์ดแวร์ - - - - - - - - - - - - - - - - - 390 13.4.5 เช่นampเล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 394 13.5 การปฏิบัติ: คุณลักษณะด้านความปลอดภัยในการผลิตจำนวนมาก. - - - - - - - - - - - - - - - - - 396 13.5.1 การเข้ารหัสแฟลชและการบูตอย่างปลอดภัย - - - - - - - - - - - - - - - - - - - - 396 13.5.2 การเปิดใช้งานการเข้ารหัสแฟลชและการบูตอย่างปลอดภัยด้วย Batch Flash Tools - 397 13.5.3 การเปิดใช้งานการเข้ารหัสแฟลชและการบูตอย่างปลอดภัยในโครงการ Smart Light - - 398 13.6 สรุป. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 398

14 การเผาไหม้เฟิร์มแวร์และการทดสอบสำหรับการผลิตจำนวนมาก

399

14.1 การเผาไหม้เฟิร์มแวร์ในการผลิตจำนวนมาก - - - - - - - - - - - - - - - - - - - - - 399

14.1.1 การกำหนดพาร์ติชันข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - 399

14.1.2 การเผาไหม้เฟิร์มแวร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 402

14.2 การทดสอบการผลิตจำนวนมาก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 403

14.3 แนวปฏิบัติ: ข้อมูลการผลิตจำนวนมากในโครงการสมาร์ทไลท์. - - - - - - - - - - - - 404

14.4 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404

15 ESP Insights: แพลตฟอร์มการตรวจสอบระยะไกล

405

15.1 ข้อมูลเบื้องต้นเกี่ยวกับข้อมูลเชิงลึกของ ESP - - - - - - - - - - - - - - - - - - - - - - - - - - - 405

15.2 การเริ่มต้นใช้งาน ESP Insights - - - - - - - - - - - - - - - - - - - - - - - - 409

15.2.1 การเริ่มต้นใช้งาน ESP Insights ในโครงการ esp-insights - - - - - 409

15.2.2 การวิ่ง ตัวอย่างampในโครงการ esp-insights - - - - - - - - - - - - - - 411

15.2.3 การรายงานข้อมูล Coredump - - - - - - - - - - - - - - - - - - - - 411

15.2.4 การปรับแต่งบันทึกที่น่าสนใจ - - - - - - - - - - - - - - - - - - - - - - - 412

15.2.5 การรายงานเหตุผลในการรีบูต - - - - - - - - - - - - - - - - - - - - - - - - 413

15.2.6 การรายงานตัวชี้วัดที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - 413

15.3 แนวทางปฏิบัติ: การใช้ ESP Insights ในโครงการ Smart Light - - - - - - - - - - - - - - 416

15.4 สรุป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 417

การแนะนำ
ESP32-C3 เป็น SoC ไมโครคอนโทรลเลอร์ Wi-Fi แบบคอร์เดียวและ Bluetooth 5 (LE) ที่ใช้สถาปัตยกรรมโอเพ่นซอร์ส RISC-V โดยให้ความสมดุลที่เหมาะสมระหว่างพลังงาน ความสามารถของ I/O และความปลอดภัย จึงนำเสนอโซลูชันที่คุ้มค่าที่สุดสำหรับอุปกรณ์ที่เชื่อมต่อ เพื่อแสดงการใช้งานต่างๆ ของตระกูล ESP32-C3 หนังสือเล่มนี้โดย Espressif จะพาคุณเดินทางที่น่าสนใจผ่าน AIoT เริ่มต้นตั้งแต่พื้นฐานของการพัฒนาโครงการ IoT และการตั้งค่าสภาพแวดล้อมไปจนถึงตัวอย่างการใช้งานจริงampเลส์ สี่บทแรกพูดถึง IoT, ESP RainMaker และ ESP-IDF บทที่ 5 และ 6 บทสรุปเกี่ยวกับการออกแบบฮาร์ดแวร์และการพัฒนาไดรเวอร์ เมื่อคุณดำเนินการ คุณจะค้นพบวิธีกำหนดค่าโปรเจ็กต์ของคุณผ่านเครือข่าย Wi-Fi และแอปมือถือ สุดท้ายนี้ คุณจะได้เรียนรู้ที่จะเพิ่มประสิทธิภาพโครงการของคุณและนำไปใช้ในการผลิตจำนวนมาก
หากคุณเป็นวิศวกรในสาขาที่เกี่ยวข้อง สถาปนิกซอฟต์แวร์ ครู นักเรียน หรือใครก็ตามที่สนใจ IoT หนังสือเล่มนี้เหมาะสำหรับคุณ
คุณสามารถดาวน์โหลดโค้ดได้เช่นample ที่ใช้ในหนังสือเล่มนี้จากเว็บไซต์ของ Espressif บน GitHub สำหรับข้อมูลล่าสุดเกี่ยวกับการพัฒนา IoT โปรดติดตามบัญชีอย่างเป็นทางการของเรา

คำนำ
โลกที่ให้ข้อมูล
ด้วยกระแสแห่งอินเทอร์เน็ต Internet of Things (IoT) เปิดตัวอย่างยิ่งใหญ่จนกลายเป็นโครงสร้างพื้นฐานรูปแบบใหม่ในเศรษฐกิจดิจิทัล เพื่อนำเทคโนโลยีนี้เข้าใกล้สาธารณะมากขึ้น Espressif Systems ทำงานตามวิสัยทัศน์ที่ว่านักพัฒนาจากทุกสาขาอาชีพสามารถใช้ IoT เพื่อแก้ไขปัญหาเร่งด่วนที่สุดในยุคของเรา โลกแห่ง “เครือข่ายอัจฉริยะของทุกสิ่ง” คือสิ่งที่เราคาดหวังจากอนาคต
การออกแบบชิปของเราเองถือเป็นองค์ประกอบสำคัญของวิสัยทัศน์ดังกล่าว มันจะเป็นการแข่งขันวิ่งมาราธอนซึ่งต้องมีการพัฒนาอย่างต่อเนื่องและก้าวข้ามขอบเขตทางเทคโนโลยี ตั้งแต่ “Game Changer” ESP8266 ไปจนถึงซีรีส์ ESP32 ที่ผสานรวมการเชื่อมต่อ Wi-Fi และ Bluetoothr (LE) ตามด้วย ESP32-S3 ที่มาพร้อมกับการเร่งความเร็ว AI ทำให้ Espressif ไม่เคยหยุดค้นคว้าและพัฒนาผลิตภัณฑ์สำหรับโซลูชัน AIoT ด้วยซอฟต์แวร์โอเพ่นซอร์สของเรา เช่น IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF และ Device Connectivity Platform ESP RainMaker เราได้สร้างเฟรมเวิร์กอิสระสำหรับการสร้างแอปพลิเคชัน AIoT
ณ เดือนกรกฎาคม 2022 ยอดจัดส่งชิปเซ็ต IoT ของ Espressif มียอดทะลุ 800 ล้านชิ้น ซึ่งเป็นผู้นำในตลาด MCU Wi-Fi และขับเคลื่อนอุปกรณ์ที่เชื่อมต่อจำนวนมากทั่วโลก การแสวงหาความเป็นเลิศทำให้ผลิตภัณฑ์ Espressif ทุกชิ้นได้รับความนิยมอย่างมากจากการบูรณาการในระดับสูงและความคุ้มค่าด้านต้นทุน การเปิดตัว ESP32-C3 ถือเป็นก้าวสำคัญของเทคโนโลยีที่ Espressif พัฒนาขึ้นเอง เป็น MCU ที่ใช้ RISC-V แบบคอร์เดียว 32 บิต พร้อม SRAM ขนาด 400KB ซึ่งสามารถทำงานที่ความเร็ว 160MHz มีการรวม Wi-Fi 2.4 GHz และ Bluetooth 5 (LE) เข้ากับการรองรับระยะไกล มีสมดุลที่ดีระหว่างพลังงาน ความสามารถของ I/O และความปลอดภัย จึงนำเสนอโซลูชันที่คุ้มค่าที่สุดสำหรับอุปกรณ์ที่เชื่อมต่อ จาก ESP32-C3 อันทรงพลังดังกล่าว หนังสือเล่มนี้มีจุดมุ่งหมายเพื่อช่วยให้ผู้อ่านเข้าใจความรู้ที่เกี่ยวข้องกับ IoT พร้อมภาพประกอบโดยละเอียดและตัวอย่างการปฏิบัติจริงampเลส.
ทำไมเราถึงเขียนหนังสือเล่มนี้?
Espressif Systems เป็นมากกว่าบริษัทเซมิคอนดักเตอร์ นอกจากนี้ยังเป็นบริษัทแพลตฟอร์ม IoT ซึ่งมุ่งมั่นเพื่อความก้าวหน้าและนวัตกรรมในด้านเทคโนโลยีอยู่เสมอ ในเวลาเดียวกัน Espressif ยังได้โอเพ่นซอร์สและแบ่งปันระบบปฏิบัติการและเฟรมเวิร์กซอฟต์แวร์ที่พัฒนาตนเองกับชุมชน เพื่อสร้างระบบนิเวศที่มีเอกลักษณ์ วิศวกร ผู้ผลิต และผู้ที่ชื่นชอบเทคโนโลยีพัฒนาแอปพลิเคชันซอฟต์แวร์ใหม่อย่างแข็งขันโดยอิงจากผลิตภัณฑ์ของ Espressif สื่อสารและแบ่งปันประสบการณ์ของพวกเขาได้อย่างอิสระ คุณสามารถดูแนวคิดที่น่าสนใจของนักพัฒนาบนแพลตฟอร์มต่างๆ ได้ตลอดเวลา เช่น YouTube และ GitHub ความนิยมในผลิตภัณฑ์ของ Espressif ได้กระตุ้นให้มีนักเขียนจำนวนมากขึ้นซึ่งผลิตหนังสือที่ใช้ชิปเซ็ต Espressif มากกว่า 100 เล่มในกว่า XNUMX ภาษา รวมถึงภาษาอังกฤษ จีน เยอรมัน ฝรั่งเศส และญี่ปุ่น

การสนับสนุนและความไว้วางใจจากพันธมิตรในชุมชนที่ส่งเสริมนวัตกรรมอย่างต่อเนื่องของ Espressif “เรามุ่งมั่นที่จะทำให้ชิป ระบบปฏิบัติการ เฟรมเวิร์ก โซลูชัน คลาวด์ การดำเนินธุรกิจ เครื่องมือ เอกสาร งานเขียน แนวคิด ฯลฯ ของเรามีความเกี่ยวข้องกับคำตอบที่ผู้คนต้องการในปัญหาเร่งด่วนที่สุดในชีวิตร่วมสมัยมากขึ้น นี่คือความทะเยอทะยานและเข็มทิศทางศีลธรรมสูงสุดของ Espressif” นายเตียว สวี แอน ผู้ก่อตั้งและซีอีโอของ Espressif กล่าว
Espressif ให้ความสำคัญกับการอ่านและแนวคิด เนื่องจากการอัปเกรดเทคโนโลยี IoT อย่างต่อเนื่องทำให้เกิดความต้องการวิศวกรที่สูงขึ้น เราจะช่วยให้ผู้คนจำนวนมากขึ้นเชี่ยวชาญชิป IoT ระบบปฏิบัติการ กรอบงานซอฟต์แวร์ โครงร่างแอปพลิเคชัน และผลิตภัณฑ์บริการคลาวด์ได้อย่างรวดเร็วได้อย่างไร ดังสุภาษิตที่ว่า สอนคนจับปลา ดีกว่าให้ปลาเขา ในเซสชั่นการระดมความคิด เราพบว่าเราสามารถเขียนหนังสือเพื่อแยกแยะความรู้ที่สำคัญของการพัฒนา IoT อย่างเป็นระบบได้ เราประสบความสำเร็จ โดยรวบรวมกลุ่มวิศวกรอาวุโสอย่างรวดเร็ว และผสมผสานประสบการณ์ของทีมเทคนิคในการเขียนโปรแกรมแบบฝัง ฮาร์ดแวร์ IoT และการพัฒนาซอฟต์แวร์ ทั้งหมดนี้มีส่วนช่วยในการจัดพิมพ์หนังสือเล่มนี้ ในกระบวนการเขียน เราพยายามอย่างดีที่สุดที่จะเป็นกลางและยุติธรรม ปราศจากรังไหม และใช้สำนวนที่กระชับเพื่อบอกเล่าความซับซ้อนและเสน่ห์ของ Internet of Things เราได้สรุปคำถามทั่วไปอย่างรอบคอบ อ้างอิงถึงข้อเสนอแนะและข้อเสนอแนะของชุมชน เพื่อตอบคำถามที่พบในกระบวนการพัฒนาอย่างชัดเจน และจัดเตรียมแนวทางการพัฒนา IoT ที่ใช้งานได้จริงสำหรับช่างเทคนิคและผู้มีอำนาจตัดสินใจที่เกี่ยวข้อง
โครงสร้างหนังสือ
หนังสือเล่มนี้ใช้มุมมองที่เน้นวิศวกรเป็นศูนย์กลางและอธิบายความรู้ที่จำเป็นสำหรับการพัฒนาโครงการ IoT ทีละขั้นตอน ประกอบด้วย 4 ส่วน ดังนี้
· การเตรียมการ (บทที่ 1): ส่วนนี้จะแนะนำสถาปัตยกรรมของ IoT, เฟรมเวิร์กโครงการ IoT ทั่วไป, แพลตฟอร์มระบบคลาวด์ ESP RainMakerr และสภาพแวดล้อมการพัฒนา ESP-IDF เพื่อเป็นการวางรากฐานที่มั่นคงสำหรับการพัฒนาโครงการ IoT
· การพัฒนาฮาร์ดแวร์และไดรเวอร์ (บทที่ 5): ขึ้นอยู่กับชิปเซ็ต ESP6-C32 ส่วนนี้จะอธิบายรายละเอียดเกี่ยวกับระบบฮาร์ดแวร์ขั้นต่ำและการพัฒนาไดรเวอร์ และใช้การควบคุมการลดแสง การจัดระดับสี และการสื่อสารไร้สาย
· การสื่อสารและการควบคุมไร้สาย (บทที่ 7): ส่วนนี้จะอธิบายโครงร่างการกำหนดค่า Wi-Fi อัจฉริยะที่ใช้ชิป ESP11-C32 โปรโตคอลการควบคุมภายในและบนคลาวด์ และการควบคุมอุปกรณ์ภายในและระยะไกล นอกจากนี้ยังมีแผนสำหรับการพัฒนาแอปสมาร์ทโฟน การอัปเกรดเฟิร์มแวร์ และการจัดการเวอร์ชันอีกด้วย
· การเพิ่มประสิทธิภาพและการผลิตจำนวนมาก (บทที่ 12-15): ส่วนนี้มีไว้สำหรับแอปพลิเคชัน IoT ขั้นสูง โดยมุ่งเน้นที่การเพิ่มประสิทธิภาพของผลิตภัณฑ์ในการจัดการพลังงาน การเพิ่มประสิทธิภาพพลังงานต่ำ และความปลอดภัยขั้นสูง นอกจากนี้ยังแนะนำการเบิร์นและการทดสอบเฟิร์มแวร์ในการผลิตจำนวนมาก และวิธีการวินิจฉัยสถานะการทำงานและบันทึกของเฟิร์มแวร์อุปกรณ์ผ่านแพลตฟอร์มการตรวจสอบระยะไกล ESP Insights

เกี่ยวกับซอร์สโค้ด
ผู้อ่านสามารถเรียกใช้อดีตampโปรแกรมต่างๆ ในหนังสือเล่มนี้ ไม่ว่าจะโดยการป้อนโค้ดด้วยตนเองหรือโดยใช้ซอร์สโค้ดที่มาพร้อมกับหนังสือ เราเน้นการผสมผสานระหว่างทฤษฎีและการปฏิบัติ และด้วยเหตุนี้จึงได้กำหนดส่วนการปฏิบัติตามโครงการ Smart Light ในเกือบทุกบท รหัสทั้งหมดเป็นแบบโอเพ่นซอร์ส ผู้อ่านสามารถดาวน์โหลดซอร์สโค้ดและพูดคุยในส่วนที่เกี่ยวข้องกับหนังสือเล่มนี้บน GitHub และฟอรัมอย่างเป็นทางการของเรา esp32.com รหัสโอเพ่นซอร์สของหนังสือเล่มนี้อยู่ภายใต้เงื่อนไขของ Apache License 2.0
หมายเหตุของผู้แต่ง
หนังสือเล่มนี้ผลิตอย่างเป็นทางการโดย Espressif Systems และเขียนโดยวิศวกรอาวุโสของบริษัท เหมาะสำหรับผู้จัดการและบุคลากรด้านการวิจัยและพัฒนาในอุตสาหกรรมที่เกี่ยวข้องกับ IoT ครูและนักศึกษาในสาขาวิชาที่เกี่ยวข้อง และผู้ที่ชื่นชอบในสาขา Internet of Things เราหวังว่าหนังสือเล่มนี้สามารถใช้เป็นคู่มือการทำงาน แหล่งอ้างอิง และหนังสือข้างเตียง เพื่อเป็นเสมือนครูสอนพิเศษและเพื่อนที่ดี
ในขณะที่รวบรวมหนังสือเล่มนี้ เราได้อ้างอิงถึงผลการวิจัยที่เกี่ยวข้องของผู้เชี่ยวชาญ นักวิชาการ และช่างเทคนิคทั้งในและต่างประเทศ และเราได้พยายามอย่างเต็มที่ที่จะอ้างอิงผลการวิจัยเหล่านี้ตามมาตรฐานทางวิชาการ อย่างไรก็ตาม เป็นสิ่งที่หลีกเลี่ยงไม่ได้ที่จะมีการละเว้นบางประการ ดังนั้น เราขอแสดงความเคารพและขอบคุณอย่างสุดซึ้งต่อผู้เขียนที่เกี่ยวข้องทุกท่าน นอกจากนี้ เราได้อ้างอิงข้อมูลจากอินเทอร์เน็ต ดังนั้นเราจึงขอขอบคุณผู้เขียนต้นฉบับและผู้จัดพิมพ์ และขออภัยที่เราไม่สามารถระบุแหล่งที่มาของข้อมูลได้ทุกส่วน
เพื่อที่จะผลิตหนังสือคุณภาพสูง เราได้จัดให้มีการอภิปรายภายในเป็นรอบ และเรียนรู้จากข้อเสนอแนะและคำติชมของผู้อ่านรุ่นทดลองและบรรณาธิการผู้จัดพิมพ์ เราขอขอบคุณอีกครั้งสำหรับความช่วยเหลือของคุณซึ่งมีส่วนทำให้งานนี้ประสบความสำเร็จ
สุดท้ายนี้ แต่ที่สำคัญที่สุด ขอขอบคุณทุกคนที่ Espressif ที่ทำงานอย่างหนักเพื่อให้กำเนิดและเผยแพร่ผลิตภัณฑ์ของเราให้แพร่หลาย
การพัฒนาโครงการ IoT เกี่ยวข้องกับความรู้ที่หลากหลาย จำกัดเพียงความยาวของหนังสือ รวมถึงระดับและประสบการณ์ของผู้เขียน การละเว้นเป็นสิ่งที่หลีกเลี่ยงไม่ได้ ดังนั้นเราจึงขอให้ผู้เชี่ยวชาญและผู้อ่านวิพากษ์วิจารณ์และแก้ไขข้อผิดพลาดของเรา หากคุณมีข้อเสนอแนะเกี่ยวกับหนังสือเล่มนี้ โปรดติดต่อเราที่ book@espressif.com เราหวังว่าจะได้รับความคิดเห็นของคุณ

หนังสือเล่มนี้ใช้อย่างไร?
รหัสของโครงการในหนังสือเล่มนี้เป็นโอเพ่นซอร์ส คุณสามารถดาวน์โหลดได้จากพื้นที่เก็บข้อมูล GitHub ของเรา และแบ่งปันความคิดและคำถามของคุณในฟอรัมอย่างเป็นทางการของเรา GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 ตลอดทั้งเล่มจะมีส่วนที่ไฮไลต์ดังภาพด้านล่าง
ซอร์สโค้ด ในหนังสือเล่มนี้ เราเน้นการผสมผสานระหว่างทฤษฎีและการปฏิบัติ จึงได้กำหนดส่วนการปฏิบัติเกี่ยวกับโครงการ Smart Light ในเกือบทุกบท ขั้นตอนที่สอดคล้องและหน้าแหล่งที่มาจะถูกทำเครื่องหมายระหว่างสองบรรทัดที่ขึ้นต้นด้วย tag โค้ดต้นฉบับ
หมายเหตุ/เคล็ดลับ นี่คือที่ที่คุณอาจพบข้อมูลที่สำคัญและคำเตือนสำหรับการดีบักโปรแกรมของคุณสำเร็จ โดยจะถูกทำเครื่องหมายไว้ระหว่างเส้นหนาสองเส้นที่ขึ้นต้นด้วย tag หมายเหตุหรือเคล็ดลับ
คำสั่งส่วนใหญ่ในหนังสือเล่มนี้ดำเนินการภายใต้ Linux โดยมีอักขระ “$” แสดงขึ้นมา หากคำสั่งต้องการสิทธิ์ผู้ใช้ขั้นสูงในการดำเนินการ พรอมต์จะถูกแทนที่ด้วย “#” พรอมต์คำสั่งบนระบบ Mac คือ “%” ดังที่ใช้ในหัวข้อ 4.2.3 การติดตั้ง ESP-IDF บน Mac
ข้อความเนื้อหาในหนังสือเล่มนี้จะถูกพิมพ์ในกฎบัตร ในขณะที่รหัส เช่นampไฟล์ ส่วนประกอบ ฟังก์ชัน ตัวแปร โค้ด file ชื่อ ไดเร็กทอรีโค้ด และสตริงจะอยู่ใน Courier New
คำสั่งหรือข้อความที่ผู้ใช้จำเป็นต้องป้อน และคำสั่งที่สามารถป้อนได้ด้วยการกดปุ่ม "Enter" จะถูกพิมพ์ด้วยตัวหนา Courier New บันทึกและบล็อคโค้ดจะแสดงในกล่องสีฟ้าอ่อน
Exampเลอ:
ประการที่สอง ใช้ esp-idf/components/nvs flash/nvs partition Generator/nvs partition gen.py เพื่อสร้างไบนารีของพาร์ติชัน NVS file บนโฮสต์การพัฒนาด้วยคำสั่งต่อไปนี้:
$ python $IDF PATH/ส่วนประกอบ/nvs flash/nvs ตัวสร้างพาร์ติชัน/พาร์ติชัน nvs gen.py –มวลอินพุต prod.csv –มวลเอาต์พุต prod.bin –ขนาด ขนาดพาร์ติชัน NVS

บทที่ 1

การแนะนำ

ถึง

ไอโอที

ในช่วงปลายศตวรรษที่ 20 ด้วยการเพิ่มขึ้นของเครือข่ายคอมพิวเตอร์และเทคโนโลยีการสื่อสาร อินเทอร์เน็ตได้รวมเข้ากับชีวิตของผู้คนอย่างรวดเร็ว ในขณะที่เทคโนโลยีอินเทอร์เน็ตเติบโตอย่างต่อเนื่อง แนวคิดเรื่อง Internet of Things (IoT) ก็ถือกำเนิดขึ้น แท้จริงแล้ว IoT หมายถึงอินเทอร์เน็ตที่ทุกสิ่งเชื่อมต่อกัน ในขณะที่อินเทอร์เน็ตดั้งเดิมทลายข้อจำกัดของพื้นที่และเวลา และทำให้ระยะห่างระหว่าง "บุคคลและบุคคล" แคบลง แต่ IoT ทำให้ "สิ่งของ" กลายเป็นผู้มีส่วนร่วมที่สำคัญ โดยนำ "ผู้คน" และ "สิ่งของ" ให้ใกล้ชิดกันมากขึ้น ในอนาคตอันใกล้นี้ IoT จะกลายเป็นพลังขับเคลื่อนของอุตสาหกรรมสารสนเทศ
แล้ว Internet of Things คืออะไร?
เป็นการยากที่จะให้คำจำกัดความ Internet of Things ได้อย่างแม่นยำ เนื่องจากความหมายและขอบเขตของอินเทอร์เน็ตมีการพัฒนาอยู่ตลอดเวลา ในปี 1995 Bill Gates ได้หยิบยกแนวคิด IoT ขึ้นมาเป็นครั้งแรกในหนังสือของเขา The Road Ahead พูดง่ายๆ ก็คือ IoT ช่วยให้วัตถุสามารถแลกเปลี่ยนข้อมูลระหว่างกันได้ผ่านทางอินเทอร์เน็ต เป้าหมายสูงสุดคือการสร้าง "อินเทอร์เน็ตของทุกสิ่ง" นี่เป็นการตีความ IoT ในยุคแรกๆ รวมถึงจินตนาการของเทคโนโลยีแห่งอนาคต สามสิบปีต่อมา ด้วยการพัฒนาอย่างรวดเร็วของเศรษฐกิจและเทคโนโลยี จินตนาการกำลังกลายเป็นความจริง ตั้งแต่อุปกรณ์อัจฉริยะ บ้านอัจฉริยะ เมืองอัจฉริยะ อินเทอร์เน็ตของยานพาหนะและอุปกรณ์สวมใส่ ไปจนถึง “metaverse” ที่สนับสนุนโดยเทคโนโลยี IoT แนวคิดใหม่ ๆ ก็เกิดขึ้นอย่างต่อเนื่อง ในบทนี้ เราจะเริ่มต้นด้วยคำอธิบายเกี่ยวกับสถาปัตยกรรมของ Internet of Things จากนั้นจะแนะนำแอปพลิเคชัน IoT ที่พบบ่อยที่สุด ซึ่งก็คือบ้านอัจฉริยะ เพื่อช่วยให้คุณเข้าใจ IoT อย่างชัดเจน
1.1 สถาปัตยกรรมของ IoT
Internet of Things เกี่ยวข้องกับเทคโนโลยีที่หลากหลายซึ่งมีความต้องการใช้งานและรูปแบบที่แตกต่างกันในอุตสาหกรรมที่แตกต่างกัน เพื่อแยกแยะโครงสร้าง เทคโนโลยีหลัก และลักษณะการใช้งานของ IoT จำเป็นต้องสร้างสถาปัตยกรรมแบบครบวงจรและระบบทางเทคนิคมาตรฐาน ในหนังสือเล่มนี้ สถาปัตยกรรมของ IoT แบ่งออกเป็นสี่ชั้นง่ายๆ ได้แก่ ชั้นการรับรู้และการควบคุม เลเยอร์เครือข่าย เลเยอร์แพลตฟอร์ม และเลเยอร์แอปพลิเคชัน
เลเยอร์การรับรู้และการควบคุม เนื่องจากองค์ประกอบพื้นฐานที่สุดของสถาปัตยกรรม IoT เลเยอร์การรับรู้และการควบคุมจึงเป็นแกนหลักในการตระหนักถึงการตรวจจับ IoT ที่ครอบคลุม หน้าที่หลักคือรวบรวม ระบุ และควบคุมข้อมูล ประกอบด้วยอุปกรณ์หลากหลายที่มีความสามารถในการรับรู้
3

การระบุ การควบคุม และการดำเนินการ และมีหน้าที่รับผิดชอบในการเรียกค้นและวิเคราะห์ข้อมูล เช่น คุณสมบัติของวัสดุ แนวโน้มพฤติกรรม และสถานะของอุปกรณ์ ด้วยวิธีนี้ IoT จะรับรู้ถึงโลกทางกายภาพที่แท้จริง นอกจากนี้เลเยอร์ยังสามารถควบคุมสถานะของอุปกรณ์ได้อีกด้วย
อุปกรณ์ที่พบบ่อยที่สุดในเลเยอร์นี้คือเซ็นเซอร์ต่างๆ ซึ่งมีบทบาทสำคัญในการรวบรวมและระบุข้อมูล เซ็นเซอร์เป็นเหมือนอวัยวะรับความรู้สึกของมนุษย์ เช่น เซ็นเซอร์ไวแสงเท่ากับการมองเห็น เซ็นเซอร์เสียงสำหรับการได้ยิน เซ็นเซอร์ก๊าซสำหรับการดมกลิ่น และเซ็นเซอร์ที่ไวต่อแรงกดและอุณหภูมิสำหรับการสัมผัส ด้วย "อวัยวะรับความรู้สึก" เหล่านี้ วัตถุจึง "มีชีวิต" และสามารถรับรู้ รับรู้ และควบคุมโลกทางกายภาพได้อย่างชาญฉลาด
Network Layer หน้าที่หลักของ Network Layer คือการส่งข้อมูล รวมถึงข้อมูลที่ได้รับจาก Perception & Control Layer ไปยังเป้าหมายที่ระบุ เช่นเดียวกับคำสั่งที่ออกจาก Application Layer กลับไปยัง Perception & Control Layer ทำหน้าที่เป็นสะพานสื่อสารที่สำคัญที่เชื่อมต่อชั้นต่างๆ ของระบบ IoT ในการตั้งค่าโมเดลพื้นฐานของ Internet of Things นั้นเกี่ยวข้องกับสองขั้นตอนในการรวมออบเจ็กต์เข้ากับเครือข่าย: การเข้าถึงอินเทอร์เน็ตและการส่งข้อมูลผ่านอินเทอร์เน็ต
การเข้าถึงอินเทอร์เน็ต อินเทอร์เน็ตทำให้เกิดการเชื่อมต่อระหว่างบุคคลและบุคคล แต่ไม่สามารถรวมสิ่งต่างๆ ไว้ในครอบครัวใหญ่ได้ ก่อนการถือกำเนิดของ IoT สิ่งต่างๆ ส่วนใหญ่ไม่สามารถ "ใช้งานเครือข่ายได้" ด้วยการพัฒนาเทคโนโลยีอย่างต่อเนื่อง IoT จึงสามารถเชื่อมต่อสิ่งต่าง ๆ กับอินเทอร์เน็ตได้ จึงทำให้เกิดการเชื่อมโยงระหว่าง "ผู้คนกับสิ่งของ" และ "สิ่งของและสิ่งของ" มีสองวิธีทั่วไปในการใช้งานการเชื่อมต่ออินเทอร์เน็ต: การเข้าถึงเครือข่ายแบบใช้สาย และการเข้าถึงเครือข่ายไร้สาย
วิธีการเข้าถึงเครือข่ายแบบมีสายประกอบด้วยอีเธอร์เน็ต การสื่อสารแบบอนุกรม (เช่น RS-232, RS-485) และ USB ในขณะที่การเข้าถึงเครือข่ายไร้สายขึ้นอยู่กับการสื่อสารไร้สาย ซึ่งสามารถแบ่งเพิ่มเติมเป็นการสื่อสารไร้สายระยะสั้นและการสื่อสารไร้สายระยะไกล
การสื่อสารไร้สายระยะสั้นประกอบด้วย ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) และ Radio Frequency Identification (RFID) การสื่อสารไร้สายระยะไกลประกอบด้วย Enhanced Machine Type Communication (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G เป็นต้น
การส่งผ่านอินเทอร์เน็ต วิธีการต่างๆ ในการเข้าถึงอินเทอร์เน็ตนำไปสู่การส่งผ่านทางกายภาพของข้อมูลที่สอดคล้องกัน สิ่งต่อไปคือการตัดสินใจว่าจะใช้โปรโตคอลการสื่อสารใดในการส่งข้อมูล เมื่อเปรียบเทียบกับเทอร์มินัลอินเทอร์เน็ต เทอร์มินัล IoT ส่วนใหญ่ในปัจจุบันมีน้อยกว่า
4 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

ทรัพยากรที่มีอยู่ เช่น ประสิทธิภาพการประมวลผล ความจุในการจัดเก็บข้อมูล อัตราเครือข่าย ฯลฯ ดังนั้นจึงจำเป็นต้องเลือกโปรโตคอลการสื่อสารที่ใช้ทรัพยากรน้อยลงในแอปพลิเคชัน IoT มีโปรโตคอลการสื่อสารสองแบบที่ใช้กันอย่างแพร่หลายในปัจจุบัน: Message Queuing Telemetry Transport (MQTT) และ Constrained Application Protocol (CoAP)
Platform Layer เลเยอร์แพลตฟอร์มส่วนใหญ่หมายถึงแพลตฟอร์มคลาวด์ IoT เมื่อเทอร์มินัล IoT ทั้งหมดเชื่อมต่อกันเป็นเครือข่าย ข้อมูลของเทอร์มินัลจะต้องถูกรวบรวมไว้บนแพลตฟอร์มคลาวด์ IoT เพื่อที่จะคำนวณและจัดเก็บ เลเยอร์แพลตฟอร์มสนับสนุนแอปพลิเคชัน IoT เป็นหลักในการอำนวยความสะดวกในการเข้าถึงและการจัดการอุปกรณ์ขนาดใหญ่ โดยจะเชื่อมต่อเทอร์มินัล IoT กับแพลตฟอร์มคลาวด์ รวบรวมข้อมูลเทอร์มินัล และออกคำสั่งไปยังเทอร์มินัล เพื่อใช้การควบคุมระยะไกล ในฐานะบริการระดับกลางในการกำหนดอุปกรณ์ให้กับแอปพลิเคชันในอุตสาหกรรม เลเยอร์แพลตฟอร์มมีบทบาทในการเชื่อมต่อในสถาปัตยกรรม IoT ทั้งหมด โดยมีตรรกะทางธุรกิจเชิงนามธรรมและโมเดลข้อมูลหลักที่ได้มาตรฐาน ซึ่งไม่เพียงแต่สามารถเข้าถึงอุปกรณ์ได้อย่างรวดเร็วเท่านั้น แต่ยังให้ความสามารถแบบโมดูลาร์ที่ทรงพลังอีกด้วย เพื่อตอบสนองความต้องการที่หลากหลายในสถานการณ์การใช้งานในอุตสาหกรรม เลเยอร์แพลตฟอร์มส่วนใหญ่ประกอบด้วยโมดูลการทำงาน เช่น การเข้าถึงอุปกรณ์ การจัดการอุปกรณ์ การจัดการความปลอดภัย การสื่อสารด้วยข้อความ การตรวจสอบการทำงานและการบำรุงรักษา และแอปพลิเคชันข้อมูล
· การเข้าถึงอุปกรณ์ ทำให้เกิดการเชื่อมต่อและการสื่อสารระหว่างเทอร์มินัลและแพลตฟอร์มคลาวด์ IoT
· การจัดการอุปกรณ์ รวมถึงฟังก์ชันต่างๆ เช่น การสร้างอุปกรณ์ การบำรุงรักษาอุปกรณ์ การแปลงข้อมูล การซิงโครไนซ์ข้อมูล และการกระจายอุปกรณ์
· การจัดการความปลอดภัย ซึ่งรับประกันความปลอดภัยของการส่งข้อมูล IoT จากมุมมองของการตรวจสอบความปลอดภัยและความปลอดภัยในการสื่อสาร
· การสื่อสารด้วยข้อความ รวมถึงทิศทางการส่งข้อมูล 3 ทิศทาง นั่นคือ เทอร์มินัลส่งข้อมูลไปยังแพลตฟอร์มคลาวด์ IoT แพลตฟอร์มคลาวด์ IoT ส่งข้อมูลไปยังฝั่งเซิร์ฟเวอร์หรือแพลตฟอร์มคลาวด์ IoT อื่น ๆ และฝั่งเซิร์ฟเวอร์ควบคุมอุปกรณ์ IoT จากระยะไกล
· การตรวจสอบ O&M ที่เกี่ยวข้องกับการตรวจสอบและวินิจฉัย การอัพเกรดเฟิร์มแวร์ การดีบักออนไลน์ บริการบันทึก ฯลฯ
· การประยุกต์ใช้ข้อมูลที่เกี่ยวข้องกับการจัดเก็บ การวิเคราะห์ และการประยุกต์ใช้ข้อมูล
ชั้นแอปพลิเคชัน ชั้นแอปพลิเคชันใช้ข้อมูลจากเลเยอร์แพลตฟอร์มเพื่อจัดการแอปพลิเคชัน กรองและประมวลผลด้วยเครื่องมือ เช่น ฐานข้อมูลและซอฟต์แวร์วิเคราะห์ ข้อมูลผลลัพธ์นี้สามารถนำไปใช้กับแอปพลิเคชัน IoT ในโลกแห่งความเป็นจริง เช่น การดูแลสุขภาพอัจฉริยะ เกษตรกรรมอัจฉริยะ บ้านอัจฉริยะ และเมืองอัจฉริยะ
แน่นอนว่าสถาปัตยกรรมของ IoT สามารถแบ่งย่อยออกเป็นเลเยอร์ต่างๆ ได้มากขึ้น แต่ไม่ว่าสถาปัตยกรรมของ IoT จะประกอบด้วยเลเยอร์จำนวนเท่าใด หลักการพื้นฐานก็ยังคงเหมือนเดิม การเรียนรู้
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับ IoT 5

เกี่ยวกับสถาปัตยกรรมของ IoT ช่วยให้เราเข้าใจเทคโนโลยี IoT ลึกซึ้งยิ่งขึ้น และสร้างโครงการ IoT ที่ใช้งานได้เต็มรูปแบบ
1.2 แอปพลิเคชัน IoT ในบ้านอัจฉริยะ
IoT แทรกซึมเข้าสู่ทุกสาขาอาชีพ และแอปพลิเคชัน IoT ที่เกี่ยวข้องมากที่สุดสำหรับเราก็คือบ้านอัจฉริยะ ปัจจุบันเครื่องใช้ไฟฟ้าแบบดั้งเดิมจำนวนมากติดตั้งอุปกรณ์ IoT ตั้งแต่หนึ่งเครื่องขึ้นไป และบ้านที่สร้างขึ้นใหม่จำนวนมากได้รับการออกแบบด้วยเทคโนโลยี IoT ตั้งแต่เริ่มต้น รูปที่ 1.1 แสดงอุปกรณ์สมาร์ทโฮมทั่วไปบางรุ่น
รูปที่ 1.1. อุปกรณ์สมาร์ทโฮมทั่วไป การพัฒนาสมาร์ทโฮมสามารถแบ่งออกได้เป็นผลิตภัณฑ์อัจฉริยะtage การเชื่อมต่อโครงข่ายฉากtage และ s อัจฉริยะtage ดังแสดงในรูปที่ 1.2
รูปที่ 1.2. การพัฒนาสtage of smart home 6 ESP32-C3 Wireless Adventure: คู่มือที่ครอบคลุมเกี่ยวกับ IoT

ส. แรกtage เป็นเรื่องเกี่ยวกับผลิตภัณฑ์อัจฉริยะ ในบ้านอัจฉริยะแตกต่างจากบ้านทั่วไป อุปกรณ์ IoT รับสัญญาณด้วยเซ็นเซอร์ และเชื่อมต่อเครือข่ายผ่านเทคโนโลยีการสื่อสารไร้สาย เช่น Wi-Fi, Bluetooth LE และ ZigBee ผู้ใช้สามารถควบคุมผลิตภัณฑ์อัจฉริยะได้หลากหลายวิธี เช่น แอพสมาร์ทโฟน ระบบสั่งงานด้วยเสียง การควบคุมลำโพงอัจฉริยะ เป็นต้น วินาทีที่tage มุ่งเน้นไปที่การเชื่อมต่อระหว่างฉาก ในเรื่องนี้tagจ. นักพัฒนาไม่ได้พิจารณาที่จะควบคุมผลิตภัณฑ์อัจฉริยะตัวเดียวอีกต่อไป แต่เชื่อมโยงผลิตภัณฑ์อัจฉริยะตั้งแต่สองตัวขึ้นไปเข้าด้วยกัน ดำเนินการอัตโนมัติในระดับหนึ่ง และสุดท้ายก็สร้างโหมดฉากแบบกำหนดเอง สำหรับเช่นampเมื่อผู้ใช้กดปุ่มโหมดฉากใดๆ ไฟ ผ้าม่าน และเครื่องปรับอากาศจะถูกปรับให้เข้ากับค่าที่ตั้งไว้โดยอัตโนมัติ แน่นอนว่า มีข้อกำหนดเบื้องต้นที่ต้องตั้งค่าตรรกะการเชื่อมโยงให้พร้อม รวมถึงเงื่อนไขทริกเกอร์และการดำเนินการดำเนินการ ลองจินตนาการว่าโหมดการทำความร้อนของเครื่องปรับอากาศจะทำงานเมื่ออุณหภูมิภายในอาคารลดลงต่ำกว่า 10°C; โดยเมื่อเวลา 7 โมงเช้า มีการเล่นเพลงเพื่อปลุกผู้ใช้ เปิดม่านอัจฉริยะ และหม้อหุงข้าวหรือเครื่องปิ้งขนมปังเริ่มทำงานผ่านปลั๊กไฟอัจฉริยะ เมื่อผู้ใช้ลุกขึ้นซักผ้าเสร็จแล้วก็เสิร์ฟอาหารเช้าให้เรียบร้อยจะได้ไม่ล่าช้าในการไปทำงาน ชีวิตเราสะดวกขนาดไหน! ส.ที่สามtage ไปที่หน่วยสืบราชการลับ stagจ. เมื่อมีการเข้าถึงอุปกรณ์สมาร์ทโฮมมากขึ้น ประเภทของข้อมูลที่สร้างขึ้นก็เช่นกัน ด้วยความช่วยเหลือของคลาวด์คอมพิวติ้ง บิ๊กดาต้า และปัญญาประดิษฐ์ เปรียบเสมือน "สมองที่ฉลาดกว่า" ที่ถูกปลูกฝังไว้ในบ้านอัจฉริยะ ซึ่งไม่ต้องการคำสั่งจากผู้ใช้บ่อยๆ อีกต่อไป พวกเขารวบรวมข้อมูลจากการโต้ตอบครั้งก่อนและเรียนรู้รูปแบบพฤติกรรมและความชอบของผู้ใช้ เพื่อทำให้กิจกรรมเป็นอัตโนมัติ รวมถึงการให้คำแนะนำสำหรับการตัดสินใจ ปัจจุบันบ้านอัจฉริยะส่วนใหญ่อยู่ที่จุดเชื่อมต่อโครงข่ายtagจ. เมื่ออัตราการเข้าถึงและความชาญฉลาดของผลิตภัณฑ์อัจฉริยะเพิ่มขึ้น อุปสรรคระหว่างโปรโตคอลการสื่อสารก็จะถูกขจัดออกไป ในอนาคต บ้านอัจฉริยะจะกลายเป็น “อัจฉริยะ” อย่างแท้จริง เช่นเดียวกับระบบ AI จาร์วิสใน Iron Man ซึ่งไม่เพียงช่วยให้ผู้ใช้ควบคุมอุปกรณ์ต่างๆ จัดการกิจวัตรประจำวัน แต่ยังมีพลังการประมวลผลและความสามารถในการคิดที่ยอดเยี่ยมอีกด้วย ในยุคอัจฉริยะtagจ. มนุษย์จะได้รับบริการที่ดีขึ้นทั้งในด้านปริมาณและคุณภาพ
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับ IoT 7

8 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

บทที่บทนำและการปฏิบัติของ 2 โครงการ IoT
ในบทที่ 1 เราได้แนะนำสถาปัตยกรรมของ IoT และบทบาทและความสัมพันธ์ของเลเยอร์การรับรู้และการควบคุม เลเยอร์เครือข่าย เลเยอร์แพลตฟอร์ม และเลเยอร์แอปพลิเคชัน รวมถึงการพัฒนาบ้านอัจฉริยะ อย่างไรก็ตาม เช่นเดียวกับเมื่อเราเรียนรู้การวาดภาพ การรู้ความรู้ทางทฤษฎีนั้นยังไม่เพียงพอ เราต้อง "ทำให้มือของเราสกปรก" เพื่อนำโครงการ IoT ไปปฏิบัติจริงเพื่อที่จะเชี่ยวชาญเทคโนโลยีอย่างแท้จริง นอกจากนี้เมื่อโครงการย้ายไปสู่การผลิตแบบมวลชนtagจ จำเป็นต้องพิจารณาปัจจัยเพิ่มเติม เช่น การเชื่อมต่อเครือข่าย การกำหนดค่า การโต้ตอบแพลตฟอร์มคลาวด์ IoT การจัดการและอัปเดตเฟิร์มแวร์ การจัดการการผลิตจำนวนมาก และการกำหนดค่าความปลอดภัย แล้วเราต้องใส่ใจอะไรบ้างเมื่อพัฒนาโครงการ IoT ที่สมบูรณ์? ในบทที่ 1 เราได้กล่าวถึงว่าบ้านอัจฉริยะเป็นหนึ่งในสถานการณ์การใช้งาน IoT ที่พบบ่อยที่สุด และหลอดไฟอัจฉริยะเป็นหนึ่งในอุปกรณ์พื้นฐานและใช้งานได้จริงที่สุด ซึ่งสามารถใช้ในบ้าน โรงแรม โรงยิม โรงพยาบาล ฯลฯ ดังนั้นใน หนังสือเล่มนี้ เราจะใช้การก่อสร้างโครงการไฟอัจฉริยะเป็นจุดเริ่มต้น อธิบายส่วนประกอบและคุณลักษณะของโครงการ และให้คำแนะนำในการพัฒนาโครงการ เราหวังว่าคุณจะสามารถอนุมานจากกรณีนี้เพื่อสร้างแอปพลิเคชัน IoT ได้มากขึ้น
2.1 ข้อมูลเบื้องต้นเกี่ยวกับโครงการ IoT ทั่วไป
ในแง่ของการพัฒนา โมดูลการทำงานพื้นฐานของโครงการ IoT สามารถแบ่งได้เป็นการพัฒนาซอฟต์แวร์และฮาร์ดแวร์ของอุปกรณ์ IoT การพัฒนาแอปพลิเคชันไคลเอนต์ และการพัฒนาแพลตฟอร์มคลาวด์ IoT สิ่งสำคัญคือต้องชี้แจงโมดูลการทำงานพื้นฐาน ซึ่งจะอธิบายเพิ่มเติมในส่วนนี้
2.1.1 โมดูลพื้นฐานสำหรับอุปกรณ์ IoT ทั่วไป
การพัฒนาซอฟต์แวร์และฮาร์ดแวร์ของอุปกรณ์ IoT ประกอบด้วยโมดูลพื้นฐานดังต่อไปนี้: การรวบรวมข้อมูล
ในฐานะชั้นล่างสุดของสถาปัตยกรรม IoT อุปกรณ์ IoT ของเลเยอร์การรับรู้และการควบคุมจะเชื่อมต่อเซ็นเซอร์และอุปกรณ์ผ่านชิปและอุปกรณ์ต่อพ่วงเพื่อให้มีการรวบรวมข้อมูลและควบคุมการทำงาน
9

การผูกบัญชีและการกำหนดค่าเริ่มต้น สำหรับอุปกรณ์ IoT ส่วนใหญ่ การผูกบัญชีและการกำหนดค่าเริ่มต้นจะเสร็จสมบูรณ์ในกระบวนการปฏิบัติงานเดียว เช่นample เชื่อมต่ออุปกรณ์กับผู้ใช้โดยการกำหนดค่าเครือข่าย Wi-Fi
การโต้ตอบกับแพลตฟอร์มคลาวด์ IoT ในการตรวจสอบและควบคุมอุปกรณ์ IoT จำเป็นต้องเชื่อมต่ออุปกรณ์เหล่านั้นกับแพลตฟอร์มคลาวด์ IoT เพื่อที่จะให้คำสั่งและรายงานสถานะผ่านการโต้ตอบระหว่างกัน
การควบคุมอุปกรณ์ เมื่อเชื่อมต่อกับแพลตฟอร์มคลาวด์ IoT อุปกรณ์สามารถสื่อสารกับคลาวด์และลงทะเบียน เชื่อมโยง หรือควบคุมได้ ผู้ใช้สามารถสอบถามสถานะผลิตภัณฑ์และดำเนินการอื่นๆ บนแอปสมาร์ทโฟนผ่านแพลตฟอร์มคลาวด์ IoT หรือโปรโตคอลการสื่อสารในพื้นที่
อุปกรณ์ IoT ที่อัปเกรดเฟิร์มแวร์ยังสามารถอัปเกรดเฟิร์มแวร์ได้ตามความต้องการของผู้ผลิต เมื่อได้รับคำสั่งที่ส่งมาจากคลาวด์ การอัพเกรดเฟิร์มแวร์และการจัดการเวอร์ชันจะเกิดขึ้นจริง ด้วยคุณสมบัติการอัปเกรดเฟิร์มแวร์นี้ คุณสามารถปรับปรุงการทำงานของอุปกรณ์ IoT แก้ไขข้อบกพร่อง และปรับปรุงประสบการณ์ผู้ใช้ได้อย่างต่อเนื่อง
2.1.2 โมดูลพื้นฐานของแอปพลิเคชันไคลเอนต์
แอปพลิเคชันไคลเอ็นต์ (เช่น แอปสมาร์ทโฟน) ส่วนใหญ่ประกอบด้วยโมดูลพื้นฐานต่อไปนี้:
ระบบบัญชีและการอนุญาต รองรับการอนุญาตบัญชีและอุปกรณ์
การควบคุมอุปกรณ์ แอพสมาร์ทโฟนมักจะมีฟังก์ชั่นการควบคุมมาให้ ผู้ใช้สามารถเชื่อมต่อกับอุปกรณ์ IoT ได้อย่างง่ายดาย และจัดการได้ทุกที่ทุกเวลาผ่านแอปสมาร์ทโฟน ในบ้านอัจฉริยะในโลกแห่งความเป็นจริง อุปกรณ์ส่วนใหญ่จะถูกควบคุมผ่านแอพสมาร์ทโฟน ซึ่งไม่เพียงแต่ช่วยให้สามารถจัดการอุปกรณ์ได้อย่างชาญฉลาดเท่านั้น แต่ยังช่วยประหยัดต้นทุนด้านกำลังคนอีกด้วย ดังนั้นการควบคุมอุปกรณ์จึงเป็นสิ่งจำเป็นสำหรับแอปพลิเคชันไคลเอนต์ เช่น การควบคุมคุณสมบัติของฟังก์ชันอุปกรณ์ การควบคุมฉาก การกำหนดเวลา การควบคุมระยะไกล การเชื่อมโยงอุปกรณ์ ฯลฯ ผู้ใช้สมาร์ทโฮมยังสามารถปรับแต่งฉากได้ตามความต้องการส่วนบุคคล การควบคุมแสงสว่าง เครื่องใช้ในบ้าน ทางเข้า ฯลฯ เพื่อให้ชีวิตในบ้านสะดวกสบายยิ่งขึ้น พวกเขาสามารถตั้งเวลาเครื่องปรับอากาศ ปิดจากระยะไกล ตั้งไฟโถงทางเดินโดยอัตโนมัติเมื่อประตูถูกปลดล็อค หรือสลับไปที่โหมด "โรงภาพยนตร์" ด้วยปุ่มเดียว
แอปพลิเคชันไคลเอ็นต์การแจ้งเตือนจะอัปเดตสถานะแบบเรียลไทม์ของอุปกรณ์ IoT และส่งการแจ้งเตือนเมื่ออุปกรณ์ทำงานผิดปกติ
10 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

การบริการลูกค้าหลังการขาย แอพสมาร์ทโฟนสามารถให้บริการหลังการขายสำหรับผลิตภัณฑ์ เพื่อแก้ไขปัญหาที่เกี่ยวข้องกับความล้มเหลวของอุปกรณ์ IoT และการดำเนินงานทางเทคนิคได้ทันท่วงที
ฟังก์ชั่นเด่น เพื่อตอบสนองความต้องการของผู้ใช้ที่แตกต่างกันอาจเพิ่มฟังก์ชั่นอื่นๆ เช่น Shake, NFC, GPS เป็นต้น GPS สามารถช่วยกำหนดความแม่นยำของการทำงานของฉากตามสถานที่และระยะทาง ในขณะที่ฟังก์ชั่น Shake ช่วยให้ผู้ใช้สามารถตั้งค่า คำสั่งที่จะดำเนินการกับอุปกรณ์หรือฉากเฉพาะโดยการเขย่า
2.1.3 ข้อมูลเบื้องต้นเกี่ยวกับแพลตฟอร์มคลาวด์ IoT ทั่วไป
แพลตฟอร์มคลาวด์ IoT เป็นแพลตฟอร์มแบบครบวงจรที่รวมฟังก์ชันต่างๆ เช่น การจัดการอุปกรณ์ การสื่อสารความปลอดภัยของข้อมูล และการจัดการการแจ้งเตือน ตามกลุ่มเป้าหมายและการเข้าถึง แพลตฟอร์มคลาวด์ IoT สามารถแบ่งออกเป็นแพลตฟอร์มคลาวด์ IoT สาธารณะ (ต่อไปนี้จะเรียกว่า “คลาวด์สาธารณะ”) และแพลตฟอร์มคลาวด์ IoT ส่วนตัว (ต่อไปนี้จะเรียกว่า “คลาวด์ส่วนตัว”)
คลาวด์สาธารณะมักจะหมายถึงแพลตฟอร์มคลาวด์ IoT ที่ใช้ร่วมกันสำหรับองค์กรหรือบุคคล ดำเนินการและดูแลรักษาโดยผู้ให้บริการแพลตฟอร์ม และแบ่งปันผ่านอินเทอร์เน็ต อาจเป็นแบบฟรีหรือต้นทุนต่ำ และให้บริการทั่วทั้งเครือข่ายสาธารณะแบบเปิด เช่น Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT เป็นต้น ในฐานะแพลตฟอร์มที่รองรับ คลาวด์สาธารณะสามารถผสานรวมผู้ให้บริการต้นทางและ ผู้ใช้ขั้นปลายน้ำเพื่อสร้างห่วงโซ่คุณค่าและระบบนิเวศใหม่
คลาวด์ส่วนตัวสร้างขึ้นสำหรับการใช้งานระดับองค์กรเท่านั้น จึงรับประกันการควบคุมข้อมูล ความปลอดภัย และคุณภาพการบริการได้ดีที่สุด บริการและโครงสร้างพื้นฐานได้รับการดูแลแยกกันโดยองค์กรต่างๆ และฮาร์ดแวร์และซอฟต์แวร์ที่รองรับก็มีไว้สำหรับผู้ใช้เฉพาะรายด้วย องค์กรต่างๆ สามารถปรับแต่งบริการคลาวด์ให้ตรงกับความต้องการของธุรกิจของตนได้ ในปัจจุบัน ผู้ผลิตบ้านอัจฉริยะบางรายมีแพลตฟอร์มคลาวด์ IoT ส่วนตัว และพัฒนาแอปพลิเคชันบ้านอัจฉริยะตามแพลตฟอร์มเหล่านั้นแล้ว
คลาวด์สาธารณะและคลาวด์ส่วนตัวมีข้อดีเป็นของตัวเองtages ซึ่งจะอธิบายในภายหลัง
เพื่อให้บรรลุการเชื่อมต่อการสื่อสาร จำเป็นต้องดำเนินการพัฒนาแบบฝังด้านอุปกรณ์เป็นอย่างน้อย ควบคู่ไปกับเซิร์ฟเวอร์ธุรกิจ แพลตฟอร์มคลาวด์ IoT และแอปสมาร์ทโฟน เมื่อเผชิญกับโครงการขนาดใหญ่เช่นนี้ ระบบคลาวด์สาธารณะมักจะจัดเตรียมชุดพัฒนาซอฟต์แวร์สำหรับแอปฝั่งอุปกรณ์และสมาร์ทโฟนเพื่อเร่งกระบวนการให้เร็วขึ้น ทั้งคลาวด์สาธารณะและส่วนตัวให้บริการต่างๆ รวมถึงการเข้าถึงอุปกรณ์ การจัดการอุปกรณ์ เงาของอุปกรณ์ ตลอดจนการดำเนินการและการบำรุงรักษา
การเข้าถึงอุปกรณ์แพลตฟอร์มคลาวด์ IoT จำเป็นต้องจัดให้มีอินเทอร์เฟซสำหรับการเข้าถึงอุปกรณ์โดยใช้โปรโตคอลไม่เพียงเท่านั้น
บทที่ 2 บทนำและการปฏิบัติของโครงการ IoT 11

เช่น MQTT, CoAP, HTTPS และ Webซ็อกเก็ต แต่ยังทำหน้าที่ตรวจสอบความปลอดภัยของอุปกรณ์เพื่อบล็อกอุปกรณ์ปลอมแปลงและผิดกฎหมาย ช่วยลดความเสี่ยงในการถูกบุกรุกได้อย่างมีประสิทธิภาพ การตรวจสอบสิทธิ์ดังกล่าวมักจะรองรับกลไกที่แตกต่างกัน ดังนั้นเมื่อมีอุปกรณ์ที่ผลิตจำนวนมาก จำเป็นต้องกำหนดใบรับรองอุปกรณ์ล่วงหน้าตามกลไกการตรวจสอบสิทธิ์ที่เลือกและเบิร์นลงในอุปกรณ์
การจัดการอุปกรณ์ ฟังก์ชันการจัดการอุปกรณ์ที่ให้บริการโดยแพลตฟอร์มคลาวด์ IoT ไม่เพียงแต่ช่วยให้ผู้ผลิตตรวจสอบสถานะการเปิดใช้งานและสถานะออนไลน์ของอุปกรณ์ของตนแบบเรียลไทม์ แต่ยังช่วยให้มีตัวเลือกต่างๆ เช่น การเพิ่ม/ถอดอุปกรณ์ การดึงข้อมูล การเพิ่ม/การลบกลุ่ม การอัพเกรดเฟิร์มแวร์ และการจัดการเวอร์ชัน
Device Shadow แพลตฟอร์มคลาวด์ IoT สามารถสร้างเวอร์ชันเสมือนถาวร (Device Shadow) สำหรับแต่ละอุปกรณ์ และสถานะของ Shadow อุปกรณ์สามารถซิงโครไนซ์และรับโดยแอปสมาร์ทโฟนหรืออุปกรณ์อื่น ๆ ผ่านทางโปรโตคอลการส่งผ่านอินเทอร์เน็ต Device Shadow จะจัดเก็บสถานะที่รายงานล่าสุดและสถานะที่คาดหวังของแต่ละอุปกรณ์ และแม้ว่าอุปกรณ์จะออฟไลน์ แต่ก็ยังสามารถรับสถานะได้โดยการเรียก API Device Shadow มี API ที่ทำงานตลอดเวลา ซึ่งช่วยให้สร้างแอปสมาร์ทโฟนที่โต้ตอบกับอุปกรณ์ได้ง่ายขึ้น
การทำงานและการบำรุงรักษา ฟังก์ชัน O&M ประกอบด้วยสามส่วน: · การสาธิตข้อมูลทางสถิติเกี่ยวกับอุปกรณ์ IoT และการแจ้งเตือน · การจัดการบันทึกช่วยให้สามารถดึงข้อมูลเกี่ยวกับพฤติกรรมของอุปกรณ์ โฟลว์ข้อความขึ้น/ลง และเนื้อหาข้อความ · การแก้ไขจุดบกพร่องของอุปกรณ์รองรับการส่งคำสั่ง การอัปเดตการกำหนดค่า และการตรวจสอบการโต้ตอบระหว่างแพลตฟอร์มคลาวด์ IoT และข้อความของอุปกรณ์
2.2 แนวปฏิบัติ: โครงการแสงอัจฉริยะ
หลังจากการแนะนำเชิงทฤษฎีในแต่ละบทแล้ว คุณจะพบส่วนฝึกปฏิบัติที่เกี่ยวข้องกับโครงการ Smart Light เพื่อช่วยให้คุณได้รับประสบการณ์จริง โปรเจ็กต์นี้ใช้ชิป ESP32-C3 ของ Espressif และ ESP RainMaker IoT Cloud Platform และครอบคลุมฮาร์ดแวร์โมดูลไร้สายในผลิตภัณฑ์ไฟอัจฉริยะ ซอฟต์แวร์แบบฝังสำหรับอุปกรณ์อัจฉริยะที่ใช้ ESP32C3 แอปสมาร์ทโฟน และการโต้ตอบของ ESP RainMaker
ซอร์สโค้ด เพื่อประสบการณ์การเรียนรู้และพัฒนาที่ดีขึ้น โปรเจ็กต์ในหนังสือเล่มนี้เป็นแบบโอเพ่นซอร์ส คุณสามารถดาวน์โหลดซอร์สโค้ดได้จากที่เก็บ GitHub ของเราที่ https://github com/espressif/book-esp32c3-iot-projects.com
12 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

2.2.1 โครงสร้างโครงการ
โครงการ Smart Light ประกอบด้วยสามส่วน: อุปกรณ์ไฟอัจฉริยะที่ใช้ ESP32-C3 รับผิดชอบในการโต้ตอบกับแพลตฟอร์มคลาวด์ IoT และควบคุมสวิตช์ ความสว่าง และอุณหภูมิสีของ LEDamp ลูกปัด ครั้งที่สอง แอปสมาร์ทโฟน (รวมถึงแอปแท็บเล็ตที่ทำงานบน Android และ iOS) รับผิดชอบในการกำหนดค่าเครือข่ายของผลิตภัณฑ์ไฟอัจฉริยะ รวมถึงการสืบค้นและควบคุมสถานะ
สาม แพลตฟอร์มคลาวด์ IoT ที่ใช้ ESP RainMaker เพื่อให้เข้าใจง่าย เราจะพิจารณาแพลตฟอร์มคลาวด์ IoT และเซิร์ฟเวอร์ธุรกิจโดยรวมในหนังสือเล่มนี้ รายละเอียดเกี่ยวกับ ESP RainMaker จะมีให้ในบทที่ 3
ความสอดคล้องระหว่างโครงสร้างโครงการ Smart Light และสถาปัตยกรรมของ IoT แสดงในรูปที่ 2.1
รูปที่ 2.1. โครงสร้างโครงการไฟอัจฉริยะ
2.2.2 หน้าที่ของโครงการ
แบ่งตามโครงสร้างหน้าที่ของแต่ละส่วนมีดังนี้ อุปกรณ์ไฟอัจฉริยะ
· การกำหนดค่าและการเชื่อมต่อเครือข่าย · การควบคุม LED PWM เช่น สวิตช์ ความสว่าง อุณหภูมิสี ฯลฯ · การทำงานอัตโนมัติหรือการควบคุมฉาก เช่น สวิตช์เวลา ·การเข้ารหัสและการบูตที่ปลอดภัยของ Flash · อัปเกรดเฟิร์มแวร์และการจัดการเวอร์ชัน
บทที่ 2 บทนำและการปฏิบัติของโครงการ IoT 13

แอพสมาร์ทโฟน · การกำหนดค่าเครือข่ายและการเชื่อมโยงอุปกรณ์ · การควบคุมผลิตภัณฑ์ไฟอัจฉริยะ เช่น สวิตช์ ความสว่าง อุณหภูมิสี ฯลฯ · การตั้งค่าอัตโนมัติหรือฉาก เช่น สวิตช์เวลา · การควบคุมภายใน/ระยะไกล · การลงทะเบียนผู้ใช้ การเข้าสู่ระบบ ฯลฯ
แพลตฟอร์มคลาวด์ ESP RainMaker IoT · ช่วยให้สามารถเข้าถึงอุปกรณ์ IoT · จัดให้มี API การทำงานของอุปกรณ์ที่เข้าถึงได้สำหรับแอปสมาร์ทโฟน · อัปเกรดเฟิร์มแวร์และการจัดการเวอร์ชัน
2.2.3 การเตรียมฮาร์ดแวร์
หากสนใจที่จะนำโครงการไปปฏิบัติจริง คุณจะต้องมีฮาร์ดแวร์ต่อไปนี้ด้วย: ไฟอัจฉริยะ สมาร์ทโฟน เราเตอร์ Wi-Fi และคอมพิวเตอร์ที่ตรงตามข้อกำหนดการติดตั้งของสภาพแวดล้อมการพัฒนา ไฟอัจฉริยะ
สมาร์ทไลท์คือหลอดไฟรูปแบบใหม่ซึ่งมีรูปทรงเหมือนกับหลอดไส้ทั่วไป ไฟอัจฉริยะประกอบด้วยแหล่งจ่ายไฟควบคุมแบบสเต็ปดาวน์แบบคาปาซิเตอร์ โมดูลไร้สาย (พร้อม ESP32-C3 ในตัว) ตัวควบคุม LED และเมทริกซ์ LED RGB เมื่อต่อเข้ากับแหล่งจ่ายไฟ แรงดันไฟ 15 V DCtage เอาต์พุตหลังจากการสเต็ปดาวน์ตัวเก็บประจุ การแก้ไขไดโอด และการควบคุมจะให้พลังงานแก่ตัวควบคุม LED และเมทริกซ์ LED ตัวควบคุม LED สามารถส่งระดับสูงและต่ำโดยอัตโนมัติในช่วงเวลาหนึ่ง โดยสลับเมทริกซ์ LED RGB ระหว่างปิด (เปิดไฟ) และเปิด (ปิดไฟ) เพื่อให้สามารถปล่อยสีฟ้า เหลือง เขียว ม่วง น้ำเงิน แดง และ แสงสีขาว โมดูลไร้สายมีหน้าที่เชื่อมต่อกับเราเตอร์ Wi-Fi รับและรายงานสถานะของไฟอัจฉริยะ และส่งคำสั่งเพื่อควบคุม LED
รูปที่ 2.2. ไฟอัจฉริยะจำลอง
ในช่วงต้นของการพัฒนาtage คุณสามารถจำลองไฟอัจฉริยะโดยใช้บอร์ด ESP32-C3DevKitM-1 ที่เชื่อมต่อกับ RGB LED lamp ลูกปัด (ดูรูป 2.2) แต่คุณควร
14 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

โปรดทราบว่านี่ไม่ใช่วิธีเดียวในการประกอบไฟอัจฉริยะ การออกแบบฮาร์ดแวร์ของโครงการในหนังสือเล่มนี้มีเพียงโมดูลไร้สาย (ที่มี ESP32-C3 ในตัว) แต่ไม่ใช่การออกแบบฮาร์ดแวร์ไฟอัจฉริยะที่สมบูรณ์ นอกจากนี้ Espressif ยังผลิตบอร์ดพัฒนาเสียงที่ใช้ ESP32-C3 ESP32C3-Lyra สำหรับควบคุมไฟด้วยเสียง บอร์ดมีอินเทอร์เฟซสำหรับไมโครโฟนและลำโพง และสามารถควบคุมแถบ LED ได้ สามารถใช้ในการพัฒนาเครื่องกระจายเสียงและแถบแสงจังหวะที่มีต้นทุนต่ำเป็นพิเศษ รูปที่ 2.3 แสดงบอร์ด ESP32-C3Lyra เชื่อมต่อด้วยแถบไฟ LED 40 ดวง
รูปที่ 2.3. ESP32-C3-Lyra เชื่อมต่อกับแถบไฟ LED 40 ดวง
สมาร์ทโฟน (Android/iOS) โครงการ Smart Light เกี่ยวข้องกับการพัฒนาแอปสมาร์ทโฟนสำหรับการตั้งค่าและควบคุมผลิตภัณฑ์ไฟอัจฉริยะ
เราเตอร์ Wi-Fi เราเตอร์ Wi-Fi แปลงสัญญาณเครือข่ายแบบใช้สายและสัญญาณเครือข่ายมือถือเป็นสัญญาณเครือข่ายไร้สาย สำหรับคอมพิวเตอร์ สมาร์ทโฟน แท็บเล็ต และอุปกรณ์ไร้สายอื่นๆ เพื่อเชื่อมต่อกับเครือข่าย สำหรับเช่นampอย่างไรก็ตาม บรอดแบนด์ในบ้านจำเป็นต้องเชื่อมต่อกับเราเตอร์ Wi-Fi เท่านั้น เพื่อให้ได้เครือข่ายไร้สายของอุปกรณ์ Wi-Fi มาตรฐานโปรโตคอลกระแสหลักที่เราเตอร์ Wi-Fi รองรับคือ IEEE 802.11n โดยมี TxRate เฉลี่ยอยู่ที่ 300 Mbps หรือสูงสุด 600 Mbps สามารถใช้งานร่วมกับ IEEE 802.11b และ IEEE 802.11g ย้อนหลังได้ ชิป ESP32-C3 จาก Espressif รองรับ IEEE 802.11b/g/n คุณจึงสามารถเลือกเราเตอร์ Wi-Fi ในย่านความถี่เดียว (2.4 GHz) หรือดูอัลแบนด์ (2.4 GHz และ 5 GHz) ได้
สภาพแวดล้อมการพัฒนาคอมพิวเตอร์ (Linux/macOS/Windows) จะมีการแนะนำในบทที่ 4 บทที่ 2 บทนำและการปฏิบัติของโครงการ IoT 15

2.2.4 กระบวนการพัฒนา
รูปที่ 2.4. ขั้นตอนการพัฒนาโครงการ Smart Light
การออกแบบฮาร์ดแวร์ การออกแบบฮาร์ดแวร์ของอุปกรณ์ IoT มีความสำคัญต่อโครงการ IoT โครงการไฟอัจฉริยะที่สมบูรณ์มีจุดมุ่งหมายเพื่อผลิตอัลamp ทำงานภายใต้แหล่งจ่ายไฟหลัก ผู้ผลิตหลายรายผลิตลampมีรูปแบบและประเภทไดรเวอร์ที่แตกต่างกัน แต่โมดูลไร้สายมักมีฟังก์ชันเดียวกัน เพื่อให้กระบวนการพัฒนาของโครงการ Smart Ligh ง่ายขึ้น หนังสือเล่มนี้ครอบคลุมเฉพาะการออกแบบฮาร์ดแวร์และการพัฒนาซอฟต์แวร์ของโมดูลไร้สายเท่านั้น
การกำหนดค่าแพลตฟอร์มคลาวด์ IoT หากต้องการใช้แพลตฟอร์มคลาวด์ IoT คุณต้องกำหนดค่าโครงการบนแบ็คเอนด์ เช่น การสร้างผลิตภัณฑ์ การสร้างอุปกรณ์ การตั้งค่าคุณสมบัติของอุปกรณ์ เป็นต้น
การพัฒนาซอฟต์แวร์แบบฝังตัวสำหรับอุปกรณ์ IoT ใช้ฟังก์ชันที่คาดหวังด้วย ESP-IDF, SDK ฝั่งอุปกรณ์ของ Espressif รวมถึงการเชื่อมต่อกับแพลตฟอร์มคลาวด์ IoT การพัฒนาไดรเวอร์ LED และการอัพเกรดเฟิร์มแวร์
การพัฒนาแอพสมาร์ทโฟน พัฒนาแอพสมาร์ทโฟนสำหรับระบบ Android และ iOS เพื่อให้การลงทะเบียนและการเข้าสู่ระบบของผู้ใช้ การควบคุมอุปกรณ์และฟังก์ชั่นอื่น ๆ
การเพิ่มประสิทธิภาพอุปกรณ์ IoT เมื่อการพัฒนาพื้นฐานของฟังก์ชั่นอุปกรณ์ IoT เสร็จสิ้น คุณอาจหันไปทำงานการปรับให้เหมาะสม เช่น การเพิ่มประสิทธิภาพพลังงาน
การทดสอบการผลิตจำนวนมาก ดำเนินการทดสอบการผลิตจำนวนมากตามมาตรฐานที่เกี่ยวข้อง เช่น การทดสอบการทำงานของอุปกรณ์ การทดสอบอายุ การทดสอบ RF เป็นต้น
แม้จะมีขั้นตอนที่ระบุไว้ข้างต้น โครงการ Smart Light ไม่จำเป็นต้องอยู่ภายใต้ขั้นตอนดังกล่าว เนื่องจากสามารถดำเนินงานต่างๆ ได้ในเวลาเดียวกัน สำหรับเช่นampซอฟต์แวร์แบบฝังตัวและแอพสมาร์ทโฟนสามารถพัฒนาควบคู่กันไปได้ บางขั้นตอนอาจจำเป็นต้องทำซ้ำ เช่น การเพิ่มประสิทธิภาพอุปกรณ์ IoT และการทดสอบการผลิตจำนวนมาก
16 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

2.3 สรุป
ในบทนี้ เราจะอธิบายเกี่ยวกับส่วนประกอบพื้นฐานและโมดูลการทำงานของโครงการ IoT ก่อน จากนั้นจึงแนะนำกรณี Smart Light สำหรับการฝึกปฏิบัติ โดยอ้างอิงถึงโครงสร้าง ฟังก์ชัน การเตรียมฮาร์ดแวร์ และกระบวนการพัฒนา ผู้อ่านสามารถอนุมานได้จากการปฏิบัติและมีความมั่นใจในการดำเนินโครงการ IoT โดยมีข้อผิดพลาดน้อยที่สุดในอนาคต
บทที่ 2 บทนำและการปฏิบัติของโครงการ IoT 17

18 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

บทที่ 3

การแนะนำ

ถึง

อีเอสพี

เรนเมคเกอร์

Internet of Things (IoT) มอบความเป็นไปได้ไม่รู้จบในการเปลี่ยนแปลงวิถีชีวิตของผู้คน แต่การพัฒนาวิศวกรรม IoT ก็เต็มไปด้วยความท้าทาย ด้วยระบบคลาวด์สาธารณะ ผู้ผลิตเทอร์มินัลสามารถใช้ฟังก์ชันการทำงานของผลิตภัณฑ์ผ่านโซลูชันต่อไปนี้:
ขึ้นอยู่กับแพลตฟอร์มคลาวด์ของผู้ให้บริการโซลูชัน ด้วยวิธีนี้ ผู้ผลิตเทอร์มินัลเพียงต้องออกแบบฮาร์ดแวร์ผลิตภัณฑ์ จากนั้นเชื่อมต่อฮาร์ดแวร์กับคลาวด์โดยใช้โมดูลการสื่อสารที่ให้มา และกำหนดค่าฟังก์ชันของผลิตภัณฑ์ตามแนวทาง นี่เป็นแนวทางที่มีประสิทธิภาพ เนื่องจากไม่จำเป็นต้องพัฒนาและดำเนินการและบำรุงรักษา (O&M) ฝั่งเซิร์ฟเวอร์และฝั่งแอปพลิเคชัน ช่วยให้ผู้ผลิตเทอร์มินัลมุ่งเน้นไปที่การออกแบบฮาร์ดแวร์โดยไม่ต้องคำนึงถึงการใช้งานระบบคลาวด์ อย่างไรก็ตาม โซลูชันดังกล่าว (เช่น เฟิร์มแวร์ของอุปกรณ์และแอป) โดยทั่วไปไม่ใช่โอเพ่นซอร์ส ดังนั้นฟังก์ชันผลิตภัณฑ์จึงถูกจำกัดโดยแพลตฟอร์มคลาวด์ของผู้ให้บริการซึ่งไม่สามารถปรับแต่งได้ ในขณะเดียวกัน ข้อมูลผู้ใช้และอุปกรณ์ก็อยู่ในแพลตฟอร์มคลาวด์เช่นกัน
ตามผลิตภัณฑ์ระบบคลาวด์ ในโซลูชันนี้ หลังจากเสร็จสิ้นการออกแบบฮาร์ดแวร์แล้ว ผู้ผลิตเทอร์มินัลไม่เพียงแต่จำเป็นต้องใช้ฟังก์ชันระบบคลาวด์โดยใช้ผลิตภัณฑ์ระบบคลาวด์อย่างน้อย 1 รายการจากระบบคลาวด์สาธารณะ แต่ยังต้องเชื่อมโยงฮาร์ดแวร์กับระบบคลาวด์ด้วย สำหรับเช่นampเพื่อเชื่อมต่อกับ Amazon Web บริการ (AWS) ผู้ผลิตเทอร์มินัลจำเป็นต้องใช้ผลิตภัณฑ์ AWS เช่น Amazon API Gateway, AWS IoT Core และ AWS Lambda เพื่อเปิดใช้งานการเข้าถึงอุปกรณ์ การควบคุมระยะไกล พื้นที่จัดเก็บข้อมูล การจัดการผู้ใช้ และฟังก์ชันพื้นฐานอื่นๆ ไม่เพียงแต่ขอให้ผู้ผลิตเทอร์มินัลใช้และกำหนดค่าผลิตภัณฑ์คลาวด์ได้อย่างยืดหยุ่นด้วยความเข้าใจในเชิงลึกและประสบการณ์อันยาวนาน แต่ยังต้องการให้พวกเขาพิจารณาต้นทุนการก่อสร้างและการบำรุงรักษาสำหรับการเริ่มต้นและครั้งต่อ ๆ ไปtages สิ่งนี้ก่อให้เกิดความท้าทายอย่างมากต่อพลังงานและทรัพยากรของบริษัท
เมื่อเปรียบเทียบกับคลาวด์สาธารณะแล้ว คลาวด์ส่วนตัวมักจะถูกสร้างขึ้นสำหรับโปรเจ็กต์และผลิตภัณฑ์เฉพาะ นักพัฒนาคลาวด์ส่วนตัวได้รับอิสระในระดับสูงสุดในการออกแบบโปรโตคอลและการนำตรรกะทางธุรกิจไปใช้ ผู้ผลิตเทอร์มินัลสามารถสร้างผลิตภัณฑ์และแผนการออกแบบได้ตามต้องการ และผสานรวมและเพิ่มขีดความสามารถให้กับข้อมูลผู้ใช้ได้อย่างง่ายดาย ผสมผสานความปลอดภัยสูง ความสามารถในการปรับขนาด และความน่าเชื่อถือของระบบคลาวด์สาธารณะเข้ากับระบบขั้นสูงtagEspressif เปิดตัวระบบคลาวด์ส่วนตัว Espressif เปิดตัว ESP
19

RainMaker โซลูชันคลาวด์ส่วนตัวที่บูรณาการอย่างล้ำลึกบนคลาวด์ของ Amazon ผู้ใช้สามารถปรับใช้ ESP RainMaker และสร้างคลาวด์ส่วนตัวได้ง่ายๆ ด้วยบัญชี AWS
3.1 ESP RainMaker คืออะไร
ESP RainMaker เป็นแพลตฟอร์ม AIoT ที่สมบูรณ์ซึ่งสร้างขึ้นด้วยผลิตภัณฑ์ AWS ที่เติบโตเต็มที่หลายรายการ โดยให้บริการต่างๆ ที่จำเป็นสำหรับการผลิตจำนวนมาก เช่น การเข้าถึงระบบคลาวด์ของอุปกรณ์ การอัปเกรดอุปกรณ์ การจัดการแบ็กเอนด์ การเข้าสู่ระบบโดยบุคคลที่สาม การรวมระบบด้วยเสียง และการจัดการผู้ใช้ ด้วยการใช้ Serverless Application Repository (SAR) ที่ AWS มอบให้ ผู้ผลิตเทอร์มินัลสามารถติดตั้งใช้ ESP RainMaker กับบัญชี AWS ของตนได้อย่างรวดเร็ว ซึ่งประหยัดเวลาและใช้งานง่าย SAR ที่ ESP RainMaker ใช้จัดการและดูแลรักษาโดย Espressif ช่วยให้นักพัฒนาลดต้นทุนการบำรุงรักษาระบบคลาวด์และเร่งการพัฒนาผลิตภัณฑ์ AIoT เพื่อสร้างโซลูชัน AIoT ที่ปลอดภัย เสถียร และปรับแต่งได้ รูปที่ 3.1 แสดงสถาปัตยกรรมของ ESP RainMaker
รูปที่ 3.1. สถาปัตยกรรมของ ESP RainMaker
เซิร์ฟเวอร์สาธารณะ ESP RainMaker โดย Espressif นั้นให้บริการฟรีสำหรับผู้ที่ชื่นชอบ ESP ผู้ผลิต และนักการศึกษาทุกคนสำหรับการประเมินโซลูชัน นักพัฒนาสามารถเข้าสู่ระบบด้วยบัญชี Apple, Google หรือ GitHub และสร้างต้นแบบแอปพลิเคชัน IoT ของตนเองได้อย่างรวดเร็ว เซิร์ฟเวอร์สาธารณะรวม Alexa และ Google Home และให้บริการควบคุมด้วยเสียงซึ่งได้รับการสนับสนุนโดย Alexa Skill และ Google Actions ฟังก์ชันการรู้จำความหมายยังขับเคลื่อนโดยบุคคลที่สามอีกด้วย อุปกรณ์ RainMaker IoT ตอบสนองต่อการกระทำที่เฉพาะเจาะจงเท่านั้น สำหรับรายการคำสั่งเสียงที่รองรับทั้งหมด โปรดตรวจสอบแพลตฟอร์มของบุคคลที่สาม นอกจากนี้ Espressif ยังมีแอป RainMaker สาธารณะสำหรับผู้ใช้ในการควบคุมผลิตภัณฑ์ผ่านสมาร์ทโฟน 20 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

3.2 การใช้งาน ESP RainMaker
ดังแสดงในรูปที่ 3.2 ESP RainMaker ประกอบด้วยสี่ส่วน: · บริการอ้างสิทธิ์ ซึ่งจะทำให้อุปกรณ์ RainMaker รับใบรับรองแบบไดนามิก · RainMaker Cloud (หรือที่เรียกว่าแบ็กเอนด์บนคลาวด์) ให้บริการต่างๆ เช่น การกรองข้อความ การจัดการผู้ใช้ การจัดเก็บข้อมูล และการผสานรวมกับบุคคลที่สาม · RainMaker Agent ช่วยให้อุปกรณ์ RainMaker สามารถเชื่อมต่อกับ RainMaker Cloud · RainMaker Client (แอป RainMaker หรือสคริปต์ CLI) สำหรับการจัดเตรียม การสร้างผู้ใช้ การเชื่อมโยงและการควบคุมอุปกรณ์ ฯลฯ
รูปที่ 3.2. โครงสร้างของ ESP RainMaker
ESP RainMaker มอบชุดเครื่องมือที่ครบถ้วนสำหรับการพัฒนาผลิตภัณฑ์และการผลิตจำนวนมาก รวมถึง: RainMaker SDK
RainMaker SDK ใช้ ESP-IDF และจัดเตรียมซอร์สโค้ดของเอเจนต์ฝั่งอุปกรณ์และ C API ที่เกี่ยวข้องสำหรับการพัฒนาเฟิร์มแวร์ นักพัฒนาเพียงแค่ต้องเขียนตรรกะของแอปพลิเคชันและปล่อยให้ส่วนที่เหลือเป็นเฟรมเวิร์ก RainMaker สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ C API โปรดไปที่ https://bookc3.espressif.com/rm/c-api-reference แอพ RainMaker แอพ RainMaker เวอร์ชันสาธารณะช่วยให้นักพัฒนาสามารถจัดเตรียมอุปกรณ์ให้เสร็จสิ้น รวมถึงควบคุมและสอบถามสถานะของอุปกรณ์ (เช่น ผลิตภัณฑ์ไฟอัจฉริยะ) มีให้บริการทั้งบน App Store ของ iOS และ Android สำหรับรายละเอียดเพิ่มเติม โปรดดูบทที่ 10 REST API REST API ช่วยให้ผู้ใช้สร้างแอปพลิเคชันของตนเองที่คล้ายกับแอป RainMaker สำหรับข้อมูลเพิ่มเติม โปรดไปที่ https://swaggerapis.rainmaker.espressif.com/
บทที่ 3 ความรู้เบื้องต้นเกี่ยวกับ ESP RainMaker 21

Python APIs CLI ที่ใช้ Python ซึ่งมาพร้อมกับ RainMaker SDK ได้รับการจัดเตรียมไว้เพื่อใช้ฟังก์ชันทั้งหมดที่คล้ายกับคุณสมบัติของสมาร์ทโฟน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Python API โปรดไปที่ https://bookc3.espressif.com/rm/python-api-reference
Admin CLI Admin CLI ซึ่งมีระดับการเข้าถึงที่สูงกว่านั้นมีไว้สำหรับการใช้งานส่วนตัวของ ESP RainMaker เพื่อสร้างใบรับรองอุปกรณ์จำนวนมาก
3.2.1 บริการเรียกร้องสินไหม
การสื่อสารทั้งหมดระหว่างอุปกรณ์ RainMaker และแบ็กเอนด์บนคลาวด์ดำเนินการผ่าน MQTT+TLS ในบริบทของ ESP RainMaker “การอ้างสิทธิ์” คือกระบวนการที่อุปกรณ์ได้รับใบรับรองจากบริการการอ้างสิทธิ์เพื่อเชื่อมต่อกับแบ็กเอนด์บนคลาวด์ โปรดทราบว่า Claiming Service ใช้ได้กับบริการ RainMaker สาธารณะเท่านั้น ในขณะที่การใช้งานแบบส่วนตัว จะต้องสร้างใบรับรองอุปกรณ์จำนวนมากผ่าน Admin CLI ESP RainMaker รองรับบริการเคลมสามประเภท: การเคลมด้วยตนเอง
อุปกรณ์จะดึงใบรับรองผ่านคีย์ลับที่ตั้งโปรแกรมไว้ล่วงหน้าใน eFuse หลังจากเชื่อมต่ออินเทอร์เน็ต การอ้างสิทธิ์ที่ขับเคลื่อนโดยโฮสต์ ใบรับรองจะได้รับจากโฮสต์การพัฒนาด้วยบัญชี RainMaker การให้ความช่วยเหลือในการอ้างสิทธิ์ ใบรับรองจะได้รับผ่านแอปพลิเคชันสมาร์ทโฟนในระหว่างการจัดเตรียม
3.2.2 ตัวแทน RainMaker
รูปที่ 3.3. โครงสร้างของ RainMaker SDK ฟังก์ชันหลักของ RainMaker Agent คือการให้การเชื่อมต่อและช่วยเหลือเลเยอร์แอปพลิเคชันในการประมวลผลข้อมูลคลาวด์อัปลิงก์/ดาวน์ลิงก์ สร้างขึ้นผ่าน RainMaker SDK 22 ESP32-C3 Wireless Adventure: คู่มือ IoT ที่ครอบคลุม

และพัฒนาบนกรอบงาน ESP-IDF ที่ได้รับการพิสูจน์แล้ว โดยใช้ส่วนประกอบ ESP-IDF เช่น RTOS, NVS และ MQTT รูปที่ 3.3 แสดงโครงสร้างของ RainMaker SDK
RainMaker SDK มีคุณสมบัติหลักสองประการ
การเชื่อมต่อ
ฉัน. ร่วมมือกับ Claiming Service เพื่อรับใบรับรองอุปกรณ์
ครั้งที่สอง การเชื่อมต่อกับแบ็คเอนด์คลาวด์โดยใช้โปรโตคอล MQTT ที่ปลอดภัยเพื่อให้การเชื่อมต่อระยะไกลและใช้งานการควบคุมระยะไกล การรายงานข้อความ การจัดการผู้ใช้ การจัดการอุปกรณ์ ฯลฯ โดยจะใช้ส่วนประกอบ MQTT ใน ESP-IDF ตามค่าเริ่มต้น และจัดเตรียมเลเยอร์นามธรรมเพื่อเชื่อมต่อกับอื่นๆ สแต็คโปรโตคอล
สาม จัดเตรียมส่วนประกอบการจัดเตรียม wifi สำหรับการเชื่อมต่อและการจัดเตรียม Wi-Fi, ส่วนประกอบ https ota สำหรับการอัปเกรด OTA และส่วนประกอบ ctrl ในเครื่องโดยเฉพาะสำหรับการค้นหาและการเชื่อมต่ออุปกรณ์ในเครื่อง วัตถุประสงค์ทั้งหมดนี้สามารถบรรลุได้ด้วยการกำหนดค่าง่ายๆ
การประมวลผลข้อมูล
ฉัน. การจัดเก็บใบรับรองอุปกรณ์ที่ออกโดย Claiming Service และข้อมูลที่จำเป็นเมื่อเรียกใช้ RainMaker ตามค่าเริ่มต้นโดยใช้อินเทอร์เฟซที่ได้รับจากส่วนประกอบแฟลช nvs และจัดเตรียม API สำหรับนักพัฒนาสำหรับการใช้งานโดยตรง
ครั้งที่สอง การใช้กลไกการโทรกลับเพื่อประมวลผลข้อมูลอัปลิงก์/ดาวน์ลิงก์บนคลาวด์ และปลดบล็อกข้อมูลไปยังเลเยอร์แอปพลิเคชันโดยอัตโนมัติ เพื่อให้นักพัฒนาประมวลผลได้ง่าย สำหรับเช่นampนอกจากนี้ RainMaker SDK มอบอินเทอร์เฟซที่หลากหลายสำหรับการสร้างข้อมูล TSL (Thing Specification Language) ซึ่งจำเป็นสำหรับการกำหนดโมเดล TSL เพื่ออธิบายอุปกรณ์ IoT และใช้ฟังก์ชันต่างๆ เช่น การกำหนดเวลา การนับถอยหลัง และการควบคุมด้วยเสียง สำหรับคุณสมบัติโต้ตอบขั้นพื้นฐาน เช่น การกำหนดเวลา RainMaker SDK มอบโซลูชันที่ไม่ต้องมีการพัฒนา ซึ่งสามารถเปิดใช้งานได้ง่ายเมื่อจำเป็น จากนั้น RainMaker Agent จะประมวลผลข้อมูลโดยตรง ส่งไปยังคลาวด์ผ่านหัวข้อ MQTT ที่เกี่ยวข้อง และป้อนกลับการเปลี่ยนแปลงข้อมูลในแบ็คเอนด์บนคลาวด์ผ่านกลไกการโทรกลับ
3.2.3 คลาวด์แบ็กเอนด์
แบ็กเอนด์บนคลาวด์สร้างขึ้นบน AWS Serverless Computing และทำได้ผ่าน AWS Cognito (ระบบการจัดการข้อมูลประจำตัว), Amazon API Gateway, AWS Lambda (บริการประมวลผลแบบไร้เซิร์ฟเวอร์), Amazon DynamoDB (ฐานข้อมูล NoSQL), AWS IoT Core (แกนการเข้าถึง IoT ที่ให้การเข้าถึง MQTT และการกรองกฎ), Amazon Simple Email Service (บริการอีเมลแบบง่าย SES), Amazon CloudFront (เครือข่ายการจัดส่งที่รวดเร็ว), Amazon Simple Queue Service (การจัดคิวข้อความ SQS) และ Amazon S3 (บริการพื้นที่เก็บข้อมูลบัคเก็ต) มีวัตถุประสงค์เพื่อเพิ่มประสิทธิภาพความสามารถในการปรับขนาดและความปลอดภัย ด้วย ESP RainMaker นักพัฒนาสามารถจัดการอุปกรณ์โดยไม่ต้องเขียนโค้ดบนคลาวด์ ข้อความที่รายงานโดยอุปกรณ์จะถูกส่งไปที่อย่างโปร่งใส
บทที่ 3 ความรู้เบื้องต้นเกี่ยวกับ ESP RainMaker 23

ไคลเอนต์แอปพลิเคชันหรือบริการของบุคคลที่สามอื่น ๆ ตาราง 3.1 แสดงผลิตภัณฑ์และฟังก์ชัน AWS Cloud ที่ใช้ในแบ็กเอนด์ระบบคลาวด์ พร้อมด้วยผลิตภัณฑ์และคุณสมบัติเพิ่มเติมที่อยู่ระหว่างการพัฒนา
ตารางที่ 3.1. ผลิตภัณฑ์และฟังก์ชัน AWS Cloud ที่ใช้โดยแบ็กเอนด์ระบบคลาวด์

ผลิตภัณฑ์ AWS Cloud ที่ใช้โดย RainMaker

การทำงาน

AWS ค็อกนิโต

การจัดการข้อมูลรับรองผู้ใช้และการสนับสนุนการเข้าสู่ระบบของบุคคลที่สาม

AWS แลมบ์ดา

การใช้ตรรกะทางธุรกิจหลักของแบ็คเอนด์คลาวด์

Amazon Timestream จัดเก็บข้อมูลอนุกรมเวลา

Amazon DynamoDB จัดเก็บข้อมูลส่วนตัวของลูกค้า

แกนหลักของ AWS IoT

รองรับการสื่อสาร MQTT

อเมซอน เอสอีเอส

ให้บริการส่งอีเมล์

Amazon CloudFront เร่งการจัดการแบ็กเอนด์ webการเข้าถึงเว็บไซต์

อเมซอน เอสคิวเอส

การส่งต่อข้อความจาก AWS IoT Core

3.2.4 ไคลเอนต์ RainMaker
ไคลเอนต์ RainMaker เช่น App และ CLI สื่อสารกับแบ็กเอนด์ระบบคลาวด์ผ่าน REST API ข้อมูลโดยละเอียดและคำแนะนำเกี่ยวกับ REST API มีอยู่ในเอกสารประกอบ Swagger ที่ Espressif มอบให้ ไคลเอนต์แอปพลิเคชันมือถือของ RainMaker มีให้บริการทั้งระบบ iOS และ Android ช่วยให้สามารถจัดเตรียม ควบคุม และแชร์อุปกรณ์ ตลอดจนสร้างและเปิดใช้งานงานนับถอยหลัง และการเชื่อมต่อกับแพลตฟอร์มของบุคคลที่สาม โดยสามารถโหลด UI และไอคอนได้โดยอัตโนมัติตามการกำหนดค่าที่อุปกรณ์รายงานและแสดง TSL ของอุปกรณ์ได้อย่างสมบูรณ์
เช่นampหากไฟอัจฉริยะถูกสร้างขึ้นบน RainMaker SDK ที่ให้มา เช่นampอย่างไรก็ตาม ไอคอนและ UI ของไฟหลอดไฟจะถูกโหลดโดยอัตโนมัติเมื่อการจัดเตรียมเสร็จสิ้น ผู้ใช้สามารถเปลี่ยนสีและความสว่างของแสงผ่านอินเทอร์เฟซ และเข้าถึงการควบคุมของบุคคลที่สามโดยการเชื่อมโยง Alexa Smart Home Skill หรือ Google Smart Home Actions เข้ากับบัญชี ESP RainMaker รูปที่ 3.4 แสดงไอคอนและ UI เช่นampของหลอดไฟตามลำดับบนแอป Alexa, Google Home และ ESP RainMaker

24 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

(ก) เช่นampเลอ - อเล็กซา

(ข) เช่นampเลอ – หน้าแรกของ Google

(ค) เช่นampเลอ – ESP RainMaker
รูปที่ 3.4 ตัวอย่างampไอคอนและ UI ของหลอดไฟบน Alexa, Google Home และแอป ESP RainMaker
3.3 แนวทางปฏิบัติ: ประเด็นสำคัญสำหรับการพัฒนาด้วย ESP RainMaker
เมื่อเลเยอร์ไดรเวอร์อุปกรณ์เสร็จสมบูรณ์ นักพัฒนาอาจเริ่มสร้างโมเดล TSL และประมวลผลข้อมูลดาวน์ลิงก์โดยใช้ API ที่ RainMaker SDK มอบให้ และเปิดใช้งานบริการพื้นฐานของ ESP RainMaker ตามคำจำกัดความและข้อกำหนดของผลิตภัณฑ์
บทที่ 3 ความรู้เบื้องต้นเกี่ยวกับ ESP RainMaker 25

ส่วนที่ 9.4 ของหนังสือเล่มนี้จะอธิบายการใช้งานไฟอัจฉริยะ LED ใน RainMaker ในระหว่างการแก้ไขจุดบกพร่อง นักพัฒนาสามารถใช้เครื่องมือ CLI ใน RainMaker SDK เพื่อสื่อสารกับไฟอัจฉริยะ (หรือเรียก REST API จาก Swagger)
บทที่ 10 จะอธิบายรายละเอียดการใช้ REST API ในการพัฒนาแอปพลิเคชันสมาร์ทโฟน การอัพเกรด OTA ของไฟอัจฉริยะ LED จะกล่าวถึงในบทที่ 11 หากนักพัฒนาได้เปิดใช้งานการตรวจสอบระยะไกล ESP Insights แบ็กเอนด์การจัดการ ESP RainMaker จะแสดงข้อมูล ESP Insights รายละเอียดจะนำเสนอในบทที่ 15
ESP RainMaker รองรับการปรับใช้ส่วนตัว ซึ่งแตกต่างจากเซิร์ฟเวอร์ RainMaker สาธารณะในลักษณะต่อไปนี้:
บริการอ้างสิทธิ์ ในการสร้างใบรับรองในการปรับใช้ส่วนตัว จำเป็นต้องใช้ RainMaker Admin CLI แทนการอ้างสิทธิ์ สำหรับเซิร์ฟเวอร์สาธารณะ นักพัฒนาจะต้องได้รับสิทธิ์ผู้ดูแลระบบในการดำเนินการอัปเกรดเฟิร์มแวร์ แต่เป็นสิ่งที่ไม่พึงประสงค์ในการปรับใช้เชิงพาณิชย์ ดังนั้นจึงไม่สามารถให้บริการการตรวจสอบสิทธิ์แยกต่างหากสำหรับการอ้างสิทธิ์ในตนเอง หรือสิทธิ์ของผู้ดูแลระบบสำหรับการอ้างสิทธิ์ที่ขับเคลื่อนโดยโฮสต์หรือที่ได้รับความช่วยเหลือ
แอปโทรศัพท์ ในการปรับใช้ส่วนตัว แอปพลิเคชันจำเป็นต้องได้รับการกำหนดค่าและรวบรวมแยกต่างหากเพื่อให้แน่ใจว่าระบบบัญชีไม่สามารถทำงานร่วมกันได้
การเข้าสู่ระบบของบุคคลที่สามและการรวมเสียง นักพัฒนาจะต้องกำหนดค่าแยกต่างหากผ่านบัญชี Google และ Apple Developer เพื่อเปิดใช้งานการเข้าสู่ระบบของบุคคลที่สาม รวมถึงการรวม Alexa Skill และ Google Voice Assistant
เคล็ดลับ สำหรับรายละเอียดเกี่ยวกับการปรับใช้ระบบคลาวด์ โปรดไปที่ https://customer.rainmaker.espressif ดอทคอม ในแง่ของเฟิร์มแวร์ การย้ายจากเซิร์ฟเวอร์สาธารณะไปยังเซิร์ฟเวอร์ส่วนตัวจำเป็นต้องมีการเปลี่ยนใบรับรองอุปกรณ์เท่านั้น ซึ่งช่วยปรับปรุงประสิทธิภาพการย้ายข้อมูลได้อย่างมาก และลดต้นทุนในการย้ายข้อมูลและการแก้ไขจุดบกพร่องรอง
3.4 คุณสมบัติของ ESP RainMaker
คุณสมบัติ ESP RainMaker มีเป้าหมายหลักสามด้าน ได้แก่ การจัดการผู้ใช้ ผู้ใช้ปลายทาง และผู้ดูแลระบบ คุณสมบัติทั้งหมดได้รับการสนับสนุนทั้งในเซิร์ฟเวอร์สาธารณะและส่วนตัว เว้นแต่จะระบุไว้เป็นอย่างอื่น
3.4.1 การจัดการผู้ใช้
คุณสมบัติการจัดการผู้ใช้ช่วยให้ผู้ใช้สามารถลงทะเบียน เข้าสู่ระบบ เปลี่ยนรหัสผ่าน เรียกรหัสผ่าน ฯลฯ
26 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

ลงทะเบียนและเข้าสู่ระบบ วิธีการลงทะเบียนและเข้าสู่ระบบที่ RainMaker รองรับ ได้แก่: · รหัสอีเมล + รหัสผ่าน · หมายเลขโทรศัพท์ + รหัสผ่าน · บัญชี Google · บัญชี Apple · บัญชี GitHub (เซิร์ฟเวอร์สาธารณะเท่านั้น) · บัญชี Amazon (เซิร์ฟเวอร์ส่วนตัวเท่านั้น)
หมายเหตุ ลงทะเบียนโดยใช้ Google/Amazon แบ่งปันที่อยู่อีเมลของผู้ใช้กับ RainMaker ลงทะเบียนโดยใช้ Apple แชร์ที่อยู่จำลองที่ Apple กำหนดให้กับผู้ใช้โดยเฉพาะสำหรับบริการ RainMaker บัญชี RainMaker จะถูกสร้างขึ้นโดยอัตโนมัติสำหรับผู้ใช้ที่ลงชื่อเข้าใช้ด้วยบัญชี Google, Apple หรือ Amazon เป็นครั้งแรก
เปลี่ยนรหัสผ่านใช้ได้สำหรับการเข้าสู่ระบบตามรหัสอีเมล / หมายเลขโทรศัพท์เท่านั้น เซสชันอื่นๆ ที่ใช้งานอยู่ทั้งหมดจะถูกล็อกเอาต์หลังจากเปลี่ยนรหัสผ่าน ตามพฤติกรรมของ AWS Cognito เซสชันออกจากระบบสามารถคงสถานะใช้งานได้นานถึง 1 ชั่วโมง
รับรหัสผ่านที่ถูกต้องสำหรับการเข้าสู่ระบบตามรหัสอีเมล / หมายเลขโทรศัพท์เท่านั้น
3.4.2 คุณสมบัติสำหรับผู้ใช้ปลายทาง
คุณสมบัติที่เปิดให้ผู้ใช้ปลายทางรวมถึงการควบคุมและการตรวจสอบภายในและระยะไกล การกำหนดเวลา การจัดกลุ่มอุปกรณ์ การแชร์อุปกรณ์ การแจ้งเตือนแบบพุช และการผสานรวมกับบุคคลที่สาม
การควบคุมระยะไกลและการตรวจสอบ · การกำหนดค่าแบบสอบถาม ค่าพารามิเตอร์ และสถานะการเชื่อมต่อสำหรับอุปกรณ์หนึ่งเครื่องหรือทั้งหมด · ตั้งค่าพารามิเตอร์สำหรับอุปกรณ์เดียวหรือหลายเครื่อง
การควบคุมและตรวจสอบภายในเครื่อง โทรศัพท์มือถือและอุปกรณ์จำเป็นต้องเชื่อมต่อกับเครือข่ายเดียวกันเพื่อการควบคุมภายในเครื่อง
การกำหนดเวลา · ผู้ใช้ตั้งค่าการกระทำบางอย่างไว้ล่วงหน้าในเวลาที่กำหนด · ไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตสำหรับอุปกรณ์ขณะดำเนินการตามกำหนดเวลา · ครั้งเดียวหรือทำซ้ำ (โดยระบุวัน) สำหรับอุปกรณ์เครื่องเดียวหรือหลายเครื่อง
การจัดกลุ่มอุปกรณ์ รองรับการจัดกลุ่มนามธรรมหลายระดับ ข้อมูลเมตาของกลุ่มสามารถใช้เพื่อสร้างโครงสร้าง Home Room
บทที่ 3 ความรู้เบื้องต้นเกี่ยวกับ ESP RainMaker 27

การแชร์อุปกรณ์ สามารถแชร์อุปกรณ์ตั้งแต่หนึ่งเครื่องขึ้นไปกับผู้ใช้หนึ่งคนขึ้นไป
การแจ้งเตือนแบบพุช ผู้ใช้จะได้รับการแจ้งเตือนแบบพุชสำหรับเหตุการณ์ต่างๆ เช่น · เพิ่ม/ลบอุปกรณ์ใหม่ · อุปกรณ์ที่เชื่อมต่อกับคลาวด์ · อุปกรณ์ถูกตัดการเชื่อมต่อจากคลาวด์ · คำขอแชร์อุปกรณ์ที่สร้าง/ยอมรับ/ปฏิเสธ · ข้อความแจ้งเตือนที่รายงานโดยอุปกรณ์
การบูรณาการของบุคคลที่สาม Alexa และ Google Voice Assistant ได้รับการรองรับเพื่อควบคุมอุปกรณ์ RainMaker รวมถึงไฟ สวิตช์ ปลั๊กไฟ พัดลม และเซ็นเซอร์อุณหภูมิ
3.4.3 คุณสมบัติผู้ดูแลระบบ
คุณสมบัติผู้ดูแลระบบช่วยให้ผู้ดูแลระบบสามารถใช้การลงทะเบียนอุปกรณ์ การจัดกลุ่มอุปกรณ์ และการอัปเกรด OTA และเพื่อ view สถิติและข้อมูล ESP Insights
การลงทะเบียนอุปกรณ์ สร้างใบรับรองอุปกรณ์และลงทะเบียนกับ Admin CLI (เซิร์ฟเวอร์ส่วนตัวเท่านั้น)
การจัดกลุ่มอุปกรณ์ สร้างกลุ่มนามธรรมหรือกลุ่มที่มีโครงสร้างตามข้อมูลอุปกรณ์ (เซิร์ฟเวอร์ส่วนตัวเท่านั้น)
อัปเกรดแบบ Over-the-Air (OTA) อัปโหลดเฟิร์มแวร์ตามเวอร์ชันและรุ่นไปยังอุปกรณ์ตั้งแต่หนึ่งเครื่องขึ้นไปหรือเป็นกลุ่ม ตรวจสอบ ยกเลิก หรือเก็บถาวรงาน OTA
View สถิติ Viewสถิติที่สามารถรวมถึง: · การลงทะเบียนอุปกรณ์ (ใบรับรองที่ลงทะเบียนโดยผู้ดูแลระบบ) · การเปิดใช้งานอุปกรณ์ (อุปกรณ์ที่เชื่อมต่อเป็นครั้งแรก) · บัญชีผู้ใช้ · การเชื่อมโยงผู้ใช้กับอุปกรณ์
View ข้อมูลข้อมูลเชิงลึกของ ESP Viewข้อมูลข้อมูลเชิงลึก ESP ที่สามารถใช้งานได้ ได้แก่: · ข้อผิดพลาด คำเตือน และบันทึกที่กำหนดเอง · รายงานข้อขัดข้องและการวิเคราะห์ · เหตุผลในการรีบูต · ตัวชี้วัดเช่นการใช้หน่วยความจำ RSSI ฯลฯ · ตัวชี้วัดและตัวแปรที่กำหนดเอง
28 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

3.5 สรุป
ในบทนี้ เราได้แนะนำความแตกต่างที่สำคัญบางประการระหว่างการใช้งาน RainMaker สาธารณะและการปรับใช้ส่วนตัว โซลูชัน ESP RainMaker ส่วนตัวที่ Espressif เปิดตัวนั้นมีความน่าเชื่อถือสูงและสามารถขยายได้ ชิปซีรีย์ ESP32 ทั้งหมดได้รับการเชื่อมต่อและปรับให้เข้ากับ AWS ซึ่งช่วยลดต้นทุนได้อย่างมาก นักพัฒนาสามารถมุ่งเน้นไปที่การตรวจสอบต้นแบบโดยไม่ต้องเรียนรู้เกี่ยวกับผลิตภัณฑ์ AWS Cloud นอกจากนี้เรายังอธิบายการใช้งานและคุณสมบัติของ ESP RainMaker และประเด็นสำคัญบางประการสำหรับการพัฒนาโดยใช้แพลตฟอร์ม
สแกนเพื่อดาวน์โหลด ESP RainMaker สำหรับ Android สแกนเพื่อดาวน์โหลด ESP RainMaker สำหรับ iOS
บทที่ 3 ความรู้เบื้องต้นเกี่ยวกับ ESP RainMaker 29

30 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา
บทนี้มุ่งเน้นไปที่ ESP-IDF ซึ่งเป็นเฟรมเวิร์กการพัฒนาซอฟต์แวร์อย่างเป็นทางการสำหรับ ESP32-C3 เราจะอธิบายวิธีการตั้งค่าสภาพแวดล้อมบนระบบปฏิบัติการต่างๆ และแนะนำโครงสร้างโปรเจ็กต์และระบบการสร้าง ESP-IDF รวมถึงการใช้เครื่องมือการพัฒนาที่เกี่ยวข้อง จากนั้นเราจะนำเสนอกระบวนการรวบรวมและดำเนินการของอดีตample project ในขณะที่เสนอคำอธิบายโดยละเอียดของบันทึกเอาต์พุตในแต่ละ stage.
4.1 ESP-IDF จบลงแล้วview
ESP-IDF (Espressif IoT Development Framework) เป็นเฟรมเวิร์กการพัฒนา IoT แบบครบวงจรที่ให้บริการโดย Espressif Technology ใช้ C/C++ เป็นภาษาการพัฒนาหลัก และรองรับการคอมไพล์ข้ามภายใต้ระบบปฏิบัติการกระแสหลัก เช่น Linux, Mac และ Windows อดีตampโปรแกรมที่รวมอยู่ในหนังสือเล่มนี้ได้รับการพัฒนาโดยใช้ ESP-IDF ซึ่งมีคุณสมบัติดังต่อไปนี้: · ไดรเวอร์ระดับระบบ SoC ESP-IDF มีไดรเวอร์สำหรับ ESP32, ESP32-S2, ESP32-C3,
และชิปอื่นๆ ไดรเวอร์เหล่านี้ประกอบด้วยไลบรารี Peripheral Low Level (LL), ไลบรารี Hardware Abstraction Layer (HAL), การสนับสนุน RTOS และซอฟต์แวร์ไดรเวอร์ Upper-Layer ฯลฯ · ส่วนประกอบที่สำคัญ ESP-IDF รวมองค์ประกอบพื้นฐานที่จำเป็นสำหรับการพัฒนา IoT ซึ่งรวมถึงสแต็กโปรโตคอลเครือข่ายหลายชุด เช่น HTTP และ MQTT เฟรมเวิร์กการจัดการพลังงานพร้อมการปรับความถี่แบบไดนามิก และคุณสมบัติ เช่น การเข้ารหัส Flash และ Secure Boot เป็นต้น · เครื่องมือการพัฒนาและการใช้งานจริง ESP-IDF จัดเตรียมเครื่องมือที่ใช้กันทั่วไปสำหรับการสร้าง แฟลช และการดีบักระหว่างการพัฒนาและการผลิตจำนวนมาก (ดูรูปที่ 4.1) เช่น ระบบการสร้างที่ใช้ CMake, ห่วงโซ่เครื่องมือการคอมไพล์ข้ามที่ใช้ GCC และ JTAG เครื่องมือแก้ไขจุดบกพร่องที่ใช้ OpenOCD ฯลฯ เป็นที่น่าสังเกตว่าโค้ด ESP-IDF ยึดตามสิทธิ์การใช้งานโอเพ่นซอร์ส Apache 2.0 เป็นหลัก ผู้ใช้สามารถพัฒนาซอฟต์แวร์ส่วนบุคคลหรือเชิงพาณิชย์ได้โดยไม่มีข้อจำกัด ในขณะที่ปฏิบัติตามเงื่อนไขของใบอนุญาตโอเพ่นซอร์ส นอกจากนี้ ผู้ใช้ยังได้รับใบอนุญาตสิทธิบัตรถาวรโดยไม่เสียค่าใช้จ่าย โดยไม่มีข้อผูกมัดในการแก้ไขซอร์สโค้ดแบบโอเพ่นซอร์ส
31

รูปที่ 4.1.

การสร้าง การแฟลช และการแก้ไขข้อบกพร่อง-

เครื่องมือสำหรับการพัฒนาและการผลิตจำนวนมาก

4.1.1 เวอร์ชัน ESP-IDF
รหัส ESP-IDF โฮสต์บน GitHub เป็นโครงการโอเพ่นซอร์ส ปัจจุบันมีสามเวอร์ชันหลักให้เลือก: v3, v4 และ v5 แต่ละเวอร์ชันหลักมักจะมีเวอร์ชันย่อยต่างๆ เช่น v4.2, v4.3 และอื่นๆ Espressif Systems รับประกันการสนับสนุนเป็นเวลา 30 เดือนสำหรับการแก้ไขข้อบกพร่องและแพตช์ความปลอดภัยสำหรับเวอร์ชันย่อยแต่ละเวอร์ชันที่เผยแพร่ ดังนั้นการแก้ไขเวอร์ชันย่อยจึงออกเป็นประจำเช่น v4.3.1, v4.2.2 เป็นต้น ตาราง 4.1 แสดงสถานะการสนับสนุนของ ESP-IDF เวอร์ชันต่างๆ สำหรับชิป Espressif โดยระบุว่าอยู่ในเวอร์ชันก่อนview stage (ให้การสนับสนุนก่อนview เวอร์ชันซึ่งอาจขาดคุณสมบัติหรือเอกสารประกอบบางอย่าง) หรือได้รับการสนับสนุนอย่างเป็นทางการ

ตารางที่ 4.1. รองรับสถานะ ESP-IDF เวอร์ชันต่างๆ สำหรับชิป Espressif

ซีรีส์ ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

รองรับเวอร์ชัน 4.1

รองรับ v4.2 แล้ว

รองรับ v4.3 รองรับ รองรับ

รองรับ v4.4 รองรับ รองรับ รองรับ
ก่อนview

รองรับ v5.0 รองรับ รองรับ รองรับ รองรับรุ่นก่อนview

32 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

การวนซ้ำเวอร์ชันหลักมักจะเกี่ยวข้องกับการปรับเปลี่ยนโครงสร้างเฟรมเวิร์กและการอัปเดตระบบการคอมไพล์ สำหรับเช่นampการเปลี่ยนแปลงที่สำคัญจาก v3.* เป็น v4.* คือการค่อยๆ โยกย้ายของระบบบิลด์จาก Make ไปเป็น CMake ในทางกลับกัน การทำซ้ำเวอร์ชันรองมักจะต้องมีการเพิ่มคุณสมบัติใหม่หรือการรองรับชิปใหม่
สิ่งสำคัญคือต้องแยกแยะและทำความเข้าใจความสัมพันธ์ระหว่างเวอร์ชันเสถียรและสาขา GitHub เวอร์ชันที่มีป้ายกำกับเป็น v*.* หรือ v*.*.* แสดงถึงเวอร์ชันเสถียรที่ผ่านการทดสอบภายในโดย Espressif เมื่อแก้ไขแล้ว โค้ด ห่วงโซ่เครื่องมือ และเอกสารการเผยแพร่สำหรับเวอร์ชันเดียวกันจะยังคงไม่เปลี่ยนแปลง อย่างไรก็ตาม สาขา GitHub (เช่น สาขา release/v4.3) ได้รับการคอมมิตโค้ดบ่อยครั้ง บ่อยครั้งเป็นประจำทุกวัน ดังนั้นข้อมูลโค้ดสองรายการภายใต้สาขาเดียวกันอาจแตกต่างกัน ทำให้นักพัฒนาจำเป็นต้องอัปเดตโค้ดทันที
4.1.2 เวิร์กโฟลว์ Git ESP-IDF
Espressif ปฏิบัติตามเวิร์กโฟลว์ Git เฉพาะสำหรับ ESP-IDF โดยมีรายละเอียดดังนี้:
· มีการเปลี่ยนแปลงใหม่ในสาขาหลัก ซึ่งทำหน้าที่เป็นสาขาการพัฒนาหลัก เวอร์ชัน ESP-IDF บนสาขาหลักจะมี -dev เสมอ tag เพื่อระบุว่าขณะนี้อยู่ระหว่างการพัฒนา เช่น v4.3-dev การเปลี่ยนแปลงในสาขาหลักจะต้องเกิดขึ้นใหม่ก่อนviewแก้ไขและทดสอบในพื้นที่เก็บข้อมูลภายในของ Espressif จากนั้นจึงพุชไปที่ GitHub หลังจากการทดสอบอัตโนมัติเสร็จสิ้น
· เมื่อเวอร์ชันใหม่เสร็จสิ้นการพัฒนาฟีเจอร์ในสาขาหลักและตรงตามเกณฑ์สำหรับการเข้าสู่การทดสอบเบต้า เวอร์ชันนั้นจะเปลี่ยนไปเป็นสาขาใหม่ เช่น release/ v4.3 นอกจากนี้สาขาใหม่นี้ก็คือ tagถือเป็นเวอร์ชันก่อนเผยแพร่ เช่น v4.3-beta1 นักพัฒนาสามารถดูแพลตฟอร์ม GitHub เพื่อเข้าถึงรายชื่อสาขาทั้งหมดและ tags สำหรับ ESP-IDF สิ่งสำคัญที่ควรทราบก็คือเวอร์ชันเบต้า (เวอร์ชันก่อนเผยแพร่) อาจยังคงมีปัญหาที่ทราบอยู่เป็นจำนวนมาก เนื่องจากเวอร์ชันเบต้าได้รับการทดสอบอย่างต่อเนื่อง การแก้ไขจุดบกพร่องจะถูกเพิ่มให้กับทั้งเวอร์ชันนี้และสาขาหลักพร้อมกัน ในขณะเดียวกัน สาขาหลักอาจเริ่มพัฒนาคุณสมบัติใหม่สำหรับเวอร์ชันถัดไปแล้ว เมื่อการทดสอบใกล้จะเสร็จสมบูรณ์ จะมีการเพิ่มป้ายกำกับ release Candidate (rc) ลงในสาขา เพื่อระบุว่าอาจเป็นตัวเลือกที่เป็นไปได้สำหรับการเปิดตัวอย่างเป็นทางการ เช่น v4.3-rc1 ที่สtage สาขายังคงเป็นเวอร์ชันก่อนเผยแพร่
· หากไม่มีการค้นพบหรือรายงานข้อบกพร่องที่สำคัญ ในที่สุดเวอร์ชันก่อนเผยแพร่จะได้รับป้ายกำกับเวอร์ชันหลัก (เช่น v5.0) หรือป้ายกำกับเวอร์ชันรอง (เช่น v4.3) และกลายเป็นเวอร์ชันเผยแพร่อย่างเป็นทางการ ซึ่งได้รับการบันทึกไว้ ในหน้าบันทึกประจำรุ่น ต่อจากนั้น ข้อบกพร่องใดๆ ที่ระบุในเวอร์ชันนี้จะได้รับการแก้ไขในสาขาที่เผยแพร่ หลังจากการทดสอบด้วยตนเองเสร็จสิ้น สาขาจะได้รับป้ายกำกับเวอร์ชันแก้ไขข้อบกพร่อง (เช่น v4.3.2) ซึ่งจะแสดงอยู่บนหน้าบันทึกประจำรุ่นด้วย
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 33

4.1.3 การเลือกเวอร์ชันที่เหมาะสม
เนื่องจาก ESP-IDF เริ่มรองรับ ESP32-C3 อย่างเป็นทางการจากเวอร์ชัน v4.3 และ v4.4 ยังไม่ได้ออกอย่างเป็นทางการในขณะที่เขียนหนังสือเล่มนี้ เวอร์ชันที่ใช้ในหนังสือเล่มนี้คือ v4.3.2 ซึ่งเป็นเวอร์ชันแก้ไข ของเวอร์ชัน 4.3 อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือเมื่อคุณอ่านหนังสือเล่มนี้ เวอร์ชัน 4.4 หรือใหม่กว่านั้นอาจมีให้ใช้งานแล้ว เมื่อเลือกเวอร์ชัน เราขอแนะนำดังต่อไปนี้:
· สำหรับนักพัฒนาระดับเริ่มต้น ขอแนะนำให้เลือกเวอร์ชัน v4.3 ที่เสถียรหรือเวอร์ชันที่แก้ไข ซึ่งสอดคล้องกับเวอร์ชันเก่าampเวอร์ชันที่ใช้ในหนังสือเล่มนี้
· เพื่อวัตถุประสงค์ในการผลิตจำนวนมาก ขอแนะนำให้ใช้เวอร์ชันเสถียรล่าสุดเพื่อรับประโยชน์จากการสนับสนุนทางเทคนิคที่ทันสมัยที่สุด
· หากคุณต้องการทดลองใช้ชิปใหม่หรือสำรวจคุณสมบัติผลิตภัณฑ์ใหม่ โปรดใช้สาขาหลัก เวอร์ชันล่าสุดมีคุณสมบัติล่าสุดทั้งหมด แต่โปรดจำไว้ว่าอาจมีข้อบกพร่องที่ทราบหรือไม่ทราบอยู่
· หากเวอร์ชันเสถียรที่ใช้งานอยู่ไม่มีคุณสมบัติใหม่ที่ต้องการ และคุณต้องการลดความเสี่ยงที่เกี่ยวข้องกับสาขาหลัก ให้พิจารณาใช้สาขาการเผยแพร่ที่เกี่ยวข้อง เช่น สาขา release/v4.4 พื้นที่เก็บข้อมูล GitHub ของ Espressif จะสร้างสาขา release/v4.4 ก่อน จากนั้นจึงปล่อยเวอร์ชันเสถียร v4.4 โดยอิงตามสแน็ปช็อตในอดีตที่เฉพาะเจาะจงของสาขานี้ หลังจากเสร็จสิ้นการพัฒนาและทดสอบฟีเจอร์ทั้งหมดแล้ว
4.1.4 เกินview ของไดเรกทอรี ESP-IDF SDK
ESP-IDF SDK ประกอบด้วยไดเร็กทอรีหลักสองไดเร็กทอรี: esp-idf และ .espressif แบบแรกมีซอร์สโค้ดของที่เก็บ ESP-IDF files และสคริปต์การคอมไพล์ ในขณะที่ส่วนหลังส่วนใหญ่จะเก็บกลุ่มเครื่องมือการคอมไพล์และซอฟต์แวร์อื่น ๆ ความคุ้นเคยกับทั้งสองไดเร็กทอรีนี้จะช่วยให้นักพัฒนาใช้ทรัพยากรที่มีอยู่ได้ดีขึ้นและเร่งกระบวนการพัฒนาให้เร็วขึ้น โครงสร้างไดเร็กทอรีของ ESP-IDF อธิบายไว้ด้านล่าง:
(1) ไดเร็กทอรีรหัสที่เก็บ ESP-IDF (/esp/esp-idf) ดังแสดงในรูปที่ 4.2
ก. ส่วนประกอบไดเร็กทอรีคอมโพเนนต์
ไดเร็กทอรีหลักนี้รวมส่วนประกอบซอฟต์แวร์ที่จำเป็นจำนวนมากของ ESP-IDF ไม่สามารถคอมไพล์โค้ดโปรเจ็กต์ได้โดยไม่ต้องอาศัยส่วนประกอบภายในไดเร็กทอรีนี้ รวมถึงการสนับสนุนไดรเวอร์สำหรับชิป Espressif ต่างๆ จากอินเทอร์เฟซไลบรารี LL และไลบรารี HAL สำหรับอุปกรณ์ต่อพ่วงไปจนถึงไดรเวอร์และ Virtual ระดับบน File การสนับสนุนเลเยอร์ระบบ (VFS) นักพัฒนาสามารถเลือกส่วนประกอบที่เหมาะสมในระดับต่างๆ ตามความต้องการในการพัฒนาของพวกเขา ESP-IDF ยังรองรับสแต็กโปรโตคอลเครือข่ายมาตรฐานหลายชุด เช่น TCP/IP, HTTP, MQTT, WebSocket ฯลฯ นักพัฒนาสามารถใช้อินเทอร์เฟซที่คุ้นเคย เช่น Socket เพื่อสร้างแอปพลิเคชันเครือข่าย ส่วนประกอบให้ความเข้าใจ-
34 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

รูปที่ 4.2. ไดเรกทอรีรหัสที่เก็บ ESP-IDF
ฟังก์ชันการทำงานที่หลากหลายและสามารถรวมเข้ากับแอปพลิเคชันได้อย่างง่ายดาย ช่วยให้นักพัฒนามุ่งเน้นไปที่ตรรกะทางธุรกิจเพียงอย่างเดียว ส่วนประกอบทั่วไปบางส่วนได้แก่: · ไดรเวอร์: ส่วนประกอบนี้ประกอบด้วยโปรแกรมไดรเวอร์ต่อพ่วงสำหรับ Espressif ต่างๆ
ซีรีส์ชิป เช่น GPIO, I2C, SPI, UART, LEDC (PWM) ฯลฯ โปรแกรมไดรเวอร์อุปกรณ์ต่อพ่วงในส่วนประกอบนี้นำเสนออินเทอร์เฟซนามธรรมที่ไม่ขึ้นกับชิป อุปกรณ์ต่อพ่วงแต่ละอันมีส่วนหัวร่วมกัน file (เช่น gpio.h) ทำให้ไม่จำเป็นต้องจัดการกับคำถามการสนับสนุนเฉพาะชิปต่างๆ · esp_wifi: Wi-Fi ถือเป็นอุปกรณ์ต่อพ่วงพิเศษ โดยถือเป็นส่วนประกอบที่แยกจากกัน ประกอบด้วย API หลายตัว เช่น การเริ่มต้นโหมดไดรเวอร์ Wi-Fi ต่างๆ การกำหนดค่าพารามิเตอร์ และการประมวลผลเหตุการณ์ ฟังก์ชันบางอย่างของส่วนประกอบนี้มีให้ในรูปแบบของไลบรารีลิงก์แบบคงที่ ESP-IDF ยังมีเอกสารไดรเวอร์ที่ครอบคลุมเพื่อความสะดวกในการใช้งาน
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 35

· freertos: องค์ประกอบนี้ประกอบด้วยโค้ด FreeRTOS ที่สมบูรณ์ นอกเหนือจากการให้การสนับสนุนระบบปฏิบัติการนี้อย่างครอบคลุมแล้ว Espressif ยังขยายการรองรับชิปแบบดูอัลคอร์อีกด้วย สำหรับชิปแบบดูอัลคอร์ เช่น ESP32 และ ESP32-S3 ผู้ใช้สามารถสร้างงานบนคอร์เฉพาะได้
ข. เอกสารไดเร็กทอรีเอกสาร
ไดเร็กทอรีนี้ประกอบด้วยเอกสารการพัฒนาที่เกี่ยวข้องกับ ESP-IDF รวมถึงคู่มือเริ่มต้นใช้งาน, คู่มืออ้างอิง API, คู่มือการพัฒนา ฯลฯ
หมายเหตุ หลังจากที่รวบรวมโดยเครื่องมืออัตโนมัติแล้ว เนื้อหาของไดเร็กทอรีนี้จะถูกปรับใช้ที่ https://docs.espressif.com/projects/esp-idf โปรดตรวจสอบให้แน่ใจว่าได้เปลี่ยนเป้าหมายเอกสารเป็น ESP32-C3 และเลือกเวอร์ชัน ESP-IDF ที่ระบุ
ค. เครื่องมือเครื่องมือสคริปต์
ไดเร็กทอรีนี้ประกอบด้วยเครื่องมือส่วนหน้าการคอมไพล์ที่ใช้กันทั่วไป เช่น idf.py และเครื่องมือเทอร์มินัลมอนิเตอร์ idf_monitor.py เป็นต้น ไดเร็กทอรีย่อย cmake ยังมีสคริปต์หลักด้วย fileของระบบการคอมไพล์ ซึ่งทำหน้าที่เป็นรากฐานสำหรับการนำกฎการคอมไพล์ ESP-IDF ไปใช้ เมื่อเพิ่มตัวแปรสภาพแวดล้อม เนื้อหาภายในไดเร็กทอรี tools จะถูกเพิ่มไปยังตัวแปรสภาพแวดล้อมของระบบ ทำให้สามารถดำเนินการ idf.py ได้โดยตรงภายใต้เส้นทางโปรเจ็กต์
ง. อดีตampไดเร็กทอรีโปรแกรมเช่นampเลส
ไดเร็กทอรีนี้ประกอบด้วยคอลเลกชันมากมายของ ESP-IDF เช่นampโปรแกรมที่สาธิตการใช้ส่วนประกอบ API อดีตamples ถูกจัดเป็นไดเร็กทอรีย่อยต่างๆ ตามหมวดหมู่:
· เริ่มต้นใช้งาน: ไดเร็กทอรีย่อยนี้รวมถึงรายการระดับเริ่มต้น เช่นampเช่น "สวัสดีชาวโลก" และ "กะพริบ" เพื่อช่วยให้ผู้ใช้เข้าใจพื้นฐาน
· บลูทูธ: คุณสามารถค้นหาอุปกรณ์ที่เกี่ยวข้องกับบลูทูธได้ เช่นampที่นี่ รวมถึง Bluetooth LE Mesh, Bluetooth LE HID, BluFi และอื่นๆ อีกมากมาย
· wifi: ไดเรกทอรีย่อยนี้เน้นที่ Wi-Fi เช่นampรวมถึงโปรแกรมพื้นฐาน เช่น Wi-Fi SoftAP, Wi-Fi Station, espnow รวมถึงโปรโตคอลการสื่อสารที่เป็นกรรมสิทธิ์ เช่นamples จาก Espressif นอกจากนี้ยังมีเลเยอร์แอปพลิเคชันหลายชั้นด้วย เช่นampขึ้นอยู่กับ Wi-Fi เช่น Iperf, Sniffer และ Smart Config
· อุปกรณ์ต่อพ่วง: ไดเร็กทอรีย่อยที่กว้างขวางนี้ถูกแบ่งออกเป็นโฟลเดอร์ย่อยจำนวนมากตามชื่ออุปกรณ์ต่อพ่วง ส่วนใหญ่ประกอบด้วยไดรเวอร์อุปกรณ์ต่อพ่วงเช่นamples สำหรับชิป Espressif โดยแต่ละอันample นำเสนอ sub-ex หลายตัวampเลส์ ตัวอย่างเช่น ไดเร็กทอรีย่อย gpio มีไดเร็กทอรี ex สองตัวampไฟล์: แป้นพิมพ์เมทริกซ์ GPIO และ GPIO สิ่งสำคัญคือต้องทราบว่าไม่ใช่ทั้งหมดเช่นampไฟล์ในไดเร็กทอรีนี้ใช้ได้กับ ESP32-C3
36 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

เช่นampเลอ อดีตampไฟล์ใน usb/host ใช้ได้กับอุปกรณ์ต่อพ่วงที่มีฮาร์ดแวร์โฮสต์ USB เท่านั้น (เช่น ESP32-S3) และ ESP32-C3 ไม่มีอุปกรณ์ต่อพ่วงนี้ โดยทั่วไประบบการคอมไพล์จะแจ้งเตือนเมื่อกำหนดเป้าหมาย อ่านมี file ของอดีตแต่ละคนample แสดงรายการชิปที่รองรับ · โปรโตคอล: ไดเร็กทอรีย่อยนี้ประกอบด้วย exampสำหรับโปรโตคอลการสื่อสารต่างๆ รวมถึง MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP ครอบคลุมโปรโตคอลการสื่อสารที่หลากหลาย เช่นampสิ่งที่จำเป็นสำหรับการพัฒนา IoT · การจัดเตรียม: ที่นี่ คุณจะพบกับการจัดเตรียม เช่นampสำหรับวิธีการต่างๆ เช่น การจัดเตรียม Wi-Fi และการจัดเตรียม Bluetooth LE · ระบบ: ไดเร็กทอรีย่อยนี้รวมถึงการดีบักระบบ เช่นampไฟล์ (เช่น การติดตามสแต็ก การติดตามรันไทม์ การตรวจสอบงาน) การจัดการพลังงาน เช่นampไฟล์ (เช่น โหมดสลีปต่างๆ โปรเซสเซอร์ร่วม) และอื่นๆampเกี่ยวข้องกับส่วนประกอบของระบบทั่วไป เช่น คอนโซลเทอร์มินัล ลูปเหตุการณ์ และตัวจับเวลาระบบ · ที่เก็บข้อมูล: ภายในไดเร็กทอรีย่อยนี้ คุณจะค้นพบเช่นampทั้งหมดเลย file ระบบและกลไกการจัดเก็บข้อมูลที่รองรับโดย ESP-IDF (เช่น การอ่านและการเขียนแฟลช การ์ด SD และสื่อบันทึกข้อมูลอื่นๆ) รวมถึงตัวอย่างampพื้นที่จัดเก็บข้อมูลแบบไม่ลบเลือน (NVS), FatFS, SPIFFS และอื่นๆ file การทำงานของระบบ · ความปลอดภัย: ไดเร็กทอรีย่อยนี้มี exampที่เกี่ยวข้องกับการเข้ารหัสแฟลช (2) ไดเร็กทอรีลูกโซ่เครื่องมือการคอมไพล์ ESP-IDF (/.espressif) ดังแสดงในรูปที่ 4.3
รูปที่ 4.3. ไดเร็กทอรีลูกโซ่เครื่องมือคอมไพล์ ESP-IDF
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 37

ก. dist ไดเร็กทอรีการแจกจ่ายซอฟต์แวร์
กลุ่มเครื่องมือ ESP-IDF และซอฟต์แวร์อื่นๆ ได้รับการเผยแพร่ในรูปแบบของแพ็คเกจที่บีบอัด ในระหว่างกระบวนการติดตั้ง เครื่องมือการติดตั้งจะดาวน์โหลดแพ็คเกจที่บีบอัดไปยังไดเร็กทอรี dist ก่อน จากนั้นจึงแตกไฟล์ไปยังไดเร็กทอรีที่ระบุ เมื่อการติดตั้งเสร็จสมบูรณ์ เนื้อหาในไดเร็กทอรีนี้สามารถลบออกได้อย่างปลอดภัย
ข. ไดเร็กทอรีสภาพแวดล้อมเสมือน Python python env
ESP-IDF เวอร์ชันต่างๆ จะขึ้นอยู่กับเวอร์ชันเฉพาะของแพ็คเกจ Python การติดตั้งแพ็คเกจเหล่านี้โดยตรงบนโฮสต์เดียวกันอาจทำให้เกิดข้อขัดแย้งระหว่างเวอร์ชันแพ็คเกจได้ เพื่อแก้ไขปัญหานี้ ESP-IDF ใช้สภาพแวดล้อมเสมือนของ Python เพื่อแยกเวอร์ชันแพ็คเกจต่างๆ ด้วยกลไกนี้ นักพัฒนาสามารถติดตั้ง ESP-IDF ได้หลายเวอร์ชันบนโฮสต์เดียวกัน และสลับระหว่างเวอร์ชันต่างๆ ได้อย่างง่ายดายโดยการนำเข้าตัวแปรสภาพแวดล้อมที่แตกต่างกัน
ค. เครื่องมือไดเร็กทอรีลูกโซ่เครื่องมือคอมไพล์ ESP-IDF
ไดเร็กทอรีนี้ส่วนใหญ่ประกอบด้วยเครื่องมือการคอมไพล์ข้ามที่จำเป็นสำหรับการคอมไพล์โปรเจ็กต์ ESP-IDF เช่น เครื่องมือ CMake, เครื่องมือสร้างนินจา และกลุ่มเครื่องมือ gcc ที่สร้างโปรแกรมปฏิบัติการขั้นสุดท้าย นอกจากนี้ ไดเร็กทอรีนี้ยังเป็นที่ตั้งของไลบรารีมาตรฐานของภาษา C/C++ พร้อมด้วยส่วนหัวที่เกี่ยวข้อง fileส. หากโปรแกรมอ้างอิงส่วนหัวของระบบ file เช่น #รวม ห่วงโซ่เครื่องมือการคอมไพล์จะค้นหา stdio.h file ภายในไดเร็กทอรีนี้
4.2 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF
สภาพแวดล้อมการพัฒนา ESP-IDF รองรับระบบปฏิบัติการกระแสหลัก เช่น Windows, Linux และ macOS ส่วนนี้จะแนะนำวิธีการตั้งค่าสภาพแวดล้อมการพัฒนาในแต่ละระบบ ขอแนะนำให้พัฒนา ESP32-C3 บนระบบ Linux ซึ่งจะแนะนำรายละเอียดที่นี่ คำแนะนำมากมายใช้ได้กับทุกแพลตฟอร์มเนื่องจากความคล้ายคลึงกันของเครื่องมือการพัฒนา ดังนั้นจึงแนะนำให้อ่านเนื้อหาในส่วนนี้อย่างละเอียด
หมายเหตุ คุณสามารถอ้างอิงเอกสารออนไลน์ได้ที่ https://bookc3.espressif.com/esp32c3 ซึ่งมีคำสั่งที่กล่าวถึงในส่วนนี้
4.2.1 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Linux
เครื่องมือการพัฒนาและการดีบัก GNU ที่จำเป็นสำหรับสภาพแวดล้อมการพัฒนา ESP-IDF นั้นมาจากระบบ Linux นอกจากนี้ เทอร์มินัลบรรทัดคำสั่งใน Linux ยังทรงพลังและใช้งานง่าย ทำให้เป็นตัวเลือกที่เหมาะสำหรับการพัฒนา ESP32-C3 คุณสามารถ
38 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

เลือกการกระจาย Linux ที่คุณต้องการ แต่เราแนะนำให้ใช้ Ubuntu หรือระบบที่ใช้ Debian อื่นๆ ส่วนนี้ให้คำแนะนำเกี่ยวกับการตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Ubuntu 20.04
1. ติดตั้งแพ็คเกจที่จำเป็น
เปิดเทอร์มินัลใหม่และดำเนินการคำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจที่จำเป็นทั้งหมด คำสั่งจะข้ามแพ็คเกจที่ติดตั้งไว้แล้วโดยอัตโนมัติ
$ sudo apt-get ติดตั้ง git wget flex วัวกระทิง gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
เคล็ดลับ คุณต้องใช้บัญชีผู้ดูแลระบบและรหัสผ่านสำหรับคำสั่งข้างต้น ตามค่าเริ่มต้น จะไม่มีการแสดงข้อมูลเมื่อป้อนรหัสผ่าน เพียงกดปุ่ม "Enter" เพื่อดำเนินการตามขั้นตอนต่อไป
Git เป็นเครื่องมือจัดการโค้ดสำคัญใน ESP-IDF หลังจากตั้งค่าสภาพแวดล้อมการพัฒนาสำเร็จแล้ว คุณสามารถใช้คำสั่ง git log ได้ view การเปลี่ยนแปลงโค้ดทั้งหมดที่เกิดขึ้นตั้งแต่การสร้าง ESP-IDF นอกจากนี้ Git ยังใช้ใน ESP-IDF เพื่อยืนยันข้อมูลเวอร์ชัน ซึ่งจำเป็นสำหรับการติดตั้งสายเครื่องมือที่ถูกต้องซึ่งสอดคล้องกับเวอร์ชันเฉพาะ นอกจาก Git แล้ว เครื่องมือระบบที่สำคัญอื่นๆ ยังรวมถึง Python ESP-IDF รวมสคริปต์อัตโนมัติจำนวนมากที่เขียนด้วย Python เครื่องมือต่างๆ เช่น CMake, Ninja-build และ Ccache ถูกนำมาใช้กันอย่างแพร่หลายในโปรเจ็กต์ C/C++ และทำหน้าที่เป็นเครื่องมือในการคอมไพล์โค้ดเริ่มต้นและสร้างเครื่องมือใน ESP-IDF libusb-1.0-0 และ dfu-util เป็นไดรเวอร์หลักที่ใช้สำหรับการสื่อสารแบบอนุกรม USB และการเบิร์นเฟิร์มแวร์ เมื่อติดตั้งแพ็คเกจซอฟต์แวร์แล้ว คุณสามารถใช้ apt show ได้ คำสั่งเพื่อรับคำอธิบายโดยละเอียดของแต่ละแพ็คเกจ สำหรับเช่นampให้ใช้ apt show git เพื่อพิมพ์ข้อมูลคำอธิบายสำหรับเครื่องมือ Git
ถาม: จะทำอย่างไรหากไม่รองรับเวอร์ชัน Python ตอบ: ESP-IDF v4.3 ต้องใช้เวอร์ชัน Python ที่ไม่ต่ำกว่า v3.6 สำหรับ Ubuntu เวอร์ชันเก่า โปรดดาวน์โหลดและติดตั้ง Python เวอร์ชันที่สูงกว่าด้วยตนเอง และตั้งค่า Python3 เป็นสภาพแวดล้อม Python เริ่มต้น คุณสามารถดูคำแนะนำโดยละเอียดได้โดยค้นหาคีย์เวิร์ด update-alternatives python
2. ดาวน์โหลดโค้ดที่เก็บ ESP-IDF
เปิดเทอร์มินัลและสร้างโฟลเดอร์ชื่อ esp ในโฮมไดเร็กตอรี่ของคุณโดยใช้คำสั่ง mkdir คุณสามารถเลือกชื่ออื่นสำหรับโฟลเดอร์ได้หากต้องการ ใช้คำสั่ง cd เพื่อเข้าสู่โฟลเดอร์
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 39

$ mkdir -p /esp $ ซีดี /esp
ใช้คำสั่ง git clone เพื่อดาวน์โหลดโค้ดที่เก็บ ESP-IDF ดังที่แสดงด้านล่าง:
$ git clone -b v4.3.2 – แบบเรียกซ้ำ https://github.com/espressif/esp-idf.git
ในคำสั่งด้านบน พารามิเตอร์ -b v4.3.2 ระบุเวอร์ชันที่จะดาวน์โหลด (ในกรณีนี้คือเวอร์ชัน 4.3.2) พารามิเตอร์ –recursive ทำให้แน่ใจว่าที่เก็บข้อมูลย่อยทั้งหมดของ ESP-IDF ถูกดาวน์โหลดซ้ำ ข้อมูลเกี่ยวกับที่เก็บย่อยสามารถพบได้ใน .gitmodules file.
3. ติดตั้งห่วงโซ่เครื่องมือการพัฒนา ESP-IDF
Espressif มีสคริปต์ install.sh อัตโนมัติเพื่อดาวน์โหลดและติดตั้ง tool chain สคริปต์นี้จะตรวจสอบเวอร์ชัน ESP-IDF ปัจจุบันและสภาพแวดล้อมระบบปฏิบัติการ จากนั้นดาวน์โหลดและติดตั้งแพ็คเกจเครื่องมือ Python และกลุ่มเครื่องมือการคอมไพล์เวอร์ชันที่เหมาะสม เส้นทางการติดตั้งเริ่มต้นสำหรับสายเครื่องมือคือ /.espressif สิ่งที่คุณต้องทำคือไปที่ไดเร็กทอรี esp-idf และรัน install.sh
$ ซีดี /esp/esp-idf $ ./install.sh
หากคุณติดตั้งห่วงโซ่เครื่องมือสำเร็จ หน้าจอจะแสดง:
เสร็จเรียบร้อย!
ณ จุดนี้ คุณได้ตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF เรียบร้อยแล้ว
4.2.2 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Windows
1. ดาวน์โหลดตัวติดตั้งเครื่องมือ ESP-IDF
เคล็ดลับ ขอแนะนำให้ตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Windows 10 ขึ้นไป คุณสามารถดาวน์โหลดตัวติดตั้งได้จาก https://dl.espressif.com/dl/esp-idf/ โปรแกรมติดตั้งยังเป็นซอฟต์แวร์โอเพ่นซอร์สและสามารถซอร์สโค้ดได้ viewแก้ไขที่ https: //github.com/espressif/idf-installer
· ตัวติดตั้งเครื่องมือ ESP-IDF ออนไลน์
โปรแกรมติดตั้งนี้มีขนาดค่อนข้างเล็ก โดยมีขนาดประมาณ 4 MB และแพ็คเกจและโค้ดอื่นๆ จะถูกดาวน์โหลดในระหว่างขั้นตอนการติดตั้ง แอดวานtage ของตัวติดตั้งออนไลน์คือไม่เพียงแต่สามารถดาวน์โหลดแพ็คเกจซอฟต์แวร์และโค้ดได้ตามความต้องการในระหว่างกระบวนการติดตั้ง แต่ยังช่วยให้สามารถติดตั้ง ESP-IDF ที่มีอยู่ทั้งหมดและโค้ด GitHub สาขาล่าสุด (เช่นสาขาหลัก) . ข้อเสียtage คือต้องมีการเชื่อมต่อเครือข่ายในระหว่างขั้นตอนการติดตั้ง ซึ่งอาจทำให้การติดตั้งล้มเหลวเนื่องจากปัญหาเครือข่าย
40 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

· ตัวติดตั้งเครื่องมือ ESP-IDF แบบออฟไลน์ ตัวติดตั้งนี้มีขนาดใหญ่กว่า ขนาดประมาณ 1 GB และมีแพ็คเกจซอฟต์แวร์และโค้ดทั้งหมดที่จำเป็นสำหรับการตั้งค่าสภาพแวดล้อม แอดวานหลักtage ของตัวติดตั้งแบบออฟไลน์คือสามารถใช้บนคอมพิวเตอร์ที่ไม่มีอินเทอร์เน็ต และโดยทั่วไปจะมีอัตราความสำเร็จในการติดตั้งที่สูงกว่า ควรสังเกตว่าตัวติดตั้งแบบออฟไลน์สามารถติดตั้ง ESP-IDF รุ่นเสถียรที่ระบุโดย v*.* หรือ v*.*.* เท่านั้น
2. เรียกใช้ตัวติดตั้งเครื่องมือ ESP-IDF หลังจากดาวน์โหลดตัวติดตั้งเวอร์ชันที่เหมาะสมแล้ว (ใช้ ESP-IDF Tools Offline 4.3.2 เป็นตัวอย่างampที่นี่) ดับเบิลคลิกที่ exe file เพื่อเปิดอินเทอร์เฟซการติดตั้ง ESP-IDF ข้อมูลต่อไปนี้สาธิตวิธีการติดตั้ง ESP-IDF เวอร์ชันเสถียร v4.3.2 โดยใช้ตัวติดตั้งแบบออฟไลน์
(1) ในอินเทอร์เฟซ “เลือกภาษาการติดตั้ง” ที่แสดงในรูปที่ 4.4 เลือกภาษาที่จะใช้จากรายการแบบเลื่อนลง
รูปที่ 4.4. อินเทอร์เฟซ “เลือกภาษาการติดตั้ง” (2) หลังจากเลือกภาษาแล้ว คลิก “ตกลง” เพื่อแสดงอินเทอร์เฟซ “ข้อตกลงใบอนุญาต”
(ดูรูปที่ 4.5) หลังจากอ่านข้อตกลงใบอนุญาตการติดตั้งอย่างละเอียดแล้ว ให้เลือก "ฉันยอมรับข้อตกลง" แล้วคลิก "ถัดไป"
รูปที่ 4.5. อินเทอร์เฟซ “ข้อตกลงใบอนุญาต” บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 41

(3) เรื่องview การกำหนดค่าระบบในอินเทอร์เฟซ “การตรวจสอบระบบก่อนการติดตั้ง” (ดูรูปที่ 4.6) ตรวจสอบเวอร์ชัน Windows และข้อมูลซอฟต์แวร์ป้องกันไวรัสที่ติดตั้ง คลิก "ถัดไป" หากรายการการกำหนดค่าทั้งหมดเป็นปกติ หรือคลิก "บันทึกฉบับเต็ม" เพื่อดูวิธีแก้ปัญหาตามรายการหลักได้
รูปที่ 4.6. เคล็ดลับอินเทอร์เฟซ “การตรวจสอบระบบก่อนการติดตั้ง”
คุณสามารถส่งบันทึกไปที่ https://github.com/espressif/idf-installer/issues เพื่อขอความช่วยเหลือ (4) เลือกไดเร็กทอรีการติดตั้ง ESP-IDF ที่นี่ ให้เลือก D:/.espressif ดังที่แสดงใน
รูปที่ 4.7 และคลิก “ถัดไป” โปรดทราบว่า .espressif ที่นี่เป็นไดเร็กทอรีที่ซ่อนอยู่ หลังจากการติดตั้งเสร็จสิ้นคุณสามารถ view เนื้อหาเฉพาะของไดเร็กทอรีนี้โดยการเปิด file ผู้จัดการและแสดงรายการที่ซ่อนอยู่
รูปที่ 4.7. เลือกไดเรกทอรีการติดตั้ง ESP-IDF 42 การผจญภัยไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

(5) ตรวจสอบส่วนประกอบที่ต้องติดตั้ง ดังแสดงในรูปที่ 4.8 ขอแนะนำให้ใช้ตัวเลือกเริ่มต้น นั่นคือ ทำการติดตั้งให้เสร็จสิ้น จากนั้นคลิก "ถัดไป"
รูปที่ 4.8. เลือกส่วนประกอบที่จะติดตั้ง (6) ยืนยันส่วนประกอบที่จะติดตั้งแล้วคลิก "ติดตั้ง" เพื่อเริ่มการติดตั้งอัตโนมัติ
กระบวนการหยุด ดังแสดงในรูปที่ 4.9 กระบวนการติดตั้งอาจใช้เวลาหลายสิบนาที และแถบความคืบหน้าของกระบวนการติดตั้งแสดงในรูปที่ 4.10 กรุณาอดทนรอ.
รูปที่ 4.9. การเตรียมการติดตั้ง (7) หลังจากการติดตั้งเสร็จสิ้น แนะนำให้ทำเครื่องหมายที่ “Register the ESP-IDF”
เครื่องมือที่ปฏิบัติการได้เป็นข้อยกเว้นของ Windows Defender…” เพื่อป้องกันไม่ให้ซอฟต์แวร์ป้องกันไวรัสลบ fileส. การเพิ่มรายการยกเว้นยังสามารถข้ามการสแกนบ่อยครั้งโดยโปรแกรมป้องกันไวรัสได้
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 43

รูปที่ 4.10. ซอฟต์แวร์แถบความคืบหน้าในการติดตั้ง ช่วยปรับปรุงประสิทธิภาพการคอมไพล์โค้ดของระบบ Windows อย่างมาก คลิก “เสร็จสิ้น” เพื่อเสร็จสิ้นการติดตั้งสภาพแวดล้อมการพัฒนา ดังแสดงในรูปที่ 4.11 คุณสามารถเลือกทำเครื่องหมายที่ “เรียกใช้สภาพแวดล้อม PowerShell ESP-IDF” หรือ “เรียกใช้พร้อมรับคำสั่ง ESP-IDF” รันหน้าต่างการคอมไพล์โดยตรงหลังการติดตั้งเพื่อให้แน่ใจว่าสภาพแวดล้อมการพัฒนาทำงานได้ตามปกติ
รูปที่ 4.11. การติดตั้งเสร็จสมบูรณ์ (8) เปิดสภาพแวดล้อมการพัฒนาที่ติดตั้งในรายการโปรแกรม (ESP-IDF 4.3
เทอร์มินัล CMD หรือ ESP-IDF 4.3 PowerShell ดังแสดงในรูปที่ 4.12) และตัวแปรสภาพแวดล้อม ESP-IDF จะถูกเพิ่มโดยอัตโนมัติเมื่อทำงานในเทอร์มินัล หลังจากนั้นคุณสามารถใช้คำสั่ง idf.py เพื่อดำเนินการได้ ESP-IDF 4.3 CMD ที่เปิดอยู่จะแสดงในรูปที่ 4.13 44 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

รูปที่ 4.12. ติดตั้งสภาพแวดล้อมการพัฒนาแล้ว
รูปที่ 4.13. ESP-IDF 4.3 ซีเอ็มดี
4.2.3 การตั้งค่าสภาพแวดล้อมการพัฒนา ESP-IDF บน Mac
กระบวนการติดตั้งสภาพแวดล้อมการพัฒนา ESP-IDF บนระบบ Mac นั้นเหมือนกับกระบวนการบนระบบ Linux คำสั่งสำหรับการดาวน์โหลดโค้ดที่เก็บและการติดตั้ง tool chain นั้นเหมือนกันทุกประการ เฉพาะคำสั่งสำหรับการติดตั้งแพ็คเกจการพึ่งพาเท่านั้นที่แตกต่างกันเล็กน้อย 1. ติดตั้งแพ็คเกจการพึ่งพา เปิดเทอร์มินัลและติดตั้ง pip ซึ่งเป็นเครื่องมือการจัดการแพ็คเกจ Python โดยการรันคำสั่งต่อไปนี้:
% sudo ติดตั้งง่าย pip
ติดตั้ง Homebrew ซึ่งเป็นเครื่องมือจัดการแพ็คเกจสำหรับ macOS โดยการรันคำสั่งต่อไปนี้:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
ติดตั้งแพ็คเกจการพึ่งพาที่จำเป็นโดยการรันคำสั่งต่อไปนี้:
% ชง python3 ติดตั้ง cmake ninja ccache dfu-util
2. ดาวน์โหลดโค้ดที่เก็บ ESP-IDF ทำตามคำแนะนำที่ให้ไว้ในส่วน 4.2.1 เพื่อดาวน์โหลดโค้ดที่เก็บ ESP-IDF ขั้นตอนจะเหมือนกับการดาวน์โหลดบนระบบ Linux
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 45

3. ติดตั้งห่วงโซ่เครื่องมือการพัฒนา ESP-IDF
ทำตามคำแนะนำที่ให้ไว้ในส่วน 4.2.1 เพื่อติดตั้งกลุ่มเครื่องมือการพัฒนา ESP-IDF ขั้นตอนจะเหมือนกับการติดตั้งบนระบบ Linux
4.2.4 การติดตั้ง VS Code
ตามค่าเริ่มต้น ESP-IDF SDK ไม่มีเครื่องมือแก้ไขโค้ด (แม้ว่าตัวติดตั้ง ESP-IDF ล่าสุดสำหรับ Windows จะเสนอตัวเลือกในการติดตั้ง ESP-IDF Eclipse) คุณสามารถใช้เครื่องมือแก้ไขข้อความที่คุณเลือกเพื่อแก้ไขโค้ดแล้วคอมไพล์โดยใช้คำสั่งเทอร์มินัล
เครื่องมือแก้ไขโค้ดยอดนิยมอย่างหนึ่งคือ VS Code (Visual Studio Code) ซึ่งเป็นโปรแกรมแก้ไขโค้ดฟรีที่มีคุณลักษณะหลากหลายพร้อมอินเทอร์เฟซที่ใช้งานง่าย มันมีหลากหลาย plugins ที่มีฟังก์ชันต่างๆ เช่น การนำทางโค้ด การเน้นไวยากรณ์ การควบคุมเวอร์ชัน Git และการรวมเทอร์มินัล นอกจากนี้ Espressif ยังได้พัฒนาปลั๊กอินเฉพาะที่เรียกว่า Espressif IDF สำหรับ VS Code ซึ่งช่วยให้การกำหนดค่าโครงการและการดีบักง่ายขึ้น
คุณสามารถใช้คำสั่งโค้ดในเทอร์มินัลเพื่อเปิดโฟลเดอร์ปัจจุบันใน VS Code ได้อย่างรวดเร็ว หรือคุณสามารถใช้ทางลัด Ctrl+ เพื่อเปิดคอนโซลเทอร์มินัลเริ่มต้นของระบบภายใน VS Code
TIPS ขอแนะนำให้ใช้ VS Code ในการพัฒนาโค้ด ESP32-C3 ดาวน์โหลดและติดตั้ง VS Code เวอร์ชันล่าสุดได้ที่ https://code.visualstudio.com/
4.2.5 ข้อมูลเบื้องต้นเกี่ยวกับสภาพแวดล้อมการพัฒนาของบุคคลที่สาม
นอกเหนือจากสภาพแวดล้อมการพัฒนาอย่างเป็นทางการของ ESP-IDF ซึ่งใช้ภาษา C เป็นหลักแล้ว ESP32-C3 ยังสนับสนุนภาษาการเขียนโปรแกรมหลักอื่นๆ และสภาพแวดล้อมการพัฒนาของบุคคลที่สามที่หลากหลาย ตัวเลือกที่โดดเด่นบางประการได้แก่:
Arduino: แพลตฟอร์มโอเพ่นซอร์สสำหรับทั้งฮาร์ดแวร์และซอฟต์แวร์ รองรับไมโครคอนโทรลเลอร์หลากหลายชนิด รวมถึง ESP32-C3
ใช้ภาษา C++ และนำเสนอ API ที่เรียบง่ายและเป็นมาตรฐาน ซึ่งโดยทั่วไปเรียกว่าภาษา Arduino Arduino ถูกนำมาใช้กันอย่างแพร่หลายในการพัฒนาต้นแบบและบริบททางการศึกษา มีแพ็คเกจซอฟต์แวร์ที่ขยายได้และ IDE ที่ช่วยให้คอมไพล์และแฟลชได้ง่าย
MicroPython: ล่ามภาษา Python 3 ที่ออกแบบมาเพื่อทำงานบนแพลตฟอร์มไมโครคอนโทรลเลอร์แบบฝัง
ด้วยภาษาสคริปต์ที่เรียบง่าย สามารถเข้าถึงทรัพยากรต่อพ่วงของ ESP32-C3 ได้โดยตรง (เช่น UART, SPI และ I2C) และฟังก์ชันการสื่อสาร (เช่น Wi-Fi และ Bluetooth LE)
46 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

สิ่งนี้ช่วยลดความยุ่งยากในการโต้ตอบกับฮาร์ดแวร์ MicroPython เมื่อรวมกับไลบรารีการดำเนินการทางคณิตศาสตร์ที่ครอบคลุมของ Python ช่วยให้สามารถใช้งานอัลกอริธึมที่ซับซ้อนบน ESP32-C3 ได้ ซึ่งช่วยอำนวยความสะดวกในการพัฒนาแอปพลิเคชันที่เกี่ยวข้องกับ AI เนื่องจากเป็นภาษาสคริปต์ จึงไม่จำเป็นต้องคอมไพล์ซ้ำ สามารถปรับเปลี่ยนได้และสามารถดำเนินการสคริปต์ได้โดยตรง
NodeMCU: ล่ามภาษา LUA ที่พัฒนาขึ้นสำหรับชิปซีรีส์ ESP
รองรับฟังก์ชันต่อพ่วงเกือบทั้งหมดของชิป ESP และมีน้ำหนักเบากว่า MicroPython เช่นเดียวกับ MicroPython NodeMCU ใช้ภาษาสคริปต์ ทำให้ไม่จำเป็นต้องคอมไพล์ซ้ำ
นอกจากนี้ ESP32-C3 ยังรองรับระบบปฏิบัติการ NuttX และ Zephyr อีกด้วย NuttX เป็นระบบปฏิบัติการแบบเรียลไทม์ที่มีอินเทอร์เฟซที่รองรับ POSIX ซึ่งช่วยเพิ่มความสามารถในการพกพาแอปพลิเคชัน Zephyr เป็นระบบปฏิบัติการแบบเรียลไทม์ขนาดเล็กที่ออกแบบมาสำหรับแอปพลิเคชัน IoT โดยเฉพาะ ประกอบด้วยไลบรารีซอฟต์แวร์จำนวนมากที่จำเป็นในการพัฒนา IoT และค่อยๆ พัฒนาไปสู่ระบบนิเวศซอฟต์แวร์ที่ครอบคลุม
หนังสือเล่มนี้ไม่ได้ให้คำแนะนำการติดตั้งโดยละเอียดสำหรับสภาพแวดล้อมการพัฒนาที่กล่าวมาข้างต้น คุณสามารถติดตั้งสภาพแวดล้อมการพัฒนาได้ตามความต้องการของคุณโดยปฏิบัติตามเอกสารประกอบและคำแนะนำที่เกี่ยวข้อง
4.3 ระบบรวบรวม ESP-IDF
4.3.1 แนวคิดพื้นฐานของระบบการรวบรวม
โครงการ ESP-IDF คือชุดของโปรแกรมหลักที่มีฟังก์ชันรายการและส่วนประกอบการทำงานอิสระหลายรายการ สำหรับเช่นample เป็นโปรเจ็กต์ที่ควบคุมสวิตช์ LED โดยส่วนใหญ่ประกอบด้วยรายการหลักของโปรแกรมและส่วนประกอบไดรเวอร์ที่ควบคุม GPIO หากคุณต้องการใช้งานรีโมทคอนโทรล LED คุณต้องเพิ่ม Wi-Fi, สแต็กโปรโตคอล TCP/IP เป็นต้น
ระบบการคอมไพล์สามารถคอมไพล์ ลิงก์ และสร้างปฏิบัติการได้ files (.bin) สำหรับโค้ดผ่านชุดกฎการสร้าง ระบบการคอมไพล์ของ ESP-IDF v4.0 และเวอร์ชันที่สูงกว่านั้นใช้ CMake เป็นค่าเริ่มต้น และสคริปต์การคอมไพล์ CMakeLists.txt สามารถใช้เพื่อควบคุมพฤติกรรมการคอมไพล์ของโค้ด นอกเหนือจากการสนับสนุนไวยากรณ์พื้นฐานของ CMake แล้ว ระบบการคอมไพล์ ESP-IDF ยังกำหนดชุดของกฎการคอมไพล์เริ่มต้นและฟังก์ชัน CMake และคุณสามารถเขียนสคริปต์การคอมไพล์ด้วยคำสั่งง่ายๆ
4.3.2 โครงการ File โครงสร้าง
โปรเจ็กต์คือโฟลเดอร์ที่มีรายการหลักของโปรแกรม ส่วนประกอบที่ผู้ใช้กำหนด และ fileจำเป็นในการสร้างแอปพลิเคชันปฏิบัติการ เช่น สคริปต์การคอมไพล์ การกำหนดค่า
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 47

fileตารางพาร์ติชัน ฯลฯ โปรเจ็กต์สามารถคัดลอกและส่งต่อได้ และสามารถเรียกใช้งานได้เหมือนกัน file สามารถคอมไพล์และสร้างในเครื่องที่มีสภาพแวดล้อมการพัฒนา ESP-IDF เวอร์ชันเดียวกัน โครงการ ESP-IDF ทั่วไป file โครงสร้างดังรูปที่ 4.14
รูปที่ 4.14. โครงการ ESP-IDF ทั่วไป file โครงสร้าง เนื่องจาก ESP-IDF รองรับชิป IoT หลายตัวจาก Espressif รวมถึง ESP32, ESP32-S series, ESP32-C series, ESP32-H series ฯลฯ จึงต้องกำหนดเป้าหมายก่อนที่จะคอมไพล์โค้ด เป้าหมายคือทั้งอุปกรณ์ฮาร์ดแวร์ที่รันแอปพลิเคชันโปรแกรมและเป้าหมายการสร้างของระบบคอมไพล์ คุณสามารถระบุเป้าหมายหนึ่งรายการขึ้นไปสำหรับโปรเจ็กต์ของคุณได้ ขึ้นอยู่กับความต้องการของคุณ สำหรับเช่นample ผ่านคำสั่ง idf.py set-target esp32c3 คุณสามารถกำหนดเป้าหมายการคอมไพล์เป็น ESP32-C3 ในระหว่างนั้นพารามิเตอร์เริ่มต้นและพาธลูกโซ่เครื่องมือการคอมไพล์สำหรับ ESP32C3 จะถูกโหลด หลังจากการคอมไพล์แล้ว จะสามารถสร้างโปรแกรมปฏิบัติการสำหรับ ESP32C3 ได้ คุณยังสามารถรันคำสั่ง set-target อีกครั้งเพื่อกำหนดเป้าหมายอื่น และระบบการคอมไพล์จะล้างข้อมูลและกำหนดค่าใหม่โดยอัตโนมัติ ส่วนประกอบ
ส่วนประกอบใน ESP-IDF เป็นหน่วยโค้ดแบบโมดูลาร์และเป็นอิสระที่ได้รับการจัดการภายในระบบการคอมไพล์ พวกมันถูกจัดระเบียบเป็นโฟลเดอร์ โดยชื่อโฟลเดอร์จะแสดงชื่อส่วนประกอบตามค่าเริ่มต้น แต่ละส่วนประกอบมีสคริปต์การรวบรวมของตัวเองที่ 48 ESP32-C3 Wireless Adventure: คู่มือที่ครอบคลุมสำหรับ IoT

ระบุพารามิเตอร์การคอมไพล์และการขึ้นต่อกัน ในระหว่างกระบวนการคอมไพล์ คอมโพเนนต์จะถูกคอมไพล์เป็นไลบรารีสแตติกที่แยกจากกัน (.a files) และในที่สุดก็รวมเข้ากับส่วนประกอบอื่น ๆ เพื่อสร้างโปรแกรมแอปพลิเคชัน
ESP-IDF มีฟังก์ชันที่จำเป็น เช่น ระบบปฏิบัติการ ไดรเวอร์อุปกรณ์ต่อพ่วง และสแต็กโปรโตคอลเครือข่าย ในรูปแบบของส่วนประกอบ ส่วนประกอบเหล่านี้ถูกจัดเก็บไว้ในไดเร็กทอรีส่วนประกอบที่อยู่ภายในไดเร็กทอรีรากของ ESP-IDF นักพัฒนาไม่จำเป็นต้องคัดลอกส่วนประกอบเหล่านี้ไปยังไดเร็กทอรีส่วนประกอบของ myProject แต่จำเป็นต้องระบุความสัมพันธ์การขึ้นต่อกันของส่วนประกอบเหล่านี้ใน CMakeLists.txt ของโปรเจ็กต์เท่านั้น file โดยใช้คำสั่ง REQUIRES หรือ PRIV_REQUIRES ระบบการคอมไพล์จะค้นหาและคอมไพล์ส่วนประกอบที่จำเป็นโดยอัตโนมัติ
ดังนั้นจึงไม่จำเป็นต้องมีไดเร็กทอรีส่วนประกอบภายใต้ myProject ใช้เพื่อรวมส่วนประกอบที่กำหนดเองบางส่วนของโปรเจ็กต์เท่านั้น ซึ่งอาจเป็นไลบรารีของบุคคลที่สามหรือโค้ดที่ผู้ใช้กำหนด นอกจากนี้ ส่วนประกอบสามารถมาจากไดเร็กทอรีอื่นที่ไม่ใช่ ESP-IDF หรือโปรเจ็กต์ปัจจุบัน เช่น จากโปรเจ็กต์โอเพ่นซอร์สที่บันทึกไว้ในไดเร็กทอรีอื่น ในกรณีนี้ คุณเพียงแค่ต้องเพิ่มเส้นทางของส่วนประกอบโดยการตั้งค่าตัวแปร EXTRA_COMPONENT_DIRS ใน CMakeLists.txt ภายใต้ไดเรกทอรีราก ไดเร็กทอรีนี้จะแทนที่ส่วนประกอบ ESP-IDF ที่มีชื่อเดียวกัน เพื่อให้มั่นใจว่ามีการใช้ส่วนประกอบที่ถูกต้อง
รายการหลักของโปรแกรม ไดเร็กทอรีหลักภายในโปรเจ็กต์จะเหมือนกัน file โครงสร้างเป็นส่วนประกอบอื่น ๆ (เช่นส่วนประกอบ 1) อย่างไรก็ตาม มีความสำคัญเป็นพิเศษเนื่องจากเป็นองค์ประกอบบังคับที่ต้องมีในทุกโครงการ ไดเร็กทอรีหลักประกอบด้วยซอร์สโค้ดของโปรเจ็กต์และจุดเริ่มต้นของโปรแกรมผู้ใช้ ซึ่งโดยทั่วไปจะชื่อว่า app_main ตามค่าเริ่มต้น การดำเนินการของโปรแกรมผู้ใช้จะเริ่มต้นจากจุดเริ่มต้นนี้ ส่วนประกอบหลักยังแตกต่างตรงที่จะขึ้นอยู่กับส่วนประกอบทั้งหมดภายในพาธการค้นหาโดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องระบุการขึ้นต่อกันอย่างชัดเจนโดยใช้คำสั่ง REQUIRES หรือ PRIV_REQUIRES ใน CMakeLists.txt file.
การกำหนดค่า file ไดเร็กทอรีรากของโปรเจ็กต์ประกอบด้วยการกำหนดค่า file เรียกว่า sdkconfig ซึ่งมีพารามิเตอร์การกำหนดค่าสำหรับส่วนประกอบทั้งหมดภายในโปรเจ็กต์ sdkconfig.php file ถูกสร้างขึ้นโดยอัตโนมัติโดยระบบการคอมไพล์และสามารถแก้ไขและสร้างใหม่ได้ด้วยคำสั่ง idf.py menuconfig ตัวเลือก menuconfig ส่วนใหญ่มาจาก Kconfig.projbuild ของโปรเจ็กต์และ Kconfig ของส่วนประกอบ โดยทั่วไปนักพัฒนาส่วนประกอบจะเพิ่มรายการการกำหนดค่าใน Kconfig เพื่อให้ส่วนประกอบมีความยืดหยุ่นและกำหนดค่าได้
สร้างไดเร็กทอรี ตามค่าเริ่มต้น ไดเร็กทอรี build ภายในโปรเจ็กต์จะจัดเก็บไว้ระดับกลาง files และ fi-
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 49

โปรแกรมปฏิบัติการ nal ที่สร้างโดยคำสั่ง idf.py build โดยทั่วไป ไม่จำเป็นต้องเข้าถึงเนื้อหาของไดเร็กทอรี build โดยตรง ESP-IDF มีคำสั่งที่กำหนดไว้ล่วงหน้าเพื่อโต้ตอบกับไดเร็กทอรี เช่น การใช้คำสั่งแฟลช idf.py เพื่อค้นหาไบนารีที่คอมไพล์แล้วโดยอัตโนมัติ file และแฟลชไปยังที่อยู่แฟลชที่ระบุ หรือใช้คำสั่ง idf.py fullclean เพื่อล้างไดเร็กทอรีบิลด์ทั้งหมด
ตารางพาร์ติชั่น (partitions.csv) แต่ละโปรเจ็กต์ต้องมีตารางพาร์ติชั่นเพื่อแบ่งพื้นที่แฟลชและระบุขนาดและที่อยู่เริ่มต้นของโปรแกรมปฏิบัติการและพื้นที่ข้อมูลผู้ใช้ คำสั่ง idf.py flash หรือโปรแกรมอัพเกรด OTA จะแฟลชเฟิร์มแวร์ไปยังที่อยู่ที่เกี่ยวข้องตามตารางนี้ ESP-IDF มีตารางพาร์ติชันเริ่มต้นหลายตารางในส่วนประกอบ/ partition_table เช่น partitions_singleapp.csv และ partitions_two_ ota.csv ซึ่งสามารถเลือกได้ใน menuconfig
หากตารางพาร์ติชั่นเริ่มต้นของระบบไม่สามารถตอบสนองความต้องการของโปรเจ็กต์ได้ คุณสามารถเพิ่ม partitions.csv แบบกำหนดเองลงในไดเร็กทอรีโปรเจ็กต์และเลือกได้ใน menuconfig
4.3.3 กฎการสร้างเริ่มต้นของระบบคอมไพล์
กฎสำหรับการแทนที่ส่วนประกอบที่มีชื่อเดียวกัน ในระหว่างกระบวนการค้นหาส่วนประกอบ ระบบการคอมไพล์จะเป็นไปตามลำดับเฉพาะ อันดับแรกจะค้นหาส่วนประกอบภายในของ ESP-IDF จากนั้นค้นหาส่วนประกอบของโปรเจ็กต์ผู้ใช้ และสุดท้ายจะค้นหาส่วนประกอบใน EXTRA_COMPONENT_DIRS ในกรณีที่หลายไดเร็กทอรีมีส่วนประกอบที่มีชื่อเหมือนกัน ส่วนประกอบที่พบในไดเร็กทอรีสุดท้ายจะแทนที่ส่วนประกอบก่อนหน้าที่มีชื่อเดียวกัน กฎนี้อนุญาตให้ปรับแต่งส่วนประกอบ ESP-IDF ภายในโปรเจ็กต์ผู้ใช้ ขณะเดียวกันก็รักษาโค้ด ESP-IDF ดั้งเดิมไว้เหมือนเดิม
กฎสำหรับการรวมส่วนประกอบทั่วไปตามค่าเริ่มต้น ดังที่ได้กล่าวไว้ในส่วน 4.3.2 ส่วนประกอบจำเป็นต้องระบุการพึ่งพาส่วนประกอบอื่น ๆ ใน CMakeLists.txt อย่างชัดเจน อย่างไรก็ตาม คอมโพเนนต์ทั่วไป เช่น freertos จะถูกรวมไว้ในระบบ build โดยอัตโนมัติตามค่าเริ่มต้น แม้ว่าความสัมพันธ์การขึ้นต่อกันจะไม่ได้ถูกกำหนดไว้อย่างชัดเจนในสคริปต์การคอมไพล์ก็ตาม ส่วนประกอบทั่วไปของ ESP-IDF ได้แก่ freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv และ cxx การใช้ส่วนประกอบทั่วไปเหล่านี้ช่วยหลีกเลี่ยงการทำงานซ้ำๆ เมื่อเขียน CMakeLists.txt และทำให้กระชับยิ่งขึ้น
กฎสำหรับการแทนที่รายการการกำหนดค่า นักพัฒนาสามารถเพิ่มพารามิเตอร์การกำหนดค่าเริ่มต้นโดยการเพิ่มการกำหนดค่าเริ่มต้น file ชื่อ sdkconfig.defaults ให้กับโปรเจ็กต์ สำหรับเช่นampเลอ เพิ่ม CONFIG_LOG_
50 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

DEFAULT_LEVEL_NONE = y สามารถกำหนดค่าอินเทอร์เฟซ UART เพื่อไม่ให้พิมพ์ข้อมูลบันทึกตามค่าเริ่มต้น นอกจากนี้ หากจำเป็นต้องตั้งค่าพารามิเตอร์เฉพาะสำหรับเป้าหมายเฉพาะ การกำหนดค่า file ชื่อ sdkconfig.defaults.TARGET_NAME สามารถเพิ่มได้ โดยที่ TARGET_NAME สามารถเป็น esp32s2, esp32c3 และอื่นๆ การกำหนดค่าเหล่านี้ files จะถูกนำเข้าไปยัง sdkconfig ระหว่างการคอมไพล์ โดยมีการกำหนดค่าเริ่มต้นทั่วไป file sdkconfig.defaults จะถูกนำเข้าก่อน ตามด้วยการกำหนดค่าเฉพาะเป้าหมาย fileเช่น sdkconfig.defaults.esp32c3 ในกรณีที่มีรายการคอนฟิกูเรชันที่มีชื่อเดียวกัน ให้คอนฟิกูเรชันหลัง file จะแทนที่อดีต
4.3.4 ข้อมูลเบื้องต้นเกี่ยวกับสคริปต์การคอมไพล์
เมื่อพัฒนาโปรเจ็กต์โดยใช้ ESP-IDF นักพัฒนาไม่เพียงแต่จำเป็นต้องเขียนซอร์สโค้ดเท่านั้น แต่ยังต้องเขียน CMakeLists.txt สำหรับโปรเจ็กต์และส่วนประกอบด้วย CMakeLists.txt เป็นข้อความ fileหรือที่เรียกว่าสคริปต์การคอมไพล์ ซึ่งกำหนดชุดของอ็อบเจ็กต์การคอมไพล์ รายการการกำหนดค่าการคอมไพล์ และคำสั่งเพื่อเป็นแนวทางในการคอมไพล์ซอร์สโค้ด ระบบการคอมไพล์ของ ESP-IDF v4.3.2 ใช้ CMake นอกเหนือจากการรองรับฟังก์ชันและคำสั่ง CMake ดั้งเดิมแล้ว ยังกำหนดชุดฟังก์ชันที่กำหนดเองอีกด้วย ทำให้เขียนสคริปต์การคอมไพล์ได้ง่ายขึ้นมาก
สคริปต์การคอมไพล์ใน ESP-IDF ส่วนใหญ่ประกอบด้วยสคริปต์การคอมไพล์โครงการและสคริปต์การคอมโพเนนต์คอมโพเนนต์ CMakeLists.txt ในไดเร็กทอรีรากของโปรเจ็กต์เรียกว่าสคริปต์การคอมไพล์โปรเจ็กต์ ซึ่งจะแนะนำกระบวนการคอมไพล์ของทั้งโปรเจ็กต์ โดยทั่วไปสคริปต์การคอมไพล์โปรเจ็กต์พื้นฐานจะมีสามบรรทัดต่อไปนี้:
1. cmake_minimum_required(เวอร์ชัน 3.5) 2. รวม($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. โครงการ (myProject)
ในจำนวนนี้ จะต้องวาง cmake_minimum_required (เวอร์ชัน 3.5) ในบรรทัดแรก ซึ่งใช้เพื่อระบุหมายเลขเวอร์ชัน CMake ขั้นต่ำที่โปรเจ็กต์กำหนด โดยทั่วไป CMake เวอร์ชันใหม่จะเข้ากันได้แบบย้อนหลังกับเวอร์ชันเก่า ดังนั้นให้ปรับหมายเลขเวอร์ชันให้เหมาะสมเมื่อใช้คำสั่ง CMake ที่ใหม่กว่าเพื่อให้แน่ใจว่าเข้ากันได้
include($ENV {IDF_PATH}/tools/cmake/project.cmake) นำเข้ารายการการกำหนดค่าที่กำหนดไว้ล่วงหน้าและคำสั่งของระบบการคอมไพล์ ESP-IDF รวมถึงกฎการสร้างเริ่มต้นของระบบการคอมไพล์ที่อธิบายไว้ในส่วน 4.3.3 project(myProject) สร้างโปรเจ็กต์เองและระบุชื่อ ชื่อนี้จะถูกใช้เป็นไบนารีเอาต์พุตสุดท้าย file ชื่อ เช่น myProject.elf และ myProject.bin
โปรเจ็กต์สามารถมีได้หลายส่วนประกอบ รวมถึงส่วนประกอบหลักด้วย ไดเร็กทอรีระดับบนสุดของแต่ละคอมโพเนนต์ประกอบด้วย CMakeLists.txt fileซึ่งเรียกว่าสคริปต์การคอมโพเนนต์คอมโพเนนต์ สคริปต์การคอมโพเนนต์ส่วนใหญ่จะใช้เพื่อระบุการขึ้นต่อกันของคอมโพเนนต์ พารามิเตอร์การกำหนดค่า ซอร์สโค้ด files และรวมส่วนหัวด้วย fileสำหรับ
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 51

การรวบรวม ด้วยฟังก์ชันที่กำหนดเองของ ESP-IDF idf_component_register รหัสขั้นต่ำที่จำเป็นสำหรับสคริปต์การคอมโพเนนต์จะเป็นดังนี้:

1. idf_component_register(SRCS “src1.c”

2.

INCLUDE_DIRS “รวม”

3.

ต้องมีส่วนประกอบ1)

พารามิเตอร์ SRCS จัดเตรียมรายการแหล่งที่มา files ในองค์ประกอบ คั่นด้วยช่องว่างหากมีหลายรายการ fileส. พารามิเตอร์ INCLUDE_DIRS แสดงรายการส่วนหัวสาธารณะ file ไดเร็กทอรีสำหรับส่วนประกอบ ซึ่งจะถูกเพิ่มในพาธการค้นหารวมสำหรับส่วนประกอบอื่นๆ ที่ขึ้นอยู่กับส่วนประกอบปัจจุบัน พารามิเตอร์ REQUIRES ระบุการขึ้นต่อกันของคอมโพเนนต์สาธารณะสำหรับคอมโพเนนต์ปัจจุบัน จำเป็นสำหรับส่วนประกอบในการระบุอย่างชัดเจนว่าส่วนประกอบใดที่ต้องพึ่งพา เช่น ส่วนประกอบ2 ขึ้นอยู่กับส่วนประกอบ1 อย่างไรก็ตาม สำหรับส่วนประกอบหลักซึ่งขึ้นอยู่กับส่วนประกอบทั้งหมดตามค่าเริ่มต้น สามารถละเว้นพารามิเตอร์ REQUIRES ได้

นอกจากนี้ คำสั่ง CMake ดั้งเดิมยังสามารถใช้ในสคริปต์การคอมไพล์ได้อีกด้วย สำหรับเช่นampให้ใช้ชุดคำสั่งเพื่อตั้งค่าตัวแปร เช่น set(VARIABLE “VALUE”)

4.3.5 บทนำเกี่ยวกับคำสั่งทั่วไป
ESP-IDF ใช้ CMake (เครื่องมือกำหนดค่าโครงการ), Ninja (เครื่องมือสร้างโครงการ) และ esptool (เครื่องมือแฟลช) ในกระบวนการรวบรวมโค้ด เครื่องมือแต่ละอันมีบทบาทที่แตกต่างกันในกระบวนการคอมไพล์ การสร้าง และแฟลช และยังรองรับคำสั่งการทำงานที่แตกต่างกันอีกด้วย เพื่ออำนวยความสะดวกในการดำเนินงานของผู้ใช้ ESP-IDF จะเพิ่ม idf.py ส่วนหน้าแบบรวมที่ช่วยให้เรียกใช้คำสั่งข้างต้นได้อย่างรวดเร็ว
ก่อนที่จะใช้ idf.py ตรวจสอบให้แน่ใจว่า:
· เพิ่มตัวแปรสภาพแวดล้อม IDF_PATH ของ ESP-IDF ไปยังเทอร์มินัลปัจจุบันแล้ว · ไดเร็กทอรีการดำเนินการคำสั่งคือไดเร็กทอรีรากของโปรเจ็กต์ ซึ่งรวมถึง
สคริปต์การคอมไพล์โครงการ CMakeLists.txt
คำสั่งทั่วไปของ idf.py มีดังนี้:
· idf.py –help: แสดงรายการคำสั่งและคำแนะนำการใช้งาน · idf.py ตั้งเป้าหมาย : การตั้งค่าการคอมไพล์ taidf.py fullcleanrget เช่น
เป็นการทดแทน ด้วย esp32c3 · idf.py menuconfig: เรียกใช้ menuconfig ซึ่งเป็นการกำหนดค่ากราฟิกเทอร์มินัล
เครื่องมือซึ่งสามารถเลือกหรือแก้ไขตัวเลือกการกำหนดค่าได้ และผลการกำหนดค่าจะถูกบันทึกไว้ใน sdkconfig file- · idf.py build: การเริ่มต้นการคอมไพล์โค้ด ระดับกลาง fileและโปรแกรมปฏิบัติการสุดท้ายที่สร้างโดยการคอมไพล์จะถูกบันทึกไว้ในไดเร็กทอรี build ของโปรเจ็กต์ตามค่าเริ่มต้น กระบวนการคอมไพล์เป็นแบบเพิ่มขึ้นซึ่งหมายความว่าหากมีแหล่งเดียวเท่านั้น file ได้รับการแก้ไขแล้วเท่านั้นที่แก้ไขแล้ว file จะถูกรวบรวมในครั้งต่อไป

52 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

· idf.py clean: ทำความสะอาดตัวกลาง fileสร้างขึ้นโดยการรวบรวมโครงการ โครงการทั้งหมดจะถูกบังคับให้คอมไพล์ในการคอมไพล์ครั้งถัดไป โปรดทราบว่าการกำหนดค่า CMake และการแก้ไขการกำหนดค่าที่ทำโดย menuconfig จะไม่ถูกลบในระหว่างการล้างข้อมูล
· idf.py fullclean: การลบไดเร็กทอรี build ทั้งหมด รวมถึงเอาต์พุตการกำหนดค่า CMake ทั้งหมด fileส. เมื่อสร้างโปรเจ็กต์อีกครั้ง CMake จะกำหนดค่าโปรเจ็กต์ตั้งแต่เริ่มต้น โปรดทราบว่าคำสั่งนี้จะลบทั้งหมดแบบวนซ้ำ fileในไดเร็กทอรี build ดังนั้นให้ใช้ด้วยความระมัดระวังและการกำหนดค่าโปรเจ็กต์ file จะไม่ถูกลบ
· idf.py flash: แฟลชไบนารีของโปรแกรมปฏิบัติการ file สร้างโดยการสร้างไปยังเป้าหมาย ESP32-C3 ตัวเลือก -p และ -ข ใช้เพื่อตั้งชื่ออุปกรณ์ของพอร์ตอนุกรมและอัตรารับส่งข้อมูลสำหรับการกะพริบตามลำดับ หากไม่ได้ระบุตัวเลือกทั้งสองนี้ พอร์ตอนุกรมจะถูกตรวจพบโดยอัตโนมัติ และจะใช้อัตรารับส่งข้อมูลเริ่มต้น
· จอภาพ idf.py: แสดงเอาต์พุตพอร์ตอนุกรมของเป้าหมาย ESP32-C3 ตัวเลือก -p สามารถใช้เพื่อระบุชื่ออุปกรณ์ของพอร์ตอนุกรมฝั่งโฮสต์ ในระหว่างการพิมพ์พอร์ตอนุกรม ให้กดคีย์ผสม Ctrl+] เพื่อออกจากจอภาพ
คำสั่งข้างต้นสามารถรวมกันได้ตามต้องการ สำหรับเช่นampคำสั่ง idf.py build flash monitor จะทำการคอมไพล์โค้ด แฟลช และเปิดมอนิเตอร์พอร์ตอนุกรมตามลำดับ
คุณสามารถเยี่ยมชม https://bookc3.espressif.com/build-system เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับระบบการรวบรวม ESP-IDF
4.4 การฝึกปฏิบัติ: การคอมไพล์ เช่นampโปรแกรม “กะพริบ”
4.4.1 อดีตampบทวิเคราะห์
ในส่วนนี้จะพาโปรแกรม Blink มาเป็นอดีตครับampเพื่อวิเคราะห์ file โครงสร้างและกฎการเข้ารหัสของโครงการจริงโดยละเอียด โปรแกรม Blink ใช้เอฟเฟกต์การกะพริบ LED และโปรเจ็กต์จะอยู่ในไดเร็กทอรี เช่นamples/get-started/blink ซึ่งมีแหล่งที่มา file, การกำหนดค่า files และสคริปต์การคอมไพล์หลายตัว
โครงการไฟอัจฉริยะที่แนะนำในหนังสือเล่มนี้มีพื้นฐานมาจากตัวอย่างนี้ampเลอโปรแกรม ฟังก์ชั่นต่างๆ จะค่อยๆ เพิ่มเข้ามาในบทต่อๆ ไปเพื่อให้เสร็จสมบูรณ์ในที่สุด
ซอร์สโค้ด เพื่อสาธิตกระบวนการพัฒนาทั้งหมด โปรแกรม Blink ได้ถูกคัดลอกไปยัง esp32c3-iot-projects/เฟิร์มแวร์อุปกรณ์/1กะพริบ
โครงสร้างไดเร็กทอรีของโปรเจ็กต์กะพริบ files แสดงในรูปที่ 4.15
โปรเจ็กต์ Blink มีไดเร็กทอรีหลักเพียงไดเร็กทอรีเดียว ซึ่งเป็นส่วนประกอบพิเศษ
บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 53

รูปที่ 4.15. File โครงสร้างไดเร็กทอรีของโปรเจ็กต์กะพริบ

จะต้องรวมตามที่อธิบายไว้ในหัวข้อ 4.3.2 ไดเร็กทอรีหลักส่วนใหญ่จะใช้เพื่อจัดเก็บการใช้งานฟังก์ชัน app_main() ซึ่งเป็นจุดเริ่มต้นของโปรแกรมผู้ใช้ โครงการกะพริบไม่รวมไดเร็กทอรีส่วนประกอบ เนื่องจากตัวอย่างนี้ampจำเป็นต้องใช้ส่วนประกอบที่มาพร้อมกับ ESP-IDF เท่านั้น และไม่ต้องการส่วนประกอบเพิ่มเติม CMakeLists.txt ที่รวมอยู่ในโปรเจ็กต์ Blink ถูกใช้เพื่อเป็นแนวทางในขั้นตอนการคอมไพล์ ในขณะที่ Kconfig.projbuild ใช้เพื่อเพิ่มรายการการกำหนดค่าสำหรับอดีตนี้ampเลอโปรแกรมใน menuconfig. อื่นๆ ที่ไม่จำเป็น files จะไม่ส่งผลต่อการคอมไพล์โค้ด ดังนั้นจะไม่นำมากล่าวถึงที่นี่ ข้อมูลเบื้องต้นโดยละเอียดเกี่ยวกับโครงการ Blink files เป็นดังนี้

1. /*blink.c มีส่วนหัวต่อไปนี้ fileส*/

2.#รวม

//ส่วนหัวของไลบรารี C มาตรฐาน file

3. #include “freertos/freeRTOS.h” //ส่วนหัวหลักของ FreeRTOS file

4. #รวม “freertos/task.h”

//ส่วนหัวของงาน FreeRTOS file

5. #รวม “sdkconfig.h”

//ส่วนหัวของการกำหนดค่า file สร้างโดย kconfig

6. #รวม “ไดรเวอร์/gpio.h”

//ส่วนหัวของไดรเวอร์ GPIO file

แหล่งที่มา file Blink.c มีชุดของส่วนหัว fileสอดคล้องกับฟังก์ชันประกาศ-

สิ่งต่างๆ โดยทั่วไปแล้ว ESP-IDF จะเป็นไปตามลำดับการรวมส่วนหัวของไลบรารีมาตรฐาน files, ฟรีR-

ส่วนหัวของ TOS files, ส่วนหัวของไดรเวอร์ files ส่วนหัวของส่วนประกอบอื่นๆ files และส่วนหัวของโครงการ files.

ลำดับที่ส่วนหัว files ที่รวมอยู่อาจส่งผลต่อผลลัพธ์การรวบรวมขั้นสุดท้าย ดังนั้นให้ลอง

ปฏิบัติตามกฎเริ่มต้น ควรสังเกตว่า sdkconfig.h ถูกสร้างขึ้นโดยอัตโนมัติ

โดย kconfig และสามารถกำหนดค่าได้ผ่านคำสั่ง idf.py menuconfig เท่านั้น

การปรับเปลี่ยนส่วนหัวนี้โดยตรง file จะถูกเขียนทับ

1. /*คุณสามารถเลือก GPIO ที่สอดคล้องกับ LED ใน idf.py menuconfig และผลการแก้ไขของ menuconfig คือค่าของ CONFIG_BLINK

_GPIO จะถูกเปลี่ยน คุณยังสามารถแก้ไขคำจำกัดความของแมโครได้โดยตรง

ที่นี่ และเปลี่ยน CONFIG_BLINK_GPIO เป็นค่าคงที่*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. เป็นโมฆะ app_main (เป็นโมฆะ)

4. {

5.

/*กำหนดค่า IO เป็นฟังก์ชันเริ่มต้นของ GPIO เปิดใช้งานโหมดดึงขึ้น และ

6.

ปิดการใช้งานโหมดอินพุตและเอาต์พุต*/

7.

gpio_reset_pin(BLINK_GPIO);

54 การผจญภัยแบบไร้สาย ESP32-C3: คู่มือ IoT ที่ครอบคลุม

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }

/*ตั้งค่า GPIO เป็นโหมดเอาต์พุต*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); ในขณะที่(1) {
/*บันทึกการพิมพ์*/ printf (“การปิดไฟ LEDn”); /*ปิดไฟ LED (เอาต์พุตระดับต่ำ)*/ gpio_set_level(BLINK_GPIO, 0); /*ดีเลย์ (1000 มิลลิวินาที)*/ vTaskDelay(1000 / พอร์ตTICK_PERIOD_MS); printf("กำลังเปิดไฟ LEDn"); /*เปิดไฟ LED (เอาต์พุตระดับสูง)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / พอร์ตTICK_PERIOD_MS); -

ฟังก์ชัน app_main() ใน Blink เช่นampโปรแกรม le ทำหน้าที่เป็นจุดเริ่มต้นสำหรับโปรแกรมของผู้ใช้ เป็นฟังก์ชันธรรมดาที่ไม่มีพารามิเตอร์และไม่มีค่าส่งคืน ฟังก์ชันนี้ถูกเรียกหลังจากที่ระบบเริ่มต้นเสร็จสิ้นแล้ว ซึ่งรวมถึงงานต่างๆ เช่น การเริ่มต้นบันทึกพอร์ตอนุกรม การกำหนดค่าแกนเดี่ยว/คู่ และการกำหนดค่า Watchdog

ฟังก์ชัน app_main() ทำงานในบริบทของงานที่ชื่อ main ขนาดสแต็กและลำดับความสำคัญของงานนี้สามารถปรับได้ใน menuconfig Componentconfig Common ESP

สำหรับงานง่ายๆ เช่น การกะพริบไฟ LED คุณสามารถปรับใช้โค้ดที่จำเป็นทั้งหมดได้โดยตรงในฟังก์ชัน app_main() โดยทั่วไปจะเกี่ยวข้องกับการเริ่มต้น GPIO ที่สอดคล้องกับ LED และใช้ลูป while(1) เพื่อสลับเปิดและปิด LED หรือคุณสามารถใช้ FreeRTOS API เพื่อสร้างงานใหม่ที่จัดการไฟ LED ที่กะพริบได้ เมื่อสร้างงานใหม่สำเร็จแล้ว คุณสามารถออกจากฟังก์ชัน app_main() ได้

เนื้อหาของ main/CMakeLists.txt fileซึ่งเป็นแนวทางในการคอมไพล์คอมโพเนนต์หลักมีดังนี้:

1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )

ในหมู่พวกเขา main/CMakeLists.txt เรียกฟังก์ชันระบบการคอมไพล์เพียงฟังก์ชันเดียวเท่านั้น นั่นคือ idf_component_register เช่นเดียวกับ CMakeLists.txt สำหรับส่วนประกอบอื่นๆ ส่วนใหญ่ Blink.c จะถูกเพิ่มใน SRCS และแหล่งที่มา files ที่เพิ่มเข้าไปใน SRCS จะถูกคอมไพล์ ในเวลาเดียวกัน ควรเพิ่ม “.” ซึ่งแสดงถึงเส้นทางที่มี CMakeLists.txt อยู่ใน INCLUDE_DIRS เป็นไดเร็กทอรีการค้นหาสำหรับส่วนหัว fileส. เนื้อหาของ CMakeLists.txt เป็นดังนี้:
1. #ระบุ v3.5 เป็นเวอร์ชัน CMake ที่เก่าที่สุดที่โปรเจ็กต์ปัจจุบันรองรับ 2. #เวอร์ชันที่ต่ำกว่า v3.5 ต้องได้รับการอัปเกรดก่อนการคอมไพล์จะดำเนินต่อไป 3. cmake_minimum_required(VERSION 3.5) 4. #รวมการกำหนดค่า CMake เริ่มต้นของ ESP -ระบบรวบรวม IDF

บทที่ 4 การตั้งค่าสภาพแวดล้อมการพัฒนา 55

5. รวม($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #สร้างโครงการชื่อ “blink” 7. โครงการ(myProject)
ในหมู่พวกเขา CMakeLists.txt ในไดเรกทอรีรากส่วนใหญ่จะรวม $ENV{IDF_ PATH}/tools/cmake/project.cmake ซึ่งเป็นการกำหนดค่า CMake หลัก file จัดทำโดย ESP-IDF มันถูกใช้เพื่อต่อต้าน

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

ระบบ Espressif Systems ESP32-C3 การผจญภัยแบบไร้สาย [พีดีเอฟ] คู่มือการใช้งาน
ESP32-C3 การผจญภัยแบบไร้สาย, ESP32-C3, การผจญภัยแบบไร้สาย, การผจญภัย

อ้างอิง

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

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