Содержание скрывать
2 Беспроводное приключение ESP32-C3
2.1 Комплексное руководство по Интернету вещей

Беспроводное приключение ESP32-C3

Беспроводное приключение ESP32-C3

Комплексное руководство по Интернету вещей

Эспрессиф Системы 12 июня 2023 г.

Технические характеристики

  • Продукт: Беспроводное приключение ESP32-C3
  • Производитель: Эспрессиф Системс
  • Дата: 12 июня 2023 г.

Инструкции по применению продукта

Подготовка

Прежде чем использовать ESP32-C3 Wireless Adventure, убедитесь, что вы
знакомы с концепциями и архитектурой Интернета вещей. Это поможет
вы понимаете, как устройство вписывается в более крупную экосистему Интернета вещей
и его потенциальное применение в умных домах.

Введение и практика проектов Интернета вещей

В этом разделе вы узнаете о типичных IoT-проектах,
включая базовые модули для распространенных устройств Интернета вещей, базовые модули
клиентских приложений и распространенных облачных платформ Интернета вещей. Это будет
предоставить вам основу для понимания и создания вашего
собственные IoT-проекты.

Практика: Проект «Умный свет»

В этом практическом проекте вы узнаете, как создать умный
свет с помощью ESP32-C3 Wireless Adventure. Структура проекта,
функции, подготовка оборудования и процесс разработки будут
объяснил подробно.

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

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

Функции проекта

Проект умного освещения позволяет контролировать яркость и
цвет светодиодов удаленно через мобильное приложение или web
интерфейс.

Подготовка оборудования

Для подготовки проекта вам необходимо собрать
необходимые аппаратные компоненты, такие как ESP32-C3 Wireless
Доска приключений, светодиоды, резисторы и блок питания.

Процесс разработки

Процесс разработки включает в себя настройку разработки
среде, написание кода для управления светодиодами, подключение к
облачный бэкэнд и тестирование функциональности смарта
свет.

Введение в ESP RainMaker

ESP RainMaker — мощный фреймворк для разработки IoT
устройства. В этом разделе вы узнаете, что такое ESP RainMaker и
как это можно реализовать в ваших проектах.

Что такое ESP RainMaker?

ESP RainMaker — это облачная платформа, предоставляющая набор
инструменты и услуги для создания и управления устройствами Интернета вещей.

Реализация ESP RainMaker

В этом разделе описаны различные компоненты, участвующие в
внедрение ESP RainMaker, включая службу подачи заявок,
Агент RainMaker, облачный сервер и клиент RainMaker.

Практика: ключевые моменты разработки с помощью ESP RainMaker

В этом практическом разделе вы узнаете о ключевых моментах
учитывайте это при разработке с помощью ESP RainMaker. Сюда входит устройство
утверждение, синхронизация данных и управление пользователями.

Особенности ESP RainMaker

ESP RainMaker предлагает различные функции для управления пользователями, а также
пользователи и администраторы. Эти функции позволяют легко
настройка, удаленное управление и мониторинг.

Настройка среды разработки

В этом разделе представлен болееview ESP-IDF (Espressif IoT
Development Framework), которая является официальной средой разработки.
для устройств на базе ESP32. Он объясняет различные версии
ESP-IDF и как настроить среду разработки.

Разработка оборудования и драйверов

Аппаратное обеспечение интеллектуальных световых приборов на базе ESP32-C3

В этом разделе основное внимание уделяется аппаратному обеспечению интеллектуального освещения.
продукты на базе ESP32-C3 Wireless Adventure. Он охватывает
особенности и состав интеллектуальных световых продуктов, а также
аппаратный дизайн базовой системы ESP32-C3.

Особенности и состав продуктов Smart Light

В этом подразделе описаны функции и компоненты, которые делают
вверх умные световые продукты. В нем обсуждаются различные функциональные возможности
и соображения дизайна для создания умного освещения.

Аппаратное обеспечение базовой системы ESP32-C3

Аппаратная часть базовой системы ESP32-C3 включает в себя питание
питание, последовательность включения, сброс системы, флэш-память SPI, источник синхронизации,
а также вопросы радиочастот и антенн. В этом подразделе представлены
подробную информацию по этим аспектам.

Часто задаваемые вопросы

Вопрос: Что такое ESP RainMaker?

О: ESP RainMaker — это облачная платформа, предоставляющая инструменты
и услуги для создания и управления устройствами Интернета вещей. Это упрощает
процесс разработки и позволяет легко настраивать устройства, удаленно
контроль и мониторинг.

Вопрос: Как настроить среду разработки для
ЭСП32-С3?

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

Вопрос: Каковы особенности ESP RainMaker?

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

Беспроводное приключение ESP32-C3
Комплексное руководство по Интернету вещей
Эспрессиф Системы 12 июня 2023 г.

Содержание

Я Подготовка

1

1 Введение в Интернет вещей

3

1.1 Архитектура Интернета вещей. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Применение Интернета вещей в «умных домах». . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Введение и практика проектов Интернета вещей

9

2.1 Введение в типичные проекты Интернета вещей. . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Базовые модули для распространенных устройств Интернета вещей . . . . . . . . . . . . . . . . . 9

2.1.2 Базовые модули клиентских приложений. . . . . . . . . . . . . . . . . . . 10

2.1.3 Введение в общие облачные платформы Интернета вещей. . . . . . . . . . . . . . 11

2.2 Практика: проект «Умный свет». . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

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

2.2.2 Функции проекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Подготовка оборудования. . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Процесс разработки. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Знакомство с ESP RainMaker

19

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

3.2 Реализация ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Служба подачи претензий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

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

3.2.3 Облачный сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

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

3.3 Практика: ключевые моменты разработки с помощью ESP RainMaker. . . . . . . . . . . . 25

3.4 Возможности ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Управление пользователями. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Функции конечного пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Функции администратора. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Настройка среды разработки

31

4.1 ESP-IDF оконченview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

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

3

4.1.2 Рабочий процесс ESP-IDF Git. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Выбор подходящей версии . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Большеview каталога ESP-IDF SDK. . . . . . . . . . . . . . . . . . . . 34 4.2 Настройка среды разработки ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Настройка среды разработки ESP-IDF в Linux . . . . . . . . 38 4.2.2 Настройка среды разработки ESP-IDF в Windows . . . . . . 40 4.2.3 Настройка среды разработки ESP-IDF на Mac . . . . . . . . . 45 4.2.4 Установка VS Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Введение в сторонние среды разработки . . . . . . . . 46 4.3 Система компиляции ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Основные понятия системы компиляции . . . . . . . . . . . . . . . . . . 47 4.3.2 Проект File Состав . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Правила сборки по умолчанию системы компиляции . . . . . . . . . . . . . 50 4.3.4 Знакомство со сценарием компиляции . . . . . . . . . . . . . . . . . . 51 4.3.5 Введение в общие команды . . . . . . . . . . . . . . . . . . . 52 4.4 Практика: составление примеровampПрограмма «Мигание». . . . . . . . . . . . . . . . . . 53 4.4.1 Пр.ampле Анализ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Компиляция программы Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Прошивка программы 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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Мягкая точка доступа. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 СмартКонфиг. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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.2tagметоды местного контроля. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Обнаружение контролируемых устройств с помощью смартфонов. . . . . . . . . . 161

8.1.4 Передача данных между смартфонами и устройствами. . . . . . . . 162

8.2 Общие методы локального обнаружения. . . . . . . . . . . . . . . . . . . . . . . . 162

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

8.2.2 Многоадресная рассылка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2.3 Сравнение широковещательной и многоадресной рассылки. . . . . . . . . . . . . . 176

8.2.4 Протокол многоадресного приложения mDNS для локального обнаружения. . . . . . . . 176

8.3 Общие протоколы передачи локальных данных. . . . . . . . . . . . . . . 179

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

8.3.2 Протокол передачи гипертекста (HTTP). . . . . . . . . . . . . . . . . . . 185

8.3.3 Пользователь ДаtagПротокол оперативной памяти (UDP). . . . . . . . . . . . . . . . . . . . . . 189

8.3.4 Протокол ограниченных приложений (CoAP). . . . . . . . . . . . . . . . 192

8.3.5 Протокол 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 Broker в Linux и Windows . . . . . . . . . . . . 233 9.2.6 Настройка MQTT-клиента на основе ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Обеспечение безопасности данных MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Значение и функции сертификатов . . . . . . . . . . . . . . . . . . . 237 9.3.2 Локальная генерация сертификатов . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Настройка MQTT-брокера . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Настройка клиента MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Практика: Дистанционное управление через ESP RainMaker. . . . . . . . . . . . . . . . 243 9.4.1 Основы ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Протокол связи узла и серверной части облака . . . . . . . . . . . 244 9.4.3 Связь между клиентом и облачным сервером . . . . . . . . . . . 249 9.4.4 Роли пользователей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Базовые услуги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 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 Механизма ОТА. . . . . . . . . . . . . . . . . . . . . 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 безопасности данных устройств Интернета вещей. . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 Зачем защищать данные устройств Интернета вещей? . . . . . . . . . . . . . . . . . . . . . . 370

13.1.2 Основные требования к безопасности данных устройств IoT. . . . . . . . . . . . 371

13.2 Защита целостности данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

13.2.1 Введение в метод проверки целостности. . . . . . . . . . . . . . 372

13.2.2 Проверка целостности данных встроенного ПО. . . . . . . . . . . . . . . . . . 373

13.2.3 пр.ampле. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Защита конфиденциальности данных. . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Введение в шифрование данных. . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Введение в схему флэш-шифрования. . . . . . . . . . . . . . . . . 376

13.3.3 Хранение ключей флэш-шифрования . . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Рабочий режим флэш-шифрования. . . . . . . . . . . . . . . . . . . . 380

13.3.5 Процесс флэш-шифрования . . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 Введение в шифрование NVS. . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 пр.ampфайлы Flash Encryption и NVS Encryption. . . . . . . . . . . 384

13.4 Защита законности данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 Введение в цифровую подпись. . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Болееview схемы безопасной загрузки. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Введение в безопасную загрузку программного обеспечения. . . . . . . . . . . . . . . . . . . 388 13.4.4 Введение в аппаратную безопасную загрузку . . . . . . . . . . . . . . . . . . 390 13.4.5 Исх.ampле. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Практика: функции безопасности в массовом производстве. . . . . . . . . . . . . . . . . . 396 13.5.1 Флэш-шифрование и безопасная загрузка . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Включение флэш-шифрования и безопасной загрузки с помощью инструментов пакетной прошивки . . 397 13.5.3 Включение флэш-шифрования и безопасной загрузки в проекте Smart Light . . . 398 13.6 Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Запись и тестирование прошивки для массового производства

399

14.1 Запись прошивки при массовом производстве. . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Определение разделов данных. . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Запись прошивки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Испытание массового производства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Практика: данные массового производства в проекте Smart Light. . . . . . . . . . . . . 404

14.4 Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 идей ESP: платформа удаленного мониторинга

405

15.1 Введение в ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 Начало работы с ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 Начало работы с ESP Insights в проекте esp-insights. . . . . . 409

15.2.2 Запуск Example в проекте esp-insights. . . . . . . . . . . . . . . 411

15.2.3 Сообщение информации дампа памяти . . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Настройка интересующих журналов. . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Сообщение о причине перезагрузки . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Отчетность по специальным метрикам. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Практика: использование ESP Insights в проекте Smart Light. . . . . . . . . . . . . . . 416

15.4 Резюме. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Введение
ESP32-C3 — это одноядерный микроконтроллер Wi-Fi и Bluetooth 5 (LE), основанный на архитектуре RISC-V с открытым исходным кодом. Он обеспечивает правильный баланс мощности, возможностей ввода-вывода и безопасности, предлагая тем самым оптимальное экономичное решение для подключенных устройств. Чтобы показать различные применения семейства ESP32-C3, эта книга Espressif отправит вас в интересное путешествие по AIoT, начиная с основ разработки проектов IoT и настройки среды до практических примеров.ampле. Первые четыре главы посвящены Интернету вещей, ESP RainMaker и ESP-IDF. Главы 5 и 6 кратко посвящены проектированию аппаратного обеспечения и разработке драйверов. По мере продвижения вы узнаете, как настроить свой проект через сети Wi-Fi и мобильные приложения. Наконец, вы научитесь оптимизировать свой проект и запустить его в массовое производство.
Если вы инженер в смежных областях, архитектор программного обеспечения, преподаватель, студент или любой, кто интересуется Интернетом вещей, эта книга для вас.
Вы можете скачать код exampВ этой книге используется файл с сайта Espressif на GitHub. Для получения последней информации о развитии IoT посетите наш официальный аккаунт.

Предисловие
Информативный мир
На волне Интернета состоялся грандиозный дебют Интернета вещей (IoT), став новым типом инфраструктуры в цифровой экономике. Чтобы сделать технологию доступной для общественности, Espressif Systems работает над тем, чтобы разработчики из всех слоев общества могли использовать Интернет вещей для решения некоторых из наиболее насущных проблем нашего времени. Мир «Интеллектуальной сети всех вещей» — это то, чего мы ожидаем от будущего.
Разработка собственных чипов является важнейшим компонентом этого видения. Это будет марафон, требующий постоянных прорывов в преодолении технологических границ. От «Game Changer» ESP8266 до серии ESP32, интегрирующей подключение Wi-Fi и Bluetooth (LE), а затем ESP32-S3, оснащенной ускорением искусственного интеллекта, Espressif никогда не прекращает исследования и разработку продуктов для решений AIoT. С помощью нашего программного обеспечения с открытым исходным кодом, такого как платформа разработки IoT ESP-IDF, платформа разработки Mesh ESP-MDF и платформа подключения устройств ESP RainMaker, мы создали независимую платформу для создания приложений AIoT.
По состоянию на июль 2022 года совокупные поставки чипсетов IoT от Espressif превысили 800 миллионов, что является лидером на рынке микроконтроллеров Wi-Fi и обеспечивает питание огромного количества подключенных устройств по всему миру. Стремление к совершенству делает каждый продукт Espressif хитом благодаря высокому уровню интеграции и экономической эффективности. Выпуск ESP32-C3 знаменует собой важную веху в развитии собственной технологии Espressif. Это одноядерный 32-разрядный микроконтроллер на базе RISC-V с 400 КБ SRAM, который может работать на частоте 160 МГц. Он оснащен встроенным Wi-Fi 2.4 ГГц и Bluetooth 5 (LE) с поддержкой большого радиуса действия. Он обеспечивает прекрасный баланс мощности, возможностей ввода-вывода и безопасности, предлагая тем самым оптимальное экономичное решение для подключенных устройств. Эта книга, основанная на таком мощном ESP32-C3, призвана помочь читателям понять знания, связанные с Интернетом вещей, с подробными иллюстрациями и практическими примерами.ampлес.
Почему мы написали эту книгу?
Espressif Systems — это больше, чем просто компания по производству полупроводников. Это также компания, занимающаяся платформами IoT, которая всегда стремится к прорывам и инновациям в области технологий. В то же время Espressif открыла исходный код и поделилась с сообществом своей собственной операционной системой и программной средой, образуя уникальную экосистему. Инженеры, производители и энтузиасты технологий активно разрабатывают новые программные приложения на основе продуктов Espressif, свободно общаются и делятся своим опытом. Вы постоянно можете увидеть увлекательные идеи разработчиков на различных платформах, таких как YouTube и GitHub. Популярность продуктов Espressif стимулировала рост числа авторов, которые выпустили более 100 книг на базе чипсетов Espressif на более чем десяти языках, включая английский, китайский, немецкий, французский и японский.

Именно поддержка и доверие партнеров сообщества способствуют постоянным инновациям Espressif. «Мы стремимся сделать наши чипы, операционные системы, платформы, решения, облачные технологии, бизнес-практики, инструменты, документацию, статьи, идеи и т. д. еще более соответствующими ответам, которые нужны людям в самых насущных проблемах современной жизни. Это высшие амбиции и моральные ориентиры Espressif». сказал г-н Тео Суи Энн, основатель и генеральный директор Espressif.
Эспрессиф ценит чтение и идеи. Поскольку постоянное обновление технологий Интернета вещей предъявляет более высокие требования к инженерам, как мы можем помочь большему количеству людей быстро освоить чипы Интернета вещей, операционные системы, программные платформы, схемы приложений и продукты облачных сервисов? Как говорится, лучше научить человека ловить рыбу, чем давать ему рыбу. В ходе мозгового штурма нам пришло в голову, что мы могли бы написать книгу, чтобы систематически разобраться в ключевых знаниях о разработке Интернета вещей. Мы нашли общий язык, быстро собрали группу старших инженеров и объединили опыт технической команды в области встроенного программирования, разработки аппаратного и программного обеспечения Интернета вещей, что способствовало публикации этой книги. В процессе написания мы изо всех сил старались быть объективными и справедливыми, избавляясь от кокона и используя краткие выражения, чтобы рассказать о сложности и очаровании Интернета вещей. Мы тщательно суммировали общие вопросы, обратились к отзывам и предложениям сообщества, чтобы четко ответить на вопросы, возникающие в процессе разработки, и предоставить практические рекомендации по разработке Интернета вещей для соответствующих технических специалистов и лиц, принимающих решения.
Структура книги
В этой книге рассматривается инженерно-ориентированная перспектива и шаг за шагом излагаются необходимые знания для разработки проектов Интернета вещей. Он состоит из четырех частей, а именно:
· Подготовка (глава 1). Эта часть знакомит с архитектурой Интернета вещей, типичной структурой проекта Интернета вещей, облачной платформой ESP RainMakerr и средой разработки ESP-IDF, чтобы заложить прочную основу для разработки проектов Интернета вещей.
· Разработка аппаратного обеспечения и драйверов (глава 5). На основе набора микросхем ESP6-C32 в этой части подробно описывается минимальная аппаратная система и разработка драйверов, а также реализуется управление затемнением, градацией цвета и беспроводной связью.
· Беспроводная связь и управление (глава 7). В этой части объясняется схема интеллектуальной конфигурации Wi-Fi на основе чипа ESP11-C32, протоколов локального и облачного управления, а также локального и удаленного управления устройствами. Он также предоставляет схемы для разработки приложений для смартфонов, обновления прошивки и управления версиями.
· Оптимизация и массовое производство (главы 12–15). Эта часть предназначена для продвинутых приложений Интернета вещей с упором на оптимизацию продуктов в области управления питанием, оптимизацию низкого энергопотребления и повышенную безопасность. В нем также рассказывается о записи и тестировании прошивки в массовом производстве, а также о том, как диагностировать рабочее состояние и журналы прошивки устройства с помощью платформы удаленного мониторинга ESP Insights.

Об исходном коде
Читатели могут запустить exampЗапустите программы из этой книги, введя код вручную или используя исходный код, прилагаемый к книге. Мы подчеркиваем сочетание теории и практики и поэтому почти в каждой главе размещаем раздел «Практика», основанный на проекте «Умный свет». Все коды находятся в открытом доступе. Читатели могут загрузить исходный код и обсудить его в разделах, связанных с этой книгой, на GitHub и на нашем официальном форуме esp32.com. На код этой книги с открытым исходным кодом распространяются условия лицензии Apache License 2.0.
Примечание автора
Эта книга официально выпущена Espressif Systems и написана старшими инженерами компании. Он подходит для менеджеров и сотрудников исследований и разработок в отраслях, связанных с Интернетом вещей, преподавателей и студентов смежных специальностей, а также энтузиастов в области Интернета вещей. Мы надеемся, что эта книга сможет послужить и руководством, и справочником, и настольной книгой, и хорошим наставником и другом.
При составлении этой книги мы ссылались на некоторые соответствующие результаты исследований экспертов, ученых и технических специалистов в стране и за рубежом и постарались процитировать их в соответствии с академическими нормами. Однако неизбежны некоторые упущения, поэтому здесь мы хотели бы выразить глубокое уважение и благодарность всем соответствующим авторам. Кроме того, мы цитировали информацию из Интернета, поэтому хотели бы поблагодарить первоначальных авторов и издателей и извиниться за то, что не можем указать источник каждой информации.
Чтобы выпустить книгу высокого качества, мы организовали раунды внутренних обсуждений и извлекли уроки из предложений и отзывов читателей и редакторов издателей. Здесь мы хотели бы еще раз поблагодарить вас за вашу помощь, которая способствовала этой успешной работе.
И последнее, но самое важное: спасибо всем сотрудникам Espressif, которые так усердно работали над рождением и популяризацией нашей продукции.
Разработка проектов Интернета вещей требует широкого спектра знаний. Ограничения неизбежны, поскольку они ограничены объемом книги, а также уровнем и опытом автора. Поэтому мы убедительно просим экспертов и читателей покритиковать и исправить наши ошибки. Если у вас есть предложения по этой книге, напишите нам по адресу book@espressif.com. Мы с нетерпением ждем ваших отзывов.

Как пользоваться этой книгой?
Код проектов в этой книге находится в открытом доступе. Вы можете скачать его из нашего репозитория GitHub и поделиться своими мыслями и вопросами на нашем официальном форуме. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Форум: https://www.esp32.com/bookc3 На протяжении всей книги будут выделены части, как показано ниже.
Исходный код В этой книге мы уделяем особое внимание сочетанию теории и практики и поэтому практически в каждой главе помещаем раздел «Практика», посвященный проекту Smart Light. Соответствующие шаги и исходная страница будут отмечены между двумя строками, начинающимися с tag Исходный код.
ПРИМЕЧАНИЕ/СОВЕТЫ Здесь вы можете найти важную информацию и напоминания для успешной отладки вашей программы. Они будут отмечены между двумя толстыми линиями, начиная с tag ПРИМЕЧАНИЕ или СОВЕТЫ.
Большинство команд в этой книге выполняются под Linux и вызываются символом «$». Если для выполнения команды требуются права суперпользователя, приглашение будет заменено на «#». Командная строка в системах Mac — «%», как указано в разделе 4.2.3 «Установка ESP-IDF на Mac».
Основной текст в этой книге будет напечатан в Charter, а код ex.ampфайлы, компоненты, функции, переменные, код file имена, каталоги кода и строки будут в Courier New.
Команды или тексты, которые необходимо ввести пользователю, а также команды, которые можно ввести нажатием клавиши «Ввод», будут напечатаны жирным шрифтом Courier New. Журналы и блоки кода будут представлены в голубых прямоугольниках.
Exampль:
Во-вторых, используйте esp-idf/comComponents/nvs flash/nvs раздел генератор/nvs раздел gen.py для создания двоичного файла раздела NVS. file на хосте разработки с помощью следующей команды:
$ python $IDF PATH/comComponents/nvs flash/генератор разделов nvs/раздел nvs gen.py –input Mass prod.csv –output Mass prod.bin –size РАЗМЕР РАЗДЕЛА NVS

Глава 1

Введение

к

Интернет вещей

В конце 20-го века, с развитием компьютерных сетей и коммуникационных технологий, Интернет быстро интегрировался в жизнь людей. По мере развития интернет-технологий родилась идея Интернета вещей (IoT). Буквально IoT означает Интернет, в котором все взаимосвязано. В то время как первоначальный Интернет разрушает границы пространства и времени и сокращает расстояние между «человеком и человеком», Интернет вещей делает «вещи» важным участником, сближая «людей» и «вещи». В обозримом будущем Интернет вещей станет движущей силой информационной индустрии.
Итак, что же такое Интернет вещей?
Трудно дать точное определение Интернету вещей, поскольку его значение и масштабы постоянно меняются. В 1995 году Билл Гейтс впервые высказал идею Интернета вещей в своей книге «Дорога вперед». Проще говоря, Интернет вещей позволяет объектам обмениваться информацией друг с другом через Интернет. Его конечная цель — создание «Интернета всего». Это ранняя интерпретация Интернета вещей, а также фантазия о технологиях будущего. Тридцать лет спустя, с бурным развитием экономики и технологий, фантазия становится реальностью. Постоянно появляются новые концепции: от интеллектуальных устройств, умных домов, умных городов, Интернета транспортных средств и носимых устройств до «метавселенной», поддерживаемой технологиями Интернета вещей. В этой главе мы начнем с объяснения архитектуры Интернета вещей, а затем представим наиболее распространенное приложение Интернета вещей — умный дом, чтобы помочь вам получить четкое представление об Интернете вещей.
1.1 Архитектура Интернета вещей
Интернет вещей включает в себя множество технологий, которые имеют разные потребности применения и формы в разных отраслях. Чтобы разобраться в структуре, ключевых технологиях и характеристиках приложений Интернета вещей, необходимо создать единую архитектуру и стандартную техническую систему. В этой книге архитектура Интернета вещей просто разделена на четыре уровня: уровень восприятия и управления, сетевой уровень, уровень платформы и уровень приложений.
Уровень восприятия и управления Являясь самым базовым элементом архитектуры Интернета вещей, уровень восприятия и управления является ядром для реализации комплексного анализа Интернета вещей. Его основная функция – сбор, идентификация и контроль информации. Он состоит из множества устройств, обладающих способностью восприятия,
3

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

доступные ресурсы, такие как производительность обработки, емкость хранилища, скорость сети и т. д., поэтому необходимо выбрать протокол связи, который занимает меньше ресурсов в приложениях IoT. Сегодня широко используются два протокола связи: транспорт телеметрии очереди сообщений (MQTT) и протокол ограниченных приложений (CoAP).
Уровень платформы Уровень платформы в основном относится к облачным платформам Интернета вещей. Когда все терминалы IoT подключены к сети, их данные необходимо агрегировать на облачной платформе IoT для расчета и хранения. Уровень платформы в основном поддерживает приложения IoT для облегчения доступа и управления массивными устройствами. Он подключает терминалы IoT к облачной платформе, собирает данные терминала и выдает команды терминалам для реализации удаленного управления. В качестве промежуточной услуги по назначению оборудования для промышленных приложений уровень платформы играет связующую роль во всей архитектуре Интернета вещей, неся абстрактную бизнес-логику и стандартизированную базовую модель данных, которые могут не только реализовать быстрый доступ к устройствам, но и предоставить мощные модульные возможности. для удовлетворения различных потребностей в сценариях промышленного применения. Уровень платформы в основном включает функциональные модули, такие как доступ к устройствам, управление устройствами, управление безопасностью, передача сообщений, мониторинг эксплуатации и обслуживания, а также приложения для обработки данных.
· Доступ к устройствам, реализующий соединение и связь между терминалами и облачными платформами IoT.
· Управление устройствами, включая такие функции, как создание устройств, обслуживание устройств, преобразование данных, синхронизация данных и распространение устройств.
· Управление безопасностью, обеспечение безопасности передачи данных IoT с точки зрения безопасности аутентификации и безопасности связи.
· Передача сообщений, включая три направления передачи, то есть терминал отправляет данные на облачную платформу IoT, облачная платформа IoT отправляет данные на сервер или другие облачные платформы IoT, а серверная часть удаленно управляет устройствами IoT.
· Мониторинг эксплуатации и обслуживания, включая мониторинг и диагностику, обновление встроенного ПО, онлайн-отладку, услуги журналов и т. д.
· Приложения данных, включающие хранение, анализ и применение данных.
Уровень приложения Уровень приложения использует данные уровня платформы для управления приложением, их фильтрации и обработки с помощью таких инструментов, как базы данных и программное обеспечение для анализа. Полученные данные могут быть использованы для реальных приложений Интернета вещей, таких как «умное здравоохранение», «умное сельское хозяйство», «умные дома» и «умные города».
Конечно, архитектуру Интернета вещей можно разделить на большее количество уровней, но независимо от того, из скольких слоев она состоит, основной принцип остается по существу тем же. Обучение
Глава 1. Введение в Интернет вещей 5

об архитектуре Интернета вещей помогает углубить наше понимание технологий Интернета вещей и создать полнофункциональные проекты Интернета вещей.
1.2 Применение Интернета вещей в «умных домах»
Интернет вещей проник во все сферы жизни, и наиболее тесно связанным с нами приложением Интернета вещей является умный дом. Многие традиционные бытовые приборы теперь оснащены одним или несколькими устройствами Интернета вещей, а многие недавно построенные дома с самого начала проектируются с использованием технологий Интернета вещей. На рис. 1.1 показаны некоторые распространенные устройства умного дома.
Рисунок 1.1. Распространенные устройства «умного дома» Разработку «умного дома» можно просто разделить на «умные» продукты.tagе, взаимосвязь сцен stagе и умные stagе, как показано на рисунке 1.2.
Рисунок 1.2. Развитиеtagе умного дома 6 Беспроводное приключение ESP32-C3: комплексное руководство по Интернету вещей

Первый сtagРечь идет об умных продуктах. В отличие от традиционных домов, в «умных домах» устройства IoT принимают сигналы с помощью датчиков и подключаются к сети с помощью технологий беспроводной связи, таких как Wi-Fi, Bluetooth LE и ZigBee. Пользователи могут управлять интеллектуальными продуктами различными способами, например, с помощью приложений для смартфонов, голосовых помощников, управления интеллектуальными динамиками и т. д.tage фокусируется на взаимосвязи сцен. В этом сtagе, разработчики больше не рассматривают возможность управления одним интеллектуальным продуктом, а рассматривают возможность объединения двух или более интеллектуальных продуктов, автоматизации в определенной степени и, наконец, формирования пользовательского режима сцены. Для бывшегоampТо есть, когда пользователь нажимает любую кнопку сюжетного режима, освещение, шторы и кондиционеры автоматически адаптируются к предустановкам. Конечно, необходимо, чтобы логика связи была легко настроена, включая условия запуска и действия выполнения. Представьте, что режим обогрева кондиционером срабатывает, когда температура в помещении падает ниже 10°C; что в 7 часов утра включается музыка, чтобы разбудить пользователя, открываются умные шторы и включается рисоварка или тостер для хлеба через умную розетку; как только пользователь встает и заканчивает мытье, завтрак уже подан, так что задержки с выходом на работу не будет. Насколько удобной стала наша жизнь! Третий сtagе идет в разведкуtagе. По мере доступа к большему количеству устройств «умного дома» будут меняться и типы генерируемых данных. С помощью облачных вычислений, больших данных и искусственного интеллекта в умные дома как будто был внедрен «более умный мозг», который больше не требует частых команд от пользователя. Они собирают данные о предыдущих взаимодействиях и изучают модели поведения и предпочтения пользователя, чтобы автоматизировать действия, включая предоставление рекомендаций для принятия решений. В настоящее время большинство умных домов находятся на месте межсетевого соединения.tagе. По мере роста уровня проникновения и интеллекта интеллектуальных продуктов барьеры между протоколами связи устраняются. В будущем умные дома обязательно станут по-настоящему «умными», как система искусственного интеллекта Джарвиса в «Железном человеке», которая сможет не только помогать пользователю управлять различными устройствами, решать повседневные дела, но также обладать супервычислительной мощностью и способностью мыслить. В интеллектуальномtagе, люди будут получать лучшие услуги как по количеству, так и по качеству.
Глава 1. Введение в Интернет вещей 7

8 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Глава Введение и практика двух проектов Интернета вещей
В главе 1 мы представили архитектуру Интернета вещей, а также роли и взаимосвязи уровня восприятия и управления, сетевого уровня, уровня платформы и уровня приложений, а также разработку умного дома. Однако, как и когда мы учимся рисовать, теоретических знаний недостаточно. Нам приходится «запачкать руки», чтобы реализовать проекты IoT на практике, чтобы по-настоящему овладеть технологией. Кроме того, когда проект переходит в массовое производствоtagе, необходимо учитывать больше факторов, таких как сетевое подключение, конфигурация, взаимодействие с облачной платформой IoT, управление и обновления встроенного ПО, управление массовым производством и конфигурация безопасности. Итак, на что нам нужно обратить внимание при разработке полноценного проекта Интернета вещей? В главе 1 мы упоминали, что умный дом — это один из наиболее распространенных сценариев применения Интернета вещей, а умное освещение — одно из самых простых и практичных устройств, которые можно использовать дома, в гостиницах, спортивных залах, больницах и т. д. В этой книге мы возьмем за отправную точку создание проекта интеллектуального освещения, объясним его компоненты и особенности и предоставим рекомендации по разработке проекта. Мы надеемся, что вы сможете сделать выводы из этого случая и создать больше приложений Интернета вещей.
2.1 Введение в типичные проекты Интернета вещей
С точки зрения разработки основные функциональные модули проектов Интернета вещей можно разделить на разработку программного и аппаратного обеспечения устройств Интернета вещей, разработку клиентских приложений и разработку облачной платформы Интернета вещей. Важно уточнить основные функциональные модули, которые будут далее описаны в этом разделе.
2.1.1 Базовые модули для распространенных устройств Интернета вещей
Программно-аппаратная разработка IoT-устройств включает в себя следующие базовые модули: Сбор данных.
Являясь нижним уровнем архитектуры Интернета вещей, устройства Интернета вещей уровня восприятия и управления соединяют датчики и устройства через свои микросхемы и периферийные устройства для сбора данных и управления операциями.
9

Привязка учетной записи и первоначальная настройка Для большинства устройств IoT привязка учетной записи и первоначальная настройка выполняются в рамках одного рабочего процесса, напримерample, соединяя устройства с пользователями путем настройки сети Wi-Fi.
Взаимодействие с облачными платформами IoT. Для мониторинга и управления устройствами IoT также необходимо подключить их к облачным платформам IoT, чтобы подавать команды и сообщать о состоянии посредством взаимодействия друг с другом.
Управление устройствами При подключении к облачным платформам Интернета вещей устройства могут взаимодействовать с облаком, а также регистрироваться, привязываться или управляться. Пользователи могут запрашивать статус продукта и выполнять другие операции в приложении для смартфона через облачные платформы IoT или локальные протоколы связи.
Обновление прошивки Устройства Интернета вещей также могут обновлять прошивку в соответствии с потребностями производителей. Получая команды, отправленные из облака, будет осуществляться обновление прошивки и управление версиями. Благодаря этой функции обновления встроенного ПО вы можете постоянно улучшать функции устройств Интернета вещей, исправлять дефекты и улучшать удобство использования.
2.1.2 Базовые модули клиентских приложений
Клиентские приложения (например, приложения для смартфонов) в основном включают в себя следующие базовые модули:
Система учетных записей и авторизация. Поддерживает авторизацию учетных записей и устройств.
Управление устройством Приложения для смартфонов обычно оснащены функциями управления. Пользователи могут легко подключаться к устройствам Интернета вещей и управлять ими в любое время и в любом месте с помощью приложений для смартфонов. В реальном умном доме устройства в основном управляются с помощью приложений для смартфонов, что не только обеспечивает интеллектуальное управление устройствами, но и экономит затраты на рабочую силу. Таким образом, управление устройствами является обязательным для клиентских приложений, таких как управление атрибутами функций устройства, управление сценами, планирование, дистанционное управление, привязка устройств и т. д. Пользователи умного дома также могут настраивать сцены в соответствии с личными потребностями, управляя освещением, бытовой техникой, входом. и т. д., чтобы сделать домашнюю жизнь более комфортной и удобной. Они могут запрограммировать кондиционер, выключить его удаленно, включить свет в коридоре автоматически после открытия двери или переключиться в режим «кинотеатр» с помощью одной единственной кнопки.
Приложения Notification Client обновляют состояние устройств Интернета вещей в режиме реального времени и отправляют оповещения, когда устройства выходят из строя.
10 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Послепродажное обслуживание клиентов Приложения для смартфонов могут предоставлять послепродажное обслуживание продуктов, своевременно решать проблемы, связанные с сбоями устройств IoT и техническими операциями.
Рекомендуемые функции Для удовлетворения потребностей различных пользователей могут быть добавлены другие функции, такие как встряхивание, NFC, GPS и т. д. GPS может помочь установить точность операций сцены в зависимости от местоположения и расстояния, а функция встряхивания позволяет пользователям устанавливать команды, которые необходимо выполнить для конкретного устройства или сцены путем встряхивания.
2.1.3 Введение в распространенные облачные платформы Интернета вещей
Облачная платформа IoT — это универсальная платформа, которая объединяет такие функции, как управление устройствами, передача данных для обеспечения безопасности и управление уведомлениями. В зависимости от целевой группы и доступности облачные платформы Интернета вещей можно разделить на общедоступные облачные платформы Интернета вещей (далее именуемые «публичное облако») и частные облачные платформы Интернета вещей (далее именуемые «частное облако»).
Публичное облако обычно означает общие облачные платформы IoT для предприятий или частных лиц, которые управляются и обслуживаются поставщиками платформ и совместно используются через Интернет. Оно может быть бесплатным или недорогим и предоставляет услуги в открытой общедоступной сети, например Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT и т. д. В качестве вспомогательной платформы публичное облако может интегрировать вышестоящих поставщиков услуг и последующих конечных пользователей для создания новой цепочки создания стоимости и экосистемы.
Частное облако создано только для корпоративного использования, что гарантирует лучший контроль над данными, безопасностью и качеством обслуживания. Его услуги и инфраструктура обслуживаются предприятиями отдельно, а вспомогательное оборудование и программное обеспечение также предназначены для конкретных пользователей. Предприятия могут настраивать облачные сервисы в соответствии с потребностями своего бизнеса. В настоящее время некоторые производители умных домов уже обзавелись частными облачными платформами IoT и разработали на их основе приложения для умного дома.
Публичное и частное облако имеют свои преимущества.tages, что будет объяснено позже.
Чтобы обеспечить возможность подключения к сети, необходимо завершить как минимум встроенную разработку на стороне устройства, а также бизнес-серверы, облачные платформы IoT и приложения для смартфонов. Столкнувшись с таким огромным проектом, общедоступное облако обычно предоставляет комплекты разработки программного обеспечения для устройств и приложений для смартфонов, чтобы ускорить процесс. Как общедоступное, так и частное облако предоставляют услуги, включая доступ к устройствам, управление устройствами, теневое копирование устройств, а также эксплуатацию и обслуживание.
Доступ к устройствам. Облачные платформы IoT должны предоставлять не только интерфейсы для доступа к устройствам с использованием протоколов.
Глава 2. Введение и практика проектов Интернета вещей 11

такие как MQTT, CoAP, HTTPS и WebSocket, а также функцию аутентификации безопасности устройства для блокировки поддельных и незаконных устройств, что эффективно снижает риск взлома. Такая аутентификация обычно поддерживает разные механизмы, поэтому при массовом производстве устройств необходимо заранее назначить сертификат устройства в соответствии с выбранным механизмом аутентификации и записать его в устройства.
Управление устройствами Функция управления устройствами, предоставляемая облачными платформами IoT, может не только помочь производителям отслеживать статус активации и онлайн-статус своих устройств в режиме реального времени, но также позволяет использовать такие параметры, как добавление/удаление устройств, извлечение, добавление/удаление групп, обновление прошивки. и управление версиями.
Облачные платформы IoT для теневого устройства могут создавать постоянную виртуальную версию (тень устройства) для каждого устройства, а статус теневого устройства можно синхронизировать и получать с помощью приложения для смартфона или других устройств через протоколы передачи данных через Интернет. Тень устройства хранит последние отчеты о состоянии и ожидаемое состояние каждого устройства, и даже если устройство находится в автономном режиме, оно все равно может получить статус, вызвав API. Тень устройства предоставляет постоянно действующие API, что упрощает создание приложений для смартфонов, взаимодействующих с устройствами.
Эксплуатация и обслуживание Функция O&M включает в себя три аспекта: · Демонстрация статистической информации об устройствах IoT и уведомлениях. · Управление журналами позволяет получать информацию о поведении устройства, потоке сообщений вверх/вниз и содержании сообщений. · Отладка устройств поддерживает доставку команд, обновление конфигурации и проверку взаимодействия между облачными платформами Интернета вещей и сообщениями устройств.
2.2 Практика: проект «Умное освещение»
После теоретического введения в каждой главе вы найдете раздел практики, связанный с проектом Smart Light, который поможет вам получить практический опыт. Проект основан на чипе ESP32-C3 от Espressif и облачной платформе IoT ESP RainMaker и охватывает аппаратное обеспечение беспроводных модулей в продуктах для интеллектуального освещения, встроенное программное обеспечение для интеллектуальных устройств на базе ESP32C3, приложения для смартфонов и взаимодействие ESP RainMaker.
Исходный код Для лучшего обучения и развития проект в этой книге был открыт с открытым исходным кодом. Вы можете скачать исходный код из нашего репозитория GitHub по адресу https://github. com/espressif/book-esp32c3-iot-projects.
12 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

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

Приложения для смартфонов · Конфигурация сети и привязка устройства. · Интеллектуальное управление световыми приборами, например, переключатель, яркость, цветовая температура и т. д. · Автоматизация или настройки сцены, например, таймер. · Местное/дистанционное управление. · Регистрация пользователя, вход в систему и т. д.
Облачная платформа ESP RainMaker IoT · Обеспечение доступа к устройствам IoT. · Предоставление API-интерфейсов управления устройством, доступных для приложений для смартфонов. · Обновление прошивки и управление версиями.
2.2.3 Подготовка оборудования
Если вы заинтересованы в реализации проекта на практике, вам также понадобится следующее оборудование: интеллектуальные фонари, смартфоны, маршрутизаторы Wi-Fi и компьютер, соответствующий требованиям установки среды разработки. Умные фонари
Умные светильники — это новый тип лампочек, форма которых такая же, как у обычных ламп накаливания. Умный светильник состоит из конденсаторного понижающего регулируемого источника питания, беспроводного модуля (со встроенным ESP32-C3), светодиодного контроллера и светодиодной матрицы RGB. При подключении к источнику питания напряжение 15 В постоянного токаtagВыход после понижения конденсатора, диодного выпрямления и регулирования подает энергию на контроллер светодиода и матрицу светодиодов. Контроллер светодиодов может автоматически отправлять высокие и низкие уровни через определенные промежутки времени, переключая светодиодную матрицу RGB между закрытым (свет горит) и открытым (свет не горит), так что он может излучать голубой, желтый, зеленый, фиолетовый, синий, красный и белый свет. Беспроводной модуль отвечает за подключение к Wi-Fi-роутеру, получение и сообщение о состоянии интеллектуальных светильников, а также отправку команд для управления светодиодом.
Рисунок 2.2. Имитируемый умный свет
На раннем этапе развитияtagе, вы можете моделировать интеллектуальный свет с помощью платы ESP32-C3DevKitM-1, подключенной к светодиоду RGB.amp бусины (см. рисунок 2.2). Но ты должен
14 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Обратите внимание, что это не единственный способ собрать умный свет. Аппаратная часть проекта в этой книге содержит только беспроводной модуль (со встроенным 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 преобразуют сигналы проводной сети и сигналы мобильной сети в сигналы беспроводной сети для подключения компьютеров, смартфонов, планшетов и других беспроводных устройств к сети. Для бывшегоampТаким образом, для обеспечения беспроводной сети устройств Wi-Fi достаточно подключить широкополосный доступ в доме только к маршрутизатору Wi-Fi. Основным стандартом протокола, поддерживаемым маршрутизаторами Wi-Fi, является IEEE 802.11n со средней скоростью передачи данных 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. Введение и практика проектов Интернета вещей 15

2.2.4 Процесс разработки
Рисунок 2.4. Этапы развития проекта Smart Light
Проектирование аппаратного обеспечения Проектирование аппаратного обеспечения устройств Интернета вещей имеет важное значение для проекта Интернета вещей. Полный проект интеллектуального освещения предназначен для производства всехamp работа от сети. Разные производители выпускают л.ampОни имеют разные стили и типы драйверов, но их беспроводные модули обычно выполняют одну и ту же функцию. Чтобы упростить процесс разработки проекта Smart Ligh, в этой книге рассматривается только проектирование аппаратного обеспечения и разработка программного обеспечения беспроводных модулей.
Конфигурация облачной платформы IoT Чтобы использовать облачные платформы IoT, вам необходимо настроить проекты на серверной стороне, например создавать продукты, создавать устройства, настраивать свойства устройств и т. д.
Разработка встроенного программного обеспечения для устройств Интернета вещей. Реализуйте ожидаемые функции с помощью ESP-IDF, SDK Espressif на стороне устройства, включая подключение к облачным платформам Интернета вещей, разработку драйверов светодиодов и обновление встроенного ПО.
Разработка приложений для смартфонов. Разработка приложений для смартфонов для систем Android и iOS для реализации регистрации и входа пользователей, управления устройствами и других функций.
Оптимизация устройств Интернета вещей После завершения базовой разработки функций устройств Интернета вещей вы можете перейти к задачам оптимизации, таким как оптимизация энергопотребления.
Испытания массового производства. Проведите испытания массового производства в соответствии с соответствующими стандартами, такими как функциональные испытания оборудования, испытания на старение, радиочастотные испытания и т. д.
Несмотря на перечисленные выше шаги, проект Smart Light не обязательно подлежит такой процедуре, поскольку одновременно могут выполняться различные задачи. Для бывшегоampНапример, встроенное программное обеспечение и приложения для смартфонов могут разрабатываться параллельно. Некоторые шаги также может потребоваться повторить, например, оптимизация устройств Интернета вещей и тестирование массового производства.
16 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

2.3 Резюме
В этой главе мы сначала подробно изложили основные компоненты и функциональные модули проекта Интернета вещей, а затем представили на практике пример Smart Light, обратившись к его структуре, функциям, подготовке оборудования и процессу разработки. Читатели смогут сделать выводы из практики и обрести уверенность в том, что в будущем можно будет реализовывать IoT-проекты с минимальными ошибками.
Глава 2. Введение и практика проектов Интернета вещей 17

18 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Глава 3

Введение

к

ЭСП

RainMaker

Интернет вещей (IoT) предлагает безграничные возможности изменить образ жизни людей, однако развитие IoT-инженерии сопряжено с множеством проблем. С помощью общедоступных облаков производители терминалов могут реализовать функциональность продуктов с помощью следующих решений:
На основе облачных платформ поставщиков решений. Таким образом, производителям терминалов нужно только спроектировать аппаратное обеспечение продукта, затем подключить оборудование к облаку с помощью предоставленного коммуникационного модуля и настроить функции продукта в соответствии с рекомендациями. Это эффективный подход, поскольку он устраняет необходимость разработки, эксплуатации и обслуживания (O&M) на стороне сервера и приложения. Это позволяет производителям терминалов сосредоточиться на разработке оборудования, не задумываясь о внедрении облака. Однако такие решения (например, прошивка устройства и приложение), как правило, не имеют открытого исходного кода, поэтому функции продукта будут ограничены облачной платформой поставщика, которую невозможно настроить. Между тем, данные пользователя и устройства также принадлежат облачной платформе.
На основе облачных продуктов. В этом решении после завершения проектирования оборудования производителям терминалов необходимо не только реализовать облачные функции с использованием одного или нескольких облачных продуктов, предоставляемых общедоступным облаком, но также необходимо связать оборудование с облаком. Для бывшегоample, чтобы подключиться к Amazon Web Services (AWS), производителям терминалов необходимо использовать продукты AWS, такие как Amazon API Gateway, AWS IoT Core и AWS Lambda, для обеспечения доступа к устройствам, удаленного управления, хранения данных, управления пользователями и других базовых функций. Он не только требует от производителей терминалов гибко использовать и настраивать облачные продукты с глубоким пониманием и богатым опытом, но также требует от них учитывать затраты на строительство и обслуживание на начальном и последующих этапах.tages Это создает большие проблемы для энергии и ресурсов компании.
По сравнению с публичными облаками, частные облака обычно создаются для конкретных проектов и продуктов. Разработчикам частного облака предоставляется высочайший уровень свободы в разработке протоколов и реализации бизнес-логики. Производители терминалов могут создавать продукты и схемы проектирования по своему усмотрению, а также легко интегрировать и расширять возможности пользовательских данных. Сочетание высокой безопасности, масштабируемости и надежности публичного облака с преимуществамиtagВ рамках частного облака компания Espressif запустила ESP
19

RainMaker — глубоко интегрированное решение для частного облака на базе облака Amazon. Пользователи могут развернуть ESP RainMaker и создать частное облако, просто используя учетную запись AWS.
3.1 Что такое ESP RainMaker?
ESP RainMaker — это полноценная платформа AIoT, созданная на основе нескольких зрелых продуктов AWS. Он предоставляет различные услуги, необходимые для массового производства, такие как доступ к облаку устройств, обновление устройств, управление серверной частью, сторонний вход в систему, голосовая интеграция и управление пользователями. Используя репозиторий бессерверных приложений (SAR), предоставляемый AWS, производители терминалов могут быстро развернуть ESP RainMaker в своих учетных записях AWS, что позволяет сэкономить время и легко работать. Управляемый и поддерживаемый Espressif SAR, используемый ESP RainMaker, помогает разработчикам сократить расходы на обслуживание облака и ускорить разработку продуктов AIoT, создавая тем самым безопасные, стабильные и настраиваемые решения AIoT. На рис. 3.1 показана архитектура ESP RainMaker.
Рисунок 3.1. Архитектура ESP RainMaker
Публичный сервер ESP RainMaker от Espressif бесплатен для всех энтузиастов, разработчиков и преподавателей ESP для оценки решения. Разработчики могут войти в систему с учетными записями Apple, Google или GitHub и быстро создавать собственные прототипы приложений Интернета вещей. Публичный сервер объединяет Alexa и Google Home и предоставляет услуги голосового управления, которые поддерживаются Alexa Skill и Google Actions. Его функция семантического распознавания также поддерживается третьими лицами. Устройства RainMaker IoT реагируют только на определенные действия. Полный список поддерживаемых голосовых команд можно найти на сторонних платформах. Кроме того, Espressif предлагает пользователям общедоступное приложение RainMaker для управления продуктами через смартфоны. 20 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

3.2 Реализация ESP RainMaker
Как показано на рисунке 3.2, ESP RainMaker состоит из четырех частей: · Служба претензий, позволяющая устройствам RainMaker динамически получать сертификаты. · RainMaker Cloud (также известный как облачный сервер), предоставляющий такие услуги, как фильтрация сообщений, управление пользователями, хранение данных и интеграция со сторонними организациями. · Агент RainMaker, позволяющий устройствам RainMaker подключаться к RainMaker Cloud. · Клиент RainMaker (приложение RainMaker или сценарии CLI) для подготовки, создания пользователей, привязки и управления устройствами и т. д.
Рисунок 3.2. Структура ESP RainMaker
ESP RainMaker предоставляет полный набор инструментов для разработки и массового производства продуктов, включая: RainMaker SDK.
RainMaker SDK основан на ESP-IDF и предоставляет исходный код агента на стороне устройства и связанные API C для разработки встроенного ПО. Разработчикам нужно только написать логику приложения, а все остальное оставить инфраструктуре RainMaker. Для получения дополнительной информации об API C посетите 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 Интерфейс командной строки на основе Python, входящий в состав RainMaker SDK, предназначен для реализации всех функций, аналогичных функциям смартфона. Для получения дополнительной информации об API Python посетите https://bookc3.espressif.com/rm/python-api-reference.
Интерфейс командной строки администратора Интерфейс командной строки администратора с более высоким уровнем доступа предоставляется для частного развертывания ESP RainMaker для массового создания сертификатов устройств.
3.2.1 Служба подачи претензий
Вся связь между устройствами RainMaker и облачным сервером осуществляется через MQTT+TLS. В контексте ESP RainMaker «Заявка» — это процесс, в котором устройства получают сертификаты от службы заявлений для подключения к облачному серверу. Обратите внимание, что служба утверждения применима только к общедоступной службе RainMaker, тогда как для частного развертывания сертификаты устройств необходимо генерировать массово через интерфейс командной строки администратора. ESP RainMaker поддерживает три типа службы подачи претензий: Самостоятельная подача претензий.
Само устройство получает сертификаты через секретный ключ, предварительно запрограммированный в eFuse, после подключения к Интернету. Заявка на основе хоста Сертификаты получаются от хоста разработки с учетной записью RainMaker. Помощь в запросе Сертификаты получаются через приложения для смартфонов во время предоставления.
3.2.2 Агент RainMaker
Рисунок 3.3. Структура RainMaker SDK Основная функция агента RainMaker — обеспечение подключения и помощь на уровне приложений в обработке облачных данных восходящего/нисходящего канала. Он создан на основе RainMaker SDK 22 ESP32-C3 Wireless Adventure: комплексное руководство по Интернету вещей.

и разработан на основе проверенной инфраструктуры ESP-IDF с использованием таких компонентов ESP-IDF, как RTOS, NVS и MQTT. На рис. 3.3 показана структура RainMaker SDK.
RainMaker SDK включает в себя две основные функции.
Связь
я. Сотрудничество со Службой претензий для получения сертификатов устройств.
ii. Подключение к облачному серверу с использованием безопасного протокола MQTT для обеспечения удаленного подключения и реализации удаленного управления, отчетов о сообщениях, управления пользователями, управления устройствами и т. д. По умолчанию он использует компонент MQTT в ESP-IDF и предоставляет уровень абстракции для взаимодействия с другими стеки протоколов.
iii. Предоставление компонента обеспечения Wi-Fi для подключения и подготовки Wi-Fi, компонента esp https ota для обновлений OTA и компонента esp local ctrl для обнаружения и подключения локального устройства. Все эти цели могут быть достигнуты за счет простой настройки.
Обработка данных
я. Хранение сертификатов устройств, выданных службой утверждений, и данных, необходимых при запуске RainMaker, по умолчанию с использованием интерфейса, предоставляемого флэш-компонентом nvs, и предоставление API-интерфейсов разработчикам для прямого использования.
ii. Использование механизма обратного вызова для обработки облачных данных восходящей/нисходящей линии связи и автоматическая разблокировка данных на уровне приложений для облегчения обработки разработчиками. Для бывшегоampНапример, RainMaker SDK предоставляет богатые интерфейсы для создания данных TSL (язык спецификации вещей), которые необходимы для определения моделей TSL для описания устройств IoT и реализации таких функций, как синхронизация, обратный отсчет и голосовое управление. Для базовых интерактивных функций, таких как синхронизация, RainMaker SDK предоставляет решение, не требующее разработки, которое можно просто включить при необходимости. Затем агент RainMaker напрямую обрабатывает данные, отправляет их в облако через связанную тему MQTT и возвращает изменения данных в облачную серверную часть через механизм обратного вызова.
3.2.3 Облачный бэкэнд
Облачный бэкэнд построен на базе бессерверных вычислений AWS и реализуется с помощью 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 Когнито

Управление учетными данными пользователей и поддержка сторонних входов в систему

AWS Лямбда

Реализация основной бизнес-логики облачного бэкэнда

Amazon Timestream Хранение данных временных рядов

Amazon DynamoDB Хранение личной информации клиентов

Ядро AWS IoT

Поддержка связи MQTT

Амазон СЭС

Предоставление услуг по отправке электронной почты

Amazon CloudFront Ускорение управления серверной частью webдоступ к сайту

Amazon SQS

Пересылка сообщений из AWS IoT Core

3.2.4 Клиент RainMaker
Клиенты RainMaker, такие как App и CLI, взаимодействуют с облачной серверной частью через REST API. Подробную информацию и инструкции по REST API можно найти в документации Swagger, предоставленной Espressif. Клиент мобильного приложения RainMaker доступен как для систем iOS, так и для Android. Он позволяет предоставлять устройства, управлять ими и совместно использовать их, а также создавать и включать задачи обратного отсчета и подключаться к сторонним платформам. Он может автоматически загружать пользовательский интерфейс и значки в соответствии с конфигурацией, сообщаемой устройствами, и полностью отображать TSL устройства.
НапримерampНапример, если интеллектуальный источник света создан на основе предоставленного RainMaker SDK exampфайлы, значок и пользовательский интерфейс лампочки будут загружены автоматически после завершения подготовки. Пользователи могут изменять цвет и яркость света через интерфейс и получать сторонний контроль, связав Alexa Smart Home Skill или Google Smart Home Actions со своими учетными записями ESP RainMaker. На рис. 3.4 показаны значок и пример пользовательского интерфейса.ampфайлы лампочки соответственно в Alexa, Google Home и приложении ESP RainMaker.

24 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

(а) Эксampле – Алекса

(б) Эксampле – Главная страница Google

(в) Эксampле – ESP RainMaker
Рисунок 3.4. Exampфайлы значков и пользовательского интерфейса лампочки в Alexa, Google Home и приложении ESP RainMaker.
3.3 Практика: ключевые моменты разработки с помощью ESP RainMaker
После завершения создания уровня драйвера устройства разработчики могут приступить к созданию моделей TSL и обработке данных нисходящей линии связи с использованием API, предоставляемых RainMaker SDK, а также включить базовые службы ESP RainMaker на основе определения продукта и требований.
Глава 3. Знакомство с ESP RainMaker 25

В разделе 9.4 этой книги будет объяснена реализация интеллектуального светодиодного освещения в RainMaker. Во время отладки разработчики могут использовать инструменты CLI в RainMaker SDK для связи с интеллектуальным источником света (или вызывать API-интерфейсы REST из Swagger).
В главе 10 будет подробно описано использование REST API при разработке приложений для смартфонов. ОТА-обновления интеллектуальных светодиодных фонарей будут описаны в главе 11. Если разработчики включили удаленный мониторинг ESP Insights, серверная часть управления ESP RainMaker будет отображать данные ESP Insights. Подробности будут представлены в главе 15.
ESP RainMaker поддерживает частное развертывание, которое отличается от общедоступного сервера RainMaker следующим образом:
Служба утверждений Для создания сертификатов в частных развертываниях вместо утверждения требуется использовать интерфейс командной строки администратора RainMaker. При использовании общедоступного сервера разработчикам должны быть предоставлены права администратора для обновления прошивки, но это нежелательно при коммерческом развертывании. Таким образом, ни отдельная служба аутентификации не может быть предоставлена ​​для самостоятельного утверждения, ни права администратора для утверждения на основе хоста или с помощью.
Приложения для телефона В частных развертываниях приложения необходимо настраивать и компилировать отдельно, чтобы гарантировать невозможность взаимодействия систем учетных записей.
Сторонние входы в систему и голосовая интеграция. Разработчикам необходимо отдельно настроить учетные записи разработчиков Google и Apple, чтобы включить сторонние входы в систему, а также интеграцию Alexa Skill и Google Voice Assistant.
СОВЕТЫ Для получения подробной информации о развертывании в облаке посетите https://customer.rainmaker.espressif. ком. Что касается встроенного ПО, миграция с общедоступного сервера на частный сервер требует только замены сертификатов устройств, что значительно повышает эффективность миграции и снижает затраты на миграцию и вторичную отладку.
3.4 Возможности ESP RainMaker
Функции ESP RainMaker в основном ориентированы на три аспекта: управление пользователями, конечные пользователи и администраторы. Все функции поддерживаются как на общедоступных, так и на частных серверах, если не указано иное.
3.4.1 Управление пользователями
Функции управления пользователями позволяют конечным пользователям регистрироваться, входить в систему, менять пароли, получать пароли и т. д.
26 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Регистрация и вход. Методы регистрации и входа, поддерживаемые RainMaker, включают: · Идентификатор электронной почты + пароль · Номер телефона + пароль · Учетную запись Google · Учетную запись Apple · Учетную запись GitHub (только общедоступный сервер) · Учетную запись Amazon (только частный сервер)
ПРИМЕЧАНИЕ. При регистрации с помощью Google/Amazon адрес электронной почты пользователя передается RainMaker. При регистрации с помощью Apple используется фиктивный адрес, который Apple назначает пользователю специально для службы RainMaker. Учетная запись RainMaker будет автоматически создана для пользователей, впервые входящих в систему с учетной записью Google, Apple или Amazon.
Изменить пароль Действительно только для входа в систему на основе идентификатора электронной почты/номера телефона. Все остальные активные сеансы будут завершены после изменения пароля. Согласно поведению AWS Cognito, сеансы с выходом из системы могут оставаться активными до 1 часа.
Восстановить пароль Действительно только для входа в систему по идентификатору электронной почты/номеру телефона.
3.4.2 Функции конечного пользователя
Функции, доступные конечным пользователям, включают локальное и удаленное управление и мониторинг, планирование, группировку устройств, общий доступ к устройствам, push-уведомления и интеграцию сторонних производителей.
Удаленное управление и мониторинг · Запрос конфигурации, значений параметров и состояния подключения для одного или всех устройств. · Установите параметры для одного или нескольких устройств.
Локальное управление и мониторинг Для локального управления мобильный телефон и устройство должны быть подключены к одной сети.
Планирование · Пользователи заранее устанавливают определенные действия в определенное время. · Во время выполнения расписания устройству не требуется подключение к Интернету. · Один раз или повторно (с указанием дней) для одного или нескольких устройств.
Группировка устройств. Поддерживает многоуровневую абстрактную группировку. Метаданные группы можно использовать для создания структуры домашней комнаты.
Глава 3. Знакомство с ESP RainMaker 27

Совместное использование устройств Одним или несколькими устройствами можно поделиться с одним или несколькими пользователями.
Push-уведомления Конечные пользователи будут получать push-уведомления о таких событиях, как: · Новые устройства добавлены/удалены · Устройство подключено к облаку · Устройство отключено от облака · Созданы/приняты/отклонены запросы на совместное использование устройств · Предупреждающие сообщения, о которых сообщают устройства
Сторонние интеграции Alexa и Google Voice Assistant поддерживаются для управления устройствами RainMaker, включая освещение, выключатели, розетки, вентиляторы и датчики температуры.
3.4.3 Функции администратора
Функции администрирования позволяют администраторам осуществлять регистрацию устройств, группировку устройств и обновления OTA, а также view статистика и данные ESP Insights.
Регистрация устройства Создайте сертификаты устройства и зарегистрируйтесь в интерфейсе командной строки администратора (только для частного сервера).
Группировка устройств. Создавайте абстрактные или структурированные группы на основе информации об устройстве (только для частного сервера).
Обновления по беспроводной сети (OTA). Загружайте встроенное ПО в зависимости от версии и модели на одно или несколько устройств или в группу. Отслеживайте, отменяйте или архивируйте задания OTA.
View статистика ViewДоступная статистика включает в себя: · Регистрации устройств (сертификаты, зарегистрированные администратором) · Активации устройства (устройство подключается впервые) · Учетные записи пользователей · Связь пользователя с устройством
View Данные ESP Insights ViewДоступные данные ESP Insights включают: · Ошибки, предупреждения и пользовательские журналы · Отчеты о сбоях и их анализ · Причины перезагрузки · Такие показатели, как использование памяти, RSSI и т. д. · Пользовательские показатели и переменные
28 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

3.5 Резюме
В этой главе мы представили некоторые ключевые различия между общедоступным и частным развертыванием RainMaker. Частное решение ESP RainMaker, запущенное Espressif, отличается высокой надежностью и расширяемостью. Все чипы серии ESP32 подключены и адаптированы к AWS, что значительно снижает стоимость. Разработчики могут сосредоточиться на проверке прототипов, не изучая облачные продукты AWS. Мы также объяснили реализацию и функции ESP RainMaker, а также некоторые ключевые моменты разработки с использованием этой платформы.
Отсканируйте, чтобы загрузить ESP RainMaker для Android. Отсканируйте, чтобы загрузить ESP RainMaker для iOS.
Глава 3. Знакомство с ESP RainMaker 29

30 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Глава Настройка 4. Среда разработки
В этой главе основное внимание уделяется ESP-IDF, официальной среде разработки программного обеспечения для ESP32-C3. Мы объясним, как настроить среду в различных операционных системах, а также представим структуру проекта и систему сборки ESP-IDF, а также использование соответствующих инструментов разработки. Затем мы представим процесс компиляции и запуска example проекта, предлагая при этом подробное объяснение выходного журнала на каждой секунде.tage.
4.1 ESP-IDF оконченview
ESP-IDF (Espressif IoT Development Framework) — это универсальная среда разработки Интернета вещей, предоставляемая Espressif Technology. Он использует C/C++ в качестве основного языка разработки и поддерживает кросс-компиляцию в основных операционных системах, таких как Linux, Mac и Windows. ЭксampФайловые программы, включенные в эту книгу, разработаны с использованием ESP-IDF, который предлагает следующие возможности: · Драйверы системного уровня SoC. ESP-IDF включает драйверы для ESP32, ESP32-S2, ESP32-C3,
и другие фишки. Эти драйверы включают в себя библиотеку периферийного низкого уровня (LL), библиотеку уровня абстракции оборудования (HAL), поддержку RTOS, программное обеспечение драйверов верхнего уровня и т. д. · Основные компоненты. ESP-IDF включает в себя фундаментальные компоненты, необходимые для разработки Интернета вещей. Сюда входят несколько стеков сетевых протоколов, таких как HTTP и MQTT, платформа управления питанием с динамической частотной модуляцией, а также такие функции, как Flash Encryption, Secure Boot и т. д. · Инструменты разработки и производства. ESP-IDF предоставляет часто используемые инструменты для сборки, прошивки и отладки во время разработки и массового производства (см. рис. 4.1), такие как система сборки на основе CMake, цепочка инструментов кросс-компиляции на основе GCC и JTAG инструмент отладки на основе OpenOCD и т. д. Стоит отметить, что код ESP-IDF в первую очередь соответствует лицензии с открытым исходным кодом Apache 2.0. Пользователи могут разрабатывать личное или коммерческое программное обеспечение без ограничений, соблюдая условия лицензии с открытым исходным кодом. Кроме того, пользователям бесплатно предоставляются постоянные патентные лицензии без обязательства публиковать любые изменения, внесенные в исходный код, в открытый доступ.
31

Рисунок 4.1.

Сборка, прошивка и отладка

инструменты для разработки и массового производства

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

Таблица 4.1. Статус поддержки различных версий ESP-IDF для чипов Espressif

Серия ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

поддерживается версия 4.1

v4.2 поддерживается поддерживается

v4.3 поддерживается поддерживается поддерживается поддерживается

v4.4 поддерживается поддерживается поддерживается поддерживается поддерживается
предварительноview

v5.0 поддерживается поддерживается поддерживается поддерживается поддерживается предварительноview

32 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Итерация основных версий часто включает в себя корректировки структуры платформы и обновления системы компиляции. Для бывшегоample, основным изменением с версии 3.* на версию 4.* стал постепенный переход системы сборки с 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. Кроме того, эта новая ветвь tagиспользуется как предварительная версия, например v4.3-beta1. Разработчики могут обратиться к платформе GitHub для доступа к полному списку ветвей и tags для ESP-IDF. Важно отметить, что бета-версия (предварительная версия) может по-прежнему иметь значительное количество известных проблем. Поскольку бета-версия проходит постоянное тестирование, исправления ошибок добавляются как в эту версию, так и в основную ветку одновременно. Между тем, основная ветка, возможно, уже начала разработку новых функций для следующей версии. Когда тестирование почти завершено, к ветке добавляется метка кандидата на выпуск (rc), указывающая, что это потенциальный кандидат на официальный выпуск, например v4.3-rc1. В этом сtagе, ветка остается предрелизной версией.
· Если не обнаружено и не сообщается о серьезных ошибках, предварительная версия в конечном итоге получает метку основной версии (например, v5.0) или метку второстепенной версии (например, v4.3) и становится официальной версией выпуска, которая документируется. на странице примечаний к выпуску. Впоследствии любые ошибки, выявленные в этой версии, исправляются в ветке выпуска. После завершения ручного тестирования ветке присваивается метка версии с исправлением ошибок (например, v4.3.2), которая также отображается на странице примечаний к выпуску.
Глава 4. Настройка среды разработки 33

4.1.3 Выбор подходящей версии
Поскольку ESP-IDF официально начал поддерживать ESP32-C3 начиная с версии 4.3, а версия 4.4 еще не была официально выпущена на момент написания этой книги, в этой книге используется версия 4.3.2, которая является переработанной версией. версии 4.3. Однако важно отметить, что к моменту чтения этой книги версия 4.4 или более поздние могут уже быть доступны. При выборе версии мы рекомендуем следующее:
· Разработчикам начального уровня рекомендуется выбрать стабильную версию v4.3 или ее исправленную версию, соответствующую предыдущей версии.ampВерсия, используемая в этой книге.
· Для целей массового производства рекомендуется использовать последнюю стабильную версию, чтобы получить самую свежую техническую поддержку.
· Если вы собираетесь поэкспериментировать с новыми чипами или изучить новые возможности продукта, используйте ветку master. Последняя версия содержит все новейшие функции, но имейте в виду, что могут присутствовать известные или неизвестные ошибки.
· Если используемая стабильная версия не включает желаемые новые функции и вы хотите минимизировать риски, связанные с основной веткой, рассмотрите возможность использования соответствующей ветки выпуска, например ветки Release/v4.4. Репозиторий Espressif GitHub сначала создаст ветку 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 для периферийных устройств до драйверов верхнего уровня и виртуальных File Поддержка уровня системы (VFS), разработчики могут выбирать подходящие компоненты на разных уровнях для своих нужд разработки. ESP-IDF также поддерживает несколько стандартных стеков сетевых протоколов, таких как TCP/IP, HTTP, MQTT, WebSocket и т. д. Разработчики могут использовать знакомые интерфейсы, такие как Socket, для создания сетевых приложений. Компоненты обеспечивают
34 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

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

· freertos: этот компонент содержит полный код FreeRTOS. Помимо комплексной поддержки этой операционной системы, Espressif также расширил поддержку двухъядерных чипов. Для двухъядерных чипов, таких как ESP32 и ESP32-S3, пользователи могут создавать задачи на определенных ядрах.
б. Документы каталога документов
Этот каталог содержит документы по разработке, связанные с ESP-IDF, включая руководство по началу работы, справочное руководство по API, руководство по разработке и т. д.
ПРИМЕЧАНИЕ. После компиляции с помощью автоматизированных инструментов содержимое этого каталога развертывается по адресу https://docs.espressif.com/projects/esp-idf. Обязательно переключите целевой документ на ESP32-C3 и выберите указанную версию ESP-IDF.
в. Инструменты инструмента «Скрипт»
Этот каталог содержит часто используемые инструменты компиляции, такие как idf.py, инструмент терминала монитора idf_monitor.py и т. д. Подкаталог cmake также содержит основной скрипт. files системы компиляции, служащие основой для реализации правил компиляции ESP-IDF. При добавлении переменных среды содержимое каталога инструментов добавляется в системную переменную среды, что позволяет запускать idf.py непосредственно по пути к проекту.
д. Бывшийampкаталог программы exampле
Этот каталог содержит обширную коллекцию бывших файлов ESP-IDF.ampФайловые программы, демонстрирующие использование API компонентов. ЭксampФайлы организованы в различные подкаталоги в зависимости от их категорий:
· Начало работы: в этом подкаталоге содержатся бывшиеampтакие файлы, как «привет, мир» и «мигание», чтобы помочь пользователям понять основы.
· Bluetooth: вы можете найти пример, связанный с Bluetooth.ampфайлы здесь, включая Bluetooth LE Mesh, Bluetooth LE HID, BluFi и другие.
· Wi-Fi: в этом подкаталоге основное внимание уделяется устройствам Wi-Fi.ampфайлы, включая базовые программы, такие как Wi-Fi SoftAP, Wi-Fi Station, espnow, а также собственный протокол связи, напримерampфайлы из Espressif. Он также включает в себя несколько уровней приложений, напримерampфайлы на основе Wi-Fi, такие как Iperf, Sniffer и Smart Config.
· Периферийные устройства: этот обширный подкаталог разделен на множество подпапок в зависимости от названий периферийных устройств. В основном он содержит драйвер периферийного устройства.ampфайлы для чипсов Espressif, с каждым exampфайл с несколькими суб-эксамиampле. Например, подкаталог gpio включает в себя два exampФайлы: GPIO и матричная клавиатура GPIO. Важно отметить, что не все бывшиеampфайлы в этом каталоге применимы к ESP32-C3.
36 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

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

а. Каталог распространения программного обеспечения 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: полное руководство по Интернету вещей

выберите предпочитаемый вами дистрибутив 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 не поддерживается? О: Для 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: полное руководство по Интернету вещей

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

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

(5) Проверьте компоненты, которые необходимо установить, как показано на рисунке 4.8. Рекомендуется использовать вариант по умолчанию, то есть полную установку, а затем нажать «Далее».
Рисунок 4.8. Выберите компоненты для установки (6). Подтвердите установку компонентов и нажмите «Установить», чтобы начать автоматическую установку.
процесс остановки, как показано на рисунке 4.9. Процесс установки может длиться десятки минут, индикатор выполнения процесса установки показан на рисунке 4.10. Пожалуйста, подождите терпеливо.
Рисунок 4.9. Подготовка к установке (7) После завершения установки рекомендуется поставить галочку напротив пункта «Зарегистрировать ESP-IDF».
Исполняемые файлы инструментов в качестве исключений Защитника Windows…», чтобы предотвратить удаление антивирусным программным обеспечением. 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 для операций. Открытый CMD ESP-IDF 4.3 показан на рисунке 4.13. 44 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

Рисунок 4.12. Среда разработки установлена
Рисунок 4.13. ESP-IDF 4.3 CMD
4.2.3 Настройка среды разработки ESP-IDF на Mac
Процесс установки среды разработки ESP-IDF в системе Mac такой же, как и в системе Linux. Команды для загрузки кода репозитория и установки цепочки инструментов абсолютно одинаковы. Немного отличаются только команды для установки пакетов зависимостей. 1. Установите пакеты зависимостей. Откройте терминал и установите pip, инструмент управления пакетами Python, выполнив следующую команду:
% sudo простая установка pip
Установите 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.
Следуйте инструкциям, приведенным в разделе 4.2.1, чтобы установить цепочку инструментов разработки ESP-IDF. Действия такие же, как и при установке в системе Linux.
4.2.4 Установка VS-кода
По умолчанию ESP-IDF SDK не включает инструмент редактирования кода (хотя последняя версия установщика ESP-IDF для Windows предлагает возможность установки ESP-IDF Eclipse). Вы можете использовать любой инструмент редактирования текста по вашему выбору, чтобы отредактировать код, а затем скомпилировать его с помощью команд терминала.
Одним из популярных инструментов редактирования кода является VS Code (Visual Studio Code), бесплатный и многофункциональный редактор кода с удобным интерфейсом. Он предлагает различные plugins которые предоставляют такие функции, как навигация по коду, подсветка синтаксиса, контроль версий Git и интеграция терминала. Кроме того, Espressif разработала специальный плагин Espressif IDF для VS Code, который упрощает настройку и отладку проекта.
Вы можете использовать команду кода в терминале, чтобы быстро открыть текущую папку в VS Code. Альтернативно вы можете использовать сочетание клавиш Ctrl+, чтобы открыть консоль терминала системы по умолчанию в VS Code.
СОВЕТЫ. Для разработки кода ESP32-C3 рекомендуется использовать VS Code. Загрузите и установите последнюю версию 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: полное руководство по Интернету вещей

Это упрощает взаимодействие с оборудованием. MicroPython в сочетании с обширной библиотекой математических операций Python позволяет реализовывать сложные алгоритмы на ESP32-C3, облегчая разработку приложений, связанных с искусственным интеллектом. В качестве скриптового языка нет необходимости в повторной компиляции; можно вносить изменения и напрямую выполнять сценарии.
NodeMCU: интерпретатор языка LUA, разработанный для чипов серии ESP.
Он поддерживает практически все периферийные функции чипов ESP и легче MicroPython. Подобно MicroPython, NodeMCU использует язык сценариев, что устраняет необходимость повторной компиляции.
Кроме того, ESP32-C3 также поддерживает операционные системы NuttX и Zephyr. NuttX — это операционная система реального времени, которая предоставляет POSIX-совместимые интерфейсы, повышающие переносимость приложений. Zephyr — небольшая операционная система реального времени, специально разработанная для приложений Интернета вещей. Он включает в себя многочисленные библиотеки программного обеспечения, необходимые для разработки Интернета вещей, которые постепенно превращаются в комплексную экосистему программного обеспечения.
Эта книга не содержит подробных инструкций по установке для вышеупомянутых сред разработки. Вы можете установить среду разработки в соответствии с вашими требованиями, следуя соответствующей документации и инструкциям.
4.3 Система компиляции ESP-IDF
4.3.1 Основные понятия системы компиляции
Проект ESP-IDF представляет собой набор основной программы с функцией входа и несколькими независимыми функциональными компонентами. Для бывшегоample, проект, который управляет светодиодными переключателями, в основном состоит из основной программы ввода и компонента драйвера, который управляет GPIO. Если вы хотите реализовать светодиодный пульт дистанционного управления, вам также необходимо добавить стек протоколов Wi-Fi, TCP/IP и т. д.
Система компиляции может компилировать, связывать и генерировать исполняемые файлы. files (.bin) для кода с помощью набора правил построения. Система компиляции версий ESP-IDF v4.0 и выше по умолчанию основана на CMake, а сценарий компиляции CMakeLists.txt можно использовать для управления поведением компиляции кода. Помимо поддержки базового синтаксиса CMake, система компиляции ESP-IDF также определяет набор правил компиляции по умолчанию и функций CMake, и вы можете написать сценарий компиляции с помощью простых операторов.
4.3.2 Проект File Структура
Проект — это папка, содержащая основные компоненты входной программы, определяемые пользователем компоненты и fileнеобходимы для создания исполняемых приложений, таких как сценарии компиляции, настройки
Глава 4. Настройка среды разработки 47

files, таблицы разделов и т. д. Проекты можно копировать и передавать другим, и один и тот же исполняемый файл file может быть скомпилирован и сгенерирован на машинах с той же версией среды разработки ESP-IDF. Типичный проект ESP-IDF file Структура показана на рисунке 4.14.
Рисунок 4.14. Типичный проект ESP-IDF file структура Поскольку ESP-IDF поддерживает несколько чипов IoT от Espressif, включая ESP32, серию ESP32-S, серию ESP32-C, серию ESP32-H и т. д., перед компиляцией кода необходимо определить цель. Целью является одновременно аппаратное устройство, на котором выполняется прикладная программа, и цель сборки системы компиляции. В зависимости от ваших потребностей вы можете указать одну или несколько целей для вашего проекта. Для бывшегоample, с помощью команды idf.py set-target esp32c3 вы можете установить цель компиляции ESP32-C3, во время которой будут загружены параметры по умолчанию и путь к цепочке инструментов компиляции для ESP32C3. После компиляции можно сгенерировать исполняемую программу для ESP32C3. Вы также можете снова запустить команду set-target, чтобы установить другую цель, и система компиляции автоматически очистит и переконфигурирует. Компоненты
Компоненты в ESP-IDF представляют собой модульные и независимые единицы кода, управляемые в системе компиляции. Они организованы в виде папок, причем имя папки по умолчанию представляет имя компонента. Каждый компонент имеет свой собственный сценарий компиляции, который 48 ESP32-C3 Wireless Adventure: Комплексное руководство по Интернету вещей.

указывает параметры компиляции и зависимости. В процессе компиляции компоненты компилируются в отдельные статические библиотеки (.a 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. Параметры меню в основном берутся из Kconfig.projbuild проекта и Kconfig компонентов. Разработчики компонентов обычно добавляют элементы конфигурации в Kconfig, чтобы сделать компонент гибким и настраиваемым.
Каталог сборки По умолчанию в каталоге сборки проекта хранятся промежуточные files и фи-
Глава 4. Настройка среды разработки 49

nal исполняемые программы, созданные командой сборки idf.py. В общем, нет необходимости напрямую обращаться к содержимому каталога сборки. ESP-IDF предоставляет предопределенные команды для взаимодействия с каталогом, например использование команды flash idf.py для автоматического поиска скомпилированного двоичного файла. file и прошейте его по указанному адресу флэш-памяти или используйте команду idf.py fullclean, чтобы очистить весь каталог сборки.
Таблица разделов (partitions.csv) Для каждого проекта требуется таблица разделов, позволяющая разделить пространство флэш-памяти и указать размер и начальный адрес исполняемой программы и пространства пользовательских данных. Команда idf.py flash или программа OTA-обновления прошьет прошивку по соответствующему адресу согласно этой таблице. ESP-IDF предоставляет несколько таблиц разделов по умолчанию в файлеComponents/partition_table, например, разделы_singleapp.csv и разделы_two_ota.csv, которые можно выбрать в менюconfig.
Если таблица разделов системы по умолчанию не может соответствовать требованиям проекта, в каталог проекта можно добавить собственный файл разделов.csv и выбрать его в менюconfig.
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: полное руководство по Интернету вещей

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

компиляция. При использовании специальной функции ESP-IDF idf_comComponent_register минимально необходимый код для сценария компиляции компонента выглядит следующим образом:

1. idf_comComponent_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 (инструмент Flash) в процессе компиляции кода. Каждый инструмент играет разную роль в процессе компиляции, сборки и прошивки, а также поддерживает разные рабочие команды. Чтобы облегчить работу пользователя, ESP-IDF добавляет унифицированный интерфейс idf.py, который позволяет быстро вызывать вышеуказанные команды.
Прежде чем использовать idf.py, убедитесь, что:
· Переменная среды IDF_PATH ESP-IDF добавлена ​​в текущий терминал. · Каталог выполнения команд является корневым каталогом проекта, который включает в себя
скрипт компиляции проекта CMakeLists.txt.
Общие команды idf.py следующие:
· idf.py –help: отображение списка команд и инструкций по их использованию. · idf.py set-target : настройка компиляции taidf.py fullcleanrget, например
как замена с esp32c3. · idf.py menuconfig: запуск менюконфигурации, графической конфигурации терминала.
инструмент, который может выбирать или изменять параметры конфигурации, а результаты конфигурации сохраняются в файле sdkconfig. file. · Сборка idf.py: запуск компиляции кода. Промежуточный files, и окончательная исполняемая программа, созданная в результате компиляции, по умолчанию будет сохранена в каталоге сборки проекта. Процесс компиляции является инкрементным, что означает, что если только один источник file изменено, только измененное file будет составлен в следующий раз.

52 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

· idf.py clean: очистка промежуточного files, созданный компиляцией проекта. Весь проект будет вынужден скомпилироваться при следующей компиляции. Обратите внимание, что конфигурация CMake и изменения конфигурации, внесенные Menuconfig, не будут удалены во время очистки.
· idf.py fullclean: удаление всего каталога сборки, включая все выходные данные конфигурации CMake. fileс. При повторной сборке проекта CMake настроит его с нуля. Обратите внимание, что эта команда рекурсивно удалит все files в каталоге сборки, поэтому используйте его с осторожностью, а конфигурация проекта file не будут удалены.
· idf.py flash: прошивка двоичного файла исполняемой программы file созданный сборкой для целевого ESP32-C3. Опции -p и -б используются для установки имени устройства последовательного порта и скорости передачи данных для прошивки соответственно. Если эти две опции не указаны, последовательный порт будет обнаружен автоматически и будет использована скорость передачи данных по умолчанию.
· Монитор idf.py: отображение вывода последовательного порта целевого ESP32-C3. Опцию -p можно использовать для указания имени устройства последовательного порта на стороне хоста. Во время печати через последовательный порт нажмите комбинацию клавиш Ctrl+], чтобы выйти из монитора.
Вышеуказанные команды также можно комбинировать по мере необходимости. Для бывшегоample, команда idf.py build flash Monitor выполнит компиляцию кода, прошивку и последовательно откроет монитор последовательного порта.
Вы можете посетить https://bookc3.espressif.com/build-system, чтобы узнать больше о системе компиляции ESP-IDF.
4.4 Практика: составление примеровampПрограмма «Мигание»
4.4.1 пр.ampанализ
В этом разделе будет использована программа Blink как бывшая.ampпришлось проанализировать file Подробная структура и правила кодирования реального проекта. Программа Blink реализует эффект мигания светодиодом, а проект находится в каталоге ex.amples/get-started/blink, содержащий исходный код file, конфигурация files и несколько сценариев компиляции.
Проект умного освещения, представленный в этой книге, основан на этом примере.ampпрограмма. Функции будут постепенно добавляться в последующих главах, чтобы окончательно завершить работу.
Исходный код Чтобы продемонстрировать весь процесс разработки, программа Blink была скопирована в esp32c3-iot-projects/devicefirmware/1blink.
Структура каталогов проекта блинка files показано на рисунке 4.15.
Проект Blink содержит только один основной каталог, который представляет собой специальный компонент,
Глава 4. Настройка среды разработки 53

Рисунок 4.15. File структура каталогов проекта блинка

должны быть включены, как описано в разделе 4.3.2. Основной каталог в основном используется для хранения реализации функции app_main(), которая является точкой входа в пользовательскую программу. Проект Blink не включает каталог компонентов, поскольку это example необходимо использовать только компоненты, поставляемые с ESP-IDF, и не требует дополнительных компонентов. CMakeLists.txt, включенный в проект блинка, используется для управления процессом компиляции, а Kconfig.projbuild используется для добавления элементов конфигурации для этого проекта.ampпрограмму в менюconfig. Прочее ненужное files не повлияют на компиляцию кода, поэтому здесь они обсуждаться не будут. Подробное введение в проект блинк fileзаключается в следующем.

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 обычно соответствует порядку включения заголовка стандартной библиотеки. fileс, FreeR-

заголовок TOS files, заголовок драйвера files, заголовок другого компонента files и заголовок проекта files.

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

следуйте правилам по умолчанию. Следует отметить, что sdkconfig.h генерируется автоматически.

с помощью kconfig и может быть настроен только с помощью команды меню idf.py.

Прямая модификация этого заголовка file будет перезаписан.

1. /*Вы можете выбрать GPIO, соответствующий светодиоду в меню idf.py, и результатом изменения меню будет то, что значение CONFIG_BLINK

_GPIO будет изменен. Вы также можете напрямую изменить определение макроса.

здесь и измените CONFIG_BLINK_GPIO на фиксированное значение.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. недействительный app_main (недействительный)

4. {

5.

/*Настройте IO как функцию GPIO по умолчанию, включите режим pull-up и

6.

отключить режимы ввода и вывода*/

7.

gpio_reset_pin(BLINK_GPIO);

54 Беспроводное приключение ESP32-C3: полное руководство по Интернету вещей

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

/*Устанавливаем GPIO в режим вывода*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); в то время как (1) {
/*Печать журнала*/ printf("Выключение светодиодаn"); /*Выключаем светодиод (низкий уровень выхода)*/ gpio_set_level(BLINK_GPIO, 0); /*Задержка (1000 мс)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("Включение светодиодаn"); /*Включаем светодиод (высокий уровень выхода)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay (1000 / portTICK_PERIOD_MS); }

Функция app_main() в примере BlinkampФайловая программа служит точкой входа для пользовательских программ. Это простая функция без параметров и возвращаемого значения. Эта функция вызывается после того, как система завершила инициализацию, которая включает в себя такие задачи, как инициализация последовательного порта журнала, настройка одно-/двухъядерного ядра и настройка сторожевого таймера.

Функция app_main() выполняется в контексте задачи с именем main. Размер стека и приоритет этой задачи можно настроить в меню Componentconfig Common ESP.

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

Содержимое файла main/CMakeLists.txt file, который управляет процессом компиляции основного компонента, выглядит следующим образом:

1. idf_comComponent_register(SRCS «blink.c» INCLUDE_DIRS «.»)

Среди них main/CMakeLists.txt вызывает только одну функцию системы компиляции — idf_comComponent_register. Подобно файлу CMakeLists.txt для большинства других компонентов, файлblink.c добавляется в SRCS, а исходный код fileДобавленные в SRCS файлы будут скомпилированы. В то же время «.», обозначающий путь, по которому находится CMakeLists.txt, должен быть добавлен в INCLUDE_DIRS в качестве каталогов поиска для заголовка. fileс. Содержимое CMakeLists.txt следующее:
1. #Укажите v3.5 как самую старую версию CMake, поддерживаемую текущим проектом. 2. #Версии ниже v3.5 необходимо обновить перед продолжением компиляции. 3. cmake_minimum_required(VERSION 3.5) 4. #Включить конфигурацию CMake по умолчанию для ESP. -Система компиляции IDF

Глава 4. Настройка среды разработки 55

5. 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 [pdf] Руководство пользователя
ESP32-C3 Беспроводное приключение, ESP32-C3, Беспроводное приключение, Приключение

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *