ESP32-C3 مغامرة لاسلكية

ESP32-C3 مغامرة لاسلكية

دليل شامل لإنترنت الأشياء

أنظمة إسبريسيف 12 يونيو 2023

تحديد

  • المنتج: ESP32-C3 مغامرة لاسلكية
  • الشركة المصنعة: اسبريسيف سيستمز
  • التاريخ: 12 يونيو 2023

تعليمات استخدام المنتج

تحضير

قبل استخدام ESP32-C3 Wireless Adventure، تأكد من ذلك
- على دراية بمفاهيم وهندسة إنترنت الأشياء. هذا سيساعد
أنت تفهم كيف يتناسب الجهاز مع النظام البيئي الأكبر لإنترنت الأشياء
وتطبيقاتها المحتملة في المنازل الذكية.

مقدمة وممارسة مشاريع إنترنت الأشياء

في هذا القسم، ستتعرف على مشاريع إنترنت الأشياء النموذجية،
بما في ذلك الوحدات الأساسية لأجهزة إنترنت الأشياء الشائعة والوحدات الأساسية
لتطبيقات العميل والأنظمة الأساسية السحابية المشتركة لإنترنت الأشياء. هذا سوف
توفر لك الأساس لفهم وإنشاء الخاص بك
مشاريع إنترنت الأشياء الخاصة.

الممارسة: مشروع الضوء الذكي

في هذا المشروع التدريبي، سوف تتعلم كيفية إنشاء برنامج ذكي
الضوء باستخدام ESP32-C3 Wireless Adventure. هيكل المشروع،
الوظائف، وإعداد الأجهزة، وعملية التطوير
وأوضح بالتفصيل.

هيكل المشروع

ويتكون المشروع من عدة مكونات، بما في ذلك
ESP32-C3 Wireless Adventure ومصابيح LED وأجهزة استشعار وسحابة
الخلفية.

وظائف المشروع

يتيح لك مشروع الضوء الذكي التحكم في السطوع و
لون مصابيح LED عن بعد من خلال تطبيق الهاتف المحمول أو web
واجهة.

تحضير الأجهزة

للتحضير للمشروع، سوف تحتاج إلى جمع
مكونات الأجهزة الضرورية، مثل ESP32-C3 Wireless
لوحة المغامرة، ومصابيح LED، والمقاومات، ومصدر الطاقة.

عملية التطوير

تتضمن عملية التطوير إعداد التطوير
البيئة، وكتابة التعليمات البرمجية للتحكم في مصابيح LED، والاتصال بـ
الواجهة الخلفية السحابية، واختبار وظائف الواجهة الذكية
ضوء.

مقدمة إلى ESP RainMaker

يعد ESP RainMaker إطارًا قويًا لتطوير إنترنت الأشياء
الأجهزة. في هذا القسم، ستتعرف على ما هو ESP RainMaker وما هو
وكيف يمكن تنفيذها في مشاريعك.

ما هو ESP RainMaker؟

ESP RainMaker عبارة عن منصة سحابية توفر مجموعة من
الأدوات والخدمات لبناء وإدارة أجهزة إنترنت الأشياء.

تنفيذ ESP RainMaker

يشرح هذا القسم المكونات المختلفة المشاركة فيه
تنفيذ ESP RainMaker، بما في ذلك خدمة المطالبة،
وكيل RainMaker، والواجهة الخلفية السحابية، وعميل RainMaker.

الممارسة: النقاط الأساسية للتطوير باستخدام ESP RainMaker

في قسم التدريب هذا، ستتعرف على النقاط الرئيسية التي يجب عليك القيام بها
ضعها في الاعتبار عند التطوير باستخدام ESP RainMaker. وهذا يشمل الجهاز
المطالبة ومزامنة البيانات وإدارة المستخدم.

مميزات برنامج ESP RainMaker

يقدم ESP RainMaker ميزات متنوعة لإدارة المستخدم
المستخدمين والمسؤولين. تسمح هذه الميزات بسهولة الجهاز
الإعداد والتحكم عن بعد والمراقبة.

تهيئة بيئة التطوير

يوفر هذا القسم عرضًا تفصيليًا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، مصدر الساعة،
واعتبارات الترددات اللاسلكية والهوائي. يوفر هذا القسم الفرعي
معلومات مفصلة عن هذه الجوانب.

التعليمات

س: ما هو ESP RainMaker؟

ج: ESP RainMaker عبارة عن منصة سحابية توفر الأدوات
وخدمات لبناء وإدارة أجهزة إنترنت الأشياء. إنه يبسط
عملية التطوير وتسمح بإعداد الجهاز بسهولة عن بعد
السيطرة والرصد.

س: كيف يمكنني إعداد بيئة التطوير لـ
ESP32-C3؟

ج: لإعداد بيئة التطوير لـ ESP32-C3، تحتاج إلى
لتثبيت ESP-IDF (إطار تطوير Espressif IoT) و
قم بتكوينه وفقًا للتعليمات المقدمة. ESP-IDF هو
إطار التطوير الرسمي للأجهزة المعتمدة على ESP32.

س: ما هي مميزات ESP RainMaker؟

ج: يقدم ESP RainMaker العديد من الميزات، بما في ذلك المستخدم
الإدارة وميزات المستخدم النهائي وميزات الإدارة. إدارةالمستخدم
يسمح بسهولة المطالبة بالجهاز ومزامنة البيانات. المستخدم النهائي
تتيح الميزات التحكم عن بعد في الأجهزة من خلال تطبيق الهاتف المحمول أو
web واجهه المستخدم. توفر ميزات المسؤول أدوات لمراقبة الجهاز
والإدارة.

ESP32-C3 مغامرة لاسلكية
دليل شامل لإنترنت الأشياء
أنظمة إسبريسيف 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 مقدمة إلى الأنظمة الأساسية السحابية المشتركة لإنترنت الأشياء. . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 الواجهة السحابية الخلفية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 عميل RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 الممارسة: النقاط الأساسية للتطوير باستخدام ESP RainMaker. . . . . . . . . . . . 25

3.4 ميزات ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 إدارة المستخدم. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 ميزات المستخدم النهائي. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 ميزات المشرف. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 إعداد بيئة التطوير

31

4.1 ESP-IDF انتهىview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 إصدارات ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 سير عمل بوابة ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 اختيار الإصدار المناسب . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 انتهىview من دليل ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 إعداد بيئة تطوير ESP-IDF. . . . . . . . . . . . . . . . . 38 4.2.1 إعداد بيئة تطوير ESP-IDF على Linux. . . . . . . . 38 4.2.2 إعداد بيئة تطوير ESP-IDF على Windows. . . . . . 40 4.2.3 إعداد بيئة تطوير ESP-IDF على نظام Mac. . . . . . . . . 45 4.2.4 تثبيت رمز VS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 مقدمة إلى بيئات تطوير الطرف الثالث. . . . . . . . 46 4.3 نظام تجميع ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 المفاهيم الأساسية لنظام التجميع. . . . . . . . . . . . . . . . . . 47 4.3.2 المشروع File بناء . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 قواعد البناء الافتراضية لنظام الترجمة. . . . . . . . . . . . . 50 4.3.4 مقدمة لبرنامج التجميع . . . . . . . . . . . . . . . . . . 51 4.3.5 مقدمة للأوامر المشتركة. . . . . . . . . . . . . . . . . . . 52 4.4 الممارسة: تجميع المثالampبرنامج "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 تصميم الأجهزة لمنتجات الإضاءة الذكية على أساس ESP32-C3

67

5.1 ميزات وتكوين منتجات الإضاءة الذكية. . . . . . . . . . . . . . . 67

5.2 تصميم الأجهزة للنظام الأساسي ESP32-C3. . . . . . . . . . . . . . . . . . . 70

5.2.1 مصدر الطاقة . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 تسلسل التشغيل وإعادة ضبط النظام. . . . . . . . . . . . . . . . . . 74

5.2.3 فلاش SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.4 مصدر الساعة . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 الترددات اللاسلكية والهوائي. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 إرشادات لتصميم الترددات اللاسلكية. . . . . . . . . . . . . . . . . . . . . . . . . . 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 سائق الصمام. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 يعتم الصمام. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 مقدمة إلى PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 تطوير برنامج تشغيل تعتيم LED. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 التخزين غير المتطاير (NVS). . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 وحدة تحكم PWM LED (LEDC). . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 برمجة PWM LED. . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 التدريب العملي: إضافة برامج التشغيل إلى مشروع Smart Light. . . . . . . . . . . . . . . . . 103

6.5.1 برنامج تشغيل الزر . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 سائق يعتم LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III الاتصالات اللاسلكية والتحكم

109

7 تكوين واتصال Wi-Fi

111

7.1 أساسيات الواي فاي . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.1 مقدمة إلى شبكة Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 تطور IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.3 مفاهيم الواي فاي . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.1.4 اتصال واي فاي. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7.2 أساسيات البلوتوث. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 مقدمة إلى تقنية البلوتوث. . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 مفاهيم البلوتوث. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 اتصال بلوتوث . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3 تكوين شبكة Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.3.1 دليل تكوين شبكة Wi-Fi . . . . . . . . . . . . . . . . . . . . 131

7.3.2 برنامج سوفت أب . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 التكوين الذكي . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.4 بلوتوث . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.3.5 طرق أخرى. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 برمجة الواي فاي . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 أدفانtagمن التحكم المحلي . . . . . . . . . . . . . . . . . . . . . . . . 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 مقدمة إلى داtagأمن طبقة النقل (DTLS). . . . . . . 213

8.5 الممارسة: التحكم المحلي في مشروع Smart Light. . . . . . . . . . . . . . . . . . 217

8.5.1 إنشاء خادم تحكم محلي يعتمد على شبكة Wi-Fi. . . . . . . . . . . . . . . 217

8.5.2 التحقق من وظيفة التحكم المحلي باستخدام البرامج النصية. . . . . . . . . . . 221

8.5.3 إنشاء خادم تحكم محلي يعتمد على تقنية Bluetooth. . . . . . . . . . . . 222

8.6 ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 التحكم السحابي

225

9.1 مقدمة للتحكم عن بعد. . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 بروتوكولات اتصالات البيانات السحابية. . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 مقدمة عن MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 مبادئ MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 تنسيق الرسالة MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 مقارنة البروتوكول . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 إعداد MQTT Broker على Linux وWindows. . . . . . . . . . . . 233 9.2.6 إعداد عميل MQTT بناءً على ESP-IDF. . . . . . . . . . . . . . . . 235 9.3 ضمان أمن بيانات MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 معنى الشهادات ووظيفتها. . . . . . . . . . . . . . . . . . . 237 9.3.2 إنشاء الشهادات محليًا. . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 تكوين وسيط MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 تكوين عميل MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 الممارسة: التحكم عن بعد من خلال ESP RainMaker. . . . . . . . . . . . . . . . 243 9.4.1 أساسيات ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 بروتوكول اتصالات الواجهة الخلفية للعقدة والسحابة. . . . . . . . . . . 244 9.4.3 الاتصال بين العميل والواجهة الخلفية للسحابة. . . . . . . . . . . 249 9.4.4 أدوار المستخدم. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 الخدمات الأساسية . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 الضوء الذكي السابقampلو . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 تطبيق RainMaker وتكاملات الطرف الثالث. . . . . . . . . . . . . . . 262 9.5 ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 تطوير تطبيقات الهواتف الذكية

269

10.1 مقدمة لتطوير تطبيقات الهواتف الذكية. . . . . . . . . . . . . . . . . . 269

10.1.1 أكثرview لتطوير تطبيقات الهواتف الذكية. . . . . . . . . . . . . . . 270

10.1.2 هيكل مشروع أندرويد. . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 هيكل مشروع iOS. . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 دورة حياة نشاط Android. . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 دورة حياة نظام iOS Viewمراقب . . . . . . . . . . . . . . . . . . . . . . 273

10.2 إنشاء مشروع تطبيق جديد للهواتف الذكية. . . . . . . . . . . . . . . . . . . . . 275

10.2.1 التحضير لتطوير Android. . . . . . . . . . . . . . . . . . . 275

10.2.2 إنشاء مشروع Android جديد. . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 إضافة التبعيات إلى MyRainmaker . . . . . . . . . . . . . . . . . 276

10.2.4 طلب الإذن في Android. . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 التحضير لتطوير iOS. . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 إنشاء مشروع iOS جديد. . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 إضافة التبعيات إلى MyRainmaker . . . . . . . . . . . . . . . . . 279

10.2.8 طلب الإذن في iOS. . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 تحليل المتطلبات الوظيفية للتطبيق. . . . . . . . . . . . . . . . . . 281

10.3.1 تحليل المتطلبات الوظيفية للمشروع. . . . . . . . . . . . 282

10.3.2 تحليل متطلبات إدارة المستخدم. . . . . . . . . . . . . . . 282 10.3.3 تحليل توفير الأجهزة ومتطلبات الربط. . . . . . . 283 10.3.4 تحليل متطلبات التحكم عن بعد. . . . . . . . . . . . . . . . 283 10.3.5 تحليل متطلبات الجدولة. . . . . . . . . . . . . . . . . . . 284 10.3.6 تحليل متطلبات مركز المستخدم. . . . . . . . . . . . . . . . . . 285 10.4 تطوير إدارة المستخدمين. . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 مقدمة إلى واجهات برمجة تطبيقات RainMaker. . . . . . . . . . . . . . . . . . . . . . 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 المزيد من واجهات برمجة التطبيقات السحابية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 المتطلبات الأساسية لأمن بيانات جهاز إنترنت الأشياء. . . . . . . . . . . . 371

13.2 حماية سلامة البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

13.2.1 مقدمة إلى طريقة التحقق من النزاهة. . . . . . . . . . . . . . 372

13.2.2 التحقق من سلامة بيانات البرامج الثابتة. . . . . . . . . . . . . . . . . . 373

13.2.3 مثالampلو . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 حماية سرية البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 مقدمة لتشفير البيانات. . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 مقدمة لنظام تشفير الفلاش. . . . . . . . . . . . . . . . . 376

13.3.3 تخزين مفتاح تشفير الفلاش. . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 طريقة عمل تشفير الفلاش. . . . . . . . . . . . . . . . . . . . 380

13.3.5 عملية تشفير الفلاش. . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 مقدمة لتشفير NVS. . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 مثالampملفات تشفير الفلاش وتشفير NVS. . . . . . . . . . . 384

13.4 حماية شرعية البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 مقدمة إلى التوقيع الرقمي. . . . . . . . . . . . . . . . . . . . . 386

13.4.2 أكثرview من نظام التمهيد الآمن . . . . . . . . . . . . . . . . . . . . . 388

13.4.3 مقدمة إلى التمهيد الآمن للبرامج. . . . . . . . . . . . . . . . . . . 388 13.4.4 مقدمة للتمهيد الآمن للأجهزة. . . . . . . . . . . . . . . . . . 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. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 البدء باستخدام ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 البدء باستخدام ESP Insights في مشروع esp-insights. . . . . . 409

15.2.2 تشغيل السابقampلو في مشروع esp-insights . . . . . . . . . . . . . . . 411

15.2.3 الإبلاغ عن معلومات Coredump. . . . . . . . . . . . . . . . . . . . . 411

15.2.4 تخصيص سجلات الاهتمام. . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 الإبلاغ عن سبب إعادة التشغيل. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 الإبلاغ عن المقاييس المخصصة. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 الممارسة: استخدام رؤى ESP في مشروع Smart Light. . . . . . . . . . . . . . . 416

15.4 ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

مقدمة
ESP32-C3 عبارة عن وحدة تحكم دقيقة تعمل بتقنية Wi-Fi وBluetooth 5 (LE) أحادية النواة، تعتمد على بنية RISC-V مفتوحة المصدر. فهو يحقق التوازن الصحيح بين الطاقة وإمكانيات الإدخال/الإخراج والأمان، وبالتالي يقدم الحل الأمثل والفعال من حيث التكلفة للأجهزة المتصلة. لعرض التطبيقات المتنوعة لعائلة ESP32-C3، سيأخذك هذا الكتاب من تأليف Espressif في رحلة ممتعة عبر الذكاء الاصطناعي للأشياء (AIoT)، بدءًا من أساسيات تطوير مشروع إنترنت الأشياء وإعداد البيئة إلى التدريب العملي.ampليه. تتحدث الفصول الأربعة الأولى عن إنترنت الأشياء وESP RainMaker وESP-IDF. الفصل 5 و 6 موجز عن تصميم الأجهزة وتطوير برامج التشغيل. أثناء تقدمك، ستكتشف كيفية تكوين مشروعك من خلال شبكات Wi-Fi وتطبيقات الهاتف المحمول. وأخيرًا، ستتعلم كيفية تحسين مشروعك ووضعه في مرحلة الإنتاج الضخم.
إذا كنت مهندسًا في مجالات ذات صلة، أو مهندس برمجيات، أو مدرسًا، أو طالبًا، أو أي شخص لديه اهتمام بإنترنت الأشياء، فهذا الكتاب مناسب لك.
يمكنك تنزيل الكود السابقampالمستخدمة في هذا الكتاب من موقع Espressif على GitHub. للحصول على أحدث المعلومات حول تطوير إنترنت الأشياء، يرجى متابعة حسابنا الرسمي.

مقدمة
عالم المعلوماتية
من خلال ركوب موجة الإنترنت، ظهرت إنترنت الأشياء (IoT) لأول مرة لتصبح نوعًا جديدًا من البنية التحتية في الاقتصاد الرقمي. ولتقريب التكنولوجيا من الجمهور، تعمل Espressif Systems على رؤية مفادها أن المطورين من جميع مناحي الحياة يمكنهم استخدام إنترنت الأشياء لحل بعض المشكلات الأكثر إلحاحًا في عصرنا. إن عالم "الشبكة الذكية لكل الأشياء" هو ما نتوقعه من المستقبل.
إن تصميم رقائقنا الخاصة يشكل عنصرًا حاسمًا في تلك الرؤية. إنه ماراثون، يتطلب اختراقات مستمرة ضد الحدود التكنولوجية. من ESP8266 "Game Changer" إلى سلسلة ESP32 التي تدمج اتصال Wi-Fi وBluetoothr (LE)، متبوعة بـ ESP32-S3 المجهز بتسريع الذكاء الاصطناعي، لا تتوقف Espressif أبدًا عن البحث وتطوير المنتجات لحلول الذكاء الاصطناعي للأشياء. من خلال برامجنا مفتوحة المصدر، مثل IoT Development Framework ESP-IDF، وMesh Development Framework ESP-MDF، وDevice Connectivity Platform ESP RainMaker، قمنا بإنشاء إطار عمل مستقل لبناء تطبيقات AIoT.
اعتبارًا من يوليو 2022، تجاوزت الشحنات التراكمية لشرائح إنترنت الأشياء من Espressif 800 مليون، مما يجعلها رائدة في سوق Wi-Fi MCU وتشغيل عدد كبير من الأجهزة المتصلة في جميع أنحاء العالم. السعي لتحقيق التميز يجعل كل منتج من منتجات Espressif يحقق نجاحًا كبيرًا نظرًا لمستوى التكامل العالي وفعالية التكلفة. يمثل إصدار ESP32-C3 علامة بارزة في تقنية Espressif التي طورتها ذاتيًا. إنها وحدة MCU أحادية النواة، 32 بت، ومعتمدة على RISC-V مع 400 كيلو بايت من ذاكرة SRAM، والتي يمكن تشغيلها بسرعة 160 ميجا هرتز. لقد تم دمج شبكة Wi-Fi بتردد 2.4 جيجا هرتز وBluetooth 5 (LE) مع دعم طويل المدى. فهو يحقق توازنًا دقيقًا بين الطاقة وإمكانيات الإدخال/الإخراج والأمان، وبالتالي يقدم الحل الأمثل والفعال من حيث التكلفة للأجهزة المتصلة. استنادًا إلى ESP32-C3 القوي، يهدف هذا الكتاب إلى مساعدة القراء على فهم المعرفة المتعلقة بإنترنت الأشياء من خلال الرسوم التوضيحية التفصيلية والتمارين العملية.ampليز.
لماذا كتبنا هذا الكتاب؟
Espressif Systems هي أكثر من مجرد شركة لأشباه الموصلات. وهي أيضًا شركة تعمل في مجال منصات إنترنت الأشياء، وتسعى دائمًا لتحقيق الاختراقات والابتكارات في مجال التكنولوجيا. في الوقت نفسه، قامت Espressif بفتح المصدر ومشاركة نظام التشغيل وإطار البرامج الذي تم تطويره ذاتيًا مع المجتمع، مما يشكل نظامًا بيئيًا فريدًا. يقوم المهندسون والصانعون وعشاق التكنولوجيا بتطوير تطبيقات برمجية جديدة تعتمد على منتجات Espressif، ويتواصلون بحرية ويشاركون خبراتهم. يمكنك رؤية أفكار المطورين الرائعة على منصات مختلفة طوال الوقت، مثل YouTube وGitHub. حفزت شعبية منتجات Espressif عددًا متزايدًا من المؤلفين الذين أنتجوا أكثر من 100 كتاب استنادًا إلى شرائح Espressif، بأكثر من عشر لغات، بما في ذلك الإنجليزية والصينية والألمانية والفرنسية واليابانية.

إن دعم وثقة شركاء المجتمع هو الذي يشجع الابتكار المستمر لشركة Espressif. "نحن نسعى جاهدين لجعل رقائقنا وأنظمة التشغيل والأطر والحلول والسحابة والممارسات التجارية والأدوات والوثائق والكتابات والأفكار وما إلى ذلك، أكثر صلة بالإجابات التي يحتاجها الناس في مشاكل الحياة المعاصرة الأكثر إلحاحًا. هذا هو أعلى طموح لشركة Espressif وبوصلتها الأخلاقية. قال السيد تيو سوي آن، المؤسس والرئيس التنفيذي لشركة Espressif.
Espressif تقدر القراءة والأفكار. نظرًا لأن التحديث المستمر لتقنية إنترنت الأشياء يفرض متطلبات أعلى على المهندسين، فكيف يمكننا مساعدة المزيد من الأشخاص على إتقان شرائح إنترنت الأشياء وأنظمة التشغيل وأطر البرامج ومخططات التطبيقات ومنتجات الخدمات السحابية بسرعة؟ وكما يقول المثل أن تعلم الرجل كيف يصطاد السمك خير من أن تعطيه سمكة. في جلسة العصف الذهني، خطر ببالنا أنه يمكننا تأليف كتاب لتصنيف المعرفة الأساسية لتطوير إنترنت الأشياء بشكل منهجي. لقد بدأنا العمل، وسرعان ما جمعنا مجموعة من كبار المهندسين، وجمعنا بين خبرة الفريق الفني في البرمجة المدمجة، وتطوير أجهزة وبرمجيات إنترنت الأشياء، وكل ذلك ساهم في نشر هذا الكتاب. أثناء عملية الكتابة، بذلنا قصارى جهدنا لنكون موضوعيين وعادلين، ومجردين من الشرنقة، ونستخدم تعبيرات موجزة لتوضيح مدى تعقيد وسحر إنترنت الأشياء. لقد قمنا بتلخيص الأسئلة الشائعة بعناية، وأشرنا إلى تعليقات واقتراحات المجتمع، من أجل الإجابة بوضوح على الأسئلة التي تمت مواجهتها في عملية التطوير، وتوفير إرشادات عملية لتطوير إنترنت الأشياء للفنيين وصناع القرار المعنيين.
هيكل الكتاب
يأخذ هذا الكتاب منظورًا يتمحور حول المهندس ويشرح المعرفة اللازمة لتطوير مشروع إنترنت الأشياء خطوة بخطوة. ويتكون من أربعة أجزاء على النحو التالي:
· الإعداد (الفصل 1): يقدم هذا الجزء بنية إنترنت الأشياء، وإطار مشروع إنترنت الأشياء النموذجي، والمنصة السحابية ESP RainMakerr، وبيئة التطوير ESP-IDF، وذلك لوضع أساس متين لتطوير مشروع إنترنت الأشياء.
· تطوير الأجهزة وبرامج التشغيل (الفصل 5): استنادًا إلى مجموعة الشرائح ESP6-C32، يشرح هذا الجزء الحد الأدنى من تطوير نظام الأجهزة وبرامج التشغيل، وينفذ التحكم في التعتيم وتصنيف الألوان والاتصالات اللاسلكية.
· الاتصالات اللاسلكية والتحكم (الفصل 7): يشرح هذا الجزء مخطط تكوين Wi-Fi الذكي استنادًا إلى شريحة ESP11-C32 وبروتوكولات التحكم المحلية والسحابية والتحكم المحلي والبعيد في الأجهزة. كما يوفر أيضًا مخططات لتطوير تطبيقات الهواتف الذكية وترقية البرامج الثابتة وإدارة الإصدارات.
· التحسين والإنتاج الضخم (الفصل 12-15): هذا الجزء مخصص لتطبيقات إنترنت الأشياء المتقدمة، مع التركيز على تحسين المنتجات في إدارة الطاقة، وتحسين الطاقة المنخفضة، وتعزيز الأمان. كما يقدم أيضًا نسخ البرامج الثابتة واختبارها في الإنتاج الضخم، وكيفية تشخيص حالة التشغيل وسجلات البرامج الثابتة للجهاز من خلال منصة المراقبة عن بعد ESP Insights.

حول كود المصدر
يمكن للقراء تشغيل السابقينampالبرامج الموجودة في هذا الكتاب، إما عن طريق إدخال الكود يدويًا أو باستخدام الكود المصدري المصاحب للكتاب. نحن نؤكد على الجمع بين النظرية والتطبيق، وبالتالي نضع قسمًا للممارسة بناءً على مشروع Smart Light في كل فصل تقريبًا. جميع الرموز مفتوحة المصدر. نرحب بالقراء لتنزيل الكود المصدري ومناقشته في الأقسام المتعلقة بهذا الكتاب على GitHub ومنتدانا الرسمي esp32.com. يخضع الكود مفتوح المصدر لهذا الكتاب لشروط ترخيص Apache 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 ملاحظة أو نصائح.
يتم تنفيذ معظم الأوامر الواردة في هذا الكتاب في نظام التشغيل Linux، ويتم المطالبة بها بواسطة الحرف "$". إذا كان الأمر يتطلب امتيازات المستخدم المتميز للتنفيذ، فسيتم استبدال الموجه بـ "#". موجه الأوامر على أنظمة Mac هو "%"، كما هو مستخدم في القسم 4.2.3 تثبيت ESP-IDF على Mac.
سيتم طباعة النص الأساسي في هذا الكتاب في الميثاق، في حين أن الكود السابقampLes، Components، Functions، Variables، Code 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 – كتلة الإدخال prod.csv – كتلة الإخراج prod.bin – حجم NVS PARTITION SIZE

الفصل الأول

مقدمة

ل

إنترنت الأشياء

في نهاية القرن العشرين، ومع ظهور شبكات الكمبيوتر وتقنيات الاتصالات، اندمج الإنترنت بسرعة في حياة الناس. مع استمرار تطور تكنولوجيا الإنترنت، ولدت فكرة إنترنت الأشياء (IoT). حرفيًا، يعني إنترنت الأشياء (IoT) الإنترنت الذي تتصل به الأشياء. في حين أن الإنترنت الأصلي يكسر حدود المكان والزمان ويضيق المسافة بين "الشخص والشخص"، فإن إنترنت الأشياء يجعل "الأشياء" مشاركًا مهمًا، مما يقرب "الناس" و"الأشياء" من بعضهم البعض. في المستقبل المنظور، من المقرر أن تصبح إنترنت الأشياء القوة الدافعة لصناعة المعلومات.
إذًا، ما هو إنترنت الأشياء؟
من الصعب تعريف إنترنت الأشياء بدقة، حيث أن معناها ونطاقها يتطوران باستمرار. في عام 1995، طرح بيل جيتس فكرة إنترنت الأشياء لأول مرة في كتابه "الطريق إلى الأمام". ببساطة، يتيح إنترنت الأشياء للأشياء تبادل المعلومات مع بعضها البعض عبر الإنترنت. هدفها النهائي هو إنشاء "إنترنت كل شيء". يعد هذا تفسيرًا مبكرًا لإنترنت الأشياء، بالإضافة إلى خيال التكنولوجيا المستقبلية. وبعد ثلاثين عاما، ومع التطور السريع للاقتصاد والتكنولوجيا، أصبح الخيال حقيقة واقعة. من الأجهزة الذكية، والمنازل الذكية، والمدن الذكية، وإنترنت المركبات والأجهزة القابلة للارتداء، إلى "metaverse" الذي تدعمه تقنيات إنترنت الأشياء، تظهر مفاهيم جديدة باستمرار. في هذا الفصل، سنبدأ بشرح بنية إنترنت الأشياء، ثم نقدم تطبيق إنترنت الأشياء الأكثر شيوعًا، وهو المنزل الذكي، لمساعدتك في الحصول على فهم واضح لإنترنت الأشياء.
1.1 بنية إنترنت الأشياء
يتضمن إنترنت الأشياء تقنيات متعددة لها احتياجات وأشكال تطبيقية مختلفة في صناعات مختلفة. من أجل فرز الهيكل والتقنيات الرئيسية وخصائص التطبيق لإنترنت الأشياء، من الضروري إنشاء بنية موحدة ونظام تقني قياسي. في هذا الكتاب، تنقسم بنية إنترنت الأشياء ببساطة إلى أربع طبقات: طبقة الإدراك والتحكم، وطبقة الشبكة، وطبقة النظام الأساسي، وطبقة التطبيق.
طبقة الإدراك والتحكم باعتبارها العنصر الأساسي في بنية إنترنت الأشياء، فإن طبقة الإدراك والتحكم هي جوهر تحقيق الاستشعار الشامل لإنترنت الأشياء. وتتمثل مهمتها الرئيسية في جمع المعلومات وتحديدها والسيطرة عليها. يتكون من أجهزة متنوعة ذات قدرة على الإدراك،
3

التحديد والتحكم والتنفيذ، وهو مسؤول عن استرجاع وتحليل البيانات مثل خصائص المواد والاتجاهات السلوكية وحالة الجهاز. وبهذه الطريقة، يتعرف إنترنت الأشياء على العالم المادي الحقيقي. علاوة على ذلك، فإن الطبقة قادرة أيضًا على التحكم في حالة الجهاز.
الأجهزة الأكثر شيوعًا في هذه الطبقة هي أجهزة الاستشعار المختلفة، والتي تلعب دورًا مهمًا في جمع المعلومات وتحديد هويتها. أجهزة الاستشعار تشبه أعضاء حس الإنسان، مثل أجهزة الاستشعار الحساسة للضوء التي تعادل الرؤية، وأجهزة الاستشعار الصوتية للسمع، وأجهزة الاستشعار الغازية للشم، وأجهزة الاستشعار الحساسة للضغط والحرارة للمس. ومع كل هذه "الأعضاء الحسية"، تصبح الأشياء "حية" وقادرة على الإدراك الذكي والتعرف على العالم المادي والتلاعب به.
طبقة الشبكة تتمثل الوظيفة الرئيسية لطبقة الشبكة في نقل المعلومات، بما في ذلك البيانات التي تم الحصول عليها من طبقة الإدراك والتحكم إلى هدف محدد، بالإضافة إلى الأوامر الصادرة من طبقة التطبيق إلى طبقة الإدراك والتحكم. إنه بمثابة جسر اتصال مهم يربط بين طبقات مختلفة من نظام إنترنت الأشياء. لإعداد نموذج أساسي لإنترنت الأشياء، يتضمن الأمر خطوتين لدمج الكائنات في الشبكة: الوصول إلى الإنترنت والنقل عبر الإنترنت.
الوصول إلى الإنترنت يتيح الإنترنت التواصل بين شخص وآخر، ولكنه يفشل في دمج الأشياء في العائلة الكبيرة. قبل ظهور إنترنت الأشياء، لم تكن معظم الأشياء "قابلة للربط بالشبكة". بفضل التطور المستمر للتكنولوجيا، تمكنت إنترنت الأشياء من ربط الأشياء بالإنترنت، وبالتالي تحقيق الترابط بين "الأشخاص والأشياء"، و"الأشياء والأشياء". هناك طريقتان شائعتان لتنفيذ الاتصال بالإنترنت: الوصول إلى الشبكة السلكية والوصول إلى الشبكة اللاسلكية.
تتضمن طرق الوصول إلى الشبكة السلكية إيثرنت، والاتصال التسلسلي (على سبيل المثال، RS-232، RS-485) وUSB، بينما يعتمد الوصول إلى الشبكة اللاسلكية على الاتصال اللاسلكي، والذي يمكن تقسيمه أيضًا إلى اتصال لاسلكي قصير المدى واتصال لاسلكي طويل المدى.
تتضمن الاتصالات اللاسلكية قصيرة المدى ZigBee، وBluetoothr، وWi-Fi، واتصالات المجال القريب (NFC)، والتعرف على ترددات الراديو (RFID). تتضمن الاتصالات اللاسلكية طويلة المدى الاتصال المحسن لنوع الآلة (eMTC)، وLoRa، وإنترنت الأشياء ضيق النطاق (NB-IoT)، و2G، و3G، و4G، و5G، وما إلى ذلك.
النقل عبر الإنترنت تؤدي الطرق المختلفة للوصول إلى الإنترنت إلى وصلة نقل مادية مقابلة للبيانات. والشيء التالي هو تحديد بروتوكول الاتصال الذي سيتم استخدامه لنقل البيانات. بالمقارنة مع محطات الإنترنت، فإن معظم محطات إنترنت الأشياء تحتوي حاليًا على عدد أقل
4 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

الموارد المتاحة، مثل أداء المعالجة، وسعة التخزين، ومعدل الشبكة، وما إلى ذلك، لذلك من الضروري اختيار بروتوكول اتصال يشغل موارد أقل في تطبيقات إنترنت الأشياء. هناك نوعان من بروتوكولات الاتصال المستخدمة على نطاق واسع اليوم: نقل القياس عن بعد لخدمة وضع الرسائل في قائمة انتظار (MQTT) وبروتوكول التطبيقات المقيدة (CoAP).
طبقة النظام الأساسي تشير طبقة النظام الأساسي بشكل أساسي إلى الأنظمة الأساسية السحابية لإنترنت الأشياء. عندما تكون جميع محطات إنترنت الأشياء متصلة بالشبكة، يجب تجميع بياناتها على منصة سحابية لإنترنت الأشياء ليتم حسابها وتخزينها. تدعم طبقة النظام الأساسي بشكل أساسي تطبيقات إنترنت الأشياء لتسهيل الوصول إلى الأجهزة الضخمة وإدارتها. فهو يربط محطات إنترنت الأشياء بالمنصة السحابية، ويجمع البيانات الطرفية، ويصدر الأوامر إلى المحطات الطرفية، وذلك لتنفيذ التحكم عن بعد. باعتبارها خدمة وسيطة لتخصيص المعدات لتطبيقات الصناعة، تلعب طبقة النظام الأساسي دورًا متصلاً في بنية إنترنت الأشياء بأكملها، وتحمل منطق الأعمال المجرد ونموذج البيانات الأساسية الموحد، والتي لا يمكنها تحقيق الوصول السريع للأجهزة فحسب، بل توفر أيضًا إمكانات معيارية قوية لتلبية الاحتياجات المختلفة في سيناريوهات تطبيق الصناعة. تشتمل طبقة النظام الأساسي بشكل أساسي على وحدات وظيفية مثل الوصول إلى الجهاز، وإدارة الجهاز، وإدارة الأمان، واتصالات الرسائل، ومراقبة التشغيل والصيانة، وتطبيقات البيانات.
· الوصول إلى الأجهزة، وتحقيق الاتصال والتواصل بين المحطات الطرفية والمنصات السحابية لإنترنت الأشياء.
· إدارة الجهاز، بما في ذلك وظائف مثل إنشاء الجهاز، وصيانة الجهاز، وتحويل البيانات، ومزامنة البيانات، وتوزيع الجهاز.
· إدارة الأمن، وضمان أمن نقل بيانات إنترنت الأشياء من منظور المصادقة الأمنية وأمن الاتصالات.
· اتصالات الرسائل، بما في ذلك ثلاثة اتجاهات نقل، أي أن المحطة ترسل البيانات إلى النظام الأساسي السحابي لإنترنت الأشياء، وترسل المنصة السحابية لإنترنت الأشياء البيانات إلى جانب الخادم أو منصات سحابة إنترنت الأشياء الأخرى، ويتحكم جانب الخادم عن بعد في أجهزة إنترنت الأشياء.
· مراقبة التشغيل والصيانة، بما في ذلك المراقبة والتشخيص، وترقية البرامج الثابتة، وتصحيح الأخطاء عبر الإنترنت، وخدمات السجل، وما إلى ذلك.
· تطبيقات البيانات، والتي تتضمن تخزين البيانات وتحليلها وتطبيقها.
طبقة التطبيق تستخدم طبقة التطبيق البيانات من طبقة النظام الأساسي لإدارة التطبيق وتصفيتها ومعالجتها باستخدام أدوات مثل قواعد البيانات وبرامج التحليل. ويمكن استخدام البيانات الناتجة لتطبيقات إنترنت الأشياء في العالم الحقيقي مثل الرعاية الصحية الذكية والزراعة الذكية والمنازل الذكية والمدن الذكية.
بالطبع، يمكن تقسيم بنية إنترنت الأشياء إلى المزيد من الطبقات، ولكن بغض النظر عن عدد الطبقات التي تتكون منها، يظل المبدأ الأساسي كما هو في الأساس. تعلُّم
الفصل 1. مقدمة إلى إنترنت الأشياء 5

حول بنية إنترنت الأشياء يساعد على تعميق فهمنا لتقنيات إنترنت الأشياء وبناء مشاريع إنترنت الأشياء كاملة الوظائف.
1.2 تطبيق إنترنت الأشياء في المنازل الذكية
لقد اخترقت إنترنت الأشياء جميع مناحي الحياة، وتطبيق إنترنت الأشياء الأكثر ارتباطًا بنا هو المنزل الذكي. تم تجهيز العديد من الأجهزة التقليدية الآن بجهاز واحد أو أكثر من أجهزة إنترنت الأشياء، وتم تصميم العديد من المنازل المبنية حديثًا باستخدام تقنيات إنترنت الأشياء منذ البداية. يوضح الشكل 1.1 بعض الأجهزة المنزلية الذكية الشائعة.
الشكل 1.1. الأجهزة المنزلية الذكية الشائعة يمكن تقسيم تطوير المنزل الذكي ببساطة إلى منتجات ذكيةtagه، المشهد الربط قtagه وذكيtagه، كما هو مبين في الشكل 1.2.
الشكل 1.2. تطوير قtage of Smart home 6 ESP32-C3 مغامرة لاسلكية: دليل شامل لإنترنت الأشياء

الأول سtage يدور حول المنتجات الذكية. تختلف أجهزة إنترنت الأشياء عن المنازل التقليدية، حيث تتلقى أجهزة إنترنت الأشياء في المنازل الذكية إشارات باستخدام أجهزة استشعار، ويتم ربطها بالشبكة من خلال تقنيات الاتصال اللاسلكية مثل Wi-Fi وBluetooth LE وZigBee. يمكن للمستخدمين التحكم في المنتجات الذكية بعدة طرق، مثل تطبيقات الهواتف الذكية، والمساعدين الصوتيين، والتحكم الذكي في السماعات، وما إلى ذلك.tagيركز e على ربط المشهد. في هذا قtagهـ، لم يعد المطورون يفكرون في التحكم في منتج ذكي واحد، بل يفكرون في ربط منتجين ذكيين أو أكثر، والأتمتة إلى حد ما، وأخيرًا تشكيل وضع مشهد مخصص. على سبيل المثالample، عندما يضغط المستخدم على أي زر في وضع المشهد، سيتم تكييف الأضواء والستائر ومكيفات الهواء تلقائيًا مع الإعدادات المسبقة. بالطبع، هناك شرط أساسي وهو أن يتم إعداد منطق الارتباط بسهولة، بما في ذلك شروط التشغيل وإجراءات التنفيذ. تخيل أنه يتم تشغيل وضع تسخين مكيف الهواء عندما تنخفض درجة الحرارة الداخلية إلى أقل من 10 درجات مئوية؛ وفي الساعة السابعة صباحًا، يتم تشغيل الموسيقى لإيقاظ المستخدم، ويتم فتح الستائر الذكية، ويبدأ تشغيل جهاز طهي الأرز أو محمصة الخبز من خلال مقبس ذكي؛ عندما يستيقظ المستخدم وينتهي من الغسيل، يتم تقديم وجبة الإفطار بالفعل، بحيث لن يكون هناك أي تأخير في الذهاب إلى العمل. كم أصبحت حياتنا مريحة! الثالث سtagه يذهب إلى الاستخبارات قtagه. مع زيادة الوصول إلى الأجهزة المنزلية الذكية، ستتزايد أيضًا أنواع البيانات التي يتم إنشاؤها. وبمساعدة الحوسبة السحابية والبيانات الضخمة والذكاء الاصطناعي، يبدو الأمر كما لو تم زرع "عقل أكثر ذكاءً" في المنازل الذكية، والتي لم تعد تتطلب أوامر متكررة من المستخدم. يقومون بجمع البيانات من التفاعلات السابقة ومعرفة أنماط سلوك المستخدم وتفضيلاته، وذلك لأتمتة الأنشطة، بما في ذلك تقديم توصيات لاتخاذ القرار. حاليًا، توجد معظم المنازل الذكية في موقع التوصيل البينيtagه. مع زيادة معدل اختراق وذكاء المنتجات الذكية، تتم إزالة الحواجز بين بروتوكولات الاتصال. في المستقبل، لا بد أن تصبح المنازل الذكية "ذكية" حقًا، تمامًا مثل نظام الذكاء الاصطناعي جارفيس في آيرون مان، والذي لا يمكنه فقط مساعدة المستخدم على التحكم في الأجهزة المختلفة، والتعامل مع الشؤون اليومية، ولكن أيضًا يتمتع بقوة حوسبة فائقة وقدرة على التفكير. في ذكي قtagهـ، سيحصل البشر على خدمات أفضل من حيث الكم والنوع.
الفصل 1. مقدمة إلى إنترنت الأشياء 7

8 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

الفصل مقدمة وممارسة مشروعين لإنترنت الأشياء
في الفصل الأول، قدمنا ​​بنية إنترنت الأشياء، والأدوار والعلاقات المتبادلة لطبقة الإدراك والتحكم، وطبقة الشبكة، وطبقة النظام الأساسي، وطبقة التطبيق، بالإضافة إلى تطوير المنزل الذكي. ومع ذلك، تمامًا كما هو الحال عندما نتعلم الرسم، فإن معرفة المعرفة النظرية ليست كافية على الإطلاق. علينا أن "نتسخ أيدينا" لوضع مشاريع إنترنت الأشياء موضع التنفيذ من أجل إتقان التكنولوجيا حقًا. بالإضافة إلى ذلك، عندما ينتقل المشروع إلى الإنتاج الضخمtagهـ، من الضروري مراعاة المزيد من العوامل مثل اتصال الشبكة والتكوين وتفاعل النظام الأساسي السحابي لإنترنت الأشياء وإدارة البرامج الثابتة وتحديثاتها وإدارة الإنتاج الضخم وتكوين الأمان. إذًا، ما الذي يجب أن ننتبه إليه عند تطوير مشروع إنترنت الأشياء الكامل؟ ذكرنا في الفصل الأول أن المنزل الذكي هو أحد سيناريوهات تطبيقات إنترنت الأشياء الأكثر شيوعًا، وتعد الأضواء الذكية واحدة من أكثر الأجهزة الأساسية والعملية، والتي يمكن استخدامها في المنازل والفنادق وصالات الألعاب الرياضية والمستشفيات وما إلى ذلك. في هذا الكتاب، سنتخذ بناء مشروع الإضاءة الذكية كنقطة انطلاق، ونشرح مكوناته وميزاته، ونقدم إرشادات حول تطوير المشروع. نأمل أن تتمكن من استخلاص استنتاجات من هذه الحالة لإنشاء المزيد من تطبيقات إنترنت الأشياء.
2.1 مقدمة لمشاريع إنترنت الأشياء النموذجية
من حيث التطوير، يمكن تصنيف الوحدات الوظيفية الأساسية لمشاريع إنترنت الأشياء إلى تطوير البرامج والأجهزة لأجهزة إنترنت الأشياء، وتطوير تطبيقات العميل، وتطوير النظام الأساسي السحابي لإنترنت الأشياء. من المهم توضيح الوحدات الوظيفية الأساسية، والتي سيتم وصفها بشكل أكبر في هذا القسم.
2.1.1 الوحدات الأساسية لأجهزة إنترنت الأشياء الشائعة
يتضمن تطوير البرامج والأجهزة لأجهزة إنترنت الأشياء الوحدات الأساسية التالية: جمع البيانات
وباعتبارها الطبقة السفلية من بنية إنترنت الأشياء، تقوم أجهزة إنترنت الأشياء في طبقة الإدراك والتحكم بتوصيل أجهزة الاستشعار والأجهزة من خلال شرائحها والأجهزة الطرفية لتحقيق جمع البيانات والتحكم في التشغيل.
9

ربط الحساب والتكوين الأولي بالنسبة لمعظم أجهزة إنترنت الأشياء، يتم إكمال ربط الحساب والتكوين الأولي في عملية تشغيلية واحدة، على سبيل المثالample، توصيل الأجهزة بالمستخدمين عن طريق تكوين شبكة Wi-Fi.
التفاعل مع منصات إنترنت الأشياء السحابية لمراقبة أجهزة إنترنت الأشياء والتحكم فيها، من الضروري أيضًا توصيلها بمنصات إنترنت الأشياء السحابية، من أجل إعطاء الأوامر وحالة التقرير من خلال التفاعل بين بعضها البعض.
التحكم في الجهاز عند الاتصال بالمنصات السحابية لإنترنت الأشياء، يمكن للأجهزة التواصل مع السحابة وتسجيلها أو ربطها أو التحكم فيها. يمكن للمستخدمين الاستعلام عن حالة المنتج وتنفيذ عمليات أخرى على تطبيق الهاتف الذكي من خلال منصات إنترنت الأشياء السحابية أو بروتوكولات الاتصال المحلية.
ترقية البرامج الثابتة يمكن لأجهزة إنترنت الأشياء أيضًا تحقيق ترقية البرامج الثابتة بناءً على احتياجات الشركات المصنعة. ومن خلال تلقي الأوامر المرسلة عبر السحابة، سيتم تحقيق ترقية البرامج الثابتة وإدارة الإصدار. باستخدام ميزة ترقية البرامج الثابتة هذه، يمكنك تحسين وظائف أجهزة إنترنت الأشياء بشكل مستمر وإصلاح العيوب وتحسين تجربة المستخدم.
2.1.2 الوحدات الأساسية لتطبيقات العميل
تشتمل تطبيقات العميل (مثل تطبيقات الهواتف الذكية) بشكل أساسي على الوحدات الأساسية التالية:
نظام الحساب والتفويض وهو يدعم ترخيص الحساب والجهاز.
عادةً ما تكون تطبيقات الهواتف الذكية مجهزة بوظائف التحكم. يمكن للمستخدمين الاتصال بسهولة بأجهزة إنترنت الأشياء وإدارتها في أي وقت وفي أي مكان من خلال تطبيقات الهواتف الذكية. في المنزل الذكي في العالم الحقيقي، يتم التحكم في الأجهزة في الغالب من خلال تطبيقات الهواتف الذكية، والتي لا تتيح الإدارة الذكية للأجهزة فحسب، بل توفر أيضًا تكلفة القوى العاملة. لذلك، يعد التحكم في الجهاز أمرًا ضروريًا لتطبيقات العميل، مثل التحكم في سمات وظيفة الجهاز، والتحكم في المشهد، والجدولة، والتحكم عن بعد، وربط الجهاز، وما إلى ذلك. يمكن لمستخدمي المنزل الذكي أيضًا تخصيص المشاهد وفقًا للاحتياجات الشخصية، والتحكم في الإضاءة، والأجهزة المنزلية، والمدخل وما إلى ذلك، لجعل الحياة المنزلية أكثر راحة وملاءمة. يمكنهم ضبط وقت تكييف الهواء، أو إيقاف تشغيله عن بعد، أو ضبط ضوء المدخل تلقائيًا بمجرد فتح الباب، أو التبديل إلى وضع "المسرح" بزر واحد.
تقوم تطبيقات Notification Client بتحديث الحالة في الوقت الفعلي لأجهزة إنترنت الأشياء، وترسل تنبيهات عندما تصبح الأجهزة غير طبيعية.
10 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

خدمة عملاء ما بعد البيع يمكن لتطبيقات الهواتف الذكية توفير خدمات ما بعد البيع للمنتجات، لحل المشكلات المتعلقة بأعطال أجهزة إنترنت الأشياء والعمليات الفنية في الوقت المناسب.
وظائف مميزة لتلبية احتياجات المستخدمين المختلفين، يمكن إضافة وظائف أخرى، مثل Shake وNFC وGPS وما إلى ذلك. يمكن أن يساعد نظام GPS في ضبط دقة عمليات المشهد وفقًا للموقع والمسافة، بينما تتيح وظيفة Shake للمستخدمين ضبط الأوامر التي سيتم تنفيذها لجهاز أو مشهد معين عن طريق الاهتزاز.
2.1.3 مقدمة إلى الأنظمة الأساسية السحابية المشتركة لإنترنت الأشياء
النظام الأساسي السحابي لإنترنت الأشياء هو نظام أساسي شامل يدمج وظائف مثل إدارة الأجهزة واتصالات أمان البيانات وإدارة الإشعارات. وفقًا للمجموعة المستهدفة وإمكانية الوصول، يمكن تقسيم المنصات السحابية لإنترنت الأشياء إلى منصات سحابية عامة لإنترنت الأشياء (يشار إليها فيما يلي باسم "السحابة العامة") ومنصات سحابية خاصة لإنترنت الأشياء (يشار إليها فيما يلي باسم "السحابة الخاصة").
تشير السحابة العامة عادةً إلى المنصات السحابية المشتركة لإنترنت الأشياء للمؤسسات أو الأفراد، والتي يتم تشغيلها وصيانتها بواسطة موفري المنصات، ويتم مشاركتها عبر الإنترنت. يمكن أن تكون مجانية أو منخفضة التكلفة، وتوفر الخدمات عبر الشبكة العامة المفتوحة، مثل Alibaba Cloud، وTencent Cloud، وBaidu Cloud، وAWS IoT، وGoogle IoT، وما إلى ذلك. وباعتبارها منصة داعمة، يمكن للسحابة العامة دمج موفري الخدمات الأولية و المستخدمين النهائيين لإنشاء سلسلة قيمة ونظام بيئي جديد.
تم تصميم السحابة الخاصة لاستخدام المؤسسات فقط، مما يضمن أفضل تحكم في البيانات والأمن وجودة الخدمة. تتم صيانة خدماتها وبنيتها التحتية بشكل منفصل من قبل الشركات، كما يتم تخصيص الأجهزة والبرامج الداعمة لمستخدمين محددين. يمكن للمؤسسات تخصيص الخدمات السحابية لتلبية احتياجات أعمالهم. في الوقت الحاضر، حصلت بعض الشركات المصنعة للمنزل الذكي بالفعل على منصات سحابية خاصة لإنترنت الأشياء وقامت بتطوير تطبيقات المنزل الذكي بناءً عليها.
السحابة العامة والسحابة الخاصة لها مميزاتها الخاصةtages، والتي سيتم شرحها لاحقا.
لتحقيق اتصال الاتصالات، من الضروري إكمال التطوير المضمن على الأقل على جانب الجهاز، جنبًا إلى جنب مع خوادم الأعمال والأنظمة الأساسية السحابية لإنترنت الأشياء وتطبيقات الهواتف الذكية. في مواجهة مثل هذا المشروع الضخم، توفر السحابة العامة عادةً مجموعات تطوير البرامج لتطبيقات الأجهزة والهواتف الذكية لتسريع العملية. توفر كل من السحابة العامة والخاصة خدمات بما في ذلك الوصول إلى الجهاز وإدارة الجهاز وظل الجهاز والتشغيل والصيانة.
لا تحتاج الأنظمة الأساسية السحابية لإنترنت الأشياء للوصول إلى الأجهزة إلى توفير واجهات للوصول إلى الأجهزة باستخدام البروتوكولات فحسب
الفصل 2. مقدمة وممارسة مشاريع إنترنت الأشياء 11

مثل MQTT وCoAP وHTTPS و Webالمقبس، ولكن أيضًا وظيفة مصادقة أمان الجهاز لحظر الأجهزة المزيفة وغير القانونية، مما يقلل بشكل فعال من خطر التعرض للخطر. عادةً ما تدعم هذه المصادقة آليات مختلفة، لذلك عندما يتم إنتاج الأجهزة بكميات كبيرة، فمن الضروري تعيين شهادة الجهاز مسبقًا وفقًا لآلية المصادقة المحددة ونسخها في الأجهزة.
إدارة الأجهزة لا يمكن لوظيفة إدارة الأجهزة التي توفرها المنصات السحابية لإنترنت الأشياء أن تساعد الشركات المصنعة على مراقبة حالة التنشيط وحالة الاتصال بأجهزتهم في الوقت الفعلي فحسب، بل تتيح أيضًا خيارات مثل إضافة / إزالة الأجهزة، واسترجاع المجموعات، وإضافتها / حذفها، وترقية البرامج الثابتة ، وإدارة الإصدار.
يمكن للمنصات السحابية لـ Device Shadow IoT إنشاء إصدار افتراضي مستمر (ظل الجهاز) لكل جهاز، ويمكن مزامنة حالة ظل الجهاز والحصول عليها بواسطة تطبيق الهاتف الذكي أو الأجهزة الأخرى من خلال بروتوكولات النقل عبر الإنترنت. يقوم Device Shadow بتخزين أحدث حالة تم الإبلاغ عنها والحالة المتوقعة لكل جهاز، وحتى إذا كان الجهاز غير متصل بالإنترنت، فلا يزال بإمكانه الحصول على الحالة عن طريق استدعاء واجهات برمجة التطبيقات. يوفر Device Shadow واجهات برمجة تطبيقات تعمل دائمًا، مما يسهل إنشاء تطبيقات الهواتف الذكية التي تتفاعل مع الأجهزة.
التشغيل والصيانة تتضمن وظيفة التشغيل والصيانة ثلاثة جوانب: · عرض المعلومات الإحصائية حول أجهزة إنترنت الأشياء والإشعارات. · تسمح إدارة السجل باسترجاع المعلومات حول سلوك الجهاز، وتدفق الرسائل لأعلى ولأسفل، ومحتوى الرسالة. · يدعم تصحيح أخطاء الجهاز تسليم الأوامر وتحديث التكوين والتحقق من التفاعل بين الأنظمة الأساسية السحابية لإنترنت الأشياء ورسائل الجهاز.
2.2 الممارسة: مشروع الضوء الذكي
بعد المقدمة النظرية في كل فصل، ستجد قسمًا تدريبيًا متعلقًا بمشروع Smart Light لمساعدتك في الحصول على خبرة عملية. يعتمد المشروع على شريحة ESP32-C3 من Espressif ومنصة ESP RainMaker IoT Cloud Platform، ويغطي أجهزة الوحدة اللاسلكية في منتجات الإضاءة الذكية والبرامج المدمجة للأجهزة الذكية القائمة على ESP32C3 وتطبيقات الهواتف الذكية وتفاعل ESP RainMaker.
كود المصدر: من أجل تعلم أفضل وتطوير الخبرة، تم جعل المشروع في هذا الكتاب مفتوح المصدر. يمكنك تنزيل الكود المصدري من مستودع GitHub الخاص بنا على https://github. com/espressif/book-esp32c3-iot-projects.
12 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

2.2.1 هيكل المشروع
يتكون مشروع Smart Light من ثلاثة أجزاء: i. أجهزة الإضاءة الذكية المعتمدة على ESP32-C3، المسؤولة عن التفاعل مع منصات إنترنت الأشياء السحابية، والتحكم في التبديل والسطوع ودرجة حرارة اللون لمصابيح LEDamp خرز. ثانيا. تطبيقات الهواتف الذكية (بما في ذلك تطبيقات الأجهزة اللوحية التي تعمل بنظامي التشغيل Android وiOS)، المسؤولة عن تكوين الشبكة لمنتجات الإضاءة الذكية، بالإضافة إلى الاستعلام عن حالتها والتحكم فيها.
ثالثا. منصة سحابية لإنترنت الأشياء تعتمد على ESP RainMaker. للتبسيط، سننظر في النظام الأساسي السحابي لإنترنت الأشياء وخادم الأعمال ككل في هذا الكتاب. سيتم توفير التفاصيل حول ESP RainMaker في الفصل الثالث.
يظهر الشكل 2.1 المراسلات بين هيكل مشروع Smart Light وبنية إنترنت الأشياء.
الشكل 2.1. هيكل مشروع الضوء الذكي
2.2.2 وظائف المشروع
مقسمة حسب الهيكل، ووظائف كل جزء هي كما يلي. أجهزة الإضاءة الذكية
· تكوين الشبكة والاتصال. · التحكم PWM LED، مثل التبديل، والسطوع، ودرجة حرارة اللون، وما إلى ذلك. · التحكم الآلي أو المشهد، على سبيل المثال، مفتاح الوقت. · التشفير والتمهيد الآمن للفلاش. · ترقية البرامج الثابتة وإدارة الإصدار.
الفصل 2. مقدمة وممارسة مشاريع إنترنت الأشياء 13

تطبيقات الهواتف الذكية · تكوين الشبكة وربط الجهاز. · التحكم الذكي في منتجات الإضاءة، مثل التبديل والسطوع ودرجة حرارة اللون وما إلى ذلك. · إعدادات الأتمتة أو المشهد، على سبيل المثال، مفتاح الوقت. · التحكم المحلي/عن بعد. · تسجيل المستخدم، تسجيل الدخول، الخ.
النظام الأساسي السحابي ESP RainMaker IoT · تمكين الوصول إلى أجهزة إنترنت الأشياء. · توفير واجهات برمجة التطبيقات (APIs) لتشغيل الجهاز والتي يمكن الوصول إليها من خلال تطبيقات الهواتف الذكية. · ترقية البرامج الثابتة وإدارة الإصدار.
2.2.3 تجهيز الأجهزة
إذا كنت مهتمًا بوضع المشروع موضع التنفيذ، فستحتاج أيضًا إلى الأجهزة التالية: الأضواء الذكية، والهواتف الذكية، وأجهزة توجيه Wi-Fi، وجهاز كمبيوتر يلبي متطلبات التثبيت لبيئة التطوير. أضواء ذكية
المصابيح الذكية هي نوع جديد من المصابيح، شكلها هو نفس اللمبة المتوهجة العامة. يتكون الضوء الذكي من مصدر طاقة منظم ومكثف، ووحدة لاسلكية (مع ESP32-C3 مدمج)، ووحدة تحكم LED ومصفوفة RGB LED. عند توصيله بالطاقة، يكون حجم التيار المستمر 15 فولتtagيوفر الإخراج بعد تنحي المكثف وتصحيح الصمام الثنائي والتنظيم الطاقة لوحدة التحكم LED ومصفوفة LED. يمكن لوحدة التحكم LED إرسال المستويات العالية والمنخفضة تلقائيًا على فترات زمنية معينة، وتبديل مصفوفة RGB LED بين مغلقة (إضاءة مضاءة) ومفتوحة (إضاءة مطفأة)، بحيث يمكن أن تنبعث منها سماوي، أصفر، أخضر، أرجواني، أزرق، أحمر، و الضوء الابيض. الوحدة اللاسلكية مسؤولة عن الاتصال بجهاز توجيه Wi-Fi واستقبال حالة الأضواء الذكية والإبلاغ عنها وإرسال الأوامر للتحكم في مؤشر LED.
الشكل 2.2. محاكاة الضوء الذكي
في التطوير المبكر قtage، يمكنك محاكاة ضوء ذكي باستخدام لوحة ESP32-C3DevKitM-1 المتصلة بـ RGB LED lamp الخرز (انظر الشكل 2.2). لكن يجب عليك
14 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

لاحظ أن هذه ليست الطريقة الوحيدة لتجميع الضوء الذكي. يحتوي تصميم الأجهزة للمشروع في هذا الكتاب فقط على وحدة لاسلكية (مع ESP32-C3 مدمج)، ولكنه لا يحتوي على تصميم كامل لأجهزة الإضاءة الذكية. بالإضافة إلى ذلك، تنتج Espressif أيضًا لوحة تطوير الصوت المستندة إلى ESP32-C3 ESP32C3-Lyra للتحكم في الأضواء بالصوت. تحتوي اللوحة على واجهات للميكروفونات ومكبرات الصوت ويمكنها التحكم في شرائط LED. يمكن استخدامه لتطوير أجهزة بث صوتية منخفضة التكلفة وعالية الأداء وشرائط ضوئية إيقاعية. يوضح الشكل 2.3 لوحة ESP32-C3Lyra مرتبطة بشريط مكون من 40 مصباح LED.
الشكل 2.3. ESP32-C3-Lyra مرتبط بشريط مكون من 40 مصباح LED
الهواتف الذكية (Android/iOS) يتضمن مشروع Smart Light تطوير تطبيق للهواتف الذكية لإعداد منتجات الإضاءة الذكية والتحكم فيها.
تقوم أجهزة توجيه Wi-Fi بتحويل إشارات الشبكة السلكية وإشارات شبكة الهاتف المحمول إلى إشارات شبكة لاسلكية لأجهزة الكمبيوتر والهواتف الذكية والأجهزة اللوحية والأجهزة اللاسلكية الأخرى للاتصال بالشبكة. على سبيل المثالample، يحتاج النطاق العريض في المنزل فقط إلى الاتصال بجهاز توجيه Wi-Fi لتحقيق الشبكات اللاسلكية لأجهزة Wi-Fi. معيار البروتوكول السائد الذي تدعمه أجهزة توجيه Wi-Fi هو IEEE 802.11n، بمتوسط ​​TxRate يبلغ 300 ميجابت في الثانية، أو 600 ميجابت في الثانية كحد أقصى. وهي متوافقة مع الإصدارات السابقة مع 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.2.4 عملية التطوير
الشكل 2.4. خطوات تطوير مشروع سمارت لايت
تصميم الأجهزة يعد تصميم الأجهزة لأجهزة إنترنت الأشياء أمرًا ضروريًا لمشروع إنترنت الأشياء. يهدف مشروع الإضاءة الذكية الكامل إلى إنتاج آلamp العمل تحت إمدادات التيار الكهربائي. تنتج الشركات المصنعة المختلفة لampتتميز بأنماط وأنواع برامج تشغيل مختلفة، لكن وحداتها اللاسلكية عادةً ما تكون لها نفس الوظيفة. لتبسيط عملية تطوير مشروع Smart Ligh، يغطي هذا الكتاب فقط تصميم الأجهزة وتطوير البرامج الخاصة بالوحدات اللاسلكية.
تكوين النظام الأساسي السحابي لـ IoT لاستخدام الأنظمة الأساسية السحابية لـ IoT، تحتاج إلى تكوين المشاريع على الواجهة الخلفية، مثل إنشاء المنتجات وإنشاء الأجهزة وتعيين خصائص الجهاز وما إلى ذلك.
تطوير البرامج المضمنة لأجهزة إنترنت الأشياء تنفيذ الوظائف المتوقعة باستخدام ESP-IDF، وSDK من جانب الجهاز Espressif، بما في ذلك الاتصال بمنصات إنترنت الأشياء السحابية، وتطوير برامج تشغيل LED، وترقية البرامج الثابتة.
تطوير تطبيقات الهواتف الذكية قم بتطوير تطبيقات الهواتف الذكية لأنظمة Android وiOS لتحقيق تسجيل المستخدم وتسجيل الدخول والتحكم في الجهاز والوظائف الأخرى.
تحسين جهاز إنترنت الأشياء بمجرد اكتمال التطوير الأساسي لوظائف جهاز إنترنت الأشياء، يمكنك اللجوء إلى مهام التحسين، مثل تحسين الطاقة.
اختبار الإنتاج الضخم إجراء اختبارات الإنتاج الضخم وفقًا للمعايير ذات الصلة، مثل اختبار وظيفة المعدات، واختبار التقادم، واختبار الترددات اللاسلكية، وما إلى ذلك.
على الرغم من الخطوات المذكورة أعلاه، لا يخضع مشروع Smart Light بالضرورة لمثل هذا الإجراء حيث يمكن أيضًا تنفيذ مهام مختلفة في نفس الوقت. على سبيل المثالampويمكن تطوير البرامج المدمجة وتطبيقات الهواتف الذكية بالتوازي. قد يلزم أيضًا تكرار بعض الخطوات، مثل تحسين جهاز إنترنت الأشياء واختبار الإنتاج الضخم.
16 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

2.3 الملخص
في هذا الفصل، شرحنا أولاً المكونات الأساسية والوحدات الوظيفية لمشروع إنترنت الأشياء، ثم قدمنا ​​حالة Smart Light للممارسة، مع الإشارة إلى هيكلها ووظائفها وإعداد الأجهزة وعملية التطوير. يمكن للقراء استخلاص استنتاجات من الممارسة ويصبحوا واثقين من تنفيذ مشاريع إنترنت الأشياء مع الحد الأدنى من الأخطاء في المستقبل.
الفصل 2. مقدمة وممارسة مشاريع إنترنت الأشياء 17

18 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

الفصل الأول

مقدمة

ل

اللغة الإنجليزية:ESP

صانع المطر

يوفر إنترنت الأشياء (IoT) إمكانيات لا حصر لها لتغيير الطريقة التي يعيش بها الناس، إلا أن تطوير هندسة إنترنت الأشياء مليء بالتحديات. باستخدام السحابات العامة، يمكن لمصنعي المحطات الطرفية تنفيذ وظائف المنتج من خلال الحلول التالية:
استنادًا إلى الأنظمة الأساسية السحابية لموفري الحلول، بهذه الطريقة، يحتاج مصنعو الأجهزة الطرفية فقط إلى تصميم أجهزة المنتج، ثم توصيل الأجهزة بالسحابة باستخدام وحدة الاتصال المتوفرة، وتكوين وظائف المنتج باتباع الإرشادات. يعد هذا أسلوبًا فعالاً لأنه يلغي الحاجة إلى التطوير والعمليات والصيانة (O&M) من جانب الخادم ومن جانب التطبيق. فهو يسمح لمصنعي المحطات الطرفية بالتركيز على تصميم الأجهزة دون الحاجة إلى التفكير في التنفيذ السحابي. ومع ذلك، فإن مثل هذه الحلول (على سبيل المثال، البرامج الثابتة للجهاز والتطبيقات) ليست مفتوحة المصدر بشكل عام، وبالتالي فإن وظائف المنتج ستكون محدودة بواسطة النظام الأساسي السحابي الخاص بالموفر والذي لا يمكن تخصيصه. وفي الوقت نفسه، تنتمي بيانات المستخدم والجهاز أيضًا إلى النظام الأساسي السحابي.
استنادًا إلى المنتجات السحابية في هذا الحل، بعد الانتهاء من تصميم الأجهزة، لا تحتاج الشركات المصنعة للمحطات الطرفية إلى تنفيذ وظائف السحابة باستخدام واحد أو أكثر من المنتجات السحابية التي توفرها السحابة العامة فحسب، بل تحتاج أيضًا إلى ربط الأجهزة بالسحابة. على سبيل المثالample، للاتصال بأمازون Web الخدمات (AWS)، تحتاج الشركات المصنعة للمحطات الطرفية إلى استخدام منتجات AWS مثل Amazon API Gateway وAWS IoT Core وAWS Lambda لتمكين الوصول إلى الجهاز والتحكم عن بعد وتخزين البيانات وإدارة المستخدم والوظائف الأساسية الأخرى. فهو لا يطلب من الشركات المصنعة للمحطات الطرفية استخدام المنتجات السحابية وتكوينها بمرونة مع فهم متعمق وخبرة غنية فحسب، بل يتطلب منهم أيضًا مراعاة تكلفة الإنشاء والصيانة للمشاريع الأولية واللاحقة.tagوهذا يشكل تحديات كبيرة لطاقة الشركة ومواردها.
بالمقارنة مع السحابة العامة، عادة ما يتم تصميم السحابة الخاصة لمشاريع ومنتجات محددة. يتم منح مطوري السحابة الخاصة أعلى مستوى من الحرية في تصميم البروتوكول وتنفيذ منطق الأعمال. يمكن لمصنعي المحطات الطرفية صنع المنتجات ومخططات التصميم حسب الرغبة، ودمج بيانات المستخدم وتمكينها بسهولة. الجمع بين الأمان العالي وقابلية التوسع والموثوقية للسحابة العامة مع الميزات المتقدمةtagمن السحابة الخاصة، أطلقت Espressif ESP
19

RainMaker، هو حل سحابي خاص متكامل يعتمد على سحابة أمازون. يمكن للمستخدمين نشر ESP RainMaker وإنشاء سحابة خاصة ببساطة باستخدام حساب AWS.
3.1 ما هو ESP RainMaker؟
ESP RainMaker عبارة عن منصة AIoT كاملة تم إنشاؤها باستخدام العديد من منتجات AWS الناضجة. فهو يوفر العديد من الخدمات المطلوبة للإنتاج الضخم مثل الوصول إلى السحابة الخاصة بالجهاز، وترقية الجهاز، وإدارة الواجهة الخلفية، وتسجيل دخول الطرف الثالث، والتكامل الصوتي، وإدارة المستخدم. باستخدام مستودع التطبيقات بدون خادم (SAR) الذي توفره AWS، يمكن لمصنعي المحطات الطرفية نشر ESP RainMaker بسرعة على حسابات AWS الخاصة بهم، وهو أمر فعال من حيث الوقت وسهل التشغيل. يساعد معدل SAR الذي تستخدمه ESP RainMaker، والذي تديره وتحافظ عليه Espressif، المطورين على تقليل تكاليف الصيانة السحابية وتسريع تطوير منتجات الذكاء الاصطناعي للأشياء، وبالتالي بناء حلول الذكاء الاصطناعي للأشياء آمنة ومستقرة وقابلة للتخصيص. يوضح الشكل 3.1 بنية ESP RainMaker.
الشكل 3.1. بنية ESP RainMaker
خادم ESP RainMaker العام من Espressif مجاني لجميع عشاق وصانعي ومعلمي ESP لتقييم الحلول. يمكن للمطورين تسجيل الدخول باستخدام حسابات Apple أو Google أو GitHub، وإنشاء نماذج أولية لتطبيقات إنترنت الأشياء الخاصة بهم بسرعة. يدمج الخادم العام Alexa وGoogle Home، ويوفر خدمات التحكم الصوتي التي تدعمها Alexa Skill وGoogle Actions. يتم تشغيل وظيفة التعرف الدلالي الخاصة بها أيضًا بواسطة أطراف ثالثة. تستجيب أجهزة RainMaker IoT فقط لإجراءات محددة. للحصول على قائمة شاملة بالأوامر الصوتية المدعومة، يرجى التحقق من منصات الطرف الثالث. بالإضافة إلى ذلك، تقدم Espressif تطبيق RainMaker العام للمستخدمين للتحكم في المنتجات من خلال الهواتف الذكية. 20 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

3.2 تنفيذ ESP RainMaker
كما هو موضح في الشكل 3.2، يتكون ESP RainMaker من أربعة أجزاء: · المطالبة بالخدمة، مما يتيح لأجهزة RainMaker الحصول على الشهادات ديناميكيًا. · RainMaker Cloud (المعروفة أيضًا باسم الواجهة الخلفية السحابية)، التي تقدم خدمات مثل تصفية الرسائل وإدارة المستخدم وتخزين البيانات وتكاملات الجهات الخارجية. · وكيل RainMaker، مما يتيح لأجهزة RainMaker الاتصال بسحابة RainMaker. · عميل RainMaker (تطبيق RainMaker أو البرامج النصية لواجهة سطر الأوامر)، لتوفير الخدمة وإنشاء المستخدم وربط الجهاز والتحكم فيه، وما إلى ذلك.
الشكل 3.2. هيكل ESP RainMaker
يوفر ESP RainMaker مجموعة كاملة من الأدوات لتطوير المنتجات والإنتاج الضخم، بما في ذلك: RainMaker SDK
يعتمد RainMaker SDK على ESP-IDF ويوفر الكود المصدري للوكيل من جانب الجهاز وواجهات برمجة تطبيقات C ذات الصلة لتطوير البرامج الثابتة. يحتاج المطورون فقط إلى كتابة منطق التطبيق وترك الباقي لإطار عمل RainMaker. لمزيد من المعلومات حول واجهات برمجة تطبيقات C، يرجى زيارة https://bookc3.espressif.com/rm/c-api-reference. تطبيق RainMaker يتيح الإصدار العام من تطبيق RainMaker للمطورين إكمال عملية توفير الأجهزة والتحكم في حالة الأجهزة والاستعلام عنها (على سبيل المثال، منتجات الإضاءة الذكية). وهو متوفر على متاجر تطبيقات iOS وAndroid. لمزيد من التفاصيل، يرجى الرجوع إلى الفصل 10. واجهات برمجة تطبيقات REST تساعد واجهات برمجة تطبيقات REST المستخدمين على إنشاء تطبيقاتهم الخاصة المشابهة لتطبيق RainMaker. لمزيد من المعلومات، يرجى زيارة https://swaggerapis.rainmaker.espressif.com/.
الفصل 3. مقدمة إلى ESP RainMaker 21

Python APIs يتم توفير واجهة سطر الأوامر المستندة إلى Python، والتي تأتي مع RainMaker SDK، لتنفيذ جميع الوظائف المشابهة لميزات الهاتف الذكي. لمزيد من المعلومات حول واجهات برمجة تطبيقات Python، يرجى زيارة https://bookc3.espressif.com/rm/python-api-reference.
يتم توفير Admin CLI Admin CLI، بمستوى أعلى من الوصول، للنشر الخاص لـ ESP RainMaker لإنشاء شهادات الجهاز بشكل مجمّع.
3.2.1 المطالبة بالخدمة
يتم تنفيذ جميع الاتصالات بين أجهزة RainMaker والواجهة الخلفية السحابية من خلال MQTT+TLS. في سياق ESP RainMaker، "المطالبة" هي العملية التي تحصل فيها الأجهزة على شهادات من خدمة المطالبة للاتصال بالواجهة الخلفية للسحابة. لاحظ أن المطالبة بالخدمة تنطبق فقط على خدمة RainMaker العامة، بينما بالنسبة للنشر الخاص، يجب إنشاء شهادات الجهاز بشكل مجمّع من خلال Admin CLI. يدعم ESP RainMaker ثلاثة أنواع من خدمة المطالبة: المطالبة الذاتية
يقوم الجهاز نفسه بجلب الشهادات من خلال مفتاح سري مبرمج مسبقًا في eFuse بعد الاتصال بالإنترنت. المطالبة المدفوعة بالمضيف يتم الحصول على الشهادات من مضيف التطوير باستخدام حساب RainMaker. المساعدة في المطالبة يتم الحصول على الشهادات عبر تطبيقات الهواتف الذكية أثناء التزويد.
3.2.2 وكيل RainMaker
الشكل 3.3. هيكل RainMaker SDK تتمثل الوظيفة الأساسية لـ RainMaker Agent في توفير الاتصال ومساعدة طبقة التطبيق على معالجة البيانات السحابية للوصلة الصاعدة/الوصلة الهابطة. تم تصميمه من خلال RainMaker SDK 22 ESP32-C3 Wireless Adventure: دليل شامل لإنترنت الأشياء

وتم تطويره بناءً على إطار عمل ESP-IDF المثبت، باستخدام مكونات ESP-IDF مثل RTOS وNVS وMQTT. يوضح الشكل 3.3 بنية RainMaker SDK.
يتضمن RainMaker SDK ميزتين رئيسيتين.
اتصال
أنا. التعاون مع خدمة المطالبة للحصول على شهادات الجهاز.
ثانيا. الاتصال بالواجهة الخلفية السحابية باستخدام بروتوكول MQTT الآمن لتوفير الاتصال عن بعد وتنفيذ التحكم عن بعد، وإعداد تقارير الرسائل، وإدارة المستخدم، وإدارة الأجهزة، وما إلى ذلك. ويستخدم مكون MQTT في ESP-IDF بشكل افتراضي ويوفر طبقة تجريد للتفاعل مع الآخرين مكدسات البروتوكول.
ثالثا. توفير مكون توفير wifi للاتصال بشبكة Wi-Fi وتوفيرها، ومكون esp https ota لترقيات OTA، ومكون esp المحلي ctrl لاكتشاف الجهاز المحلي والاتصال به. كل هذه الأهداف يمكن تحقيقها من خلال تكوين بسيط.
معالجة البيانات
أنا. تخزين شهادات الجهاز الصادرة عن Claiming Service والبيانات المطلوبة عند تشغيل RainMaker، افتراضيًا باستخدام الواجهة التي يوفرها مكون nvs flash، وتوفير واجهات برمجة التطبيقات للمطورين للاستخدام المباشر.
ثانيا. استخدام آلية رد الاتصال لمعالجة البيانات السحابية للوصلة الصاعدة/الوصلة الهابطة وإلغاء حظر البيانات تلقائيًا على طبقة التطبيق لتسهيل معالجتها بواسطة المطورين. على سبيل المثالample، توفر RainMaker SDK واجهات غنية لإنشاء بيانات TSL (لغة مواصفات الأشياء)، المطلوبة لتحديد نماذج TSL لوصف أجهزة إنترنت الأشياء وتنفيذ وظائف مثل التوقيت والعد التنازلي والتحكم الصوتي. بالنسبة للميزات التفاعلية الأساسية مثل التوقيت، توفر RainMaker SDK حلاً خاليًا من التطوير ويمكن تمكينه ببساطة عند الحاجة. بعد ذلك، سيقوم عامل RainMaker بمعالجة البيانات مباشرة، وإرسالها إلى السحابة من خلال موضوع MQTT المرتبط، وتغذية تغييرات البيانات في الواجهة الخلفية للسحابة من خلال آلية رد الاتصال.
3.2.3 الواجهة الخلفية السحابية
تم بناء الواجهة الخلفية السحابية على AWS Serverless Computing ويتم تحقيقها من خلال AWS Cognito (نظام إدارة الهوية)، وAmazon API Gateway، وAWS Lambda (خدمة حوسبة بدون خادم)، وAmazon DynamoDB (قاعدة بيانات NoSQL)، وAWS IoT Core (نواة وصول IoT التي توفر الوصول إلى MQTT وتصفية القواعد)، وAmazon Simple Email Service (خدمة البريد البسيطة SES)، وAmazon CloudFront (شبكة التوصيل السريع)، وAmazon Simple Queue Service (قائمة انتظار الرسائل SQS)، وAmazon S3 (خدمة تخزين البيانات). ويهدف إلى تحسين قابلية التوسع والأمن. باستخدام ESP RainMaker، يمكن للمطورين إدارة الأجهزة دون الحاجة إلى كتابة التعليمات البرمجية في السحابة. يتم نقل الرسائل التي يتم الإبلاغ عنها بواسطة الأجهزة بشفافية إلى
الفصل 3. مقدمة إلى ESP RainMaker 23

عملاء التطبيق أو خدمات الطرف الثالث الأخرى. يوضح الجدول 3.1 منتجات ووظائف سحابة AWS المستخدمة في الواجهة الخلفية للسحابة، مع المزيد من المنتجات والميزات قيد التطوير.
الجدول 3.1. منتجات ووظائف AWS السحابية التي تستخدمها الواجهة الخلفية للسحابة

منتج AWS السحابي المستخدم بواسطة RainMaker

وظيفة

AWS Cognito

إدارة بيانات اعتماد المستخدم ودعم تسجيلات دخول الطرف الثالث

AWS لامدا

تنفيذ منطق العمل الأساسي للواجهة الخلفية السحابية

Amazon Timestream تخزين بيانات السلاسل الزمنية

Amazon DynamoDB تخزين المعلومات الخاصة للعملاء

AWS IoT Core

دعم الاتصالات MQTT

أمازون SES

توفير خدمات إرسال البريد الإلكتروني

Amazon CloudFront تسريع إدارة الواجهة الخلفية webالموقع ناجح

أمازون SQS

إعادة توجيه الرسائل من AWS IoT Core

3.2.4 عميل RainMaker
يتواصل عملاء RainMaker، مثل App وCLI، مع الواجهة الخلفية للسحابة من خلال REST APIs. يمكن العثور على معلومات وتعليمات تفصيلية حول واجهات برمجة تطبيقات REST في وثائق Swagger المقدمة من Espressif. يتوفر عميل تطبيقات الهاتف المحمول الخاص بـ RainMaker لكل من أنظمة iOS وAndroid. فهو يسمح بتوفير الجهاز والتحكم فيه ومشاركته، بالإضافة إلى إنشاء مهام العد التنازلي وتمكينها والاتصال بمنصات الطرف الثالث. يمكنه تحميل واجهة المستخدم والأيقونات تلقائيًا وفقًا للتكوين الذي أبلغت عنه الأجهزة وعرض TSL للجهاز بالكامل.
على سبيل المثالample، إذا تم إنشاء ضوء ذكي على مجموعة RainMaker SDK المقدمة على سبيل المثالamples، سيتم تحميل الأيقونة وواجهة المستخدم الخاصة بالمصباح تلقائيًا عند اكتمال عملية التزويد. يمكن للمستخدمين تغيير لون الضوء وسطوعه من خلال الواجهة وتحقيق تحكم طرف ثالث من خلال ربط Alexa Smart Home Skill أو Google Smart Home Actions بحسابات ESP RainMaker الخاصة بهم. يوضح الشكل 3.4 الرمز وواجهة المستخدم السابقةampيتم تشغيل المصباح على التوالي على تطبيق Alexa وGoogle Home وESP RainMaker.

24 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

(أ) السابقينampلو - اليكسا

(ب) السابقينampلو - صفحة جوجل الرئيسية

(ج) السابقينampلو – ESP RainMaker
الشكل 3.4. مثالampرموز وواجهة مستخدم للمصباح الكهربائي على تطبيق Alexa وGoogle Home وESP RainMaker
3.3 الممارسة: النقاط الأساسية للتطوير باستخدام ESP RainMaker
بمجرد اكتمال طبقة برنامج تشغيل الجهاز، قد يبدأ المطورون في إنشاء نماذج TSL ومعالجة بيانات الوصلة الهابطة باستخدام واجهات برمجة التطبيقات التي توفرها RainMaker SDK، وتمكين خدمات ESP RainMaker الأساسية بناءً على تعريف المنتج ومتطلباته.
الفصل 3. مقدمة إلى ESP RainMaker 25

سيشرح القسم 9.4 من هذا الكتاب كيفية تنفيذ ضوء LED الذكي في RainMaker. أثناء تصحيح الأخطاء، يمكن للمطورين استخدام أدوات CLI في RainMaker SDK للتواصل مع الضوء الذكي (أو استدعاء REST APIs من Swagger).
سيتناول الفصل العاشر بالتفصيل استخدام REST APIs في تطوير تطبيقات الهواتف الذكية. سيتم تغطية ترقيات OTA لأضواء LED الذكية في الفصل 10. إذا قام المطورون بتمكين مراقبة ESP Insights عن بعد، فستعرض الواجهة الخلفية لإدارة ESP RainMaker بيانات ESP Insights. سيتم عرض التفاصيل في الفصل 11.
يدعم ESP RainMaker النشر الخاص، والذي يختلف عن خادم RainMaker العام بالطرق التالية:
خدمة المطالبة لإنشاء شهادات في عمليات النشر الخاصة، يلزم استخدام RainMaker Admin CLI بدلاً من المطالبة. مع الخادم العام، يجب منح المطورين حقوق المسؤول لتنفيذ ترقية البرامج الثابتة، ولكن هذا غير مرغوب فيه في عمليات النشر التجارية. لذلك، لا يمكن توفير خدمة مصادقة منفصلة للمطالبة الذاتية، ولا حقوق المسؤول للمطالبة التي يحركها المضيف أو المدعومة.
تطبيقات الهاتف في عمليات النشر الخاصة، يجب تكوين التطبيقات وتجميعها بشكل منفصل لضمان عدم إمكانية التشغيل البيني لأنظمة الحساب.
تسجيلات دخول الطرف الثالث والتكامل الصوتي يجب على المطورين التهيئة بشكل منفصل عبر حسابات Google وApple Developer لتمكين تسجيلات دخول الطرف الثالث، بالإضافة إلى تكامل Alexa Skill وGoogle Voice Assistant.
نصائح للحصول على تفاصيل حول نشر السحابة، يرجى زيارة https://customer.rainmaker.espressif. com. فيما يتعلق بالبرامج الثابتة، لا يتطلب الترحيل من الخادم العام إلى الخادم الخاص سوى استبدال شهادات الجهاز، مما يؤدي إلى تحسين كفاءة الترحيل بشكل كبير وتقليل تكلفة الترحيل وتصحيح الأخطاء الثانوية.
3.4 ميزات ESP RainMaker
تستهدف ميزات ESP RainMaker بشكل أساسي ثلاثة جوانب – إدارة المستخدم والمستخدمين النهائيين والمسؤولين. جميع الميزات مدعومة في كل من الخوادم العامة والخاصة ما لم ينص على خلاف ذلك.
3.4.1 إدارة المستخدم
تتيح ميزات إدارة المستخدم للمستخدمين النهائيين التسجيل وتسجيل الدخول وتغيير كلمات المرور واسترداد كلمات المرور وما إلى ذلك.
26 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

التسجيل وتسجيل الدخول تتضمن طرق التسجيل وتسجيل الدخول التي يدعمها RainMaker ما يلي: · معرف البريد الإلكتروني + كلمة المرور · رقم الهاتف + كلمة المرور · حساب Google · حساب Apple · حساب GitHub (الخادم العام فقط) · حساب Amazon (الخادم الخاص فقط)
ملاحظة: يقوم التسجيل باستخدام Google/Amazon بمشاركة عنوان البريد الإلكتروني للمستخدم مع RainMaker. يقوم التسجيل باستخدام Apple بمشاركة عنوان وهمي تقوم Apple بتعيينه للمستخدم خصيصًا لخدمة RainMaker. سيتم إنشاء حساب RainMaker تلقائيًا للمستخدمين الذين يقومون بتسجيل الدخول باستخدام حساب Google أو Apple أو Amazon لأول مرة.
تغيير كلمة المرور صالح فقط لعمليات تسجيل الدخول المستندة إلى معرف البريد الإلكتروني/رقم الهاتف. سيتم تسجيل الخروج من جميع الجلسات النشطة الأخرى بعد تغيير كلمة المرور. وفقًا لسلوك AWS Cognito، يمكن أن تظل جلسات تسجيل الخروج نشطة لمدة تصل إلى ساعة واحدة.
استرداد كلمة المرور صالح فقط لعمليات تسجيل الدخول المستندة إلى معرف البريد الإلكتروني/رقم الهاتف.
3.4.2 ميزات المستخدم النهائي
تشمل الميزات المفتوحة للمستخدمين النهائيين التحكم والمراقبة المحلية وعن بعد، والجدولة، وتجميع الأجهزة، ومشاركة الأجهزة، ودفع الإشعارات، وتكاملات الجهات الخارجية.
التحكم عن بعد والمراقبة · تكوين الاستعلام وقيم المعلمات وحالة الاتصال لجهاز واحد أو لجميع الأجهزة. · تعيين المعلمات لأجهزة مفردة أو متعددة.
التحكم والمراقبة المحلية يجب توصيل الهاتف المحمول والجهاز بنفس الشبكة للتحكم المحلي.
الجدولة · يقوم المستخدمون بتحديد إجراءات معينة مسبقًا في وقت محدد. · لا يلزم الاتصال بالإنترنت للجهاز أثناء تنفيذ الجدول. · مرة واحدة أو متكررة (مع تحديد الأيام) لأجهزة فردية أو متعددة.
تجميع الأجهزة يدعم التجميع المجرد متعدد المستويات ويمكن استخدام البيانات التعريفية للمجموعة لإنشاء هيكل الغرفة المنزلية.
الفصل 3. مقدمة إلى ESP RainMaker 27

مشاركة الأجهزة يمكن مشاركة جهاز واحد أو أكثر مع مستخدم واحد أو أكثر.
إشعارات الدفع سيتلقى المستخدمون النهائيون إشعارات الدفع لأحداث مثل · تمت إضافة/إزالة جهاز (أجهزة) جديدة · جهاز متصل بالسحابة · تم قطع اتصال الجهاز بالسحابة · تم إنشاء/قبول/رفض طلبات مشاركة الجهاز · رسائل التنبيه التي أبلغت عنها الأجهزة
يتم دعم عمليات تكامل الجهات الخارجية Alexa وGoogle Voice Assistant للتحكم في أجهزة RainMaker، بما في ذلك الأضواء والمفاتيح والمقابس والمراوح وأجهزة استشعار درجة الحرارة.
3.4.3 ميزات المشرف
تسمح ميزات المسؤول للمسؤولين بتنفيذ تسجيل الجهاز، وتجميع الأجهزة، وترقيات OTA، و view الإحصائيات وبيانات ESP Insights.
تسجيل الجهاز أنشئ شهادات الجهاز وقم بالتسجيل في Admin CLI (الخادم الخاص فقط).
تجميع الأجهزة قم بإنشاء مجموعات مجردة أو منظمة بناءً على معلومات الجهاز (الخادم الخاص فقط).
ترقيات عبر الأثير (OTA) قم بتحميل البرامج الثابتة بناءً على الإصدار والطراز، إلى جهاز واحد أو أكثر أو مجموعة لمراقبة مهام OTA أو إلغائها أو أرشفتها.
View إحصائيات Viewتتضمن الإحصائيات القادرة ما يلي: · تسجيلات الجهاز (الشهادات المسجلة من قبل المسؤول) · تنشيط الجهاز (الجهاز متصل لأول مرة) · حسابات المستخدمين · اقتران جهاز المستخدم
View بيانات رؤى ESP Viewتتضمن بيانات ESP Insights القادرة ما يلي: · الأخطاء والتحذيرات والسجلات المخصصة · تقارير الأعطال والتحليلات · أسباب إعادة التشغيل · مقاييس مثل استخدام الذاكرة وRSSI وما إلى ذلك · المقاييس والمتغيرات المخصصة
28 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

3.5 الملخص
في هذا الفصل، قدمنا ​​بعض الاختلافات الرئيسية بين نشر RainMaker العام والنشر الخاص. يعتبر حل ESP RainMaker الخاص الذي أطلقته Espressif موثوقًا للغاية وقابل للتوسيع. تم توصيل جميع شرائح سلسلة ESP32 وتكييفها مع AWS، مما يقلل التكلفة بشكل كبير. يمكن للمطورين التركيز على التحقق من النموذج الأولي دون الحاجة إلى التعرف على منتجات AWS السحابية. لقد شرحنا أيضًا تنفيذ وميزات ESP RainMaker، وبعض النقاط الرئيسية للتطوير باستخدام النظام الأساسي.
قم بالمسح الضوئي لتنزيل ESP RainMaker لنظام Android، قم بالمسح الضوئي لتنزيل ESP RainMaker لنظام iOS
الفصل 3. مقدمة إلى ESP RainMaker 29

30 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

الفصل إعداد 4 بيئة التطوير
يركز هذا الفصل على ESP-IDF، إطار تطوير البرمجيات الرسمي لـ ESP32-C3. سنشرح كيفية إعداد البيئة على أنظمة التشغيل المختلفة، ونقدم هيكل المشروع ونظام بناء ESP-IDF، بالإضافة إلى استخدام أدوات التطوير ذات الصلة. ثم سنقدم عملية التجميع والتشغيل لأحد الأشخاص السابقينample project، مع تقديم شرح مفصل لسجل الإخراج في كل ثانيةtage.
4.1 ESP-IDF انتهىview
ESP-IDF (إطار تطوير Espressif IoT) هو إطار عمل شامل لتطوير إنترنت الأشياء توفره Espressif Technology. يستخدم C/C++ كلغة التطوير الرئيسية ويدعم التجميع المتقاطع ضمن أنظمة التشغيل السائدة مثل Linux وMac وWindows. السابقampتم تطوير البرامج المضمنة في هذا الكتاب باستخدام ESP-IDF، الذي يقدم الميزات التالية: · برامج تشغيل SoC على مستوى النظام. يتضمن ESP-IDF برامج تشغيل لـ ESP32، ESP32-S2، ESP32-C3،
ورقائق أخرى. تشتمل برامج التشغيل هذه على مكتبة محيطية منخفضة المستوى (LL)، ومكتبة طبقة تجريد الأجهزة (HAL)، ودعم RTOS وبرنامج تشغيل الطبقة العليا، وما إلى ذلك. · المكونات الأساسية. يتضمن ESP-IDF المكونات الأساسية اللازمة لتطوير إنترنت الأشياء. يتضمن ذلك مجموعات متعددة من بروتوكولات الشبكة مثل HTTP وMQTT، وإطار عمل لإدارة الطاقة مع تعديل التردد الديناميكي، وميزات مثل Flash Encryption وSecure Boot، وما إلى ذلك. · أدوات التطوير والإنتاج. يوفر ESP-IDF أدوات شائعة الاستخدام للبناء والفلاش وتصحيح الأخطاء أثناء التطوير والإنتاج الضخم (انظر الشكل 4.1)، مثل نظام البناء القائم على CMake، وسلسلة أدوات التجميع المتقاطعة المستندة إلى دول مجلس التعاون الخليجي، وJTAG أداة تصحيح تعتمد على OpenOCD، وما إلى ذلك. تجدر الإشارة إلى أن كود ESP-IDF يلتزم بشكل أساسي بترخيص Apache 2.0 مفتوح المصدر. يمكن للمستخدمين تطوير برامج شخصية أو تجارية دون قيود مع الالتزام بشروط الترخيص مفتوح المصدر. بالإضافة إلى ذلك، يتم منح المستخدمين تراخيص براءة اختراع دائمة مجانًا، دون الالتزام بفتح المصدر لأي تعديلات يتم إجراؤها على كود المصدر.
31

الشكل 4.1.

البناء والوميض والتصحيح

أدوات جينج للتطوير والإنتاج الضخم

4.1.1 إصدارات ESP-IDF
تتم استضافة رمز ESP-IDF على GitHub كمشروع مفتوح المصدر. حاليًا، هناك ثلاثة إصدارات رئيسية متاحة: v3، v4، وv5. عادةً ما يحتوي كل إصدار رئيسي على إصدارات مختلفة، مثل v4.2 وv4.3 وما إلى ذلك. تضمن Espressif Systems دعمًا لمدة 30 شهرًا لإصلاحات الأخطاء وتصحيحات الأمان لكل إصدار فرعي تم إصداره. لذلك، يتم أيضًا إصدار مراجعات الإصدارات التخريبية بانتظام، مثل الإصدار 4.3.1، والإصدار 4.2.2، وما إلى ذلك. يوضح الجدول 4.1 حالة دعم إصدارات ESP-IDF المختلفة لرقائق Espressif، مما يشير إلى ما إذا كانت في مرحلة ما قبل التشغيل أم لا.view stage (يقدم الدعم لما قبلview الإصدارات، التي قد تفتقر إلى ميزات أو وثائق معينة) أو تكون مدعومة رسميًا.

الجدول 4.1. دعم حالة إصدارات ESP-IDF المختلفة لرقائق Espressif

سلسلة ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

دعم الإصدار 4.1

دعم v4.2

v4.3 مدعوم مدعوم مدعوم

v4.4 مدعوم مدعوم مدعوم مدعوم
قبلview

v5.0 مدعوم مدعوم مدعوم مدعوم مدعوم مسبقًاview

32 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

غالبًا ما يتضمن تكرار الإصدارات الرئيسية تعديلات على هيكل الإطار وتحديثات لنظام الترجمة. على سبيل المثالample، كان التغيير الرئيسي من الإصدار v3.* إلى الإصدار 4.* هو الانتقال التدريجي لنظام البناء من Make إلى CMake. ومن ناحية أخرى، فإن تكرار الإصدارات الثانوية يستلزم عادةً إضافة ميزات جديدة أو دعم شرائح جديدة.
من المهم التمييز وفهم العلاقة بين الإصدارات الثابتة وفروع GitHub. تمثل الإصدارات التي تحمل علامة v*.* أو v*.*.* الإصدارات الثابتة التي اجتازت اختبارًا داخليًا كاملاً بواسطة Espressif. بمجرد الإصلاح، تظل التعليمات البرمجية وسلسلة الأدوات ومستندات الإصدار لنفس الإصدار دون تغيير. ومع ذلك، فإن فروع GitHub (على سبيل المثال، فرع الإصدار/v4.3) تخضع لارتكابات متكررة للتعليمات البرمجية، غالبًا على أساس يومي. لذلك، قد يختلف مقتطفان من التعليمات البرمجية ضمن نفس الفرع، مما يستلزم من المطورين تحديث التعليمات البرمجية الخاصة بهم على الفور وفقًا لذلك.
4.1.2 سير عمل بوابة ESP-IDF
يتبع Espressif سير عمل Git محددًا لـ ESP-IDF، كما هو موضح على النحو التالي:
· تم إجراء تغييرات جديدة على الفرع الرئيسي، والذي يعمل بمثابة فرع التطوير الرئيسي. يحمل إصدار ESP-IDF الموجود على الفرع الرئيسي دائمًا -dev tag للإشارة إلى أنه قيد التطوير حاليًا، مثل v4.3-dev. سيتم أولاً إعادة التغييرات على الفرع الرئيسيviewتم تحريره واختباره في مستودع Espressif الداخلي، ثم دفعه إلى GitHub بعد اكتمال الاختبار الآلي.
· بمجرد انتهاء الإصدار الجديد من تطوير الميزات في الفرع الرئيسي واستيفاء معايير الدخول إلى اختبار بيتا، فإنه ينتقل إلى فرع جديد، مثل الإصدار/ v4.3. وبالإضافة إلى ذلك، هذا الفرع الجديد tagتم إصداره كإصدار ما قبل النشر، مثل الإصدار v4.3-beta1. يمكن للمطورين الرجوع إلى منصة GitHub للوصول إلى القائمة الكاملة للفروع و tags لـ ESP-IDF. من المهم ملاحظة أن الإصدار التجريبي (إصدار ما قبل النشر) قد لا يزال يحتوي على عدد كبير من المشكلات المعروفة. نظرًا لأن الإصدار التجريبي يخضع للاختبار المستمر، تتم إضافة إصلاحات الأخطاء إلى كل من هذا الإصدار والفرع الرئيسي في وقت واحد. وفي الوقت نفسه، ربما يكون الفرع الرئيسي قد بدأ بالفعل في تطوير ميزات جديدة للإصدار التالي. عند اكتمال الاختبار تقريبًا، تتم إضافة تسمية الإصدار المرشح (rc) إلى الفرع، للإشارة إلى أنه مرشح محتمل للإصدار الرسمي، مثل v4.3-rc1. في هذا سtagه، يبقى الفرع نسخة ما قبل النشر.
· إذا لم يتم اكتشاف أي أخطاء كبيرة أو الإبلاغ عنها، فإن إصدار ما قبل النشر يتلقى في النهاية تسمية إصدار رئيسي (على سبيل المثال، v5.0) أو تسمية إصدار ثانوي (على سبيل المثال، v4.3) ويصبح إصدار إصدار رسمي، والذي يتم توثيقه في صفحة ملاحظات الإصدار. وبعد ذلك، يتم إصلاح أي أخطاء تم تحديدها في هذا الإصدار في فرع الإصدار. بعد اكتمال الاختبار اليدوي، يتم تعيين تسمية إصدار لإصلاح الأخطاء للفرع (على سبيل المثال، v4.3.2)، وهو ما ينعكس أيضًا في صفحة ملاحظات الإصدار.
الفصل 4. إعداد بيئة التطوير 33

4.1.3 اختيار الإصدار المناسب
منذ أن بدأ ESP-IDF رسميًا في دعم ESP32-C3 من الإصدار v4.3، ولم يتم إصدار v4.4 رسميًا حتى وقت كتابة هذا الكتاب، فإن الإصدار المستخدم في هذا الكتاب هو v4.3.2، وهو إصدار منقح من الإصدار 4.3. ومع ذلك، من المهم ملاحظة أنه بحلول الوقت الذي تقرأ فيه هذا الكتاب، قد يكون الإصدار 4.4 أو الإصدارات الأحدث متاحة بالفعل. عند اختيار الإصدار، نوصي بما يلي:
· بالنسبة للمطورين المبتدئين، يُنصح باختيار الإصدار v4.3 المستقر أو نسخته المنقحة، والتي تتوافق مع الإصدار السابقampالنسخة المستخدمة في هذا الكتاب.
· لأغراض الإنتاج الضخم، يوصى باستخدام أحدث إصدار مستقر للاستفادة من أحدث الدعم الفني.
· إذا كنت تنوي تجربة شرائح جديدة أو استكشاف ميزات منتج جديدة، فيرجى استخدام الفرع الرئيسي. يحتوي الإصدار الأخير على أحدث الميزات، ولكن ضع في اعتبارك أنه قد تكون هناك أخطاء معروفة أو غير معروفة.
· إذا كان الإصدار الثابت المستخدم لا يتضمن الميزات الجديدة المطلوبة وكنت ترغب في تقليل المخاطر المرتبطة بالفرع الرئيسي، ففكر في استخدام فرع الإصدار المقابل، مثل فرع الإصدار/v4.4. سيقوم مستودع GitHub الخاص بـ Espressif أولاً بإنشاء فرع الإصدار/v4.4 ثم إصدار الإصدار v4.4 المستقر بناءً على لقطة تاريخية محددة لهذا الفرع، بعد إكمال جميع تطوير الميزات واختبارها.
4.1.4 أكثرview من دليل ESP-IDF SDK
يتكون ESP-IDF SDK من دليلين رئيسيين: esp-idf و .espressif. يحتوي الأول على الكود المصدري لمستودع ESP-IDF files والبرامج النصية للتجميع، في حين أن الأخير يخزن بشكل أساسي سلاسل أدوات التجميع والبرامج الأخرى. سيساعد الإلمام بهذين الدليلين المطورين على الاستفادة بشكل أفضل من الموارد المتاحة وتسريع عملية التطوير. تم وصف بنية دليل ESP-IDF أدناه:
(1) دليل رمز مستودع ESP-IDF (/esp/esp-idf)، كما هو موضح في الشكل 4.2.
أ. مكونات دليل المكونات
يدمج هذا الدليل الأساسي العديد من مكونات البرامج الأساسية لـ ESP-IDF. لا يمكن تجميع أي كود مشروع دون الاعتماد على المكونات الموجودة في هذا الدليل. يتضمن دعم برامج التشغيل لمختلف شرائح Espressif. من واجهات مكتبة LL ومكتبة HAL للأجهزة الطرفية إلى برنامج التشغيل ذي المستوى الأعلى والبرنامج الظاهري File دعم طبقة النظام (VFS)، يمكن للمطورين اختيار المكونات المناسبة على مستويات مختلفة لاحتياجات التطوير الخاصة بهم. يدعم ESP-IDF أيضًا العديد من مجموعات بروتوكولات الشبكة القياسية مثل TCP/IP، وHTTP، وMQTT، Webالمقبس، وما إلى ذلك. يمكن للمطورين استخدام واجهات مألوفة مثل المقبس لإنشاء تطبيقات الشبكة. توفر المكونات فهمًا
34 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

الشكل 4.2. دليل رمز مستودع ESP-IDF
وظائف فعالة ويمكن دمجها بسهولة في التطبيقات، مما يسمح للمطورين بالتركيز فقط على منطق الأعمال. تتضمن بعض المكونات الشائعة ما يلي: · برنامج التشغيل: يحتوي هذا المكون على برامج تشغيل طرفية لمختلف أنواع Espressif
سلسلة الرقائق، مثل GPIO، وI2C، وSPI، وUART، وLEDC (PWM)، وما إلى ذلك. توفر برامج التشغيل الطرفية في هذا المكون واجهات مجردة مستقلة عن الشريحة. كل جهاز طرفي لديه رأس مشترك file (مثل gpio.h)، مما يلغي الحاجة إلى التعامل مع أسئلة الدعم المختلفة الخاصة بالشريحة. · esp_wifi: يتم التعامل مع شبكة Wi-Fi، باعتبارها جهازًا طرفيًا خاصًا، كمكون منفصل. يتضمن واجهات برمجة التطبيقات المتعددة مثل تهيئة أوضاع تشغيل Wi-Fi المختلفة وتكوين المعلمات ومعالجة الأحداث. يتم توفير وظائف معينة لهذا المكون في شكل مكتبات ارتباطات ثابتة. يوفر ESP-IDF أيضًا وثائق شاملة للسائق لسهولة الاستخدام.
الفصل 4. إعداد بيئة التطوير 35

· freertos: يحتوي هذا المكون على كود FreeRTOS الكامل. وبصرف النظر عن توفير الدعم الشامل لنظام التشغيل هذا، قامت Espressif أيضًا بتوسيع دعمها ليشمل الرقائق ثنائية النواة. بالنسبة للرقائق ثنائية النواة مثل ESP32 وESP32-S3، يمكن للمستخدمين إنشاء مهام على مراكز محددة.
ب. مستندات دليل المستندات
يحتوي هذا الدليل على وثائق التطوير ذات الصلة بـ ESP-IDF، بما في ذلك دليل البدء والدليل المرجعي لواجهة برمجة التطبيقات ودليل التطوير وما إلى ذلك.
ملاحظة: بعد تجميع محتويات هذا الدليل بواسطة الأدوات الآلية، يتم نشرها على https://docs.espressif.com/projects/esp-idf. يرجى التأكد من تبديل هدف المستند إلى ESP32-C3 وتحديد إصدار ESP-IDF المحدد.
ج. أدوات أدوات البرنامج النصي
يحتوي هذا الدليل على أدوات تجميع أمامية شائعة الاستخدام مثل idf.py، وأداة المراقبة الطرفية idf_monitor.py، وما إلى ذلك. ويحتوي الدليل الفرعي cmake أيضًا على برنامج نصي أساسي fileنظام التجميع، بمثابة الأساس لتنفيذ قواعد التجميع ESP-IDF. عند إضافة متغيرات البيئة، تتم إضافة المحتويات الموجودة في دليل الأدوات إلى متغير بيئة النظام، مما يسمح بتنفيذ idf.py مباشرة ضمن مسار المشروع.
د. السابقampدليل البرنامج على سبيل المثالampليه
يشتمل هذا الدليل على مجموعة كبيرة من ESP-IDF exampالبرامج التي توضح استخدام واجهات برمجة تطبيقات المكونات. السابقampيتم تنظيم الملفات في أدلة فرعية مختلفة بناءً على فئاتها:
· البدء: يتضمن هذا الدليل الفرعي مستوى الدخول السابقampمثل "hello World" و"blink" لمساعدة المستخدمين على فهم الأساسيات.
· البلوتوث: يمكنك العثور على ما يتعلق بالبلوتوث على سبيل المثالampالمتوفرة هنا، بما في ذلك Bluetooth LE Mesh وBluetooth LE HID وBluFi والمزيد.
· wifi: يركز هذا الدليل الفرعي على شبكات Wi-Fi examples، بما في ذلك البرامج الأساسية مثل Wi-Fi SoftAP، وWi-Fi Station، وespnow، بالإضافة إلى بروتوكول الاتصالات الخاص على سبيل المثالampليه من Espressif. ويتضمن أيضًا طبقة تطبيق متعددة على سبيل المثالampالملفات المستندة إلى شبكة Wi-Fi، مثل Iperf وSniffer وSmart Config.
· الأجهزة الطرفية: هذا الدليل الفرعي الشامل مقسم أيضًا إلى العديد من المجلدات الفرعية بناءً على أسماء الأجهزة الطرفية. أنه يحتوي بشكل رئيسي على سائق الطرفية السابقينampليه لرقائق Espressif، مع كل سابقينampلو يضم العديد من الفرعية السابقةampليه. على سبيل المثال، يتضمن الدليل الفرعي gpio اثنين من examples: لوحة مفاتيح مصفوفة GPIO وGPIO. من المهم أن نلاحظ أنه ليس كل السابقينampتنطبق الملفات الموجودة في هذا الدليل على ESP32-C3.
36 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

على سبيل المثالampلو السابقampالملفات الموجودة في USB/المضيف تنطبق فقط على الأجهزة الطرفية التي تحتوي على أجهزة مضيف USB (مثل ESP32-S3)، ولا يحتوي ESP32-C3 على هذا الجهاز الطرفي. عادةً ما يوفر نظام الترجمة مطالبات عند تحديد الهدف. التمهيدي file من كل السابقينampيسرد le الرقائق المدعومة. · البروتوكولات: هذا الدليل الفرعي يحتوي على السابقينampملفات لبروتوكولات الاتصال المختلفة، بما في ذلك MQTT وHTTP وHTTP Server وPPPoS وModbus وmDNS وSNTP، والتي تغطي نطاقًا واسعًا من بروتوكولات الاتصال مثلampالمتطلبات اللازمة لتطوير إنترنت الأشياء. · التزويد: هنا، ستجد التزويد على سبيل المثالampملفات لطرق مختلفة، مثل توفير Wi-Fi وتوفير Bluetooth LE. · النظام: يتضمن هذا الدليل الفرعي تصحيح أخطاء النظام على سبيل المثالampالملفات (على سبيل المثال، تتبع المكدس، وتتبع وقت التشغيل، ومراقبة المهام)، وإدارة الطاقة على سبيل المثالampليه (على سبيل المثال، أوضاع السكون المختلفة، والمعالجات المشتركة)، وعلى سبيل المثالampالملفات المتعلقة بمكونات النظام الشائعة مثل محطة وحدة التحكم وحلقة الأحداث ومؤقت النظام. · التخزين: ضمن هذا الدليل الفرعي، ستكتشف على سبيل المثالampليه من كل شيء file الأنظمة وآليات التخزين التي يدعمها ESP-IDF (مثل قراءة وكتابة الفلاش وبطاقة SD ووسائط التخزين الأخرى)، بالإضافة إلىampملفات التخزين غير المتطايرة (NVS)، FatFS، SPIFFS وغيرها file عمليات النظام. · الأمن: يحتوي هذا الدليل الفرعي على سبيل المثالampالملفات المتعلقة بتشفير الفلاش. (2) دليل سلسلة أدوات التجميع ESP-IDF (/.espressif)، كما هو موضح في الشكل 4.3.
الشكل 4.3. دليل سلسلة أدوات التجميع ESP-IDF
الفصل 4. إعداد بيئة التطوير 37

أ. توزيع دليل توزيع البرمجيات
يتم توزيع سلسلة أدوات ESP-IDF والبرامج الأخرى في شكل حزم مضغوطة. أثناء عملية التثبيت، تقوم أداة التثبيت أولاً بتنزيل الحزمة المضغوطة إلى دليل dist، ثم تستخرجها إلى الدليل المحدد. بمجرد اكتمال التثبيت، يمكن إزالة محتويات هذا الدليل بأمان.
ب. دليل البيئة الافتراضية لبايثون python env
تعتمد الإصدارات المختلفة من ESP-IDF على إصدارات محددة من حزم Python. يمكن أن يؤدي تثبيت هذه الحزم مباشرة على نفس المضيف إلى حدوث تعارضات بين إصدارات الحزمة. لمعالجة هذه المشكلة، يستخدم ESP-IDF بيئات Python الافتراضية لعزل إصدارات الحزم المختلفة. باستخدام هذه الآلية، يمكن للمطورين تثبيت إصدارات متعددة من ESP-IDF على نفس المضيف والتبديل بينها بسهولة عن طريق استيراد متغيرات بيئة مختلفة.
ج. أدوات دليل سلسلة أدوات التجميع ESP-IDF
يحتوي هذا الدليل بشكل أساسي على أدوات الترجمة المتقاطعة المطلوبة لتجميع مشاريع ESP-IDF، مثل أدوات CMake وأدوات بناء Ninja وسلسلة أدوات gcc التي تولد البرنامج النهائي القابل للتنفيذ. بالإضافة إلى ذلك، يضم هذا الدليل المكتبة القياسية للغة C/C++ بالإضافة إلى الرأس المقابل fileس. إذا كان البرنامج يشير إلى رأس النظام file مثل #تضمين ، ستقوم سلسلة أدوات الترجمة بتحديد موقع stdio.h file ضمن هذا الدليل.
4.2 إعداد بيئة تطوير ESP-IDF
تدعم بيئة تطوير ESP-IDF أنظمة التشغيل السائدة مثل Windows وLinux وmacOS. سيقدم هذا القسم كيفية إعداد بيئة التطوير على كل نظام. يوصى بتطوير ESP32-C3 على نظام Linux، والذي سيتم عرضه بالتفصيل هنا. العديد من التعليمات قابلة للتطبيق عبر الأنظمة الأساسية بسبب تشابه أدوات التطوير. ولذلك ينصح بقراءة محتوى هذا القسم بعناية.
ملاحظة: يمكنك الرجوع إلى المستندات المتوفرة عبر الإنترنت على https://bookc3.espressif.com/esp32c3، والتي توفر الأوامر المذكورة في هذا القسم.
4.2.1 إعداد بيئة تطوير ESP-IDF على Linux
أدوات تطوير وتصحيح أخطاء GNU المطلوبة لبيئة تطوير ESP-IDF هي أدوات أصلية لنظام Linux. بالإضافة إلى ذلك، تتميز محطة سطر الأوامر في Linux بالقوة وسهولة الاستخدام، مما يجعلها خيارًا مثاليًا لتطوير ESP32-C3. أنت تستطيع
38 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

حدد توزيعة Linux المفضلة لديك، لكننا نوصي باستخدام Ubuntu أو الأنظمة الأخرى المستندة إلى Debian. يقدم هذا القسم إرشادات حول إعداد بيئة تطوير ESP-IDF على Ubuntu 20.04.
1. قم بتثبيت الحزم المطلوبة
افتح محطة جديدة وقم بتنفيذ الأمر التالي لتثبيت جميع الحزم الضرورية. سيقوم الأمر تلقائيًا بتخطي الحزم المثبتة بالفعل.
$ sudo apt-get install 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 لتأكيد معلومات الإصدار، وهو أمر ضروري لتثبيت سلسلة الأدوات الصحيحة المطابقة لإصدارات محددة. إلى جانب Git، هناك أدوات نظام مهمة أخرى تشمل Python. يتضمن ESP-IDF العديد من نصوص الأتمتة المكتوبة بلغة بايثون. تُستخدم أدوات مثل CMake وNinja-build وCcache على نطاق واسع في مشاريع C/C++ وتعمل كأدوات تجميع وبناء التعليمات البرمجية الافتراضية في ESP-IDF. يعد libusb-1.0-0 وdfu-util هما المحركان الرئيسيان المستخدمان للاتصال التسلسلي عبر USB ونسخ البرامج الثابتة. بمجرد تثبيت حزم البرامج، يمكنك استخدام العرض المناسب الأمر للحصول على وصف تفصيلي لكل حزمة. على سبيل المثالample، استخدم apt show git لطباعة معلومات الوصف الخاصة بأداة Git.
س: ماذا تفعل إذا كان إصدار بايثون غير مدعوم؟ ج: يتطلب الإصدار 4.3 من ESP-IDF إصدار Python لا يقل عن الإصدار 3.6. بالنسبة للإصدارات الأقدم من Ubuntu، يرجى تنزيل إصدار أعلى من Python وتثبيته يدويًا وتعيين Python3 كبيئة Python الافتراضية. يمكنك العثور على تعليمات مفصلة من خلال البحث عن الكلمة الرئيسية update-alternatives python.
2. قم بتنزيل رمز مستودع ESP-IDF
افتح محطة طرفية وأنشئ مجلدًا باسم esp في دليلك الرئيسي باستخدام الأمر mkdir. يمكنك اختيار اسم مختلف للمجلد إذا كنت تفضل ذلك. استخدم الأمر 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). تضمن المعلمة – العودية تنزيل جميع المستودعات الفرعية لـ ESP-IDF بشكل متكرر. يمكن العثور على معلومات حول المستودعات الفرعية في .gitmodules file.
3. قم بتثبيت سلسلة أدوات تطوير ESP-IDF
يوفر Espressif برنامج نصي آلي install.sh لتنزيل سلسلة الأدوات وتثبيتها. يتحقق هذا البرنامج النصي من إصدار ESP-IDF الحالي وبيئة نظام التشغيل، ثم يقوم بتنزيل وتثبيت الإصدار المناسب من حزم أدوات Python وسلاسل أدوات الترجمة. مسار التثبيت الافتراضي لسلسلة الأدوات هو /.espressif. كل ما عليك فعله هو الانتقال إلى دليل esp-idf وتشغيل install.sh.
$ cd /esp/esp-idf $ ./install.sh
إذا قمت بتثبيت سلسلة الأدوات بنجاح، فسوف تعرض الوحدة الطرفية ما يلي:
تم الانتهاء من كل شيء!
في هذه المرحلة، تكون قد قمت بإعداد بيئة تطوير ESP-IDF بنجاح.
4.2.2 إعداد بيئة تطوير ESP-IDF على نظام Windows
1. قم بتنزيل أداة تثبيت أدوات ESP-IDF
نصائح يوصى بإعداد بيئة تطوير ESP-IDF على نظام التشغيل Windows 10 أو أعلى. يمكنك تنزيل برنامج التثبيت من https://dl.espressif.com/dl/esp-idf/. يعد برنامج التثبيت أيضًا برنامجًا مفتوح المصدر، ويمكن أن يكون كود المصدر الخاص به كذلك viewإد في https: //github.com/espressif/idf-installer.
· مثبت أدوات ESP-IDF على الإنترنت
برنامج التثبيت هذا صغير نسبيًا، حيث يبلغ حجمه حوالي 4 ميغابايت، وسيتم تنزيل الحزم والتعليمات البرمجية الأخرى أثناء عملية التثبيت. المتقدمtagإن أحد أدوات التثبيت عبر الإنترنت هو أنه لا يمكن تنزيل حزم البرامج والتعليمات البرمجية عند الطلب أثناء عملية التثبيت فحسب، بل يسمح أيضًا بتثبيت جميع الإصدارات المتاحة من ESP-IDF وأحدث فرع من كود GitHub (مثل الفرع الرئيسي) . الضيقtagه هو أنه يتطلب اتصالاً بالشبكة أثناء عملية التثبيت، مما قد يتسبب في فشل التثبيت بسبب مشاكل في الشبكة.
40 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

· أداة تثبيت أدوات ESP-IDF دون اتصال بالإنترنت. أداة التثبيت هذه أكبر حجمًا، ويبلغ حجمها حوالي 1 جيجابايت، وتحتوي على كافة حزم البرامج والتعليمات البرمجية المطلوبة لإعداد البيئة. المقدم الرئيسيtagالميزة الرئيسية لبرنامج التثبيت دون اتصال بالإنترنت هي أنه يمكن استخدامه على أجهزة الكمبيوتر التي لا تتمتع بإمكانية الوصول إلى الإنترنت، كما أن معدل نجاح تثبيته أعلى بشكل عام. تجدر الإشارة إلى أن أداة التثبيت غير المتصلة بالإنترنت يمكنها فقط تثبيت الإصدارات الثابتة من ESP-IDF المحددة بواسطة v*.* أو v*.*.*.
2. قم بتشغيل برنامج تثبيت أدوات ESP-IDF بعد تنزيل الإصدار المناسب من برنامج التثبيت (خذ ESP-IDF Tools Offline 4.3.2 على سبيل المثالampلو هنا)، انقر نقرًا مزدوجًا فوق ملف exe file لبدء تشغيل واجهة تثبيت ESP-IDF. يوضح ما يلي كيفية تثبيت الإصدار الثابت ESP-IDF v4.3.2 باستخدام برنامج التثبيت دون اتصال.
(1) في واجهة "تحديد لغة التثبيت" الموضحة في الشكل 4.4، حدد اللغة التي سيتم استخدامها من القائمة المنسدلة.
الشكل 4.4. واجهة "تحديد لغة التثبيت" (2) بعد تحديد اللغة، انقر فوق "موافق" لتنبثق واجهة "اتفاقية الترخيص"
(انظر الشكل 4.5). بعد قراءة اتفاقية ترخيص التثبيت بعناية، حدد "أوافق على الاتفاقية" وانقر على "التالي".
الشكل 4.5. واجهة "اتفاقية الترخيص" الفصل 4. إعداد بيئة التطوير 41

(3) إعادةview تكوين النظام في واجهة "فحص النظام قبل التثبيت" (انظر الشكل 4.6). تحقق من إصدار Windows ومعلومات برنامج مكافحة الفيروسات المثبت. انقر فوق "التالي" إذا كانت جميع عناصر التكوين طبيعية. بخلاف ذلك، يمكنك النقر فوق "السجل الكامل" للحصول على حلول تعتمد على العناصر الأساسية.
الشكل 4.6. نصائح واجهة "التحقق من النظام قبل التثبيت".
يمكنك إرسال السجلات إلى https://github.com/espressif/idf-installer/issues للحصول على المساعدة. (4) حدد دليل تثبيت ESP-IDF. هنا، حدد D:/.espressif، كما هو موضح في
الشكل 4.7، وانقر على "التالي". يرجى ملاحظة أن .espressif هنا هو دليل مخفي. بعد اكتمال التثبيت، يمكنك view المحتويات المحددة لهذا الدليل عن طريق فتح ملف file مدير وعرض العناصر المخفية.
الشكل 4.7. حدد دليل تثبيت ESP-IDF 42 ESP32-C3 Wireless Adventure: دليل شامل لإنترنت الأشياء

(5) تحقق من المكونات التي يلزم تثبيتها، كما هو موضح في الشكل 4.8. يوصى باستخدام الخيار الافتراضي، أي إكمال التثبيت، ثم انقر فوق "التالي".
الشكل 4.8. حدد المكونات المراد تثبيتها (6) قم بتأكيد المكونات المراد تثبيتها وانقر فوق "تثبيت" لبدء التثبيت الآلي-
عملية المماطلة، كما هو مبين في الشكل 4.9. قد تستغرق عملية التثبيت عشرات الدقائق، ويظهر شريط تقدم عملية التثبيت في الشكل 4.10. يرجى الانتظار بصبر.
الشكل 4.9. التحضير للتثبيت (7) بعد اكتمال التثبيت، يوصى بالتحقق من "تسجيل ESP-IDF"
الأدوات القابلة للتنفيذ كاستثناءات Windows Defender..." لمنع حذف برامج مكافحة الفيروسات fileس. يمكن أن تؤدي إضافة عناصر الاستثناء أيضًا إلى تخطي عمليات الفحص المتكررة بواسطة برنامج مكافحة الفيروسات
الفصل 4. إعداد بيئة التطوير 43

الشكل 4.10. يعمل برنامج شريط تقدم التثبيت على تحسين كفاءة تجميع التعليمات البرمجية لنظام Windows بشكل كبير. انقر فوق "إنهاء" لإكمال تثبيت بيئة التطوير، كما هو موضح في الشكل 4.11. يمكنك اختيار تحديد "تشغيل بيئة PowerShell ESP-IDF" أو "تشغيل موجه أوامر ESP-IDF". قم بتشغيل نافذة الترجمة مباشرة بعد التثبيت للتأكد من أن بيئة التطوير تعمل بشكل طبيعي.
الشكل 4.11. اكتمل التثبيت (8) افتح بيئة التطوير المثبتة في قائمة البرامج (إما ESP-IDF 4.3).
CMD أو ESP-IDF 4.3 PowerShell الطرفية، كما هو موضح في الشكل 4.12)، وسيتم إضافة متغير البيئة ESP-IDF تلقائيًا عند التشغيل في المحطة الطرفية. بعد ذلك، يمكنك استخدام الأمر idf.py للعمليات. يظهر ESP-IDF 4.3 CMD المفتوح في الشكل 4.13. 44 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

الشكل 4.12. تم تثبيت بيئة التطوير
الشكل 4.13. ESP-IDF 4.3 CMD
4.2.3 إعداد بيئة تطوير ESP-IDF على نظام Mac
عملية تثبيت بيئة تطوير ESP-IDF على نظام Mac هي نفس عملية تثبيت نظام Linux. أوامر تنزيل رمز المستودع وتثبيت سلسلة الأدوات هي نفسها تمامًا. تختلف أوامر تثبيت حزم التبعية قليلاً فقط. 1. تثبيت حزم التبعية افتح الوحدة الطرفية، وقم بتثبيت pip، وهي أداة إدارة حزم Python، عن طريق تشغيل الأمر التالي:
٪ سودو نقطة تثبيت سهلة
قم بتثبيت Homebrew، وهي أداة لإدارة الحزم لنظام التشغيل macOS، عن طريق تشغيل الأمر التالي:
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)"
قم بتثبيت حزم التبعية المطلوبة عن طريق تشغيل الأمر التالي:
% Brew python3 install cmake ninja ccache dfu-util
2. قم بتنزيل رمز مستودع ESP-IDF اتبع الإرشادات الواردة في القسم 4.2.1 لتنزيل رمز مستودع ESP-IDF. الخطوات هي نفسها المتبعة في التنزيل على نظام Linux.
الفصل 4. إعداد بيئة التطوير 45

3. قم بتثبيت سلسلة أدوات تطوير ESP-IDF
اتبع الإرشادات الواردة في القسم 4.2.1 لتثبيت سلسلة أدوات تطوير ESP-IDF. الخطوات هي نفسها المتبعة في التثبيت على نظام Linux.
4.2.4 تثبيت رمز VS
افتراضيًا، لا يتضمن ESP-IDF SDK أداة لتحرير التعليمات البرمجية (على الرغم من أن أحدث مثبت ESP-IDF لنظام التشغيل Windows يوفر خيار تثبيت ESP-IDF Eclipse). يمكنك استخدام أي أداة تحرير نص من اختيارك لتحرير التعليمات البرمجية ثم تجميعها باستخدام أوامر المحطة الطرفية.
إحدى أدوات تحرير التعليمات البرمجية الشائعة هي VS Code (Visual Studio Code)، وهو محرر تعليمات برمجية مجاني وغني بالميزات مع واجهة سهلة الاستخدام. ويقدم مختلف plugins التي توفر وظائف مثل التنقل في التعليمات البرمجية، وتسليط الضوء على بناء الجملة، والتحكم في إصدار Git، والتكامل الطرفي. بالإضافة إلى ذلك، قامت Espressif بتطوير مكون إضافي مخصص يسمى Espressif IDF لـ VS Code، والذي يبسط تكوين المشروع وتصحيح الأخطاء.
يمكنك استخدام أمر الكود الموجود في الجهاز لفتح المجلد الحالي في VS Code بسرعة. وبدلاً من ذلك، يمكنك استخدام الاختصار Ctrl+ لفتح وحدة التحكم الطرفية الافتراضية للنظام داخل VS Code.
نصائح يوصى باستخدام رمز VS لتطوير كود ESP32-C3. قم بتنزيل وتثبيت أحدث إصدار من VS Code على https://code.visualstudio.com/.
4.2.5 مقدمة إلى بيئات تطوير الطرف الثالث
بالإضافة إلى بيئة تطوير ESP-IDF الرسمية، والتي تستخدم لغة C بشكل أساسي، يدعم ESP32-C3 أيضًا لغات البرمجة السائدة الأخرى ومجموعة واسعة من بيئات التطوير التابعة لجهات خارجية. تشمل بعض الخيارات البارزة ما يلي:
Arduino: منصة مفتوحة المصدر لكل من الأجهزة والبرامج، تدعم العديد من وحدات التحكم الدقيقة، بما في ذلك ESP32-C3.
يستخدم لغة C++ ويقدم واجهة برمجة تطبيقات مبسطة وموحدة، يشار إليها عادةً باسم لغة Arduino. يستخدم Arduino على نطاق واسع في تطوير النماذج الأولية والسياقات التعليمية. فهو يوفر حزمة برامج قابلة للتوسيع وIDE يسمح بسهولة التجميع والوميض.
MicroPython: مترجم لغة Python 3 مصمم للعمل على منصات التحكم الدقيقة المدمجة.
باستخدام لغة نصية بسيطة، يمكنه الوصول مباشرة إلى الموارد الطرفية لـ ESP32-C3 (مثل UART وSPI وI2C) ووظائف الاتصال (مثل Wi-Fi وBluetooth LE).
46 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

وهذا يبسط تفاعل الأجهزة. يتيح MicroPython، جنبًا إلى جنب مع مكتبة العمليات الرياضية الشاملة من Python، تنفيذ خوارزميات معقدة على 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) للكود من خلال مجموعة من قواعد البناء. يعتمد نظام الترجمة للإصدار 4.0 من ESP-IDF والإصدارات الأحدث على CMake افتراضيًا، ويمكن استخدام البرنامج النصي للتجميع CMakeLists.txt للتحكم في سلوك التحويل البرمجي للتعليمات البرمجية. بالإضافة إلى دعم بناء الجملة الأساسي لـ CMake، يحدد نظام الترجمة ESP-IDF أيضًا مجموعة من قواعد الترجمة الافتراضية ووظائف CMake، ويمكنك كتابة البرنامج النصي للتجميع بعبارات بسيطة.
4.3.2 مشروع File بناء
المشروع عبارة عن مجلد يحتوي على برنامج الإدخال الرئيسي والمكونات المعرفة من قبل المستخدم و fileمطلوب لإنشاء تطبيقات قابلة للتنفيذ، مثل البرامج النصية للتجميع والتكوين
الفصل 4. إعداد بيئة التطوير 47

files، جداول الأقسام، إلخ. يمكن نسخ المشاريع وتمريرها، ونفس الملف القابل للتنفيذ file يمكن تجميعها وإنشاؤها في أجهزة بنفس الإصدار من بيئة تطوير ESP-IDF. مشروع نموذجي ESP-IDF file يظهر الهيكل في الشكل 4.14.
الشكل 4.14. مشروع نموذجي ESP-IDF file الهيكل نظرًا لأن ESP-IDF يدعم شرائح IoT المتعددة من 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 يحمل نفس الاسم، مما يضمن استخدام المكون الصحيح.
برنامج الدخول الرئيسي الدليل الرئيسي داخل المشروع يتبع نفس الشيء file هيكل كمكونات أخرى (على سبيل المثال، المكون 1). ومع ذلك، فإنه يحمل أهمية خاصة لأنه عنصر إلزامي يجب أن يكون موجودا في كل مشروع. يحتوي الدليل الرئيسي على الكود المصدري للمشروع ونقطة دخول برنامج المستخدم، والتي تسمى عادة app_main. افتراضيًا، يبدأ تنفيذ برنامج المستخدم من نقطة الإدخال هذه. ويختلف المكون الرئيسي أيضًا في أنه يعتمد تلقائيًا على جميع المكونات الموجودة داخل مسار البحث. لذلك، ليست هناك حاجة للإشارة بشكل صريح إلى التبعيات باستخدام التوجيهات REQUIRES أو PRIV_REQUIRES في ملف CMakeLists.txt file.
إعدادات file يحتوي الدليل الجذر للمشروع على التكوين file يسمى sdkconfig، والذي يحتوي على معلمات التكوين لجميع المكونات داخل المشروع. ملف سدككونفيغ file يتم إنشاؤه تلقائيًا بواسطة نظام الترجمة ويمكن تعديله وإعادة إنشائه بواسطة الأمر idf.py Menuconfig. تنشأ خيارات Menuconfig بشكل أساسي من Kconfig.projbuild الخاص بالمشروع وKconfig الخاص بالمكونات. يضيف مطورو المكونات بشكل عام عناصر التكوين في Kconfig لجعل المكون مرنًا وقابلاً للتكوين.
دليل البناء بشكل افتراضي، يخزن دليل البناء الموجود داخل المشروع وسيطًا fileق و فاي
الفصل 4. إعداد بيئة التطوير 49

البرامج القابلة للتنفيذ التي تم إنشاؤها بواسطة أمر البناء idf.py. بشكل عام، ليس من الضروري الوصول مباشرة إلى محتويات دليل البناء. يوفر ESP-IDF أوامر محددة مسبقًا للتفاعل مع الدليل، مثل استخدام أمر idf.py flash لتحديد موقع الملف الثنائي المترجم تلقائيًا file ثم أرسله إلى عنوان الفلاش المحدد، أو استخدم الأمر idf.py fullclean لتنظيف دليل البناء بأكمله.
جدول الأقسام (partitions.csv) يتطلب كل مشروع جدول أقسام لتقسيم مساحة الفلاش وتحديد حجم وعنوان البدء للبرنامج القابل للتنفيذ ومساحة بيانات المستخدم. سيقوم الأمر idf.py flash أو برنامج ترقية OTA بوميض البرنامج الثابت إلى العنوان المقابل وفقًا لهذا الجدول. يوفر ESP-IDF العديد من جداول الأقسام الافتراضية في Components/ Partition_table، مثل Partitions_singleapp.csv و Partitions_two_ ota.csv، والتي يمكن تحديدها في Menuconfig.
إذا كان جدول الأقسام الافتراضي للنظام لا يفي بمتطلبات المشروع، فيمكن إضافة ملف Partitions.csv مخصص إلى دليل المشروع وتحديده في Menuconfig.
4.3.3 قواعد البناء الافتراضية لنظام الترجمة
قواعد تجاوز المكونات التي تحمل نفس الاسم أثناء عملية البحث عن المكونات، يتبع نظام الترجمة ترتيبًا محددًا. فهو يبحث أولاً عن المكونات الداخلية لـ ESP-IDF، ثم يبحث عن مكونات مشروع المستخدم، وأخيرًا يبحث عن المكونات في EXTRA_COMPONENT_DIRS. في الحالات التي تحتوي فيها أدلة متعددة على مكونات بنفس الاسم، سيتجاوز المكون الموجود في الدليل الأخير أي مكونات سابقة بنفس الاسم. تسمح هذه القاعدة بتخصيص مكونات ESP-IDF داخل مشروع المستخدم، مع الحفاظ على كود ESP-IDF الأصلي سليمًا.
قواعد تضمين المكونات المشتركة بشكل افتراضي كما هو مذكور في القسم 4.3.2، تحتاج المكونات إلى تحديد تبعياتها بشكل صريح على المكونات الأخرى في CMakeLists.txt. ومع ذلك، يتم تضمين المكونات الشائعة مثل freertos تلقائيًا في نظام البناء بشكل افتراضي، حتى لو لم يتم تحديد علاقات التبعية الخاصة بها بشكل صريح في البرنامج النصي للتجميع. تشتمل المكونات الشائعة لـ ESP-IDF على freertos وNewlib وheap وlog وsoc وesp_rom وesp_common وxtensa/riscv وcxx. يؤدي استخدام هذه المكونات الشائعة إلى تجنب العمل المتكرر عند كتابة CMakeLists.txt وجعله أكثر إيجازًا.
قواعد تجاوز عناصر التكوين يمكن للمطورين إضافة معلمات التكوين الافتراضية عن طريق إضافة تكوين افتراضي file اسمه sdkconfig.defaults إلى المشروع. على سبيل المثالampلو، مع إضافة CONFIG_LOG_
50 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

DEFAULT_LEVEL_NONE = يمكنك تكوين واجهة UART لعدم طباعة بيانات السجل بشكل افتراضي. علاوة على ذلك، إذا كانت هناك حاجة إلى تعيين معلمات محددة لهدف معين، فيجب إجراء تكوين file يمكن إضافة الاسم sdkconfig.defaults.TARGET_NAME، حيث يمكن أن يكون TARGET_NAME esp32s2، وesp32c3، وما إلى ذلك. هذه التكوين fileيتم استيراد s إلى sdkconfig أثناء التجميع، مع التكوين الافتراضي العام file يتم استيراد sdkconfig.defaults أولاً، متبوعًا بالتكوين الخاص بالهدف file، مثل sdkconfig.defaults.esp32c3. في الحالات التي توجد فيها عناصر تكوين بنفس الاسم، يتم استخدام التكوين الأخير file سوف يتجاوز السابق.
4.3.4 مقدمة إلى البرنامج النصي للتجميع
عند تطوير مشروع باستخدام ESP-IDF، لا يحتاج المطورون إلى كتابة التعليمات البرمجية المصدر فحسب، بل يحتاجون أيضًا إلى كتابة CMakeLists.txt للمشروع والمكونات. CMakeLists.txt هو نص file، المعروف أيضًا باسم البرنامج النصي للتجميع، والذي يحدد سلسلة من كائنات التجميع، وعناصر تكوين التجميع، والأوامر لتوجيه عملية التجميع للكود المصدر. يعتمد نظام التجميع الخاص بـ ESP-IDF v4.3.2 على CMake. بالإضافة إلى دعم وظائف وأوامر CMake الأصلية، فإنه يحدد أيضًا سلسلة من الوظائف المخصصة، مما يجعل كتابة البرامج النصية للتجميع أسهل بكثير.
تشتمل البرامج النصية للتجميع في ESP-IDF بشكل أساسي على البرنامج النصي لتجميع المشروع والبرامج النصية لتجميع المكونات. يُطلق على CMakeLists.txt الموجود في الدليل الجذر للمشروع اسم البرنامج النصي لتجميع المشروع، والذي يوجه عملية التجميع للمشروع بأكمله. يتضمن البرنامج النصي الأساسي لتجميع المشروع عادةً الأسطر الثلاثة التالية:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. مشروع (myProject)
من بينها، يجب وضع cmake_minimum_required (الإصدار 3.5) في السطر الأول، والذي يستخدم للإشارة إلى الحد الأدنى لرقم إصدار CMake الذي يتطلبه المشروع. الإصدارات الأحدث من CMake متوافقة بشكل عام مع الإصدارات الأقدم، لذا قم بضبط رقم الإصدار وفقًا لذلك عند استخدام أوامر CMake الأحدث لضمان التوافق.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) يستورد عناصر التكوين المحددة مسبقًا وأوامر نظام الترجمة ESP-IDF، بما في ذلك قواعد البناء الافتراضية لنظام الترجمة الموضح في القسم 4.3.3. يقوم المشروع (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(VARIABLE "VALUE").

4.3.5 مقدمة للأوامر المشتركة
يستخدم ESP-IDF CMake (أداة تكوين المشروع) وNinja (أداة بناء المشروع) وesptool (أداة الفلاش) في عملية تجميع التعليمات البرمجية. تلعب كل أداة دورًا مختلفًا في عملية التجميع والبناء والفلاش، كما تدعم أيضًا أوامر التشغيل المختلفة. لتسهيل تشغيل المستخدم، يضيف ESP-IDF واجهة أمامية موحدة idf.py تسمح باستدعاء الأوامر المذكورة أعلاه بسرعة.
قبل استخدام idf.py، تأكد مما يلي:
· تمت إضافة متغير البيئة IDF_PATH الخاص بـ ESP-IDF إلى الجهاز الحالي. · دليل تنفيذ الأوامر هو الدليل الجذري للمشروع، والذي يتضمن ملف
البرنامج النصي لتجميع المشروع CMakeLists.txt.
الأوامر الشائعة لـ idf.py هي كما يلي:
· idf.py –help: عرض قائمة بالأوامر وتعليمات استخدامها. · idf.py مجموعة الهدف : وضع تجميع taidf.py fullcleanrget، مثل
كبديل مع esp32c3. · idf.py Menuconfig: إطلاق Menuconfig، وهو تكوين رسومي طرفي
الأداة، التي يمكنها تحديد خيارات التكوين أو تعديلها، ويتم حفظ نتائج التكوين في ملف sdkconfig file. · بناء idf.py: بدء تجميع التعليمات البرمجية. الوسيطة fileسيتم حفظ s والبرنامج النهائي القابل للتنفيذ الذي تم إنشاؤه بواسطة التجميع في دليل إنشاء المشروع افتراضيًا. عملية التجميع تدريجية، مما يعني أنه إذا كان هناك مصدر واحد فقط file تم تعديله، تم تعديله فقط file سيتم تجميعها في المرة القادمة.

52 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

· تنظيف idf.py: تنظيف الوسيط fileالصورة الناتجة عن تجميع المشروع. سيتم إجبار المشروع بأكمله على التجميع في التجميع التالي. لاحظ أنه لن يتم حذف تكوين CMake وتعديلات التكوين التي أجراها Menuconfig أثناء عملية التنظيف.
idf.py fullclean: حذف دليل البناء بأكمله، بما في ذلك جميع مخرجات تكوين CMake fileس. عند بناء المشروع مرة أخرى، سيقوم CMake بتكوين المشروع من البداية. يرجى ملاحظة أن هذا الأمر سوف يحذف الكل بشكل متكرر files موجود في دليل البناء، لذا استخدمه بحذر عند تكوين المشروع file لن يتم حذفه.
· idf.py flash: وميض البرنامج القابل للتنفيذ الثنائي file تم إنشاؤها بواسطة البناء على الهدف ESP32-C3. الخيارات -ص وب يتم استخدامها لتعيين اسم الجهاز للمنفذ التسلسلي ومعدل الباود للوميض، على التوالي. إذا لم يتم تحديد هذين الخيارين، فسيتم اكتشاف المنفذ التسلسلي تلقائيًا وسيتم استخدام معدل الباود الافتراضي.
· شاشة idf.py: عرض مخرجات المنفذ التسلسلي للهدف ESP32-C3. يمكن استخدام الخيار -p لتحديد اسم الجهاز للمنفذ التسلسلي من جانب المضيف. أثناء طباعة المنفذ التسلسلي، اضغط على مجموعة المفاتيح Ctrl+] للخروج من الشاشة.
يمكن أيضًا دمج الأوامر المذكورة أعلاه حسب الحاجة. على سبيل المثالampإذا، فإن الأمر idf.py build flash Monitor سيقوم بتجميع التعليمات البرمجية، والوميض، وفتح شاشة المنفذ التسلسلي بالتسلسل.
يمكنك زيارة https://bookc3.espressif.com/build-system لمعرفة المزيد عن نظام التجميع ESP-IDF.
4.4 الممارسة: تجميع السابقينampبرنامج "Blink"
4.4.1 مثالampلو التحليل
سيأخذ هذا القسم برنامج Blink كمثالampلو لتحليل file قواعد الهيكل والترميز لمشروع حقيقي بالتفصيل. يقوم برنامج Blink بتنفيذ تأثير وميض LED، ويقع المشروع في الدليل على سبيل المثالamples/get-started/blink، الذي يحتوي على مصدر file، إعدادات files، والعديد من البرامج النصية التجميعية.
يعتمد مشروع الإضاءة الذكية الذي تم تقديمه في هذا الكتاب على هذا المثالampبرنامج لو. ستتم إضافة الوظائف تدريجيًا في الفصول اللاحقة لإكمالها في النهاية.
كود المصدر من أجل توضيح عملية التطوير بأكملها، تم نسخ برنامج Blink إلى esp32c3-iot-projects/device Firmware/1 blink.
هيكل الدليل لمشروع وميض fileيظهر الشكل 4.15.
يحتوي مشروع Blink على دليل رئيسي واحد فقط، وهو مكون خاص
الفصل 4. إعداد بيئة التطوير 53

الشكل 4.15. File هيكل الدليل لمشروع وميض

يجب تضمينها كما هو موضح في القسم 4.3.2. يستخدم الدليل الرئيسي بشكل أساسي لتخزين تنفيذ وظيفة app_main ()، وهي نقطة الدخول إلى برنامج المستخدم. لا يتضمن المشروع الوامض دليل المكونات، لأن هذا السابقampيحتاج البرنامج فقط إلى استخدام المكونات التي تأتي مع ESP-IDF ولا يتطلب مكونات إضافية. يتم استخدام CMakeLists.txt المضمن في مشروع blink لتوجيه عملية الترجمة، بينما يتم استخدام Kconfig.projbuild لإضافة عناصر التكوين لهذا الملف السابق.ampالبرنامج في القائمة. أخرى لا لزوم لها fileلن يؤثر s على تجميع التعليمات البرمجية، لذلك لن يتم مناقشتها هنا. مقدمة تفصيلية لمشروع بلينك fileعلى النحو التالي.

1. /*blink.c يتضمن الرأس التالي fileس*/

2. #تشمل

// رأس مكتبة C القياسية file

3. #include "freertos/freeRTOS.h" //الرأس الرئيسي لـFreeRTOS file

4. #تتضمن "freertos/task.h"

// رأس مهمة FreeRTOS file

5. #تتضمن "sdkconfig.h"

// رأس التكوين file تم إنشاؤها بواسطة kconfig

6. #تتضمن "driver/gpio.h"

// رأس برنامج تشغيل GPIO file

المصدر file يحتوي blink.c على سلسلة من الرؤوس fileالصورة المقابلة لإعلان الوظيفة-

شؤون. يتبع ESP-IDF عمومًا ترتيب تضمين رأس المكتبة القياسي fileس، فريR-

رأس شروط الخدمة fileق، رأس السائق files، رأس مكون آخر files، ورأس المشروع files.

الترتيب الذي الرأس fileقد يؤثر تضمين s على نتيجة التجميع النهائية، لذا حاول القيام بذلك

اتبع القواعد الافتراضية. تجدر الإشارة إلى أنه يتم إنشاء sdkconfig.h تلقائيًا

بواسطة kconfig ولا يمكن تهيئتها إلا من خلال الأمر idf.py Menuconfig.

التعديل المباشر لهذا الرأس file سيتم الكتابة فوقه.

1. /*يمكنك تحديد GPIO المطابق لمصباح LED في idf.py Menuconfig، وتكون نتيجة تعديل Menuconfig هي قيمة CONFIG_BLINK

_ سيتم تغيير GPIO. يمكنك أيضًا تعديل تعريف الماكرو مباشرةً

هنا، وقم بتغيير CONFIG_BLINK_GPIO إلى قيمة ثابتة.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. باطلة app_main (باطلة)

4. {

5.

/*تكوين الإدخال/الإخراج كوظيفة GPIO الافتراضية، وتمكين وضع السحب لأعلى، و

6.

تعطيل أوضاع الإدخال والإخراج*/

7.

gpio_reset_pin(BLINK_GPIO);

54 المغامرة اللاسلكية ESP32-C3: دليل شامل لإنترنت الأشياء

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

/*ضبط GPIO على وضع الإخراج*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); بينما(1) {
/*سجل الطباعة*/ printf("إيقاف تشغيل LEDn"); /*إيقاف تشغيل مؤشر LED (مستوى الإخراج المنخفض)*/ gpio_set_level(BLINK_GPIO, 0); /*تأخير (1000 مللي ثانية)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("تشغيل LEDn"); /*قم بتشغيل مؤشر LED (مستوى الإخراج العالي)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

وظيفة app_main() في Blink exampيعمل البرنامج كنقطة دخول لبرامج المستخدم. إنها وظيفة بسيطة بدون معلمات ولا قيمة إرجاع. يتم استدعاء هذه الوظيفة بعد انتهاء النظام من التهيئة، والتي تتضمن مهام مثل تهيئة المنفذ التسلسلي للسجل، وتكوين مركز فردي/ثنائي، وتكوين جهة المراقبة.

تعمل الدالة app_main() في سياق مهمة تسمى main. يمكن تعديل حجم المكدس وأولوية هذه المهمة في Menuconfig Componentconfig Common ESP المتعلق.

بالنسبة للمهام البسيطة مثل وميض مؤشر LED، يمكن تنفيذ جميع التعليمات البرمجية الضرورية مباشرة في وظيفة app_main(). يتضمن هذا عادةً تهيئة GPIO المتوافق مع LED واستخدام حلقة while(1) لتبديل LED وإيقاف تشغيله. وبدلاً من ذلك، يمكنك استخدام FreeRTOS API لإنشاء مهمة جديدة تتعامل مع وميض LED. بمجرد إنشاء المهمة الجديدة بنجاح، يمكنك الخروج من وظيفة app_main().

محتوى الملف الرئيسي/CMakeLists.txt file، الذي يوجه عملية التجميع للمكون الرئيسي، هو كما يلي:

1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS "." )

من بينها، main/CMakeLists.txt يستدعي وظيفة نظام ترجمة واحدة فقط، وهي idf_component_register. على غرار ملف CMakeLists.txt لمعظم المكونات الأخرى، تتم إضافة blink.c إلى SRCS، والمصدر fileسيتم تجميع ما تم إضافته إلى SRCS. وفي الوقت نفسه، يجب إضافة "."، الذي يمثل المسار الذي يوجد به CMakeLists.txt، إلى INCLUDE_DIRS كمجلدات بحث للرأس fileس. محتوى CMakeLists.txt هو كما يلي:
1. #حدد الإصدار v3.5 باعتباره أقدم إصدار CMake مدعومًا بالمشروع الحالي 2. #يجب ترقية الإصدارات الأقل من الإصدار 3.5 قبل مواصلة التجميع 3. cmake_minimum_required(VERSION 3.5) 4. # تضمين تكوين CMake الافتراضي لـ ESP -نظام تجميع جيش الدفاع الإسرائيلي

الفصل 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 ESP32-C3 مغامرة لاسلكية [بي دي اف] دليل المستخدم
ESP32-C3 مغامرة لاسلكية، ESP32-C3، مغامرة لاسلكية، مغامرة

مراجع

اترك تعليقا

لن يتم نشر عنوان بريدك الإلكتروني. تم وضع علامة على الحقول المطلوبة *