ESP32-C3 Wireless Adventure

ESP32-C3 Wireless Adventure

راهنمای جامع اینترنت اشیا

Espressif Systems 12 ژوئن 2023

مشخصات

  • محصول: ESP32-C3 Wireless Adventure
  • سازنده: Espressif Systems
  • تاریخ: 12 ژوئن 2023

دستورالعمل استفاده از محصول

آماده سازی

قبل از استفاده از ESP32-C3 Wireless Adventure، مطمئن شوید که هستید
آشنایی با مفاهیم و معماری اینترنت اشیا این کمک خواهد کرد
شما درک می کنید که چگونه دستگاه در اکوسیستم بزرگتر اینترنت اشیا قرار می گیرد
و کاربردهای بالقوه آن در خانه های هوشمند.

معرفی و تمرین پروژه های اینترنت اشیا

در این بخش با پروژه های معمولی اینترنت اشیا آشنا می شوید.
از جمله ماژول های اساسی برای دستگاه های مشترک اینترنت اشیا، ماژول های پایه
از برنامه های مشتری و پلتفرم های ابری مشترک اینترنت اشیا. این اراده
برای شما پایه ای برای درک و ایجاد خود فراهم می کند
پروژه های اینترنت اشیا خود را دارند.

تمرین: پروژه نور هوشمند

در این پروژه تمرینی یاد می گیرید که چگونه یک هوشمند ایجاد کنید
نور با استفاده از ESP32-C3 Wireless Adventure. ساختار پروژه،
توابع، آماده سازی سخت افزار و فرآیند توسعه خواهد بود
به تفصیل توضیح داده شده است.

ساختار پروژه

این پروژه از چندین جزء تشکیل شده است، از جمله
ESP32-C3 Wireless Adventure، LED، حسگرها و یک ابر
باطن

توابع پروژه

پروژه نور هوشمند به شما امکان کنترل روشنایی و
رنگ LED ها از راه دور از طریق یک برنامه تلفن همراه یا web
رابط کاربری

آماده سازی سخت افزار

برای آماده شدن برای پروژه، باید آن ها را جمع آوری کنید
قطعات سخت افزاری ضروری مانند ESP32-C3 Wireless
برد ماجراجویی، ال ای دی، مقاومت و منبع تغذیه.

فرآیند توسعه

فرآیند توسعه شامل راه اندازی توسعه است
محیط، نوشتن کد برای کنترل LED ها، اتصال به
باطن ابری و آزمایش عملکرد هوشمند
نور

معرفی ESP RainMaker

ESP RainMaker یک چارچوب قدرتمند برای توسعه اینترنت اشیا است
دستگاه ها در این بخش یاد خواهید گرفت که ESP RainMaker چیست و
چگونه می توان آن را در پروژه های شما پیاده سازی کرد.

ESP RainMaker چیست؟

ESP RainMaker یک پلتفرم مبتنی بر ابر است که مجموعه ای از
ابزارها و خدمات برای ساخت و مدیریت دستگاه های اینترنت اشیا.

پیاده سازی ESP RainMaker

این بخش اجزای مختلف درگیر در آن را توضیح می دهد
پیاده سازی ESP RainMaker، از جمله سرویس ادعا،
RainMaker Agent، Cloud Backend و RainMaker Client.

تمرین: نکات کلیدی برای توسعه با ESP RainMaker

در این بخش تمرین با نکات کلیدی آشنا می شوید
هنگام توسعه با ESP RainMaker در نظر بگیرید. این شامل دستگاه می شود
ادعا، همگام سازی داده ها و مدیریت کاربر.

ویژگی های ESP RainMaker

ESP RainMaker ویژگی های مختلفی را برای مدیریت کاربر ارائه می دهد
کاربران و مدیران این ویژگی ها اجازه می دهد تا دستگاه آسان است
راه اندازی، کنترل از راه دور و نظارت.

راه اندازی محیط توسعه

این بخش یک over ارائه می دهدview ESP-IDF (Espressif IoT
چارچوب توسعه) که چارچوب رسمی توسعه است
برای دستگاه های مبتنی بر ESP32. این نسخه های مختلف را توضیح می دهد
ESP-IDF و نحوه تنظیم محیط توسعه

توسعه سخت افزار و درایور

طراحی سخت افزاری محصولات Smart Light بر اساس ESP32-C3

این بخش بر روی طراحی سخت افزاری نور هوشمند تمرکز دارد
محصولات مبتنی بر ESP32-C3 Wireless Adventure. را پوشش می دهد
ویژگی ها و ترکیب محصولات نور هوشمند، و همچنین
طراحی سخت افزاری سیستم هسته ای ESP32-C3.

ویژگی ها و ترکیب محصولات Smart Light

این زیربخش ویژگی ها و اجزای سازنده را توضیح می دهد
محصولات نور هوشمند در مورد عملکردهای مختلف بحث می کند
و ملاحظات طراحی برای ایجاد چراغ های هوشمند.

طراحی سخت افزار سیستم هسته ای ESP32-C3

طراحی سخت افزاری سیستم هسته ESP32-C3 شامل قدرت می باشد
منبع تغذیه، ترتیب روشن شدن، تنظیم مجدد سیستم، فلش SPI، منبع ساعت،
و ملاحظات RF و آنتن. این زیربخش ارائه می دهد
اطلاعات دقیق در مورد این جنبه ها.

سوالات متداول

س: ESP RainMaker چیست؟

پاسخ: ESP RainMaker یک پلت فرم مبتنی بر ابر است که ابزارهایی را ارائه می دهد
و خدمات ساخت و مدیریت دستگاه های اینترنت اشیا. ساده می کند
فرآیند توسعه و راه اندازی آسان دستگاه، از راه دور اجازه می دهد
کنترل و نظارت

س: چگونه می توانم محیط توسعه را برای آن تنظیم کنم
ESP32-C3؟

A: برای راه اندازی محیط توسعه برای ESP32-C3، شما نیاز دارید
برای نصب ESP-IDF (Espressif IoT Development Framework) و
آن را طبق دستورالعمل های ارائه شده پیکربندی کنید. ESP-IDF است
چارچوب توسعه رسمی برای دستگاه های مبتنی بر ESP32.

س: ویژگی های ESP RainMaker چیست؟

A: ESP RainMaker ویژگی های مختلفی از جمله کاربر را ارائه می دهد
مدیریت، ویژگی های کاربر نهایی، و ویژگی های مدیریت. مدیریت کاربر
امکان ادعای آسان دستگاه و همگام سازی داده ها را فراهم می کند. کاربر نهایی
ویژگی ها کنترل از راه دور دستگاه ها را از طریق یک برنامه تلفن همراه یا
web رابط. ویژگی های مدیریت ابزارهایی را برای نظارت بر دستگاه فراهم می کند
و مدیریت.

ESP32-C3 Wireless Adventure
راهنمای جامع اینترنت اشیا
Espressif Systems 12 ژوئن 2023

مطالب

من آماده سازی

1

1 مقدمه ای بر اینترنت اشیا

3

1.1 معماری اینترنت اشیا . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 کاربرد اینترنت اشیا در خانه های هوشمند. . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 معرفی و تمرین پروژه های اینترنت اشیا

9

2.1 مقدمه ای بر پروژه های معمولی اینترنت اشیا. . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 ماژول های پایه برای دستگاه های مشترک اینترنت اشیا. . . . . . . . . . . . . . . . . 9

2.1.2 ماژول های اصلی برنامه های کاربردی مشتری. . . . . . . . . . . . . . . . . . . 10

2.1.3 مقدمه ای بر بسترهای ابری مشترک IoT. . . . . . . . . . . . . . 11

2.2 تمرین: پروژه نور هوشمند. . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 RainMaker Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 ESP-IDF Git Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 انتخاب یک نسخه مناسب. . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 بیش ازview فهرست راهنمای SDK ESP-IDF. . . . . . . . . . . . . . . . . . . . 34 4.2 راه اندازی محیط توسعه ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 راه اندازی محیط توسعه ESP-IDF در لینوکس. . . . . . . . 38 4.2.2 راه اندازی محیط توسعه ESP-IDF در ویندوز . . . . . . 40 4.2.3 راه اندازی محیط توسعه ESP-IDF در مک. . . . . . . . . 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 تمرین: تدوین پیشینample برنامه "Blink". . . . . . . . . . . . . . . . . . 53 4.4.1 مثالampتجزیه و تحلیل . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 کامپایل برنامه Blink. . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 فلش کردن برنامه Blink. . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 تجزیه و تحلیل گزارش پورت سریال برنامه Blink. . . . . . . . . . . . . . 60 4.5 خلاصه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II توسعه سخت افزار و درایور

65

5 طراحی سخت افزاری محصولات Smart Light بر اساس ESP32-C3

67

5.1 ویژگی ها و ترکیب محصولات Smart Light. . . . . . . . . . . . . . . 67

5.2 طراحی سخت افزاری سیستم هسته ای ESP32-C3. . . . . . . . . . . . . . . . . . . 70

5.2.1 منبع تغذیه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 توالی روشن و بازنشانی سیستم. . . . . . . . . . . . . . . . . . 74

5.2.3 SPI Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Dimming. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 ذخیره سازی غیر فرار (NVS). . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 LED PWM Controller (LEDC). . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 برنامه نویسی LED PWM. . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 تمرین: افزودن درایورها به پروژه Smart Light. . . . . . . . . . . . . . . . . 103

6.5.1 درایور دکمه. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 LED Dimming Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 خلاصه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III ارتباطات و کنترل بی سیم

109

7 پیکربندی و اتصال Wi-Fi

111

7.1 اصول وای فای . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 SoftAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 SmartConfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Advantages of Local Control . . . . . . . . . . . . . . . . . . . . . . . . 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 پروتکل برنامه چندپخشی 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 مقدمه ای بر امنیت لایه حمل و نقل (TLS). . . . . . . . . . . . . 207

8.4.2 مقدمه ای بر داtagram Transport Layer Security (DTLS). . . . . . . 213

8.5 تمرین: کنترل محلی در پروژه Smart Light. . . . . . . . . . . . . . . . . . 217

8.5.1 ایجاد یک سرور کنترل محلی مبتنی بر Wi-Fi. . . . . . . . . . . . . . . 217

8.5.2 بررسی عملکرد کنترل محلی با استفاده از اسکریپت. . . . . . . . . . . 221

8.5.3 ایجاد یک سرور کنترل محلی مبتنی بر بلوتوث. . . . . . . . . . . . 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 Broker در لینوکس و ویندوز. . . . . . . . . . . . 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 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 پروتکل ارتباطی Node و Cloud Backend . . . . . . . . . . . 244 9.4.3 ارتباط بین Client و Cloud Backend . . . . . . . . . . . 249 9.4.4 نقش های کاربر . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 خدمات پایه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Exampل . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 برنامه RainMaker و ادغام شخص ثالث. . . . . . . . . . . . . . . 262 9.5 خلاصه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 توسعه اپلیکیشن گوشی های هوشمند

269

10.1 مقدمه ای بر توسعه اپلیکیشن گوشی های هوشمند. . . . . . . . . . . . . . . . . . 269

10.1.1 بیش ازview توسعه اپلیکیشن گوشی های هوشمند . . . . . . . . . . . . . . 270

10.1.2 ساختار پروژه اندروید. . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 ساختار پروژه iOS. . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 چرخه حیات یک فعالیت اندروید. . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 چرخه حیات iOS Viewکنترل کننده. . . . . . . . . . . . . . . . . . . . . . 273

10.2 ایجاد یک پروژه جدید اپلیکیشن گوشی هوشمند. . . . . . . . . . . . . . . . . . . . . 275

10.2.1 آماده سازی برای توسعه اندروید. . . . . . . . . . . . . . . . . . . 275

10.2.2 ایجاد یک پروژه اندروید جدید. . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 افزودن وابستگی برای MyRainmaker. . . . . . . . . . . . . . . . . 276

10.2.4 درخواست مجوز در اندروید. . . . . . . . . . . . . . . . . . . . . . 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 دریافت شناسه گره. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 تمرین: خارج از هوا (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 تمرین: مدیریت نیرو در پروژه Smart Light. . . . . . . . . . . . . . . 363

12.4.1 پیکربندی ویژگی مدیریت توان. . . . . . . . . . . . . . . . . 364

12.4.2 از قفل های مدیریت انرژی استفاده کنید. . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 بررسی میزان مصرف برق. . . . . . . . . . . . . . . . . . . . . . . 366

12.5 خلاصه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 ویژگی امنیتی پیشرفته دستگاه

369

13.1 بیش ازview امنیت داده های دستگاه اینترنت اشیا . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 چرا ایمن کردن داده های دستگاه اینترنت اشیا؟ . . . . . . . . . . . . . . . . . . . . . . 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 سابقamples of Flash Encryption و NVS Encryption. . . . . . . . . . . 384

13.4 حفاظت از مشروعیت داده ها. . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 مقدمه ای بر امضای دیجیتال. . . . . . . . . . . . . . . . . . . . . 386

13.4.2 بیش ازview طرح راه‌اندازی امن . . . . . . . . . . . . . . . . . . . . 388

13.4.3 مقدمه ای بر نرم افزار Secure Boot. . . . . . . . . . . . . . . . . . . 388 13.4.4 مقدمه ای بر سخت افزار Secure Boot . . . . . . . . . . . . . . . . . . 390 13.4.5 مثالampلس . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 تمرین: ویژگی های امنیتی در تولید انبوه. . . . . . . . . . . . . . . . . . 396 13.5.1 رمزگذاری فلش و راه اندازی ایمن . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 فعال کردن رمزگذاری فلش و راه اندازی ایمن با ابزارهای دسته ای فلش. . 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 تمرین: داده های تولید انبوه در پروژه Smart Light. . . . . . . . . . . . . 404

14.4 خلاصه . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 بینش ESP: پلت فرم نظارت از راه دور

405

15.1 مقدمه ای بر ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 شروع به کار با ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 شروع به کار با ESP Insights در پروژه esp-inights. . . . . . 409

15.2.2 در حال اجراampدر پروژه esp-inights. . . . . . . . . . . . . . . 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 وای فای تک هسته ای و بلوتوث 5 (LE) است که بر اساس معماری منبع باز RISC-V است. این توازن مناسبی از قدرت، قابلیت‌های ورودی/خروجی و امنیت برقرار می‌کند، بنابراین راه‌حل بهینه مقرون‌به‌صرفه را برای دستگاه‌های متصل ارائه می‌دهد. برای نشان دادن کاربردهای مختلف خانواده ESP32-C3، این کتاب توسط Espressif شما را به سفری جالب در AIoT می‌برد، از اصول اولیه توسعه پروژه اینترنت اشیا و راه‌اندازی محیط تا تجربیات کاربردی.amples چهار فصل اول در مورد اینترنت اشیا، ESP RainMaker و ESP-IDF صحبت می کند. فصل 5 و 6 مختصری در مورد طراحی سخت افزار و توسعه درایور. با پیشرفت، خواهید فهمید که چگونه پروژه خود را از طریق شبکه های Wi-Fi و برنامه های تلفن همراه پیکربندی کنید. در نهایت، شما یاد خواهید گرفت که پروژه خود را بهینه کنید و آن را به تولید انبوه برسانید.
اگر شما یک مهندس در زمینه های مرتبط، یک معمار نرم افزار، یک معلم، یک دانش آموز یا هر کسی هستید که به اینترنت اشیا علاقه مند است، این کتاب برای شما مناسب است.
می توانید کد ex را دانلود کنیدampدر این کتاب از سایت Espressif در GitHub استفاده شده است. برای آخرین اطلاعات در مورد توسعه اینترنت اشیا، لطفا حساب رسمی ما را دنبال کنید.

پیشگفتار
یک دنیای اطلاع رسانی
با سوار شدن بر موج اینترنت، اینترنت اشیا (IoT) اولین کار بزرگ خود را انجام داد تا به نوع جدیدی از زیرساخت در اقتصاد دیجیتال تبدیل شود. برای نزدیک‌تر کردن فناوری به عموم، Espressif Systems با این دیدگاه کار می‌کند که توسعه‌دهندگان از همه اقشار جامعه می‌توانند از اینترنت اشیا برای حل برخی از مبرم‌ترین مشکلات زمان ما استفاده کنند. دنیایی از "شبکه هوشمند همه چیز" همان چیزی است که ما از آینده انتظار داریم.
طراحی تراشه های خود ما یک جزء حیاتی از آن چشم انداز است. این یک ماراتن است که نیاز به پیشرفت های مداوم در برابر مرزهای تکنولوژیکی دارد. از «تغییر بازی» ESP8266 تا سری ESP32 با اتصال Wi-Fi و بلوتوثر (LE) و به دنبال آن ESP32-S3 مجهز به شتاب هوش مصنوعی، Espressif هرگز از تحقیق و توسعه محصولات برای راه‌حل‌های AIoT دست نمی‌کشد. با نرم افزار منبع باز خود، مانند چارچوب توسعه IoT ESP-IDF، Mesh Development Framework ESP-MDF، و Device Connectivity Platform ESP RainMaker، یک چارچوب مستقل برای ساخت برنامه های AIoT ایجاد کرده ایم.
تا جولای 2022، تعداد محموله‌های انباشته چیپست‌های IoT Espressif از 800 میلیون فراتر رفته است که در بازار MCU Wi-Fi پیشرو بوده و تعداد زیادی از دستگاه‌های متصل را در سراسر جهان نیرو می‌دهد. تعالی هر محصول اسپرسیف را به دلیل سطح بالایی از یکپارچگی و کارایی هزینه، به یک موفقیت بزرگ تبدیل می کند. انتشار ESP32-C3 نقطه عطف مهمی در فناوری خود توسعه یافته Espressif است. این یک MCU تک هسته ای 32 بیتی مبتنی بر RISC-V با 400 کیلوبایت SRAM است که می تواند با فرکانس 160 مگاهرتز کار کند. دارای وای فای 2.4 گیگاهرتز و بلوتوث 5 (LE) با پشتیبانی دوربرد. این توازن خوبی از قدرت، قابلیت های ورودی/خروجی و امنیت برقرار می کند، بنابراین راه حل بهینه مقرون به صرفه را برای دستگاه های متصل ارائه می دهد. این کتاب بر اساس چنین ESP32-C3 قدرتمندی برای کمک به خوانندگان در درک دانش مرتبط با اینترنت اشیا با تصاویر دقیق و تجربیات عملی در نظر گرفته شده است.amples
چرا این کتاب را نوشتیم؟
Espressif Systems چیزی بیش از یک شرکت نیمه هادی است. همچنین یک شرکت پلتفرم اینترنت اشیا است که همیشه برای پیشرفت و نوآوری در زمینه فناوری تلاش می کند. در همان زمان، Espressif سیستم عامل و چارچوب نرم افزاری خود توسعه یافته خود را منبع باز و به اشتراک گذاشته است و یک اکوسیستم منحصر به فرد را تشکیل می دهد. مهندسان، سازندگان و علاقه مندان به فناوری به طور فعال برنامه های نرم افزاری جدید را بر اساس محصولات Espressif توسعه می دهند، آزادانه با هم ارتباط برقرار می کنند و تجربیات خود را به اشتراک می گذارند. شما می توانید ایده های جذاب توسعه دهندگان را همیشه در پلتفرم های مختلف مانند YouTube و GitHub مشاهده کنید. محبوبیت محصولات Espressif تعداد فزاینده ای از نویسندگان را برانگیخته است که بیش از 100 کتاب بر اساس چیپست های Espressif به بیش از ده زبان از جمله انگلیسی، چینی، آلمانی، فرانسوی و ژاپنی تولید کرده اند.

این حمایت و اعتماد شرکای جامعه است که نوآوری مستمر Espressif را تشویق می کند. ما در تلاش هستیم تا تراشه‌ها، سیستم‌های عامل، چارچوب‌ها، راه‌حل‌ها، Cloud، شیوه‌های تجاری، ابزارها، اسناد، نوشته‌ها، ایده‌ها و غیره را هرچه بیشتر با پاسخ‌هایی مرتبط کنیم که مردم در مهم‌ترین مشکلات زندگی معاصر نیاز دارند. این بالاترین جاه طلبی و قطب نما اخلاقی Espressif است. آقای Teo Swee Ann، بنیانگذار و مدیر عامل Espressif گفت.
اسپرسف برای خواندن و ایده ها ارزش قائل است. از آنجایی که ارتقای مداوم فناوری اینترنت اشیا نیازمندی‌های بالاتری را برای مهندسان ایجاد می‌کند، چگونه می‌توانیم به افراد بیشتری کمک کنیم تا به سرعت بر تراشه‌های اینترنت اشیا، سیستم‌های عامل، چارچوب‌های نرم‌افزاری، طرح‌های کاربردی و محصولات خدمات ابری تسلط پیدا کنند؟ به قول معروف، ماهیگیری را به مرد یاد بدهی بهتر از ماهی دادن به او است. در یک جلسه طوفان فکری، به ذهنمان رسید که می‌توانیم کتابی بنویسیم تا دانش کلیدی توسعه اینترنت اشیا را به طور منظم مرتب کنیم. ما موفق شدیم، به سرعت گروهی از مهندسان ارشد را جمع آوری کردیم، و تجربه تیم فنی را در برنامه نویسی تعبیه شده، سخت افزار اینترنت اشیا و توسعه نرم افزار ترکیب کردیم که همگی در انتشار این کتاب کمک کردند. در روند نوشتن، ما تمام تلاش خود را کردیم که عینی و منصف باشیم، پیله را خالی کنیم و از عبارات مختصر برای بیان پیچیدگی و جذابیت اینترنت اشیا استفاده کنیم. ما به دقت سؤالات رایج را خلاصه کردیم، به بازخوردها و پیشنهادات جامعه اشاره کردیم تا به سؤالات مطرح شده در فرآیند توسعه به وضوح پاسخ دهیم و دستورالعمل های کاربردی توسعه اینترنت اشیا را برای تکنسین ها و تصمیم گیرندگان مربوطه ارائه دهیم.
ساختار کتاب
این کتاب دیدگاهی مهندس محور دارد و دانش لازم برای توسعه پروژه اینترنت اشیا را گام به گام بیان می کند. از چهار بخش به شرح زیر تشکیل شده است:
· آماده سازی (فصل 1): این بخش معماری اینترنت اشیا، چارچوب پروژه معمولی اینترنت اشیا، پلتفرم ابری ESP RainMakerr و محیط توسعه ESP-IDF را معرفی می کند تا پایه ای محکم برای توسعه پروژه اینترنت اشیا ایجاد کند.
· توسعه سخت افزار و درایور (فصل 5): این قسمت بر اساس چیپست ESP6-C32، حداقل سیستم سخت افزاری و توسعه درایور را توضیح می دهد و کنترل تیرگی، درجه بندی رنگ و ارتباطات بی سیم را اجرا می کند.
· ارتباطات و کنترل بی سیم (فصل 7): این بخش طرح پیکربندی هوشمند Wi-Fi را بر اساس تراشه ESP11-C32، پروتکل های کنترل محلی و ابری، و کنترل محلی و از راه دور دستگاه ها توضیح می دهد. همچنین طرح هایی برای توسعه برنامه های گوشی های هوشمند، ارتقاء سیستم عامل و مدیریت نسخه ارائه می دهد.
· بهینه سازی و تولید انبوه (فصل 12-15): این بخش برای کاربردهای پیشرفته اینترنت اشیا با تمرکز بر بهینه سازی محصولات در مدیریت انرژی، بهینه سازی کم مصرف و امنیت افزایش یافته در نظر گرفته شده است. همچنین سوزاندن و آزمایش سیستم عامل در تولید انبوه و نحوه تشخیص وضعیت در حال اجرا و گزارش های سیستم عامل دستگاه را از طریق پلت فرم نظارت از راه دور ESP Insights معرفی می کند.

درباره کد منبع
خوانندگان می توانند سابق را اجرا کنندampبرنامه های موجود در این کتاب، یا با وارد کردن کد به صورت دستی یا با استفاده از کد منبع همراه کتاب. ما بر ترکیب تئوری و عمل تأکید می کنیم و بنابراین تقریباً در هر فصل یک بخش تمرین بر اساس پروژه Smart Light تنظیم می کنیم. همه کدها منبع باز هستند. خوانندگان می توانند کد منبع را دانلود کنند و در بخش های مربوط به این کتاب در GitHub و انجمن رسمی ما esp32.com بحث کنند. کد منبع باز این کتاب تابع شرایط مجوز آپاچی 2.0 است.
یادداشت نویسنده
این کتاب به طور رسمی توسط شرکت Espressif Systems و توسط مهندسین ارشد این شرکت تالیف شده است. برای مدیران و پرسنل تحقیق و توسعه در صنایع مرتبط با اینترنت اشیا، معلمان و دانشجویان رشته های مرتبط و علاقه مندان به حوزه اینترنت اشیا مناسب است. امیدواریم این کتاب بتواند به عنوان یک کتابچه راهنمای کار، یک مرجع و یک کتاب کنار تخت باشد تا مانند یک معلم و دوست خوب باشد.
در هنگام تالیف این کتاب، به برخی از نتایج تحقیقات مرتبط متخصصان، صاحب نظران و تکنسین های داخلی و خارجی اشاره کردیم و تمام تلاش خود را برای استناد به آنها بر اساس موازین دانشگاهی انجام دادیم. با این حال، اجتناب ناپذیر است که برخی از حذف ها، بنابراین ما در اینجا مایلیم احترام و تشکر عمیق خود را از همه نویسندگان مربوطه ابراز کنیم. علاوه بر این، ما اطلاعاتی را از اینترنت نقل کرده‌ایم، بنابراین از نویسندگان و ناشران اصلی تشکر می‌کنیم و عذرخواهی می‌کنیم که نمی‌توانیم منبع هر اطلاعاتی را ذکر کنیم.
برای تولید کتابی با کیفیت بالا، دورهای بحث داخلی را سازماندهی کرده ایم و از پیشنهادات و بازخوردهای خوانندگان آزمایشی و ویراستاران ناشر درس گرفته ایم. در اینجا، مایلیم مجدداً از کمک شما که همگی در این کار موفق نقش داشتند تشکر کنیم.
آخرین، اما مهمتر از همه، از همه کسانی که در Espressif سخت برای تولد و محبوبیت محصولات ما تلاش کردند، تشکر می کنیم.
توسعه پروژه های اینترنت اشیا شامل طیف وسیعی از دانش است. محدود به طول کتاب و همچنین سطح و تجربه نویسنده، حذف از قلم ها اجتناب ناپذیر است. لذا خواهشمندیم کارشناسان و خوانندگان به نقد و اصلاح اشتباهات ما بپردازند. اگر پیشنهادی برای این کتاب دارید، لطفاً با ما در book@espressif.com تماس بگیرید. ما مشتاقانه منتظر نظرات شما هستیم.

چگونه از این کتاب استفاده کنیم؟
کد پروژه های این کتاب متن باز بوده است. می توانید آن را از مخزن GitHub ما دانلود کنید و نظرات و سوالات خود را در انجمن رسمی ما به اشتراک بگذارید. GitHub: https://github.com/espressif/book-esp32c3-iot-projects انجمن: https://www.esp32.com/bookc3 در سرتاسر کتاب، قسمت هایی مانند شکل زیر برجسته شده است.
کد منبع در این کتاب، ما بر ترکیب تئوری و عمل تأکید می کنیم و بنابراین تقریباً در هر فصل یک بخش تمرین در مورد پروژه Smart Light تنظیم می کنیم. مراحل مربوطه و صفحه منبع بین دو خط که با علامت شروع می شود مشخص می شود tag کد منبع
نکته/نکات این جایی است که ممکن است برخی اطلاعات مهم و یادآوری برای اشکال زدایی موفق برنامه خود بیابید. آنها بین دو خط ضخیم که با علامت شروع می شوند مشخص می شوند tag توجه یا نکات.
اکثر دستورات این کتاب تحت لینوکس اجرا می شوند که توسط کاراکتر "$" تحریک می شوند. اگر دستور برای اجرا به امتیازات superuser نیاز داشته باشد، دستور با "#" جایگزین می شود. خط فرمان در سیستم های Mac "%" است، همانطور که در بخش 4.2.3 نصب ESP-IDF در Mac استفاده شده است.
متن اصلی در این کتاب در منشور چاپ خواهد شد، در حالی که کد examples، اجزاء، توابع، متغیرها، کد file نام ها، دایرکتوری های کد و رشته ها در Courier New خواهند بود.
دستورات یا متونی که باید توسط کاربر وارد شوند و دستوراتی که با فشردن کلید «Enter» می‌توانند وارد شوند با حروف پررنگ Courier New چاپ می‌شوند. گزارش‌ها و بلوک‌های کد در کادرهای آبی روشن ارائه می‌شوند.
Exampدر:
دوم، از esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py برای تولید باینری پارتیشن NVS استفاده کنید. file در هاست توسعه با دستور زیر:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –size NVS PARTITION SIZE

فصل 1

مقدمه

به

اینترنت اشیا

در پایان قرن بیستم، با ظهور شبکه های کامپیوتری و فناوری های ارتباطی، اینترنت به سرعت در زندگی مردم ادغام شد. همانطور که فناوری اینترنت به رشد خود ادامه می دهد، ایده اینترنت اشیا (IoT) متولد شد. IoT در لغت به معنای اینترنت است که در آن چیزها به هم متصل هستند. در حالی که اینترنت اصلی محدودیت‌های مکان و زمان را می‌شکند و فاصله بین «شخص و شخص» را کاهش می‌دهد، اینترنت اشیا «اشیا» را به یک مشارکت‌کننده مهم تبدیل می‌کند و «افراد» و «اشیا» را به هم نزدیک‌تر می‌کند. در آینده قابل پیش‌بینی، اینترنت اشیا قرار است به نیروی محرکه صنعت اطلاعات تبدیل شود.
بنابراین، اینترنت اشیا چیست؟
تعریف دقیق اینترنت اشیا دشوار است، زیرا معنا و دامنه آن دائماً در حال تغییر است. در سال 1995، بیل گیتس برای اولین بار ایده IoT را در کتاب خود به نام The Road Ahead مطرح کرد. به عبارت ساده، اینترنت اشیا اشیا را قادر می سازد تا از طریق اینترنت با یکدیگر تبادل اطلاعات کنند. هدف نهایی آن ایجاد «اینترنت همه چیز» است. این یک تفسیر اولیه از اینترنت اشیا و همچنین یک فانتزی از فناوری آینده است. سی سال بعد، با توسعه سریع اقتصاد و فناوری، فانتزی در حال تبدیل شدن به واقعیت است. از دستگاه‌های هوشمند، خانه‌های هوشمند، شهرهای هوشمند، اینترنت وسایل نقلیه و دستگاه‌های پوشیدنی گرفته تا «متاور» که توسط فناوری‌های اینترنت اشیا پشتیبانی می‌شود، مفاهیم جدیدی دائما در حال ظهور هستند. در این فصل با توضیحی در مورد معماری اینترنت اشیا شروع می کنیم و سپس رایج ترین اپلیکیشن اینترنت اشیا یعنی خانه هوشمند را معرفی می کنیم تا به شما در درک روشنی از اینترنت اشیا کمک کنیم.
1.1 معماری اینترنت اشیا
اینترنت اشیا شامل چندین فناوری است که نیازها و اشکال کاربردی متفاوتی در صنایع مختلف دارند. به منظور مرتب سازی ساختار، فناوری های کلیدی و ویژگی های کاربردی اینترنت اشیا، لازم است یک معماری واحد و یک سیستم فنی استاندارد ایجاد شود. در این کتاب، معماری اینترنت اشیا به سادگی به چهار لایه تقسیم شده است: لایه درک و کنترل، لایه شبکه، لایه پلت فرم و لایه کاربردی.
لایه ادراک و کنترل به عنوان اساسی ترین عنصر معماری اینترنت اشیا، لایه ادراک و کنترل هسته اصلی تحقق حس جامع اینترنت اشیا است. وظیفه اصلی آن جمع آوری، شناسایی و کنترل اطلاعات است. متشکل از دستگاه های مختلف با قابلیت درک،
3

شناسایی، کنترل و اجرا، و مسئول بازیابی و تجزیه و تحلیل داده هایی مانند خواص مواد، روندهای رفتاری و وضعیت دستگاه است. به این ترتیب، اینترنت اشیا دنیای فیزیکی واقعی را تشخیص می دهد. علاوه بر این، این لایه همچنین قادر به کنترل وضعیت دستگاه است.
رایج ترین دستگاه های این لایه سنسورهای مختلف هستند که نقش مهمی در جمع آوری و شناسایی اطلاعات دارند. حسگرها مانند اندام های حسی انسان هستند، مانند حسگرهای حساس به نور برابر با بینایی، حسگرهای صوتی برای شنوایی، حسگرهای گاز برای بویایی، و حسگرهای حساس به فشار و دما برای لمس کردن. با تمام این " اندام های حسی "، اشیاء "زنده" می شوند و قادر به درک، تشخیص و دستکاری هوشمندانه جهان فیزیکی هستند.
لایه شبکه وظیفه اصلی لایه شبکه انتقال اطلاعات از جمله داده های به دست آمده از لایه درک و کنترل به هدف مشخص شده و همچنین دستورات صادر شده از لایه کاربردی به لایه درک و کنترل است. این به عنوان یک پل ارتباطی مهم برای اتصال لایه های مختلف یک سیستم اینترنت اشیا عمل می کند. برای راه اندازی یک مدل پایه از اینترنت اشیا، شامل دو مرحله برای ادغام اشیا در یک شبکه است: دسترسی به اینترنت و انتقال از طریق اینترنت.
دسترسی به اینترنت اینترنت ارتباط متقابل بین فرد و فرد را امکان پذیر می کند، اما نمی تواند چیزها را در خانواده بزرگ گنجاند. قبل از ظهور اینترنت اشیا، بیشتر چیزها «قابلیت شبکه» نبودند. به لطف توسعه مداوم فناوری، اینترنت اشیاء موفق می شود اشیا را به اینترنت متصل کند، بنابراین ارتباط متقابل بین "مردم و اشیا" و "اشیا و چیزها" را تحقق می بخشد. دو راه متداول برای اجرای اتصال به اینترنت وجود دارد: دسترسی به شبکه سیمی و دسترسی به شبکه بی سیم.
روش های دسترسی به شبکه سیمی شامل اترنت، ارتباط سریال (به عنوان مثال، RS-232، RS-485) و USB است، در حالی که دسترسی به شبکه بی سیم به ارتباطات بی سیم بستگی دارد، که می تواند به ارتباطات بی سیم کوتاه برد و ارتباطات بی سیم دوربرد تقسیم شود.
ارتباطات بی سیم برد کوتاه شامل ZigBee، Bluetoothr، Wi-Fi، Near-Field Communication (NFC) و رادیویی Frequency Identification (RFID) است. ارتباطات بی سیم دوربرد شامل ارتباطات نوع ماشین پیشرفته (eMTC)، LoRa، اینترنت اشیاء باند باریک (NB-IoT)، 2G، 3G، 4G، 5G و غیره است.
انتقال از طریق اینترنت روش های مختلف دسترسی به اینترنت منجر به پیوند انتقال فیزیکی مربوط به داده ها می شود. نکته بعدی این است که تصمیم بگیرید از کدام پروتکل ارتباطی برای انتقال داده ها استفاده کنید. در مقایسه با پایانه های اینترنتی، اکثر پایانه های اینترنت اشیا در حال حاضر کمتر هستند
4 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

منابع موجود، مانند عملکرد پردازش، ظرفیت ذخیره‌سازی، نرخ شبکه و غیره، بنابراین لازم است پروتکل ارتباطی انتخاب شود که منابع کمتری را در برنامه‌های IoT اشغال کند. دو پروتکل ارتباطی وجود دارد که امروزه به طور گسترده مورد استفاده قرار می گیرند: انتقال تله متری صف پیام (MQTT) و پروتکل برنامه محدود (CoAP).
لایه پلتفرم لایه پلتفرم عمدتا به پلتفرم های ابری اینترنت اشیا اشاره دارد. هنگامی که تمام پایانه های اینترنت اشیا به شبکه متصل می شوند، داده های آنها باید در یک پلت فرم ابری اینترنت اشیا جمع شوند تا محاسبه و ذخیره شوند. لایه پلتفرم عمدتاً از برنامه های IoT در تسهیل دسترسی و مدیریت دستگاه های عظیم پشتیبانی می کند. ترمینال های اینترنت اشیا را به پلتفرم ابری متصل می کند، داده های ترمینال را جمع آوری می کند و دستوراتی را به پایانه ها صادر می کند تا کنترل از راه دور را پیاده سازی کند. به عنوان یک سرویس میانی برای تخصیص تجهیزات به برنامه‌های صنعتی، لایه پلتفرم نقش اتصالی را در کل معماری اینترنت اشیا ایفا می‌کند، منطق تجاری انتزاعی و مدل داده‌های اصلی استاندارد شده را حمل می‌کند، که نه تنها می‌تواند دسترسی سریع به دستگاه‌ها را درک کند، بلکه قابلیت‌های ماژولار قدرتمندی را نیز ارائه می‌کند. برای رفع نیازهای مختلف در سناریوهای کاربردی صنعت. لایه پلت فرم عمدتا شامل ماژول های کاربردی مانند دسترسی به دستگاه، مدیریت دستگاه، مدیریت امنیت، ارتباطات پیام، نظارت بر عملیات و نگهداری و برنامه های داده است.
· دسترسی به دستگاه، تحقق اتصال و ارتباط بین پایانه ها و پلتفرم های ابری اینترنت اشیا.
· مدیریت دستگاه، از جمله عملکردهایی مانند ایجاد دستگاه، نگهداری دستگاه، تبدیل داده ها، همگام سازی داده ها و توزیع دستگاه.
· مدیریت امنیت، تضمین امنیت انتقال داده های اینترنت اشیا از دیدگاه احراز هویت امنیتی و امنیت ارتباطات.
· ارتباط پیام شامل سه جهت انتقال، یعنی ترمینال داده ها را به پلتفرم ابر اینترنت اشیا ارسال می کند، پلتفرم ابری اینترنت اشیا داده ها را به سمت سرور یا سایر پلتفرم های ابری اینترنت اشیا ارسال می کند و سمت سرور از راه دور دستگاه های اینترنت اشیا را کنترل می کند.
· نظارت بر O&M، شامل نظارت و تشخیص، ارتقاء سیستم عامل، اشکال زدایی آنلاین، خدمات گزارش و غیره.
· برنامه های کاربردی داده، شامل ذخیره سازی، تجزیه و تحلیل و کاربرد داده ها.
لایه برنامه لایه برنامه از داده های لایه پلتفرم برای مدیریت برنامه، فیلتر کردن و پردازش آنها با ابزارهایی مانند پایگاه داده و نرم افزار تجزیه و تحلیل استفاده می کند. داده های به دست آمده را می توان برای برنامه های کاربردی اینترنت اشیا در دنیای واقعی مانند مراقبت های بهداشتی هوشمند، کشاورزی هوشمند، خانه های هوشمند و شهرهای هوشمند استفاده کرد.
البته، معماری اینترنت اشیا را می توان به لایه های بیشتری تقسیم کرد، اما مهم نیست که از چند لایه تشکیل شده باشد، اصل اساسی اساساً یکسان است. یادگیری
فصل 1. مقدمه ای بر اینترنت اشیا 5

در مورد معماری اینترنت اشیا به تعمیق درک ما از فناوری‌های اینترنت اشیا و ایجاد پروژه‌های کاملاً کاربردی اینترنت اشیا کمک می‌کند.
1.2 کاربرد اینترنت اشیا در خانه های هوشمند
اینترنت اشیا در همه اقشار جامعه نفوذ کرده است و نزدیکترین اپلیکیشن اینترنت اشیا به ما خانه هوشمند است. بسیاری از لوازم سنتی در حال حاضر به یک یا چند دستگاه اینترنت اشیا مجهز شده اند و بسیاری از خانه های تازه ساخته شده از همان ابتدا با فناوری اینترنت اشیا طراحی شده اند. شکل 1.1 برخی از دستگاه های رایج خانه هوشمند را نشان می دهد.
شکل 1.1. دستگاه های رایج خانه هوشمند توسعه خانه هوشمند را می توان به سادگی به محصولات هوشمند تقسیم کردtage، اتصال صحنه stage و هوشمند stage، همانطور که در شکل 1.2 نشان داده شده است.
شکل 1.2. توسعه stage of smart home 6 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

اولین سtage در مورد محصولات هوشمند است. متفاوت از خانه‌های سنتی، در خانه‌های هوشمند، دستگاه‌های IoT سیگنال‌هایی را با حسگر دریافت می‌کنند و از طریق فناوری‌های ارتباطی بی‌سیم مانند Wi-Fi، Bluetooth LE و ZigBee به شبکه متصل می‌شوند. کاربران می توانند محصولات هوشمند را به روش های مختلفی مانند برنامه های گوشی هوشمند، دستیار صوتی، کنترل بلندگوی هوشمند و غیره کنترل کنند.tage بر اتصال صحنه تمرکز می کند. در این سtage، توسعه دهندگان دیگر کنترل یک محصول هوشمند را در نظر نمی گیرند، بلکه دو یا چند محصول هوشمند را به هم متصل می کنند، تا حدی خودکار می کنند و در نهایت حالت صحنه سفارشی را تشکیل می دهند. برای مثالampهنگامی که کاربر دکمه حالت صحنه را فشار می دهد، چراغ ها، پرده ها و تهویه مطبوع به طور خودکار با تنظیمات از پیش تنظیم شده تطبیق داده می شوند. البته، این پیش شرط وجود دارد که منطق پیوند به راحتی تنظیم شود، از جمله شرایط ماشه و اقدامات اجرا. تصور کنید که حالت گرمایش تهویه مطبوع زمانی فعال می شود که دمای داخل خانه به کمتر از 10 درجه سانتی گراد برسد. که در ساعت 7 صبح، موسیقی برای بیدار کردن کاربر پخش می شود، پرده های هوشمند باز می شوند و پلوپز یا توستر نان از طریق یک سوکت هوشمند شروع به کار می کند. وقتی کاربر از جای خود بلند می شود و شستشو را تمام می کند، صبحانه از قبل سرو می شود تا در رفتن به محل کار تاخیری ایجاد نشود. چقدر زندگی ما راحت شده است! سومین سtage به هوش s می رودtagه. با دسترسی بیشتر به دستگاه های خانه هوشمند، انواع داده های تولید شده نیز افزایش می یابد. با کمک محاسبات ابری، کلان داده و هوش مصنوعی، مانند یک «مغز باهوش‌تر» در خانه‌های هوشمند کاشته شده است که دیگر نیازی به دستورات مکرر از سوی کاربر ندارد. آنها داده‌های تعاملات قبلی را جمع‌آوری می‌کنند و الگوهای رفتاری و ترجیحات کاربر را یاد می‌گیرند تا فعالیت‌ها را خودکار کنند، از جمله ارائه توصیه‌هایی برای تصمیم‌گیری. در حال حاضر، اکثر خانه های هوشمند در صحنه اتصالات هستندtagه. با افزایش ضریب نفوذ و هوشمندی محصولات هوشمند، موانع بین پروتکل های ارتباطی برداشته می شود. در آینده، خانه‌های هوشمند واقعاً «هوشمند» خواهند شد، درست مانند سیستم هوش مصنوعی Jarvis در Iron Man، که نه تنها می‌تواند به کاربر کمک کند دستگاه‌های مختلف را کنترل کند، امور روزانه را اداره کند، بلکه قدرت محاسباتی و توانایی تفکر فوق‌العاده‌ای نیز دارد. در s هوشمندtagه، انسان خدمات بهتری هم از نظر کمی و هم از نظر کیفی دریافت خواهد کرد.
فصل 1. مقدمه ای بر اینترنت اشیا 7

8 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

فصل معرفی و تمرین 2 پروژه اینترنت اشیا
در فصل 1، معماری اینترنت اشیا و نقش ها و روابط متقابل لایه درک و کنترل، لایه شبکه، لایه پلت فرم و لایه کاربردی و همچنین توسعه خانه هوشمند را معرفی کردیم. با این حال، درست مانند زمانی که ما نقاشی را یاد می گیریم، دانستن دانش تئوریک به اندازه کافی دور از ذهن است. ما باید «دست‌هایمان را کثیف کنیم» تا پروژه‌های اینترنت اشیا را عملی کنیم تا بتوانیم واقعاً بر فناوری تسلط داشته باشیم. علاوه بر این، هنگامی که یک پروژه به سمت تولید انبوه حرکت می کندtage، لازم است عوامل بیشتری مانند اتصال به شبکه، پیکربندی، تعامل پلتفرم ابری اینترنت اشیا، مدیریت و به روز رسانی سیستم عامل، مدیریت تولید انبوه و پیکربندی امنیتی در نظر گرفته شود. بنابراین، هنگام توسعه یک پروژه کامل اینترنت اشیا باید به چه نکاتی توجه کنیم؟ در فصل اول اشاره کردیم که خانه هوشمند یکی از رایج ترین سناریوهای کاربردی اینترنت اشیا است و چراغ های هوشمند یکی از ابتدایی ترین و کاربردی ترین لوازمی هستند که می توانند در خانه ها، هتل ها، سالن های ورزشی، بیمارستان ها و ... استفاده شوند. در این کتاب، ساخت یک پروژه نور هوشمند را به عنوان نقطه شروع در نظر می گیریم، اجزا و ویژگی های آن را توضیح می دهیم، و راهنمایی در مورد توسعه پروژه ارائه می دهیم. امیدواریم که بتوانید از این مورد استنباط کنید تا برنامه های کاربردی اینترنت اشیا بیشتری ایجاد کنید.
2.1 مقدمه ای بر پروژه های معمولی اینترنت اشیا
از نظر توسعه، ماژول‌های کاربردی اولیه پروژه‌های اینترنت اشیا را می‌توان به توسعه نرم‌افزار و سخت‌افزار دستگاه‌های اینترنت اشیا، توسعه اپلیکیشن مشتری و توسعه پلتفرم ابری اینترنت اشیا طبقه‌بندی کرد. مهم است که ماژول های عملکردی اصلی را که در این بخش بیشتر توضیح داده می شود، توضیح دهیم.
2.1.1 ماژول های پایه برای دستگاه های مشترک اینترنت اشیا
توسعه نرم افزار و سخت افزار دستگاه های IoT شامل ماژول های اساسی زیر است: جمع آوری داده ها
به عنوان لایه پایینی معماری اینترنت اشیا، دستگاه‌های اینترنت اشیا در لایه درک و کنترل، حسگرها و دستگاه‌ها را از طریق تراشه‌ها و لوازم جانبی خود برای دستیابی به جمع‌آوری داده و کنترل عملیات به هم متصل می‌کنند.
9

اتصال حساب و پیکربندی اولیه برای اکثر دستگاه های اینترنت اشیا، اتصال حساب و پیکربندی اولیه در یک فرآیند عملیاتی تکمیل می شود.ample، اتصال دستگاه ها با کاربران با پیکربندی شبکه Wi-Fi.
تعامل با پلتفرم‌های ابری اینترنت اشیا برای نظارت و کنترل دستگاه‌های اینترنت اشیا، اتصال آنها به پلتفرم‌های ابری اینترنت اشیا نیز ضروری است تا از طریق تعامل بین یکدیگر، دستورات و وضعیت را گزارش کنند.
کنترل دستگاه هنگامی که با پلتفرم‌های ابری اینترنت اشیا متصل می‌شوند، دستگاه‌ها می‌توانند با ابر ارتباط برقرار کنند و ثبت، محدود یا کنترل شوند. کاربران می‌توانند از طریق پلتفرم‌های ابری اینترنت اشیا یا پروتکل‌های ارتباطی محلی، وضعیت محصول را جویا شوند و سایر عملیات‌ها را بر روی برنامه تلفن هوشمند انجام دهند.
دستگاه‌های IoT ارتقاء سفت‌افزار نیز می‌توانند بر اساس نیاز تولیدکنندگان به ارتقای سیستم‌افزار دست یابند. با دریافت دستورات ارسال شده توسط ابر، ارتقاء سیستم عامل و مدیریت نسخه محقق خواهد شد. با استفاده از این ویژگی ارتقای سیستم عامل، می توانید به طور مداوم عملکرد دستگاه های اینترنت اشیا را بهبود ببخشید، نقص ها را برطرف کنید و تجربه کاربری را بهبود بخشید.
2.1.2 ماژول های اصلی برنامه های کاربردی مشتری
برنامه های مشتری (به عنوان مثال، برنامه های تلفن هوشمند) عمدتاً شامل ماژول های اساسی زیر هستند:
سیستم حساب و مجوز از مجوز حساب و دستگاه پشتیبانی می کند.
کنترل دستگاه برنامه های تلفن هوشمند معمولاً به عملکردهای کنترلی مجهز هستند. کاربران می توانند به راحتی به دستگاه های IoT متصل شوند و آنها را در هر زمان و هر مکان از طریق برنامه های گوشی های هوشمند مدیریت کنند. در یک خانه هوشمند دنیای واقعی، دستگاه‌ها عمدتاً از طریق برنامه‌های گوشی هوشمند کنترل می‌شوند که نه تنها مدیریت هوشمند دستگاه‌ها را ممکن می‌سازد، بلکه در هزینه نیروی انسانی نیز صرفه‌جویی می‌کند. بنابراین، کنترل دستگاه برای برنامه های مشتری، مانند کنترل ویژگی عملکرد دستگاه، کنترل صحنه، زمان بندی، کنترل از راه دور، اتصال دستگاه و غیره ضروری است. کاربران خانه هوشمند همچنین می توانند صحنه ها را بر اساس نیازهای شخصی، کنترل روشنایی، لوازم خانگی، ورودی سفارشی کنند. و غیره، تا زندگی خانگی راحت تر و راحت تر شود. آنها می توانند تهویه مطبوع را زمان بندی کنند، آن را از راه دور خاموش کنند، پس از باز شدن قفل در، چراغ راهرو را به طور خودکار روشن کنند، یا با یک دکمه به حالت "سینما" تغییر دهند.
برنامه‌های Client Notification وضعیت بی‌درنگ دستگاه‌های IoT را به‌روزرسانی می‌کنند و در صورت غیرعادی شدن دستگاه‌ها هشدار ارسال می‌کنند.
10 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

خدمات پس از فروش مشتری برنامه های گوشی های هوشمند می توانند خدمات پس از فروش محصولات را ارائه دهند تا مشکلات مربوط به خرابی دستگاه اینترنت اشیا و عملیات فنی را به موقع حل کنند.
عملکردهای ویژه برای پاسخگویی به نیازهای کاربران مختلف، عملکردهای دیگری مانند لرزش، NFC، GPS و غیره ممکن است اضافه شود. GPS می تواند به تنظیم دقت عملیات صحنه بر اساس مکان و فاصله کمک کند، در حالی که عملکرد لرزش به کاربران اجازه می دهد تا تنظیمات را تنظیم کنند. دستوراتی که باید برای دستگاه یا صحنه خاصی با تکان دادن اجرا شوند.
2.1.3 مقدمه ای بر بسترهای ابری مشترک IoT
پلتفرم ابری اینترنت اشیا یک پلتفرم همه کاره است که عملکردهایی مانند مدیریت دستگاه، ارتباطات امنیت داده ها و مدیریت اعلان ها را یکپارچه می کند. با توجه به گروه هدف و دسترسی، پلتفرم‌های ابری اینترنت اشیا را می‌توان به پلت‌فرم‌های ابری عمومی اینترنت اشیا (از این پس به عنوان «ابر عمومی» نامیده می‌شود) و پلت‌فرم‌های ابری خصوصی اینترنت اشیاء (از این پس «ابر خصوصی» نامیده می‌شود) تقسیم کرد.
ابر عمومی معمولاً پلتفرم‌های ابری مشترک اینترنت اشیا را برای شرکت‌ها یا افراد نشان می‌دهد که توسط ارائه‌دهندگان پلتفرم اداره و نگهداری می‌شوند و از طریق اینترنت به اشتراک گذاشته می‌شوند. این می تواند رایگان یا کم هزینه باشد و خدماتی را در سراسر شبکه عمومی باز ارائه می دهد، مانند Alibaba Cloud، Tencent Cloud، Baidu Cloud، AWS IoT، Google IoT و غیره. به عنوان یک پلت فرم پشتیبانی، ابر عمومی می تواند ارائه دهندگان خدمات بالادستی و کاربران نهایی پایین دستی برای ایجاد یک زنجیره ارزش و اکوسیستم جدید.
ابر خصوصی فقط برای استفاده سازمانی ساخته شده است، بنابراین بهترین کنترل را بر داده ها، امنیت و کیفیت خدمات تضمین می کند. خدمات و زیرساخت آن به طور جداگانه توسط شرکت ها نگهداری می شود و سخت افزار و نرم افزار پشتیبانی نیز به کاربران خاص اختصاص داده شده است. شرکت‌ها می‌توانند خدمات ابری را برای رفع نیازهای کسب‌وکار خود سفارشی کنند. در حال حاضر، برخی از تولیدکنندگان خانه‌های هوشمند، پلتفرم‌های ابری خصوصی اینترنت اشیا را دریافت کرده‌اند و برنامه‌های کاربردی خانه هوشمند را بر اساس آنها توسعه داده‌اند.
ابر عمومی و ابر خصوصی دارای مزیت خاص خود هستندtages که بعدا توضیح داده خواهد شد.
برای دستیابی به اتصال ارتباطی، لازم است حداقل توسعه تعبیه شده در سمت دستگاه، همراه با سرورهای تجاری، پلتفرم های ابری اینترنت اشیا و برنامه های گوشی های هوشمند تکمیل شود. در مواجهه با چنین پروژه عظیمی، ابر عمومی معمولاً کیت‌های توسعه نرم‌افزاری را برای برنامه‌های جانبی دستگاه و گوشی‌های هوشمند برای سرعت بخشیدن به این فرآیند ارائه می‌کند. هر دو ابر عمومی و خصوصی خدماتی از جمله دسترسی به دستگاه، مدیریت دستگاه، سایه دستگاه و بهره برداری و نگهداری را ارائه می دهند.
پلتفرم های ابری اینترنت اشیاء دسترسی به دستگاه باید نه تنها رابط هایی را برای دسترسی دستگاه با استفاده از پروتکل ها فراهم کنند
فصل 2. معرفی و تمرین پروژه های اینترنت اشیا 11

مانند MQTT، CoAP، HTTPS و Webسوکت، و همچنین عملکرد احراز هویت امنیتی دستگاه برای مسدود کردن دستگاه های جعلی و غیرقانونی، به طور موثر خطر به خطر افتادن را کاهش می دهد. چنین احراز هویتی معمولاً از مکانیزم‌های مختلفی پشتیبانی می‌کند، بنابراین زمانی که دستگاه‌ها به تولید انبوه می‌رسند، لازم است گواهی دستگاه مطابق مکانیزم احراز هویت انتخاب شده از قبل اختصاص داده شود و آن را در دستگاه‌ها بسوزانیم.
مدیریت دستگاه عملکرد مدیریت دستگاه ارائه شده توسط پلتفرم‌های ابری اینترنت اشیا نه تنها می‌تواند به سازندگان کمک کند تا وضعیت فعال‌سازی و وضعیت آنلاین دستگاه‌های خود را در زمان واقعی نظارت کنند، بلکه گزینه‌هایی مانند افزودن/حذف دستگاه‌ها، بازیابی، افزودن/حذف گروه‌ها، ارتقاء سیستم‌افزار را نیز امکان‌پذیر می‌سازد. و مدیریت نسخه
پلتفرم‌های ابری سایه دستگاه اینترنت اشیا می‌توانند یک نسخه مجازی دائمی (سایه دستگاه) برای هر دستگاه ایجاد کنند و وضعیت سایه دستگاه را می‌توان با اپلیکیشن گوشی هوشمند یا دستگاه‌های دیگر از طریق پروتکل‌های انتقال اینترنت همگام‌سازی و به دست آورد. Device shadow آخرین وضعیت گزارش شده و وضعیت مورد انتظار هر دستگاه را ذخیره می کند و حتی اگر دستگاه آفلاین باشد، همچنان می تواند با فراخوانی API ها وضعیت را به دست آورد. Device shadow API های همیشه روشن را ارائه می دهد که ساخت برنامه های تلفن هوشمند را که با دستگاه ها تعامل دارند آسان تر می کند.
بهره برداری و نگهداری عملکرد O&M شامل سه جنبه است: · نمایش اطلاعات آماری در مورد دستگاه های اینترنت اشیا و اعلان ها. · مدیریت ورود به سیستم امکان بازیابی اطلاعات در مورد رفتار دستگاه، بالا/پایین جریان پیام و محتوای پیام را فراهم می کند. · اشکال زدایی دستگاه از تحویل فرمان، به روز رسانی پیکربندی و بررسی تعامل بین پلتفرم های ابری اینترنت اشیا و پیام های دستگاه پشتیبانی می کند.
2.2 تمرین: پروژه نور هوشمند
پس از مقدمه نظری در هر فصل، بخش تمرینی مربوط به پروژه Smart Light را خواهید یافت تا به شما کمک کند تجربه عملی داشته باشید. این پروژه بر اساس تراشه ESP32-C3 Espressif و پلتفرم ESP RainMaker IoT Cloud است و سخت افزار ماژول بی سیم در محصولات نور هوشمند، نرم افزار تعبیه شده برای دستگاه های هوشمند مبتنی بر ESP32C3، برنامه های گوشی های هوشمند و تعامل ESP RainMaker را پوشش می دهد.
کد منبع برای یادگیری بهتر و توسعه تجربه، پروژه در این کتاب منبع باز شده است. می توانید کد منبع را از مخزن GitHub ما در https://github دانلود کنید. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

2.2.1 ساختار پروژه
پروژه Smart Light از سه بخش تشکیل شده است: i. دستگاه های نور هوشمند مبتنی بر ESP32-C3، مسئول تعامل با سیستم عامل های ابری اینترنت اشیا و کنترل سوئیچ، روشنایی و دمای رنگ LED l هستند.amp مهره ها ii برنامه‌های گوشی‌های هوشمند (از جمله برنامه‌های تبلت که بر روی Android و iOS اجرا می‌شوند)، مسئول پیکربندی شبکه محصولات نور هوشمند، و همچنین پرس و جو و کنترل وضعیت آنها هستند.
III. یک پلتفرم ابری اینترنت اشیا مبتنی بر ESP RainMaker. برای ساده سازی، ما پلتفرم ابری اینترنت اشیا و سرور کسب و کار را به عنوان یک کل در این کتاب در نظر می گیریم. جزئیات در مورد ESP RainMaker در فصل 3 ارائه خواهد شد.
مطابقت بین ساختار پروژه Smart Light و معماری اینترنت اشیا در شکل 2.1 نشان داده شده است.
شکل 2.1. ساختار پروژه نور هوشمند
2.2.2 توابع پروژه
بر اساس ساختار، عملکردهای هر قسمت به شرح زیر است. دستگاه های نور هوشمند
· پیکربندی و اتصال شبکه. · کنترل PWM LED، مانند سوئیچ، روشنایی، دمای رنگ، و غیره · اتوماسیون یا کنترل صحنه، به عنوان مثال، سوئیچ زمان. · رمزگذاری و بوت امن فلش. · ارتقاء سیستم عامل و مدیریت نسخه.
فصل 2. معرفی و تمرین پروژه های اینترنت اشیا 13

برنامه های گوشی های هوشمند · پیکربندی شبکه و اتصال دستگاه. · کنترل محصول نور هوشمند، مانند سوئیچ، روشنایی، دمای رنگ، و غیره · تنظیمات خودکار یا صحنه، به عنوان مثال، سوئیچ زمان. · کنترل محلی / از راه دور. · ثبت نام کاربر، ورود به سیستم و غیره.
پلتفرم ابری IoT ESP RainMaker · فعال کردن دسترسی به دستگاه اینترنت اشیا. · ارائه APIهای عملیات دستگاه قابل دسترسی به برنامه های گوشی های هوشمند. · ارتقاء سیستم عامل و مدیریت نسخه.
2.2.3 آماده سازی سخت افزار
اگر علاقه مند به اجرای پروژه هستید، به سخت افزار زیر نیز نیاز خواهید داشت: چراغ های هوشمند، تلفن های هوشمند، روترهای Wi-Fi و رایانه ای که الزامات نصب محیط توسعه را برآورده می کند. چراغ های هوشمند
چراغ های هوشمند نوع جدیدی از لامپ ها هستند که شکل آنها مانند لامپ های رشته ای عمومی است. یک چراغ هوشمند از منبع تغذیه تنظیم‌شده با خازن، ماژول بی‌سیم (با ESP32-C3 داخلی)، کنترل‌کننده LED و ماتریس LED RGB تشکیل شده است. هنگام اتصال به برق، ولتاژ 15 ولت DCtagخروجی e پس از پایین آمدن خازن، تصحیح دیود و تنظیم انرژی برای کنترلر LED و ماتریس LED فراهم می کند. کنترل‌کننده LED می‌تواند به طور خودکار سطوح بالا و پایین را در فواصل زمانی مشخص ارسال کند، ماتریس LED RGB را بین بسته (چراغ‌ها روشن) و باز (چراغ‌ها خاموش) تغییر دهد، به طوری که می‌تواند فیروزه‌ای، زرد، سبز، بنفش، آبی، قرمز و نور سفید ماژول بی سیم وظیفه اتصال به روتر وای فای، دریافت و گزارش وضعیت چراغ های هوشمند و ارسال دستورات کنترل LED را بر عهده دارد.
شکل 2.2. یک چراغ هوشمند شبیه سازی شده
در اوایل توسعه سtage، می توانید یک نور هوشمند را با استفاده از برد ESP32-C3DevKitM-1 متصل به RGB LED l شبیه سازی کنید.amp مهره ها (شکل 2.2 را ببینید). اما شما باید
14 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

توجه داشته باشید که این تنها راه برای مونتاژ چراغ هوشمند نیست. طراحی سخت افزاری پروژه در این کتاب فقط شامل یک ماژول بی سیم (با ESP32-C3 داخلی) است، اما یک طراحی سخت افزاری کامل نور هوشمند نیست. علاوه بر این، Espressif همچنین یک برد توسعه صوتی مبتنی بر ESP32-C3 ESP32C3-Lyra برای کنترل نورها با صدا تولید می کند. این برد دارای رابط هایی برای میکروفون و بلندگو است و می تواند نوارهای LED را کنترل کند. می توان از آن برای توسعه پخش کننده های صوتی بسیار کم هزینه و با کارایی بالا و نوارهای نور ریتم استفاده کرد. شکل 2.3 یک برد ESP32-C3Lyra را نشان می دهد که با یک نوار از 40 چراغ LED متصل شده است.
شکل 2.3. ESP32-C3-Lyra با نوار 40 چراغ LED متصل شده است
تلفن‌های هوشمند (اندروید/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 گیگاهرتز) یا دو باند (2.4 گیگاهرتز و 5 گیگاهرتز) را انتخاب کنید.
یک محیط توسعه کامپیوتر (Linux/macOS/Windows) در فصل 4 معرفی خواهد شد. فصل 2. معرفی و تمرین پروژه های IoT 15

2.2.4 فرآیند توسعه
شکل 2.4. مراحل توسعه پروژه Smart Light
طراحی سخت افزار طراحی سخت افزار دستگاه های اینترنت اشیا برای یک پروژه اینترنت اشیا ضروری است. یک پروژه کامل نور هوشمند برای تولید الamp کار تحت منبع تغذیه تولید کنندگان مختلف l را تولید می کنندampسبک‌ها و انواع درایورهای متفاوتی دارند، اما ماژول‌های بی‌سیم آنها معمولاً عملکرد یکسانی دارند. برای ساده‌سازی فرآیند توسعه پروژه Smart Ligh، این کتاب فقط طراحی سخت‌افزار و توسعه نرم‌افزار ماژول‌های بی‌سیم را پوشش می‌دهد.
پیکربندی پلتفرم ابر اینترنت اشیا برای استفاده از پلتفرم‌های ابری اینترنت اشیا، باید پروژه‌هایی را در باطن پیکربندی کنید، مانند ایجاد محصولات، ایجاد دستگاه‌ها، تنظیم ویژگی‌های دستگاه و غیره.
توسعه نرم‌افزار تعبیه‌شده برای دستگاه‌های اینترنت اشیا، عملکردهای مورد انتظار را با ESP-IDF، SDK کنار دستگاه Espressif، از جمله اتصال به پلت‌فرم‌های ابری اینترنت اشیا، توسعه درایورهای LED، و ارتقای سیستم‌افزار اجرا کنید.
توسعه برنامه گوشی های هوشمند برنامه های تلفن هوشمند را برای سیستم های Android و iOS توسعه دهید تا ثبت نام کاربر و ورود به سیستم، کنترل دستگاه و سایر عملکردها را درک کنید.
بهینه‌سازی دستگاه اینترنت اشیا هنگامی که توسعه اولیه عملکردهای دستگاه اینترنت اشیا تکمیل شد، ممکن است به کارهای بهینه‌سازی مانند بهینه‌سازی نیرو روی بیاورید.
تست تولید انبوه آزمایش های تولید انبوه را طبق استانداردهای مرتبط انجام دهید، مانند تست عملکرد تجهیزات، تست پیری، تست RF و غیره.
علیرغم مراحل ذکر شده در بالا، پروژه Smart Light لزوماً مشمول چنین رویه ای نیست، زیرا وظایف مختلف نیز می توانند به طور همزمان انجام شوند. برای مثالampنرم‌افزارهای تعبیه‌شده و برنامه‌های تلفن هوشمند را می‌توان به صورت موازی توسعه داد. برخی از مراحل نیز ممکن است نیاز به تکرار داشته باشند، مانند بهینه سازی دستگاه IoT و آزمایش تولید انبوه.
16 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

2.3 خلاصه
در این فصل، ابتدا اجزای اساسی و ماژول‌های کاربردی یک پروژه اینترنت اشیا را توضیح دادیم، سپس مورد Smart Light را برای تمرین، با اشاره به ساختار، عملکردها، آماده‌سازی سخت‌افزار و فرآیند توسعه آن معرفی کردیم. خوانندگان می توانند از این تمرین استنباط کنند و مطمئن شوند که پروژه های اینترنت اشیا را با حداقل اشتباه در آینده انجام می دهند.
فصل 2. معرفی و تمرین پروژه های اینترنت اشیا 17

18 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

فصل 3

مقدمه

به

ESP

باران ساز

اینترنت اشیا (IoT) امکانات بی پایانی را برای تغییر شیوه زندگی مردم ارائه می دهد، با این حال توسعه مهندسی اینترنت اشیا پر از چالش است. با استفاده از ابرهای عمومی، سازندگان ترمینال می توانند عملکرد محصول را از طریق راه حل های زیر پیاده سازی کنند:
بر اساس پلتفرم های ابری ارائه دهندگان راه حل در این روش، سازندگان ترمینال فقط باید سخت افزار محصول را طراحی کنند، سپس با استفاده از ماژول ارتباطی ارائه شده، سخت افزار را به ابر متصل کرده و عملکردهای محصول را طبق دستورالعمل ها پیکربندی کنند. این یک رویکرد کارآمد است زیرا نیاز به توسعه سمت سرور و برنامه کاربردی و عملیات و نگهداری (O&M) را از بین می برد. این به سازندگان ترمینال اجازه می دهد تا بر طراحی سخت افزار بدون در نظر گرفتن اجرای ابر تمرکز کنند. با این حال، چنین راه حل هایی (به عنوان مثال، سیستم عامل دستگاه و برنامه) معمولاً منبع باز نیستند، بنابراین عملکردهای محصول توسط پلت فرم ابر ارائه دهنده محدود می شود که قابل سفارشی سازی نیست. در همین حال، داده های کاربر و دستگاه نیز متعلق به پلتفرم ابری است.
بر اساس محصولات ابری در این راه حل، پس از تکمیل طراحی سخت افزار، سازندگان ترمینال نه تنها نیاز به پیاده سازی توابع ابری با استفاده از یک یا چند محصول ابری ارائه شده توسط ابر عمومی دارند، بلکه باید سخت افزار را با ابر پیوند دهند. برای مثالample، برای اتصال به آمازون Web خدمات (AWS)، سازندگان ترمینال باید از محصولات AWS مانند Amazon API Gateway، AWS IoT Core و AWS Lambda برای فعال کردن دسترسی دستگاه، کنترل از راه دور، ذخیره سازی داده، مدیریت کاربر و سایر عملکردهای اساسی استفاده کنند. این نه تنها از سازندگان ترمینال می‌خواهد که به طور انعطاف‌پذیری از محصولات ابری با درک عمیق و تجربه غنی استفاده و پیکربندی کنند، بلکه از آنها می‌خواهد که هزینه ساخت و نگهداری را برای محصولات اولیه و بعدی در نظر بگیرند.tages این چالش های بزرگی برای انرژی و منابع شرکت ایجاد می کند.
در مقایسه با ابرهای عمومی، ابرهای خصوصی معمولاً برای پروژه ها و محصولات خاص ساخته می شوند. به توسعه دهندگان ابر خصوصی بالاترین سطح آزادی در طراحی پروتکل و پیاده سازی منطق تجاری داده می شود. سازندگان ترمینال می توانند محصولات و طرح های طراحی را به دلخواه خود بسازند و به راحتی داده های کاربر را ادغام و توانمند کنند. ترکیب امنیت بالا، مقیاس پذیری و قابلیت اطمینان ابر عمومی با advantagدر فضای ابری خصوصی، Espressif ESP را راه اندازی کرد
19

RainMaker، یک راه حل ابر خصوصی عمیقاً یکپارچه مبتنی بر ابر آمازون. کاربران می توانند ESP RainMaker را مستقر کنند و به سادگی با یک حساب AWS، ابر خصوصی بسازند.
3.1 ESP RainMaker چیست؟
ESP RainMaker یک پلت فرم کامل AIoT است که با چندین محصول بالغ AWS ساخته شده است. خدمات مختلف مورد نیاز برای تولید انبوه مانند دسترسی ابری دستگاه، ارتقای دستگاه، مدیریت باطن، ورود شخص ثالث، یکپارچه سازی صوتی و مدیریت کاربر را ارائه می دهد. با استفاده از مخزن برنامه های بدون سرور (SAR) ارائه شده توسط AWS، سازندگان ترمینال می توانند به سرعت ESP RainMaker را در حساب های AWS خود مستقر کنند که کارایی آن از نظر زمان کارآمد و آسان است. SAR توسط Espressif مدیریت و نگهداری می شود، SAR مورد استفاده توسط ESP RainMaker به توسعه دهندگان کمک می کند تا هزینه های نگهداری ابر را کاهش دهند و توسعه محصولات AIoT را تسریع کنند، بنابراین راه حل های AIoT ایمن، پایدار و قابل سفارشی سازی را ایجاد کنند. شکل 3.1 معماری ESP RainMaker را نشان می دهد.
شکل 3.1. معماری ESP RainMaker
سرور عمومی ESP RainMaker توسط Espressif برای همه علاقه مندان، سازندگان و مربیان ESP برای ارزیابی راه حل رایگان است. توسعه دهندگان می توانند با حساب های اپل، گوگل یا گیت هاب وارد شوند و به سرعت نمونه های اولیه اپلیکیشن IoT خود را بسازند. سرور عمومی الکسا و Google Home را ادغام می کند و خدمات کنترل صوتی را ارائه می دهد که توسط Alexa Skill و Google Actions پشتیبانی می شوند. عملکرد تشخیص معنایی آن نیز توسط اشخاص ثالث ارائه می شود. دستگاه های RainMaker IoT فقط به اقدامات خاصی پاسخ می دهند. برای فهرست جامعی از فرمان‌های صوتی پشتیبانی‌شده، لطفاً پلتفرم‌های شخص ثالث را بررسی کنید. علاوه بر این، Espressif یک برنامه RainMaker عمومی برای کاربران ارائه می دهد تا محصولات را از طریق تلفن های هوشمند کنترل کنند. 20 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

3.2 پیاده سازی ESP RainMaker
همانطور که در شکل 3.2 نشان داده شده است، ESP RainMaker از چهار بخش تشکیل شده است: · خدمات ادعایی، که دستگاه های RainMaker را قادر می سازد به صورت پویا گواهینامه ها را دریافت کنند. · RainMaker Cloud (همچنین به عنوان باطن ابر شناخته می شود)، ارائه خدماتی مانند فیلتر کردن پیام، مدیریت کاربر، ذخیره سازی داده ها، و ادغام شخص ثالث. · عامل RainMaker، دستگاه های 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 به توسعه دهندگان این امکان را می دهد که تهیه دستگاه را کامل کنند و وضعیت دستگاه ها را کنترل و پرس و جو کنند (مثلاً محصولات روشنایی هوشمند). در هر دو فروشگاه برنامه iOS و Android در دسترس است. برای جزئیات بیشتر، لطفاً به فصل 10 مراجعه کنید. REST APIها REST APIها به کاربران کمک می‌کنند تا برنامه‌های کاربردی خود را مشابه برنامه RainMaker بسازند. برای اطلاعات بیشتر، لطفاً به https://swaggerapis.rainmaker.espressif.com/ مراجعه کنید.
فصل 3. مقدمه ای بر ESP RainMaker 21

APIهای پایتون یک CLI مبتنی بر پایتون، که با RainMaker SDK ارائه می‌شود، برای پیاده‌سازی همه عملکردهای مشابه ویژگی‌های گوشی‌های هوشمند ارائه شده است. برای اطلاعات بیشتر در مورد API های پایتون، لطفاً به https://bookc3.espressif.com/rm/python-api-reference مراجعه کنید.
Admin CLI Admin CLI، با سطح دسترسی بالاتر، برای استقرار خصوصی ESP RainMaker برای تولید گواهینامه های دستگاه به صورت انبوه ارائه شده است.
3.2.1 خدمات ادعایی
تمام ارتباطات بین دستگاه های RainMaker و باطن ابری از طریق MQTT+TLS انجام می شود. در زمینه ESP RainMaker، "Claiming" فرآیندی است که در آن دستگاه‌ها گواهینامه‌هایی را از سرویس ادعایی برای اتصال به باطن ابری دریافت می‌کنند. توجه داشته باشید که Claiming Service فقط برای سرویس RainMaker عمومی قابل اجرا است، در حالی که برای استقرار خصوصی، گواهی‌های دستگاه باید به صورت انبوه از طریق Admin CLI تولید شوند. ESP RainMaker از سه نوع خدمات ادعایی پشتیبانی می کند: Self Claiming
خود دستگاه گواهی ها را از طریق یک کلید مخفی از پیش برنامه ریزی شده در eFuse پس از اتصال به اینترنت دریافت می کند. Host Driven Claiming گواهی ها از میزبان توسعه با حساب RainMaker دریافت می شوند. درخواست کمک گواهی ها از طریق برنامه های کاربردی گوشی های هوشمند در حین تهیه به دست می آیند.
3.2.2 RainMaker Agent
شکل 3.3. ساختار RainMaker SDK عملکرد اصلی RainMaker Agent ارائه اتصال و کمک به لایه برنامه برای پردازش داده های ابری uplink/downlink است. این از طریق RainMaker SDK 22 ESP32-C3 Wireless Adventure ساخته شده است: راهنمای جامع اینترنت اشیا

و بر اساس چارچوب اثبات شده ESP-IDF، با استفاده از اجزای ESP-IDF مانند RTOS، NVS و MQTT توسعه یافته است. شکل 3.3 ساختار RainMaker SDK را نشان می دهد.
RainMaker SDK شامل دو ویژگی اصلی است.
اتصال
من. همکاری با Claiming Service برای دریافت گواهینامه های دستگاه.
ii اتصال به باطن ابری با استفاده از پروتکل امن MQTT برای ارائه اتصال از راه دور و پیاده سازی کنترل از راه دور، گزارش پیام، مدیریت کاربر، مدیریت دستگاه و غیره. به طور پیش فرض از مؤلفه MQTT در ESP-IDF استفاده می کند و یک لایه انتزاعی برای رابط با سایر موارد فراهم می کند. پشته های پروتکل
III. ارائه مؤلفه تأمین وای فای برای اتصال و تأمین Wi-Fi، مؤلفه esp https ota برای ارتقاء OTA، و مؤلفه «ctrl محلی» برای کشف و اتصال دستگاه محلی. تمام این اهداف را می توان از طریق پیکربندی ساده به دست آورد.
پردازش داده ها
من. ذخیره گواهی‌های دستگاه صادر شده توسط Claiming Service و داده‌های مورد نیاز هنگام اجرای RainMaker، به‌طور پیش‌فرض با استفاده از رابط ارائه‌شده توسط مؤلفه nvs flash، و ارائه API برای توسعه‌دهندگان برای استفاده مستقیم.
ii استفاده از مکانیسم تماس برای پردازش داده های ابری uplink/downlink و رفع انسداد خودکار داده ها در لایه برنامه برای پردازش آسان توسط توسعه دهندگان. برای مثالampRainMaker SDK رابط های غنی را برای ایجاد داده های TSL (زبان مشخصات چیزها) فراهم می کند، که برای تعریف مدل های TSL برای توصیف دستگاه های IoT و اجرای عملکردهایی مانند زمان بندی، شمارش معکوس، و کنترل صوتی مورد نیاز است. برای ویژگی‌های تعاملی اولیه مانند زمان‌بندی، RainMaker SDK راه‌حلی بدون توسعه ارائه می‌کند که می‌تواند در صورت نیاز به سادگی فعال شود. سپس، RainMaker Agent مستقیماً داده‌ها را پردازش می‌کند، آن‌ها را از طریق موضوع MQTT مرتبط به ابر ارسال می‌کند، و تغییرات داده‌ها را در backend ابری از طریق مکانیسم پاسخ به تماس بازخورد می‌دهد.
3.2.3 Cloud Backend
پشتیبان ابری مبتنی بر محاسبات بدون سرور AWS ساخته شده است و از طریق AWS Cognito (سیستم مدیریت هویت)، دروازه API آمازون، AWS Lambda (سرویس محاسبات بدون سرور)، آمازون DynamoDB (پایگاه داده NoSQL)، AWS IoT Core (هسته دسترسی به اینترنت اشیا که دسترسی MQTT را فراهم می کند، به دست می آید. و فیلتر کردن قوانین)، سرویس ایمیل ساده آمازون (سرویس پست ساده SES)، Amazon CloudFront (شبکه تحویل سریع)، سرویس صف ساده آمازون (صف پیام SQS) و آمازون S3 (سرویس ذخیره سازی سطلی). هدف آن بهینه سازی مقیاس پذیری و امنیت است. با ESP RainMaker، توسعه دهندگان می توانند دستگاه ها را بدون نیاز به نوشتن کد در فضای ابری مدیریت کنند. پیام های گزارش شده توسط دستگاه ها به طور شفاف به
فصل 3. مقدمه ای بر ESP RainMaker 23

مشتریان برنامه یا سایر خدمات شخص ثالث. جدول 3.1 محصولات و توابع ابری AWS مورد استفاده در باطن ابری را با محصولات و ویژگی های بیشتر در دست توسعه نشان می دهد.
جدول 3.1. محصولات و عملکردهای ابری AWS که توسط باطن ابری استفاده می شود

محصول AWS Cloud مورد استفاده RainMaker

تابع

AWS Cognito

مدیریت اعتبار کاربر و پشتیبانی از لاگین های شخص ثالث

AWS Lambda

پیاده‌سازی منطق اصلی کسب‌وکار باطن ابر

Amazon Timestream ذخیره داده های سری زمانی

Amazon DynamoDB ذخیره سازی اطلاعات خصوصی مشتریان

AWS IoT Core

پشتیبانی از ارتباطات MQTT

آمازون SES

ارائه خدمات ارسال ایمیل

Amazon CloudFront تسریع مدیریت باطن webدسترسی به سایت

آمازون SQS

ارسال پیام از AWS IoT Core

3.2.4 RainMaker Client
کلاینت های RainMaker، مانند App و CLI، از طریق API های REST با پشتیبان ابری ارتباط برقرار می کنند. اطلاعات دقیق و دستورالعمل‌های مربوط به APIهای REST را می‌توانید در مستندات Swagger ارائه شده توسط Espressif بیابید. سرویس گیرنده برنامه موبایل RainMaker برای هر دو سیستم iOS و Android در دسترس است. این امکان تهیه، کنترل و اشتراک گذاری دستگاه و همچنین ایجاد و فعال کردن وظایف شمارش معکوس و اتصال به سیستم عامل های شخص ثالث را فراهم می کند. این می تواند به طور خودکار UI و نمادها را با توجه به پیکربندی گزارش شده توسط دستگاه ها بارگیری کند و TSL دستگاه را به طور کامل نمایش دهد.
برای مثالampاگر یک چراغ هوشمند بر روی RainMaker SDK سابق ساخته شده باشدampبرای مثال، نماد و UI چراغ لامپ به طور خودکار پس از تکمیل تهیه بارگیری می شود. کاربران می توانند رنگ و روشنایی نور را از طریق رابط تغییر دهند و با پیوند دادن Alexa Smart Home Skill یا Google Smart Home Actions به حساب های ESP RainMaker خود، به کنترل شخص ثالث دست یابند. شکل 3.4 نماد و رابط کاربری سابق را نشان می دهدampمیزان نور لامپ به ترتیب در Alexa، Google Home و ESP RainMaker App.

24 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

(الف) مثالample – الکسا

(ب) مثالample – Google Home

(ج) مثالample – ESP RainMaker
شکل 3.4. مثالampتعداد آیکون و رابط کاربری لامپ در الکسا، گوگل هوم و برنامه ESP RainMaker
3.3 تمرین: نکات کلیدی برای توسعه با ESP RainMaker
پس از تکمیل لایه درایور دستگاه، توسعه دهندگان ممکن است شروع به ایجاد مدل های TSL و پردازش داده های downlink با استفاده از API های ارائه شده توسط RainMaker SDK کنند و خدمات پایه ESP RainMaker را بر اساس تعریف و الزامات محصول فعال کنند.
فصل 3. مقدمه ای بر ESP RainMaker 25

بخش 9.4 این کتاب پیاده سازی چراغ هوشمند LED در RainMaker را توضیح می دهد. در طول اشکال‌زدایی، توسعه‌دهندگان می‌توانند از ابزارهای CLI در RainMaker SDK برای ارتباط با چراغ هوشمند استفاده کنند (یا با REST APIهای Swagger تماس بگیرند).
فصل 10 استفاده از API های REST در توسعه برنامه های کاربردی گوشی های هوشمند را تشریح خواهد کرد. ارتقاء OTA چراغ های هوشمند LED در فصل 11 پوشش داده خواهد شد. اگر توسعه دهندگان نظارت از راه دور ESP Insights را فعال کرده باشند، بخش مدیریت ESP RainMaker داده های ESP Insights را نمایش می دهد. جزئیات در فصل 15 ارائه خواهد شد.
ESP RainMaker از استقرار خصوصی پشتیبانی می کند که از راه های زیر با سرور عمومی RainMaker متفاوت است:
خدمات ادعایی برای تولید گواهینامه در استقرارهای خصوصی، لازم است از RainMaker Admin CLI به جای Claiming استفاده شود. با سرور عمومی، به توسعه دهندگان باید حقوق مدیریت برای اجرای ارتقاء سیستم عامل داده شود، اما در استقرار تجاری نامطلوب است. بنابراین، نه سرویس احراز هویت مجزا برای ادعای خود ارائه می‌شود، نه حقوق سرپرست برای ادعای میزبانی یا کمکی.
برنامه‌های تلفن در استقرارهای خصوصی، برنامه‌ها باید به طور جداگانه پیکربندی و کامپایل شوند تا اطمینان حاصل شود که سیستم‌های حساب قابل همکاری نیستند.
ورود به سیستم شخص ثالث و یکپارچه سازی صوتی برنامه نویسان باید به طور جداگانه از طریق حساب های توسعه دهنده گوگل و اپل پیکربندی کنند تا لاگین های شخص ثالث و همچنین ادغام مهارت الکسا و دستیار صوتی گوگل را فعال کنند.
نکات برای جزئیات بیشتر در مورد استقرار ابر، لطفاً به https://customer.rainmaker.espressif مراجعه کنید. com از نظر سیستم عامل، انتقال از سرور عمومی به سرور خصوصی فقط نیاز به جایگزینی گواهی‌های دستگاه دارد که کارایی مهاجرت را تا حد زیادی بهبود می‌بخشد و هزینه انتقال و اشکال‌زدایی ثانویه را کاهش می‌دهد.
3.4 ویژگی های ESP RainMaker
ویژگی های ESP RainMaker عمدتاً در سه جنبه مورد هدف قرار می گیرند - مدیریت کاربر، کاربران نهایی و مدیران. همه ویژگی ها هم در سرورهای عمومی و هم در سرورهای خصوصی پشتیبانی می شوند مگر اینکه خلاف آن ذکر شده باشد.
3.4.1 مدیریت کاربر
ویژگی های مدیریت کاربر به کاربران نهایی امکان ثبت نام، ورود به سیستم، تغییر رمز عبور، بازیابی رمز عبور و غیره را می دهد.
26 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

ثبت نام و ورود روش های ثبت نام و ورود به سیستم پشتیبانی شده توسط RainMaker عبارتند از: · شناسه ایمیل + رمز عبور · شماره تلفن + رمز عبور · حساب Google · حساب اپل · حساب GitHub (فقط سرور عمومی) · حساب آمازون (فقط سرور خصوصی)
توجه ثبت نام با استفاده از Google/Amazon آدرس ایمیل کاربر را با RainMaker به اشتراک می گذارد. با استفاده از اپل یک آدرس ساختگی که اپل به طور خاص برای سرویس RainMaker به کاربر اختصاص می دهد، ثبت نام کنید. یک حساب RainMaker به طور خودکار برای کاربرانی که برای اولین بار با حساب Google، Apple یا Amazon وارد می شوند ایجاد می شود.
تغییر رمز عبور فقط برای ورودهای مبتنی بر شناسه ایمیل/شماره تلفن معتبر است. تمام جلسات فعال دیگر پس از تغییر رمز عبور از سیستم خارج می شوند. طبق رفتار AWS Cognito، جلسات خارج‌شده از سیستم می‌توانند تا ۱ ساعت فعال بمانند.
بازیابی رمز عبور فقط برای ورودهای مبتنی بر شناسه ایمیل/شماره تلفن معتبر است.
3.4.2 ویژگی های کاربر نهایی
ویژگی‌هایی که برای کاربران نهایی باز است شامل کنترل و نظارت از راه دور و محلی، زمان‌بندی، گروه‌بندی دستگاه، اشتراک‌گذاری دستگاه، اعلان‌های فشاری و ادغام‌های شخص ثالث است.
کنترل و نظارت از راه دور · پیکربندی پرس و جو، مقادیر پارامتر، و وضعیت اتصال برای یک یا همه دستگاه ها. · تنظیم پارامترها برای یک یا چند دستگاه.
کنترل و نظارت محلی تلفن همراه و دستگاه برای کنترل محلی باید به یک شبکه متصل شوند.
برنامه ریزی · کاربران از قبل اقدامات خاصی را در یک زمان خاص تنظیم می کنند. · بدون اتصال به اینترنت برای دستگاه در هنگام اجرای برنامه. · یک بار یا تکرار (با تعیین روز) برای یک یا چند دستگاه.
گروه‌بندی دستگاه از گروه‌بندی انتزاعی چند سطحی پشتیبانی می‌کند. فراداده‌های گروه می‌توانند برای ایجاد ساختار اتاق خانه استفاده شوند.
فصل 3. مقدمه ای بر ESP RainMaker 27

اشتراک گذاری دستگاه یک یا چند دستگاه را می توان با یک یا چند کاربر به اشتراک گذاشت.
اعلان‌های فشاری کاربران نهایی برای رویدادهایی مانند · دستگاه(های) جدید اضافه/حذف شده · دستگاه متصل به ابر · دستگاه از cloud قطع شده است · درخواست‌های اشتراک‌گذاری دستگاه ایجاد/پذیرفته/رد شده است · پیام‌های هشدار گزارش شده توسط دستگاه‌ها
ادغام های شخص ثالث الکسا و دستیار صوتی گوگل برای کنترل دستگاه های RainMaker از جمله چراغ ها، سوئیچ ها، سوکت ها، فن ها و سنسورهای دما پشتیبانی می شوند.
3.4.3 ویژگی های مدیریت
ویژگی‌های Admin به مدیران اجازه می‌دهد تا ثبت دستگاه، گروه‌بندی دستگاه و ارتقاء OTA را اجرا کنند view آمار و داده های ESP Insights.
ثبت دستگاه گواهی های دستگاه را تولید کنید و با Admin CLI (فقط سرور خصوصی) ثبت نام کنید.
گروه بندی دستگاه بر اساس اطلاعات دستگاه (فقط سرور خصوصی) گروه های انتزاعی یا ساختار یافته ایجاد کنید.
Over-the-Air (OTA) سیستم‌افزار آپلود را بر اساس نسخه و مدل به یک یا چند دستگاه یا یک گروه نظارت، لغو یا بایگانی کارهای OTA ارتقا می‌دهد.
View آمار Viewآمارهای توانمند عبارتند از: · ثبت دستگاه (گواهینامه های ثبت شده توسط مدیر) · فعال سازی دستگاه (دستگاه برای اولین بار متصل شد) · حساب های کاربری · ارتباط کاربر و دستگاه
View داده های ESP Insights Viewداده های ESP Insights توانمند عبارتند از: · خطاها، هشدارها، و گزارش های سفارشی · گزارش های خرابی و تجزیه و تحلیل · دلایل راه اندازی مجدد · معیارهایی مانند استفاده از حافظه، RSSI، و غیره · معیارها و متغیرهای سفارشی
28 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

3.5 خلاصه
در این فصل، ما برخی از تفاوت های کلیدی بین استقرار عمومی RainMaker و استقرار خصوصی را معرفی کردیم. راه حل خصوصی ESP RainMaker که توسط Espressif راه اندازی شده است بسیار قابل اعتماد و توسعه پذیر است. تمام تراشه های سری ESP32 به AWS متصل و سازگار شده اند که هزینه را تا حد زیادی کاهش می دهد. توسعه دهندگان می توانند بدون نیاز به یادگیری در مورد محصولات ابری AWS بر تأیید نمونه اولیه تمرکز کنند. همچنین پیاده سازی و ویژگی های ESP RainMaker و برخی نکات کلیدی برای توسعه با استفاده از پلتفرم را توضیح دادیم.
اسکن برای دانلود ESP RainMaker برای اندروید اسکن برای دانلود ESP RainMaker برای iOS
فصل 3. مقدمه ای بر ESP RainMaker 29

30 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

فصل تنظیم 4 محیط توسعه
این فصل بر روی ESP-IDF، چارچوب رسمی توسعه نرم افزار برای ESP32-C3 تمرکز دارد. نحوه راه اندازی محیط بر روی سیستم عامل های مختلف و معرفی ساختار پروژه و سیستم ساخت ESP-IDF و همچنین استفاده از ابزارهای توسعه مرتبط را توضیح خواهیم داد. سپس فرآیند کامپایل و اجرای یک ex را ارائه خواهیم کردampپروژه le، در حالی که توضیح مفصلی از گزارش خروجی در هر ثانیه ارائه می دهدtage.
4.1 ESP-IDF بیش ازview
ESP-IDF (Espressif IoT Development Framework) یک چارچوب توسعه IoT یک مرحله ای است که توسط Espressif Technology ارائه شده است. از C/C++ به عنوان زبان اصلی توسعه استفاده می کند و از کامپایل متقابل تحت سیستم عامل های اصلی مانند لینوکس، مک و ویندوز پشتیبانی می کند. سابقampبرنامه های موجود در این کتاب با استفاده از ESP-IDF توسعه یافته اند که ویژگی های زیر را ارائه می دهد: · درایورهای سطح سیستم SoC. ESP-IDF شامل درایورهای ESP32، ESP32-S2، ESP32-C3،
و چیپس های دیگر این درایورها شامل کتابخانه سطح پایین محیطی (LL)، کتابخانه لایه انتزاعی سخت افزاری (HAL)، پشتیبانی RTOS و نرم افزار درایور لایه بالایی و غیره هستند. · اجزای اساسی. ESP-IDF اجزای اساسی مورد نیاز برای توسعه اینترنت اشیا را در خود جای داده است. این شامل چندین پشته پروتکل شبکه مانند HTTP و MQTT، یک چارچوب مدیریت توان با مدولاسیون فرکانس پویا، و ویژگی‌هایی مانند رمزگذاری فلش و راه‌اندازی امن و غیره است. · ابزارهای توسعه و تولید. ESP-IDF ابزارهای رایج مورد استفاده را برای ساختن، فلش و اشکال زدایی در طول توسعه و تولید انبوه فراهم می کند (شکل 4.1 را ببینید)، مانند سیستم ساختمان مبتنی بر CMake، زنجیره ابزار متقابل کامپایل مبتنی بر GCC، و J.TAG ابزار اشکال زدایی مبتنی بر 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 (ارائه پشتیبانی برای preview نسخه هایی که ممکن است فاقد ویژگی ها یا اسناد خاصی باشند) یا به طور رسمی پشتیبانی می شوند.

جدول 4.1. وضعیت پشتیبانی از نسخه های مختلف ESP-IDF برای تراشه های Espressif

سری ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

نسخه 4.1 پشتیبانی می شود

نسخه 4.2 پشتیبانی می شود

نسخه 4.3 پشتیبانی می شود پشتیبانی پشتیبانی می شود

v4.4 supported supported supported supported
قبل ازview

v5.0 supported supported supported supported supported preview

32 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

تکرار نسخه های اصلی اغلب شامل تنظیمات ساختار چارچوب و به روز رسانی سیستم کامپایل است. برای مثالample، تغییر عمده از v3.* به v4.* انتقال تدریجی سیستم ساخت از Make به CMake بود. از سوی دیگر، تکرار نسخه‌های کوچک معمولاً مستلزم افزودن ویژگی‌های جدید یا پشتیبانی از تراشه‌های جدید است.
تشخیص و درک رابطه بین نسخه های پایدار و شاخه های GitHub مهم است. نسخه هایی با برچسب v*.* یا v*.*.* نسخه های پایداری را نشان می دهند که تست داخلی کامل توسط Espressif را پشت سر گذاشته اند. پس از رفع مشکل، کد، زنجیره ابزار و اسناد انتشار برای همان نسخه بدون تغییر باقی می‌مانند. با این حال، شاخه های GitHub (به عنوان مثال، شعبه انتشار/v4.3) اغلب به صورت روزانه تحت کدهای مکرر قرار می گیرند. بنابراین، دو قطعه کد در یک شاخه ممکن است متفاوت باشند، که توسعه دهندگان را ملزم می کند که کد خود را به سرعت به روز کنند.
4.1.2 ESP-IDF Git Workflow
Espressif از یک گردش کاری Git خاص برای ESP-IDF پیروی می کند که به شرح زیر است:
· تغییرات جدیدی در شاخه اصلی ایجاد شده است که به عنوان شاخه اصلی توسعه عمل می کند. نسخه ESP-IDF در شاخه اصلی همیشه دارای یک -dev است tag برای نشان دادن اینکه در حال حاضر در حال توسعه است، مانند v4.3-dev. تغییرات در شاخه اصلی ابتدا دوباره انجام می شودviewویرایش و در مخزن داخلی Espressif تست شد و پس از تکمیل تست خودکار به GitHub فرستاده شد.
· هنگامی که یک نسخه جدید توسعه ویژگی ها را در شاخه اصلی تکمیل کرد و معیارهای ورود به آزمایش بتا را برآورده کرد، به یک شاخه جدید مانند انتشار/ نسخه 4.3 منتقل می شود. علاوه بر این، این شعبه جدید است tagged به عنوان یک نسخه پیش از انتشار، مانند v4.3-beta1. توسعه دهندگان می توانند برای دسترسی به لیست کامل شعبه ها به پلتفرم GitHub مراجعه کنند tags برای ESP-IDF. توجه به این نکته مهم است که نسخه بتا (نسخه پیش از انتشار) ممکن است هنوز تعداد قابل توجهی از مشکلات شناخته شده داشته باشد. از آنجایی که نسخه بتا تحت آزمایش مداوم قرار می گیرد، رفع اشکال به طور همزمان به این نسخه و شاخه اصلی اضافه می شود. در همین حال، شاخه اصلی ممکن است از قبل شروع به توسعه ویژگی های جدید برای نسخه بعدی کرده باشد. وقتی آزمایش تقریباً کامل شد، یک برچسب کاندید انتشار (rc) به شاخه اضافه می‌شود که نشان می‌دهد کاندیدای بالقوه برای نسخه رسمی است، مانند v4.3-rc1. در این سtage، شعبه یک نسخه پیش از انتشار باقی می ماند.
· اگر هیچ باگ بزرگی کشف یا گزارش نشود، نسخه پیش از انتشار در نهایت یک برچسب نسخه اصلی (مثلاً v5.0) یا یک برچسب نسخه جزئی (مثلاً v4.3) دریافت می کند و به یک نسخه رسمی تبدیل می شود که مستند شده است. در صفحه یادداشت های انتشار پس از آن، هر گونه باگ شناسایی شده در این نسخه در شاخه انتشار رفع می شود. پس از تکمیل آزمایش دستی، به شعبه یک برچسب نسخه رفع اشکال (به عنوان مثال، نسخه 4.3.2) اختصاص داده می شود که در صفحه یادداشت های انتشار نیز منعکس می شود.
فصل 4. راه اندازی محیط توسعه 33

4.1.3 انتخاب یک نسخه مناسب
از آنجایی که ESP-IDF به طور رسمی پشتیبانی از ESP32-C3 را از نسخه 4.3 آغاز کرد و نسخه 4.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 از فهرست راهنمای SDK ESP-IDF
ESP-IDF SDK از دو دایرکتوری اصلی تشکیل شده است: esp-idf و .espressif. اولی حاوی کد منبع مخزن ESP-IDF است files و اسکریپت های کامپایل، در حالی که دومی عمدتاً زنجیره های ابزار کامپایل و سایر نرم افزارها را ذخیره می کند. آشنایی با این دو دایرکتوری به توسعه دهندگان کمک می کند تا از منابع موجود بهتر استفاده کنند و روند توسعه را تسریع کنند. ساختار دایرکتوری ESP-IDF در زیر توضیح داده شده است:
(1) فهرست کد مخزن ESP-IDF (/esp/esp-idf)، همانطور که در شکل 4.2 نشان داده شده است.
آ. اجزای دایرکتوری کامپوننت
این دایرکتوری اصلی بسیاری از اجزای نرم افزار ضروری ESP-IDF را ادغام می کند. هیچ کد پروژه ای را نمی توان بدون تکیه بر اجزای داخل این فهرست کامپایل کرد. این شامل پشتیبانی از درایور برای تراشه های مختلف Espressif است. از کتابخانه LL و رابط های کتابخانه HAL برای تجهیزات جانبی گرفته تا Driver و Virtual سطح بالا File با پشتیبانی از لایه سیستم (VFS)، توسعه دهندگان می توانند اجزای مناسب را در سطوح مختلف برای نیازهای توسعه خود انتخاب کنند. ESP-IDF همچنین از چندین پشته پروتکل شبکه استاندارد مانند TCP/IP، HTTP، MQTT، WebSocket و غیره. توسعه دهندگان می توانند از رابط های آشنا مانند Socket برای ساخت برنامه های شبکه استفاده کنند. مولفه ها درک درستی از
34 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

شکل 4.2. فهرست کد مخزن ESP-IDF
قابلیت sive و می تواند به راحتی در برنامه ها ادغام شود و به توسعه دهندگان این امکان را می دهد تا صرفاً روی منطق تجاری تمرکز کنند. برخی از اجزای رایج عبارتند از: · درایور: این کامپوننت شامل برنامه های درایور جانبی برای اسپرسیف های مختلف است
سری های تراشه، مانند 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 زیردایرکتوری همچنین حاوی اسکریپت اصلی است. files از سیستم کامپایل، به عنوان پایه ای برای اجرای قوانین کامپایل ESP-IDF عمل می کند. هنگام افزودن متغیرهای محیطی، محتویات درون فهرست ابزارها به متغیر محیطی سیستم اضافه می‌شود و به idf.py اجازه می‌دهد تا مستقیماً در مسیر پروژه اجرا شود.
د سابقampدایرکتوری برنامه le examples
این فهرست شامل مجموعه وسیعی از ESP-IDF ex استampبرنامه هایی که استفاده از API های مؤلفه را نشان می دهند. سابقampلها بر اساس دسته بندی هایشان به زیرشاخه های مختلفی سازماندهی می شوند:
· شروع کردن: این زیر شاخه شامل سطح ورودی سابق استampمواردی مانند "سلام جهان" و "چشمک زدن" برای کمک به کاربران برای درک اصول اولیه.
· بلوتوث: می‌توانید نمونه قبلی مرتبط با بلوتوث را پیدا کنیدampموارد اینجا، از جمله بلوتوث LE Mesh، بلوتوث LE HID، BluFi و موارد دیگر.
· wifi: این زیرمجموعه بر روی Wi-Fi ex متمرکز استamples، از جمله برنامه های اساسی مانند Wi-Fi SoftAP، Wi-Fi Station، espnow، و همچنین پروتکل ارتباطی اختصاصی سابقamples from Espressif. همچنین شامل چندین لایه کاربردی سابق استampموارد مبتنی بر Wi-Fi، مانند Iperf، Sniffer و Smart Config.
· لوازم جانبی: این زیرمجموعه گسترده بر اساس نام های جانبی به زیر پوشه های متعددی تقسیم می شود. این عمدتا شامل درایورهای جانبی سابق استampلس برای چیپس اسپرسف، با هر یکampدارای چندین زیرمجموعه سابقamples به عنوان مثال، دایرکتوری فرعی gpio شامل دو نمونه قبلی استampموارد: صفحه کلید ماتریس GPIO و GPIO. مهم است که توجه داشته باشید که همه سابقamples موجود در این فهرست برای ESP32-C3 قابل استفاده است.
36 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

برای مثالample، سابقampلنزهای موجود در usb/host فقط برای تجهیزات جانبی دارای سخت افزار USB Host (مانند ESP32-S3) قابل استفاده هستند و ESP32-C3 این ابزار جانبی را ندارد. سیستم کامپایل معمولاً هنگام تنظیم هدف، درخواست هایی را ارائه می دهد. README file از هر سابقample تراشه های پشتیبانی شده را فهرست می کند. · پروتکل ها: این زیر شاخه شامل exampبرای پروتکل های ارتباطی مختلف، از جمله MQTT، HTTP، HTTP Server، PPPoS، Modbus، mDNS، SNTP، که طیف وسیعی از پروتکل های ارتباطی را پوشش می دهد.ampمقدار مورد نیاز برای توسعه اینترنت اشیا · تامین: در اینجا، تامین کننده قبلی را خواهید یافتamples برای روش های مختلف، مانند تامین Wi-Fi و تامین LE بلوتوث. · سیستم: این زیرمجموعه شامل اشکال زدایی سیستم استamples (به عنوان مثال، ردیابی پشته، ردیابی زمان اجرا، نظارت بر وظایف)، مدیریت توان مانندamples (مثلاً حالت‌های خواب مختلف، پردازنده‌های مشترک)، و موارد قبلیampموارد مربوط به اجزای رایج سیستم مانند ترمینال کنسول، حلقه رویداد و تایمر سیستم. · ذخیره سازی: در این زیر دایرکتوری، موارد قبلی را کشف خواهید کردampاز همه file سیستم ها و مکانیسم های ذخیره سازی پشتیبانی شده توسط ESP-IDF (مانند خواندن و نوشتن Flash، کارت SD و سایر رسانه های ذخیره سازی)، و همچنینampذخیره سازی غیر فرار (NVS)، FatFS، SPIFFS و غیره file عملیات سیستم · امنیت: این زیر شاخه شامل exampمطالب مربوط به رمزگذاری فلش (2) دایرکتوری زنجیره ابزار کامپایل ESP-IDF (/.espressif)، همانطور که در شکل 4.3 نشان داده شده است.
شکل 4.3. دایرکتوری زنجیره ای ابزار کامپایل ESP-IDF
فصل 4. راه اندازی محیط توسعه 37

آ. دایرکتوری توزیع نرم افزار dist
زنجیره ابزار ESP-IDF و سایر نرم افزارها در قالب بسته های فشرده توزیع می شوند. در طول فرآیند نصب، ابزار نصب ابتدا بسته فشرده شده را در پوشه dist دانلود می کند و سپس آن را در پوشه مشخص شده استخراج می کند. پس از اتمام نصب، محتویات این فهرست را می توان با خیال راحت حذف کرد.
ب دایرکتوری محیط مجازی پایتون python env
نسخه های مختلف ESP-IDF به نسخه های خاصی از بسته های پایتون متکی هستند. نصب این بسته ها به طور مستقیم بر روی همان میزبان می تواند منجر به درگیری بین نسخه های بسته شود. برای رفع این مشکل، ESP-IDF از محیط های مجازی پایتون برای جداسازی نسخه های مختلف بسته استفاده می کند. با استفاده از این مکانیسم، توسعه دهندگان می توانند چندین نسخه از ESP-IDF را بر روی یک هاست نصب کنند و با وارد کردن متغیرهای محیطی مختلف، به راحتی بین آنها جابجا شوند.
ج ابزارهای دایرکتوری زنجیره ای ابزار کامپایل ESP-IDF
این دایرکتوری عمدتا شامل ابزارهای متقابل کامپایل مورد نیاز برای کامپایل پروژه های ESP-IDF است، مانند ابزارهای CMake، ابزارهای ساخت نینجا، و زنجیره ابزار gcc که برنامه اجرایی نهایی را تولید می کند. علاوه بر این، این دایرکتوری کتابخانه استاندارد زبان C/C++ را به همراه هدر مربوطه در خود جای می دهد fileس اگر برنامه ای به هدر سیستم ارجاع دهد file مانند #شامل ، زنجیره ابزار کامپایل stdio.h را پیدا می کند file در این دایرکتوری
4.2 راه اندازی محیط توسعه ESP-IDF
محیط توسعه ESP-IDF از سیستم عامل های اصلی مانند ویندوز، لینوکس و macOS پشتیبانی می کند. در این بخش نحوه راه اندازی محیط توسعه در هر سیستم معرفی می شود. توصیه می شود ESP32-C3 را روی سیستم لینوکس توسعه دهید که در اینجا به تفصیل معرفی خواهد شد. بسیاری از دستورالعمل ها به دلیل شباهت ابزارهای توسعه، در سراسر پلتفرم ها قابل اجرا هستند. بنابراین توصیه می شود مطالب این بخش را با دقت مطالعه کنید.
توجه می توانید به اسناد آنلاین موجود در https://bookc3.espressif.com/esp32c3 مراجعه کنید که دستورات ذکر شده در این بخش را ارائه می دهند.
4.2.1 راه اندازی محیط توسعه ESP-IDF در لینوکس
ابزارهای توسعه و اشکال زدایی GNU مورد نیاز برای محیط توسعه ESP-IDF بومی سیستم لینوکس هستند. علاوه بر این، ترمینال خط فرمان در لینوکس قدرتمند و کاربرپسند است، و آن را به گزینه ای ایده آل برای توسعه ESP32-C3 تبدیل می کند. تو می توانی
38 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

توزیع لینوکس مورد نظر خود را انتخاب کنید، اما توصیه می کنیم از اوبونتو یا سایر سیستم های مبتنی بر دبیان استفاده کنید. این بخش راهنمایی در مورد راه اندازی محیط توسعه ESP-IDF در اوبونتو 20.04 ارائه می دهد.
1. بسته های مورد نیاز را نصب کنید
یک ترمینال جدید باز کنید و دستور زیر را برای نصب تمام بسته های لازم اجرا کنید. این دستور به طور خودکار بسته هایی را که قبلاً نصب شده اند رد می کند.
$ sudo apt-get نصب git wget flex bison 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 برای تأیید اطلاعات نسخه استفاده می‌شود، که برای نصب زنجیره ابزار صحیح مربوط به نسخه‌های خاص ضروری است. در کنار گیت، از دیگر ابزارهای مهم سیستم می توان به پایتون اشاره کرد. ESP-IDF چندین اسکریپت خودکار نوشته شده در پایتون را در خود جای داده است. ابزارهایی مانند CMake، Ninja-build و Ccache به طور گسترده در پروژه‌های C/C++ استفاده می‌شوند و به عنوان ابزارهای پیش‌فرض تدوین و ساخت کد در ESP-IDF عمل می‌کنند. libusb-1.0-0 و dfu-util درایورهای اصلی مورد استفاده برای ارتباط سریال USB و رایت سیستم عامل هستند. پس از نصب بسته های نرم افزاری، می توانید از apt show استفاده کنید دستور برای به دست آوردن توضیحات دقیق از هر بسته. برای مثالample، از apt show git برای چاپ اطلاعات توضیحات ابزار Git استفاده کنید.
س: اگر نسخه پایتون پشتیبانی نمی شود چه باید کرد؟ A: ESP-IDF v4.3 به یک نسخه پایتون نیاز دارد که کمتر از v3.6 نباشد. برای نسخه های قدیمی اوبونتو، لطفاً نسخه بالاتر پایتون را به صورت دستی دانلود و نصب کنید و Python3 را به عنوان محیط پیش فرض پایتون تنظیم کنید. با جستجوی کلمه کلیدی update-alternatives python می توانید دستورالعمل های دقیق را بیابید.
2. کد مخزن ESP-IDF را دانلود کنید
یک ترمینال را باز کنید و با استفاده از دستور mkdir یک پوشه به نام esp در فهرست اصلی خود ایجاد کنید. در صورت تمایل می توانید نام دیگری برای پوشه انتخاب کنید. برای ورود به پوشه از دستور cd استفاده کنید.
فصل 4. راه اندازی محیط توسعه 39

$ mkdir -p /esp $ cd /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 برای دانلود و نصب زنجیره ابزار ارائه می دهد. این اسکریپت نسخه فعلی ESP-IDF و محیط سیستم عامل را بررسی می کند و سپس نسخه مناسب بسته های ابزار پایتون و زنجیره های ابزار کامپایل را دانلود و نصب می کند. مسیر نصب پیش فرض برای زنجیره ابزار /.espressif است. تنها کاری که باید انجام دهید این است که به دایرکتوری esp-idf بروید و install.sh را اجرا کنید.
$ cd /esp/esp-idf $ ./install.sh
اگر زنجیره ابزار را با موفقیت نصب کنید، ترمینال نمایش داده می شود:
همه چیز تمام شد!
در این مرحله، شما با موفقیت محیط توسعه ESP-IDF را راه اندازی کرده اید.
4.2.2 راه اندازی ESP-IDF Development Environment در ویندوز
1. نصب کننده ابزار ESP-IDF را دانلود کنید
نکات توصیه می شود محیط توسعه ESP-IDF را در ویندوز 10 یا بالاتر تنظیم کنید. می توانید نصب کننده را از https://dl.espressif.com/dl/esp-idf/ دانلود کنید. نصب کننده نیز یک نرم افزار متن باز است و کد منبع آن می تواند باشد viewویرایش در https: //github.com/espressif/idf-installer.
· نصب آنلاین ابزارهای ESP-IDF
این نصب کننده نسبتا کوچک است و حدود 4 مگابایت حجم دارد و بسته ها و کدهای دیگر در طول مراحل نصب دانلود خواهند شد. Advantage از نصب‌کننده آنلاین این است که نه تنها بسته‌های نرم‌افزار و کدها را می‌توان بر حسب تقاضا در طول فرآیند نصب دانلود کرد، بلکه امکان نصب تمامی نسخه‌های موجود ESP-IDF و آخرین شعبه کد GitHub (مانند شاخه اصلی) را نیز فراهم می‌کند. . عیبtage این است که در طول فرآیند نصب نیاز به اتصال به شبکه دارد که ممکن است به دلیل مشکلات شبکه باعث خرابی نصب شود.
40 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

· نصب کننده ابزار آفلاین ESP-IDF این نصب کننده بزرگتر است، حدود 1 گیگابایت حجم دارد و شامل تمام بسته های نرم افزاری و کدهای مورد نیاز برای تنظیم محیط است. طرفدار اصلیtage از نصب کننده آفلاین این است که می توان از آن بر روی رایانه های بدون دسترسی به اینترنت استفاده کرد و به طور کلی میزان موفقیت نصب بالاتری دارد. لازم به ذکر است که نصب کننده آفلاین فقط می تواند نسخه های پایدار ESP-IDF را که با v*.* یا v*.*.* شناسایی شده است نصب کند.
2. نصب کننده ابزار ESP-IDF را پس از دانلود یک نسخه مناسب از نصب کننده اجرا کنید (برای مثال ESP-IDF Tools Offline 4.3.2 را انتخاب کنید.ample here)، روی exe دوبار کلیک کنید file برای راه اندازی رابط نصب ESP-IDF. در زیر نحوه نصب نسخه 4.3.2 پایدار ESP-IDF را با استفاده از نصب کننده آفلاین نشان می دهد.
(1) در رابط "انتخاب زبان نصب" نشان داده شده در شکل 4.4، زبان مورد استفاده را از لیست کشویی انتخاب کنید.
شکل 4.4. رابط "انتخاب زبان نصب" (2) پس از انتخاب زبان، روی "OK" کلیک کنید تا رابط "موافقتنامه مجوز" ظاهر شود.
(شکل 4.5 را ببینید). پس از مطالعه دقیق قرارداد مجوز نصب، "I accept the contract" را انتخاب کرده و روی "Next" کلیک کنید.
شکل 4.5. رابط "موافقتنامه مجوز" فصل 4. راه اندازی محیط توسعه 41

(3) Review پیکربندی سیستم در رابط "بررسی سیستم قبل از نصب" (شکل 4.6 را ببینید). نسخه ویندوز و اطلاعات نرم افزار آنتی ویروس نصب شده را بررسی کنید. اگر همه موارد پیکربندی عادی هستند، روی «بعدی» کلیک کنید. در غیر این صورت، می‌توانید برای راه‌حل‌های مبتنی بر موارد کلیدی روی «گزارش کامل» کلیک کنید.
شکل 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 Wireless Adventure: راهنمای جامع برای اینترنت اشیا

(5) همانطور که در شکل 4.8 نشان داده شده است، اجزایی را که باید نصب شوند بررسی کنید. توصیه می شود از گزینه پیش فرض یعنی نصب کامل استفاده کنید و سپس روی "بعدی" کلیک کنید.
شکل 4.8. مؤلفه های مورد نظر را برای نصب انتخاب کنید (6) مؤلفه هایی را که باید نصب شوند تأیید کنید و روی «نصب» کلیک کنید تا نصب خودکار شروع شود.
فرآیند استقرار، همانطور که در شکل 4.9 نشان داده شده است. فرآیند نصب ممکن است ده ها دقیقه طول بکشد و نوار پیشرفت فرآیند نصب در شکل 4.10 نشان داده شده است. لطفا صبور باشید
شکل 4.9. آماده سازی برای نصب (7) پس از اتمام نصب، توصیه می شود "ثبت نام ESP-IDF" را علامت بزنید.
ابزارهای اجرایی به عنوان استثناهای Windows Defender…” برای جلوگیری از حذف نرم افزار آنتی ویروس fileس افزودن موارد حذف همچنین می‌تواند اسکن‌های مکرر توسط آنتی‌ویروس را رد کند
فصل 4. راه اندازی محیط توسعه 43

شکل 4.10. نرم افزار نوار پیشرفت نصب، کارایی کامپایل کد سیستم ویندوز را تا حد زیادی بهبود می بخشد. همانطور که در شکل 4.11 نشان داده شده است، برای تکمیل نصب محیط توسعه، روی "Finish" کلیک کنید. می‌توانید «Run ESP-IDF PowerShell محیط» یا «Run ESP-IDF command prompt» را علامت بزنید. پنجره کامپایل را مستقیماً پس از نصب اجرا کنید تا مطمئن شوید که محیط توسعه به طور عادی کار می کند.
شکل 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 Wireless Adventure: راهنمای جامع برای اینترنت اشیا

شکل 4.12. محیط توسعه نصب شده است
شکل 4.13. ESP-IDF 4.3 CMD
4.2.3 راه اندازی محیط توسعه ESP-IDF در مک
فرآیند نصب محیط توسعه ESP-IDF در سیستم مک مانند سیستم لینوکس است. دستورات دانلود کد مخزن و نصب زنجیره ابزار دقیقاً یکسان است. فقط دستورات نصب بسته های وابستگی کمی متفاوت است. 1. نصب بسته‌های وابستگی، یک ترمینال را باز کنید و با اجرای دستور زیر، پیپ، ابزار مدیریت بسته پایتون را نصب کنید:
٪ sudo پیپ نصب آسان
Homebrew، یک ابزار مدیریت بسته برای macOS را با اجرای دستور زیر نصب کنید:
% /bin/bash -c «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
بسته های وابستگی مورد نیاز را با اجرای دستور زیر نصب کنید:
% brew python3 cmake ninja ccache dfu-util را نصب کنید
2. دانلود کد مخزن ESP-IDF دستورالعمل های ارائه شده در بخش 4.2.1 را برای دانلود کد مخزن ESP-IDF دنبال کنید. مراحل همانند دانلود در سیستم لینوکس است.
فصل 4. راه اندازی محیط توسعه 45

3. زنجیره ابزار توسعه ESP-IDF را نصب کنید
دستورالعمل های ارائه شده در بخش 4.2.1 را برای نصب زنجیره ابزار توسعه ESP-IDF دنبال کنید. مراحل مانند نصب در سیستم لینوکس است.
4.2.4 نصب VS Code
به طور پیش‌فرض، ESP-IDF SDK شامل ابزار ویرایش کد نمی‌شود (اگرچه آخرین نصب‌کننده ESP-IDF برای ویندوز، گزینه نصب ESP-IDF Eclipse را ارائه می‌دهد). می توانید از هر ابزار ویرایش متنی که انتخاب می کنید برای ویرایش کد و سپس کامپایل آن با استفاده از دستورات ترمینال استفاده کنید.
یکی از ابزارهای محبوب ویرایش کد VS Code (Visual Studio Code) است که یک ویرایشگر کد رایگان و غنی با رابط کاربر پسند است. مختلف ارائه می دهد plugins که قابلیت هایی مانند پیمایش کد، برجسته سازی نحو، کنترل نسخه Git و یکپارچه سازی ترمینال را ارائه می دهد. علاوه بر این، Espressif یک افزونه اختصاصی به نام Espressif IDF برای VS Code توسعه داده است که پیکربندی پروژه و اشکال زدایی را ساده می کند.
می توانید از دستور کد موجود در ترمینال برای باز کردن سریع پوشه فعلی در VS Code استفاده کنید. همچنین، می‌توانید از میانبر Ctrl+ برای باز کردن کنسول ترمینال پیش‌فرض سیستم در VS Code استفاده کنید.
نکات توصیه می شود از VS Code برای توسعه کد ESP32-C3 استفاده کنید. آخرین نسخه VS Code را در https://code.visualstudio.com/ دانلود و نصب کنید.
4.2.5 مقدمه ای بر محیط های توسعه شخص ثالث
علاوه بر محیط توسعه رسمی ESP-IDF، که در درجه اول از زبان C استفاده می کند، ESP32-C3 از دیگر زبان های برنامه نویسی اصلی و طیف گسترده ای از محیط های توسعه شخص ثالث نیز پشتیبانی می کند. برخی از گزینه های قابل توجه عبارتند از:
آردوینو: یک پلتفرم منبع باز برای سخت افزار و نرم افزار که از میکروکنترلرهای مختلف از جمله ESP32-C3 پشتیبانی می کند.
این زبان از زبان C++ استفاده می کند و یک API ساده و استاندارد شده را ارائه می دهد که معمولاً به آن زبان آردوینو می گویند. آردوینو به طور گسترده در توسعه نمونه اولیه و زمینه های آموزشی استفاده می شود. یک بسته نرم افزاری قابل توسعه و یک IDE فراهم می کند که امکان کامپایل و فلش آسان را فراهم می کند.
MicroPython: یک مفسر زبان Python 3 که برای اجرا بر روی پلتفرم های میکروکنترلر تعبیه شده طراحی شده است.
با یک زبان اسکریپت ساده، می‌تواند مستقیماً به منابع جانبی ESP32-C3 (مانند UART، SPI و I2C) و عملکردهای ارتباطی (مانند Wi-Fi و Bluetooth LE) دسترسی داشته باشد.
46 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

این تعامل سخت افزاری را ساده می کند. MicroPython، همراه با کتابخانه عملیات ریاضی گسترده پایتون، اجرای الگوریتم‌های پیچیده را در ESP32-C3 امکان‌پذیر می‌کند و توسعه برنامه‌های مرتبط با هوش مصنوعی را تسهیل می‌کند. به عنوان یک زبان اسکریپت، نیازی به تدوین مکرر نیست. می توان تغییراتی ایجاد کرد و اسکریپت ها را می توان مستقیماً اجرا کرد.
NodeMCU: یک مترجم زبان LUA که برای تراشه های سری ESP توسعه یافته است.
تقریباً از تمام عملکردهای جانبی تراشه های ESP پشتیبانی می کند و سبک تر از MicroPython است. همانند MicroPython، NodeMCU از یک زبان اسکریپت استفاده می کند که نیاز به کامپایل مکرر را از بین می برد.
علاوه بر این، ESP32-C3 از سیستم عامل های NuttX و Zephyr نیز پشتیبانی می کند. NuttX یک سیستم عامل بلادرنگ است که رابط های سازگار با POSIX را فراهم می کند و قابلیت حمل برنامه را افزایش می دهد. Zephyr یک سیستم عامل کوچک بلادرنگ است که به طور خاص برای کاربردهای اینترنت اشیا طراحی شده است. این شامل کتابخانه های نرم افزاری متعددی است که در توسعه اینترنت اشیا مورد نیاز است و به تدریج به یک اکوسیستم نرم افزاری جامع تبدیل می شود.
این کتاب دستورالعمل‌های نصب دقیقی را برای محیط‌های توسعه فوق‌الذکر ارائه نمی‌کند. با پیروی از مستندات و دستورالعمل های مربوطه می توانید یک محیط توسعه را بر اساس نیاز خود نصب کنید.
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 می توان برای کنترل رفتار کامپایل کد استفاده کرد. سیستم کامپایل ESP-IDF علاوه بر پشتیبانی از نحو اولیه CMake، مجموعه ای از قوانین کامپایل پیش فرض و توابع CMake را نیز تعریف می کند و می توانید اسکریپت کامپایل را با عبارات ساده بنویسید.
4.3.2 پروژه File ساختار
پروژه پوشه ای است که شامل یک برنامه ورودی اصلی، اجزای تعریف شده توسط کاربر و fileبرای ساخت برنامه های اجرایی مانند اسکریپت های کامپایل، پیکربندی مورد نیاز است
فصل 4. راه اندازی محیط توسعه 47

files، جداول پارتیشن، و غیره. پروژه ها را می توان کپی و ارسال کرد، و همان قابل اجرا file را می توان در ماشین هایی با همان نسخه محیط توسعه ESP-IDF کامپایل و تولید کرد. یک پروژه معمولی ESP-IDF file ساختار در شکل 4.14 نشان داده شده است.
شکل 4.14. پروژه معمولی ESP-IDF file ساختار از آنجایی که ESP-IDF از چندین تراشه اینترنت اشیا از Espressif پشتیبانی می کند، از جمله ESP32، سری ESP32-S، سری ESP32-C، سری ESP32-H و غیره، قبل از کامپایل کد باید یک هدف مشخص شود. هدف هم دستگاه سخت افزاری است که برنامه کاربردی را اجرا می کند و هم هدف ساخت سیستم کامپایل. بسته به نیاز خود، می توانید یک یا چند هدف را برای پروژه خود مشخص کنید. برای مثالample، از طریق دستور idf.py set-target esp32c3، می توانید هدف کامپایل را روی ESP32-C3 تنظیم کنید، که طی آن پارامترهای پیش فرض و مسیر زنجیره ابزار کامپایل برای ESP32C3 بارگیری می شود. پس از کامپایل، می توان یک برنامه اجرایی برای ESP32C3 تولید کرد. همچنین می‌توانید دستور set-target را دوباره اجرا کنید تا هدف دیگری تعیین کنید، و سیستم کامپایل به طور خودکار پاکسازی و پیکربندی مجدد خواهد شد. اجزاء
اجزای موجود در ESP-IDF واحدهای کد مدولار و مستقلی هستند که در سیستم کامپایل مدیریت می شوند. آنها به صورت پوشه سازماندهی می شوند و نام پوشه به طور پیش فرض نشان دهنده نام مؤلفه است. هر جزء دارای اسکریپت تلفیقی مخصوص به خود است که 48 ESP32-C3 Wireless Adventure: راهنمای جامع برای اینترنت اشیا

پارامترهای کامپایل و وابستگی های آن را مشخص می کند. در طول فرآیند کامپایل، مؤلفه‌ها در کتابخانه‌های ثابت جداگانه (.a files) و در نهایت با اجزای دیگر ترکیب می شود تا برنامه کاربردی را تشکیل دهد.
ESP-IDF توابع ضروری مانند سیستم عامل، درایورهای جانبی و پشته پروتکل شبکه را در قالب اجزاء فراهم می کند. این اجزا در دایرکتوری اجزای موجود در دایرکتوری ریشه ESP-IDF ذخیره می شوند. توسعه دهندگان نیازی به کپی کردن این مؤلفه ها در فهرست مؤلفه های myProject ندارند. در عوض، آنها فقط باید روابط وابستگی این اجزا را در CMakeLists.txt پروژه مشخص کنند. file با استفاده از دستورالعمل های REQUIRES یا PRIV_REQUIRES. سیستم کامپایل به طور خودکار اجزای مورد نیاز را پیدا و کامپایل می کند.
بنابراین، دایرکتوری کامپوننت تحت myProject ضروری نیست. این فقط برای گنجاندن برخی از اجزای سفارشی پروژه، که می تواند کتابخانه های شخص ثالث یا کدهای تعریف شده توسط کاربر باشد، استفاده می شود. علاوه بر این، مؤلفه ها را می توان از هر دایرکتوری دیگری غیر از ESP-IDF یا پروژه فعلی، مانند یک پروژه منبع باز ذخیره شده در دایرکتوری دیگر، تهیه کرد. در این مورد، فقط باید مسیر کامپوننت را با تنظیم متغیر EXTRA_COMPONENT_DIRS در CMakeLists.txt در زیر فهرست اصلی اضافه کنید. این دایرکتوری هر مؤلفه ESP-IDF با همان نام را لغو می کند و اطمینان حاصل می کند که مؤلفه صحیح استفاده می شود.
برنامه ورودی main دایرکتوری اصلی در پروژه نیز به همین ترتیب است file ساختار به عنوان اجزای دیگر (به عنوان مثال، جزء 1). با این حال، اهمیت ویژه ای دارد زیرا یک جزء اجباری است که باید در هر پروژه وجود داشته باشد. دایرکتوری اصلی شامل کد منبع پروژه و نقطه ورود برنامه کاربر است که معمولاً app_main نام دارد. به طور پیش فرض اجرای برنامه کاربر از این نقطه ورودی شروع می شود. مؤلفه اصلی همچنین از این جهت متفاوت است که به طور خودکار به تمام مؤلفه های موجود در مسیر جستجو بستگی دارد. بنابراین، نیازی به نشان دادن صریح وابستگی ها با استفاده از دستورالعمل های REQUIRES یا PRIV_REQUIRES در CMakeLists.txt نیست. file.
پیکربندی file دایرکتوری ریشه پروژه شامل یک پیکربندی است file sdkconfig نامیده می شود که شامل پارامترهای پیکربندی برای تمام اجزای پروژه است. sdkconfig file به طور خودکار توسط سیستم کامپایل تولید می شود و می توان آن را تغییر داد و با دستور idf.py menuconfig دوباره تولید کرد. گزینه های menuconfig عمدتاً از Kconfig.projbuild پروژه و Kconfig مولفه ها سرچشمه می گیرند. توسعه دهندگان کامپوننت معمولا موارد پیکربندی را در Kconfig اضافه می کنند تا کامپوننت را انعطاف پذیر و قابل تنظیم کنند.
دایرکتوری ساخت به طور پیش‌فرض، دایرکتوری ساخت داخل پروژه، مقدار متوسط ​​را ذخیره می‌کند files و fi-
فصل 4. راه اندازی محیط توسعه 49

برنامه های اجرایی nal که توسط دستور ساخت idf.py تولید می شوند. به طور کلی، دسترسی مستقیم به محتویات دایرکتوری ساخت ضروری نیست. ESP-IDF دستورات از پیش تعریف شده ای را برای تعامل با دایرکتوری ارائه می دهد، مانند استفاده از دستور فلش idf.py برای مکان یابی خودکار باینری کامپایل شده file و آن را به آدرس فلش مشخص شده فلش کنید یا با استفاده از دستور idf.py fullclean کل دایرکتوری ساخت را پاک کنید.
جدول پارتیشن (partitions.csv) هر پروژه به یک جدول پارتیشن نیاز دارد تا فضای فلش را تقسیم کند و اندازه و آدرس شروع برنامه اجرایی و فضای داده کاربر را مشخص کند. دستور idf.py flash یا برنامه ارتقاء OTA فریمور را به آدرس مربوطه مطابق این جدول فلش می کند. ESP-IDF چندین جدول پارتیشن پیش‌فرض را در components/partition_table فراهم می‌کند، مانند partitions_singleapp.csv و partitions_two_ ota.csv، که می‌توانند در منوی پیکربندی انتخاب شوند.
اگر جدول پارتیشن پیش فرض سیستم نمی تواند الزامات پروژه را برآورده کند، یک partitions.csv سفارشی را می توان به فهرست راهنمای پروژه اضافه کرد و در menuconfig انتخاب کرد.
4.3.3 قوانین ساخت پیش فرض سیستم کامپایل
قوانین نادیده گرفتن اجزای همنام در طول فرآیند جستجوی مؤلفه، سیستم کامپایل از ترتیب خاصی پیروی می کند. ابتدا اجزای داخلی ESP-IDF را جستجو می‌کند، سپس اجزای پروژه کاربر را جستجو می‌کند و در نهایت اجزا را در EXTRA_COMPONENT_DIRS جستجو می‌کند. در مواردی که چندین دایرکتوری حاوی مؤلفه هایی با نام یکسان هستند، مؤلفه ای که در آخرین فهرست یافت می شود، هر مؤلفه قبلی با همان نام را لغو می کند. این قانون امکان سفارشی سازی اجزای ESP-IDF را در پروژه کاربر فراهم می کند، در حالی که کد اصلی ESP-IDF را دست نخورده نگه می دارد.
قوانینی برای گنجاندن مولفه های مشترک به طور پیش فرض همانطور که در بخش 4.3.2 ذکر شد، کامپوننت ها باید به صراحت وابستگی های خود را به اجزای دیگر در CMakeLists.txt مشخص کنند. با این حال، اجزای رایج مانند freerto به طور خودکار در سیستم ساخت به طور پیش فرض گنجانده می شوند، حتی اگر روابط وابستگی آنها به صراحت در اسکریپت کامپایل تعریف نشده باشد. اجزای رایج ESP-IDF عبارتند از freertos، Newlib، heap، log، soc، esp_rom، esp_common، xtensa/riscv و cxx. استفاده از این مؤلفه‌های رایج از انجام کارهای تکراری هنگام نوشتن CMakeLists.txt جلوگیری می‌کند و آن را مختصرتر می‌کند.
قوانین نادیده گرفتن موارد پیکربندی برنامه‌نویسان می‌توانند با افزودن یک پیکربندی پیش‌فرض، پارامترهای پیکربندی پیش‌فرض را اضافه کنند. file به نام sdkconfig.defaults برای پروژه. برای مثالample، اضافه کردن CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

DEFAULT_LEVEL_NONE = y می تواند رابط UART را طوری پیکربندی کند که داده های گزارش را به طور پیش فرض چاپ نکند. علاوه بر این، اگر نیاز به تنظیم پارامترهای خاص برای یک هدف خاص باشد، یک پیکربندی file با نام sdkconfig.defaults.TARGET_NAME را می توان اضافه کرد، جایی که TARGET_NAME می تواند esp32s2، esp32c3 و غیره باشد. این پیکربندی files در طول کامپایل به sdkconfig وارد می شوند، با تنظیمات پیش فرض کلی file ابتدا sdkconfig.default وارد می شود و سپس پیکربندی خاص هدف وارد می شود 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(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. پروژه (myProject)
در میان آنها، cmake_minimum_required (VERSION 3.5) باید در خط اول قرار گیرد، که برای نشان دادن حداقل شماره نسخه CMake مورد نیاز پروژه استفاده می شود. نسخه‌های جدیدتر CMake معمولاً با نسخه‌های قدیمی‌تر سازگار هستند، بنابراین هنگام استفاده از دستورات جدیدتر CMake، شماره نسخه را بر این اساس تنظیم کنید تا از سازگاری اطمینان حاصل کنید.
شامل ($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 نیز می توانند در اسکریپت کامپایل استفاده شوند. برای مثالample، از دستور set برای تنظیم متغیرهایی مانند set (VARIABLE "VALUE") استفاده کنید.

4.3.5 مقدمه ای بر دستورات مشترک
ESP-IDF از CMake (ابزار پیکربندی پروژه)، نینجا (ابزار ساخت پروژه) و 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: شروع تدوین کد. حد واسط files و برنامه اجرایی نهایی تولید شده توسط کامپایل به طور پیش فرض در فهرست ساخت پروژه ذخیره می شود. فرآیند کامپایل افزایشی است، به این معنی که اگر فقط یک منبع باشد file اصلاح شده است، فقط اصلاح شده است file دفعه بعد گردآوری خواهد شد.

52 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

· تمیز کردن idf.py: تمیز کردن واسطه fileایجاد شده توسط تلفیقی پروژه کل پروژه در کامپایل بعدی مجبور به کامپایل خواهد شد. توجه داشته باشید که پیکربندی CMake و تغییرات پیکربندی انجام شده توسط menuconfig در حین پاکسازی حذف نخواهند شد.
· idf.py fullclean: حذف کل فهرست ساخت، از جمله تمام خروجی های پیکربندی CMake fileس هنگام ساخت مجدد پروژه، CMake پروژه را از ابتدا پیکربندی می کند. لطفاً توجه داشته باشید که این دستور به صورت بازگشتی همه را حذف می کند files در فهرست ساخت، بنابراین با احتیاط از آن و پیکربندی پروژه استفاده کنید file حذف نخواهد شد.
· idf.py flash: فلش باینری برنامه اجرایی file تولید شده توسط ساخت به ESP32-C3 هدف. گزینه های -p و -b به ترتیب برای تنظیم نام دستگاه پورت سریال و نرخ باود برای چشمک زدن استفاده می شود. اگر این دو گزینه مشخص نشده باشند، پورت سریال به طور خودکار شناسایی می شود و از نرخ پیش فرض baud استفاده می شود.
· مانیتور idf.py: نمایش خروجی پورت سریال ESP32-C3 مورد نظر. از گزینه -p می توان برای تعیین نام دستگاه پورت سریال سمت میزبان استفاده کرد. در حین چاپ درگاه سریال، کلید ترکیبی Ctrl+] را فشار دهید تا از مانیتور خارج شوید.
دستورات بالا را نیز می توان در صورت نیاز ترکیب کرد. برای مثالampدستور idf.py ساخت فلش مانیتور کامپایل کد، فلش کردن و باز کردن مانیتور پورت سریال را به ترتیب انجام می دهد.
برای اطلاعات بیشتر در مورد سیستم کامپایل ESP-IDF می توانید به https://bookc3.espressif.com/build-system مراجعه کنید.
4.4 تمرین: تدوین مثالampبرنامه "چشمک زدن"
4.4.1 سابقampتجزیه و تحلیل
این بخش برنامه Blink را به عنوان یک برنامه قبلی در نظر می گیردampبرای تجزیه و تحلیل file ساختار و قوانین کدگذاری یک پروژه واقعی با جزئیات. برنامه Blink جلوه چشمک زن LED را پیاده سازی می کند و پروژه در دایرکتوری ex قرار داردamples/get-started/blink که حاوی یک منبع است file، پیکربندی files و چندین اسکریپت کامپایل.
پروژه نور هوشمند معرفی شده در این کتاب بر اساس این پیشین استampبرنامه le توابع به تدریج در فصل های بعدی اضافه می شوند تا در نهایت آن را تکمیل کنید.
کد منبع برای نشان دادن کل فرآیند توسعه، برنامه Blink در esp32c3-iot-projects/device firmware/1 blink کپی شده است.
ساختار دایرکتوری پروژه چشمک زدن files در شکل 4.15 نشان داده شده است.
پروژه چشمک زدن فقط شامل یک دایرکتوری اصلی است که جزء خاصی است که
فصل 4. راه اندازی محیط توسعه 53

شکل 4.15. File ساختار دایرکتوری پروژه چشمک زدن

باید همانطور که در بخش 4.3.2 توضیح داده شده است گنجانده شود. دایرکتوری اصلی عمدتاً برای ذخیره اجرای تابع ()app_main، که نقطه ورود به برنامه کاربر است، استفاده می شود. پروژه چشمک زدن شامل دایرکتوری اجزا نیست، زیراample فقط باید از اجزای همراه ESP-IDF استفاده کند و به اجزای اضافی نیاز ندارد. CMakeLists.txt موجود در پروژه blink برای هدایت فرآیند کامپایل استفاده می شود، در حالی که Kconfig.projbuild برای افزودن آیتم های پیکربندی برای این سابق استفاده می شود.ampبرنامه le در منوی پیکربندی غیر ضروری دیگر files روی کامپایل کد تاثیری نخواهد داشت، بنابراین در اینجا مورد بحث قرار نخواهند گرفت. معرفی دقیق پروژه چشمک زدن files به شرح زیر است.

1. /*blink.c شامل هدر زیر است files*/

2. #شامل

//هدر کتابخانه استاندارد C file

3. #include "freertos/freeRTOS.h" //FreeRTOS هدر اصلی file

4. #include "freertos/task.h"

//سرصفحه وظایف FreeRTOS file

5. #include "sdkconfig.h"

//سربرگ پیکربندی file تولید شده توسط kconfig

6. #include "driver/gpio.h"

//سربرگ درایور GPIO file

منبع file blink.c شامل یک سری هدر است files مربوط به تابع declara-

یون ها ESP-IDF معمولاً از ترتیب گنجاندن هدر کتابخانه استاندارد پیروی می کند files، FreeR-

هدر TOS files، هدر درایور files، هدر مؤلفه دیگر files و سربرگ پروژه files.

ترتیب هدر files گنجانده شده ممکن است بر نتیجه نهایی کامپایل تأثیر بگذارد، بنابراین سعی کنید

قوانین پیش فرض را دنبال کنید لازم به ذکر است که sdkconfig.h به طور خودکار تولید می شود

توسط kconfig و فقط از طریق دستور idf.py menuconfig قابل پیکربندی است.

اصلاح مستقیم این هدر file رونویسی خواهد شد.

1. /*شما می توانید GPIO مربوط به LED را در idf.py menuconfig انتخاب کنید و نتیجه تغییر منوconfig این است که مقدار CONFIG_BLINK

_GPIO تغییر خواهد کرد. همچنین می توانید مستقیماً تعریف ماکرو را تغییر دهید

در اینجا، و CONFIG_BLINK_GPIO را به یک مقدار ثابت تغییر دهید.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main (void)

4. {

5.

/* IO را به عنوان عملکرد پیش فرض GPIO پیکربندی کنید، حالت pull-up را فعال کنید و

6.

غیر فعال کردن حالت های ورودی و خروجی*/

7.

gpio_reset_pin (BLINK_GPIO);

54 ESP32-C3 Wireless Adventure: راهنمای جامع اینترنت اشیا

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

/*GPIO را روی حالت خروجی تنظیم کنید*/ gpio_set_direction(BLINK_GPIO، GPIO_MODE_OUTPUT); while (1) {
/*Print log*/ printf("خاموش کردن LEDn"); /* LED را خاموش کنید (خروجی سطح پایین)*/ gpio_set_level(BLINK_GPIO, 0); /*تاخیر (1000 میلی ثانیه)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf ("روشن کردن LEDn")؛ /* LED را روشن کنید (خروجی سطح بالا)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay (1000 / portTICK_PERIOD_MS)؛ }

تابع app_main() در Blink exampبرنامه le به عنوان نقطه ورود برای برنامه های کاربر عمل می کند. این یک تابع ساده بدون پارامتر و بدون مقدار بازگشتی است. این تابع پس از تکمیل مقداردهی اولیه توسط سیستم فراخوانی می شود که شامل وظایفی مانند راه اندازی پورت سریال log، پیکربندی تک هسته ای/دو هسته ای و پیکربندی 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. #نسخه‌های کمتر از نسخه 3.5 باید قبل از ادامه کامپایل ارتقا داده شوند. -سیستم جمع آوری IDF

فصل 4. راه اندازی محیط توسعه 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #یک پروژه با نام "blink" ایجاد کنید. 7. project(myProject)
در میان آنها، CMakeLists.txt در دایرکتوری ریشه عمدتاً شامل $ENV{IDF_ PATH}/tools/cmake/project.cmake است که پیکربندی اصلی CMake است. file ارائه شده توسط ESP-IDF. برای تضعیف استفاده می شود

اسناد / منابع

Espressif Systems ESP32-C3 Wireless Adventure [pdfراهنمای کاربر
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *