ESP32-C3 безжична авантура
ESP32-C3 безжична авантура
Сеопфатен водич за IoT
Еспресиф системи 12 јуни 2023 година
Спецификации
- Производ: ESP32-C3 безжична авантура
- Производител: Espressif Systems
- Датум: 12 јуни 2023 година
Упатство за употреба на производот
Подготовка
Пред да го користите ESP32-C3 Wireless Adventure, проверете дали сте
запознаени со концептите и архитектурата на IoT. Ова ќе помогне
разбирате како уредот се вклопува во поголемиот екосистем на IoT
и неговите потенцијални апликации во паметните домови.
Вовед и практикување на IoT проекти
Во овој дел, ќе научите за типични IoT проекти,
вклучувајќи ги и основните модули за вообичаени IoT уреди, основните модули
на клиентски апликации и вообичаени IoT облак платформи. Ова ќе
ви обезбеди основа за разбирање и создавање на вашите
сопствени IoT проекти.
Вежбајте: Проект за паметна светлина
Во овој проект за вежбање, ќе научите како да креирате паметен
светлина користејќи ја безжичната авантура ESP32-C3. Структурата на проектот,
функции, подготовка на хардвер и процес на развој ќе биде
целиот процес.
Структура на проектот
Проектот се состои од неколку компоненти, меѓу кои и
ESP32-C3 безжична авантура, LED диоди, сензори и облак
задниот дел.
Функции на проектот
Проектот за паметна светлина ви овозможува да ја контролирате осветленоста и
боја на LED диоди од далечина преку мобилна апликација или web
интерфејс.
Подготовка на хардвер
За да се подготвите за проектот, ќе треба да ги соберете
потребните хардверски компоненти, како што е ESP32-C3 Wireless
Авантуристичка табла, LED диоди, отпорници и напојување.
Процес на развој
Процесот на развој вклучува поставување на развојот
животната средина, пишување код за контрола на LED диоди, поврзување со
cloud backend и тестирање на функционалноста на паметниот
светлина.
Вовед во ESP RainMaker
ESP RainMaker е моќна рамка за развој на IoT
уреди. Во овој дел, ќе научите што е ESP RainMaker и
како може да се имплементира во вашите проекти.
Што е ESP RainMaker?
ESP RainMaker е платформа базирана на облак која обезбедува сет на
алатки и услуги за градење и управување со IoT уреди.
Имплементација на ESP RainMaker
Овој дел ги објаснува различните компоненти вклучени во
имплементирање на ESP RainMaker, вклучувајќи ја и услугата за барање,
RainMaker Agent, cloud backend и RainMaker Client.
Вежбајте: Клучни точки за развој со ESP RainMaker
Во овој дел за вежбање, ќе научите за клучните точки за
размислете кога се развивате со ESP RainMaker. Ова го вклучува уредот
барање, синхронизација на податоци и управување со корисници.
Карактеристики на ESP RainMaker
ESP RainMaker нуди различни функции за управување со корисници, крај
корисници и администратори. Овие карактеристики овозможуваат лесен уред
поставување, далечински управувач и следење.
Поставување развојна средина
Овој дел обезбедува надview на ESP-IDF (Espressif IoT
Рамка за развој), која е официјална развојна рамка
за уреди базирани на ESP32. Ги објаснува различните верзии на
ESP-IDF и како да се постави развојната околина.
Развој на хардвер и драјвери
Хардверски дизајн на производи за паметна светлина базирани на ESP32-C3
Овој дел се фокусира на хардверскиот дизајн на паметната светлина
производи базирани на безжичната авантура ESP32-C3. Ги опфаќа
карактеристики и состав на паметни светлосни производи, како и на
хардверски дизајн на основниот систем ESP32-C3.
Карактеристики и состав на Smart Light производи
Овој поддел ги објаснува карактеристиките и компонентите што ги прават
нагоре паметни светлосни производи. Се дискутира за различните функционалности
и дизајнерски размислувања за создавање паметни светла.
Хардверски дизајн на основниот систем ESP32-C3
Хардверскиот дизајн на основниот систем ESP32-C3 вклучува моќност
напојување, секвенца за вклучување, ресетирање на системот, SPI блиц, извор на часовник,
и RF и размислувања за антена. Овој поддел обезбедува
детални информации за овие аспекти.
Најчесто поставувани прашања
П: Што е ESP RainMaker?
О: ESP RainMaker е платформа базирана на облак која обезбедува алатки
и услуги за градење и управување со IoT уреди. Тоа поедноставува
процесот на развој и овозможува лесно поставување на уредот, далечински
контрола и следење.
П: Како можам да поставам развојна околина за
ESP32-C3?
О: За да ја поставите развојната средина за ESP32-C3, ви треба
да инсталирате ESP-IDF (Espressif IoT Development Framework) и
конфигурирајте го според дадените упатства. ESP-IDF е
официјална развојна рамка за уреди базирани на ESP32.
П: Кои се карактеристиките на ESP RainMaker?
О: ESP RainMaker нуди различни функции, вклучувајќи го и корисникот
управување, карактеристики на крајниот корисник и функции на администратор. Управување со корисници
овозможува лесно барање на уред и синхронизација на податоци. Краен корисник
функциите овозможуваат далечинско управување со уреди преку мобилна апликација или
web интерфејс. Функциите на администраторот обезбедуваат алатки за следење на уредот
и менаџментот.
ESP32-C3 безжична авантура
Сеопфатен водич за IoT
Еспресиф системи 12 јуни 2023 година
Содржини
I Подготовка
1
1 Вовед во IoT
3
1.1 Архитектура на IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Апликација IoT во паметни домови. . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Вовед и практикување на IoT проекти
9
2.1 Вовед во типични IoT проекти. . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Основни модули за обични IoT уреди. . . . . . . . . . . . . . . . . 9
2.1.2 Основни модули на апликации за клиенти. . . . . . . . . . . . . . . . . . . 10
2.1.3 Вовед во заеднички IoT Cloud платформи. . . . . . . . . . . . . . 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 Git Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 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Програма „Блинк“ . . . . . . . . . . . . . . . . . . 53 4.4.1 ПрampАнализа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Составување на програмата Blink. . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Трепкање на програмата Blink. . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Анализа на дневник за сериски порти на програмата Blink. . . . . . . . . . . . . . 60 4.5 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Развој на хардвер и драјвери
65
5 Хардверски дизајн на Smart Light производи базирани на ESP32-C3
67
5.1 Карактеристики и состав на Smart Light производи. . . . . . . . . . . . . . . 67
5.2 Хардверски дизајн на основниот систем ESP32-C3. . . . . . . . . . . . . . . . . . . 70
5.2.1 Напојување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Секвенца на вклучување и ресетирање на системот. . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Извор на часовник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF и антена . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Иглички за врзување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO и PWM контролер . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Пракса: Изградба на паметен систем за осветлување со ESP32-C3. . . . . . . . . . . . . 80
5.3.1 Избор на модули. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Конфигурирање на GPIO на PWM сигнали . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Преземање на фирмвер и интерфејс за дебагирање. . . . . . . . . . . . 82
5.3.4 Насоки за RF дизајн. . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Упатства за дизајнирање на напојување. . . . . . . . . . . . . . . . . . . 86 5.4 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Развој на драјвери
87
6.1 Процес на развој на возачот. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 периферни апликации . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Основи на LED драјвери . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Простори во боја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED драјвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 LED затемнување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Вовед во PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Развој на двигател за затемнување на LED диоди. . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Неиспарливо складирање (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM контролер (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM програмирање . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Вежбајте: Додавање драјвери во проектот Smart Light. . . . . . . . . . . . . . . . . 103
6.5.1 Двигател на копче . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Двигател за затемнување на LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Безжична комуникација и контрола
109
7 Конфигурација и поврзување на Wi-Fi
111
7.1 Основи на Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Вовед во Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Еволуција на IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Концепти за Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Wi-Fi конекција . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Основи на Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Вовед во Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Концепти за Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth конекција . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Конфигурација на Wi-Fi мрежа . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Водич за конфигурација на Wi-Fi мрежа . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Други методи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Програмирање на Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi компоненти во ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Вежба: Wi-Fi Connection . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Вежба: Паметна Wi-Fi конекција . . . . . . . . . . . . . . . . . . . . . 145
7.5 Вежбајте: Конфигурација на Wi-Fi во Smart Light Project. . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi поврзување во проектот Smart Light. . . . . . . . . . . . . . . . . 156 7.5.2 Паметна конфигурација на Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Локална контрола
159
8.1 Вовед во локална контрола. . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Примена на локална контрола. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Адванtages на локалната контрола. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Откривање на контролирани уреди преку паметни телефони. . . . . . . . . . 161
8.1.4 Комуникација на податоци помеѓу паметни телефони и уреди. . . . . . . . 162
8.2 Заеднички локални методи за откривање. . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Емитување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Споредба помеѓу емитување и мултиемитување. . . . . . . . . . . . . . 176
8.2.4 Multicast Aпликациски протокол 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 Bluetooth протокол . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Резиме на протоколи за комуникација со податоци. . . . . . . . . . . . . . . 203
8.4 Гаранција за безбедност на податоците. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Вовед во безбедноста на транспортниот слој (TLS). . . . . . . . . . . . . 207
8.4.2 Вовед во Даtagрам безбедност на транспортниот слој (DTLS) . . . . . . . 213
8.5 Вежбајте: Локална контрола во проект за паметна светлина. . . . . . . . . . . . . . . . . . 217
8.5.1 Создавање сервер за локална контрола базиран на Wi-Fi. . . . . . . . . . . . . . . 217
8.5.2 Проверка на функционалноста на локалната контрола со помош на скрипти. . . . . . . . . . . 221
8.5.3 Создавање сервер за локална контрола базиран на Bluetooth. . . . . . . . . . . . 222
8.6 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Контрола на облак
225
9.1 Вовед во далечински управувач. . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Облак протоколи за комуникација со податоци. . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT Вовед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT Принципи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT Формат на порака . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Споредба на протоколи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Поставување MQTT 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 Комуникација помеѓу клиентот и Cloud Backend. . . . . . . . . . . 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 Креирање на нов Андроид проект. . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Додавање зависности за MyRainmaker. . . . . . . . . . . . . . . . . 276
10.2.4 Барање дозвола во Андроид. . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Подготовка за развој на iOS. . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Креирање на нов проект за iOS. . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Додавање зависности за MyRainmaker. . . . . . . . . . . . . . . . . 279
10.2.8 Барање дозвола во iOS. . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Анализа на функционалните барања на апликацијата. . . . . . . . . . . . . . . . . . 281
10.3.1 Анализа на функционалните барања на проектот. . . . . . . . . . . . 282
10.3.2 Анализа на барањата за управување со корисници. . . . . . . . . . . . . . . 282 10.3.3 Анализа на барањата за обезбедување и врзување на уредите. . . . . . . 283 10.3.4 Анализа на барањата за далечинско управување. . . . . . . . . . . . . . . . 283 10.3.5 Анализа на барањата за распоред . . . . . . . . . . . . . . . . . . . 284 10.3.6 Анализа на барањата на корисничкиот центар. . . . . . . . . . . . . . . . . . 285 10.4 Развој на управување со корисници. . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Вовед во API на 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 Добивање на ID на јазол. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Уреди за обезбедување . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Развој на контрола на уредот. . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Поврзување на уреди за сметки во Cloud. . . . . . . . . . . . . . . . . . . . 303 10.6.2 Добивање листа на уреди . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Добивање статус на уредот . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Промена на статусот на уредот. . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Развој на распоред и кориснички центар . . . . . . . . . . . . . . . . . . . 313 10.7.1 Спроведување на функцијата за распоред . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Имплементирање на кориснички центар . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Повеќе Cloud API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Управување со надградба и верзија на фирмверот
321
11.1 Надградба на фирмверот. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Надview на партициони табели . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Процес на подигање на фирмверот. . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Надview на механизмот ОТА . . . . . . . . . . . . . . . . . . . . . 326
11.2 Управување со верзии на фирмверот. . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Обележување на фирмверот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Враќање и анти-враќање . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Вежбање: Воздух (ОТА) Прampле . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Надградба на фирмверот преку локален домаќин. . . . . . . . . . . . . . . . . 332
11.3.2 Надградба на фирмверот преку ESP RainMaker. . . . . . . . . . . . . . . 335
11.4 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Оптимизација и масовно производство
343
12 Управување со енергија и оптимизација со мала моќност
345
12.1 ESP32-C3 Управување со енергија . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Динамичко скалирање на фреквенција . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Конфигурација за управување со енергија . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Режим со мала моќност . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Модем-режим на спиење . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Режим на лесен сон. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Режим на длабок сон. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Тековна потрошувачка во различни режими на енергија. . . . . . . . . . . . . 358
12.3 Управување со енергија и дебагирање со мала моќност. . . . . . . . . . . . . . . . . 359
12.3.1 Дебагирање на дневник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Дебагирање на GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Пракса: Управување со енергија во проект за паметна светлина. . . . . . . . . . . . . . . 363
12.4.1 Конфигурирање на функцијата за управување со енергија . . . . . . . . . . . . . . . . . 364
12.4.2 Користете брави за управување со енергија . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Проверка на потрошувачката на енергија . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Подобрени безбедносни карактеристики на уредот
369
13.1 Надview на IoT Уред за безбедност на податоци . . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Зошто да се обезбедат податоци за IoT уред? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Основни барања за безбедност на податоците на IoT уредите. . . . . . . . . . . . 371
13.2 Заштита на интегритетот на податоците. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Вовед во методот за верификација на интегритет. . . . . . . . . . . . . . 372
13.2.2 Потврда на интегритет на податоците на фирмверот. . . . . . . . . . . . . . . . . . 373
13.2.3 Прampле . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Заштита на доверливоста на податоците. . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Вовед во шифрирање на податоци. . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Вовед во шемата за шифрирање на Flash. . . . . . . . . . . . . . . . . 376
13.3.3 Складирање на клучеви за шифрирање на блиц. . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Работен режим на флеш шифрирање. . . . . . . . . . . . . . . . . . . . 380
13.3.5 Процес на шифрирање со блиц. . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Вовед во NVS енкрипција. . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Прampдел од Flash енкрипција и NVS енкрипција. . . . . . . . . . . 384
13.4 Заштита на легитимноста на податоците. . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Вовед во дигитален потпис. . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Надview на Шемата за безбедно подигање. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Вовед во софтверско безбедно подигање. . . . . . . . . . . . . . . . . . . 388 13.4.4 Вовед во хардверско безбедно подигање . . . . . . . . . . . . . . . . . . 390 13.4.5 Прamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Пракса: Податоци за масовно производство во проект за паметна светлина. . . . . . . . . . . . . 404
14.4 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Увид: Платформа за далечинско следење
405
15.1 Вовед во ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Започнување со ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Започнување со ESP Insights во проектот esp-inights. . . . . . 409
15.2.2 Трчање Прample во проектот esp-inights. . . . . . . . . . . . . . . 411
15.2.3 Известување за Coredump информации. . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Приспособување на дневниците на интерес. . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Причина за рестартирање на пријавување . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Известување приспособена метрика . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Вежбајте: Користење на ESP Insights во проектот Smart Light. . . . . . . . . . . . . . . 416
15.4 Резиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Вовед
ESP32-C3 е еднојадрен Wi-Fi и Bluetooth 5 (LE) микроконтролер SoC, базиран на архитектурата со отворен код RISC-V. Го постигнува правилниот баланс на моќта, можностите за влез/излез и безбедноста, нудејќи на тој начин оптимално исплатливо решение за поврзаните уреди. За да прикаже различни апликации од семејството ESP32-C3, оваа книга на Espressif ќе ве одведе на интересно патување низ AIoT, почнувајќи од основите на развојот на проекти за IoT и поставување на околината до практични ексampлес. Првите четири поглавја зборуваат за IoT, ESP RainMaker и ESP-IDF. Кратки поглавја 5 и 6 за дизајн на хардвер и развој на драјвери. Како што напредувате, ќе откриете како да го конфигурирате вашиот проект преку Wi-Fi мрежи и мобилни апликации. Конечно, ќе научите да го оптимизирате вашиот проект и да го ставите во масовно производство.
Ако сте инженер во сродни области, софтверски архитект, наставник, студент или кој било кој има интерес за IoT, оваа книга е за вас.
Можете да го преземете кодот на прampсе користи во оваа книга од страницата на Espressif на GitHub. За најновите информации за развојот на IoT, ве молиме следете ја нашата официјална сметка.
Предговор
Свет кој информира
Возејќи го бранот на Интернет, Интернет на нештата (IoT) го имаше своето големо деби за да стане нов тип на инфраструктура во дигиталната економија. За да ја доближи технологијата до јавноста, Espressif Systems работи за визијата дека програмерите од сите сфери на животот можат да користат IoT за да решат некои од најитните проблеми на нашето време. Светот на „Интелигентна мрежа на сите нешта“ е она што го очекуваме од иднината.
Дизајнирањето на нашите сопствени чипови е критична компонента на таа визија. Тоа треба да биде маратон, кој бара постојани пробиви против технолошките граници. Од „Game Changer“ ESP8266 до серијата ESP32 што интегрира поврзување со Wi-Fi и Bluetoothr (LE), проследено со ESP32-S3 опремен со забрзување со вештачка интелигенција, Espressif никогаш не престанува да истражува и развива производи за AIoT решенија. Со нашиот софтвер со отворен код, како што се Рамката за развој на IoT ESP-IDF, Mesh Development Framework ESP-MDF и Device Connectivity Platform ESP RainMaker, создадовме независна рамка за градење AIoT апликации.
Почнувајќи од јули 2022 година, кумулативните испораки на IoT чиповите на Espressif надминаа 800 милиони, водечки на пазарот на Wi-Fi MCU и напојувајќи огромен број поврзани уреди ширум светот. Стремежот за извонредност го прави секој производ на Espressif голем хит поради високото ниво на интеграција и ефикасноста на трошоците. Објавувањето на ESP32-C3 означува значајна пресвртница во саморазвиената технологија на Espressif. Тоа е еднојадрен, 32-битен, RISC-V-базиран MCU со 400 KB SRAM, кој може да работи на 160 MHz. Има интегрирано Wi-Fi од 2.4 GHz и Bluetooth 5 (LE) со поддршка за долг дострел. Постигнува добар баланс на моќ, I/O способности и безбедност, нудејќи на тој начин оптимално економично решение за поврзаните уреди. Врз основа на таков моќен ESP32-C3, оваа книга е наменета да им помогне на читателите да го разберат знаењето поврзано со IoT со детална илустрација и практични ексampлес.
Зошто ја напишавме оваа книга?
Espressif Systems е повеќе од полупроводничка компанија. Тоа е и компанија со IoT платформа, која секогаш се стреми кон откритија и иновации во областа на технологијата. Во исто време, Espressif има отворен код и го сподели својот саморазвиен оперативен систем и софтверска рамка со заедницата, формирајќи уникатен екосистем. Инженерите, производителите и технолошките ентузијасти активно развиваат нови софтверски апликации базирани на производите на Espressif, слободно комуницираат и го споделуваат своето искуство. Можете постојано да ги гледате фасцинантните идеи на програмерите на различни платформи, како што се YouTube и GitHub. Популарноста на производите на Еспресиф поттикна зголемен број на автори кои произведоа над 100 книги засновани на чипсети Еспресиф, на повеќе од десет јазици, вклучувајќи англиски, кинески, германски, француски и јапонски.
Поддршката и довербата на партнерите од заедницата ги поттикнува континуираните иновации на Espressif. „Се стремиме да ги направиме нашите чипови, оперативни системи, рамки, решенија, Cloud, деловни практики, алатки, документација, списи, идеи итн., уште порелевантни за одговорите што им се потребни на луѓето во најитните проблеми во современиот живот. Ова е најголемата амбиција и морален компас на Еспресиф“. рече г-дин Тео Сви Ен, основач и извршен директор на Espressif.
Еспресифот го цени читањето и идеите. Бидејќи континуираната надградба на IoT технологијата поставува повисоки барања за инженерите, како можеме да им помогнеме на повеќе луѓе брзо да ги совладаат IoT чиповите, оперативните системи, софтверските рамки, шемите за апликации и производите за облак услуги? Како што вели поговорката, подобро е да научиш човек да риби отколку да му дадеш риба. Во сесијата за бура на идеи, ни падна на памет дека можеме да напишеме книга за систематски да ги средиме клучните знаења за развојот на IoT. Успеавме, брзо собравме група високи инженери и го комбиниравме искуството на техничкиот тим во вграденото програмирање, IoT хардверот и развојот на софтверот, а сето тоа придонесе за објавувањето на оваа книга. Во процесот на пишување, се трудевме да бидеме објективни и фер, без кожурец и да користиме концизни изрази за да ја кажеме сложеноста и шармот на Интернет на нештата. Внимателно ги сумиравме вообичаените прашања, се осврнавме на повратните информации и предлозите на заедницата, со цел јасно да одговориме на прашањата што се среќаваат во процесот на развој и да обезбедиме практични упатства за развој на IoT за релевантните техничари и носители на одлуки.
Структура на книгата
Оваа книга зазема перспектива насочена кон инженерите и чекор по чекор ги изложува потребните знаења за развој на IoT проекти. Составен е од четири дела и тоа:
· Подготовка (Поглавје 1): Овој дел ја воведува архитектурата на IoT, типичната проектна рамка за IoT, облак платформата ESP RainMakerr и развојната средина ESP-IDF, за да се постави цврста основа за развој на IoT проект.
· Развој на хардвер и драјвери (Поглавје 5): Врз основа на чипсетот ESP6-C32, овој дел елаборира за минималниот хардверски систем и развој на драјвери и ја спроведува контролата на затемнување, оценување на бои и безжична комуникација.
· Безжична комуникација и контрола (Поглавје 7): Овој дел ја објаснува интелигентната шема за конфигурација на Wi-Fi базирана на чип ESP11-C32, протоколи за локална и контрола на облакот и локална и далечинска контрола на уредите. Исто така, обезбедува шеми за развој на апликации за паметни телефони, надградба на фирмверот и управување со верзии.
· Оптимизација и масовно производство (Поглавје 12-15): Овој дел е наменет за напредни IoT апликации, фокусирајќи се на оптимизација на производите во управувањето со енергија, оптимизација со мала моќност и зголемена безбедност. Исто така, воведува согорување и тестирање на фирмверот во масовното производство и како да се дијагностицира статусот на работа и дневниците на фирмверот на уредот преку платформата за далечинско следење ESP Insights.
За изворниот код
Читателите можат да го водат ексampле програми во оваа книга, или со рачно внесување на кодот или со користење на изворниот код што ја придружува книгата. Ја нагласуваме комбинацијата на теоријата и практиката и на тој начин поставуваме дел за вежбање заснован на проектот Smart Light во речиси секое поглавје. Сите кодови се со отворен код. Читателите се добредојдени да го преземат изворниот код и да разговараат за него во деловите поврзани со оваа книга на GitHub и нашиот официјален форум esp32.com. Кодот со отворен код на оваа книга е предмет на условите на лиценцата Apache 2.0.
Забелешка на авторот
Оваа книга е официјално произведена од Espressif Systems и е напишана од високи инженери на компанијата. Погоден е за менаџери и персонал за истражување и развој во индустриите поврзани со IoT, наставници и студенти од сродни специјалност и ентузијасти во областа на Интернет на нештата. Се надеваме дека оваа книга може да послужи како работен прирачник, референца и книга покрај креветот, за да бидеме како добар учител и пријател.
При составувањето на оваа книга се осврнавме на некои релевантни истражувачки резултати на експерти, научници и техничари дома и во странство и се потрудивме да ги цитираме според академските норми. Сепак, неизбежно е да има некои пропусти, затоа овде сакаме да изразиме длабока почит и благодарност до сите релевантни автори. Дополнително, цитиравме информации од Интернет, па би сакале да им се заблагодариме на оригиналните автори и издавачи и да се извиниме што не можеме да го наведеме изворот на секоја информација.
Со цел да произведеме книга со висок квалитет, организиравме кругови на внатрешни дискусии и научивме од предлозите и повратните информации на пробните читатели и уредниците на издавачите. Овде, би сакале повторно да ви се заблагодариме за помошта која сите придонесоа за оваа успешна работа.
Последно, но најважно, благодарност до сите во Espressif кои толку напорно работеа за раѓањето и популаризацијата на нашите производи.
Развојот на IoT проекти вклучува широк опсег на знаење. Ограничено на должината на книгата, како и на нивото и искуството на авторот, пропустите се неизбежни. Затоа, љубезно бараме експертите и читателите да ги критикуваат и исправат нашите грешки. Ако имате какви било предлози за оваа книга, ве молиме контактирајте не на 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, компоненти, функции, променливи, код file имињата, директориумите со кодови и низите ќе бидат во Courier New.
Наредбите или текстовите што треба да ги внесе корисникот и командите што може да се внесат со притискање на копчето „Enter“ ќе се испечатат со задебелени букви Courier New. Дневниците и блоковите на кодови ќе бидат претставени во светло сини полиња.
Exampле:
Второ, користете esp-idf/components/nvs flash/nvs генератор на партиции/nvs партиција gen.py за да генерирате бинарна партиција NVS file на развојниот хост со следнава команда:
$ python $IDF ПАТ/компоненти/nvs блиц/nvs генератор на партиции/nvs партиција gen.py –влезна маса прод.csv –излезна маса прод.bin –големина NVS ГОЛЕМИНА НА ПАРТИЦИЈАТА
Поглавје 1
Вовед
до
IoT
На крајот на 20 век, со подемот на компјутерските мрежи и комуникациските технологии, Интернетот брзо се интегрираше во животот на луѓето. Како што интернет технологијата продолжува да созрева, се роди идејата за Интернет на нештата (IoT). Буквално, IoT значи Интернет каде работите се поврзани. Додека оригиналниот интернет ги крши границите на просторот и времето и го стеснува растојанието помеѓу „личноста и личноста“, IoT ги прави „работите“ важен учесник, зближувајќи ги „луѓето“ и „работите“. Во догледна иднина, IoT треба да стане движечка сила на информатичката индустрија.
Значи, што е Интернет на нештата?
Тешко е точно да се дефинира Интернетот на нештата, бидејќи неговото значење и опсег постојано се развиваат. Во 1995 година, Бил Гејтс првпат ја изнесе идејата за IoT во својата книга „Патот напред“. Едноставно кажано, IoT им овозможува на објектите да разменуваат информации едни со други преку Интернет. Неговата крајна цел е да воспостави „Интернет на сè“. Ова е рана интерпретација на IoT, како и фантазија за идната технологија. Триесет години подоцна, со брзиот развој на економијата и технологијата, фантазијата станува реалност. Од паметни уреди, паметни домови, паметни градови, Интернет на возила и уреди за носење, до „метаверс“ поддржан од IoT технологиите, постојано се појавуваат нови концепти. Во ова поглавје, ќе започнеме со објаснување на архитектурата на Интернет на нештата, а потоа ќе ја претставиме најчестата апликација IoT, паметниот дом, со цел да ви помогнеме да добиете јасно разбирање за IoT.
1.1 Архитектура на IoT
Интернет на нештата вклучува повеќе технологии кои имаат различни потреби и форми за примена во различни индустрии. За да се средат структурата, клучните технологии и апликативните карактеристики на IoT, неопходно е да се воспостави унифицирана архитектура и стандарден технички систем. Во оваа книга, архитектурата на IoT е едноставно поделена на четири слоеви: перцепција и контролен слој, мрежен слој, слој на платформа и слој на апликација.
Слој на перцепција и контрола Како најосновен елемент на архитектурата на IoT, слојот за перцепција и контрола е јадрото за реализација на сеопфатното сензорирање на IoT. Неговата главна функција е да собира, идентификува и контролира информации. Се состои од различни уреди со способност за перцепција,
3
идентификација, контрола и извршување и е одговорен за преземање и анализа на податоци како што се својствата на материјалот, трендовите на однесување и статусот на уредот. На овој начин, IoT го препознава реалниот физички свет. Покрај тоа, слојот исто така може да го контролира статусот на уредот.
Најчестите уреди на овој слој се различни сензори, кои играат важна улога во собирањето и идентификацијата на информации. Сензорите се како човечки сетилни органи, како што се фотосензитивни сензори кои се еднакви на видот, акустични сензори за слух, сензори за гас за мирис и сензори чувствителни на притисок и температура на допир. Со сите овие „сетилни органи“, предметите стануваат „живи“ и способни за интелигентна перцепција, препознавање и манипулација со физичкиот свет.
Мрежен слој Главната функција на мрежниот слој е да пренесува информации, вклучувајќи податоци добиени од перцепцијата и контролниот слој до одредена цел, како и командите издадени од слојот на апликацијата назад до слојот за перцепција и контрола. Служи како важен комуникациски мост кој поврзува различни слоеви на IoT системот. За да се постави основен модел на Интернет на нештата, вклучува два чекори за интегрирање на објектите во мрежа: пристап до Интернет и пренос преку Интернет.
Пристапот до Интернет Интернет овозможува интерконекција помеѓу личноста и личноста, но не ги вклучува работите во големото семејство. Пред појавата на IoT, повеќето работи не беа „мрежни“. Благодарение на континуираниот развој на технологијата, IoT успева да ги поврзе работите на Интернет, со што се остварува меѓусебна поврзаност помеѓу „луѓето и нештата“ и „работите и нештата“. Постојат два вообичаени начини за имплементирање на интернет конекција: жичен мрежен пристап и безжичен мрежен пристап.
Методите за пристап до жичната мрежа вклучуваат етернет, сериска комуникација (на пример, RS-232, RS-485) и USB, додека пристапот до безжичната мрежа зависи од безжичната комуникација, која понатаму може да се подели на безжична комуникација со краток домет и безжична комуникација со долг дострел.
Безжичната комуникација со краток домет вклучува ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) и Radio Frequency Identification (RFID). Безжичната комуникација со долг дострел вклучува Подобрена комуникација со тип на машина (eMTC), LoRa, Интернет на нештата со тесен опсег (NB-IoT), 2G, 3G, 4G, 5G, итн.
Пренос преку Интернет Различни методи на пристап до Интернет водат до соодветна физичка преносна врска на податоци. Следната работа е да се одлучи кој протокол за комуникација да се користи за пренос на податоците. Во споредба со интернет терминалите, повеќето IoT терминали моментално имаат помалку
4 ESP32-C3 безжична авантура: сеопфатен водич за IoT
достапни ресурси, како што се перформансите на обработка, капацитетот за складирање, брзината на мрежата итн., па затоа е неопходно да се избере комуникациски протокол кој зафаќа помалку ресурси во апликациите за IoT. Постојат два комуникациски протоколи кои се широко користени денес: Транспорт на телеметрија во редица пораки (MQTT) и протокол за ограничена апликација (CoAP).
Слој на платформа Слојот на платформата главно се однесува на облак платформи за IoT. Кога сите IoT терминали се вмрежени, нивните податоци треба да се соберат на IoT облак платформа за да се пресметаат и складираат. Слојот на платформата главно поддржува IoT апликации за олеснување на пристапот и управувањето со масивни уреди. Ги поврзува IoT терминалите со облак-платформата, собира терминални податоци и издава команди до терминалите, за да се имплементира далечинска контрола. Како средна услуга за доделување опрема на индустриски апликации, слојот на платформата игра поврзувачка улога во целата архитектура на IoT, носејќи апстрактна деловна логика и стандардизиран модел на основни податоци, кои не само што можат да реализираат брз пристап до уредите, туку и да обезбедат моќни модуларни способности да се задоволат различните потреби во сценаријата за примена во индустријата. Слојот на платформата главно вклучува функционални модули како што се пристап до уреди, управување со уреди, управување со безбедноста, комуникација со пораки, следење на работењето и одржување и апликации за податоци.
· Пристап до уред, реализирање на врската и комуникацијата помеѓу терминалите и IoT облак платформите.
· Управување со уреди, вклучувајќи функции како што се создавање уред, одржување на уредот, конверзија на податоци, синхронизација на податоци и дистрибуција на уреди.
· Управување со безбедноста, обезбедување на безбедноста на преносот на податоци на IoT од перспектива на безбедносна автентикација и безбедност на комуникацијата.
· Комуникација со пораки, вклучувајќи три насоки за пренос, односно терминалот испраќа податоци до платформата за облак IoT, платформата за облак IoT испраќа податоци до страната на серверот или други платформи за облак IoT, а од страната на серверот далечински ги контролира IoT уредите.
· Следење на O&M, што вклучува мониторинг и дијагностика, надградба на фирмверот, онлајн дебагирање, услуги за дневници итн.
· Апликации за податоци, кои вклучуваат складирање, анализа и примена на податоци.
Слој на апликација Апликацискиот слој ги користи податоците од слојот на платформата за управување со апликацијата, филтрирање и обработка на истите со алатки како бази на податоци и софтвер за анализа. Добиените податоци може да се користат за апликации за IoT од реалниот свет, како што се паметно здравство, паметно земјоделство, паметни домови и паметни градови.
Се разбира, архитектурата на IoT може да се подели на повеќе слоеви, но без разлика од колку слоеви се состои, основниот принцип останува суштински ист. Учење
Поглавје 1. Вовед во IoT 5
за архитектурата на IoT помага да го продлабочиме нашето разбирање за IoT технологиите и да изградиме целосно функционални IoT проекти.
1.2 Апликација IoT во паметни домови
IoT навлезе во сите сфери на животот, а најтесно поврзана IoT апликација за нас е паметниот дом. Многу традиционални апарати сега се опремени со еден или повеќе IoT уреди, а многу новоизградени куќи се дизајнирани со IoT технологии од самиот почеток. Слика 1.1 покажува некои вообичаени паметни домашни уреди.
Слика 1.1. Вообичаени паметни домашни уреди Развојот на паметниот дом може едноставно да се подели на паметни производиtagд, сценска интерконекција stagе и интелигентни сtagд, како што е прикажано на слика 1.2.
Слика 1.2. Развој сtage на паметен дом 6 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Првиот сtagе за паметни производи. Различно од традиционалните домови, во паметните домови, IoT уредите примаат сигнали со сензори и се вмрежуваат преку безжичните комуникациски технологии како што се Wi-Fi, Bluetooth LE и ZigBee. Корисниците можат да контролираат паметни производи на различни начини, како што се апликации за паметни телефони, гласовни асистенти, паметна контрола на звучниците итн.tage се фокусира на интерконекција на сцената. Во овој сtagд, програмерите повеќе не размислуваат да контролираат еден паметен производ, туку меѓусебно да поврзат два или повеќе паметни производи, да автоматизираат до одреден степен и конечно да формираат сопствен режим на сцена. За прampтака, кога корисникот ќе притисне кое било копче за режим на сцена, светлата, завесите и климатизерите автоматски ќе се прилагодат на претходно поставените поставки. Се разбира, постои предуслов логиката на поврзување да биде лесно поставена, вклучувајќи ги условите за активирање и дејствијата за извршување. Замислете дека режимот за греење на клима уредот се активира кога внатрешната температура паѓа под 10°C; дека во 7 часот наутро се пушта музика за да се разбуди корисникот, се отвораат паметни завеси, а шпоретот за ориз или тостерот за леб започнува преку паметен штекер; како што корисникот станува и завршува со миењето, појадокот е веќе послужен, така што нема да има одложување со одење на работа. Колку е удобен нашиот живот! Третиот сtage оди на интелигенција сtagд. Како што се пристапува до повеќе паметни домашни уреди, така ќе се пристапува и до типовите на генерирани податоци. Со помош на cloud computing, големи податоци и вештачка интелигенција, како да е всаден „попаметен мозок“ во паметните домови, кои повеќе не бараат чести команди од корисникот. Тие собираат податоци од претходните интеракции и ги учат моделите на однесување и преференциите на корисникот, за да ги автоматизираат активностите, вклучително и давање препораки за донесување одлуки. Во моментов, повеќето паметни домови се на местото на настанот интерконекција stagд. Како што се зголемува стапката на пенетрација и интелигенцијата на паметните производи, бариерите помеѓу протоколите за комуникација се отстрануваат. Во иднина, паметните домови сигурно ќе станат навистина „паметни“, исто како системот за вештачка интелигенција Jarvis in Iron Man, кој не само што може да му помогне на корисникот да контролира различни уреди, да се справи со секојдневните работи, туку има и супер компјутерска моќ и способност за размислување. Во интелигентните сtagд, човечките суштества ќе добијат подобри услуги и во квантитет и во квалитет.
Поглавје 1. Вовед во IoT 7
8 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Поглавје Вовед и практикување на 2 IoT проекти
Во поглавје 1, ја воведовме архитектурата на IoT и улогите и меѓусебните односи на слојот за перцепција и контрола, мрежниот слој, слојот на платформата и слојот на апликацијата, како и развојот на паметниот дом. Сепак, исто како и кога учиме да сликаме, теоретското знаење е далеку од доволно. Мораме да ги „извалкаме рацете“ за да ги спроведеме проектите на IoT во пракса со цел вистински да ја совладаме технологијата. Покрај тоа, кога проектот се префрла во масовно производство сtagд, неопходно е да се земат предвид повеќе фактори како што се мрежното поврзување, конфигурацијата, интеракцијата на IoT облак платформата, управувањето и ажурирањата на фирмверот, управувањето со масовно производство и безбедносната конфигурација. Значи, на што треба да обрнеме внимание кога развиваме целосен проект за IoT? Во поглавје 1, споменавме дека паметниот дом е едно од најчестите сценарија за апликации за IoT, а паметните светла се еден од најосновните и најпрактичните апарати, кои можат да се користат во домови, хотели, спортски сали, болници итн. оваа книга ќе ја земеме изградбата на проект за паметна светлина како почетна точка, ќе ги објасниме неговите компоненти и карактеристики и ќе обезбедиме насоки за развој на проектот. Се надеваме дека можете да извлечете заклучоци од овој случај за да создадете повеќе апликации за IoT.
2.1 Вовед во типични IoT проекти
Во однос на развојот, основните функционални модули на IoT проектите може да се класифицираат во софтверски и хардверски развој на IoT уреди, развој на клиентски апликации и развој на IoT облак платформа. Важно е да се разјаснат основните функционални модули, кои дополнително ќе бидат опишани во овој дел.
2.1.1 Основни модули за обични IoT уреди
Развојот на софтверот и хардверот на IoT уредите ги вклучуваат следните основни модули: Собирање податоци
Како долен слој на IoT архитектурата, IoT уредите на слојот за перцепција и контрола ги поврзуваат сензорите и уредите преку нивните чипови и периферни уреди за да постигнат собирање податоци и контрола на работењето.
9
Врзување сметка и почетна конфигурација За повеќето IoT уреди, врзувањето сметка и почетната конфигурација се завршуваат во еден оперативен процес, на пр.ampле, поврзување уреди со корисници преку конфигурирање на Wi-Fi мрежа.
Интеракција со IoT облак платформи За следење и контрола на IoT уредите, исто така е неопходно да се поврзат со IoT облак платформи, со цел да се даваат команди и да се известува за статусот преку интеракција меѓу себе.
Контрола на уредот Кога се поврзани со IoT облак платформи, уредите можат да комуницираат со облакот и да бидат регистрирани, врзани или контролирани. Корисниците можат да го побараат статусот на производот и да вршат други операции на апликацијата за паметни телефони преку платформи за облак IoT или локални протоколи за комуникација.
IoT уредите за надградба на фирмверот може да постигнат и надградба на фирмверот врз основа на потребите на производителите. Со примање команди испратени од облакот, ќе се реализира надградба на фирмверот и управување со верзијата. Со оваа функција за надградба на фирмверот, можете постојано да ги подобрувате функциите на IoT уредите, да ги поправате дефектите и да го подобрите корисничкото искуство.
2.1.2 Основни модули на апликации за клиенти
Клиентските апликации (на пример, апликации за паметни телефони) главно ги вклучуваат следните основни модули:
Систем на сметка и овластување Поддржува овластување за сметка и уред.
Контрола на уредот Апликациите за паметни телефони обично се опремени со контролни функции. Корисниците можат лесно да се поврзат со IoT уредите и да управуваат со нив во секое време, насекаде преку апликациите за паметни телефони. Во паметниот дом од реалниот свет, уредите најчесто се контролираат преку апликации за паметни телефони, што не само што овозможува интелигентно управување со уредите, туку и ги заштедува трошоците за работна сила. Затоа, контролата на уредот е задолжителна за апликациите на клиентите, како што е контролата на атрибутите на функцијата на уредот, контролата на сцената, распоредот, далечинскиот управувач, поврзувањето на уредите итн. итн., за да го направат домашниот живот поудобен и поудобен. Тие можат да ја темпираат климата, да го исклучат од далечина, автоматски да го запалат светлото во ходникот штом вратата ќе се отклучи или да се префрлат на режимот „театар“ со едно копче.
Апликациите на клиентот за известување го ажурираат статусот на уредите за IoT во реално време и испраќаат предупредувања кога уредите ќе станат ненормални.
10 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Услуга по продажбата на клиентите Апликациите за паметни телефони можат да обезбедат услуги по продажбата за производите, за навремено да ги решат проблемите поврзани со дефекти на IoT уредите и техничките операции.
Истакнати функции За да се задоволат потребите на различни корисници, може да се додадат други функции, како што се тресење, NFC, GPS, итн. GPS може да помогне да се постави точноста на операциите на сцената според локацијата и растојанието, додека функцијата Shake им овозможува на корисниците да го постават наредбите што треба да се извршат за одреден уред или сцена со тресење.
2.1.3 Вовед во обични платформи за облак IoT
IoT облак платформата е сè-во-едно платформа која интегрира функции како што се управување со уреди, комуникација за безбедноста на податоците и управување со известувања. Според нивната целна група и пристапност, IoT облак платформите може да се поделат на јавни IoT облак платформи (во натамошниот текст „јавен облак“) и приватни IoT облак платформи (во натамошниот текст „приватен облак“).
Јавниот облак обично укажува на споделени IoT облак платформи за претпријатија или поединци, управувани и одржувани од даватели на платформи и споделени преку Интернет. Може да биде бесплатен или евтин и обезбедува услуги низ отворената јавна мрежа, како што се Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, итн. Како платформа за поддршка, јавниот облак може да интегрира добавувачи на услуги и низводно крајните корисници да создадат нов синџир на вредности и екосистем.
Приватниот облак е изграден само за употреба на претпријатијата, со што се гарантира најдобра контрола врз податоците, безбедноста и квалитетот на услугите. Неговите услуги и инфраструктура се одржуваат одделно од претпријатијата, а придружниот хардвер и софтвер се исто така посветени на одредени корисници. Претпријатијата можат да ги приспособат облак услугите за да ги задоволат потребите на нивниот бизнис. Во моментов, некои производители на паметни домови веќе имаат приватни платформи за облак IoT и развиле апликации за паметни домови врз основа на нив.
Јавниот облак и приватниот облак имаат свој адванtages, што ќе биде објаснето подоцна.
За да се постигне комуникациско поврзување, неопходно е да се заврши барем вградениот развој на страната на уредот, заедно со деловните сервери, платформите за облак IoT и апликациите за паметни телефони. Соочувајќи се со таков огромен проект, јавниот облак вообичаено обезбедува комплети за развој на софтвер за апликации на уредот и паметни телефони за да го забрза процесот. И јавниот и приватниот облак обезбедуваат услуги вклучувајќи пристап до уредот, управување со уреди, сенка на уредот и работа и одржување.
Пристап до уред IoT облак платформите треба да обезбедат не само интерфејси за пристап до уредот со помош на протоколи
Поглавје 2. Вовед и практикување на IoT проекти 11
како што се MQTT, CoAP, HTTPS и WebСокет, но исто така и функцијата на безбедносната автентикација на уредот за блокирање на фалсификувани и нелегални уреди, ефикасно намалувајќи го ризикот од компромитирање. Таквата автентикација обично поддржува различни механизми, така што кога уредите се масовно произведени, потребно е претходно да се додели сертификатот на уредот според избраниот механизам за автентикација и да се запали во уредите.
Управување со уреди Функцијата за управување со уреди обезбедена од платформите за облак IoT не само што може да им помогне на производителите да го следат статусот на активација и онлајн статусот на нивните уреди во реално време, туку овозможува и опции како што се додавање/отстранување уреди, преземање, додавање/бришење групи, надградба на фирмверот , и управување со верзијата.
IoT облак-платформите во сенка на уредот можат да создадат постојана виртуелна верзија (сенка на уредот) за секој уред, а статусот на сенката на уредот може да се синхронизира и да се добие со апликација за паметен телефон или други уреди преку протоколи за пренос на Интернет. Сенката на уредот го складира најновиот пријавен статус и очекуваниот статус на секој уред, па дури и ако уредот е офлајн, сè уште може да го добие статусот со повикување на API. Сенката на уредот обезбедува секогаш вклучени API, што го олеснува создавањето на апликации за паметни телефони кои имаат интеракција со уредите.
Работење и одржување Функцијата O&M вклучува три аспекти: · Прикажување статистички информации за IoT уредите и известувањата. · Управувањето со дневници овозможува пронаоѓање информации за однесувањето на уредот, горе/надолу протокот на пораки и содржината на пораките. · Дебагирањето на уредот поддржува испорака на команди, ажурирање на конфигурацијата и проверка на интеракцијата помеѓу облак платформите на IoT и пораките на уредот.
2.2 Вежбајте: Проект за паметна светлина
По теоретскиот вовед во секое поглавје, ќе најдете дел за вежбање поврзан со проектот Smart Light за да ви помогне да стекнете практично искуство. Проектот се заснова на чипот ESP32-C3 на Espressif и платформата ESP RainMaker IoT Cloud, и опфаќа хардвер за безжичен модул во производи за паметна светлина, вграден софтвер за паметни уреди базирани на ESP32C3, апликации за паметни телефони и интеракција на ESP RainMaker.
Изворен код За подобро учење и развивање на искуство, проектот во оваа книга е отворен со отворен код. Можете да го преземете изворниот код од нашето складиште на GitHub на https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 безжична авантура: сеопфатен водич за IoT
2.2.1 Структура на проектот
Проектот Smart Light се состои од три дела: i. Паметни светлосни уреди базирани на ESP32-C3, одговорни за интеракција со IoT облак платформи и контрола на прекинувачот, осветленоста и температурата на бојата на LED lamp мониста. ii. Апликации за паметни телефони (вклучувајќи ги и апликациите за таблети што работат на Android и iOS), одговорни за мрежна конфигурација на производите за паметна светлина, како и за пребарување и контрола на нивниот статус.
iii. IoT облак платформа базирана на ESP RainMaker. За поедноставување, ги разгледуваме IoT облак платформата и деловниот сервер како целина во оваа книга. Детали за ESP RainMaker ќе бидат дадени во Поглавје 3.
Кореспонденцијата помеѓу структурата на проектот Smart Light и архитектурата на IoT е прикажана на Слика 2.1.
Слика 2.1. Структура на проект за паметна светлина
2.2.2 Функции на проектот
Поделени според структурата, функциите на секој дел се како што следува. Паметни уреди за осветлување
· Мрежна конфигурација и поврзување. · LED PWM контрола, како прекинувач, осветленост, температура на бојата итн. · Автоматизација или контрола на сцената, на пр., прекинувач за време. · Енкрипција и безбедно подигање на Flash. · Надградба на фирмверот и управување со верзијата.
Поглавје 2. Вовед и практикување на IoT проекти 13
Апликации за паметни телефони · Мрежна конфигурација и врзување на уредот. · Контрола на производот со паметна светлина, како што се прекинувач, осветленост, температура на бојата итн. · Поставки за автоматизација или сцена, на пр., прекинувач за време. · Локален/далечински управувач. · Регистрација на корисник, најавување итн.
Облак платформа ESP RainMaker IoT · Овозможување пристап до IoT уред. · Обезбедување на API за работа на уредот достапни за апликациите за паметни телефони. · Надградба на фирмверот и управување со верзијата.
2.2.3 Подготовка на хардвер
Доколку сте заинтересирани да го спроведете проектот во пракса, ќе ви треба и следниов хардвер: паметни светла, паметни телефони, рутери за Wi-Fi и компјутер што ги исполнува барањата за инсталација на околината за развој. Паметни светла
Паметните светла се нов тип на светилки, чија форма е иста како и општата блескаво сијалица. Паметната светилка се состои од регулирано напојување со кондензатор, безжичен модул (со вграден ESP32-C3), LED контролер и RGB LED матрица. Кога е поврзан на струја, 15 V DC волtagИзлезот по спуштањето на кондензаторот, исправката на диодата и регулацијата обезбедува енергија на LED контролерот и LED матрицата. LED контролерот може автоматски да испраќа високи и ниски нивоа во одредени интервали, префрлајќи ја RGB LED матрицата помеѓу затворено (светла) и отворено (светлата исклучено), така што може да емитува цијан, жолт, зелен, виолетова, сина, црвена и бела светлина. Безжичниот модул е одговорен за поврзување со рутерот за Wi-Fi, примање и известување за статусот на паметните светла и испраќање команди за контрола на ЛЕР.
Слика 2.2. Симулирана паметна светлина
Во раниот развој сtagд, можете да симулирате паметна светлина користејќи ја плочката ESP32-C3DevKitM-1 поврзана со RGB LED lamp мониста (види слика 2.2). Но, треба
14 ESP32-C3 безжична авантура: сеопфатен водич за IoT
имајте предвид дека ова не е единствениот начин да се состави паметна светлина. Хардверскиот дизајн на проектот во оваа книга содржи само безжичен модул (со вграден ESP32-C3), но не и комплетен дизајн на паметна светлина хардвер. Дополнително, Espressif произведува и плочка за развој на аудио ESP32C3-Lyra базирана на ESP32-C3 за контролирање на светлата со аудио. Плочката има интерфејси за микрофони и звучници и може да контролира LED ленти. Може да се користи за развој на ултра евтини аудио радиодифузери со високи перформанси и ленти со ритам светлина. Слика 2.3 покажува плочка ESP32-C3Lyra поврзана со лента од 40 LED светла.
Слика 2.3. ESP32-C3-Lyra поврзан со лента од 40 LED светла
Паметни телефони (Android/iOS) Проектот Smart Light вклучува развој на апликација за паметни телефони за поставување и контрола на производи за паметна светлина.
Рутери за Wi-Fi Рутерите за Wi-Fi ги претвораат сигналите од жичената мрежа и сигналите од мобилната мрежа во сигнали за безжична мрежа, за компјутери, паметни телефони, таблети и други безжични уреди да се поврзат на мрежата. За прampLe, широкопојасен интернет во домот треба само да се поврзе со Wi-Fi рутер за да се постигне безжично поврзување на Wi-Fi уредите. Стандардот за мејнстрим протокол поддржан од рутерите за Wi-Fi е IEEE 802.11n, со просечна TxRate од 300 Mbps или максимум 600 Mbps. Тие се компатибилни наназад со IEEE 802.11b и IEEE 802.11g. Чипот ESP32-C3 од Espressif поддржува IEEE 802.11b/g/n, така што можете да изберете Wi-Fi рутер со еден опсег (2.4 GHz) или двобенд (2.4 GHz и 5 GHz).
Околината за развој на компјутер (Linux/macOS/Windows) ќе биде воведена во Поглавје 4. Поглавје 2. Вовед и практикување на IoT проекти 15
2.2.4 Развојен процес
Слика 2.4. Чекори за развој на проектот Smart Light
Дизајн на хардвер Хардверскиот дизајн на IoT уредите е од суштинско значење за IoT проект. Целосен проект за паметна светлина е наменет за производство на алamp работи под напојување. Различни производители произведуваат лampод различни стилови и типови на драјвери, но нивните безжични модули обично имаат иста функција. За да се поедностави процесот на развој на проектот Smart Ligh, оваа книга го опфаќа само хардверскиот дизајн и развојот на софтверот на безжични модули.
Конфигурација на IoT облак платформа За да користите IoT облак платформи, треба да конфигурирате проекти на задниот дел, како што се создавање производи, создавање уреди, поставување својства на уредот итн.
Вграден развој на софтвер за IoT уреди Спроведување на очекуваните функции со ESP-IDF, SDK на страната на уредот на Espressif, вклучувајќи поврзување со IoT облак платформи, развивање LED драјвери и надградба на фирмверот.
Развој на апликации за паметни телефони Развијте апликации за паметни телефони за Android и iOS системите за реализирање на регистрација и најавување на корисникот, контрола на уредот и други функции.
Оптимизација на IoT уред Откако ќе заврши основниот развој на функциите на IoT уредот, може да се свртите кон задачите за оптимизација, како што е оптимизација на енергија.
Тестирање на масовно производство Спроведете тестови за масовно производство според соодветните стандарди, како што се тест за функцијата на опремата, тест за стареење, RF тест итн.
И покрај чекорите наведени погоре, проектот Smart Light не мора да подлежи на таква постапка бидејќи различни задачи може да се извршуваат во исто време. За прampле, вграден софтвер и апликации за паметни телефони може да се развиваат паралелно. Можеби ќе треба да се повторат и некои чекори, како што се оптимизација на уреди за IoT и тестирање за масовно производство.
16 ESP32-C3 безжична авантура: сеопфатен водич за IoT
2.3 Резиме
Во ова поглавје, најпрвин ги објаснивме основните компоненти и функционалните модули на проектот за IoT, а потоа го воведовме случајот Smart Light за пракса, осврнувајќи се на неговата структура, функции, подготовка на хардвер и развој на процесот. Читателите можат да извлечат заклучоци од практиката и да станат сигурни дека во иднина ќе спроведуваат проекти за IoT со минимални грешки.
Поглавје 2. Вовед и практикување на IoT проекти 17
18 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Поглавје 3
Вовед
до
ESP
RainMaker
Интернетот на нештата (IoT) нуди бескрајни можности за промена на начинот на кој живеат луѓето, но сепак развојот на ИоТ инженерството е полн со предизвици. Со јавни облаци, производителите на терминали можат да ја имплементираат функционалноста на производот преку следните решенија:
Врз основа на облак платформите на давателите на решенија На овој начин, производителите на терминали треба само да го дизајнираат хардверот на производот, потоа да го поврзат хардверот со облакот користејќи го обезбедениот комуникациски модул и да ги конфигурираат функциите на производот следејќи ги упатствата. Ова е ефикасен пристап бидејќи ја елиминира потребата за развој и операции и одржување (O&M) од страна на серверот и апликацијата. Тоа им овозможува на производителите на терминали да се фокусираат на дизајнот на хардверот без да размислуваат за имплементација на облак. Сепак, таквите решенија (на пр. фирмверот на уредот и апликацијата) обично не се со отворен код, така што функциите на производот ќе бидат ограничени од облак-платформата на давателот што не може да се приспособи. Во меѓувреме, податоците за корисникот и уредот исто така припаѓаат на облак платформата.
Врз основа на облак производи Во ова решение, по завршувањето на дизајнот на хардверот, производителите на терминали не само што треба да имплементираат функции на облак користејќи еден или повеќе облак производи обезбедени од јавниот облак, туку треба и да го поврзат хардверот со облакот. За прampле, за да се поврзете со Амазон Web Услуги (AWS), производителите на терминали треба да користат AWS производи како што се Amazon API Gateway, AWS IoT Core и AWS Lambda за да овозможат пристап до уредот, далечински управувач, складирање податоци, управување со корисници и други основни функции. Не само што бара од производителите на терминали флексибилно да ги користат и конфигурираат облак производите со длабоко разбирање и богато искуство, туку исто така бара од нив да ги земат предвид трошоците за изградба и одржување за почетните и подоцнежнитеtages Ова претставува големи предизвици за енергијата и ресурсите на компанијата.
Во споредба со јавните облаци, приватните облаци обично се градат за конкретни проекти и производи. На приватните развивачи на облак им се дава највисоко ниво на слобода во дизајнот на протоколот и имплементацијата на деловната логика. Производителите на терминали можат да прават производи и да дизајнираат шеми по желба и лесно да ги интегрираат и да ги зајакнат корисничките податоци. Комбинирање на високата безбедност, приспособливост и доверливост на јавниот облак со адванотtagна приватниот облак, Espressif го лансираше ESP
19
RainMaker, длабоко интегрирано приватно решение за облак базирано на облакот на Amazon. Корисниците можат да распоредат ESP RainMaker и да градат приватен облак едноставно со AWS сметка.
3.1 Што е ESP RainMaker?
ESP RainMaker е комплетна AIoT платформа изградена со повеќе зрели AWS производи. Обезбедува различни услуги потребни за масовно производство, како што се пристап до облакот на уредот, надградба на уредот, управување со задниот дел, најавување од трета страна, гласовна интеграција и управување со корисници. Со користење на складиштето за апликации без сервер (SAR) обезбедено од AWS, производителите на терминали можат брзо да го распоредат ESP RainMaker на нивните AWS сметки, што е временски ефикасно и лесно за ракување. Управуван и одржуван од Espressif, SAR што го користи ESP RainMaker им помага на програмерите да ги намалат трошоците за одржување на облакот и да го забрзаат развојот на производите на AIoT, со што се градат сигурни, стабилни и приспособливи AIoT решенија. Слика 3.1 ја прикажува архитектурата на ESP RainMaker.
Слика 3.1. Архитектура на ESP RainMaker
Јавниот сервер ESP RainMaker од Espressif е бесплатен за сите ентузијасти, креатори и едукатори на ESP за евалуација на решенија. Програмерите можат да се логираат со сметки на Apple, Google или GitHub и брзо да изградат свои прототипови на IoT апликации. Јавниот сервер ги интегрира Alexa и Google Home и обезбедува услуги за гласовна контрола, кои се поддржани од Alexa Skill и Google Actions. Нејзината функција за семантичко препознавање е исто така напојувана од трети страни. RainMaker IoT уредите реагираат само на конкретни дејства. За исцрпна листа на поддржани гласовни команди, ве молиме проверете ги платформите од трети страни. Дополнително, Espressif нуди јавна апликација RainMaker за корисниците да ги контролираат производите преку паметни телефони. 20 ESP32-C3 безжична авантура: сеопфатен водич за IoT
3.2 Имплементација на ESP RainMaker
Како што е прикажано на слика 3.2, ESP RainMaker се состои од четири дела: · Услуга за барање, овозможувајќи им на уредите на RainMaker динамички да добиваат сертификати. · RainMaker Cloud (исто така познат како cloud backend), обезбедувајќи услуги како што се филтрирање пораки, управување со корисници, складирање податоци и интеграции од трети страни. · RainMaker Agent, овозможувајќи им на уредите RainMaker да се поврзат со RainMaker Cloud. · RainMaker Client (RainMaker App или CLI скрипти), за обезбедување, креирање корисник, поврзување и контрола на уреди, итн.
Слика 3.2. Структура на ESP RainMaker
ESP RainMaker обезбедува комплетен сет на алатки за развој на производи и масовно производство, вклучувајќи: RainMaker SDK
RainMaker SDK се базира на ESP-IDF и го обезбедува изворниот код на агентот од страна на уредот и поврзаните C API за развој на фирмверот. Програмерите треба само да ја напишат логиката на апликацијата, а останатото да го остават на рамката RainMaker. За повеќе информации за C API, посетете ја https://bookc3.espressif.com/rm/c-api-reference. Апликација RainMaker Јавната верзија на апликацијата RainMaker им овозможува на програмерите да го завршат обезбедувањето на уредите и да го контролираат и да го прашуваат статусот на уредите (на пр. производи за паметно осветлување). Достапно е и во продавниците за апликации за iOS и Android. За повеќе детали, погледнете во Поглавје 10. REST APIs REST API им помагаат на корисниците да градат свои апликации слични на апликацијата RainMaker. За повеќе информации, посетете ја https://swaggerapis.rainmaker.espressif.com/.
Поглавје 3. Вовед во ESP RainMaker 21
Python API CLI базиран на Python, кој доаѓа со RainMaker SDK, е обезбеден за имплементација на сите функции слични на карактеристиките на паметните телефони. За повеќе информации за Python API, посетете ја https://bookc3.espressif.com/rm/python-api-reference.
Администратор CLI Администраторот 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: сеопфатен водич за IoT
и развиен врз основа на докажаната рамка ESP-IDF, користејќи ESP-IDF компоненти како што се RTOS, NVS и MQTT. Слика 3.3 ја прикажува структурата на RainMaker SDK.
RainMaker SDK вклучува две главни карактеристики.
Поврзување
јас. Соработка со Claiming Service за да се добијат сертификати за уредот.
ii. Поврзување со облак задниот дел користејќи го безбедниот протокол MQTT за да се обезбеди далечинско поврзување и имплементирање далечински управувач, известување пораки, управување со корисници, управување со уреди, итн. Стандардно ја користи компонентата MQTT во ESP-IDF и обезбедува слој на апстракција за интерфејс со други стекови на протокол.
iii. Обезбедување компонента за обезбедување Wi-Fi за поврзување и обезбедување на Wi-Fi, esp https ota компонента за надградби OTA и esp локална компонента ctrl за локално откривање и поврзување на уреди. Сите овие цели може да се постигнат преку едноставна конфигурација.
Обработка на податоци
јас. Складирање на сертификатите на уредот издадени од Claiming Service и податоците потребни при стартување на RainMaker, стандардно користејќи го интерфејсот обезбеден од компонентата nvs flash и обезбедување API за програмерите за директна употреба.
ii. Користење на механизмот за повратен повик за обработка на податоци од облакот за надоврзување/симнување и автоматско деблокирање на податоците до слојот на апликацијата за лесна обработка од страна на програмерите. За прampТака, RainMaker SDK обезбедува богати интерфејси за воспоставување на податоци за TSL (Јазик за спецификација на нештата), кои се потребни за дефинирање на TSL модели за да се опишат уредите за IoT и да се имплементираат функции како што се тајминг, одбројување и гласовна контрола. За основните интерактивни функции како што е тајмингот, RainMaker SDK обезбедува решение без развој, кое едноставно може да се овозможи кога е потребно. Потоа, агентот RainMaker директно ќе ги обработи податоците, ќе ги испрати во облакот преку поврзаната тема MQTT и ќе ги врати промените на податоците во задниот дел на облакот преку механизмот за повратен повик.
3.2.3 Cloud Backend
Облакот е изграден на 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 Cloud производ што го користи RainMaker
Функција
AWS Cognito
Управување со кориснички акредитиви и поддршка на најавувања од трети страни
AWS Lambda
Спроведување на основната деловна логика на облакот заднина
Амазон Timestream Складирање податоци за временски серии
Amazon DynamoDB Складирање на приватни информации на клиентите
AWS IoT Core
Поддршка на MQTT комуникација
Amazon SES
Обезбедување услуги за испраќање е-пошта
Amazon CloudFront Забрзување на управувањето со задниот дел webпристап до локацијата
Amazon SQS
Препраќање пораки од AWS IoT Core
3.2.4 Клиент на RainMaker
Клиентите на RainMaker, како што се App и CLI, комуницираат со заднината на облакот преку REST API. Детални информации и упатства за REST API може да се најдат во документацијата Swagger обезбедена од Espressif. Клиентот за мобилни апликации на RainMaker е достапен и за iOS и за Android системите. Овозможува обезбедување, контрола и споделување на уреди, како и креирање и овозможување задачи за одбројување и поврзување со платформи од трети страни. Може автоматски да вчита кориснички интерфејс и икони според конфигурацијата пријавена од уредите и целосно да го прикаже уредот TSL.
За прampле, ако е изградено паметно светло на RainMaker SDK-обезбедено прamples, иконата и корисничкиот интерфејс на светлото на сијалицата ќе се вчитаат автоматски кога ќе заврши обезбедувањето. Корисниците можат да ја менуваат бојата и осветленоста на светлината преку интерфејсот и да постигнат контрола од трета страна со поврзување на Alexa Smart Home Skill или Google Smart Home Actions со нивните сметки ESP RainMaker. Слика 3.4 ги прикажува иконата и корисничкиот интерфејс прampпомалку од светлото на сијалицата на Alexa, Google Home и ESP RainMaker апликацијата.
24 ESP32-C3 безжична авантура: сеопфатен водич за IoT
(а) Прampле – Алекса
(б) Прample – Google Home
(в) Прample – ESP RainMaker
Слика 3.4. Прampикона и интерфејс на сијалицата на Alexa, Google Home и ESP RainMaker апликацијата
3.3 Вежбајте: Клучни точки за развој со ESP RainMaker
Откако ќе се заврши слојот за двигател на уредот, програмерите може да почнат да создаваат модели на TSL и да обработуваат податоци за надолна врска користејќи ги API-ите обезбедени од RainMaker SDK и да ги овозможат основните услуги на ESP RainMaker врз основа на дефиницијата и барањата на производот.
Поглавје 3. Вовед во ESP RainMaker 25
Делот 9.4 од оваа книга ќе ја објасни имплементацијата на паметната LED светилка во RainMaker. За време на дебагирање, програмерите можат да ги користат алатките CLI во RainMaker SDK за да комуницираат со паметната светлина (или да повикаат REST API од Swagger).
Поглавје 10 ќе ја елаборира употребата на REST API во развојот на апликации за паметни телефони. OTA надградбите на LED паметните светла ќе бидат опфатени во Поглавје 11. Ако програмерите го овозможиле далечинското следење на ESP Insights, задниот дел за управување со ESP RainMaker ќе ги прикаже податоците на ESP Insights. Деталите ќе бидат претставени во Поглавје 15.
ESP RainMaker поддржува приватно распоредување, кое се разликува од јавниот сервер RainMaker на следниве начини:
Услуга за поднесување барања За да се генерираат сертификати во приватни распоредувања, потребно е да се користи администратор CLI на RainMaker наместо Присвојување. Со јавниот сервер, на програмерите мора да им се дадат администраторски права за да имплементираат надградба на фирмверот, но тоа е непожелно при комерцијални распоредувања. Затоа, ниту посебна услуга за автентикација не може да се обезбеди за самопобарување, ниту администраторски права за присвојување од домаќинот управувано или со помош.
Апликации за телефони Во приватните распоредувања, апликациите треба да се конфигурираат и компајлираат посебно за да се осигура дека системите на сметките не се интероперабилни.
Најава од трета страна и гласовна интеграција Програмерите треба да се конфигурираат одделно преку сметките на 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 безжична авантура: сеопфатен водич за IoT
Регистрирајте се и најавете се Методите за регистрација и најава поддржани од RainMaker вклучуваат: · ИД на е-пошта + Лозинка · Телефонски број + Лозинка · Сметка на Google · Сметка на Apple · Сметка на GitHub (само јавен сервер) · Сметка на Amazon (само приватен сервер)
ЗАБЕЛЕШКА Регистрирајте се користејќи Google/Amazon ја споделува адресата на е-пошта на корисникот со RainMaker. Регистрирајте се со користење на Apple споделува лажна адреса што Apple му ја доделува на корисникот специјално за услугата RainMaker. Сметката на RainMaker ќе се креира автоматски за корисниците кои се најавуваат со сметка на Google, Apple или Amazon за прв пат.
Променете ја лозинката Важи само за најавувања засновани на ИД/Телефонски број. Сите други активни сесии ќе бидат одјавени откако ќе се смени лозинката. Според однесувањето на AWS Cognito, одјавените сесии можат да останат активни до 1 час.
Враќање лозинка Важи само за најавувања засновани на ИД/Телефонски број.
3.4.2 Карактеристики на крајниот корисник
Функциите отворени за крајните корисници вклучуваат локална и далечинска контрола и мониторинг, закажување, групирање уреди, споделување уреди, притисни известувања и интеграции од трети страни.
Далечински управувач и следење · Конфигурација на барање, вредности на параметри и статус на поврзување за еден или сите уреди. · Поставете параметри за единечни или повеќе уреди.
Локална контрола и мониторинг Мобилниот телефон и уредот треба да бидат поврзани на истата мрежа за локална контрола.
Распоред · Корисниците однапред поставуваат одредени дејства во одредено време. · Не е потребна интернет конекција за уредот додека се извршува распоредот. · Еднаш или повторете (со одредување денови) за единечни или повеќе уреди.
Групирање на уреди Поддржува апстрактно групирање на повеќе нивоа Метаподатоците на групата може да се користат за да се создаде структура на домашна соба.
Поглавје 3. Вовед во ESP RainMaker 27
Споделување уред Еден или повеќе уреди може да се споделат со еден или повеќе корисници.
Push известувања Крајните корисници ќе добиваат push известувања за настани како што се · Додаден/отстранет нов уред/и · Уред поврзан на облак · Уредот е исклучен од облак · Барања за споделување уред создадени/прифатени/одбиени · пораки за предупредување пријавени од уреди
Интеграциите на трети лица Alexa и Google Voice Assistant се поддржани за контрола на уредите RainMaker, вклучувајќи светла, прекинувачи, приклучоци, вентилатори и сензори за температура.
3.4.3 Административни карактеристики
Администраторските функции им овозможуваат на администраторите да имплементираат регистрација на уреди, групирање уреди и надградби OTA и до view статистика и податоци од ESP Insights.
Регистрација на уред Генерирајте сертификати за уред и регистрирајте се со Admin CLI (само приватен сервер).
Групирање на уреди Креирајте апстрактни или структурирани групи врз основа на информации за уредот (само приватен сервер).
Надградби преку воздух (OTA) Поставете фирмвер врз основа на верзијата и моделот, на еден или повеќе уреди или групна мониторинг, откажување или архивирање на задачите OTA.
View статистика Viewспособните статистики вклучуваат: · Регистрации на уреди (сертификати регистрирани од администраторот) · Активации на уредот (уредот поврзан за прв пат) · Кориснички сметки · Асоцијација на кориснички уред
View Податоци за ESP Insights Viewспособните податоци за ESP Insights вклучуваат: · Грешки, предупредувања и приспособени дневници · Извештаи и анализи за падови · Причини за рестартирање · Метрики како што се употреба на меморија, RSSI итн. · Прилагодени метрики и променливи
28 ESP32-C3 безжична авантура: сеопфатен водич за IoT
3.5 Резиме
Во ова поглавје, воведовме неколку клучни разлики помеѓу распоредувањето на јавниот RainMaker и приватното распоредување. Приватното решение ESP RainMaker лансирано од Espressif е многу доверливо и растегливо. Сите чипови од серијата ESP32 се поврзани и прилагодени на AWS, што значително ги намалува трошоците. Програмерите можат да се фокусираат на проверка на прототипот без да мора да учат за производите на облакот AWS. Исто така, ја објаснивме имплементацијата и карактеристиките на ESP RainMaker, како и некои клучни точки за развој со користење на платформата.
Скенирај за преземање ESP RainMaker за Android Скенирај за преземање на ESP RainMaker за iOS
Поглавје 3. Вовед во ESP RainMaker 29
30 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Поглавје Поставување 4 Развојна средина
Ова поглавје се фокусира на ESP-IDF, официјалната рамка за развој на софтвер за ESP32-C3. Ќе објасниме како да ја поставите околината на различни оперативни системи и ќе ја воведеме структурата на проектот и системот за градење на ESP-IDF, како и употребата на сродни развојни алатки. Потоа ќе го претставиме процесот на компајлирање и водење на ексample проект, притоа нудејќи детално објаснување за излезниот дневник на секој stage.
4.1 ESP-IDF Надview
ESP-IDF (Espressif IoT Development Framework) е едношалтерска рамка за развој на IoT обезбедена од Espressif Technology. Користи C/C++ како главен јазик за развој и поддржува вкрстена компилација во главните оперативни системи како Linux, Mac и Windows. ПоранешниотampПрограмите вклучени во оваа книга се развиени со користење на ESP-IDF, кој ги нуди следните карактеристики: · двигатели на системско ниво на SoC. ESP-IDF вклучува драјвери за ESP32, ESP32-S2, ESP32-C3,
и други чипови. Овие двигатели опфаќаат периферна библиотека на ниско ниво (LL), библиотека на слој за апстракција на хардверот (HAL), поддршка за RTOS и софтвер за двигатели на горниот слој, итн. · Суштински компоненти. ESP-IDF вклучува основни компоненти потребни за развој на IoT. Ова вклучува повеќе купови мрежни протоколи како што се HTTP и MQTT, рамка за управување со енергија со динамична модулација на фреквенција и функции како шифрирање на блиц и безбедно подигање, итн. · Алатки за развој и производство. ESP-IDF обезбедува најчесто користени алатки за градење, блиц и дебагирање за време на развојот и масовното производство (види Слика 4.1), како што е системот за градење базиран на CMake, синџирот на алатки за вкрстена компилација базиран на GCC и JTAG алатка за дебагирање базирана на OpenOCD, итн. Вреди да се напомене дека кодот ESP-IDF првенствено се придржува до лиценцата за отворен код Apache 2.0. Корисниците можат да развијат личен или комерцијален софтвер без ограничувања додека се во согласност со условите на лиценцата за отворен код. Дополнително, на корисниците им се доделуваат бесплатни постојани лиценци за патенти, без обврска за отворен код какви било измени направени на изворниот код.
31
Слика 4.1.
Градење, трепкање и отстранување грешки-
ging алатки за развој и масовно производство
4.1.1 Верзии на ESP-IDF
Кодот ESP-IDF е хостиран на GitHub како проект со отворен код. Во моментов, достапни се три главни верзии: v3, v4 и v5. Секоја голема верзија обично содржи различни субверзии, како што се v4.2, v4.3 и така натаму. Espressif Systems обезбедува 30-месечна поддршка за поправки на грешки и безбедносни закрпи за секоја објавена под-верзија. Затоа, редовно се објавуваат и ревизии на субверзии, како што се v4.3.1, v4.2.2, итн. Табелата 4.1 го покажува статусот на поддршка на различни верзии ESP-IDF за чипови Espressif, покажувајќи дали тие се во предview stage (нуди поддршка за предview верзии, на кои може да им недостасуваат одредени карактеристики или документација) или се официјално поддржани.
Табела 4.1. Статус на поддршка на различни верзии ESP-IDF за чипови Espressif
Серија ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
поддржан v4.1
Поддржан е поддржан v4.2
v4.3 поддржан поддржан поддржан
v4.4 поддржан поддржан поддржан поддржан поддржан
предview
v5.0 поддржан поддржан поддржан поддржан поддржан поддржан предview
32 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Итерацијата на главните верзии често вклучува прилагодувања на структурата на рамката и ажурирања на системот за компилација. За прample, главната промена од v3.* во v4.* беше постепената миграција на build системот од Make во CMake. Од друга страна, повторувањето на помалите верзии обично повлекува додавање на нови функции или поддршка за нови чипови.
Важно е да се разликува и да се разбере односот помеѓу стабилните верзии и гранките на GitHub. Верзиите означени како v*.* или v*.*.* претставуваат стабилни верзии кои поминале целосно внатрешно тестирање од Espressif. Откако ќе се поправи, кодот, синџирот на алатки и документите за издавање за истата верзија остануваат непроменети. Сепак, гранките на GitHub (на пр., гранката за издавање/v4.3) се подложени на чести кодови, честопати на дневна основа. Затоа, два фрагменти од код под иста гранка може да се разликуваат, што наложува програмерите соодветно да го ажурираат својот код.
4.1.2 Работен тек на Git ESP-IDF
Espressif следи специфичен работен тек на Git за ESP-IDF, наведен на следниов начин:
· Нови промени се направени на главната гранка, која служи како главна развојна гранка. Верзијата ESP-IDF на главната гранка секогаш носи -dev tag за да укаже дека моментално е во развој, како што е v4.3-dev. Промените на главната гранка прво ќе бидат повторноviewed и тестиран во внатрешното складиште на Espressif, а потоа се турка на GitHub откако ќе заврши автоматското тестирање.
· Откако новата верзија ќе го заврши развојот на функциите на главната гранка и ќе ги исполни критериумите за влегување во бета тестирање, таа преминува во нова гранка, како што е издавање/ v4.3. Покрај тоа, оваа нова гранка е tagged како верзија пред издавање, како 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, која е ревидирана верзија од v4.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, WebSocket, итн. Програмерите можат да користат познати интерфејси како Socket за да градат мрежни апликации. Компонентите обезбедуваат разбирање
34 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Слика 4.2. Директориум за кодови на складиштето ESP-IDF
sive функционалност и лесно може да се интегрира во апликациите, дозволувајќи им на програмерите да се фокусираат исклучиво на деловната логика. Некои вообичаени компоненти вклучуваат: · драјвер: Оваа компонента содржи програми за периферни драјвери за различни Espressif
Сериите на чипови, како што се GPIO, I2C, SPI, UART, LEDC (PWM), итн. Програмите за периферни драјвери во оваа компонента нудат апстрактни интерфејси независни од чипови. Секој периферен уред има заедничко заглавие file (како gpio.h), елиминирајќи ја потребата да се занимавате со различни прашања за поддршка специфични за чиповите. · esp_wifi: Wi-Fi, како посебен периферен уред, се третира како посебна компонента. Вклучува повеќе API, како што се иницијализација на различни режими на драјвери за Wi-Fi, конфигурација на параметри и обработка на настани. Одредени функции на оваа компонента се обезбедени во форма на библиотеки со статични врски. ESP-IDF, исто така, обезбедува сеопфатна документација за возачот за лесно користење.
Поглавје 4. Поставување развојна средина 35
· freertos: Оваа компонента го содржи целосниот FreeRTOS код. Освен што обезбеди сеопфатна поддршка за овој оперативен систем, Espressif ја прошири својата поддршка и на чипови со две јадра. За чипови со две јадра како ESP32 и ESP32-S3, корисниците можат да креираат задачи на одредени јадра.
б. Документи од директориумот на документи
Овој директориум содржи документи за развој поврзани со ESP-IDF, вклучувајќи го Водичот за почеток, упатството за API, Водичот за развој итн.
ЗАБЕЛЕШКА Откако ќе се состават со автоматизирани алатки, содржината на овој директориум се распоредува на https://docs.espressif.com/projects/esp-idf. Погрижете се да ја префрлите целта на документот на ESP32-C3 и изберете ја наведената верзија на ESP-IDF.
в. Алатки за скрипти
Овој директориум содржи најчесто користени алатки за компилација од предниот дел како што се idf.py и алатката за терминал за монитор idf_monitor.py итн. files на системот за компилација, служејќи како основа за имплементација на правилата за компилација ESP-IDF. Кога се додаваат променливите на околината, содржината во директориумот алатки се додава во променливата на системската околина, овозможувајќи idf.py да се изврши директно под патеката на проектот.
г. Прample програмски директориум прampлес
Овој директориум содржи огромна колекција на ESP-IDF exampле програми кои ја демонстрираат употребата на компоненти API. ПоранешниотampЛесовите се организирани во различни поддиректориуми врз основа на нивните категории:
· почеток: Овој поддиректориум вклучува почетно ниво на прampкако „здраво свето“ и „трепкање“ за да им помогне на корисниците да ги сфатат основите.
· Bluetooth: можете да најдете поврзан со Bluetooth на прamples тука, вклучувајќи Bluetooth LE Mesh, Bluetooth LE HID, BluFi и многу повеќе.
· wifi: овој поддиректориум се фокусира на Wi-Fi прamples, вклучувајќи основни програми како Wi-Fi SoftAP, Wi-Fi Station, espnow, како и комерцијален протокол за комуникација на пр.ampлес од Еспресиф. Вклучува и повеќекратен апликациски слој на прampзасновани на Wi-Fi, како што се Iperf, Sniffer и Smart Config.
· периферни уреди: Овој обемен поддиректориум е дополнително поделен на бројни подпапки базирани на имиња на периферни уреди. Главно содржи периферен драјвер прamples за Espressif чипс, со секој ексampЛе со неколку под-ексampлес. На пример, поддиректориумот gpio вклучува два прamples: GPIO и GPIO матрична тастатура. Важно е да се напомене дека не сите поранешниampзнаците во овој директориум се применливи за ESP32-C3.
36 ESP32-C3 безжична авантура: сеопфатен водич за IoT
За прampле, ексampуредите во USB/домаќин се применуваат само за периферни уреди со хардвер USB-домаќин (како што е ESP32-S3), а ESP32-C3 го нема овој периферен уред. Системот за компајлирање обично обезбедува потсетници при поставување на целта. README file на секој поранешенampЛе ги наведува поддржаните чипови. · протоколи: Овој поддиректориум содржи прampлес за различни комуникациски протоколи, вклучувајќи MQTT, HTTP, HTTP сервер, PPPoS, Modbus, mDNS, SNTP, кои покриваат широк опсег на протоколи за комуникација на пр.ampпомалку потребни за развој на IoT. · обезбедување: Овде, ќе најдете обезбедување на прamples за различни методи, како што се обезбедување Wi-Fi и обезбедување Bluetooth LE. · систем: Овој поддиректориум вклучува системско дебагирање на прamples (на пр., следење на магацинот, следење на времетраење, следење на задачи), управување со енергија прamples (на пример, различни режими на спиење, ко-процесори) и прampЛесно поврзани со вообичаени системски компоненти како конзолен терминал, циклус на настани и системски тајмер. · складирање: во овој поддиректориум, ќе откриете прampпомалку од сите file системи и механизми за складирање поддржани од ESP-IDF (како што се читање и пишување на Flash, 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 се потпираат на специфични верзии на Пајтон пакетите. Инсталирањето на овие пакети директно на истиот хост може да доведе до конфликти помеѓу верзиите на пакетите. За да го реши ова, 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 е моќен и лесен за користење, што го прави идеален избор за развој на ESP32-C3. Ти можеш
38 ESP32-C3 безжична авантура: сеопфатен водич за IoT
изберете ја претпочитаната дистрибуција на Linux, но препорачуваме да користите Ubuntu или други системи базирани на Debian. Овој дел дава упатства за поставување на развојната околина ESP-IDF на Ubuntu 20.04.
1. Инсталирајте ги потребните пакети
Отворете нов терминал и извршете ја следнава команда за да ги инсталирате сите потребни пакети. Командата автоматски ќе ги прескокне пакетите што се веќе инсталирани.
$ sudo apt-get инсталирај git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
СОВЕТИ Треба да ја користите администраторската сметка и лозинката за горната команда. Стандардно, нема да се прикажуваат никакви информации при внесување на лозинката. Едноставно притиснете го копчето „Enter“ за да продолжите со постапката.
Git е алатка за управување со клучен код во ESP-IDF. По успешното поставување на развојната околина, можете да ја користите командата git log за view сите промени на кодот направени од создавањето на ESP-IDF. Покрај тоа, Git се користи и во ESP-IDF за да се потврдат информациите за верзијата, кои се неопходни за инсталирање на точниот синџир на алатки што одговара на одредени верзии. Заедно со Git, други важни системски алатки го вклучуваат Python. ESP-IDF вклучува бројни скрипти за автоматизација напишани во Python. Алатките како што се CMake, Ninja-build и Ccache се широко користени во C/C++ проектите и служат како стандардни алатки за компилација и градење кодови во ESP-IDF. libusb-1.0-0 и dfu-util се главните двигатели што се користат за USB сериска комуникација и снимање на фирмверот. Откако ќе се инсталираат софтверските пакети, можете да го користите apt show команда за да се добијат детални описи на секој пакет. За прample, користете apt show git за да ги испечатите информациите за описот за алатката Git.
П: Што да направите ако верзијата на Python не е поддржана? О: ESP-IDF v4.3 бара верзија на Python што не е пониска од v3.6. За постарите верзии на Ubuntu, ве молиме рачно преземете и инсталирајте повисока верзија на Python и поставете го Python3 како стандардна околина на Python. Можете да најдете детални инструкции со пребарување на клучниот збор ажурирање-алтернативи python.
2. Преземете го кодот на складиштето ESP-IDF
Отворете терминал и креирајте папка со име esp во вашиот домашен директориум користејќи ја командата mkdir. Ако сакате, можете да изберете друго име за папката. Користете ја командата cd за да влезете во папката.
Поглавје 4. Поставување развојна средина 39
$ mkdir -p /esp $ cd /esp
Користете ја командата git клон за да го преземете кодот на складиштето ESP-IDF, како што е прикажано подолу:
$ git клон -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 MB, а други пакети и код ќе се преземат за време на процесот на инсталација. Напредокотtage од онлајн инсталаторот е дека не само што може да се преземат софтверски пакети и код на барање за време на процесот на инсталација, туку исто така овозможува инсталирање на сите достапни изданија на ESP-IDF и најновата гранка на кодот GitHub (како што е главната гранка) . Недостатокtage е тоа што бара мрежна врска за време на процесот на инсталација, што може да предизвика неуспех на инсталацијата поради проблеми со мрежата.
40 ESP32-C3 безжична авантура: сеопфатен водич за IoT
· Офлајн инсталатор на алатки ESP-IDF Овој инсталатер е поголем, со големина од околу 1 GB и ги содржи сите софтверски пакети и код потребни за поставување на околината. Главниот адванtagд од офлајн инсталерот е тоа што може да се користи на компјутери без пристап до Интернет и генерално има повисока стапка на успех на инсталацијата. Треба да се забележи дека офлајн инсталерот може да инсталира само стабилни изданија на ESP-IDF идентификувани со v*.* или v*.*.*.
2. Вклучете го инсталаторот на алатки ESP-IDF Откако ќе преземете соодветна верзија на инсталаторот (земете го ESP-IDF Tools Offline 4.3.2 на пр.ample овде), кликнете двапати на exe file за да го стартувате инсталациониот интерфејс ESP-IDF. Следното покажува како да инсталирате стабилна верзија на ESP-IDF v4.3.2 користејќи го офлајн инсталерот.
(1) Во интерфејсот „Избери јазик за инсталација“ прикажан на Слика 4.4, изберете го јазикот што ќе се користи од паѓачката листа.
Слика 4.4. Интерфејс „Изберете јазик за инсталација“ (2) Откако ќе го изберете јазикот, кликнете „OK“ за да се појави интерфејсот „Договор за лиценца“
(види Слика 4.5). Откако внимателно ќе го прочитате договорот за лиценца за инсталација, изберете „Го прифаќам договорот“ и кликнете „Следно“.
Слика 4.5. Интерфејс „Договор за лиценца“ Поглавје 4. Поставување развојна средина 41
(3) Реview системската конфигурација во интерфејсот „Пред-инсталациона проверка на системот“ (види Слика 4.6). Проверете ја верзијата на Windows и информациите за инсталираниот антивирусен софтвер. Кликнете на „Следно“ ако сите конфигурациски ставки се нормални. Во спротивно, можете да кликнете на „Целосен дневник“ за решенија засновани на клучни ставки.
Слика 4.6. СОВЕТИ за интерфејсот „Проверка на системот пред инсталација“.
Можете да поднесете дневници на https://github.com/espressif/idf-installer/issues за помош. (4) Изберете го директориумот за инсталација ESP-IDF. Овде, изберете D:/.espressif, како што е прикажано во
Слика 4.7 и кликнете „Следно“. Ве молиме имајте предвид дека .espressif тука е скриен директориум. Откако ќе заврши инсталацијата, можете view специфичните содржини на овој директориум со отворање на file менаџер и прикажување на скриени ставки.
Слика 4.7. Изберете го директориумот за инсталација ESP-IDF 42 ESP32-C3 Безжична авантура: сеопфатен водич за IoT
(5) Проверете ги компонентите што треба да се инсталираат, како што е прикажано на слика 4.8. Се препорачува да ја користите стандардната опција, односно да ја завршите инсталацијата, а потоа кликнете на „Следно“.
Слика 4.8. Изберете ги компонентите за инсталирање (6) Потврдете ги компонентите што треба да се инсталираат и кликнете на „Инсталирај“ за да започне автоматизираната ин-
процес на застој, како што е прикажано на слика 4.9. Процесот на инсталација може да трае десетици минути, а лентата за напредок на процесот на инсталација е прикажана на Слика 4.10. Ве молиме почекајте трпеливо.
Слика 4.9. Подготовка за инсталација (7) Откако ќе заврши инсталацијата, се препорачува да проверите „Регистрирај го ESP-IDF
Извршни алатки како исклучувања на Windows Defender…“ за да се спречи бришење на антивирусен софтвер fileс. Додавањето ставки за исклучување исто така може да прескокне чести скенирања со антивирус
Поглавје 4. Поставување развојна средина 43
Слика 4.10. Софтвер со лента за напредок на инсталацијата, во голема мера ја подобрува ефикасноста на компилацијата на кодот на системот Windows. Кликнете на „Finish“ за да ја завршите инсталацијата на развојната околина, како што е прикажано на Слика 4.11. Можете да изберете да проверите „Стартувај ESP-IDF PowerShell околина“ или „Изврши ја командната линија ESP-IDF“. Извршете го прозорецот за компилација директно по инсталацијата за да се осигурате дека развојната средина функционира нормално.
Слика 4.11. Инсталирањето е завршено (8) Отворете ја инсталираната развојна околина во списокот со програми (или ESP-IDF 4.3
CMD или ESP-IDF 4.3 PowerShell терминал, како што е прикажано на Слика 4.12) и променливата на околината ESP-IDF автоматски ќе се додадат кога работи во терминалот. После тоа, можете да ја користите командата idf.py за операции. Отворениот ESP-IDF 4.3 CMD е прикажан на Слика 4.13. 44 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Слика 4.12. Инсталирана е околина за развој
Слика 4.13. ESP-IDF 4.3 CMD
4.2.3 Поставување на ESP-IDF развојна средина на Mac
Процесот на инсталирање на развојната средина ESP-IDF на Mac систем е ист како оној на системот Linux. Наредбите за преземање на кодот на складиштето и инсталирање на синџирот на алатки се сосема исти. Само командите за инсталирање на пакети за зависност се малку различни. 1. Инсталирајте пакети за зависност Отворете терминал и инсталирајте pip, алатката за управување со пакети Python, со извршување на следнава команда:
% sudo лесна инсталација пип
Инсталирајте Homebrew, алатка за управување со пакети за macOS, со извршување на следнава команда:
% /bin/bash -c „$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)“
Инсталирајте ги потребните пакети за зависност со извршување на следнава команда:
% brew python3 инсталирајте cmake ninja ccache dfu-util
2. Преземете го кодот на складиштето ESP-IDF Следете ги упатствата дадени во делот 4.2.1 за да го преземете кодот на складиштето ESP-IDF. Чекорите се исти како и за преземање на систем Линукс.
Поглавје 4. Поставување развојна средина 45
3. Инсталирајте го синџирот на алатки за развој на ESP-IDF
Следете ги упатствата дадени во делот 4.2.1 за да го инсталирате синџирот на алатки за развој на ESP-IDF. Чекорите се исти како и за инсталација на систем Линукс.
4.2.4 Инсталирање VS Code
Стандардно, ESP-IDF SDK не вклучува алатка за уредување код (иако најновиот ESP-IDF инсталатер за Windows нуди опција за инсталирање ESP-IDF Eclipse). Можете да користите која било алатка за уредување текст по ваш избор за да го уредите кодот и потоа да го компајлирате користејќи терминални команди.
Една популарна алатка за уредување кодови е VS Code (Visual Studio Code), кој е бесплатен и богат уредувач на код со интерфејс лесен за корисникот. Тој нуди различни plugins кои обезбедуваат функционалности како навигација со код, истакнување синтакса, контрола на верзијата на Git и интеграција на терминал. Дополнително, Espressif разви специјален приклучок наречен Espressif IDF за VS Code, кој ја поедноставува конфигурацијата на проектот и дебагирањето.
Можете да ја користите командата за код во терминалот за брзо отворање на тековната папка во VS Code. Алтернативно, можете да ја користите кратенката Ctrl+ за да ја отворите стандардната терминална конзола на системот во VS Code.
СОВЕТИ Се препорачува да се користи VS Code за развој на кодови ESP32-C3. Преземете ја и инсталирајте ја најновата верзија на VS Code на https://code.visualstudio.com/.
4.2.5 Вовед во развојни средини од трета страна
Покрај официјалната развојна средина ESP-IDF, која првенствено го користи јазикот C, ESP32-C3 поддржува и други мејнстрим програмски јазици и широк опсег на развојни средини од трети страни. Некои значајни опции вклучуваат:
Arduino: платформа со отворен код и за хардвер и за софтвер, поддржувајќи различни микроконтролери, вклучително и ESP32-C3.
Го користи јазикот C++ и нуди поедноставен и стандардизиран API, вообичаено познат како јазик Arduino. Arduino е широко користен во развој на прототипови и образовни контексти. Обезбедува проширлив софтверски пакет и IDE што овозможува лесно компилирање и трепкање.
MicroPython: преведувач на јазици на Python 3 дизајниран да работи на вградени платформи на микроконтролер.
Со едноставен јазик на скрипта, може директно да пристапи до периферните ресурси на ESP32-C3 (како што се UART, SPI и I2C) и комуникациските функции (како што се Wi-Fi и Bluetooth LE).
46 ESP32-C3 безжична авантура: сеопфатен водич за IoT
Ова ја поедноставува хардверската интеракција. MicroPython, во комбинација со обемната библиотека за математичко работење на Python, овозможува имплементација на сложени алгоритми на ESP32-C3, олеснувајќи го развојот на апликации поврзани со AI. Како јазик на скрипта, нема потреба од повеќекратна компилација; може да се направат модификации и директно да се извршат скрипти.
NodeMCU: преведувач на LUA јазик развиен за чипови од серијата ESP.
Ги поддржува речиси сите периферни функции на ESP чиповите и е полесен од MicroPython. Слично на MicroPython, NodeMCU користи јазик на скрипта, со што се елиминира потребата од повеќекратна компилација.
Понатаму, ESP32-C3 ги поддржува и оперативните системи NuttX и Zephyr. NuttX е оперативен систем во реално време кој обезбедува интерфејси компатибилни со POSIX, подобрувајќи ја преносливоста на апликациите. Zephyr е мал оперативен систем во реално време специјално дизајниран за IoT апликации. Вклучува бројни софтверски библиотеки потребни за развој на IoT, кои постепено се развиваат во сеопфатен софтверски екосистем.
Оваа книга не дава детални упатства за инсталација за гореспоменатите развојни средини. Можете да инсталирате развојна околина врз основа на вашите барања следејќи ја соодветната документација и упатства.
4.3 ESP-IDF систем за компилација
4.3.1 Основни концепти на системот за компилација
Проектот ESP-IDF е збирка од главна програма со влезна функција и повеќе независни функционални компоненти. За прample, проект кој ги контролира LED прекинувачите главно се состои од главната програма за влез и компонента на двигател што го контролира GPIO. Ако сакате да го реализирате далечинскиот управувач со LED, треба да додадете и Wi-Fi, стек протоколи TCP/IP итн.
Системот за компајлирање може да компајлира, поврзува и генерира извршна датотека files (.bin) за кодот преку збир на правила за градење. Системот за компилација на ESP-IDF v4.0 и погоре верзии стандардно се базира на CMake, а скриптата за компилација CMakeLists.txt може да се користи за контрола на однесувањето на кодот за компилација. Покрај поддршката на основната синтакса на CMake, системот за компајлирање ESP-IDF, исто така, дефинира збир на стандардни правила за компилација и функции на CMake, а можете да ја напишете скриптата за компилација со едноставни искази.
4.3.2 Проект File Структура
Проектот е папка која содржи главна програма за влез, компоненти дефинирани од корисникот и fileПотребни се за да се изградат извршни апликации, како што се скрипти за компилација, конфигурација
Поглавје 4. Поставување развојна средина 47
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 Compehensive Guide to IoT
ги специфицира неговите параметри и зависности за компилација. За време на процесот на компилација, компонентите се компајлираат во посебни статични библиотеки (.а files) и на крајот се комбинираат со други компоненти за да се формира апликацијата програма.
ESP-IDF обезбедува суштински функции, како што се оперативниот систем, периферните драјвери и стекот на мрежни протоколи, во форма на компоненти. Овие компоненти се зачувани во директориумот со компоненти лоциран во root директориумот ESP-IDF. Програмерите не треба да ги копираат овие компоненти во директориумот со компоненти на myProject. Наместо тоа, тие треба само да ги специфицираат односите на зависност на овие компоненти во CMakeLists.txt на проектот file користејќи ги директивите REQUIRES или PRIV_REQUIRES. Системот за компајлирање автоматски ќе ги лоцира и компајлира потребните компоненти.
Затоа, директориумот со компоненти под myProject не е неопходен. Се користи само за вклучување на некои сопствени компоненти на проектот, кои можат да бидат библиотеки од трета страна или код дефиниран од корисникот. Дополнително, компонентите може да се добијат од кој било директориум освен ESP-IDF или тековниот проект, како на пример од проект со отворен код зачуван во друг директориум. Во овој случај, треба само да ја додадете патеката на компонентата со поставување на променливата EXTRA_COMPONENT_DIRS во CMakeLists.txt под root директориумот. Овој директориум ќе ја замени секоја ESP-IDF компонента со истото име, осигурувајќи дека се користи правилната компонента.
Главна програма за влез Главниот директориум во рамките на проектот го следи истото file структура како и други компоненти (на пример, компонента 1). Сепак, има посебно значење бидејќи е задолжителна компонента која мора да постои во секој проект. Главниот директориум го содржи изворниот код на проектот и влезната точка на корисничката програма, обично наречена app_main. Стандардно, извршувањето на корисничката програма започнува од оваа влезна точка. Главната компонента исто така се разликува по тоа што автоматски зависи од сите компоненти во рамките на патеката за пребарување. Затоа, нема потреба експлицитно да се назначуваат зависности користејќи ги директивите REQUIRES или PRIV_REQUIRES во CMakeLists.txt file.
Конфигурација file Коренскиот директориум на проектот содржи конфигурација file наречен sdkconfig, кој ги содржи конфигурациските параметри за сите компоненти во рамките на проектот. На sdkconfig file автоматски се генерира од системот за компајлирање и може да се менува и регенерира со командата idf.py 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 обезбедува неколку стандардни табели за партиции во компоненти/партиција_табела, како што се partitions_singleapp.csv и partitions_two_ ota.csv, кои може да се изберат во menuconfig.
Ако стандардната табела за партиции на системот не може да ги исполни барањата на проектот, може да се додаде приспособена партиции.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 на проектот. За прample, додавајќи CONFIG_LOG_
50 ESP32-C3 безжична авантура: сеопфатен водич за IoT
DEFAULT_LEVEL_NONE = y може да го конфигурира UART интерфејсот да не печати податоци од дневникот стандардно. Понатаму, ако треба да се постават специфични параметри за одредена цел, конфигурација file со име sdkconfig.defaults.TARGET_NAME може да се додаде, каде што TARGET_NAME може да биде esp32s2, esp32c3 и така натаму. Овие конфигурации files се увезуваат во sdkconfig за време на компилацијата, со општата стандардна конфигурација file Прво се увезуваат sdkconfig.defaults, а потоа конфигурацијата специфична за целта file, како што е sdkconfig.defaults.esp32c3. Во случаи кога има конфигурациски ставки со исто име, последната конфигурација file ќе го надмине првото.
4.3.4 Вовед во скриптата за компилација
Кога развивате проект користејќи ESP-IDF, програмерите не само што треба да напишат изворен код, туку треба да напишат и CMakeLists.txt за проектот и компонентите. CMakeLists.txt е текст file, исто така познат како скрипта за компилација, која дефинира низа објекти за компилација, ставки за конфигурација на компилација и команди за водење на процесот на компилација на изворниот код. Системот за компилација на ESP-IDF v4.3.2 се базира на CMake. Покрај поддршката на природните функции и команди на CMake, тој исто така дефинира низа сопствени функции, што го олеснува пишувањето скрипти за компилација.
Скриптите за компилација во ESP-IDF главно ги вклучуваат скриптата за компилација на проектот и скриптите за компилација на компоненти. CMakeLists.txt во root директориумот на проектот се нарекува скрипта за компилација на проектот, која го води процесот на компилација на целиот проект. Основната скрипта за компилација на проектот обично ги вклучува следните три линии:
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 за да обезбедите компатибилност.
вклучува ($ENV {IDF_PATH}/tools/cmake/project.cmake) увезува однапред дефинирани конфигурациски ставки и команди на системот за компилација ESP-IDF, вклучувајќи ги стандардните правила за градење на системот за компајлирање опишани во Дел 4.3.3. project(myProject) го креира самиот проект и го одредува неговото име. Ова име ќе се користи како конечен излез бинарно file име, т.е. myProject.elf и myProject.bin.
Проектот може да има повеќе компоненти, вклучувајќи ја и главната компонента. Директориумот на највисоко ниво на секоја компонента содржи CMakeLists.txt file, што се нарекува скрипта за компилација на компоненти. Скриптите за компилација на компоненти главно се користат за одредување зависности на компонентите, параметрите за конфигурација, изворниот код files, и вклучено заглавие files за
Поглавје 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 е додадена на тековниот терминал. · Директориумот за извршување на командата е root директориумот на проектот, кој ги вклучува
скрипта за компилација на проектот CMakeLists.txt.
Вообичаените команди на idf.py се како што следува:
· idf.py –help: прикажување листа на команди и нивни упатства за користење. · idf.py постави-цел : поставување на компилацијата taidf.py fullcleanrget, како
како замена со esp32c3. · idf.py menuconfig: стартување на menuconfig, терминална графичка конфигурација
алатка, која може да избере или менува опции за конфигурација, а резултатите од конфигурацијата се зачувуваат во sdkconfig file. · Изградба на idf.py: иницирање компилација на код. Средното files и конечната извршна програма генерирана од компилацијата ќе биде стандардно зачувана во директориумот за изградба на проектот. Процесот на компилација е постепен, што значи дека ако само еден извор file е изменета, само изменетата file ќе се состави следниот пат.
52 ESP32-C3 безжична авантура: сеопфатен водич за IoT
· idf.py clean: чистење на посредникот fileгенерирани од компилацијата на проектот. Целиот проект ќе биде принуден да се состави во следната компилација. Забележете дека конфигурацијата CMake и модификациите на конфигурацијата направени од menuconfig нема да се избришат за време на чистењето.
· idf.py fullclean: бришење на целиот build директориум, вклучувајќи ги сите излези од конфигурацијата CMake fileс. Кога повторно ќе го изградите проектот, CMake ќе го конфигурира проектот од нула. Имајте предвид дека оваа команда рекурзивно ќе ги избрише сите files во директориумот за изградба, затоа користете го со претпазливост и конфигурацијата на проектот file нема да биде избришано.
· idf.py блиц: трепкање на извршната програма бинарно file генерирани со изградба на целта ESP32-C3. Опциите -стр и -б се користат за поставување на името на уредот на сериската порта и брзината на бауд за трепкање, соодветно. Ако овие две опции не се наведени, сериската порта автоматски ќе се открие и ќе се користи стандардната брзина на бауд.
· idf.py монитор: прикажување на излезот на сериската порта на целниот ESP32-C3. Опцијата -p може да се користи за одредување на името на уредот на сериската порта од страна на домаќинот. За време на печатење со сериски порт, притиснете ја комбинацијата на копчиња Ctrl+] за да излезете од мониторот.
Горенаведените команди исто така може да се комбинираат по потреба. За прampLe, командата idf.py build flash monitor ќе изврши компилација на код, трепка и ќе го отвори мониторот за сериска порта во низа.
Можете да ја посетите https://bookc3.espressif.com/build-system за да дознаете повеќе за системот за компилација ESP-IDF.
4.4 Вежбање: Составување ПрampПрограма „Трепкање“
4.4.1 ПрampАнализа
Овој дел ќе ја земе програмата Blink како ексample да се анализираат file структура и правила за кодирање на реален проект детално. Програмата Blink го имплементира LED ефектот на трепкање, а проектот се наоѓа во директориумот прamples/get-started/blink, кој содржи извор file, конфигурација files, и неколку скрипти за компилација.
Проектот за паметна светлина воведен во оваа книга се заснова на оваа ексampпрограма. Функциите постепено ќе се додаваат во подоцнежните поглавја за конечно да се заврши.
Изворен код Со цел да се демонстрира целиот процес на развој, програмата Blink е копирана во esp32c3-iot-projects/device firmware/1 blink.
Структурата на директориумот на проектот за трепкање files е прикажано на слика 4.15.
Проектот за трепкање содржи само еден главен директориум, кој е посебна компонента што
Поглавје 4. Поставување развојна средина 53
Слика 4.15. File структура на директориумот на проектот за трепкање
мора да бидат вклучени како што е опишано во делот 4.3.2. Главниот директориум главно се користи за складирање на имплементацијата на функцијата app_main(), која е влезна точка во корисничката програма. Проектот за трепкање не го вклучува директориумот со компоненти, бидејќи овој пр.ampтреба да ги користи само компонентите што доаѓаат со ESP-IDF и не бара дополнителни компоненти. CMakeLists.txt вклучен во проектот за трепкање се користи за водење на процесот на компилација, додека Kconfig.projbuild се користи за додавање ставки за конфигурација за овој ексample програма во menuconfig. Друго непотребно files нема да влијае на компилацијата на кодот, така што тие нема да бидат дискутирани овде. Детален вовед во проектот за трепкање files е како што следува.
1. /*blink.c го вклучува следното заглавие files*/
2. #вклучи
//Заглавие на библиотеката со стандардна C file
3. #include „freertos/freeRTOS.h“ //FreeRTOS главното заглавие file
4. #include „freertos/task.h“
//Заглавие на задачата FreeRTOS file
5. #include „sdkconfig.h“
//Заглавие за конфигурација file генерирана од kconfig
6. #include „driver/gpio.h“
//Заглавие на двигателот на GPIO file
Изворот file blink.c содржи серија заглавија fileшто одговара на функцијата деклара-
ција. ESP-IDF генерално го следи редоследот на вклучување на стандардното заглавие на библиотеката files, FreeR-
TOS заглавие files, заглавие на возачот files, заглавие на друга компонента files, и заглавие на проектот files.
Редоследот по кој заглавие files се вклучени може да влијае на конечниот резултат на компилацијата, па обидете се да го
следете ги стандардните правила. Треба да се забележи дека sdkconfig.h автоматски се генерира
од kconfig и може да се конфигурира само преку командата idf.py menuconfig.
Директна измена на ова заглавие file ќе бидат препишани.
1. /*Можете да изберете GPIO што одговара на ЛЕР во idf.py menuconfig, а резултатот од модификацијата на menuconfig е дека вредноста на CONFIG_BLINK
_GPIO ќе се смени. Можете исто така директно да ја менувате дефиницијата за макро
тука, и сменете го CONFIG_BLINK_GPIO во фиксна вредност.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main (празнина)
4. {
5.
/*Конфигурирајте го IO како стандардна функција на GPIO, овозможете го режимот за повлекување и
6.
оневозможи режими за влез и излез*/
7.
gpio_reset_pin (BLINK_GPIO);
54 ESP32-C3 безжична авантура: сеопфатен водич за IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Поставете го GPIO на излезен режим*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); додека (1) {
/*Печати дневник*/ printf(„Исклучување на LEDn“); /*Исклучете ја LED диодата (излез ниско ниво)*/ gpio_set_level(BLINK_GPIO, 0); /*Одложување (1000 ms)*/ vTaskDelay (1000 / portTICK_PERIOD_MS); printf („Вклучување на LEDn“); /*Вклучи ЛЕР (излез на високо ниво)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay (1000 / portTICK_PERIOD_MS); }
Функцијата app_main() во Blink example програмата служи како влезна точка за корисничките програми. Тоа е едноставна функција без параметри и без повратна вредност. Оваа функција се повикува откако системот ќе ја заврши иницијализацијата, која вклучува задачи како што се иницијализирање на сериската порта за дневник, конфигурирање на едно/дво јадро и конфигурирање на чуварот.
Функцијата app_main() работи во контекст на задачата наречена main. Големината на оџакот и приоритетот на оваа задача може да се прилагодат во конфигурацијата на менито Componentconfig Заеднички ESP поврзана со.
За едноставни задачи како трепкање на ЛЕР, целиот потребен код може да се имплементира директно во функцијата app_main(). Ова обично вклучува иницијализирање на GPIO што одговара на ЛЕР и користење на јамка while(1) за вклучување и исклучување на ЛЕР. Алтернативно, можете да го користите FreeRTOS API за да креирате нова задача што се справува со трепкањето на ЛЕР. Откако новата задача е успешно креирана, можете да излезете од функцијата app_main().
Содржината на main/CMakeLists.txt file, кој го води процесот на компилација за главната компонента, е како што следува:
1. idf_component_register (SRCS „трепка. в“ INCLUDE_DIRS „.“ )
Меѓу нив, main/CMakeLists.txt повикува само една функција на системот за компилација, тоа е idf_component_register. Слично на CMakeLists.txt за повеќето други компоненти, blink.c се додава во SRCS и изворот files додадени во SRCS ќе бидат компајлирани. Во исто време, „.“, што ја претставува патеката каде што се наоѓа CMakeLists.txt, треба да се додаде во INCLUDE_DIRS како директориуми за пребарување за заглавие fileс. Содржината на CMakeLists.txt е како што следува:
1. #Наведете v3.5 како најстара верзија CMake поддржана од тековниот проект 2. #Верзии пониски од v3.5 мора да се надградат пред да продолжи компилацијата 3. cmake_minimum_required(VERSION 3.5) 4. #Вклучете ја стандардната конфигурација CMake на ESP -Систем за компилација на IDF
Поглавје 4. Поставување развојна средина 55
5. вклучи ($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Креирај проект со име „трепкање“ 7. проект(myProject)
Меѓу нив, CMakeLists.txt во root директориумот главно вклучува $ENV{IDF_ PATH}/tools/cmake/project.cmake, што е главната конфигурација на CMake file обезбедени од ESP-IDF. Се користи за кон
Документи / ресурси
![]() |
Еспресиф системи ESP32-C3 безжична авантура [pdf] Упатство за корисникот ESP32-C3 безжична авантура, ESP32-C3, безжична авантура, авантура |