Змест схаваць
2 ESP32-C3 Wireless Adventure
2.1 Поўнае кіраўніцтва па IoT

ESP32-C3 Wireless Adventure

ESP32-C3 Wireless Adventure

Поўнае кіраўніцтва па IoT

Espressif Systems 12 чэрвеня 2023 г

Тэхнічныя характарыстыкі

  • Прадукт: ESP32-C3 Wireless Adventure
  • Вытворца: Espressif Systems
  • Дата: 12 чэрвеня 2023 г

Інструкцыя па ўжыванні прадукту

Падрыхтоўка

Перш чым выкарыстоўваць ESP32-C3 Wireless Adventure, пераканайцеся, што вы
знаёмыя з канцэпцыямі і архітэктурай IoT. Гэта дапаможа
вы разумееце, як прылада ўпісваецца ў вялікую экасістэму IoT
і яго патэнцыйнае прымяненне ў разумных дамах.

Увядзенне і практыка праектаў IoT

У гэтым раздзеле вы даведаецеся аб тыповых праектах IoT,
уключаючы асноўныя модулі для звычайных прылад IoT, асноўныя модулі
кліенцкіх прыкладанняў і агульных воблачных платформаў IoT. Гэта будзе
забяспечыць вам аснову для разумення і стварэння вашага
уласныя праекты IoT.

Практыка: праект Smart Light

У гэтым практычным праекце вы даведаецеся, як стварыць смарт
святло з дапамогай ESP32-C3 Wireless Adventure. Структура праекта,
функцыі, падрыхтоўка абсталявання і працэс распрацоўкі будуць
растлумачыў падрабязна.

Структура праекта

Праект складаецца з некалькіх кампанентаў, у тым ліку
ESP32-C3 Wireless Adventure, святлодыёды, датчыкі і воблака
бэкэнд.

Функцыі праекта

Праект разумнага святла дазваляе кіраваць яркасцю і
колер святлодыёдаў дыстанцыйна праз мабільнае прыкладанне або web
інтэрфейс.

Падрыхтоўка абсталявання

Каб падрыхтавацца да праекта, вам трэба будзе сабраць
неабходныя апаратныя кампаненты, такія як ESP32-C3 Wireless
Прыгодніцкая дошка, святлодыёды, рэзістары і блок харчавання.

Працэс распрацоўкі

Працэс распрацоўкі прадугледжвае наладжванне распрацоўкі
асяроддзя, напісанне кода для кіравання святлодыёдамі, падключэнне да ст
воблачны бэкэнд і тэставанне функцыянальнасці смарт
святло.

Знаёмства з ESP RainMaker

ESP RainMaker - гэта магутная структура для распрацоўкі IoT
прылады. У гэтым раздзеле вы даведаецеся, што такое ESP RainMaker і
як гэта можна рэалізаваць у вашых праектах.

Што такое ESP RainMaker?

ESP RainMaker - гэта воблачная платформа, якая забяспечвае набор
інструменты і сэрвісы для стварэння прылад IoT і кіравання імі.

Укараненне ESP RainMaker

У гэтым раздзеле тлумачацца розныя кампаненты, якія ўдзельнічаюць у
укараненне ESP RainMaker, уключаючы службу прэтэнзіі,
Агент RainMaker, воблачны бэкэнд і кліент RainMaker.

Практыка: ключавыя моманты для распрацоўкі з ESP RainMaker

У гэтым практычным раздзеле вы даведаецеся аб ключавых момантах
ўлічваць пры распрацоўцы з ESP RainMaker. Гэта ўключае ў сябе прыладу
патрабаванне, сінхранізацыя дадзеных і кіраванне карыстальнікамі.

Асаблівасці ESP RainMaker

ESP RainMaker прапануе розныя функцыі для кіравання карыстальнікамі
карыстальнікаў і адміністратараў. Гэтыя асаблівасці дазваляюць лёгка прылада
налада, дыстанцыйнае кіраванне і маніторынг.

Настройка асяроддзя распрацоўкі

У гэтым раздзеле ёсць надview ESP-IDF (Espressif IoT
Development Framework), якая з'яўляецца афіцыйнай рамкай распрацоўкі
для прылад на аснове ESP32. Гэта тлумачыць розныя версіі
ESP-IDF і як наладзіць асяроддзе распрацоўкі.

Распрацоўка абсталявання і драйвераў

Дызайн апаратнага забеспячэння разумных лёгкіх прадуктаў на аснове ESP32-C3

У гэтым раздзеле асноўная ўвага прысвечана распрацоўцы апаратнага забеспячэння разумнага святла
прадукты на базе ESP32-C3 Wireless Adventure. Ён ахоплівае
асаблівасці і склад разумных светлавых вырабаў, а таксама ст
апаратная канструкцыя асноўнай сістэмы ESP32-C3.

Характарыстыкі і склад прадуктаў Smart Light

У гэтым падраздзеле тлумачацца функцыі і кампаненты, якія робяць
да разумных лёгкіх прадуктаў. Тут абмяркоўваюцца розныя функцыянальныя магчымасці
і дызайнерскія меркаванні для стварэння разумных свяцілень.

Дызайн апаратнага забеспячэння асноўнай сістэмы ESP32-C3

Апаратная канструкцыя асноўнай сістэмы ESP32-C3 уключае харчаванне
пастаўка, паслядоўнасць уключэння, скід сістэмы, успышка SPI, крыніца тактавага сігналу,
і РЧ і антэны. Гэты падраздзел забяспечвае
падрабязную інфармацыю па гэтых аспектах.

FAQ

Пытанне: Што такое ESP RainMaker?

A: ESP RainMaker - гэта воблачная платформа, якая прадастаўляе інструменты
і паслугі па стварэнні і кіраванні прыладамі IoT. Гэта спрашчае
працэс распрацоўкі і дазваляе лёгка наладзіць прыладу, дыстанцыйна
кантроль і маніторынг.

Q: Як я магу наладзіць асяроддзе распрацоўкі для
ESP32-C3?

A: Каб наладзіць асяроддзе распрацоўкі для ESP32-C3, вам трэба
для ўстаноўкі ESP-IDF (Espressif IoT Development Framework) і
наладзіць яго ў адпаведнасці з інструкцыямі. ESP-IDF - гэта
афіцыйная структура распрацоўкі прылад на аснове ESP32.

Пытанне: якія асаблівасці ESP RainMaker?

A: ESP RainMaker прапануе розныя функцыі, у тым ліку карыстальніцкія
кіраванне, функцыі канчатковага карыстальніка і функцыі адміністратара. Кіраванне карыстальнікамі
дазваляе лёгка патрабаваць прылады і сінхранізаваць дадзеныя. Канчатковы карыстальнік
функцыі дазваляюць дыстанцыйна кіраваць прыладамі праз мабільнае прыкладанне або
web інтэрфейс. Функцыі адміністратара забяспечваюць інструменты для маніторынгу прылады
і кіравання.

ESP32-C3 Wireless Adventure
Поўнае кіраўніцтва па IoT
Espressif Systems 12 чэрвеня 2023 г

Змест

I Падрыхтоўка

1

1 Уводзіны ў IoT

3

1.1 Архітэктура IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Прыкладанне IoT у разумных дамах. . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Увядзенне і практыка праектаў IoT

9

2.1 Уводзіны ў тыповыя праекты IoT. . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Асноўныя модулі для звычайных прылад IoT. . . . . . . . . . . . . . . . . 9

2.1.2 Базавыя модулі кліенцкіх прыкладанняў. . . . . . . . . . . . . . . . . . . 10

2.1.3 Уводзіны ў агульныя воблачныя платформы IoT. . . . . . . . . . . . . . 11

2.2 Практыка: праект Smart Light. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Структура праекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Функцыі праекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Падрыхтоўка абсталявання. . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Працэс распрацоўкі. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Уводзіны ў ESP RainMaker

19

3.1 Што такое ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Укараненне ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Паслуга прэтэнзій. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 Агент RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Воблачны бэкэнд. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 Кліент RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Практыка: ключавыя моманты для распрацоўкі з ESP RainMaker. . . . . . . . . . . . 25

3.4 Асаблівасці ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Кіраванне карыстальнікамі. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Функцыі канчатковага карыстальніка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Функцыі адміністратара. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Настройка асяроддзя распрацоўкі

31

4.1 ESP-IDF скончанаview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Версіі ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 Рабочы працэс ESP-IDF Git. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Выбар прыдатнай версіі . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Скончанаview каталога SDK ESP-IDF. . . . . . . . . . . . . . . . . . . . 34 4.2 Настройка асяроддзя распрацоўкі ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Настройка асяроддзя распрацоўкі ESP-IDF у Linux. . . . . . . . 38 4.2.2 Настройка асяроддзя распрацоўкі ESP-IDF у Windows. . . . . . 40 4.2.3 Настройка асяроддзя распрацоўкі ESP-IDF на Mac. . . . . . . . . 45 4.2.4 Усталяванне кода VS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Уводзіны ў асяроддзі распрацоўкі іншых вытворцаў . . . . . . . . 46 4.3 Сістэма кампіляцыі ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Асноўныя канцэпцыі сістэмы кампіляцыі . . . . . . . . . . . . . . . . . . 47 4.3.2 Праект File Структура . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Правілы зборкі сістэмы кампіляцыі па змаўчанні . . . . . . . . . . . . . 50 4.3.4 Уводзіны ў скрыпт кампіляцыі . . . . . . . . . . . . . . . . . . 51 4.3.5 Уводзіны ў агульныя каманды . . . . . . . . . . . . . . . . . . . 52 4.4. Практыкаванне: складанне экзampПраграма «Blink». . . . . . . . . . . . . . . . . . 53 4.4.1 Прample Аналіз . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Кампіляцыя праграмы Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Прашыўка праграмы Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Аналіз часопіса паслядоўнага порта праграмы Blink. . . . . . . . . . . . . . 60 4.5 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Распрацоўка абсталявання і драйвераў

65

5 Дызайн апаратнага забеспячэння разумных лёгкіх прадуктаў на аснове ESP32-C3

67

5.1 Асаблівасці і склад прадуктаў 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 ВЧ і антэна. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Штыфты для абвязкі. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 Кантролер GPIO і ШІМ. . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Практыка: стварэнне сістэмы разумнага асвятлення з дапамогай ESP32-C3. . . . . . . . . . . . . 80

5.3.1 Выбар модуляў . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 Канфігурацыя GPIO сігналаў ШІМ. . . . . . . . . . . . . . . . . . . . 82

5.3.3 Спампоўка прашыўкі і інтэрфейс адладкі. . . . . . . . . . . . 82

5.3.4 Рэкамендацыі па праектаванні РЧ. . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Рэкамендацыі па праектаванні крыніцы сілкавання . . . . . . . . . . . . . . . . . . . 86 5.4 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Распрацоўка драйвераў

87

6.1 Працэс распрацоўкі драйвера. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 Перыферыйныя прыкладанні ESP32-C3. . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 Асновы драйвера святлодыёдаў. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Каляровыя прасторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 Святлодыёдны драйвер. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 Зацямненне святлодыёдаў. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 Уводзіны ў ШІМ. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 Распрацоўка драйвера святлодыёднага зацямнення. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Энерганезалежнае сховішча (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 Святлодыёдны ШІМ-кантролер (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 ШІМ-праграмаванне святлодыёдаў. . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Практыка: даданне драйвераў у праект Smart Light. . . . . . . . . . . . . . . . . 103

6.5.1 Драйвер кнопак. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 Драйвер святлодыёднага зацямнення. . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Практыкаванне: разумнае злучэнне Wi-Fi . . . . . . . . . . . . . . . . . . . . . 145
7.5 Практыка: канфігурацыя Wi-Fi у праекце Smart Light. . . . . . . . . . . . . . . 156 7.5.1 Злучэнне Wi-Fi у праекце Smart Light. . . . . . . . . . . . . . . . . 156 7.5.2 Разумная канфігурацыя Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Мясцовы кантроль

159

8.1 Уводзіны ў мясцовы кантроль. . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Прымяненне мясцовага кіравання. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2, Адванtagэс мясцовага кантролю. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Выяўленне кантраляваных прылад праз смартфоны. . . . . . . . . . 161

8.1.4 Перадача дадзеных паміж смартфонамі і прыладамі. . . . . . . . 162

8.2 Распаўсюджаныя лакальныя метады выяўлення. . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Трансляцыя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

8.2.2 Шматадрасная перадача. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2.3 Параўнанне паміж трансляцыяй і групавой перадачай. . . . . . . . . . . . . . 176

8.2.4 Шматадрасны прыкладны пратакол mDNS для лакальнага выяўлення. . . . . . . . 176

8.3 Агульныя пратаколы сувязі для лакальных даных. . . . . . . . . . . . . . . 179

8.3.1 Пратакол кіравання перадачай (TCP) . . . . . . . . . . . . . . . . . . . 179

8.3.2 Пратакол перадачы гіпертэксту (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Карыстальнік DatagПратакол ram (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 Уводзіны ў Datagram Transport Layer Security (DTLS) . . . . . . . 213

8.5 Практыка: лакальнае кіраванне ў праекце Smart Light. . . . . . . . . . . . . . . . . . 217

8.5.1 Стварэнне лакальнага сервера кіравання на аснове Wi-Fi. . . . . . . . . . . . . . . 217

8.5.2 Праверка функцыянальнасці лакальнага кіравання з дапамогай сцэнарыяў. . . . . . . . . . . 221

8.5.3 Стварэнне лакальнага сервера кіравання на аснове Bluetooth. . . . . . . . . . . . 222

8.6 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Воблачны кантроль

225

9.1 Уводзіны ў дыстанцыйнае кіраванне. . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Пратаколы перадачы дадзеных у воблаку . . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 Увядзенне ў MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Прынцыпы MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Фармат паведамлення MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Параўнанне пратаколаў . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Налада брокера MQTT у Linux і Windows. . . . . . . . . . . . 233 9.2.6 Наладжванне кліента MQTT на аснове ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Забеспячэнне бяспекі даных MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Значэнне і функцыі сертыфікатаў . . . . . . . . . . . . . . . . . . . 237 9.3.2 Лакальнае стварэнне сертыфікатаў . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Налада брокера MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Налада кліента MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Практыка: дыстанцыйнае кіраванне праз ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Асновы ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Пратакол сувязі вузла і воблака. . . . . . . . . . . 244 9.4.3 Сувязь паміж кліентам і воблачным бэкэндам . . . . . . . . . . . 249 9.4.4 Ролі карыстальніка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Асноўныя службы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Exampле . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Прыкладанне RainMaker і інтэграцыі іншых вытворцаў. . . . . . . . . . . . . . . 262 9.5 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Распрацоўка прыкладанняў для смартфонаў

269

10.1 Уводзіны ў распрацоўку прыкладанняў для смартфонаў. . . . . . . . . . . . . . . . . . 269

10.1.1 Скончанаview распрацоўкі прыкладанняў для смартфонаў. . . . . . . . . . . . . . . 270

10.1.2 Структура праекта Android. . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 Структура праекта iOS. . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Жыццёвы цыкл дзейнасці Android. . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 Жыццёвы цыкл iOS ViewКантралёр . . . . . . . . . . . . . . . . . . . . . . 273

10.2 Стварэнне новага праекта прыкладання для смартфона. . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Падрыхтоўка да распрацоўкі Android. . . . . . . . . . . . . . . . . . . 275

10.2.2 Стварэнне новага праекта Android. . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 Даданне залежнасцей для MyRainmaker. . . . . . . . . . . . . . . . . 276

10.2.4 Запыт дазволу ў Android. . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Падрыхтоўка да распрацоўкі iOS. . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Стварэнне новага праекта iOS. . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 Даданне залежнасцей для MyRainmaker. . . . . . . . . . . . . . . . . 279

10.2.8 Запыт дазволу ў iOS. . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 Аналіз функцыянальных патрабаванняў праграмы. . . . . . . . . . . . . . . . . . 281

10.3.1 Аналіз функцыянальных патрабаванняў праекта. . . . . . . . . . . . 282

10.3.2 Аналіз патрабаванняў да кіравання карыстальнікамі. . . . . . . . . . . . . . . 282 10.3.3 Аналіз патрабаванняў да забеспячэння прылады і прывязкі. . . . . . . 283 10.3.4 Аналіз патрабаванняў да дыстанцыйнага кіравання. . . . . . . . . . . . . . . . 283 10.3.5 Аналіз патрабаванняў да раскладу. . . . . . . . . . . . . . . . . . . 284 10.3.6 Аналіз патрабаванняў да карыстальніцкага цэнтра . . . . . . . . . . . . . . . . . . 285 10.4 Развіццё кіравання карыстальнікамі . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Уводзіны ў 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 Атрыманне ідэнтыфікатара вузла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Прылады забеспячэння . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Развіццё кіравання прыладамі . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Прывязка прылад да воблачных уліковых запісаў . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Атрыманне спісу прылад . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Атрыманне стану прылады . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Змена стану прылады . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Распрацоўка планавання і карыстальніцкага цэнтра . . . . . . . . . . . . . . . . . . . 313 10.7.1 Рэалізацыя функцыі планавання . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Укараненне карыстальніцкага цэнтра . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Больш воблачных API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11 Абнаўленне прашыўкі і кіраванне версіямі

321

11.1 Абнаўленне прашыўкі . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

11.1.1 Скончанаview столікаў падзелаў. . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Працэс загрузкі прашыўкі. . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Скончанаview механізму OTA. . . . . . . . . . . . . . . . . . . . . 326

11.2 Кіраванне версіямі прашыўкі. . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Маркіроўка прашыўкі. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Адкат і анты-адкат . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Практыкаванне: па эфіры (OTA) Exampле . . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Абнаўленне прашыўкі праз лакальны хост. . . . . . . . . . . . . . . . . 332

11.3.2 Абнаўленне ўбудаванага ПЗ праз ESP RainMaker. . . . . . . . . . . . . . . 335

11.4 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Аптымізацыя і масавае вытворчасць

343

12 Кіраванне энергаспажываннем і аптымізацыя энергаспажывання

345

12.1 Кіраванне харчаваннем ESP32-C3. . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Дынамічнае маштабаванне частоты. . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Канфігурацыя кіравання сілкаваннем. . . . . . . . . . . . . . . . . . . . 348

12.2 Рэжым нізкага энергаспажывання ESP32-C3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Рэжым сну мадэма. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Лёгкі рэжым сну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Рэжым глыбокага сну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Спажыванне току ў розных рэжымах харчавання. . . . . . . . . . . . . 358

12.3 Кіраванне сілкаваннем і адладка з нізкім энергаспажываннем. . . . . . . . . . . . . . . . . 359

12.3.1 Адладка часопіса. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

12.3.2 Адладка GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

12.4 Практыка: Кіраванне сілкаваннем у праекце Smart Light. . . . . . . . . . . . . . . 363

12.4.1 Настройка функцыі кіравання сілкаваннем. . . . . . . . . . . . . . . . . 364

12.4.2 Выкарыстанне блакіровак кіравання харчаваннем. . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Праверка энергаспажывання. . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 пашыраных функцый бяспекі прылады

369

13.1 Скончанаview бяспекі дадзеных прылад 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 Працэс шыфравання Flash. . . . . . . . . . . . . . . . . . . . . . . . . . 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 Прampлес . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Практыка: функцыі бяспекі ў масавай вытворчасці. . . . . . . . . . . . . . . . . . 396 13.5.1 Флэш-шыфраванне і бяспечная загрузка . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Уключэнне шыфравання флэш-памяці і бяспечнай загрузкі з дапамогай пакетных інструментаў флэш-памяці. . 397 13.5.3 Уключэнне флэш-шыфравання і бяспечнай загрузкі ў праекце Smart Light. . . 398 13.6 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Запіс прашыўкі і тэставанне для масавай вытворчасці

399

14.1 Запіс прашыўкі ў масавай вытворчасці. . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Вызначэнне раздзелаў дадзеных . . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Запіс прашыўкі. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Тэставанне масавай вытворчасці. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Практыка: даныя масавай вытворчасці ў праекце Smart Light. . . . . . . . . . . . . 404

14.4 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 ESP Insights: Платформа аддаленага маніторынгу

405

15.1 Уводзіны ў ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 Пачатак працы з ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 Пачатак працы з ESP Insights у праекце esp-insights. . . . . . 409

15.2.2 Запуск Exampу праекце esp-insights. . . . . . . . . . . . . . . 411

15.2.3 Паведамленне інфармацыі Coredump. . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Настройка цікавых журналаў. . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Паведамленне аб прычыне перазагрузкі. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Справаздача аб карыстальніцкіх паказчыках. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Практыка: выкарыстанне ESP Insights у праекце Smart Light. . . . . . . . . . . . . . . 416

15.4 Рэзюмэ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Уводзіны
ESP32-C3 - гэта адна'ядравы мікракантролер SoC Wi-Fi і Bluetooth 5 (LE), заснаваны на архітэктуры RISC-V з адкрытым зыходным кодам. Ён забяспечвае правільны баланс паміж магутнасцю, магчымасцямі ўводу/вываду і бяспекай, прапаноўваючы такім чынам аптымальнае эканамічнае рашэнне для падлучаных прылад. Каб паказаць розныя прыкладанні сямейства ESP32-C3, гэтая кніга ад Espressif правядзе вас у цікавае падарожжа па AIoT, пачынаючы ад асноў распрацоўкі праектаў IoT і наладжвання асяроддзя да практычныхampлес. Першыя чатыры раздзелы распавядаюць пра IoT, ESP RainMaker і ESP-IDF. Раздзелы 5 і 6 апісваюць дызайн апаратнага забеспячэння і распрацоўку драйвераў. Па меры прасоўвання вы даведаецеся, як наладзіць свой праект праз сеткі Wi-Fi і мабільныя праграмы. Нарэшце, вы навучыцеся аптымізаваць свой праект і запусціць яго ў масавую вытворчасць.
Калі вы інжынер у сумежных галінах, архітэктар праграмнага забеспячэння, выкладчык, студэнт або хто-небудзь, хто цікавіцца IoT, гэтая кніга для вас.
Вы можаце спампаваць код example, які выкарыстоўваецца ў гэтай кнізе з сайта Espressif на GitHub. Для атрымання апошняй інфармацыі аб распрацоўцы IoT сачыце за нашым афіцыйным акаўнтам.

Прадмова
Інфарматычны свет
На хвалі Інтэрнэту Інтэрнэт рэчаў (IoT) дэбютаваў і стаў новым тыпам інфраструктуры лічбавай эканомікі. Каб наблізіць тэхналогію да грамадскасці, Espressif Systems імкнецца да таго, што распрацоўшчыкі з усіх слаёў грамадства могуць выкарыстоўваць IoT для вырашэння некаторых з найбольш актуальных праблем нашага часу. Свет «Інтэлектуальнай сеткі ўсяго» - гэта тое, чаго мы чакаем ад будучыні.
Распрацоўка нашых уласных чыпаў з'яўляецца важным кампанентам гэтага бачання. Гэта будзе марафон, які патрабуе пастаянных прарываў праз тэхналагічныя межы. Ад «Game Changer» ESP8266 да серыі ESP32 з інтэграцыяй падключэння Wi-Fi і Bluetoothr (LE), а затым ESP32-S3 з паскарэннем AI, Espressif не спыняе даследаванні і распрацоўку прадуктаў для рашэнняў AIoT. З дапамогай нашага праграмнага забеспячэння з адкрытым зыходным кодам, такога як IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF і Device Connectivity Platform ESP RainMaker, мы стварылі незалежную структуру для стварэння прыкладанняў AIoT.
Па стане на ліпень 2022 года агульны аб'ём паставак чыпсэтаў IoT ад Espressif перавысіў 800 мільёнаў, што з'яўляецца лідэрам на рынку Wi-Fi MCU і забяспечвае харчаванне вялікай колькасці падлучаных прылад па ўсім свеце. Імкненне да дасканаласці робіць кожны прадукт Espressif вялікім поспехам дзякуючы высокаму ўзроўню інтэграцыі і эканамічнай эфектыўнасці. Выпуск ESP32-C3 азначае значную вяху ў развіцці тэхналогіі ўласнай распрацоўкі Espressif. Гэта адна'ядравы, 32-разрадны MCU на базе RISC-V з 400 КБ SRAM, які можа працаваць на частаце 160 МГц. У яго інтэграваны Wi-Fi 2.4 ГГц і Bluetooth 5 (LE) з падтрымкай далёкага радыусу дзеяння. Ён забяспечвае выдатны баланс паміж магутнасцю, магчымасцямі ўводу/вываду і бяспекай, прапаноўваючы такім чынам аптымальнае эканамічнае рашэнне для падлучаных прылад. Заснаваная на такім магутным ESP32-C3, гэтая кніга заклікана дапамагчы чытачам зразумець веды, звязаныя з IoT, з падрабязнымі ілюстрацыямі і практычнымі прыкладаміampлес.
Чаму мы напісалі гэтую кнігу?
Espressif Systems - гэта больш, чым паўправадніковая кампанія. Гэта таксама кампанія-платформа IoT, якая заўсёды імкнецца да прарываў і інавацый у галіне тэхналогій. У той жа час Espressif адкрыла зыходны код і падзялілася з супольнасцю ўласнай распрацаванай аперацыйнай сістэмай і праграмным фрэймворкам, утварыўшы унікальную экасістэму. Інжынеры, вытворцы і энтузіясты тэхналогій актыўна распрацоўваюць новыя праграмы на аснове прадуктаў Espressif, свабодна камунікуюць і дзеляцца вопытам. Вы ўвесь час можаце бачыць захапляльныя ідэі распрацоўшчыкаў на розных платформах, такіх як YouTube і GitHub. Папулярнасць прадуктаў Espressif стымулявала рост колькасці аўтараў, якія выпусцілі больш за 100 кніг на аснове чыпсэтаў Espressif на больш чым дзесяці мовах, уключаючы англійскую, кітайскую, нямецкую, французскую і японскую.

Менавіта падтрымка і давер партнёраў па суполцы заахвочваюць Espressif да бесперапынных інавацый. «Мы імкнемся зрабіць нашы мікрасхемы, аперацыйныя сістэмы, фрэймворкі, рашэнні, воблака, дзелавую практыку, інструменты, дакументацыю, творы, ідэі і г.д. усё больш адпаведнымі адказам, якія патрэбны людзям для найбольш актуальных праблем сучаснага жыцця. Гэта найвышэйшая амбіцыя і маральны компас Espressif». сказаў г-н Тэа Суі Эн, заснавальнік і генеральны дырэктар Espressif.
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 License 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».
Асноўны тэкст у гэтай кнізе будзе надрукаваны ў Статуце, а код exampфайлы, кампаненты, функцыі, зменныя, код file імёны, каталогі кодаў і радкі будуць у Courier New.
Каманды або тэксты, якія павінен увесці карыстальнік, а таксама каманды, якія можна ўвесці, націснуўшы клавішу «Enter», будуць надрукаваны тлустым шрыфтам Courier New. Журналы і кодавыя блокі будуць прадстаўлены ў светла-блакітных скрынках.
Exampль:
Па-другое, выкарыстоўвайце esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py для стварэння двайковага файла раздзела NVS file на хасце распрацоўкі з дапамогай наступнай каманды:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –size NVS PARTITION SIZE

Раздзел 1

Уводзіны

каб

IoT

У канцы 20-га стагоддзя з развіццём камп'ютэрных сетак і камунікацыйных тэхналогій Інтэрнэт хутка ўвайшоў у жыццё людзей. Па меры сталення інтэрнэт-тэхналогій нарадзілася ідэя Інтэрнэту рэчаў (IoT). Літаральна IoT азначае Інтэрнэт, дзе рэчы звязаны. У той час як першапачатковы Інтэрнэт парушае абмежаванні прасторы і часу і звужае адлегласць паміж «чалавекам і чалавекам», IoT робіць «рэчы» важным удзельнікам, збліжаючы «людзей» і «рэчы». У агляднай будучыні IoT павінен стаць рухаючай сілай інфармацыйнай індустрыі.
Такім чынам, што такое Інтэрнэт рэчаў?
Цяжка даць дакладнае вызначэнне Інтэрнэту рэчаў, паколькі яго значэнне і аб'ём пастаянна развіваюцца. У 1995 годзе Біл Гейтс упершыню падняў ідэю IoT у сваёй кнізе «Дарога наперадзе». Прасцей кажучы, IoT дазваляе аб'ектам абменьвацца інфармацыяй адзін з адным праз Інтэрнэт. Яе канчатковай мэтай з'яўляецца стварэнне «Інтэрнэту ўсяго». Гэта ранняя інтэрпрэтацыя IoT, а таксама фантазія тэхналогій будучыні. Трыццаць гадоў праз, з імклівым развіццём эканомікі і тэхналогій, фантазія становіцца рэальнасцю. Ад разумных прылад, разумных дамоў, разумных гарадоў, Інтэрнэту транспартных сродкаў і носных прылад да «метасусвету», які падтрымліваецца тэхналогіямі IoT, пастаянна з'яўляюцца новыя канцэпцыі. У гэтай главе мы пачнем з тлумачэння архітэктуры Інтэрнэту рэчаў, а затым прадставім самае распаўсюджанае прыкладанне IoT, разумны дом, каб дапамагчы вам атрымаць дакладнае разуменне IoT.
1.1 Архітэктура IoT
Інтэрнэт рэчаў уключае мноства тэхналогій, якія маюць розныя патрэбы і формы прымянення ў розных галінах. Каб разабрацца са структурай, ключавымі тэхналогіямі і характарыстыкамі прымянення IoT, неабходна стварыць уніфікаваную архітэктуру і стандартную тэхнічную сістэму. У гэтай кнізе архітэктура IoT проста падзелена на чатыры ўзроўні: узровень успрымання і кіравання, сеткавы ўзровень, узровень платформы і ўзровень прыкладанняў.
Узровень успрымання і кіравання Як самы асноўны элемент архітэктуры IoT, узровень успрымання і кіравання з'яўляецца ядром для рэалізацыі поўнага зандзіравання IoT. Яго асноўная функцыя - збор, ідэнтыфікацыя і кантроль інфармацыі. Ён складаецца з розных прылад са здольнасцю ўспрымання,
3

ідэнтыфікацыі, кантролю і выканання, а таксама адказвае за атрыманне і аналіз дадзеных, такіх як уласцівасці матэрыялу, тэндэнцыі паводзін і стан прылады. Такім чынам IoT можа распазнаваць рэальны фізічны свет. Акрамя таго, пласт таксама можа кантраляваць стан прылады.
Найбольш распаўсюджанымі прыладамі гэтага ўзроўню з'яўляюцца розныя датчыкі, якія гуляюць важную ролю ў зборы інфармацыі і ідэнтыфікацыі. Датчыкі падобныя на органы пачуццяў чалавека, такія як святлоадчувальныя датчыкі, якія адносяцца да зроку, акустычныя датчыкі да слыху, газавыя датчыкі да нюху і датчыкі, адчувальныя да ціску і тэмпературы, да дотыку. З усімі гэтымі «органамі пачуццяў» аб'екты становяцца «жывымі» і здольнымі да разумнага ўспрымання, распазнавання і маніпулявання фізічным светам.
Сеткавы ўзровень Асноўнай функцыяй сеткавага ўзроўню з'яўляецца перадача інфармацыі, у тым ліку даных, атрыманых ад узроўню ўспрымання і кіравання, да вызначанага аб'екта, а таксама каманд, якія выдаюцца з узроўню прыкладання, назад на ўзровень успрымання і кіравання. Ён служыць важным камунікацыйным мостам, які злучае розныя ўзроўні сістэмы IoT. Каб наладзіць базавую мадэль Інтэрнэту рэчаў, неабходна выканаць два этапы інтэграцыі аб'ектаў у сетку: доступ да Інтэрнэту і перадачу праз Інтэрнэт.
Доступ да Інтэрнэту Інтэрнэт дазваляе ўзаемасувязь паміж чалавекам, але не ўключае рэчы ў вялікую сям'ю. Да з'яўлення IoT большасць рэчаў не падключаліся да сеткі. Дзякуючы бесперапыннаму развіццю тэхналогій, IoT удаецца падключаць рэчы да Інтэрнэту, такім чынам рэалізуючы ўзаемасувязь паміж «людзьмі і рэчамі» і «рэчамі і рэчамі». Ёсць два распаўсюджаных спосабу ажыццяўлення падлучэння да Інтэрнэту: доступ да правадной сеткі і доступ да бесправадной сеткі.
Метады доступу да правадной сеткі ўключаюць Ethernet, паслядоўную сувязь (напрыклад, RS-232, RS-485) і USB, у той час як доступ да бесправадной сеткі залежыць ад бесправадной сувязі, якую можна дадаткова падзяліць на бесправадную сувязь малога радыусу дзеяння і бесправадную сувязь далёкага радыусу дзеяння.
Бесправадная сувязь блізкага радыусу дзеяння ўключае ZigBee, Bluetoothr, Wi-Fi, сувязь блізкага поля (NFC) і радыёчастотную ідэнтыфікацыю (RFID). Дальняя бесправадная сувязь уключае пашыраную машынную сувязь (eMTC), LoRa, вузкапалосны Інтэрнэт рэчаў (NB-IoT), 2G, 3G, 4G, 5G і г.д.
Перадача праз Інтэрнэт Розныя спосабы доступу да Інтэрнэту прыводзяць да адпаведнай фізічнай лініі перадачы дадзеных. Наступнае - вырашыць, які пратакол сувязі выкарыстоўваць для перадачы дадзеных. У параўнанні з інтэрнэт-тэрміналамі большасць тэрміналаў IoT зараз мае менш
4 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

даступныя рэсурсы, такія як прадукцыйнасць апрацоўкі, ёмістасць захоўвання, хуткасць сеткі і г.д., таму неабходна выбраць пратакол сувязі, які займае менш рэсурсаў у праграмах IoT. Ёсць два пратаколы сувязі, якія шырока выкарыстоўваюцца сёння: Message Queuing Telemetry Transport (MQTT) і Constrained Application Protocol (CoAP).
Узровень платформы Узровень платформы ў асноўным адносіцца да воблачных платформаў IoT. Калі ўсе тэрміналы IoT аб'яднаны ў сетку, іх даныя павінны быць агрэгаваныя на воблачнай платформе IoT для вылічэння і захавання. Узровень платформы ў асноўным падтрымлівае прыкладанні IoT для палягчэння доступу і кіравання масіўнымі прыладамі. Ён падключае тэрміналы IoT да воблачнай платформы, збірае дадзеныя тэрміналаў і выдае каманды тэрміналам, каб рэалізаваць дыстанцыйнае кіраванне. З'яўляючыся прамежкавай службай для прызначэння абсталявання для галіновых прыкладанняў, узровень платформы выконвае злучальную ролю ва ўсёй архітэктуры IoT, нясучы абстрактную бізнес-логіку і стандартызаваную асноўную мадэль даных, якая можа не толькі рэалізаваць хуткі доступ да прылад, але і забяспечыць магутныя модульныя магчымасці для задавальнення розных патрэбаў у сцэнарах прамысловага прымянення. Узровень платформы ў асноўным уключае ў сябе функцыянальныя модулі, такія як доступ да прылады, кіраванне прыладай, кіраванне бяспекай, перадача паведамленняў, маніторынг працы і тэхнічнае абслугоўванне, а таксама праграмы перадачы дадзеных.
· Доступ да прылады, рэалізацыя сувязі і сувязі паміж тэрміналамі і воблачнымі платформамі IoT.
· Кіраванне прыладай, уключаючы такія функцыі, як стварэнне прылад, абслугоўванне прылад, пераўтварэнне даных, сінхранізацыя даных і распаўсюджванне прылад.
· Кіраванне бяспекай, забеспячэнне бяспекі перадачы дадзеных IoT з пункту гледжання аўтэнтыфікацыі бяспекі і бяспекі сувязі.
· Перадача паведамленняў, уключаючы тры напрамкі перадачы, гэта значыць тэрмінал адпраўляе даныя на воблачную платформу IoT, воблачная платформа IoT адпраўляе даныя на бок сервера або іншыя воблачныя платформы IoT, а бок сервера аддалена кіруе прыладамі IoT.
· Маніторынг эксплуатацыі і абслугоўвання, уключаючы маніторынг і дыягностыку, абнаўленне прашыўкі, адладку ў інтэрнэце, службы часопісаў і г.д.
· Дадзеныя прыкладанні, якія ўключаюць захоўванне, аналіз і прымяненне дадзеных.
Узровень прыкладанняў Узровень прыкладанняў выкарыстоўвае даныя з узроўню платформы для кіравання праграмамі, фільтрацыі і апрацоўкі іх з дапамогай такіх інструментаў, як базы дадзеных і праграмнае забеспячэнне для аналізу. Атрыманыя даныя можна выкарыстоўваць для рэальных прыкладанняў IoT, такіх як разумная ахова здароўя, разумная сельская гаспадарка, разумныя дамы і разумныя гарады.
Вядома, архітэктура IoT можа быць падзелена на некалькі слаёў, але незалежна ад таго, з колькіх слаёў яна складаецца, прынцып, які ляжыць у аснове, застаецца нязменным. Навучанне
Раздзел 1. Уводзіны ў IoT 5

пра архітэктуру IoT дапамагае паглыбіць наша разуменне тэхналогій IoT і будаваць поўнафункцыянальныя праекты IoT.
1.2 Прыкладанне IoT у разумных дамах
IoT пранік ва ўсе сферы жыцця, і найбольш блізкім для нас дадаткам IoT з'яўляецца разумны дом. Многія традыцыйныя прыборы цяпер абсталяваны адной або некалькімі прыладамі IoT, а многія нядаўна пабудаваныя дамы з самага пачатку праектуюцца з выкарыстаннем тэхналогій IoT. На малюнку 1.1 паказаны некаторыя распаўсюджаныя прылады разумнага дома.
Малюнак 1.1. Распаўсюджаныя прылады разумнага дома Распрацоўку разумнага дома можна проста падзяліць на разумныя прадуктыtage, ўзаемасувязь сцэны stagе і разумны сtage, як паказана на малюнку 1.2.
Малюнак 1.2. Развіццё сtage разумнага дома 6 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Першыя сtage аб разумных прадуктах. У адрозненне ад традыцыйных дамоў, у разумных дамах прылады IoT атрымліваюць сігналы з дапамогай датчыкаў і аб'ядноўваюцца ў сетку праз тэхналогіі бесправадной сувязі, такія як Wi-Fi, Bluetooth LE і ZigBee. Карыстальнікі могуць кіраваць разумнымі прадуктамі рознымі спосабамі, такімі як праграмы для смартфонаў, галасавыя памочнікі, разумнае кіраванне дынамікамі і г. д. Другі сtage факусуюць на ўзаемасувязі сцэн. У гэтым сtage, распрацоўшчыкі больш не разглядаюць магчымасць кіравання адным інтэлектуальным прадуктам, а злучэнне двух або больш разумных прадуктаў, аўтаматызацыю да пэўнай ступені і, нарэшце, фарміраванне карыстальніцкага рэжыму сцэны. Напрыкладample, калі карыстальнік націскае любую кнопку сюжэтнага рэжыму, святло, шторы і кандыцыянеры будуць аўтаматычна адаптаваны да папярэдніх налад. Вядома, існуе неабходная ўмова, каб логіка сувязі была лёгка настроена, уключаючы ўмовы запуску і дзеянні выканання. Уявіце, што рэжым нагрэву кандыцыянера спрацоўвае, калі тэмпература ў памяшканні апускаецца ніжэй за 10°C; што ў 7 гадзін раніцы гучыць музыка, каб абудзіць карыстальніка, адчыняюцца разумныя шторы, а рысаварка або тостар запускаюцца праз разумную разетку; калі карыстальнік ўстае і заканчвае мыццё, сняданак ужо падаецца, так што не будзе затрымкі з выхадам на працу. Якім зручным стала наша жыццё! Трэці сtage ідзе да разведкі stagд. Чым больш будзе доступ да разумных хатніх прылад, тым больш будуць і тыпы ствараемых даных. З дапамогай хмарных вылічэнняў, вялікіх аб'ёмаў дадзеных і штучнага інтэлекту ў разумныя дамы ўкаранілі «разумнейшы мозг», які больш не патрабуе частых каманд ад карыстальніка. Яны збіраюць даныя з папярэдніх узаемадзеянняў і вывучаюць мадэлі паводзін і перавагі карыстальнікаў, каб аўтаматызаваць дзеянні, у тым ліку даючы рэкамендацыі для прыняцця рашэнняў. У цяперашні час большасць разумных дамоў знаходзяцца на месцы ўзаемасувязіtagд. Па меры павелічэння ўзроўню пранікнення і разумнасці разумных прадуктаў бар'еры паміж пратаколамі сувязі выдаляюцца. У будучыні разумныя дамы абавязкова стануць сапраўды «разумнымі», як сістэма штучнага інтэлекту Джарвіса ў «Жалезным чалавеку», якая можа не толькі дапамагаць карыстачу кіраваць рознымі прыладамі, спраўляцца з паўсядзённымі справамі, але і валодаць супервылічальнай магутнасцю і здольнасцю мысліць. У інтэлігентных сtagд, людзі будуць атрымліваць лепшыя паслугі як па колькасці, так і па якасці.
Раздзел 1. Уводзіны ў IoT 7

8 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Раздзел Уводзіны і практыка 2 праектаў IoT
У раздзеле 1 мы прадставілі архітэктуру IoT, а таксама ролі і ўзаемасувязі ўзроўню ўспрымання і кантролю, сеткавага ўзроўню, ўзроўню платформы і ўзроўню прыкладанняў, а таксама распрацоўку разумнага дома. Аднак, як і калі мы вучымся маляваць, валодання тэарэтычнымі ведамі далёка не дастаткова. Каб па-сапраўднаму асвоіць тэхналогію, мы павінны «выпацкаць рукі», каб рэалізаваць праекты IoT на практыцы. Акрамя таго, калі праект пераходзіць да серыйнай вытворчасці stage, неабходна ўлічваць дадатковыя фактары, такія як падключэнне да сеткі, канфігурацыя, узаемадзеянне з воблачнай платформай IoT, кіраванне прашыўкай і абнаўленнямі, кіраванне масавай вытворчасцю і канфігурацыя бяспекі. Такім чынам, на што нам трэба звярнуць увагу пры распрацоўцы поўнага праекта IoT? У раздзеле 1 мы згадвалі, што разумны дом з'яўляецца адным з найбольш распаўсюджаных сцэнарыяў прымянення IoT, а разумныя свяцільні - адным з самых простых і практычных прыбораў, якія можна выкарыстоўваць у дамах, гасцініцах, спартыўных залах, бальніцах і г.д. У гэтай кнізе мы возьмем за адпраўную кропку стварэнне праекта разумнага асвятлення, растлумачым яго кампаненты і асаблівасці і дамо рэкамендацыі па распрацоўцы праекта. Мы спадзяемся, што вы зможаце зрабіць высновы з гэтага выпадку, каб стварыць больш прыкладанняў IoT.
2.1 Уводзіны ў тыповыя праекты IoT
З пункту гледжання распрацоўкі асноўныя функцыянальныя модулі праектаў IoT можна класіфікаваць на распрацоўку праграмнага і апаратнага забеспячэння прылад IoT, распрацоўку кліенцкіх прыкладанняў і распрацоўку воблачнай платформы IoT. Важна ўдакладніць асноўныя функцыянальныя модулі, якія будуць апісаны далей у гэтым раздзеле.
2.1.1 Базавыя модулі для звычайных прылад IoT
Распрацоўка праграмнага і апаратнага забеспячэння прылад IoT ўключае наступныя асноўныя модулі: Збор даных
У якасці ніжняга ўзроўню архітэктуры IoT прылады IoT ўзроўню ўспрымання і кіравання падключаюць датчыкі і прылады праз іх чыпы і перыферыйныя прылады для дасягнення збору даных і кіравання працай.
9

Прывязка ўліковага запісу і першапачатковая канфігурацыя Для большасці прылад IoT прывязка ўліковага запісу і першапачатковая канфігурацыя выконваюцца ў адным аперацыйным працэсе, напрыкладample, злучэнне прылад з карыстальнікамі шляхам налады сеткі Wi-Fi.
Узаемадзеянне з воблачнымі платформамі IoT Для маніторынгу і кіравання прыладамі IoT таксама неабходна падключыць іх да воблачных платформаў IoT, каб даваць каманды і паведамляць аб стане праз узаемадзеянне паміж сабой.
Кантроль прылад Пры падключэнні да воблачных платформаў IoT прылады могуць мець зносіны з воблакам і рэгістравацца, прывязвацца або кантралявацца. Карыстальнікі могуць запытваць стан прадукту і выконваць іншыя аперацыі ў дадатку для смартфона праз воблачныя платформы IoT або лакальныя пратаколы сувязі.
Абнаўленне прашыўкі Прылады IoT таксама могуць абнавіць прашыўку ў залежнасці ад патрэб вытворцаў. Пры атрыманні каманд, адпраўленых з воблака, будзе рэалізавана абнаўленне прашыўкі і кіраванне версіямі. З дапамогай гэтай функцыі абнаўлення прашыўкі вы можаце пастаянна паляпшаць функцыі прылад IoT, выпраўляць дэфекты і паляпшаць карыстацкі досвед.
2.1.2 Базавыя модулі кліенцкіх прыкладанняў
Кліенцкія праграмы (напрыклад, праграмы для смартфонаў) у асноўным уключаюць наступныя асноўныя модулі:
Сістэма ўліковых запісаў і аўтарызацыя. Яна падтрымлівае аўтарызацыю ўліковых запісаў і прылад.
Кіраванне прыладай Праграмы для смартфонаў звычайна абсталяваны функцыямі кіравання. Карыстальнікі могуць лёгка падключацца да прылад IoT і кіраваць імі ў любы час і ў любым месцы праз праграмы для смартфонаў. У рэальным разумным доме прылады ў асноўным кіруюцца праз прыкладанні для смартфонаў, што дазваляе не толькі разумна кіраваць прыладамі, але і эканоміць выдаткі на працоўную сілу. Такім чынам, кіраванне прыладай з'яўляецца абавязковым для кліенцкіх прыкладанняў, такіх як кіраванне атрыбутамі функцый прылады, кіраванне сцэнай, планаванне, дыстанцыйнае кіраванне, прывязка прылад і г.д. Карыстальнікі разумнага дома таксама могуць наладжваць сцэны ў адпаведнасці з асабістымі патрэбамі, кіруючы асвятленнем, бытавой тэхнікай, уваходам і г.д., каб зрабіць хатняе жыццё больш камфортным і зручным. Яны могуць задаць час уключэння кандыцыянера, выключыць яго дыстанцыйна, аўтаматычна ўключыць святло ў калідоры, калі дзверы адмыкаюцца, або пераключыцца ў рэжым «тэатр» адной кнопкай.
Кліентскія прыкладанні для апавяшчэнняў абнаўляюць статус прылад IoT у рэжыме рэальнага часу і адпраўляюць абвесткі, калі прылады выходзяць з ладу.
10 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Пасляпродажнае абслугоўванне кліентаў Прыкладанні для смартфонаў могуць забяспечваць пасляпродажнае абслугоўванне прадуктаў, каб своечасова вырашаць праблемы, звязаныя са збоямі прылад IoT і тэхнічнымі аперацыямі.
Рэкамендаваныя функцыі Каб задаволіць патрэбы розных карыстальнікаў, могуць быць дададзены іншыя функцыі, такія як трэсці, NFC, GPS і г.д. GPS можа дапамагчы ўсталяваць дакладнасць аперацый сцэны ў адпаведнасці з месцазнаходжаннем і адлегласцю, а функцыя трэсці дазваляе карыстальнікам усталёўваць каманды, якія трэба выканаць для пэўнай прылады або сцэны шляхам устрэсвання.
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 могуць ствараць пастаянную віртуальную версію (цень прылады) для кожнай прылады, а стан цені прылады можна сінхранізаваць і атрымліваць прылажэннем для смартфона або іншымі прыладамі праз пратаколы перадачы Інтэрнэту. Device shadow захоўвае апошнюю інфармацыю пра стан і чаканы стан кожнай прылады, і нават калі прылада знаходзіцца ў аўтаномным рэжыме, яна можа атрымаць статус, выклікаючы API. Device shadow забяспечвае пастаянна ўключаныя API, што палягчае стварэнне праграм для смартфонаў, якія ўзаемадзейнічаюць з прыладамі.
Эксплуатацыя і тэхнічнае абслугоўванне Функцыя O&M ўключае тры аспекты: · Дэманстрацыя статыстычнай інфармацыі аб прыладах IoT і апавяшчэннях. · Кіраванне часопісам дазваляе атрымліваць інфармацыю пра паводзіны прылады, паток паведамленняў уверх/уніз і змест паведамлення. · Адладка прылады падтрымлівае дастаўку каманд, абнаўленне канфігурацыі і праверку ўзаемадзеяння паміж воблачнымі платформамі IoT і паведамленнямі прылады.
2.2 Практыка: праект Smart Light
Пасля тэарэтычнага ўвядзення ў кожным раздзеле вы знойдзеце практычны раздзел, звязаны з праектам Smart Light, які дапаможа вам атрымаць практычны вопыт. Праект заснаваны на чыпе ESP32-C3 ад Espressif і воблачнай платформе ESP RainMaker IoT і ахоплівае апаратнае забеспячэнне бесправаднога модуля ў разумных асвятляльных прадуктах, убудаванае праграмнае забеспячэнне для разумных прылад на аснове ESP32C3, праграмы для смартфонаў і ўзаемадзеянне з ESP RainMaker.
Зыходны код Для лепшага навучання і распрацоўкі праект у гэтай кнізе быў з адкрытым зыходным кодам. Вы можаце спампаваць зыходны код з нашага рэпазітара GitHub па адрасе https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

2.2.1 Структура праекта
Праект Smart Light складаецца з трох частак: i. Разумныя светлавыя прылады на базе ESP32-C3, якія адказваюць за ўзаемадзеянне з воблачнымі платформамі IoT і кіруюць пераключальнікам, яркасцю і каляровай тэмпературай святлодыёда lamp бісерам. ii. Праграмы для смартфонаў (у тым ліку праграмы для планшэтаў, якія працуюць на Android і iOS), якія адказваюць за канфігурацыю сеткі разумных светлавых прадуктаў, а таксама запыты і кантроль іх стану.
iii. Воблачная платформа IoT на базе ESP RainMaker. Для спрашчэння ў гэтай кнізе мы разглядаем воблачную платформу IoT і бізнес-сервер у цэлым. Падрабязнасці аб ESP RainMaker будуць прадстаўлены ў раздзеле 3.
Адпаведнасць паміж структурай праекта Smart Light і архітэктурай IoT паказана на малюнку 2.1.
Малюнак 2.1. Структура праекта разумнага святла
2.2.2 Функцыі праекта
Падзеленыя ў залежнасці ад структуры, функцыі кожнай часткі заключаюцца ў наступным. Разумныя светлавыя прылады
· Канфігурацыя сеткі і падключэнне. · Святлодыёдны ШІМ-кантроль, напрыклад, перамыкач, яркасць, каляровая тэмпература і г.д. · Аўтаматызацыя або кіраванне сцэнай, напрыклад, таймер. · Шыфраванне і бяспечная загрузка Flash. · Абнаўленне прашыўкі і кіраванне версіямі.
Глава 2. Уводзіны і практыка праектаў IoT 13

Праграмы для смартфонаў · Канфігурацыя сеткі і прывязка прылады. · Інтэлектуальнае кіраванне святлом, напрыклад, пераключальнік, яркасць, каляровая тэмпература і г.д. · Аўтаматызацыя або налады сцэны, напрыклад, таймер. · Мясцовае/дыстанцыйнае кіраванне. · Рэгістрацыя карыстальніка, лагін і г.д.
Воблачная платформа ESP RainMaker IoT · Уключэнне доступу да прылады IoT. · Прадастаўленне API працы прылады, даступных для прыкладанняў для смартфонаў. · Абнаўленне прашыўкі і кіраванне версіямі.
2.2.3 Падрыхтоўка абсталявання
Калі вы хочаце рэалізаваць праект на практыцы, вам таксама спатрэбіцца наступнае абсталяванне: разумныя свяцільні, смартфоны, маршрутызатары Wi-Fi і камп'ютар, які адпавядае патрабаванням усталявання асяроддзя распрацоўкі. Разумныя ліхтары
Разумныя свяцільні - гэта новы тып лямпачак, форма якіх такая ж, як і звычайныя лямпы напальвання. Разумны свяцільня складаецца з кандэнсатарнага паніжальнага рэгуляванага блока харчавання, бесправаднога модуля (з убудаваным ESP32-C3), святлодыёднага кантролера і святлодыёднай матрыцы RGB. Пры падключэнні да сілкавання 15 В пастаяннага току абtagВыхад пасля паніжэння кандэнсатара, выпрамлення дыёдаў і рэгулявання забяспечвае энергію святлодыёдным кантролерам і святлодыёднай матрыцай. Святлодыёдны кантролер можа аўтаматычна адпраўляць высокія і нізкія ўзроўні праз пэўныя прамежкі часу, пераключаючы святлодыёдную матрыцу RGB паміж закрытай (святло ўключана) і адкрытай (святло выключана), так што яна можа выпраменьваць блакітны, жоўты, зялёны, фіялетавы, сіні, чырвоны і белы свет. Бесправадны модуль адказвае за падключэнне да маршрутызатара Wi-Fi, атрыманне і паведамленне аб стане разумных свяцілень, а таксама адпраўку каманд для кіравання святлодыёдам.
Малюнак 2.2. Імітацыя разумнага святла
У пачатку развіцця сtage, вы можаце імітаваць разумнае святло, выкарыстоўваючы плату ESP32-C3DevKitM-1, злучаную са святлодыёдам RGB lamp пацерак (гл. малюнак 2.2). Але вы павінны
14 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

звярніце ўвагу, што гэта не адзіны спосаб сабраць разумнае святло. Дызайн апаратнага забеспячэння праекта ў гэтай кнізе змяшчае толькі бесправадны модуль (з убудаваным ESP32-C3), але не поўную канструкцыю апаратнага забеспячэння разумнага святла. Акрамя таго, Espressif таксама вырабляе плату распрацоўкі гуку ESP32C3-Lyra на аснове ESP32-C3 для кіравання святлом з дапамогай гуку. Плата мае інтэрфейсы для мікрафонаў і дынамікаў і можа кіраваць святлодыёднымі стужкамі. Ён можа быць выкарыстаны для распрацоўкі звыштанных, высокапрадукцыйных аўдыёвяшчальнікаў і рытмічных светлавых палос. На малюнку 2.3 паказана плата ESP32-C3Lyra, звязаная з паласой з 40 святлодыёдных лямпаў.
Малюнак 2.3. ESP32-C3-Lyra злучаны з паласой з 40 святлодыёдных ліхтароў
Смартфоны (Android/iOS) Праект Smart Light прадугледжвае распрацоўку прыкладання для смартфона для наладжвання і кіравання разумнымі асвятляльнымі прадуктамі.
Маршрутызатары Wi-Fi Маршрутызатары Wi-Fi пераўтвараюць сігналы правадной сеткі і сігналы мабільнай сеткі ў сігналы бесправадной сеткі для падлучэння кампутараў, смартфонаў, планшэтаў і іншых бесправадных прылад да сеткі. Напрыкладample, шырокапалосная сувязь у доме павінна быць толькі падключана да маршрутызатара Wi-Fi, каб дасягнуць бесправадной сеткі прылад Wi-Fi. Асноўным стандартам пратаколу, які падтрымліваецца маршрутызатарамі Wi-Fi, з'яўляецца IEEE 802.11n з сярэдняй хуткасцю TxRate 300 Мбіт/с або максімум 600 Мбіт/с. Яны зваротна сумяшчальныя з IEEE 802.11b і IEEE 802.11g. Чып ESP32-C3 ад Espressif падтрымлівае IEEE 802.11b/g/n, таму вы можаце выбраць аднадыяпазонны (2.4 ГГц) або двухдыяпазонны (2.4 ГГц і 5 ГГц) маршрутызатар Wi-Fi.
Камп'ютар (Linux/macOS/Windows) Асяроддзе распрацоўкі будзе прадстаўлена ў главе 4. Глава 2. Уводзіны і практыка праектаў IoT 15

2.2.4 Працэс распрацоўкі
Малюнак 2.4. Этапы развіцця праекта Smart Light
Дызайн апаратнага забеспячэння Дызайн апаратнага забеспячэння прылад IoT вельмі важны для праекта IoT. Поўны праект разумнага святла прызначаны для вытворчасці іншamp працуе ад электрасеткі. Розныя вытворцы выпускаюць лamps розных стыляў і тыпаў драйвераў, але іх бесправадныя модулі звычайна выконваюць аднолькавую функцыю. Каб спрасціць працэс распрацоўкі праекта Smart Ligh, гэтая кніга ахоплівае толькі праектаванне апаратнага забеспячэння і распрацоўку праграмнага забеспячэння бесправадных модуляў.
Канфігурацыя воблачнай платформы IoT Каб выкарыстоўваць воблачныя платформы IoT, вам неабходна наладзіць праекты на бэкендзе, напрыклад, ствараць прадукты, ствараць прылады, наладжваць уласцівасці прылад і г.д.
Распрацоўка ўбудаванага праграмнага забеспячэння для прылад IoT Рэалізацыя чаканых функцый з дапамогай ESP-IDF, SDK ад Espressif на баку прылады, у тым ліку падключэнне да воблачных платформаў IoT, распрацоўка святлодыёдных драйвераў і абнаўленне прашыўкі.
Распрацоўка прыкладанняў для смартфонаў Распрацоўвайце прыкладанні для смартфонаў для сістэм Android і iOS для рэалізацыі рэгістрацыі карыстальнікаў і ўваходу ў сістэму, кіравання прыладай і іншых функцый.
Аптымізацыя прылад IoT Пасля завяршэння базавай распрацоўкі функцый прылад IoT вы можаце перайсці да задач аптымізацыі, такіх як аптымізацыя магутнасці.
Выпрабаванне масавай вытворчасці Правядзіце выпрабаванні масавай вытворчасці ў адпаведнасці са стандартамі, такімі як праверка функцыянальнасці абсталявання, праверка старэння, ВЧ-тэст і г.д.
Нягледзячы на ​​крокі, пералічаныя вышэй, праект Smart Light неабавязкова падлягае такой працэдуры, паколькі розныя задачы таксама могуць выконвацца адначасова. Напрыкладample, убудаванае праграмнае забеспячэнне і прыкладанні для смартфонаў могуць распрацоўвацца паралельна. Таксама можа спатрэбіцца паўтарэнне некаторых этапаў, такіх як аптымізацыя прылады IoT і тэставанне масавай вытворчасці.
16 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

2.3 Рэзюмэ
У гэтай главе мы спачатку растлумачылі асноўныя кампаненты і функцыянальныя модулі праекта IoT, а затым прадставілі корпус Smart Light для практыкі, спасылаючыся на яго структуру, функцыі, падрыхтоўку абсталявання і працэс распрацоўкі. Чытачы могуць зрабіць высновы з практыкі і быць упэўненымі ў рэалізацыі IoT-праектаў з мінімальнымі памылкамі ў будучыні.
Глава 2. Уводзіны і практыка праектаў IoT 17

18 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Раздзел 3

Уводзіны

каб

ESP

RainMaker

Інтэрнэт рэчаў (IoT) прапануе бязмежныя магчымасці змяніць лад жыцця людзей, але развіццё інжынерыі IoT поўна праблем. З публічнымі воблакамі вытворцы тэрміналаў могуць рэалізаваць функцыянальнасць прадукту з дапамогай наступных рашэнняў:
На аснове воблачных платформаў пастаўшчыкоў рашэнняў Такім чынам, вытворцам тэрміналаў трэба толькі распрацаваць апаратнае забеспячэнне прадукту, затым падключыць абсталяванне да воблака з дапамогай прадастаўленага модуля сувязі і наладзіць функцыі прадукту ў адпаведнасці з інструкцыямі. Гэта эфектыўны падыход, паколькі ён пазбаўляе ад неабходнасці распрацоўкі, эксплуатацыі і абслугоўвання (O&M) на баку сервера і прыкладання. Гэта дазваляе вытворцам тэрміналаў засяродзіцца на распрацоўцы апаратнага забеспячэння без неабходнасці разглядаць рэалізацыю воблака. Аднак такія рашэнні (напрыклад, прашыўка прылады і дадатак) звычайна не з'яўляюцца адкрытымі, таму функцыі прадукту будуць абмежаваныя воблачнай платформай пастаўшчыка, якую нельга наладзіць. Між тым, даныя карыстальнікаў і прылад таксама належаць воблачнай платформе.
На аснове воблачных прадуктаў. У гэтым рашэнні пасля завяршэння распрацоўкі апаратнага забеспячэння вытворцам тэрміналаў неабходна не толькі рэалізаваць воблачныя функцыі з выкарыстаннем аднаго або некалькіх воблачных прадуктаў, якія прадстаўляюцца публічным воблакам, але таксама неабходна звязаць апаратнае забеспячэнне з воблакам. Напрыкладample, каб падключыцца да Amazon Web Паслугі (AWS), вытворцы тэрміналаў павінны выкарыстоўваць такія прадукты AWS, як Amazon API Gateway, AWS IoT Core і AWS Lambda, каб забяспечыць доступ да прылады, дыстанцыйнае кіраванне, захоўванне даных, кіраванне карыстальнікамі і іншыя асноўныя функцыі. Ён не толькі патрабуе ад вытворцаў тэрміналаў гнутка выкарыстоўваць і наладжваць воблачныя прадукты з глыбокім разуменнем і багатым вопытам, але таксама патрабуе ад іх улічваць кошт будаўніцтва і абслугоўвання для пачатковых і наступных сtages Гэта стварае вялікія праблемы для энергіі і рэсурсаў кампаніі.
У параўнанні з публічнымі воблакамі прыватныя воблакі звычайна ствараюцца для канкрэтных праектаў і прадуктаў. Распрацоўшчыкам прыватных воблакаў даецца найвышэйшы ўзровень свабоды ў распрацоўцы пратаколаў і рэалізацыі бізнес-логікі. Вытворцы тэрміналаў могуць ствараць прадукты і схемы дызайну па жаданні, а таксама лёгка інтэграваць і пашыраць магчымасці карыстальніцкіх даных. Спалучэнне высокай бяспекі, маштабаванасці і надзейнасці публічнага воблака з перавагаміtages прыватнага воблака, Espressif запусціў ESP
19

RainMaker, глыбока інтэграванае прыватнае воблачнае рашэнне, заснаванае на воблаку Amazon. Карыстальнікі могуць разгортваць ESP RainMaker і ствараць прыватнае воблака проста з дапамогай уліковага запісу AWS.
3.1 Што такое ESP RainMaker?
ESP RainMaker - гэта поўная платформа AIoT, пабудаваная з мноствам сталых прадуктаў AWS. Ён прадастаўляе розныя паслугі, неабходныя для масавай вытворчасці, такія як доступ да воблака прылад, абнаўленне прылад, кіраванне бэкэндам, уваход трэціх асоб, галасавая інтэграцыя і кіраванне карыстальнікамі. Выкарыстоўваючы бессервернае сховішча прыкладанняў (SAR), прадастаўленае AWS, вытворцы тэрміналаў могуць хутка разгарнуць ESP RainMaker у сваіх уліковых запісах AWS, які з'яўляецца эфектыўным па часе і простым у выкарыстанні. Каэфіцыент SAR, які выкарыстоўваецца ESP RainMaker, які кіруецца і падтрымліваецца Espressif, дапамагае распрацоўшчыкам знізіць выдаткі на абслугоўванне воблака і паскорыць распрацоўку прадуктаў AIoT, ствараючы такім чынам бяспечныя, стабільныя і наладжвальныя рашэнні AIoT. Малюнак 3.1 паказвае архітэктуру ESP RainMaker.
Малюнак 3.1. Архітэктура ESP RainMaker
Публічны сервер ESP RainMaker ад Espressif бясплатны для ўсіх энтузіястаў, вытворцаў і выкладчыкаў ESP для ацэнкі рашэнняў. Распрацоўшчыкі могуць увайсці з уліковымі запісамі Apple, Google або GitHub і хутка стварыць свае ўласныя прататыпы прыкладанняў IoT. Публічны сервер аб'ядноўвае Alexa і Google Home і забяспечвае паслугі галасавога кіравання, якія падтрымліваюцца Alexa Skill і Google Actions. Яго функцыя семантычнага распазнання таксама забяспечваецца трэцімі асобамі. Прылады RainMaker IoT рэагуюць толькі на пэўныя дзеянні. Каб атрымаць поўны спіс падтрымоўваных галасавых каманд, праверце староннія платформы. Акрамя таго, Espressif прапануе агульнадаступнае прыкладанне RainMaker для кіравання прадуктамі праз смартфоны. 20 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

3.2 Укараненне ESP RainMaker
Як паказана на малюнку 3.2, ESP RainMaker складаецца з чатырох частак: · Паслуга патрабаванняў, якая дазваляе прыладам RainMaker дынамічна атрымліваць сертыфікаты. · RainMaker Cloud (таксама вядомы як воблачны бэкэнд), які забяспечвае такія паслугі, як фільтраванне паведамленняў, кіраванне карыстальнікамі, захоўванне даных і інтэграцыя іншых вытворцаў. · RainMaker Agent, які дазваляе прыладам RainMaker падключацца да RainMaker Cloud. · Кліент RainMaker (прыкладанне RainMaker або скрыпты CLI) для забеспячэння, стварэння карыстальнікаў, асацыяцыі прылад і кантролю і г.д.
Малюнак 3.2. Структура ESP RainMaker
ESP RainMaker забяспечвае поўны набор інструментаў для распрацоўкі прадукту і масавай вытворчасці, уключаючы: RainMaker SDK
RainMaker SDK заснаваны на ESP-IDF і забяспечвае зыходны код агента на баку прылады і звязаных API C для распрацоўкі прашыўкі. Распрацоўшчыкам трэба толькі напісаць логіку прыкладання, а ўсё астатняе пакінуць фрэймворку RainMaker. Для атрымання дадатковай інфармацыі аб C API, калі ласка, наведайце https://bookc3.espressif.com/rm/c-api-reference. Прыкладанне RainMaker Публічная версія прыкладання RainMaker дазваляе распрацоўшчыкам завяршыць падрыхтоўку прылад, а таксама кантраляваць і запытваць стан прылад (напрыклад, разумных асвятляльных прылад). Ён даступны ў крамах прыкладанняў для iOS і Android. Для атрымання больш падрабязнай інфармацыі, калі ласка, звярніцеся да раздзела 10. API REST API REST дапамагаюць карыстальнікам ствараць уласныя прыкладанні, падобныя да прыкладання RainMaker. Для атрымання дадатковай інфармацыі, калі ласка, наведайце https://swaggerapis.rainmaker.espressif.com/.
Раздзел 3. Уводзіны ў ESP RainMaker 21

API Python CLI на аснове Python, які пастаўляецца з RainMaker SDK, забяспечваецца для рэалізацыі ўсіх функцый, падобных да функцый смартфона. Для атрымання дадатковай інфармацыі аб Python API, калі ласка, наведайце https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Адмін CLI з больш высокім узроўнем доступу прадастаўляецца для прыватнага разгортвання ESP RainMaker для масавай генерацыі сертыфікатаў прылад.
3.2.1 Паслуга прэтэнзій
Уся сувязь паміж прыладамі RainMaker і воблачным бэкэндам ажыццяўляецца праз MQTT+TLS. У кантэксце ESP RainMaker «Падача прэтэнзій» - гэта працэс, падчас якога прылады атрымліваюць сертыфікаты ад Службы прэтэнзій для падлучэння да воблачнага серверу. Звярніце ўвагу, што паслуга Claiming Service прымяняецца толькі да агульнадаступнай службы RainMaker, у той час як для прыватнага разгортвання сертыфікаты прылад трэба генераваць масава праз Admin CLI. ESP RainMaker падтрымлівае тры тыпы абслугоўвання прэтэнзій: самастойная заяўка
Сама прылада атрымлівае сертыфікаты праз сакрэтны ключ, загадзя запраграмаваны ў eFuse пасля падлучэння да Інтэрнэту. Заявы, кіраваныя хостам Сертыфікаты атрыманы ад хоста распрацоўкі з уліковым запісам RainMaker. Дапамога ў патрабаванні Сертыфікаты атрымліваюцца з дапамогай прыкладанняў для смартфонаў падчас забеспячэння.
3.2.2 Агент RainMaker
Малюнак 3.3. Структура RainMaker SDK. Асноўная функцыя RainMaker Agent заключаецца ў забеспячэнні падключэння і дапамозе прыкладнога ўзроўню ў апрацоўцы воблачных даных уверх/уніз. Ён створаны праз RainMaker SDK 22 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

і распрацаваны на аснове праверанай структуры ESP-IDF з выкарыстаннем такіх кампанентаў ESP-IDF, як RTOS, NVS і MQTT. Малюнак 3.3 паказвае структуру RainMaker SDK.
RainMaker SDK ўключае дзве асноўныя функцыі.
Злучэнне
я. Супрацоўніцтва з Claiming Service для атрымання сертыфікатаў прылад.
ii. Падключэнне да воблачнага бэкэнда з выкарыстаннем бяспечнага пратаколу MQTT для забеспячэння дыстанцыйнага злучэння і рэалізацыі дыстанцыйнага кіравання, справаздач аб паведамленнях, кіравання карыстальнікамі, кіравання прыладамі і г.д. Ён выкарыстоўвае кампанент MQTT у ESP-IDF па змаўчанні і забяспечвае ўзровень абстракцыі для ўзаемадзеяння з іншымі стэкі пратаколаў.
iii. Прадастаўленне кампанента забеспячэння Wi-Fi для злучэння і забеспячэння Wi-Fi, кампанента esp https ota для абнаўлення OTA і кампанента esp local ctrl для лакальнага выяўлення прылад і падключэння. Усе гэтыя мэты могуць быць дасягнуты з дапамогай простай канфігурацыі.
Апрацоўка дадзеных
я. Захоўванне сертыфікатаў прылад, выдадзеных Claiming Service, і даных, неабходных пры запуску RainMaker, па змаўчанні з выкарыстаннем інтэрфейсу, які прадстаўляецца кампанентам nvs flash, і прадастаўленне API для распрацоўшчыкаў для непасрэднага выкарыстання.
ii. Выкарыстанне механізму зваротнага выкліку для апрацоўкі воблачных даных па ўзыходзячай і сыходнай лініі сувязі і аўтаматычнае разблакіраванне даных на прыкладным узроўні для зручнай апрацоўкі распрацоўшчыкамі. НапрыкладampLe, RainMaker SDK забяспечвае шырокія інтэрфейсы для стварэння даных TSL (Thing Specification Language), неабходных для вызначэння мадэляў TSL для апісання прылад IoT і рэалізацыі такіх функцый, як час, зваротны адлік і галасавое кіраванне. Для асноўных інтэрактыўных функцый, такіх як час, RainMaker SDK забяспечвае рашэнне без распрацоўкі, якое можна проста ўключыць пры неабходнасці. Затым агент RainMaker непасрэдна апрацоўвае даныя, адпраўляе іх у воблака праз адпаведную тэму MQTT і перадае назад змены даных у воблачным серверы праз механізм зваротнага выкліку.
3.2.3 Воблачны бэкэнд
Воблачны бэкэнд пабудаваны на аснове AWS Serverless Computing і дасягаецца з дапамогай AWS Cognito (сістэма кіравання ідэнтыфікацыяй), Amazon API Gateway, AWS Lambda (бессерверная вылічальная служба), Amazon DynamoDB (база дадзеных NoSQL), AWS IoT Core (ядро доступу да IoT, якое забяспечвае доступ MQTT і фільтраванне правілаў), Amazon Simple Email Service (просты паштовы сэрвіс SES), Amazon CloudFront (сетка хуткай дастаўкі), Amazon Simple Queue Service (чарга паведамленняў SQS) і Amazon S3 (сэрвіс захоўвання дадзеных). Ён накіраваны на аптымізацыю маштабаванасці і бяспекі. З ESP RainMaker распрацоўшчыкі могуць кіраваць прыладамі без неабходнасці пісаць код у воблаку. Паведамленні, якія паведамляюць прылады, празрыста перадаюцца на
Раздзел 3. Уводзіны ў ESP RainMaker 23

кліентаў прыкладанняў або іншых службаў трэціх асоб. Табліца 3.1 паказвае воблачныя прадукты і функцыі AWS, якія выкарыстоўваюцца ў воблачным бэкэнде, з іншымі прадуктамі і функцыямі ў стадыі распрацоўкі.
Табліца 3.1. Воблачныя прадукты і функцыі AWS, якія выкарыстоўваюцца воблачным бэкэндам

Воблачны прадукт AWS, які выкарыстоўваецца RainMaker

Функцыя

AWS Cognito

Кіраванне ўліковымі данымі карыстальнікаў і падтрымка старонніх уваходаў

AWS Lambda

Рэалізацыя асноўнай бізнес-логікі воблачнага серверу

Amazon Timestream Захоўванне дадзеных часовых шэрагаў

Amazon DynamoDB Захоўванне асабістай інфармацыі кліентаў

Ядро AWS IoT

Падтрымка сувязі 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 прылады.
Напрыкладample, калі разумны свяцільня створаны на базе RainMaker SDK, напрampфайлы, значок і карыстацкі інтэрфейс лямпачкі будуць загружаны аўтаматычна пасля завяршэння падрыхтоўкі. Карыстальнікі могуць змяняць колер і яркасць святла праз інтэрфейс і атрымліваць кантроль ад іншых вытворцаў, звязваючы Alexa Smart Home Skill або Google Smart Home Actions са сваімі ўліковымі запісамі ESP RainMaker. Малюнак 3.4 паказвае значок і карыстальніцкі інтэрфейс напрampлямпачак адпаведна ў Alexa, Google Home і ESP RainMaker App.

24 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

(а) Напрыкладample – Alexa

(б) Напрыкладample – Галоўная старонка Google

(c) Напрыкладample – ESP RainMaker
Малюнак 3.4. Выпampфайлы значка і інтэрфейсу лямпачкі ў Alexa, Google Home і ESP RainMaker App
3.3 Практыка: ключавыя моманты для распрацоўкі з ESP RainMaker
Пасля таго, як узровень драйвера прылады будзе завершаны, распрацоўшчыкі могуць пачаць ствараць мадэлі TSL і апрацоўваць даныя па сыходнай лініі сувязі з дапамогай API, прадстаўленых RainMaker SDK, і ўключаць асноўныя сэрвісы ESP RainMaker на аснове вызначэння прадукту і патрабаванняў.
Раздзел 3. Уводзіны ў ESP RainMaker 25

Раздзел 9.4 гэтай кнігі тлумачыць укараненне святлодыёднага разумнага святла ў RainMaker. Падчас адладкі распрацоўшчыкі могуць выкарыстоўваць інструменты CLI у RainMaker SDK для сувязі з разумным святлом (або выклікаць REST API ад Swagger).
У главе 10 будзе падрабязна апісана выкарыстанне REST API пры распрацоўцы прыкладанняў для смартфонаў. OTA-мадэрнізацыі святлодыёдных разумных ліхтароў будуць разгледжаны ў раздзеле 11. Калі распрацоўшчыкі ўключылі аддалены маніторынг ESP Insights, бэкэнд кіравання ESP RainMaker будзе адлюстроўваць даныя ESP Insights. Падрабязнасці будуць прадстаўлены ў главе 15.
ESP RainMaker падтрымлівае прыватнае разгортванне, якое адрозніваецца ад публічнага сервера RainMaker наступным чынам:
Claiming Service Для стварэння сертыфікатаў у прыватных разгортваннях патрабуецца выкарыстоўваць RainMaker Admin CLI замест Claiming. На агульнадаступным серверы распрацоўшчыкі павінны атрымаць правы адміністратара для выканання абнаўлення прашыўкі, але гэта непажадана ў камерцыйных разгортваннях. Такім чынам, ні асобная служба аўтэнтыфікацыі не можа быць прадастаўлена для самастойнага патрабавання, ні правоў адміністратара для кіраванага або дапаможнага патрабавання хоста.
Праграмы для тэлефонаў У прыватных разгортваннях праграмы неабходна наладжваць і кампіляваць асобна, каб пераканацца, што сістэмы ўліковых запісаў не ўзаемадзейнічаюць.
Інтэграцыя старонніх уваходаў і голасу. Распрацоўшчыкі павінны наладжваць асобна праз уліковыя запісы распрацоўшчыкаў Google і Apple, каб уключыць староннія ўваходы, а таксама інтэграцыю Alexa Skill і Google Voice Assistant.
ПАРАДЫ Для атрымання падрабязнай інфармацыі аб разгортванні воблака, калі ласка, наведайце https://customer.rainmaker.espressif. ком. З пункту гледжання прашыўкі, міграцыя з агульнадаступнага сервера на прыватны патрабуе толькі замены сертыфікатаў прылад, што значна павышае эфектыўнасць міграцыі і зніжае кошт міграцыі і другаснай адладкі.
3.4 Асаблівасці ESP RainMaker
Функцыі ESP RainMaker у асноўным арыентаваны на тры аспекты: кіраванне карыстальнікамі, канчатковыя карыстальнікі і адміністратары. Усе функцыі падтрымліваюцца як на дзяржаўных, так і на прыватных серверах, калі не пазначана іншае.
3.4.1 Кіраванне карыстальнікамі
Функцыі кіравання карыстальнікамі дазваляюць канчатковым карыстальнікам рэгістравацца, уваходзіць у сістэму, мяняць паролі, атрымліваць паролі і г.д.
26 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па 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-апавяшчэнні аб такіх падзеях, як · Новая прылада(-і) дададзена/выдалена · Прылада падключана да воблака · Прылада адключана ад воблака · Запыты на абагульванне прылады створаны/прыняты/адхілены · Абвесткі аб паведамленнях прылад
Для кіравання прыладамі RainMaker, у тым ліку свяцільнямі, выключальнікамі, разеткамі, вентылятарамі і датчыкамі тэмпературы, падтрымліваюцца інтэграцыі іншых вытворцаў Alexa і Google Voice Assistant.
3.4.3 Функцыі адміністратара
Функцыі адміністратара дазваляюць адміністратарам ажыццяўляць рэгістрацыю прылад, групоўку прылад і OTA-абнаўленні, а таксама view статыстыка і дадзеныя ESP Insights.
Рэгістрацыя прылады Стварыце сертыфікаты прылады і зарэгіструйцеся ў Admin CLI (толькі на прыватным серверы).
Групоўка прылад Стварэнне абстрактных або структураваных груп на аснове інфармацыі аб прыладзе (толькі прыватны сервер).
Абнаўленне па эфіры (OTA) Загрузка прашыўкі на аснове версіі і мадэлі на адну або некалькі прылад або групу Кантралюйце, адмяняйце або архівуйце заданні OTA.
View статыстыка Viewдаступная статыстыка ўключае: · Рэгістрацыі прылад (сертыфікаты, зарэгістраваныя адміністратарам) · Актывацыі прылад (прылада падключана ўпершыню) · Уліковыя запісы карыстальнікаў · Асацыяцыя карыстальніка і прылады
View Дадзеныя ESP Insights Viewздольныя даныя ESP Insights уключаюць: · Памылкі, папярэджанні і карыстальніцкія журналы · Справаздачы аб збоях і аналіз · Прычыны перазагрузкі · Такія паказчыкі, як выкарыстанне памяці, RSSI і г.д. · Карыстальніцкія паказчыкі і зменныя
28 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па 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 Wireless Adventure: поўнае кіраўніцтва па IoT

Раздзел Наладжванне асяроддзя распрацоўкі 4
Гэтая глава прысвечана ESP-IDF, афіцыйнай структуры распрацоўкі праграмнага забеспячэння для ESP32-C3. Мы растлумачым, як наладзіць асяроддзе ў розных аперацыйных сістэмах, а таксама пазнаёмім са структурай праекта і сістэмай зборкі ESP-IDF, а таксама з выкарыстаннем звязаных інструментаў распрацоўкі. Затым мы прадставім працэс кампіляцыі і запуску example project, прапаноўваючы пры гэтым падрабязнае тлумачэнне выходнага журнала ў кожным stage.
4.1 ESP-IDF скончанаview
ESP-IDF (Espressif IoT Development Framework) - гэта комплексная структура распрацоўкі IoT, прадастаўленая Espressif Technology. Ён выкарыстоўвае C/C++ у якасці асноўнай мовы распрацоўкі і падтрымлівае крос-кампіляцыю ў асноўных аперацыйных сістэмах, такіх як Linux, Mac і Windows. БылыampПраграмы, уключаныя ў гэтую кнігу, распрацаваны з выкарыстаннем ESP-IDF, які прапануе наступныя магчымасці: · Драйверы сістэмнага ўзроўню SoC. ESP-IDF уключае драйверы для ESP32, ESP32-S2, ESP32-C3,
і іншыя фішкі. Гэтыя драйверы ахопліваюць бібліятэку перыферыйнага нізкага ўзроўню (LL), бібліятэку апаратнага ўзроўню абстракцыі (HAL), падтрымку аператыўнага аператыўнага ўтрымання і праграмнае забеспячэнне драйвера верхняга ўзроўню і г.д. · Асноўныя кампаненты. ESP-IDF уключае асноўныя кампаненты, неабходныя для распрацоўкі IoT. Гэта ўключае ў сябе некалькі стэкаў сеткавых пратаколаў, такіх як HTTP і MQTT, структуру кіравання сілкаваннем з дынамічнай частотнай мадуляцыяй і такія функцыі, як Flash Encryption і Secure Boot і г.д. · Інструменты распрацоўкі і вытворчасці. ESP-IDF забяспечвае звычайна выкарыстоўваюцца інструменты для зборкі, флэш-памяшчэння і адладкі падчас распрацоўкі і масавай вытворчасці (гл. малюнак 4.1), такія як сістэма зборкі на аснове CMake, ланцужок інструментаў крос-кампіляцыі на аснове GCC і JTAG інструмент адладкі на аснове OpenOCD і г.д. Варта адзначыць, што код ESP-IDF у асноўным адпавядае ліцэнзіі з адкрытым зыходным кодам Apache 2.0. Карыстальнікі могуць распрацоўваць асабістае або камерцыйнае праграмнае забеспячэнне без абмежаванняў, выконваючы ўмовы ліцэнзіі з адкрытым зыходным кодам. Акрамя таго, карыстальнікам прадастаўляюцца пастаянныя патэнтныя ліцэнзіі бясплатна, без абавязацельстваў адкрываць любыя змены, унесеныя ў зыходны код.
31

Малюнак 4.1.

Зборка, перапрашыўка і адладка

інструменты для распрацоўкі і масавай вытворчасці

4.1.1 Версіі ESP-IDF
Код ESP-IDF размешчаны на GitHub як праект з адкрытым зыходным кодам. У цяперашні час даступныя тры асноўныя версіі: v3, v4 і v5. Кожная асноўная версія звычайна змяшчае розныя падверсіі, такія як v4.2, v4.3 і гэтак далей. Espressif Systems забяспечвае 30-месячную падтрымку для выпраўлення памылак і патчаў бяспекі для кожнай выпушчанай падверсіі. Такім чынам, рэвізіі падверсій таксама выпускаюцца рэгулярна, напрыклад v4.3.1, v4.2.2 і г.д. Табліца 4.1 паказвае стан падтрымкі розных версій ESP-IDF для чыпаў Espressif з указаннем таго, ці знаходзяцца яны ў папярэднімview stage (прапаноўваючы падтрымку для preview версіі, у якіх могуць адсутнічаць некаторыя функцыі або дакументацыя) або афіцыйна падтрымліваюцца.

Табліца 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 падтрымліваецца падтрымліваецца падтрымліваецца падтрымліваецца падтрымліваецца падтрымліваецца preview

32 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Ітэрацыя асноўных версій часта ўключае карэкціроўкі структуры структуры і абнаўленні сістэмы кампіляцыі. Напрыкладample, галоўнай зменай з v3.* на v4.* стаў паступовы перанос сістэмы зборкі з Make на CMake. З іншага боку, ітэрацыя мінорных версій звычайна цягне за сабой даданне новых функцый або падтрымку новых чыпаў.
Важна адрозніваць і разумець сувязь паміж стабільнымі версіямі і галінамі GitHub. Версіі, пазначаныя як v*.* або v*.*.*, прадстаўляюць стабільныя версіі, якія прайшлі поўнае ўнутранае тэставанне Espressif. Пасля выпраўлення код, ланцужок інструментаў і дакументы выпуску для той жа версіі застаюцца нязменнымі. Аднак галіны GitHub (напрыклад, галіна release/v4.3) падвяргаюцца частым фіксацыям кода, часта штодня. Такім чынам, два фрагменты кода ў адной галіны могуць адрознівацца, што вымушае распрацоўшчыкаў неадкладна абнаўляць свой код адпаведна.
4.1.2 Рабочы працэс ESP-IDF Git
Espressif прытрымліваецца пэўнага працоўнага працэсу Git для ESP-IDF, апісанага наступным чынам:
· Новыя змены зроблены ў галоўнай галіны, якая служыць асноўнай галіной распрацоўкі. Версія ESP-IDF на галоўнай галінцы заўсёды змяшчае -dev tag каб пазначыць, што ён зараз знаходзіцца ў стадыі распрацоўкі, напрыклад v4.3-dev. Змены ў галоўнай галінцы спачатку будуць паўторнаviewапублікаваны і пратэставаны ва ўнутраным сховішчы Espressif, а затым перададзены на GitHub пасля завяршэння аўтаматызаванага тэсціравання.
· Калі новая версія завяршыла распрацоўку функцый на галоўнай галінцы і адпавядала крытэрам для ўваходу ў бэта-тэсціраванне, яна пераходзіць у новую галінку, напрыклад, release/v4.3. Акрамя таго, гэта новая галіна tagged як папярэднюю версію, напрыклад v4.3-beta1. Распрацоўшчыкі могуць звярнуцца да платформы GitHub, каб атрымаць доступ да поўнага спісу філіялаў і tags для ESP-IDF. Важна адзначыць, што бэта-версія (папярэдняя версія) усё яшчэ можа мець значную колькасць вядомых праблем. Паколькі бэта-версія праходзіць бесперапыннае тэсціраванне, выпраўленні памылак дадаюцца адначасова як у гэту версію, так і ў галоўную галінку. Між тым, галоўная галіна, магчыма, ужо пачала распрацоўку новых функцый для наступнай версіі. Калі тэставанне амаль завершана, да галіны дадаецца метка кандыдата ў выпуск (rc), якая паказвае, што гэта патэнцыйны кандыдат для афіцыйнага выпуску, напрыклад v4.3-rc1. На гэтым сtage, галіна застаецца папярэдняй версіяй.
· Калі ніякіх сур'ёзных памылак не выяўлена або не паведамляецца, папярэдняя версія ў канчатковым выніку атрымлівае пазнаку асноўнай версіі (напрыклад, v5.0) або пазнаку малодшай версіі (напрыклад, v4.3) і становіцца афіцыйнай версіяй выпуску, што задакументавана на старонцы нататак да выпуску. У далейшым любыя памылкі, выяўленыя ў гэтай версіі, выпраўляюцца ў галінцы выпуску. Пасля завяршэння тэсціравання ўручную філіялу прысвойваецца метка версіі выпраўлення памылак (напрыклад, v4.3.2), якая таксама адлюстроўваецца на старонцы заўваг аб выпуску.
Глава 4. Наладжванне асяроддзя распрацоўкі 33

4.1.3 Выбар прыдатнай версіі
Паколькі ESP-IDF афіцыйна пачаў падтрымліваць ESP32-C3 з версіі v4.3, а v4.4 яшчэ не была афіцыйна выпушчана на момант напісання гэтай кнігі, у гэтай кнізе выкарыстоўваецца версія v4.3.2, якая з'яўляецца перагледжанай версіяй версіі 4.3. Аднак важна адзначыць, што да таго часу, як вы прачытаеце гэтую кнігу, версія 4.4 або больш новыя могуць быць даступныя. Пры выбары версіі мы рэкамендуем наступнае:
· Распрацоўшчыкам пачатковага ўзроўню рэкамендуецца выбраць стабільную версію v4.3 або яе перагледжаную версію, якая адпавядае папярэдняйample версія, якая выкарыстоўваецца ў гэтай кнізе.
· У мэтах масавай вытворчасці рэкамендуецца выкарыстоўваць апошнюю стабільную версію, каб атрымаць найноўшую тэхнічную падтрымку.
· Калі вы збіраецеся паэксперыментаваць з новымі чыпамі або вывучыць новыя магчымасці прадукту, калі ласка, выкарыстоўвайце галінку master. Апошняя версія змяшчае ўсе апошнія функцыі, але майце на ўвазе, што могуць прысутнічаць вядомыя або невядомыя памылкі.
· Калі стабільная версія, якая выкарыстоўваецца, не ўключае жаданыя новыя магчымасці, і вы жадаеце мінімізаваць рызыкі, звязаныя з галоўнай галіной, разгледзьце магчымасць выкарыстання адпаведнай галіны выпуску, напрыклад, галіны release/v4.4. Рэпазітар GitHub Espressif спачатку створыць галінку release/v4.4, а затым выпусціць стабільную версію v4.4 на аснове канкрэтнага гістарычнага здымка гэтай галінкі пасля завяршэння распрацоўкі і тэсціравання ўсіх функцый.
4.1.4 Скончанаview каталога ESP-IDF SDK
ESP-IDF SDK складаецца з двух асноўных каталогаў: esp-idf і .espressif. Першы змяшчае зыходны код рэпазітара ESP-IDF files і сцэнарыі кампіляцыі, у той час як апошні ў асноўным захоўвае ланцужкі інструментаў кампіляцыі і іншае праграмнае забеспячэнне. Знаёмства з гэтымі двума каталогамі дапаможа распрацоўшчыкам лепш выкарыстоўваць даступныя рэсурсы і паскорыць працэс распрацоўкі. Структура каталогаў ESP-IDF апісана ніжэй:
(1) Каталог кода сховішча ESP-IDF (/esp/esp-idf), як паказана на малюнку 4.2.
а. Кампаненты каталога кампанентаў
Гэты асноўны каталог аб'ядноўвае мноства асноўных праграмных кампанентаў ESP-IDF. Код праекта не можа быць скампіляваны без выкарыстання кампанентаў у гэтым каталогу. Ён уключае падтрымку драйвераў для розных чыпаў Espressif. Ад інтэрфейсаў бібліятэкі LL і бібліятэкі HAL для перыферыйных прылад да драйвера верхняга ўзроўню і Virtual File Падтрымка ўзроўню сістэмы (VFS), распрацоўшчыкі могуць выбіраць адпаведныя кампаненты на розных узроўнях для сваіх патрэб распрацоўкі. ESP-IDF таксама падтрымлівае некалькі стандартных стэкаў сеткавых пратаколаў, такіх як TCP/IP, HTTP, MQTT, WebSocket і г.д. Распрацоўшчыкі могуць выкарыстоўваць знаёмыя інтэрфейсы, такія як Socket, для стварэння сеткавых прыкладанняў. Кампаненты забяспечваюць разуменне
34 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Малюнак 4.2. Каталог кодаў сховішча ESP-IDF
sive функцыянальнасць і можа быць лёгка інтэграваны ў прыкладанні, што дазваляе распрацоўшчыкам засяродзіцца выключна на бізнес-логіцы. Некаторыя агульныя кампаненты ўключаюць у сябе: · драйвер: Гэты кампанент змяшчае праграмы драйвераў перыферыйных прылад для розных Espressif
серыі чыпаў, такіх як GPIO, I2C, SPI, UART, LEDC (ШІМ) і г. д. Праграмы драйвераў перыферыйных прылад у гэтым кампаненце прапануюць незалежныя ад чыпа абстрактныя інтэрфейсы. Кожная перыферыя мае агульны загаловак file (напрыклад, gpio.h), пазбаўляючы ад неабходнасці вырашаць розныя пытанні падтрымкі, звязаныя з чыпам. · esp_wifi: Wi-Fi, як спецыяльная перыферыя, разглядаецца як асобны кампанент. Ён уключае некалькі API, такіх як ініцыялізацыя розных рэжымаў драйвера Wi-Fi, канфігурацыя параметраў і апрацоўка падзей. Пэўныя функцыі гэтага кампанента прадстаўлены ў выглядзе бібліятэк статычных спасылак. ESP-IDF таксама забяспечвае поўную дакументацыю драйвера для палягчэння выкарыстання.
Глава 4. Наладжванне асяроддзя распрацоўкі 35

· freertos: гэты кампанент змяшчае поўны код FreeRTOS. Акрамя комплекснай падтрымкі гэтай аперацыйнай сістэмы, Espressif таксама пашырыла падтрымку двух'ядравых чыпаў. Для двух'ядравых чыпаў, такіх як ESP32 і ESP32-S3, карыстальнікі могуць ствараць задачы на ​​пэўных ядрах.
б. Каталог дакументаў docs
Гэты каталог змяшчае дакументы па распрацоўцы, звязаныя з ESP-IDF, у тым ліку Кіраўніцтва па пачатку працы, Даведнік па API, Кіраўніцтва па распрацоўцы і г.д.
УВАГА Пасля кампіляцыі з дапамогай аўтаматызаваных інструментаў змесціва гэтага каталога разгортваецца па адрасе https://docs.espressif.com/projects/esp-idf. Пераканайцеся, што мэта дакумента пераключаецца на ESP32-C3 і выбіраеце ўказаную версію ESP-IDF.
в. Інструменты інструмента сцэнарыя
Гэты каталог змяшчае часта выкарыстоўваныя інтэрфейсныя інструменты кампіляцыі, такія як idf.py і тэрмінальны інструмент манітора idf_monitor.py і г.д. Падкаталог cmake таксама змяшчае асноўны скрыпт files сістэмы кампіляцыі, якая служыць асновай для рэалізацыі правілаў кампіляцыі ESP-IDF. Пры даданні зменных асяроддзя змесціва каталога інструментаў дадаецца да сістэмнай зменнай асяроддзя, што дазваляе выконваць idf.py непасрэдна ў шляху праекта.
d. напрыкладample праграмны каталог exampлес
Гэты каталог змяшчае шырокую калекцыю ESP-IDF example праграмы, якія дэманструюць выкарыстанне кампанентаў API. Былыampфайлы арганізаваны ў розныя падкаталогі ў залежнасці ад іх катэгорый:
· пачатак працы: гэты падкаталог уключае пачатковы ўзровень exampтакія як «прывітанне, свет» і «мірганне», каб дапамагчы карыстальнікам зразумець асновы.
· bluetooth: Вы можаце знайсці звязаныя з Bluetooth напрampтут, у тым ліку Bluetooth LE Mesh, Bluetooth LE HID, BluFi і інш.
· wifi: гэты падкаталог прысвечаны Wi-Fi exampфайлы, у тым ліку асноўныя праграмы, такія як Wi-Fi SoftAP, Wi-Fi Station, espnow, а таксама прапрыетарны пратакол сувязі напр.ampлес ад Espressif. Ён таксама ўключае ў сябе некалькі прыкладных узроўняў, напрampфайлы на аснове Wi-Fi, такія як Iperf, Sniffer і Smart Config.
· перыферыйныя прылады: гэты шырокі падкаталог далей падзелены на шматлікія падпапкі на аснове перыферыйных імёнаў. Ён у асноўным змяшчае драйвер перыферыйных прыладamples для чыпсаў Espressif, з кожным выклample з удзелам некалькіх суб-эксampлес. Напрыклад, падкаталог gpio уключае два exampфайлы: GPIO і матрычная клавіятура GPIO. Важна адзначыць, што не ўсе былыяampфайлы ў гэтым каталогу прымяняюцца да ESP32-C3.
36 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Напрыкладampле, былampфайлы ў usb/host прымяняюцца толькі да перыферыйных прылад з апаратным забеспячэннем USB-хаста (напрыклад, ESP32-S3), а ESP32-C3 не мае гэтай перыферыі. Сістэма кампіляцыі звычайна дае падказкі пры ўсталяванні мэты. README file кожнага эксample пералічвае падтрымоўваныя чыпы. · пратаколы: гэты падкаталог змяшчае exampфайлы для розных камунікацыйных пратаколаў, уключаючы MQTT, HTTP, HTTP-сервер, PPPoS, Modbus, mDNS, SNTP, якія ахопліваюць шырокі спектр камунікацыйных пратаколаў, напр.ampменш, неабходных для распрацоўкі IoT. · забеспячэнне: тут вы знойдзеце забеспячэнне напрampфайлы для розных метадаў, такіх як забеспячэнне Wi-Fi і Bluetooth LE. · сістэма: гэты падкаталог змяшчае адладку сістэмы, напрыкладampфайлы (напрыклад, трасіроўка стэка, трасіроўка падчас выканання, маніторынг задач), кіраванне сілкаваннем, напрampлес (напрыклад, розныя рэжымы сну, супрацэсары) і прampфайлы, звязаныя з агульнымі кампанентамі сістэмы, такімі як кансольны тэрмінал, цыкл падзей і сістэмны таймер. · захоўванне: у гэтым падкаталогу вы знойдзеце exampменш за ўсё file сістэмы і механізмы захоўвання, якія падтрымліваюцца ESP-IDF (напрыклад, чытанне і запіс Flash, SD-карт і іншых носьбітаў), а таксамаampфайлы энерганезалежнай памяці (NVS), FatFS, SPIFFS і іншыя file сістэмныя аперацыі. · бяспека: гэты падкаталог змяшчае напрampфайлы, звязаныя з флэш-шыфраваннем. (2) Каталог ланцужка інструмента кампіляцыі ESP-IDF (/.espressif), як паказана на малюнку 4.3.
Малюнак 4.3. Каталог ланцужкоў інструментаў кампіляцыі ESP-IDF
Глава 4. Наладжванне асяроддзя распрацоўкі 37

а. Каталог распаўсюджвання праграмнага забеспячэння dist
Ланцужок інструментаў ESP-IDF і іншае праграмнае забеспячэнне распаўсюджваецца ў выглядзе сціснутых пакетаў. У працэсе ўстаноўкі інструмент усталёўкі спачатку загружае сціснуты пакет у каталог dist, а затым распакуе яго ў паказаны каталог. Пасля завяршэння ўстаноўкі змесціва гэтага каталога можна бяспечна выдаліць.
б. Каталог віртуальнага асяроддзя Python python env
Розныя версіі ESP-IDF абапіраюцца на пэўныя версіі пакетаў Python. Усталяванне гэтых пакетаў непасрэдна на адным хасце можа прывесці да канфліктаў паміж версіямі пакетаў. Каб вырашыць гэтую праблему, ESP-IDF выкарыстоўвае віртуальныя асяроддзя Python для ізаляцыі розных версій пакетаў. З дапамогай гэтага механізму распрацоўшчыкі могуць усталяваць некалькі версій ESP-IDF на адным хасце і лёгка пераключацца паміж імі, імпартуючы розныя зменныя асяроддзя.
в. Інструмент кампіляцыі ESP-IDF Інструменты ланцужкоў каталогаў
Гэты каталог у асноўным змяшчае інструменты крос-кампіляцыі, неабходныя для кампіляцыі праектаў ESP-IDF, такія як інструменты CMake, інструменты зборкі Ninja і ланцужок інструментаў gcc, які стварае канчатковую выкананую праграму. Акрамя таго, у гэтым каталогу знаходзіцца стандартная бібліятэка мовы C/C++ разам з адпаведным загалоўкам fileс. Калі праграма спасылаецца на сістэмны загаловак file як #include , ланцужок інструментаў кампіляцыі знойдзе stdio.h file у гэтым каталогу.
4.2 Настройка асяроддзя распрацоўкі ESP-IDF
Асяроддзе распрацоўкі ESP-IDF падтрымлівае асноўныя аперацыйныя сістэмы, такія як Windows, Linux і macOS. У гэтым раздзеле будзе апісана, як наладзіць асяроддзе распрацоўкі ў кожнай сістэме. Рэкамендуецца распрацоўваць ESP32-C3 у сістэме Linux, якая будзе падрабязна прадстаўлена тут. Многія інструкцыі прымяняюцца на розных платформах з-за падабенства інструментаў распрацоўкі. Таму раім уважліва прачытаць змест гэтага раздзела.
ЗАЎВАГА Вы можаце звярнуцца да дакументаў у інтэрнэце, даступных на https://bookc3.espressif.com/esp32c3, у якіх прадстаўлены каманды, згаданыя ў гэтым раздзеле.
4.2.1 Настройка асяроддзя распрацоўкі ESP-IDF у Linux
Інструменты распрацоўкі і адладкі GNU, неабходныя для асяроддзя распрацоўкі ESP-IDF, з'яўляюцца ўласнымі для сістэмы Linux. Акрамя таго, тэрмінал каманднага радка ў Linux магутны і зручны, што робіць яго ідэальным выбарам для распрацоўкі ESP32-C3. Вы можаце
38 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

абярыце пераважны дыстрыбутыў Linux, але мы рэкамендуем выкарыстоўваць Ubuntu або іншыя сістэмы на аснове Debian. У гэтым раздзеле прадстаўлены інструкцыі па наладжванні асяроддзя распрацоўкі ESP-IDF на Ubuntu 20.04.
1. Усталюйце неабходныя пакеты
Адкрыйце новы тэрмінал і выканайце наступную каманду, каб усталяваць усе неабходныя пакеты. Каманда аўтаматычна прапусціць пакеты, якія ўжо ўсталяваны.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
ПАРАДЫ Вы павінны выкарыстоўваць уліковы запіс адміністратара і пароль для каманды вышэй. Па змаўчанні пры ўводзе пароля інфармацыя не адлюстроўваецца. Проста націсніце клавішу «Enter», каб працягнуць працэдуру.
Git - гэта ключавы інструмент кіравання кодам у ESP-IDF. Пасля паспяховай налады асяроддзя распрацоўкі вы можаце выкарыстоўваць каманду git log для view усе змены кода, зробленыя з моманту стварэння ESP-IDF. Акрамя таго, Git таксама выкарыстоўваецца ў ESP-IDF для пацверджання інфармацыі аб версіі, якая неабходна для ўстаноўкі правільнай ланцужкі інструментаў, якая адпавядае пэўным версіям. Разам з Git іншыя важныя сістэмныя інструменты ўключаюць Python. ESP-IDF уключае мноства скрыптоў аўтаматызацыі, напісаных на Python. Такія інструменты, як CMake, Ninja-build і Ccache, шырока выкарыстоўваюцца ў праектах C/C++ і служаць інструментамі кампіляцыі і стварэння кода па змаўчанні ў ESP-IDF. libusb-1.0-0 і dfu-util з'яўляюцца асноўнымі драйверамі, якія выкарыстоўваюцца для паслядоўнай сувязі USB і запісу прашыўкі. Пасля ўстаноўкі праграмных пакетаў вы можаце выкарыстоўваць apt show каманда для атрымання падрабязнага апісання кожнага пакета. Напрыкладample, выкарыстоўвайце apt show git, каб надрукаваць інфармацыю аб апісанні інструмента Git.
Пытанне: Што рабіць, калі версія Python не падтрымліваецца? A: ESP-IDF v4.3 патрабуе версіі Python не ніжэй за v3.6. Для больш старых версій Ubuntu спампуйце і ўсталюйце больш новую версію Python уручную і ўсталюйце Python3 у якасці асяроддзя Python па змаўчанні. Вы можаце знайсці падрабязныя інструкцыі, выканаўшы пошук па ключавым слове update-alternatives python.
2. Спампуйце код рэпазітара ESP-IDF
Адкрыйце тэрмінал і стварыце тэчку з імем esp у хатнім каталогу з дапамогай каманды mkdir. Вы можаце выбраць іншую назву для папкі, калі хочаце. Выкарыстоўвайце каманду cd, каб увайсці ў тэчку.
Глава 4. Наладжванне асяроддзя распрацоўкі 39

$ mkdir -p /esp $ cd /esp
Выкарыстоўвайце каманду git clone, каб загрузіць код рэпазітара ESP-IDF, як паказана ніжэй:
$ git clone -b v4.3.2 – рэкурсіўны https://github.com/espressif/esp-idf.git
У прыведзенай вышэй камандзе параметр -b v4.3.2 вызначае версію для загрузкі (у дадзеным выпадку версія 4.3.2). Параметр –recursive гарантуе, што ўсе падсховішчы ESP-IDF спампоўваюцца рэкурсіўна. Інфармацыю аб падсховішчах можна знайсці ў .gitmodules file.
3. Усталюйце ланцужок сродкаў распрацоўкі ESP-IDF
Espressif забяспечвае аўтаматызаваны скрыпт install.sh для загрузкі і ўстаноўкі ланцужка інструментаў. Гэты скрыпт правярае бягучую версію ESP-IDF і асяроддзе аперацыйнай сістэмы, а затым спампоўвае і ўсталёўвае адпаведную версію пакетаў інструментаў Python і ланцужкоў інструментаў кампіляцыі. Стандартны шлях усталявання ланцужка інструментаў - /.espressif. Усё, што вам трэба зрабіць, гэта перайсці ў каталог esp-idf і запусціць install.sh.
$ cd /esp/esp-idf $ ./install.sh
Калі вы паспяхова ўсталявалі ланцужок інструментаў, тэрмінал адлюструе:
Гатова!
На дадзены момант вы паспяхова наладзілі асяроддзе распрацоўкі ESP-IDF.
4.2.2 Настройка асяроддзя распрацоўкі ESP-IDF у Windows
1. Спампуйце праграму ўстаноўкі інструментаў ESP-IDF
ПАРАДЫ Рэкамендуецца наладзіць асяроддзе распрацоўкі ESP-IDF на Windows 10 або вышэй. Вы можаце спампаваць праграму ўстаноўкі з https://dl.espressif.com/dl/esp-idf/. Праграма ўстаноўкі таксама з'яўляецца праграмным забеспячэннем з адкрытым зыходным кодам, і яго зыходны код можа быць viewапублікавана на https: //github.com/espressif/idf-installer.
· Інтэрнэт-ўсталёўшчык інструментаў ESP-IDF
Гэты ўсталёўшчык адносна невялікі, памерам каля 4 МБ, і іншыя пакеты і код будуць спампаваны ў працэсе ўсталёўкі. АвансtagІнтэрактыўны ўсталёўшчык заключаецца ў тым, што не толькі можна спампоўваць праграмныя пакеты і код па патрабаванні падчас працэсу ўсталявання, але таксама дазваляе ўсталёўваць усе даступныя выпускі ESP-IDF і апошнюю галіну кода GitHub (напрыклад, асноўную галіну) . Недахопtage заключаецца ў тым, што ў працэсе ўстаноўкі патрабуецца падключэнне да сеткі, што можа прывесці да збою ўстаноўкі з-за праблем з сеткай.
40 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

· Пазасеткавы ўсталёўшчык інструментаў ESP-IDF. Гэты ўсталёўнік большы, памерам каля 1 ГБ і змяшчае ўсе праграмныя пакеты і код, неабходны для наладжвання асяроддзя. Галоўны авансtagПраграма ўсталёўкі ў аўтаномным рэжыме заключаецца ў тым, што яе можна выкарыстоўваць на камп'ютарах без доступу ў Інтэрнэт і, як правіла, яна мае больш высокі ўзровень паспяховасці ўстаноўкі. Варта адзначыць, што пазасеткавы ўсталёўшчык можа ўсталёўваць толькі стабільныя выпускі ESP-IDF, пазначаныя v*.* або v*.*.*.
2. Запусціце ўсталёўшчык ESP-IDF Tools Пасля загрузкі адпаведнай версіі ўсталёўшчыка (вазьміце ESP-IDF Tools Offline 4.3.2 для прыкладуampтут), двойчы пстрыкніце exe file для запуску інтэрфейсу ўстаноўкі ESP-IDF. Далей дэманструецца, як усталяваць стабільную версію ESP-IDF v4.3.2 з дапамогай пазасеткавага ўсталёўніка.
(1) У інтэрфейсе «Выбраць мову ўстаноўкі», паказаным на малюнку 4.4, выберыце мову, якая будзе выкарыстоўвацца, з выпадальнага спісу.
Малюнак 4.4. Інтэрфейс «Выберыце мову ўстаноўкі» (2) Пасля выбару мовы націсніце «ОК», каб з'явіцца інтэрфейс «Ліцэнзійнае пагадненне».
(гл. малюнак 4.5). Уважліва прачытаўшы ліцэнзійнае пагадненне аб усталяванні, абярыце «Я прымаю пагадненне» і націсніце «Далей».
Малюнак 4.5. Інтэрфейс «Ліцэнзійнае пагадненне» Глава 4. Настройка асяроддзя распрацоўкі 41

(3) Review канфігурацыю сістэмы ў інтэрфейсе «Праверка сістэмы перад устаноўкай» (гл. малюнак 4.6). Праверце версію Windows і інфармацыю аб усталяваным антывірусным праграмным забеспячэнні. Націсніце «Далей», калі ўсе элементы канфігурацыі нармальныя. У адваротным выпадку вы можаце націснуць «Поўны журнал» для рашэнняў на аснове ключавых элементаў.
Малюнак 4.6. САВЕТЫ інтэрфейсу «Праверка сістэмы перад устаноўкай».
Вы можаце адправіць журналы на https://github.com/espressif/idf-installer/issues для атрымання дапамогі. (4) Выберыце каталог ўстаноўкі ESP-IDF. Тут абярыце D:/.espressif, як паказана ў
малюнак 4.7, і націсніце «Далей». Звярніце ўвагу, што .espressif тут схаваны каталог. Пасля завяршэння ўстаноўкі вы можаце view канкрэтнае змесціва гэтага каталога, адкрыўшы file менеджэр і адлюстраванне схаваных элементаў.
Малюнак 4.7. Абярыце каталог усталёўкі ESP-IDF 42 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

(5) Праверце кампаненты, якія неабходна ўсталяваць, як паказана на малюнку 4.8. Рэкамендуецца выкарыстоўваць параметр па змаўчанні, гэта значыць завяршыць ўстаноўку і націснуць «Далей».
Малюнак 4.8. Выберыце кампаненты для ўстаноўкі (6) Пацвердзіце кампаненты для ўстаноўкі і націсніце «Устанавіць», каб запусціць аўтаматызаваны ін-
працэс ўстаноўкі, як паказана на малюнку 4.9. Працэс усталёўкі можа доўжыцца дзясяткі хвілін, і індыкатар выканання працэсу ўстаноўкі паказаны на малюнку 4.10. Калі ласка, цярпліва чакайце.
Малюнак 4.9. Падрыхтоўка да ўстаноўкі (7) Пасля завяршэння ўстаноўкі рэкамендуецца паставіць галачку «Зарэгістраваць ESP-IDF».
Інструменты для выканання ў якасці выключэнняў Windows Defender…», каб прадухіліць выдаленне антывіруснага праграмнага забеспячэння fileс. Даданне элементаў выключэння таксама можа прапусціць частае сканаванне антывірусам
Глава 4. Наладжванне асяроддзя распрацоўкі 43

Малюнак 4.10. Праграмнае забеспячэнне індыкатара інсталяцыі, якое значна павышае эфектыўнасць кампіляцыі кода ў сістэме Windows. Націсніце «Гатова», каб завяршыць усталяванне асяроддзя распрацоўкі, як паказана на малюнку 4.11. Вы можаце паставіць галачку «Запусціць асяроддзе 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 Wireless Adventure: поўнае кіраўніцтва па IoT

Малюнак 4.12. Усталявана асяроддзе распрацоўкі
Малюнак 4.13. ESP-IDF 4.3 CMD
4.2.3 Настройка асяроддзя распрацоўкі ESP-IDF на Mac
Працэс усталявання асяроддзя распрацоўкі ESP-IDF у сістэме Mac такі ж, як і ў сістэме Linux. Каманды для загрузкі кода рэпазітара і ўстаноўкі ланцужка інструментаў абсалютна аднолькавыя. Толькі каманды для ўстаноўкі пакетаў залежнасцяў трохі адрозніваюцца. 1. Усталюйце пакеты залежнасцяў Адкрыйце тэрмінал і ўсталюйце pip, інструмент кіравання пакетамі Python, выканаўшы наступную каманду:
% pip 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. Крокі такія ж, як і для загрузкі ў сістэме Linux.
Глава 4. Наладжванне асяроддзя распрацоўкі 45

3. Усталюйце ланцужок сродкаў распрацоўкі ESP-IDF
Каб усталяваць ланцужок сродкаў распрацоўкі ESP-IDF, выконвайце інструкцыі ў раздзеле 4.2.1. Крокі такія ж, як і для ўстаноўкі ў сістэме Linux.
4.2.4 Усталёўка кода VS
Па змаўчанні ESP-IDF SDK не ўключае інструмент для рэдагавання кода (хаця апошняя праграма ўстаноўкі ESP-IDF для Windows прапануе магчымасць усталяваць ESP-IDF Eclipse). Вы можаце выкарыстоўваць любы інструмент рэдагавання тэксту па вашаму выбару, каб адрэдагаваць код, а затым скампіляваць яго з дапамогай каманд тэрмінала.
Адным з папулярных інструментаў рэдагавання кода з'яўляецца VS Code (Visual Studio Code), які з'яўляецца бясплатным і багатым функцыямі рэдактарам кода з зручным інтэрфейсам. Ён прапануе розныя plugins якія забяспечваюць такія функцыі, як навігацыя па коду, падсвятленне сінтаксісу, кантроль версій Git і інтэграцыя тэрміналаў. Акрамя таго, Espressif распрацавала спецыяльны плагін пад назвай Espressif IDF для VS Code, які спрашчае канфігурацыю праекта і адладку.
Вы можаце выкарыстоўваць каманду code ў тэрмінале, каб хутка адкрыць бягучую тэчку ў VS Code. Акрамя таго, вы можаце выкарыстоўваць спалучэнне клавіш Ctrl+, каб адкрыць кансоль тэрмінала сістэмы па змаўчанні ў VS Code.
ПАРАДЫ Рэкамендуецца выкарыстоўваць код VS для распрацоўкі кода ESP32-C3. Спампуйце і ўсталюйце апошнюю версію VS Code на https://code.visualstudio.com/.
4.2.5 Уводзіны ў асяроддзі распрацоўкі іншых вытворцаў
У дадатак да афіцыйнага асяроддзя распрацоўкі ESP-IDF, якое ў асноўным выкарыстоўвае мову C, ESP32-C3 таксама падтрымлівае іншыя асноўныя мовы праграмавання і шырокі спектр асяроддзяў распрацоўкі іншых вытворцаў. Некаторыя вядомыя варыянты ўключаюць:
Arduino: платформа з адкрытым зыходным кодам для абсталявання і праграмнага забеспячэння, якая падтрымлівае розныя мікракантролеры, у тым ліку ESP32-C3.
Ён выкарыстоўвае мову C++ і прапануе спрошчаны і стандартызаваны API, які звычайна называюць мовай Arduino. Arduino шырока выкарыстоўваецца ў распрацоўцы прататыпаў і адукацыйных кантэкстах. Ён забяспечвае пашыраемы пакет праграмнага забеспячэння і IDE, якія дазваляюць лёгка кампіляваць і прашываць.
MicroPython: інтэрпрэтатар мовы Python 3, прызначаны для працы на платформах убудаваных мікракантролераў.
Дзякуючы простай мове сцэнарыяў, ён можа атрымаць прамы доступ да перыферыйных рэсурсаў ESP32-C3 (напрыклад, UART, SPI і I2C) і камунікацыйных функцый (такіх як Wi-Fi і Bluetooth LE).
46 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

Гэта спрашчае апаратнае ўзаемадзеянне. MicroPython у спалучэнні з шырокай бібліятэкай матэматычных аперацый Python дазваляе рэалізаваць складаныя алгарытмы на ESP32-C3, палягчаючы распрацоўку прыкладанняў, звязаных са штучным інтэлектам. У якасці сцэнарнай мовы няма неабходнасці ў паўторнай кампіляцыі; могуць быць зроблены мадыфікацыі і скрыпты могуць быць выкананы непасрэдна.
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, праект, які кіруе святлодыёднымі перамыкачамі, у асноўным складаецца з асноўнай праграмы ўваходу і кампанента драйвера, які кіруе GPIO. Калі вы хочаце рэалізаваць святлодыёдны пульт дыстанцыйнага кіравання, вам таксама трэба дадаць Wi-Fi, стэк пратаколаў TCP/IP і г.д.
Сістэма кампіляцыі можа кампіляваць, звязваць і ствараць выкананы файл files (.bin) для кода праз набор правілаў зборкі. Сістэма кампіляцыі версій ESP-IDF v4.0 і вышэй па змаўчанні заснавана на CMake, а сцэнар кампіляцыі CMakeLists.txt можа выкарыстоўвацца для кіравання паводзінамі кода пры кампіляцыі. У дадатак да падтрымкі базавага сінтаксісу CMake, сістэма кампіляцыі ESP-IDF таксама вызначае набор правілаў кампіляцыі па змаўчанні і функцый CMake, і вы можаце напісаць сцэнар кампіляцыі з простымі аператарамі.
4.3.2 Праект File Структура
Праект - гэта папка, якая змяшчае асноўныя кампаненты праграмы, вызначаныя карыстальнікам і files патрабуецца для стварэння выканальных праграм, такіх як сцэнарыі кампіляцыі, канфігурацыя
Глава 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 Comprehensive Guide to IoT

вызначае свае параметры кампіляцыі і залежнасці. У працэсе кампіляцыі кампаненты кампілююцца ў асобныя статычныя бібліятэкі (.a files) і ў канчатковым выніку ў спалучэнні з іншымі кампанентамі для фарміравання прыкладной праграмы.
ESP-IDF забяспечвае важныя функцыі, такія як аперацыйная сістэма, драйверы перыферыйных прылад і стэк сеткавых пратаколаў, у выглядзе кампанентаў. Гэтыя кампаненты захоўваюцца ў каталогу кампанентаў, размешчаным у каранёвым каталогу ESP-IDF. Распрацоўшчыкам не трэба капіраваць гэтыя кампаненты ў каталог кампанентаў myProject. Замест гэтага ім трэба толькі ўказаць адносіны залежнасці гэтых кампанентаў у CMakeLists.txt праекта file выкарыстоўваючы дырэктывы REQUIRES або PRIV_REQUIRES. Сістэма кампіляцыі аўтаматычна знойдзе і скампілюе неабходныя кампаненты.
Такім чынам, каталог кампанентаў у myProject не патрэбны. Ён выкарыстоўваецца толькі для ўключэння некаторых карыстацкіх кампанентаў праекта, якія могуць быць староннімі бібліятэкамі або вызначаным карыстальнікам кодам. Акрамя таго, кампаненты могуць быць атрыманы з любога каталога, акрамя ESP-IDF або бягучага праекта, напрыклад, з праекта з адкрытым зыходным кодам, захаванага ў іншым каталогу. У гэтым выпадку вам трэба толькі дадаць шлях да кампанента, усталяваўшы зменную EXTRA_COMPONENT_DIRS у CMakeLists.txt у каранёвым каталогу. Гэты каталог перавызначае любы кампанент ESP-IDF з такой жа назвай, забяспечваючы выкарыстанне правільнага кампанента.
Уваходная праграма main Галоўны каталог у праекце такі ж file структуру, як і іншыя кампаненты (напрыклад, кампанент1). Аднак ён мае асаблівае значэнне, бо гэта абавязковы кампанент, які павінен прысутнічаць у кожным праекце. Галоўны каталог змяшчае зыходны код праекта і кропку ўваходу ў карыстальніцкую праграму, якая звычайна называецца app_main. Па змаўчанні выкананне карыстальніцкай праграмы пачынаецца з гэтай кропкі ўваходу. Галоўны кампанент таксама адрозніваецца тым, што ён аўтаматычна залежыць ад усіх кампанентаў на шляху пошуку. Такім чынам, няма неабходнасці відавочна ўказваць залежнасці з дапамогай дырэктываў REQUIRES або PRIV_REQUIRES у CMakeLists.txt file.
Канфігурацыя file Каранёвы каталог праекта змяшчае канфігурацыю file называецца sdkconfig, які змяшчае параметры канфігурацыі для ўсіх кампанентаў у праекце. Файл sdkconfig file аўтаматычна ствараецца сістэмай кампіляцыі і можа быць зменены і адноўлены камандай idf.py menuconfig. Параметры menuconfig у асноўным паходзяць з Kconfig.projbuild праекта і Kconfig кампанентаў. Распрацоўшчыкі кампанентаў звычайна дадаюць элементы канфігурацыі ў Kconfig, каб зрабіць кампанент гнуткім і наладжвальным.
Каталог зборкі Па змаўчанні каталог зборкі ў праекце захоўвае прамежкавыя files і fi-
Глава 4. Наладжванне асяроддзя распрацоўкі 49

nal выканальныя праграмы, створаныя камандай зборкі idf.py. Увогуле, неабавязковы прамы доступ да змесціва каталога зборкі. ESP-IDF забяспечвае загадзя вызначаныя каманды для ўзаемадзеяння з каталогам, такія як выкарыстанне каманды idf.py flash для аўтаматычнага пошуку скампіляванага двайковага файла file і запампуйце яго на ўказаны флэш-адрас, або з дапамогай каманды idf.py fullclean, каб ачысціць увесь каталог зборкі.
Табліца падзелаў (partitions.csv) Кожны праект патрабуе табліцы падзелаў для падзелу прасторы флэш-памяці і ўказання памеру і пачатковага адраса выканальнай праграмы і прасторы дадзеных карыстальніка. Каманда idf.py flash або праграма абнаўлення OTA перазагрузіць прашыўку на адпаведны адрас у адпаведнасці з гэтай табліцай. ESP-IDF забяспечвае некалькі табліц падзелаў па змаўчанні ў кампанентах/partition_table, такіх як partitions_singleapp.csv і partitions_two_ ota.csv, якія можна выбраць у menuconfig.
Калі стандартная табліца раздзелаў сістэмы не можа адпавядаць патрабаванням праекта, карыстальніцкі partitions.csv можна дадаць у каталог праекта і выбраць у menuconfig.
4.3.3 Правілы зборкі сістэмы кампіляцыі па змаўчанні
Правілы перавызначэння кампанентаў з такім жа імем У працэсе пошуку кампанентаў сістэма кампіляцыі прытрымліваецца пэўнага парадку. Спачатку ён шукае ўнутраныя кампаненты ESP-IDF, затым шукае кампаненты карыстальніцкага праекта і, нарэшце, шукае кампаненты ў EXTRA_COMPONENT_DIRS. У выпадках, калі некалькі каталогаў утрымліваюць кампаненты з аднолькавым імем, кампанент, знойдзены ў апошнім каталогу, перавызначае ўсе папярэднія кампаненты з такім жа імем. Гэтае правіла дазваляе наладжваць кампаненты ESP-IDF у карыстальніцкім праекце, захоўваючы зыходны код ESP-IDF некранутым.
Правілы для ўключэння агульных кампанентаў па змаўчанні Як было сказана ў раздзеле 4.3.2, кампаненты павінны відавочна ўказваць сваю залежнасць ад іншых кампанентаў у CMakeLists.txt. Тым не менш, агульныя кампаненты, такія як freertos, аўтаматычна ўключаюцца ў сістэму зборкі па змаўчанні, нават калі іх адносіны залежнасці відавочна не вызначаны ў скрыпце кампіляцыі. Агульныя кампаненты ESP-IDF ўключаюць freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv і cxx. Выкарыстанне гэтых агульных кампанентаў дазваляе пазбегнуць паўторнай працы пры напісанні CMakeLists.txt і зрабіць яго больш лаканічным.
Правілы перавызначэння элементаў канфігурацыі Распрацоўшчыкі могуць дадаць параметры канфігурацыі па змаўчанні, дадаўшы канфігурацыю па змаўчанні file названы sdkconfig.defaults для праекта. Напрыкладample, дадаўшы CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

DEFAULT_LEVEL_NONE = y можа наладзіць інтэрфейс UART так, каб не друкаваць даныя журнала па змаўчанні. Акрамя таго, калі для канкрэтнай мэты неабходна ўсталяваць пэўныя параметры, канфігурацыю file з назвай sdkconfig.defaults.TARGET_NAME можна дадаць, дзе TARGET_NAME можа быць esp32s2, esp32c3 і гэтак далей. Гэтыя канфігурацыі files імпартуюцца ў sdkconfig падчас кампіляцыі з агульнай канфігурацыяй па змаўчанні file Спачатку імпартуецца sdkconfig.defaults, а затым мэтавая канфігурацыя file, напрыклад, sdkconfig.defaults.esp32c3. У выпадках, калі ёсць элементы канфігурацыі з такім жа імем, апошняя канфігурацыя file будзе адмяняць ранейшае.
4.3.4 Уводзіны ў скрыпт кампіляцыі
Пры распрацоўцы праекта з выкарыстаннем ESP-IDF распрацоўшчыкам трэба не толькі напісаць зыходны код, але і напісаць CMakeLists.txt для праекта і кампанентаў. CMakeLists.txt - гэта тэкст file, таксама вядомы як скрыпт кампіляцыі, які вызначае шэраг аб'ектаў кампіляцыі, элементаў канфігурацыі кампіляцыі і каманд для кіраўніцтва працэсам кампіляцыі зыходнага кода. Сістэма кампіляцыі ESP-IDF v4.3.2 заснавана на CMake. У дадатак да падтрымкі ўласных функцый і каманд CMake, ён таксама вызначае шэраг карыстальніцкіх функцый, што значна палягчае напісанне сцэнарыяў кампіляцыі.
Скрыпты кампіляцыі ў ESP-IDF у асноўным уключаюць сцэнар кампіляцыі праекта і сцэнарыі кампіляцыі кампанентаў. CMakeLists.txt у каранёвым каталогу праекта называецца сцэнарам кампіляцыі праекта, які кіруе працэсам кампіляцыі ўсяго праекта. Базавы скрыпт кампіляцыі праекта звычайна ўключае наступныя тры радкі:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Сярод іх cmake_minimum_required (ВЕРСІЯ 3.5) павінен быць размешчаны ў першым радку, які выкарыстоўваецца для ўказання мінімальнага нумара версіі CMake, неабходнага для праекта. Новыя версіі CMake, як правіла, зваротна сумяшчальныя са старымі версіямі, таму адкарэктуйце нумар версіі адпаведным чынам пры выкарыстанні новых каманд CMake, каб забяспечыць сумяшчальнасць.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) імпартуе загадзя вызначаныя элементы канфігурацыі і каманды сістэмы кампіляцыі ESP-IDF, уключаючы правілы зборкі сістэмы кампіляцыі па змаўчанні, апісаныя ў раздзеле 4.3.3. project(myProject) стварае сам праект і вызначае яго імя. Гэта імя будзе выкарыстоўвацца ў якасці канчатковага выхаднога двайковага файла file імя, г.зн. myProject.elf і myProject.bin.
Праект можа мець некалькі кампанентаў, уключаючы асноўны кампанент. Каталог верхняга ўзроўню кожнага кампанента змяшчае CMakeLists.txt file, які называецца сцэнарам кампіляцыі кампанентаў. Скрыпты кампіляцыі кампанентаў у асноўным выкарыстоўваюцца для ўказання залежнасцей кампанентаў, параметраў канфігурацыі, зыходнага кода files, і ўключаны загаловак files для
Глава 4. Наладжванне асяроддзя распрацоўкі 51

кампіляцыя. З карыстальніцкай функцыяй idf_component_register ESP-IDF мінімальна неабходны код для скрыпта кампіляцыі кампанента наступны:

1. idf_component_register(SRCS “src1.c”

2.

INCLUDE_DIRS «уключыць»

3.

ПАТРАБУЕЦЦА кампанент 1)

Параметр SRCS змяшчае спіс крыніц files у кампаненце, падзеленыя прабеламі, калі іх некалькі fileс. Параметр INCLUDE_DIRS забяспечвае спіс агульнадаступных загалоўкаў file каталогі для кампанента, якія будуць дададзены ў шлях пошуку іншых кампанентаў, якія залежаць ад бягучага кампанента. Параметр REQUIRES вызначае залежнасці публічнага кампанента для бягучага кампанента. Неабходна, каб кампаненты відавочна ўказвалі, ад якіх кампанентаў яны залежаць, напрыклад, кампанент2 залежыць ад кампанента1. Аднак для галоўнага кампанента, які па змаўчанні залежыць ад усіх кампанентаў, параметр REQUIRES можна апусціць.

Акрамя таго, уласныя каманды CMake таксама можна выкарыстоўваць у скрыпце кампіляцыі. Напрыкладample, выкарыстоўвайце каманду set для ўстанаўлення зменных, такіх як set(VARIABLE “VALUE”).

4.3.5 Уводзіны ў агульныя каманды
ESP-IDF выкарыстоўвае CMake (інструмент канфігурацыі праекта), Ninja (інструмент стварэння праекта) і esptool (інструмент флэш-памяці) у працэсе кампіляцыі кода. Кожны інструмент выконвае розную ролю ў працэсе кампіляцыі, зборкі і флэш-памяці, а таксама падтрымлівае розныя працоўныя каманды. Каб палегчыць працу карыстальніка, ESP-IDF дадае ўніфікаваны інтэрфейс idf.py, які дазваляе хутка выклікаць вышэйпералічаныя каманды.
Перад выкарыстаннем idf.py пераканайцеся, што:
· Зменная асяроддзя IDF_PATH ESP-IDF была дададзена да бягучага тэрмінала. · Каталог выканання каманды - гэта каранёвы каталог праекта, які ўключае
скрыпт кампіляцыі праекта CMakeLists.txt.
Агульныя каманды idf.py наступныя:
· idf.py –дапамога: адлюстраванне спісу каманд і інструкцый па іх выкарыстанні. · idf.py set-target : налада кампіляцыі taidf.py fullcleanrget, такія
як замена з esp32c3. · idf.py menuconfig: запуск menuconfig, тэрмінальная графічная канфігурацыя
інструмент, які можа выбіраць або змяняць параметры канфігурацыі, а вынікі канфігурацыі захоўваюцца ў sdkconfig file. · зборка idf.py: пачатак кампіляцыі кода. Прамежкавы files і канчатковая выкананая праграма, створаная ў выніку кампіляцыі, будуць захаваны ў каталогу зборкі праекта па змаўчанні. Працэс кампіляцыі з'яўляецца паступовым, што азначае, што калі толькі адна крыніца file зменены, толькі зменены file будзе складзена ў наступны раз.

52 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па IoT

· idf.py clean: ачыстка прамежкавага files, створаныя кампіляцыяй праекта. Увесь праект будзе вымушаны скампілявацца ў наступнай кампіляцыі. Звярніце ўвагу, што канфігурацыя CMake і мадыфікацыі канфігурацыі, зробленыя menuconfig, не будуць выдалены падчас ачысткі.
· idf.py fullclean: выдаленне ўсяго каталога зборкі, уключаючы ўвесь выхад канфігурацыі CMake fileс. Пры паўторнай стварэнні праекта CMake наладзіць праект з нуля. Звярніце ўвагу, што гэтая каманда рэкурсіўна выдаліць усе files у каталогу зборкі, таму выкарыстоўвайце яго з асцярожнасцю, і канфігурацыю праекта file не будзе выдалены.
· idf.py flash: прашыўка двайковага файла выканальнай праграмы 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 Практыкаванне: складанне ExampПраграма «Мірганне»
4.4.1 практample Аналіз
У гэтым раздзеле ў якасці прыкладу будзе праграма Blinkampле прааналізаваць file структура і правілы кадавання рэальнага праекта ў дэталях. У праграме Blink рэалізаваны эфект мігцення святлодыёдаў, і праект знаходзіцца ў каталогу examples/get-started/blink, які змяшчае крыніцу file, канфігурацыя files, і некалькі скрыптоў кампіляцыі.
Праект разумнага святла, прадстаўлены ў гэтай кнізе, заснаваны на гэтым прыкладзеampпраграма le. Функцыі будуць паступова дадавацца ў наступных раздзелах, каб канчаткова завяршыць яго.
Зыходны код Каб прадэманстраваць увесь працэс распрацоўкі, праграма Blink была скапіявана ў esp32c3-iot-projects/device firmware/1 blink.
Структура каталогаў праекта blink files паказаны на рысунку 4.15.
Праект blink змяшчае толькі адзін асноўны каталог, які з'яўляецца спецыяльным кампанентам, які
Глава 4. Наладжванне асяроддзя распрацоўкі 53

Малюнак 4.15. File структура каталогаў праекта blink

павінны быць уключаны, як апісана ў раздзеле 4.3.2. Галоўны каталог у асноўным выкарыстоўваецца для захоўвання рэалізацыі функцыі app_main(), якая з'яўляецца кропкай уваходу ў карыстальніцкую праграму. Праект blink не ўключае каталог кампанентаў, таму што гэты прample трэба выкарыстоўваць толькі кампаненты, якія пастаўляюцца з ESP-IDF, і не патрабуе дадатковых кампанентаў. CMakeLists.txt, уключаны ў праект blink, выкарыстоўваецца для кіраўніцтва працэсам кампіляцыі, у той час як Kconfig.projbuild выкарыстоўваецца для дадання элементаў канфігурацыі для гэтага прыкладуample праграма ў menuconfig. Іншыя непатрэбныя files не паўплываюць на кампіляцыю кода, таму яны не будуць абмяркоўвацца тут. Падрабязнае ўвядзенне ў праект blink files заключаецца ў наступным.

1. /*blink.c уключае наступны загаловак fileс*/

2. #уключыць

//Стандартны загаловак бібліятэкі C file

3. #include “freertos/freeRTOS.h” //Галоўны загаловак FreeRTOS file

4. #include «freertos/task.h»

//Загаловак задачы FreeRTOS file

5. #include «sdkconfig.h»

//Загаловак канфігурацыі file згенераваны kconfig

6. #include «driver/gpio.h»

//Загаловак драйвера GPIO file

Крыніца file blink.c змяшчае шэраг загалоўкаў files адпаведнасць аб'яўленай функцыі

цыі. ESP-IDF звычайна прытрымліваецца парадку ўключэння стандартнага загалоўка бібліятэкі files, FreeR-

Загаловак TOS files, загаловак драйвера files, загаловак іншага кампанента files, і загаловак праекта files.

Парадак загалоўка fileуключаныя могуць паўплываць на канчатковы вынік кампіляцыі, таму паспрабуйце

выконваць правілы па змаўчанні. Варта адзначыць, што 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. пустата app_main(пустота)

4. {

5.

/*Наладзіць IO як функцыю GPIO па змаўчанні, уключыць рэжым падцягвання і

6.

адключыць рэжымы ўводу і вываду*/

7.

gpio_reset_pin(BLINK_GPIO);

54 ESP32-C3 Wireless Adventure: поўнае кіраўніцтва па 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”); /*Выключыць святлодыёд (нізкі ўзровень вываду)*/ gpio_set_level(BLINK_GPIO, 0); /*Затрымка (1000 мс)*/ 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. Памер стэка і прыярытэт гэтай задачы можна наладзіць у menuconfig Componentconfig Common ESP-related.

Для такіх простых задач, як мірганне святлодыёда, увесь неабходны код можа быць рэалізаваны непасрэдна ў функцыі app_main(). Звычайна гэта ўключае ініцыялізацыю GPIO, адпаведнага святлодыёду, і выкарыстанне цыкла while(1) для ўключэння і выключэння святлодыёда. Акрамя таго, вы можаце выкарыстоўваць FreeRTOS API для стварэння новай задачы, якая апрацоўвае мігценне святлодыёда. Пасля паспяховага стварэння новай задачы вы можаце выйсці з функцыі app_main().

Змест main/CMakeLists.txt file, які кіруе працэсам кампіляцыі для асноўнага кампанента, выглядае наступным чынам:

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

Сярод іх main/CMakeLists.txt выклікае толькі адну сістэмную функцыю кампіляцыі, гэта idf_component_register. Падобна CMakeLists.txt для большасці іншых кампанентаў, blink.c дадаецца ў SRCS, а зыходны files, дададзеныя ў SRCS, будуць скампіляваны. У той жа час «.», які ўяўляе шлях, дзе знаходзіцца CMakeLists.txt, павінен быць дададзены ў INCLUDE_DIRS у якасці каталогаў пошуку для загалоўка fileс. Змест CMakeLists.txt выглядае наступным чынам:
1. #Укажыце v3.5 як самую старую версію CMake, якая падтрымліваецца бягучым праектам 2. #Версіі, ніжэйшыя за v3.5, павінны быць абноўлены перад працягам кампіляцыі 3. cmake_minimum_required(ВЕРСІЯ 3.5) 4. #Уключыце канфігурацыю CMake па змаўчанні для ESP -Сістэма кампіляцыі IDF

Глава 4. Наладжванне асяроддзя распрацоўкі 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Стварыце праект з назвай “blink” 7. project(myProject)
Сярод іх CMakeLists.txt у каранёвым каталогу ў асноўным уключае $ENV{IDF_ PATH}/tools/cmake/project.cmake, які з'яўляецца асноўнай канфігурацыяй CMake file забяспечваецца ESP-IDF. Выкарыстоўваецца для кан

Дакументы / Рэсурсы

Espressif Systems ESP32-C3 Wireless Adventure [pdfКіраўніцтва карыстальніка
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *