Aventura sen fíos ESP32-C3
Aventura sen fíos ESP32-C3
Unha guía completa para IoT
Espressif Systems 12 de xuño de 2023
Especificacións
- Produto: ESP32-C3 Wireless Adventure
- Fabricante: Espressif Systems
- Data: 12 de xuño de 2023
Instrucións de uso do produto
Preparación
Antes de usar o ESP32-C3 Wireless Adventure, asegúrate de facelo
familiarizado cos conceptos e arquitectura de IoT. Isto axudará
comprendes como o dispositivo encaixa no ecosistema de IoT máis grande
e as súas potenciais aplicacións en fogares intelixentes.
Introdución e Práctica de Proxectos IoT
Nesta sección, aprenderá sobre proxectos típicos de IoT,
incluíndo os módulos básicos para dispositivos IoT comúns, módulos básicos
de aplicacións cliente e plataformas de nube IoT comúns. Esta vontade
proporcionarlle unha base para comprender e crear o seu
proxectos propios de IoT.
Práctica: Smart Light Project
Neste proxecto práctico, aprenderás a crear un intelixente
luz usando o ESP32-C3 Wireless Adventure. A estrutura do proxecto,
funcións, preparación de hardware e proceso de desenvolvemento
explicado en detalle.
Estrutura do proxecto
O proxecto consta de varios compoñentes, entre eles o
ESP32-C3 Wireless Adventure, LEDs, sensores e unha nube
backend.
Funcións do proxecto
O proxecto de luz intelixente permítelle controlar o brillo e
cor dos LED de forma remota a través dunha aplicación móbil ou web
interface.
Preparación de hardware
Para preparar o proxecto, terás que reunir o
componentes de hardware necesarios, como ESP32-C3 Wireless
Placa de aventura, LEDs, resistencias e fonte de alimentación.
Proceso de desenvolvemento
O proceso de desenvolvemento implica configurar o desenvolvemento
ambiente, escribir código para controlar os LEDs, conectarse ao
backend na nube e probando a funcionalidade do dispositivo intelixente
luz.
Introdución a ESP RainMaker
ESP RainMaker é un marco poderoso para desenvolver IoT
dispositivos. Nesta sección, aprenderás o que é ESP RainMaker e
como se pode implementar nos teus proxectos.
Que é ESP RainMaker?
ESP RainMaker é unha plataforma baseada na nube que ofrece un conxunto de
ferramentas e servizos para construír e xestionar dispositivos IoT.
Implementación de ESP RainMaker
Nesta sección explícanse os diferentes compoñentes que interveñen
implementando ESP RainMaker, incluído o servizo de reclamación,
Axente RainMaker, backend na nube e cliente RainMaker.
Práctica: puntos clave para desenvolver con ESP RainMaker
Nesta sección de prácticas, aprenderá sobre os puntos clave para
considerar ao desenvolver con ESP RainMaker. Isto inclúe o dispositivo
reclamación, sincronización de datos e xestión de usuarios.
Características de ESP RainMaker
ESP RainMaker ofrece varias funcións para a xestión de usuarios, final
usuarios e administradores. Estas características permiten un dispositivo sinxelo
configuración, control remoto e monitorización.
Configurar o contorno de desenvolvemento
Esta sección ofrece un sobreview de ESP-IDF (Espressif IoT
marco de desenvolvemento), que é o marco oficial de desenvolvemento
para dispositivos baseados en ESP32. Explica as diferentes versións de
ESP-IDF e como configurar o ambiente de desenvolvemento.
Desenvolvemento de hardware e controladores
Deseño de hardware de produtos de luz intelixente baseado en ESP32-C3
Esta sección céntrase no deseño de hardware da luz intelixente
produtos baseados no ESP32-C3 Wireless Adventure. Abarca o
características e composición dos produtos de luz intelixente, así como o
deseño de hardware do sistema central ESP32-C3.
Características e composición dos produtos Smart Light
Esta subsección explica as características e os compoñentes que o fan
produtos de luz intelixente. Discuta as diferentes funcionalidades
e consideracións de deseño para crear luces intelixentes.
Deseño de hardware do sistema central ESP32-C3
O deseño de hardware do sistema central ESP32-C3 inclúe enerxía
alimentación, secuencia de encendido, reinicio do sistema, flash SPI, fonte de reloxo,
e consideracións de RF e antena. Esta subsección prevé
información detallada sobre estes aspectos.
FAQ
P: Que é ESP RainMaker?
R: ESP RainMaker é unha plataforma baseada na nube que ofrece ferramentas
e servizos para construír e xestionar dispositivos IoT. Simplifica
o proceso de desenvolvemento e permite unha fácil configuración do dispositivo, remoto
control e seguimento.
P: Como podo configurar o ambiente de desenvolvemento para
ESP32-C3?
R: Para configurar o ambiente de desenvolvemento para ESP32-C3, necesitas
para instalar ESP-IDF (Espressif IoT Development Framework) e
configúrao segundo as instrucións proporcionadas. ESP-IDF é o
marco oficial de desenvolvemento para dispositivos baseados en ESP32.
P: Cales son as características de ESP RainMaker?
R: ESP RainMaker ofrece varias funcións, incluído o usuario
xestión, funcións do usuario final e funcións de administración. Xestión de usuarios
permite facilitar a reclamación do dispositivo e a sincronización de datos. Usuario final
as funcións permiten o control remoto dos dispositivos mediante unha aplicación móbil ou
web interface. As funcións de administración proporcionan ferramentas para supervisar o dispositivo
e xestión.
Aventura sen fíos ESP32-C3
Unha guía completa para IoT
Espressif Systems 12 de xuño de 2023
Contidos
I Preparación
1
1 Introdución ao IoT
3
1.1 Arquitectura do IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Aplicación IoT en casas intelixentes . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Introdución e Práctica de Proxectos IoT
9
2.1 Introdución aos proxectos típicos de IoT . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Módulos básicos para dispositivos IoT comúns . . . . . . . . . . . . . . . . . 9
2.1.2 Módulos básicos de aplicacións cliente . . . . . . . . . . . . . . . . . . . 10
2.1.3 Introdución ás plataformas comúns de IoT Cloud . . . . . . . . . . . . . . 11
2.2 Práctica: Proxecto Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Estrutura do proxecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Funcións do proxecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Preparación do hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Proceso de desenvolvemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Introdución a ESP RainMaker
19
3.1 Que é ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 A implantación de ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Servizo de reclamación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Axente RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Backend da nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Cliente RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Práctica: puntos clave para desenvolver con ESP RainMaker . . . . . . . . . . . . 25
3.4 Características de ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Xestión de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Características do usuario final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Funcións de administración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Configurar o contorno de desenvolvemento
31
4.1 ESP-IDF superadoview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Versións ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 Fluxo de traballo de ESP-IDF Git . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Elixir unha versión adecuada . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Excedidoview de ESP-IDF SDK Directory . . . . . . . . . . . . . . . . . . . . 34 4.2 Configurar o entorno de desenvolvemento ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Configurar o contorno de desenvolvemento ESP-IDF en Linux . . . . . . . . 38 4.2.2 Configurar o contorno de desenvolvemento ESP-IDF en Windows . . . . . . 40 4.2.3 Configurar o contorno de desenvolvemento ESP-IDF en Mac . . . . . . . . . 45 4.2.4 Instalación de VS Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Introdución aos contornos de desenvolvemento de terceiros . . . . . . . . 46 4.3 Sistema de compilación ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Conceptos básicos do sistema de compilación . . . . . . . . . . . . . . . . . . 47 4.3.2 Proxecto File Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Regras de compilación predeterminadas do sistema de compilación . . . . . . . . . . . . . 50 4.3.4 Introdución ao script de compilación . . . . . . . . . . . . . . . . . . 51 4.3.5 Introdución aos comandos comúns . . . . . . . . . . . . . . . . . . . 52 4.4 Práctica: recompilación Exampo Programa "Blink". . . . . . . . . . . . . . . . . . 53 4.4.1 Example Análise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Compilación do programa Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Flashing do programa Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Análise do rexistro do porto serie do programa Blink . . . . . . . . . . . . . . 60 4.5 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Desenvolvemento de hardware e controladores
65
5 Deseño de hardware de produtos de luz intelixente baseado en ESP32-C3
67
5.1 Características e composición dos produtos Smart Light . . . . . . . . . . . . . . . 67
5.2 Deseño de hardware do sistema central ESP32-C3 . . . . . . . . . . . . . . . . . . . 70
5.2.1 Alimentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Secuencia de acendido e restablecemento do sistema . . . . . . . . . . . . . . . . . . 74
5.2.3 Flash SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Orixe do reloxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF e antena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Pasadores de cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 Controlador GPIO e PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Práctica: construción dun sistema de iluminación intelixente con ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Selección de módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Configuración de GPIO de sinais PWM . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Descarga de firmware e interface de depuración . . . . . . . . . . . . 82
5.3.4 Directrices para o deseño de RF . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Directrices para o deseño da fonte de alimentación . . . . . . . . . . . . . . . . . . . 86 5.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Desenvolvemento de controladores
87
6.1 Proceso de desenvolvemento do controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Aplicacións de periféricos ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Conceptos básicos do controlador de LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Espazos de cor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Controlador de LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Atenuación de LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Introdución ao PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Desenvolvemento do controlador de atenuación LED. . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Almacenamento non volátil (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 Controlador LED PWM (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Programación LED PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Práctica: Engadir controladores ao proxecto Smart Light . . . . . . . . . . . . . . . . . 103
6.5.1 Controlador de botóns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Controlador de atenuación de LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Comunicación e control sen fíos
109
7 Configuración e conexión Wi-Fi
111
7.1 Conceptos básicos da wifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Introdución á wifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evolución do IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Conceptos de Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Conexión Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Conceptos básicos de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Introdución ao Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Conceptos de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Conexión Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Configuración da rede Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Guía de configuración da rede Wi-Fi . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Outros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Programación Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Compoñentes Wi-Fi en ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Exercicio: Conexión Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Exercicio: Conexión Wi-Fi intelixente . . . . . . . . . . . . . . . . . . . . . 145
7.5 Práctica: Configuración Wi-Fi en Smart Light Project . . . . . . . . . . . . . . . 156 7.5.1 Conexión Wi-Fi en Smart Light Project . . . . . . . . . . . . . . . . . 156 7.5.2 Configuración de Wi-Fi intelixente . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Control local
159
8.1 Introdución ao control local . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Aplicación do control local . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Avanzadotages de Control Local. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Descubrindo dispositivos controlados a través de teléfonos intelixentes . . . . . . . . . . 161
8.1.4 Comunicación de datos entre teléfonos intelixentes e dispositivos . . . . . . . . 162
8.2 Métodos comúns de descubrimento local. . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Emisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multidifusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Comparación entre Broadcast e Multicast . . . . . . . . . . . . . . 176
8.2.4 Protocolo de aplicación de multidifusión mDNS para o descubrimento local . . . . . . . . 176
8.3 Protocolos comúns de comunicación para datos locais . . . . . . . . . . . . . . . 179
8.3.1 Protocolo de control de transmisión (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Protocolo de transferencia de hipertexto (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Usuario DatagProtocolo ram (UDP). . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protocolo de aplicación restrinxida (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Protocolo Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Resumo dos protocolos de comunicación de datos . . . . . . . . . . . . . . . 203
8.4 Garantía da seguridade dos datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Introdución á seguridade da capa de transporte (TLS) . . . . . . . . . . . . . 207
8.4.2 Introdución a Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Práctica: Control local no proxecto Smart Light . . . . . . . . . . . . . . . . . . 217
8.5.1 Creación dun servidor de control local baseado en Wi-Fi . . . . . . . . . . . . . . . 217
8.5.2 Verificación da funcionalidade de control local mediante scripts . . . . . . . . . . . 221
8.5.3 Creación dun servidor de control local baseado en Bluetooth . . . . . . . . . . . . 222
8.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Control de nube
225
9.1 Introdución ao control remoto . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Protocolos de comunicación de datos na nube . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Principios MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Formato de mensaxe MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Comparación de protocolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Configurar MQTT Broker en Linux e Windows . . . . . . . . . . . . 233 9.2.6 Configuración do cliente MQTT baseado en ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Garantir a seguridade dos datos MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Significado e función dos certificados . . . . . . . . . . . . . . . . . . . 237 9.3.2 Xeración de certificados localmente . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Configurar MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Configuración do cliente MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Práctica: control remoto mediante ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Conceptos básicos de ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Protocolo de comunicación de backend de nodos e nubes . . . . . . . . . . . 244 9.4.3 Comunicación entre o cliente e o backend da nube . . . . . . . . . . . 249 9.4.4 Roles de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Servizos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Luz intelixente Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplicación RainMaker e integracións de terceiros . . . . . . . . . . . . . . . 262 9.5 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Desenvolvemento de aplicacións para teléfonos intelixentes
269
10.1 Introdución ao desenvolvemento de aplicacións para teléfonos intelixentes . . . . . . . . . . . . . . . . . . 269
10.1.1 Enribaview de Desenvolvemento de aplicacións para teléfonos intelixentes. . . . . . . . . . . . . . . 270
10.1.2 Estrutura do proxecto Android . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Estrutura do proxecto iOS . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Ciclo de vida dunha actividade de Android . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Ciclo de vida de iOS ViewControlador. . . . . . . . . . . . . . . . . . . . . . 273
10.2 Crear un novo proxecto de aplicación para teléfonos intelixentes . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Preparación para o desenvolvemento de Android . . . . . . . . . . . . . . . . . . . 275
10.2.2 Crear un novo proxecto de Android . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Engadir dependencias para MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Solicitude de permiso en Android . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Preparación para o desenvolvemento de iOS . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Crear un novo proxecto iOS . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Engadir dependencias para MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Solicitude de permiso en iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Análise dos requisitos funcionais da aplicación . . . . . . . . . . . . . . . . . . 281
10.3.1 Análise dos requisitos funcionais do proxecto . . . . . . . . . . . . 282
10.3.2 Análise dos requisitos de xestión de usuarios . . . . . . . . . . . . . . . 282 10.3.3 Análise dos requisitos de aprovisionamento e vinculación do dispositivo . . . . . . . 283 10.3.4 Análise dos requisitos de mando a distancia . . . . . . . . . . . . . . . . 283 10.3.5 Análise dos requisitos de programación . . . . . . . . . . . . . . . . . . . 284 10.3.6 Análise dos requisitos do centro de usuarios . . . . . . . . . . . . . . . . . . 285 10.4 Desenvolvemento da xestión de usuarios . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Introdución ás API de RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Iniciar comunicación a través do teléfono intelixente . . . . . . . . . . . . . . . . 286 10.4.3 Rexistro da conta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Inicio de sesión da conta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Desenvolvemento do aprovisionamento de dispositivos . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Dispositivos de dixitalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Conectar dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Xeración de claves secretas . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Obtención do ID de nodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Dispositivos de aprovisionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Desenvolvemento do control de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Vincular dispositivos a contas na nube . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Obtención dunha lista de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Obtención do estado do dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Cambiar o estado do dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Desenvolvemento da programación e do centro de usuarios . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementación da función de programación . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementación do Centro de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Máis API de nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Actualización do firmware e xestión de versións
321
11.1 Actualización do firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Enribaview de táboas de partición. . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Proceso de arranque do firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Enribaview do Mecanismo OTA. . . . . . . . . . . . . . . . . . . . . 326
11.2 Xestión de versións de firmware . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Marcado do firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Reversión e anti-reversión . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Práctica: ao aire (OTA) Example . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Actualizar o firmware a través dun host local . . . . . . . . . . . . . . . . . 332
11.3.2 Actualizar o firmware mediante ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimización e Produción en masa
343
12 Xestión de enerxía e optimización de baixo consumo
345
12.1 Xestión de enerxía ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Escalado dinámico de frecuencia . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Configuración da xestión de enerxía . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Modo de baixa potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modo de suspensión de módem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Modo de sono leve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Modo de sono profundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Consumo de corrente en diferentes modos de enerxía . . . . . . . . . . . . . 358
12.3 Xestión de enerxía e depuración de baixo consumo . . . . . . . . . . . . . . . . . 359
12.3.1 Depuración de rexistros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Depuración GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Práctica: Xestión de enerxía no proxecto Smart Light . . . . . . . . . . . . . . . 363
12.4.1 Configuración da función de xestión de enerxía . . . . . . . . . . . . . . . . . 364
12.4.2 Usar bloqueos de xestión de enerxía . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Verificación do consumo de enerxía . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Funcións de seguranza do dispositivo melloradas
369
13.1 Enribaview de Seguridade de Datos de Dispositivos IoT. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Por que protexer os datos do dispositivo IoT? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Requisitos básicos para a seguridade dos datos do dispositivo IoT . . . . . . . . . . . . 371
13.2 Protección da integridade dos datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Introdución ao método de verificación da integridade . . . . . . . . . . . . . . 372
13.2.2 Verificación da integridade dos datos do firmware . . . . . . . . . . . . . . . . . . 373
13.2.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Protección da confidencialidade dos datos . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Introdución ao cifrado de datos . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Introdución ao esquema de cifrado Flash . . . . . . . . . . . . . . . . . 376
13.3.3 Almacenamento de chaves de cifrado Flash . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Modo de traballo de cifrado Flash . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Proceso de cifrado Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Introdución ao cifrado NVS . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Exampficheiros de cifrado Flash e cifrado NVS. . . . . . . . . . . 384
13.4 Protección da lexitimidade de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Introdución á sinatura dixital . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Enribaview do esquema de arranque seguro. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Introdución ao arranque seguro do software . . . . . . . . . . . . . . . . . . . 388 13.4.4 Introdución ao arranque seguro de hardware . . . . . . . . . . . . . . . . . . 390 13.4.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Práctica: características de seguridade na produción en masa . . . . . . . . . . . . . . . . . . 396 13.5.1 Cifrado Flash e arranque seguro . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Activar o cifrado de Flash e o arranque seguro con ferramentas Flash por lotes . . 397 13.5.3 Activar o cifrado Flash e o arranque seguro en Smart Light Project . . . 398 13.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Queima e probas de firmware para a produción en masa
399
14.1 Queima de firmware na produción en masa . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definición de particións de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Gravación de firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Probas de produción en masa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Práctica: datos de produción en masa no proxecto Smart Light . . . . . . . . . . . . . 404
14.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: plataforma de monitorización remota
405
15.1 Introdución a ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Iniciación a ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Introdución a ESP Insights no proxecto esp-insights . . . . . . 409
15.2.2 Correr Example no proxecto esp-insights . . . . . . . . . . . . . . . 411
15.2.3 Informes de información de volcado de cores . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Personalización de rexistros de interese . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Informe do motivo do reinicio . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Informes de métricas personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Práctica: Usando ESP Insights en Smart Light Project . . . . . . . . . . . . . . . 416
15.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Introdución
ESP32-C3 é un SoC de microcontrolador Wi-Fi e Bluetooth 5 (LE) dun só núcleo, baseado na arquitectura RISC-V de código aberto. Acada o equilibrio correcto de potencia, capacidades de E/S e seguridade, ofrecendo así a solución rendible óptima para os dispositivos conectados. Para mostrar varias aplicacións da familia ESP32-C3, este libro de Espressif levarache a unha viaxe interesante a través da AIoT, comezando desde os conceptos básicos do desenvolvemento de proxectos de IoT e a configuración do entorno ata prácticas prácticas.amples. Os catro primeiros capítulos falan de IoT, ESP RainMaker e ESP-IDF. Resumo dos capítulos 5 e 6 sobre deseño de hardware e desenvolvemento de controladores. A medida que avances, descubrirás como configurar o teu proxecto a través de redes wifi e aplicacións móbiles. Finalmente, aprenderás a optimizar o teu proxecto e poñelo en produción en masa.
Se es un enxeñeiro en campos relacionados, un arquitecto de software, un profesor, un estudante ou calquera persoa que teña interese en IoT, este libro é para ti.
Podes descargar o código example usado neste libro desde o sitio de Espressif en GitHub. Para obter a información máis recente sobre o desenvolvemento de IoT, siga a nosa conta oficial.
Prefacio
Un mundo informador
Montando a onda de Internet, Internet das Cousas (IoT) fixo o seu gran debut para converterse nun novo tipo de infraestrutura na economía dixital. Para achegar a tecnoloxía ao público, Espressif Systems traballa coa visión de que os desenvolvedores de todos os ámbitos poidan usar IoT para resolver algúns dos problemas máis urxentes dos nosos tempos. Un mundo de "Rede intelixente de todas as cousas" é o que esperamos do futuro.
Deseñar os nosos propios chips é un compoñente crítico desa visión. Debe ser un maratón, que require avances constantes contra os límites tecnolóxicos. Desde o "Game Changer" ESP8266 ata a serie ESP32 que integra conectividade Wi-Fi e Bluetoothr (LE), seguido de ESP32-S3 equipado con aceleración AI, Espressif non deixa de investigar e desenvolver produtos para solucións AIoT. Co noso software de código aberto, como o IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF e Device Connectivity Platform ESP RainMaker, creamos un marco independente para crear aplicacións AIoT.
A partir de xullo de 2022, os envíos acumulados de chipsets IoT de Espressif superaron os 800 millóns, liderando o mercado de MCU Wi-Fi e alimentando un gran número de dispositivos conectados en todo o mundo. A busca da excelencia fai de cada produto Espressif un gran éxito polo seu alto nivel de integración e eficiencia de custos. O lanzamento de ESP32-C3 marca un fito significativo da tecnoloxía desenvolvida por Espressif. É un MCU dun só núcleo, de 32 bits, baseado en RISC-V con 400 KB de SRAM, que pode funcionar a 160 MHz. Ten integrado Wi-Fi de 2.4 GHz e Bluetooth 5 (LE) cun soporte de longo alcance. Acada un excelente equilibrio de potencia, capacidades de E/S e seguridade, ofrecendo así a solución rendible óptima para os dispositivos conectados. Baseado nun ESP32-C3 tan poderoso, este libro pretende axudar aos lectores a comprender o coñecemento relacionado con IoT con ilustracións detalladas e experiencias prácticas.amples.
Por que escribimos este libro?
Espressif Systems é máis que unha empresa de semicondutores. Tamén é unha empresa de plataformas IoT, que sempre se esforza por conseguir avances e innovacións no campo da tecnoloxía. Ao mesmo tempo, Espressif ten aberto e compartiu o seu sistema operativo de desenvolvemento propio e marco de software coa comunidade, formando un ecosistema único. Os enxeñeiros, os creadores e os entusiastas da tecnoloxía desenvolven activamente novas aplicacións de software baseadas nos produtos de Espressif, comunícanse libremente e comparten a súa experiencia. Podes ver as ideas fascinantes dos desenvolvedores en varias plataformas todo o tempo, como YouTube e GitHub. A popularidade dos produtos de Espressif estimulou un número crecente de autores que produciron máis de 100 libros baseados en chipsets Espressif, en máis de dez idiomas, incluíndo inglés, chinés, alemán, francés e xaponés.
É o apoio e a confianza dos socios comunitarios o que fomenta a innovación continua de Espressif. "Esforzámonos por facer que os nosos chips, sistemas operativos, frameworks, solucións, Cloud, prácticas empresariais, ferramentas, documentación, escritos, ideas, etc., sexan cada vez máis relevantes para as respostas que as persoas necesitan nos problemas máis urxentes da vida contemporánea. Esta é a máis alta ambición e compás moral de Espressif. dixo Teo Swee Ann, fundador e CEO de Espressif.
Espressif valora a lectura e as ideas. Dado que a actualización continua da tecnoloxía IoT presenta requisitos máis elevados para os enxeñeiros, como podemos axudar a máis persoas a dominar rapidamente chips de IoT, sistemas operativos, marcos de software, esquemas de aplicacións e produtos de servizos na nube? Como di o refrán, é mellor ensinarlle a un home a pescar que darlle peixe. Nunha sesión de intercambio de ideas, ocorréusenos que podíamos escribir un libro para resolver de forma sistemática os coñecementos clave do desenvolvemento de IoT. Acertamos, reunimos rapidamente un grupo de enxeñeiros seniores e combinamos a experiencia do equipo técnico en programación integrada, desenvolvemento de hardware e software IoT, contribuíndo todo á publicación deste libro. No proceso de escritura, intentamos ser obxectivos e xustos, despojados do casulo e utilizar expresións concisas para contar a complexidade e o encanto da Internet das cousas. Resumimos coidadosamente as preguntas comúns, referidas aos comentarios e suxestións da comunidade, co fin de responder claramente ás preguntas atopadas no proceso de desenvolvemento e proporcionar pautas prácticas de desenvolvemento de IoT para técnicos e responsables de toma de decisións relevantes.
Estrutura do libro
Este libro adopta unha perspectiva centrada no enxeñeiro e expón o coñecemento necesario para o desenvolvemento de proxectos IoT paso a paso. Componse de catro partes, como segue:
· Preparación (capítulo 1): esta parte presenta a arquitectura de IoT, o marco típico de proxectos IoT, a plataforma de nube ESP RainMakerr e o ambiente de desenvolvemento ESP-IDF, para sentar unha base sólida para o desenvolvemento de proxectos IoT.
· Desenvolvemento de hardware e controladores (Capítulo 5): baseada no conxunto de chips ESP6-C32, esta parte elabora o desenvolvemento mínimo de controladores e sistemas de hardware, e implementa o control da atenuación, a graduación de cores e a comunicación sen fíos.
· Comunicación e control sen fíos (Capítulo 7): esta parte explica o esquema de configuración Wi-Fi intelixente baseado no chip ESP11-C32, protocolos de control local e na nube e control local e remoto dos dispositivos. Tamén ofrece esquemas para desenvolver aplicacións para teléfonos intelixentes, actualización de firmware e xestión de versións.
· Optimización e produción en masa (capítulo 12-15): esta parte está destinada a aplicacións IoT avanzadas, centrándose na optimización dos produtos na xestión de enerxía, a optimización de baixo consumo e a mellora da seguridade. Tamén presenta a queima e probas de firmware na produción en masa, e como diagnosticar o estado de execución e os rexistros do firmware do dispositivo a través da plataforma de monitorización remota ESP Insights.
Sobre o código fonte
Os lectores poden executar o exampprogramas deste libro, ben introducindo o código manualmente ou utilizando o código fonte que acompaña ao libro. Facemos fincapé na combinación de teoría e práctica, e así establecemos unha sección de Práctica baseada no proxecto Smart Light en case todos os capítulos. Todos os códigos son de código aberto. Os lectores poden descargar o código fonte e comentalo nas seccións relacionadas con este libro en GitHub e no noso foro oficial esp32.com. O código de código aberto deste libro está suxeito aos termos da licenza Apache 2.0.
Nota do autor
Este libro está producido oficialmente por Espressif Systems e está escrito polos enxeñeiros seniores da compañía. É axeitado para xestores e persoal de I+D en industrias relacionadas co IoT, profesores e estudantes de especialidades relacionadas e entusiastas do campo da Internet das Cousas. Agardamos que este libro poida servir de manual de traballo, de referencia e de libro de cabeceira, para ser como un bo titor e amigo.
Durante a compilación deste libro, fixemos referencia a algúns resultados de investigación relevantes de expertos, estudosos e técnicos nacionais e estranxeiros, e fixemos o posible por citalos segundo as normas académicas. Non obstante, é inevitable que haxa algunhas omisións, polo que aquí queremos expresar o noso profundo respecto e agradecemento a todos os autores relevantes. Ademais, citamos información de Internet, polo que queremos agradecer aos autores e editores orixinais e pedir desculpas por non poder indicar a fonte de cada información.
Co fin de producir un libro de alta calidade, organizamos roldas de debates internos e aprendemos das suxestións e comentarios dos lectores de probas e dos editores. Aquí, queremos agradecerlle de novo a súa axuda que contribuíu a este traballo exitoso.
Por último, pero o máis importante, grazas a todos en Espressif que tanto traballaron polo nacemento e popularización dos nosos produtos.
O desenvolvemento de proxectos IoT implica unha ampla gama de coñecementos. Limitado á extensión do libro, así como ao nivel e experiencia do autor, as omisións son inevitables. Por iso, solicitamos amablemente que os expertos e lectores critiquen e corrixan os nosos erros. Se tes algunha suxestión para este libro, póñase en contacto connosco en book@espressif.com. Agardamos os teus comentarios.
Como usar este libro?
O código dos proxectos deste libro foi de código aberto. Podes descargalo do noso repositorio de GitHub e compartir os teus pensamentos e preguntas no noso foro oficial. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Foro: https://www.esp32.com/bookc3 Ao longo do libro, haberá partes destacadas como se mostra a continuación.
Código fonte Neste libro, facemos fincapé na combinación de teoría e práctica, e así establecemos unha sección de práctica sobre o proxecto Smart Light en case todos os capítulos. Os pasos correspondentes e a páxina de orixe marcaranse entre dúas liñas que comezan polo tag Código fonte.
NOTA/CONSELLOS Aquí é onde podes atopar algunha información crítica e recordatorios para depurar correctamente o teu programa. Marcaranse entre dúas liñas grosas que comezan polo tag NOTA ou CONSELLOS.
A maioría dos comandos deste libro execútanse en Linux, solicitados polo carácter "$". Se o comando require privilexios de superusuario para executarse, o indicador será substituído por "#". O símbolo do sistema nos sistemas Mac é "%", como se usa na Sección 4.2.3 Instalación de ESP-IDF en Mac.
O texto do corpo deste libro imprimirase en Charter, mentres que o código exampleiros, compoñentes, funcións, variables, código file os nomes, os directorios de códigos e as cadeas estarán en Courier New.
Os comandos ou textos que debe introducir o usuario e os comandos que se poden introducir premendo a tecla "Intro" imprimiranse en negrita de Courier New. Os rexistros e os bloques de códigos presentaranse en caixas azuis claras.
ExampLe:
En segundo lugar, use esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py para xerar o binario da partición NVS file no host de desenvolvemento co seguinte comando:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –size TAMAÑO DA PARTICIÓN NVS
Capítulo 1
Introdución
a
IoT
A finais do século XX, co auxe das redes informáticas e das tecnoloxías da comunicación, Internet integrouse rapidamente na vida das persoas. A medida que a tecnoloxía de Internet segue madurando, naceu a idea de Internet das Cousas (IoT). Literalmente, IoT significa unha Internet onde as cousas están conectadas. Mentres que Internet orixinal rompe os límites do espazo e do tempo e reduce a distancia entre "persoa e persoa", IoT fai que as "cousas" sexan un participante importante, achegando "persoas" e "cousas". Nun futuro previsible, IoT se converterá na forza motriz da industria da información.
Entón, que é a Internet das Cousas?
É difícil definir con precisión a Internet das cousas, xa que o seu significado e alcance están en constante evolución. En 1995, Bill Gates presentou por primeira vez a idea de IoT no seu libro The Road Ahead. En pocas palabras, IoT permite que os obxectos intercambien información entre si a través de Internet. O seu obxectivo final é establecer unha "Internet de Todo". Esta é unha interpretación temperá de IoT, así como unha fantasía da tecnoloxía futura. Trinta anos despois, co rápido desenvolvemento da economía e da tecnoloxía, a fantasía faise realidade. Desde dispositivos intelixentes, fogares intelixentes, cidades intelixentes, Internet de vehículos e dispositivos wearable, ata o "metaverso" apoiado polas tecnoloxías IoT, novos conceptos están xurdindo constantemente. Neste capítulo, comezaremos cunha explicación da arquitectura da Internet das cousas e, a continuación, presentaremos a aplicación de IoT máis común, a casa intelixente, para axudarche a comprender claramente o IoT.
1.1 Arquitectura do IoT
A Internet das Cousas implica múltiples tecnoloxías que teñen diferentes necesidades e formas de aplicación en diferentes industrias. Para clasificar a estrutura, as tecnoloxías clave e as características de aplicación do IoT, é necesario establecer unha arquitectura unificada e un sistema técnico estándar. Neste libro, a arquitectura de IoT simplemente divídese en catro capas: capa de percepción e control, capa de rede, capa de plataforma e capa de aplicación.
Capa de percepción e control Como o elemento máis básico da arquitectura de IoT, a capa de percepción e control é o núcleo para realizar a detección integral de IoT. A súa función principal é recoller, identificar e controlar a información. Consiste nunha variedade de dispositivos con capacidade de percepción,
3
identificación, control e execución, e é responsable de recuperar e analizar datos como propiedades do material, tendencias de comportamento e estado do dispositivo. Deste xeito, IoT consegue recoñecer o mundo físico real. Ademais, a capa tamén é capaz de controlar o estado do dispositivo.
Os dispositivos máis comúns desta capa son varios sensores, que xogan un papel importante na recollida e identificación de información. Os sensores son como os órganos sensoriais humanos, como sensores fotosensibles que equivalen á visión, sensores acústicos ao oído, sensores de gases ao olfacto e sensores sensibles á presión e á temperatura ao tacto. Con todos estes "órganos sensoriais", os obxectos vólvense "vivos" e capaces de percepción, recoñecemento e manipulación intelixentes do mundo físico.
Capa de rede A función principal da capa de rede é transmitir información, incluídos os datos obtidos da capa de percepción e control ao destino especificado, así como os comandos emitidos dende a capa de aplicación de volta á capa de percepción e control. Serve como unha importante ponte de comunicación que conecta diferentes capas dun sistema IoT. Para configurar un modelo básico de Internet das Cousas, implica dous pasos para integrar obxectos nunha rede: acceso a Internet e transmisión a través de Internet.
O acceso a Internet Internet permite a interconexión entre persoa e persoa, pero non logra incluír cousas na gran familia. Antes da chegada do IoT, a maioría das cousas non eran "adaptables á rede". Grazas ao continuo desenvolvemento da tecnoloxía, IoT consegue conectar cousas a Internet, realizando así a interconexión entre "persoas e cousas", e "cousas e cousas". Existen dúas formas comúns de implementar a conexión a Internet: acceso á rede por cable e acceso á rede sen fíos.
Os métodos de acceso á rede con fíos inclúen Ethernet, comunicación en serie (por exemplo, RS-232, RS-485) e USB, mentres que o acceso á rede sen fíos depende da comunicación sen fíos, que se pode dividir en comunicación sen fíos de curto alcance e comunicación sen fíos de longo alcance.
A comunicación sen fíos de curto alcance inclúe ZigBee, Bluetoothr, Wi-Fi, comunicación de campo próximo (NFC) e identificación por radiofrecuencia (RFID). A comunicación sen fíos de longo alcance inclúe a comunicación de tipo de máquina mellorada (eMTC), LoRa, Internet das cousas de banda estreita (NB-IoT), 2G, 3G, 4G, 5G, etc.
Transmisión a través de Internet Diferentes métodos de acceso a Internet levan á ligazón de transmisión física de datos correspondente. O seguinte é decidir que protocolo de comunicación utilizar para transmitir os datos. En comparación cos terminais de Internet, a maioría dos terminais IoT teñen actualmente menos
4 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
recursos dispoñibles, como o rendemento de procesamento, a capacidade de almacenamento, a taxa de rede, etc., polo que é necesario elixir un protocolo de comunicación que ocupe menos recursos nas aplicacións IoT. Hai dous protocolos de comunicación que se usan amplamente na actualidade: Message Queuing Telemetry Transport (MQTT) e Constrained Application Protocol (CoAP).
Capa de plataforma A capa de plataforma refírese principalmente ás plataformas de nube IoT. Cando todos os terminais IoT están conectados en rede, os seus datos deben agregarse nunha plataforma de nube IoT para calculalos e almacenalos. A capa de plataforma admite principalmente aplicacións IoT para facilitar o acceso e a xestión de dispositivos masivos. Conecta terminais de IoT á plataforma na nube, recolle datos de terminais e envía comandos aos terminais para implementar o control remoto. Como servizo intermedio para asignar equipos a aplicacións da industria, a capa de plataforma xoga un papel de conexión en toda a arquitectura IoT, levando unha lóxica empresarial abstracta e un modelo de datos básico estandarizado, que non só pode realizar un acceso rápido aos dispositivos, senón que tamén proporciona poderosas capacidades modulares. para satisfacer diversas necesidades en escenarios de aplicación da industria. A capa de plataforma inclúe principalmente módulos funcionais como o acceso ao dispositivo, a xestión de dispositivos, a xestión da seguridade, a comunicación de mensaxes, o funcionamento e mantemento de seguimento e as aplicacións de datos.
· Acceso ao dispositivo, realizando a conexión e comunicación entre terminais e plataformas cloud IoT.
· Xestión de dispositivos, incluíndo funcións como creación de dispositivos, mantemento de dispositivos, conversión de datos, sincronización de datos e distribución de dispositivos.
· Xestión da seguridade, garantindo a seguridade da transmisión de datos IoT desde as perspectivas da autenticación de seguridade e a seguridade das comunicacións.
· Comunicación de mensaxes, incluíndo tres direccións de transmisión, é dicir, o terminal envía datos á plataforma de nube IoT, a plataforma de nube IoT envía datos ao lado do servidor ou a outras plataformas de nube IoT e o lado do servidor controla de forma remota os dispositivos IoT.
· Monitorización de O&M, que inclúe monitorización e diagnóstico, actualización de firmware, depuración en liña, servizos de rexistro, etc.
· Aplicacións de datos, que implican o almacenamento, análise e aplicación de datos.
Capa de aplicación A capa de aplicación utiliza os datos da capa de plataforma para xestionar a aplicación, filtrándoos e procesándoos con ferramentas como bases de datos e software de análise. Os datos resultantes pódense utilizar para aplicacións de IoT do mundo real, como a saúde intelixente, a agricultura intelixente, as casas intelixentes e as cidades intelixentes.
Por suposto, a arquitectura de IoT pódese subdividir en máis capas, pero non importa cantas capas conste, o principio subxacente segue sendo esencialmente o mesmo. Aprendizaxe
Capítulo 1. Introdución a IoT 5
sobre a arquitectura de IoT axuda a afondar a nosa comprensión das tecnoloxías de IoT e a construír proxectos IoT totalmente funcionais.
1.2 Aplicación IoT en casas intelixentes
O IoT penetrou en todos os ámbitos da vida, e a aplicación IoT máis relacionada con nós é a casa intelixente. Moitos electrodomésticos tradicionais están agora equipados cun ou máis dispositivos IoT e moitas casas de nova construción están deseñadas con tecnoloxías IoT desde o principio. A figura 1.1 mostra algúns dispositivos domésticos intelixentes comúns.
Figura 1.1. Dispositivos domésticos intelixentes comúns O desenvolvemento da casa intelixente pódese dividir simplemente en produtos intelixentestage, escena interconexión stage e intelixente stage, como se mostra na figura 1.2.
Figura 1.2. Desenvolvemento stage da casa intelixente 6 ESP32-C3 Wireless Adventure: Unha guía completa para IoT
O primeiro stage trata de produtos intelixentes. A diferenza dos fogares tradicionais, nos fogares intelixentes, os dispositivos IoT reciben sinais con sensores e están conectados en rede mediante tecnoloxías de comunicación sen fíos como Wi-Fi, Bluetooth LE e ZigBee. Os usuarios poden controlar produtos intelixentes de varias formas, como aplicacións para teléfonos intelixentes, asistentes de voz, control de altofalantes intelixentes, etc.tage céntrase na interconexión de escenas. Neste stage, os desenvolvedores xa non están considerando controlar un só produto intelixente, senón interconectar dous ou máis produtos intelixentes, automatizar ata certo punto e, finalmente, formar un modo de escena personalizado. Por example, cando o usuario preme calquera botón do modo de escena, as luces, as cortinas e os equipos de aire acondicionado adaptaranse automaticamente aos predefinidos. Por suposto, existe o requisito previo de que a lóxica de vinculación estea facilmente configurada, incluídas as condicións de activación e as accións de execución. Imaxina que o modo de calefacción do aire acondicionado se activa cando a temperatura interior cae por debaixo dos 10 °C; que ás 7 da mañá soa música para espertar ao usuario, ábrense as cortinas intelixentes e a arrocera ou a torradora de pan comeza a través dunha toma intelixente; a medida que o usuario se ergue e remata de lavar, xa se serve o almorzo, para que non haxa demora en ir ao traballo. Que cómoda se fixo a nosa vida! O terceiro stage vai á intelixencia stage. A medida que se acceda a máis dispositivos domésticos intelixentes, tamén o farán os tipos de datos xerados. Coa axuda da computación en nube, o big data e a intelixencia artificial, é como se se plantara un "cerebro máis intelixente" en casas intelixentes, que xa non requiren comandos frecuentes do usuario. Recollen datos de interaccións anteriores e aprenden os patróns de comportamento e as preferencias do usuario, para automatizar as actividades, incluíndo recomendacións para a toma de decisións. Actualmente, a maioría das casas intelixentes están na escena interconexión stage. A medida que aumenta a taxa de penetración e a intelixencia dos produtos intelixentes, estase eliminando as barreiras entre os protocolos de comunicación. No futuro, as casas intelixentes están obrigadas a volverse realmente "intelixentes", do mesmo xeito que o sistema de IA Jarvis en Iron Man, que non só pode axudar ao usuario a controlar varios dispositivos, xestionar os asuntos cotiáns, senón que tamén ten un poder de computación e capacidade de pensamento súper. No intelixente stage, os seres humanos recibirán mellores servizos tanto en cantidade como en calidade.
Capítulo 1. Introdución a IoT 7
8 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Capítulo Introdución e práctica de 2 Proxectos IoT
No capítulo 1, introducimos a arquitectura de IoT e as funcións e as interrelacións da capa de percepción e control, a capa de rede, a capa de plataforma e a capa de aplicación, así como o desenvolvemento da casa intelixente. Porén, ao igual que cando aprendemos a pintar, coñecer os coñecementos teóricos está lonxe de ser suficiente. Temos que "ensuciarnos as mans" para poñer en práctica proxectos de IoT para dominar verdadeiramente a tecnoloxía. Ademais, cando un proxecto pasa á produción en masa stage, é necesario ter en conta máis factores como a conexión de rede, a configuración, a interacción da plataforma de nube IoT, a xestión e actualizacións de firmware, a xestión da produción en masa e a configuración da seguridade. Entón, a que debemos prestar atención ao desenvolver un proxecto completo de IoT? No capítulo 1, mencionamos que a casa intelixente é un dos escenarios de aplicación IoT máis comúns, e as luces intelixentes son un dos aparellos máis básicos e prácticos, que se poden utilizar en fogares, hoteis, ximnasios, hospitais, etc. Por iso, en Neste libro, tomaremos como punto de partida a construción dun proxecto de luz intelixente, explicaremos os seus compoñentes e características e proporcionaremos orientación sobre o desenvolvemento do proxecto. Agardamos que poida extraer inferencias deste caso para crear máis aplicacións IoT.
2.1 Introdución aos proxectos típicos de IoT
En termos de desenvolvemento, os módulos funcionais básicos dos proxectos IoT pódense clasificar en desenvolvemento de software e hardware de dispositivos IoT, desenvolvemento de aplicacións cliente e desenvolvemento de plataformas de IoT na nube. É importante aclarar os módulos funcionais básicos, que se describirán con máis detalle nesta sección.
2.1.1 Módulos básicos para dispositivos IoT comúns
O desenvolvemento de software e hardware de dispositivos IoT inclúe os seguintes módulos básicos: Recollida de datos
Como a capa inferior da arquitectura IoT, os dispositivos IoT da capa de percepción e control conectan sensores e dispositivos a través dos seus chips e periféricos para conseguir a recollida de datos e o control da operación.
9
Vinculación de contas e configuración inicial Para a maioría dos dispositivos IoT, a vinculación de contas e a configuración inicial complétanse nun proceso operativo, por exemploample, conectar dispositivos cos usuarios mediante a configuración da rede Wi-Fi.
Interacción con plataformas de IoT na nube Para supervisar e controlar os dispositivos IoT, tamén é necesario conectalos a plataformas de IoT na nube, co fin de dar comandos e informar de estado mediante a interacción entre eles.
Control de dispositivos Cando se conectan con plataformas de nube IoT, os dispositivos poden comunicarse coa nube e rexistrarse, vincularse ou controlarse. Os usuarios poden consultar o estado do produto e realizar outras operacións na aplicación do teléfono intelixente a través de plataformas de nube IoT ou protocolos de comunicación locais.
Actualización do firmware Os dispositivos IoT tamén poden actualizar o firmware en función das necesidades dos fabricantes. Ao recibir comandos enviados pola nube, realizarase a actualización do firmware e a xestión de versións. Con esta función de actualización do firmware, pode mellorar continuamente as funcións dos dispositivos IoT, corrixir defectos e mellorar a experiencia do usuario.
2.1.2 Módulos básicos de aplicacións cliente
As aplicacións cliente (por exemplo, aplicacións para teléfonos intelixentes) inclúen principalmente os seguintes módulos básicos:
Sistema de contas e autorización Admite a autorización de contas e dispositivos.
Control do dispositivo As aplicacións para teléfonos intelixentes adoitan estar equipadas con funcións de control. Os usuarios poden conectarse facilmente a dispositivos IoT e xestionalos en calquera momento e en calquera lugar mediante aplicacións para teléfonos intelixentes. Nunha casa intelixente do mundo real, os dispositivos contrólanse principalmente a través de aplicacións para teléfonos intelixentes, o que non só permite a xestión intelixente dos dispositivos, senón que tamén aforra o custo de man de obra. Polo tanto, o control do dispositivo é imprescindible para as aplicacións do cliente, como o control de atributos de función do dispositivo, o control de escenas, a programación, o control remoto, a conexión de dispositivos, etc. Os usuarios domésticos intelixentes tamén poden personalizar as escenas segundo as necesidades persoais, controlar a iluminación, os electrodomésticos, a entrada. , etc., para facer a vida na casa máis cómoda e cómoda. Poden temporizar o aire acondicionado, apagalo de forma remota, activar a luz do corredor automaticamente unha vez que se desbloquea a porta ou cambiar ao modo "teatro" cun só botón.
Notificación As aplicacións Cliente actualizan o estado en tempo real dos dispositivos IoT e envían alertas cando os dispositivos son anormais.
10 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Atención ao cliente posvenda As aplicacións para teléfonos intelixentes poden proporcionar servizos posvenda de produtos, para resolver problemas relacionados con fallos de dispositivos IoT e operacións técnicas de forma oportuna.
Funcións destacadas Para satisfacer as necesidades dos diferentes usuarios, pódense engadir outras funcións, como Shake, NFC, GPS, etc. O GPS pode axudar a establecer a precisión das operacións da escena segundo a localización e a distancia, mentres que a función Shake permite aos usuarios configurar o comandos que se executarán para un dispositivo ou escena específicos axitando.
2.1.3 Introdución ás plataformas comúns de IoT Cloud
A plataforma na nube IoT é unha plataforma todo en un que integra funcións como a xestión de dispositivos, a comunicación de seguridade de datos e a xestión de notificacións. Segundo o seu grupo obxectivo e accesibilidade, as plataformas de nube IoT pódense dividir en plataformas públicas de nube IoT (en diante, "nube pública") e plataformas de nube IoT privadas (en diante, "nube privada").
A nube pública adoita indicar plataformas de nube IoT compartidas para empresas ou individuos, operadas e mantidas por provedores de plataformas e compartidas a través de Internet. Pode ser gratuíto ou de baixo custo e ofrece servizos en toda a rede pública aberta, como Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, etc. Como plataforma de apoio, a nube pública pode integrar provedores de servizos upstream e usuarios finais intermedios para crear unha nova cadea de valor e ecosistema.
A nube privada está construída só para uso empresarial, garantindo así o mellor control sobre os datos, a seguridade e a calidade do servizo. As empresas manteñen os seus servizos e infraestruturas por separado, e o hardware e o software de soporte tamén están dedicados a usuarios específicos. As empresas poden personalizar os servizos na nube para satisfacer as necesidades da súa empresa. Na actualidade, algúns fabricantes de fogares intelixentes xa teñen plataformas privadas de nube IoT e desenvolveron aplicacións de fogar intelixente baseadas nelas.
A nube pública e a privada teñen a súa propia vantaxetages, que se explicará máis adiante.
Para lograr a conectividade de comunicación, é necesario completar polo menos o desenvolvemento integrado no lado do dispositivo, xunto cos servidores empresariais, as plataformas de nube IoT e as aplicacións para teléfonos intelixentes. Ante un proxecto tan grande, a nube pública normalmente ofrece kits de desenvolvemento de software para aplicacións do dispositivo e para teléfonos intelixentes para acelerar o proceso. Tanto a nube pública como a privada ofrecen servizos que inclúen o acceso ao dispositivo, a xestión do dispositivo, a sombra do dispositivo e a operación e mantemento.
Acceso ao dispositivo As plataformas na nube IoT deben proporcionar non só interfaces para o acceso ao dispositivo mediante protocolos
Capítulo 2. Introdución e práctica dos proxectos IoT 11
como MQTT, CoAP, HTTPS e WebSocket, pero tamén a función de autenticación de seguranza do dispositivo para bloquear dispositivos falsificados e ilegais, reducindo de forma efectiva o risco de verse comprometido. Tal autenticación adoita admitir diferentes mecanismos, polo que cando os dispositivos se producen en masa, é necesario asignar previamente o certificado do dispositivo segundo o mecanismo de autenticación seleccionado e gravalo nos dispositivos.
Xestión de dispositivos A función de xestión de dispositivos proporcionada polas plataformas de nube IoT non só pode axudar aos fabricantes a supervisar o estado de activación e o estado en liña dos seus dispositivos en tempo real, senón que tamén permite opcións como engadir/eliminar dispositivos, recuperar, engadir/eliminar grupos, actualizar o firmware. , e xestión de versións.
As plataformas de nube IoT de sombra do dispositivo poden crear unha versión virtual persistente (sombra do dispositivo) para cada dispositivo, e o estado da sombra do dispositivo pódese sincronizar e obter mediante a aplicación do teléfono intelixente ou outros dispositivos mediante protocolos de transmisión de Internet. Device shadow almacena o estado máis recente informado e o estado esperado de cada dispositivo, e aínda que o dispositivo estea sen conexión, aínda pode obter o estado chamando ás API. Device shadow ofrece API sempre activas, o que facilita a creación de aplicacións para teléfonos intelixentes que interactúan cos dispositivos.
Operación e mantemento A función O&M inclúe tres aspectos: · Demostración de información estatística sobre dispositivos e notificacións IoT. · A xestión de rexistros permite recuperar información sobre o comportamento do dispositivo, o fluxo de mensaxes arriba/abajo e o contido da mensaxe. · A depuración de dispositivos admite a entrega de comandos, a actualización da configuración e a comprobación da interacción entre as plataformas de nube IoT e as mensaxes do dispositivo.
2.2 Práctica: Proxecto Smart Light
Despois da introdución teórica en cada capítulo, atoparás unha sección práctica relacionada co proxecto Smart Light para axudarche a ter unha experiencia práctica. O proxecto está baseado no chip ESP32-C3 de Espressif e na plataforma ESP RainMaker IoT Cloud, e abarca hardware de módulos sen fíos en produtos de luz intelixente, software integrado para dispositivos intelixentes baseados en ESP32C3, aplicacións para teléfonos intelixentes e interacción ESP RainMaker.
Código fonte Para mellorar a experiencia de aprendizaxe e desenvolvemento, o proxecto deste libro foi de código aberto. Podes descargar o código fonte do noso repositorio de GitHub en https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
2.2.1 Estrutura do proxecto
O proxecto Smart Light consta de tres partes: i. Dispositivos de luz intelixente baseados en ESP32-C3, encargados de interactuar coas plataformas de nube IoT e controlar o interruptor, o brillo e a temperatura da cor do LED lamp contas. ii. Aplicacións para teléfonos intelixentes (incluídas as aplicacións para tabletas que se executan en Android e iOS), responsables da configuración da rede dos produtos de luz intelixente, así como da consulta e control do seu estado.
iii. Unha plataforma de nube IoT baseada en ESP RainMaker. Para simplificar, consideramos a plataforma de nube IoT e o servidor empresarial no seu conxunto neste libro. Os detalles sobre ESP RainMaker proporcionaranse no capítulo 3.
A correspondencia entre a estrutura do proxecto Smart Light e a arquitectura de IoT móstrase na Figura 2.1.
Figura 2.1. Estrutura do proxecto de luz intelixente
2.2.2 Funcións do proxecto
Divididas segundo a estrutura, as funcións de cada parte son as seguintes. Dispositivos de luz intelixente
· Configuración e conexión da rede. · Control PWM LED, como interruptor, brillo, temperatura de cor, etc. · Automatización ou control de escena, por exemplo, temporizador. · Cifrado e arranque seguro do Flash. · Actualización de firmware e xestión de versións.
Capítulo 2. Introdución e práctica dos proxectos IoT 13
Aplicacións para teléfonos intelixentes · Configuración de rede e vinculación de dispositivos. · Control de produtos de luz intelixente, como interruptor, brillo, temperatura de cor, etc. · Automatización ou configuración de escenas, por exemplo, temporizador. · Control local/remoto. · Rexistro de usuarios, inicio de sesión, etc.
Plataforma na nube ESP RainMaker IoT · Habilitación do acceso ao dispositivo IoT. · Proporcionar API de operación de dispositivos accesibles para aplicacións de teléfonos intelixentes. · Actualización de firmware e xestión de versións.
2.2.3 Preparación do hardware
Se estás interesado en poñer en práctica o proxecto, tamén necesitarás o seguinte hardware: luces intelixentes, teléfonos intelixentes, enrutadores Wi-Fi e un ordenador que cumpra os requisitos de instalación do entorno de desenvolvemento. Luces intelixentes
As luces intelixentes son un novo tipo de lámpadas, cuxa forma é a mesma que a da lámpada incandescente xeral. Unha luz intelixente está composta por unha fonte de alimentación regulada por condensadores, un módulo sen fíos (con ESP32-C3 integrado), un controlador LED e unha matriz LED RGB. Cando está conectado á alimentación, o 15 V DC voltagA saída despois da baixada do capacitor, a rectificación do diodo e a regulación proporciona enerxía ao controlador LED e á matriz LED. O controlador LED pode enviar automaticamente niveis altos e baixos a determinados intervalos, cambiando a matriz de LED RGB entre pechada (luces acendidas) e aberta (as luces apagadas), para que poida emitir cian, amarelo, verde, violeta, azul, vermello e luz branca. O módulo sen fíos encárgase de conectarse ao router Wi-Fi, recibir e informar do estado das luces intelixentes e enviar comandos para controlar o LED.
Figura 2.2. Unha luz intelixente simulada
No desenvolvemento inicial stage, pode simular unha luz intelixente usando a placa ESP32-C3DevKitM-1 conectada con LED RGB lamp contas (ver Figura 2.2). Pero deberías
14 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Teña en conta que esta non é a única forma de montar unha luz intelixente. O deseño de hardware do proxecto deste libro só contén un módulo sen fíos (con ESP32-C3 incorporado), pero non un deseño completo de hardware de luz intelixente. Ademais, Espressif tamén produce unha tarxeta de desenvolvemento de audio baseada en ESP32-C3 ESP32C3-Lyra para controlar as luces con audio. A placa ten interfaces para micrófonos e altofalantes e pode controlar tiras LED. Pódese usar para desenvolver emisoras de audio de baixo custo e de alto rendemento e tiras de luz rítmica. A figura 2.3 mostra unha placa ESP32-C3Lyra ligada a unha tira de 40 luces LED.
Figura 2.3. ESP32-C3-Lyra ligado cunha tira de 40 luces LED
Smartphones (Android/iOS) O proxecto Smart Light implica o desenvolvemento dunha aplicación para teléfonos intelixentes para configurar e controlar produtos de luz intelixente.
Enrutadores wifi Os enrutadores wifi converten os sinais de rede con fíos e os sinais de rede móbil en sinais de rede sen fíos, para que ordenadores, teléfonos intelixentes, tabletas e outros dispositivos sen fíos se conecten á rede. Por exampLe, a banda ancha no fogar só precisa estar conectada a un enrutador Wi-Fi para conseguir unha rede sen fíos de dispositivos Wi-Fi. O estándar de protocolo principal admitido polos enrutadores Wi-Fi é IEEE 802.11n, cunha taxa de transmisión media de 300 Mbps, ou 600 Mbps como máximo. Son compatibles con IEEE 802.11b e IEEE 802.11g. O chip ESP32-C3 de Espressif é compatible con IEEE 802.11b/g/n, polo que podes escoller un enrutador Wi-Fi de banda única (2.4 GHz) ou de banda dual (2.4 GHz e 5 GHz).
Un entorno de desenvolvemento de ordenador (Linux/macOS/Windows) introducirase no capítulo 4. Capítulo 2. Introdución e práctica dos proxectos IoT 15
2.2.4 Proceso de desenvolvemento
Figura 2.4. Pasos do desenvolvemento do proxecto Smart Light
Deseño de hardware O deseño de hardware de dispositivos IoT é esencial para un proxecto IoT. Un proxecto completo de luz intelixente está destinado a producir alamp traballando baixo a rede. Diferentes fabricantes producen lamps de diferentes estilos e tipos de controladores, pero os seus módulos sen fíos adoitan ter a mesma función. Para simplificar o proceso de desenvolvemento do proxecto Smart Ligh, este libro só abarca o deseño de hardware e o desenvolvemento de software de módulos sen fíos.
Configuración da plataforma na nube IoT Para usar plataformas na nube IoT, cómpre configurar proxectos no backend, como crear produtos, crear dispositivos, configurar as propiedades dos dispositivos, etc.
Desenvolvemento de software integrado para dispositivos IoT Implementa as funcións esperadas con ESP-IDF, o SDK do dispositivo de Espressif, incluíndo a conexión a plataformas de nube IoT, o desenvolvemento de controladores LED e a actualización do firmware.
Desenvolvemento de aplicacións para teléfonos intelixentes Desenvolve aplicacións para teléfonos intelixentes para sistemas Android e iOS para realizar o rexistro e inicio de sesión de usuarios, o control do dispositivo e outras funcións.
Optimización do dispositivo IoT Unha vez que se complete o desenvolvemento básico das funcións do dispositivo IoT, podes recurrir a tarefas de optimización, como a optimización de enerxía.
Ensaios de produción en masa Realice probas de produción en masa segundo os estándares relacionados, como proba de funcionamento do equipamento, proba de envellecemento, proba de RF, etc.
A pesar dos pasos indicados anteriormente, un proxecto Smart Light non está necesariamente suxeito a tal procedemento, xa que tamén se poden realizar diferentes tarefas ao mesmo tempo. Por example, software integrado e aplicacións para teléfonos intelixentes pódense desenvolver en paralelo. É posible que tamén teñan que repetir algúns pasos, como a optimización de dispositivos IoT e as probas de produción en masa.
16 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
2.3 Resumo
Neste capítulo, primeiro expuxemos os compoñentes básicos e os módulos funcionais dun proxecto de IoT, despois introducimos o caso Smart Light para a práctica, facendo referencia á súa estrutura, funcións, preparación do hardware e proceso de desenvolvemento. Os lectores poden extraer inferencias da práctica e confiar en levar a cabo proxectos de IoT con erros mínimos no futuro.
Capítulo 2. Introdución e práctica dos proxectos IoT 17
18 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Capítulo 3
Introdución
a
ESP
RainMaker
A Internet das Cousas (IoT) ofrece infinitas posibilidades para cambiar a forma de vivir das persoas, pero o desenvolvemento da enxeñaría de IoT está cheo de retos. Con nubes públicas, os fabricantes de terminais poden implementar a funcionalidade do produto a través das seguintes solucións:
Baseado nas plataformas na nube dos provedores de solucións Deste xeito, os fabricantes de terminais só precisan deseñar o hardware do produto, logo conectar o hardware á nube mediante o módulo de comunicación proporcionado e configurar as funcións do produto seguindo as directrices. Este é un enfoque eficiente xa que elimina a necesidade de desenvolvemento e operacións e mantemento (O&M) do lado do servidor e da aplicación. Permite aos fabricantes de terminais centrarse no deseño de hardware sen ter que considerar a implementación na nube. Non obstante, tales solucións (por exemplo, o firmware do dispositivo e a aplicación) xeralmente non son de código aberto, polo que as funcións do produto estarán limitadas pola plataforma na nube do provedor que non se pode personalizar. Mentres tanto, os datos do usuario e do dispositivo tamén pertencen á plataforma na nube.
Baseado en produtos na nube Nesta solución, despois de completar o deseño do hardware, os fabricantes de terminais non só precisan implementar funcións na nube utilizando un ou máis produtos na nube proporcionados pola nube pública, senón que tamén precisan vincular o hardware coa nube. Por example, para conectarse a Amazon Web Servizos (AWS), os fabricantes de terminais deben utilizar produtos de AWS como Amazon API Gateway, AWS IoT Core e AWS Lambda para permitir o acceso ao dispositivo, o control remoto, o almacenamento de datos, a xestión de usuarios e outras funcións básicas. Non só pídelles aos fabricantes de terminais que usen e configuren produtos na nube de forma flexible cunha comprensión profunda e unha experiencia rica, senón que tamén lles esixe que consideren o custo de construción e mantemento dos primeiros e posteriores.tages Isto supón grandes retos para a enerxía e os recursos da empresa.
En comparación coas nubes públicas, as nubes privadas adoitan crearse para proxectos e produtos específicos. Os desenvolvedores de nubes privadas teñen o maior nivel de liberdade no deseño de protocolos e na implementación da lóxica empresarial. Os fabricantes de terminais poden facer produtos e deseñar esquemas a vontade e integrar e potenciar facilmente os datos dos usuarios. Combina a alta seguridade, escalabilidade e fiabilidade da nube pública co advantages da nube privada, Espressif lanzou ESP
19
RainMaker, unha solución de nube privada profundamente integrada baseada na nube de Amazon. Os usuarios poden implementar ESP RainMaker e crear nube privada simplemente cunha conta de AWS.
3.1 Que é ESP RainMaker?
ESP RainMaker é unha plataforma AIoT completa construída con varios produtos AWS maduros. Ofrece varios servizos necesarios para a produción en masa, como o acceso á nube de dispositivos, a actualización do dispositivo, a xestión do backend, o inicio de sesión de terceiros, a integración de voz e a xestión de usuarios. Ao usar o Repositorio de aplicacións sen servidor (SAR) proporcionado por AWS, os fabricantes de terminais poden implementar rapidamente ESP RainMaker nas súas contas de AWS, o que é eficiente en tempo e fácil de operar. Xestionado e mantido por Espressif, o SAR usado por ESP RainMaker axuda aos desenvolvedores a reducir os custos de mantemento na nube e acelerar o desenvolvemento de produtos AIoT, creando así solucións AIoT seguras, estables e personalizables. A figura 3.1 mostra a arquitectura de ESP RainMaker.
Figura 3.1. Arquitectura de ESP RainMaker
O servidor público ESP RainMaker de Espressif é gratuíto para todos os entusiastas, creadores e educadores de ESP para a avaliación da solución. Os desenvolvedores poden iniciar sesión con contas de Apple, Google ou GitHub e crear rapidamente os seus propios prototipos de aplicacións IoT. O servidor público integra Alexa e Google Home e ofrece servizos de control de voz, que son compatibles con Alexa Skill e Google Actions. A súa función de recoñecemento semántico tamén está impulsada por terceiros. Os dispositivos RainMaker IoT só responden a accións específicas. Para obter unha lista exhaustiva de comandos de voz compatibles, consulte as plataformas de terceiros. Ademais, Espressif ofrece unha aplicación pública RainMaker para que os usuarios controlen os produtos a través de teléfonos intelixentes. 20 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
3.2 A implantación de ESP RainMaker
Como se mostra na Figura 3.2, ESP RainMaker consta de catro partes: · Servizo de reclamación, que permite aos dispositivos RainMaker obter certificados de forma dinámica. · RainMaker Cloud (tamén coñecido como cloud backend), que ofrece servizos como filtrado de mensaxes, xestión de usuarios, almacenamento de datos e integracións de terceiros. · RainMaker Agent, que permite que os dispositivos RainMaker se conecten a RainMaker Cloud. · RainMaker Client (RainMaker App ou scripts CLI), para aprovisionamento, creación de usuarios, asociación e control de dispositivos, etc.
Figura 3.2. Estrutura de ESP RainMaker
ESP RainMaker ofrece un conxunto completo de ferramentas para o desenvolvemento de produtos e a produción en masa, incluíndo: RainMaker SDK
RainMaker SDK está baseado en ESP-IDF e proporciona o código fonte do axente do dispositivo e as API C relacionadas para o desenvolvemento de firmware. Os desenvolvedores só precisan escribir a lóxica da aplicación e deixar o resto ao marco de RainMaker. Para obter máis información sobre as API C, visite https://bookc3.espressif.com/rm/c-api-reference. Aplicación RainMaker A versión pública da aplicación RainMaker permite aos desenvolvedores completar o aprovisionamento de dispositivos e controlar e consultar o estado dos dispositivos (por exemplo, produtos de iluminación intelixente). Está dispoñible nas tendas de aplicacións para iOS e Android. Para obter máis detalles, consulte o Capítulo 10. API REST As API REST axudan aos usuarios a crear as súas propias aplicacións semellantes á aplicación RainMaker. Para obter máis información, visite https://swaggerapis.rainmaker.espressif.com/.
Capítulo 3. Introdución a ESP RainMaker 21
APIs de Python Ofrécese unha CLI baseada en Python, que inclúe o SDK RainMaker, para implementar todas as funcións similares ás funcións dos teléfonos intelixentes. Para obter máis información sobre as API de Python, visite https://bookc3.espressif.com/rm/python-api-reference.
CLI de administrador A CLI de administración, cun nivel de acceso superior, ofrécese para a implantación privada de ESP RainMaker para xerar certificados de dispositivos en masa.
3.2.1 Servizo de reclamación
Toda a comunicación entre os dispositivos RainMaker e o backend da nube realízase a través de MQTT+TLS. No contexto de ESP RainMaker, "Reclamación" é o proceso no que os dispositivos obteñen certificados do Servizo de Reclamación para conectarse ao back-end da nube. Teña en conta que o servizo de reclamación só é aplicable ao servizo público de RainMaker, mentres que para a implantación privada, os certificados do dispositivo deben xerarse en masa a través da CLI de administración. ESP RainMaker admite tres tipos de servizo de reclamación: auto reclamación
O propio dispositivo obtén os certificados a través dunha clave secreta preprogramada en eFuse despois de conectarse a Internet. Reclamación por host Os certificados obtéñense do host de desenvolvemento coa conta RainMaker. Reclamación asistida Os certificados obtéñense mediante aplicacións para teléfonos intelixentes durante o aprovisionamento.
3.2.2 Axente RainMaker
Figura 3.3. Estrutura do SDK RainMaker A función principal do axente RainMaker é proporcionar conectividade e axudar á capa de aplicación a procesar os datos da nube de enlace ascendente/descendente. Está construído a través do RainMaker SDK 22 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
e desenvolvido baseándose no marco probado ESP-IDF, utilizando compoñentes ESP-IDF como RTOS, NVS e MQTT. A figura 3.3 mostra a estrutura do SDK RainMaker.
O SDK RainMaker inclúe dúas funcións principais.
Conexión
i. Cooperar co servizo de reclamacións para obter certificados de dispositivos.
ii. Conectarse ao backend na nube mediante o protocolo MQTT seguro para proporcionar conectividade remota e implementar control remoto, informes de mensaxes, xestión de usuarios, xestión de dispositivos, etc. Utiliza o compoñente MQTT en ESP-IDF de forma predeterminada e proporciona unha capa de abstracción para interactuar con outros pilas de protocolos.
iii. Fornece o compoñente de aprovisionamento wifi para a conexión e aprovisionamento Wi-Fi, especialmente o compoñente https ota para actualizacións de OTA e, especialmente, o compoñente ctrl local para a detección e conexión de dispositivos locais. Todos estes obxectivos pódense conseguir mediante unha configuración sinxela.
Tratamento de datos
i. Almacenando os certificados de dispositivos emitidos por Claiming Service e os datos necesarios ao executar RainMaker, de forma predeterminada mediante a interface proporcionada polo compoñente flash nvs, e proporcionando API para desenvolvedores para o seu uso directo.
ii. Usando o mecanismo de devolución de chamada para procesar os datos da nube de ligazóns ascendentes/descendentes e desbloquear automaticamente os datos á capa de aplicación para que os desenvolvedores o procesen facilmente. Por exampO SDK de RainMaker ofrece interfaces ricas para establecer datos TSL (Thing Specification Language), que son necesarios para definir modelos TSL para describir dispositivos IoT e implementar funcións como temporización, conta atrás e control de voz. Para funcións interactivas básicas como o tempo, RainMaker SDK ofrece unha solución sen desenvolvemento que se pode activar simplemente cando sexa necesario. Entón, o axente RainMaker procesará directamente os datos, enviaraos á nube a través do tema MQTT asociado e retroalimentará os cambios de datos no backend da nube mediante un mecanismo de devolución de chamada.
3.2.3 Cloud Backend
O backend da nube está construído sobre AWS Serverless Computing e conséguese a través de AWS Cognito (sistema de xestión de identidades), Amazon API Gateway, AWS Lambda (servizo informático sen servidor), Amazon DynamoDB (base de datos NoSQL), AWS IoT Core (núcleo de acceso IoT que proporciona acceso MQTT). e filtrado de regras), Amazon Simple Email Service (servizo de correo simple SES), Amazon CloudFront (rede de entrega rápida), Amazon Simple Queue Service (cola de mensaxes SQS) e Amazon S3 (servizo de almacenamento de balde). Está destinado a optimizar a escalabilidade e a seguridade. Con ESP RainMaker, os desenvolvedores poden xestionar dispositivos sen ter que escribir código na nube. As mensaxes informadas polos dispositivos transmítense de forma transparente a
Capítulo 3. Introdución a ESP RainMaker 23
clientes de aplicacións ou outros servizos de terceiros. A táboa 3.1 mostra os produtos e funcións na nube de AWS utilizados no backend da nube, con máis produtos e funcións en desenvolvemento.
Táboa 3.1. Produtos e funcións na nube de AWS que usa o backend da nube
Produto AWS Cloud utilizado por RainMaker
Función
AWS Cognito
Xestionar as credenciais dos usuarios e admitir inicios de sesión de terceiros
AWS Lambda
Implementación da lóxica empresarial básica do backend da nube
Amazon Timestream Almacenamento de datos de series temporais
Amazon DynamoDB Almacenamento da información privada dos clientes
AWS IoT Core
Apoio a comunicación MQTT
Amazon SES
Prestación de servizos de envío de correo electrónico
Amazon CloudFront Acelerando a xestión do backend webacceso ao sitio
Amazon SQS
Reenviando mensaxes desde AWS IoT Core
3.2.4 Cliente RainMaker
Os clientes de RainMaker, como App e CLI, comunícanse co backend da nube a través das API REST. Pódese atopar información detallada e instrucións sobre as API REST na documentación de Swagger proporcionada por Espressif. O cliente de aplicacións móbiles de RainMaker está dispoñible para os sistemas iOS e Android. Permite aprovisionar, controlar e compartir dispositivos, así como crear e habilitar tarefas de conta atrás e conectarse a plataformas de terceiros. Pode cargar automaticamente a interface de usuario e as iconas segundo a configuración informada polos dispositivos e mostrar completamente o TSL do dispositivo.
Por example, se unha luz intelixente está construída no SDK proporcionado por RainMaker, por exemploamples, a icona e a IU da luz da lámpada cargaranse automaticamente cando se complete o aprovisionamento. Os usuarios poden cambiar a cor e o brillo da luz a través da interface e conseguir o control de terceiros vinculando Alexa Smart Home Skill ou Google Smart Home Actions ás súas contas ESP RainMaker. A figura 3.4 mostra a icona e a IU, por exemploamplámpadas na aplicación Alexa, Google Home e ESP RainMaker respectivamente.
24 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
(a) Example - Alexa
(b) Example – Google Home
(c) Example – ESP RainMaker
Figura 3.4. Exampficheiros da icona e da interface de usuario da luz da lámpada en Alexa, Google Home e a aplicación ESP RainMaker
3.3 Práctica: puntos clave para desenvolver con ESP RainMaker
Unha vez que se complete a capa de controlador de dispositivo, os desenvolvedores poden comezar a crear modelos TSL e procesar datos de enlace descendente utilizando as API proporcionadas por RainMaker SDK e habilitar os servizos básicos de ESP RainMaker en función da definición e dos requisitos do produto.
Capítulo 3. Introdución a ESP RainMaker 25
A sección 9.4 deste libro explicará a implementación da luz intelixente LED en RainMaker. Durante a depuración, os desenvolvedores poden usar as ferramentas CLI do SDK de RainMaker para comunicarse coa luz intelixente (ou chamar ás API REST de Swagger).
O capítulo 10 elaborará o uso das API REST no desenvolvemento de aplicacións para teléfonos intelixentes. As actualizacións de OTA das luces intelixentes LED trataranse no capítulo 11. Se os desenvolvedores activaron o seguimento remoto de ESP Insights, o backend de xestión de ESP RainMaker mostrará os datos de ESP Insights. Os detalles serán presentados no capítulo 15.
ESP RainMaker admite a implantación privada, que se diferencia do servidor público RainMaker nos seguintes aspectos:
Servizo de reclamación Para xerar certificados en implementacións privadas, é necesario utilizar a CLI de administración de RainMaker en lugar de Claiming. Co servidor público, os desenvolvedores deben recibir dereitos de administrador para implementar a actualización do firmware, pero non é desexable nas implantacións comerciais. Polo tanto, non se pode proporcionar ningún servizo de autenticación separado para reclamacións propias, nin dereitos de administrador para reclamacións impulsadas por host ou asistidas.
Aplicacións de teléfono Nas implementacións privadas, as aplicacións deben configurarse e compilarse por separado para garantir que os sistemas de contas non sexan interoperables.
Accesos de terceiros e integración de voz Os programadores teñen que configurar por separado a través das contas de programadores de Google e Apple para habilitar os inicios de sesión de terceiros, así como a integración de Alexa Skill e Google Voice Assistant.
CONSELLOS Para obter máis información sobre a implantación da nube, visite https://customer.rainmaker.espressif. com. En canto ao firmware, a migración dun servidor público a un servidor privado só require a substitución dos certificados do dispositivo, o que mellora moito a eficiencia da migración e reduce o custo da migración e da depuración secundaria.
3.4 Características de ESP RainMaker
As funcións de ESP RainMaker están dirixidas principalmente a tres aspectos: xestión de usuarios, usuarios finais e administradores. Todas as funcións son compatibles tanto en servidores públicos como privados, a non ser que se indique o contrario.
3.4.1 Xestión de usuarios
As funcións de xestión de usuarios permiten aos usuarios finais rexistrarse, iniciar sesión, cambiar contrasinais, recuperar contrasinais, etc.
26 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Rexistrarse e iniciar sesión Os métodos de rexistro e inicio de sesión admitidos por RainMaker inclúen: · Identificación de correo electrónico + contrasinal · Número de teléfono + contrasinal · Conta de Google · Conta de Apple · Conta de GitHub (só servidor público) · Conta de Amazon (só servidor privado)
NOTA Rexístrese usando Google/Amazon comparte o enderezo de correo electrónico do usuario con RainMaker. Rexístrate usando Apple comparte un enderezo ficticio que Apple asigna ao usuario específicamente para o servizo RainMaker. Crearase automaticamente unha conta RainMaker para os usuarios que inicien sesión cunha conta de Google, Apple ou Amazon por primeira vez.
Cambiar contrasinal Válido só para inicios de sesión baseados na identificación de correo electrónico/número de teléfono. Todas as demais sesións activas pecharanse despois de que se cambie o contrasinal. Segundo o comportamento de AWS Cognito, as sesións pechadas poden permanecer activas ata 1 hora.
Recuperar contrasinal. Válido só para inicios de sesión baseados na identificación de correo electrónico/número de teléfono.
3.4.2 Características do usuario final
As funcións abertas aos usuarios finais inclúen control e seguimento local e remoto, programación, agrupación de dispositivos, uso compartido de dispositivos, notificacións push e integracións de terceiros.
Control e seguimento remotos · Consulta de configuración, valores de parámetros e estado de conexión para un ou todos os dispositivos. · Establecer parámetros para un ou varios dispositivos.
Control e vixilancia local O teléfono móbil e o dispositivo deben estar conectados á mesma rede para o control local.
Programación · Os usuarios predeterminan determinadas accións nun momento específico. · Non se precisa conexión a Internet para o dispositivo mentres se executa a programación. · Unha vez ou repetición (especificando días) para un ou varios dispositivos.
Agrupación de dispositivos Admite agrupación abstracta de varios niveis Os metadatos de grupo pódense usar para crear unha estrutura de sala de casa.
Capítulo 3. Introdución a ESP RainMaker 27
Compartir dispositivos Pódense compartir un ou máis dispositivos con un ou máis usuarios.
Notificacións push Os usuarios finais recibirán notificacións push para eventos como · Novos dispositivos engadidos/eliminados · Dispositivo conectado á nube · Dispositivo desconectado da nube · Solicitudes de uso compartido de dispositivos creadas/aceptadas/rexeitadas · Mensaxes de alerta informadas polos dispositivos
As integracións de terceiros Alexa e Google Voice Assistant son compatibles para controlar os dispositivos RainMaker, incluíndo luces, interruptores, enchufes, ventiladores e sensores de temperatura.
3.4.3 Funcións administrativas
As funcións de administración permiten aos administradores implementar o rexistro de dispositivos, a agrupación de dispositivos e as actualizacións de OTA view estatísticas e datos de ESP Insights.
Rexistro do dispositivo Xera certificados do dispositivo e rexístrate con Admin CLI (só servidor privado).
Agrupación de dispositivos Crea grupos abstractos ou estruturados baseados na información do dispositivo (só servidor privado).
Actualizacións por aire (OTA) Cargue firmware en función da versión e do modelo, a un ou máis dispositivos ou a un grupo. Monitorice, cancele ou arquive traballos OTA.
View estatísticas ViewAs estatísticas capaces inclúen: · Rexistros de dispositivos (certificados rexistrados polo administrador) · Activacións de dispositivos (dispositivo conectado por primeira vez) · Contas de usuario · Asociación usuario-dispositivo
View Datos de ESP Insights ViewOs datos capaces de ESP Insights inclúen: · Erros, avisos e rexistros personalizados · Informes e análise de fallos · Motivos de reinicio · Métricas como o uso da memoria, RSSI, etc. · Métricas e variables personalizadas
28 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
3.5 Resumo
Neste capítulo, introducimos algunhas diferenzas clave entre o despregamento público de RainMaker e o despregamento privado. A solución privada ESP RainMaker lanzada por Espressif é altamente fiable e extensible. Todos os chips da serie ESP32 foron conectados e adaptados a AWS, o que reduce moito o custo. Os desenvolvedores poden centrarse na verificación de prototipos sen ter que aprender sobre os produtos na nube de AWS. Tamén explicamos a implementación e as características de ESP RainMaker, e algúns puntos clave para o desenvolvemento mediante a plataforma.
Escanear para descargar ESP RainMaker para Android Escanear para descargar ESP RainMaker para iOS
Capítulo 3. Introdución a ESP RainMaker 29
30 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Capítulo Configuración 4 Ambiente de desenvolvemento
Este capítulo céntrase en ESP-IDF, o marco oficial de desenvolvemento de software para ESP32-C3. Explicaremos como configurar o ambiente en varios sistemas operativos e presentaremos a estrutura do proxecto e o sistema de construción de ESP-IDF, así como o uso de ferramentas de desenvolvemento relacionadas. Despois presentaremos o proceso de compilación e execución dun example, ao tempo que ofrece unha explicación detallada do rexistro de saída en cada stage.
4.1 ESP-IDF superadoview
ESP-IDF (Espressif IoT Development Framework) é un marco de desenvolvemento de IoT único proporcionado por Espressif Technology. Usa C/C++ como linguaxe de desenvolvemento principal e admite a compilación cruzada en sistemas operativos convencionais como Linux, Mac e Windows. O exampOs programas incluídos neste libro desenvólvense mediante ESP-IDF, que ofrece as seguintes características: · Controladores de nivel de sistema SoC. ESP-IDF inclúe controladores para ESP32, ESP32-S2, ESP32-C3,
e outras fichas. Estes controladores inclúen a biblioteca de periféricos de baixo nivel (LL), a biblioteca de capa de abstracción de hardware (HAL), soporte RTOS e software de controlador de capa superior, etc. · Compoñentes esenciais. ESP-IDF incorpora compoñentes fundamentais necesarios para o desenvolvemento de IoT. Isto inclúe varias pilas de protocolos de rede como HTTP e MQTT, un marco de xestión de enerxía con modulación de frecuencia dinámica e funcións como Cifrado Flash e Arranque seguro, etc. · Ferramentas de desenvolvemento e produción. ESP-IDF ofrece ferramentas de uso común para a construción, flash e depuración durante o desenvolvemento e a produción en masa (ver Figura 4.1), como o sistema de construción baseado en CMake, a cadea de ferramentas de compilación cruzada baseada en GCC e o JTAG ferramenta de depuración baseada en OpenOCD, etc. Paga a pena notar que o código ESP-IDF adhírese principalmente á licenza de código aberto Apache 2.0. Os usuarios poden desenvolver software persoal ou comercial sen restricións mentres cumpren os termos da licenza de código aberto. Ademais, os usuarios reciben licenzas de patentes permanentes de forma gratuíta, sen a obriga de facer código aberto ningunha modificación realizada no código fonte.
31
Figura 4.1.
Construír, flashear e depurar
ferramentas para o desenvolvemento e a produción en masa
4.1.1 Versións ESP-IDF
O código ESP-IDF está aloxado en GitHub como un proxecto de código aberto. Actualmente, hai tres versións principais dispoñibles: v3, v4 e v5. Cada versión principal adoita conter varias subversións, como v4.2, v4.3, etc. Espressif Systems garante un soporte de 30 meses para correccións de erros e parches de seguridade para cada subversión publicada. Polo tanto, tamén se publican regularmente revisións de subversións, como v4.3.1, v4.2.2, etc. A táboa 4.1 mostra o estado de compatibilidade das diferentes versións de ESP-IDF para chips Espressif, indicando se están nunha versión previa.view stage (ofrecendo soporte para preview versións, que poden carecer de determinadas funcións ou documentación) ou son compatibles oficialmente.
Táboa 4.1. Estado de soporte de diferentes versións de ESP-IDF para chips Espressif
Serie ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
compatible con v4.1
Compatible con v4.2
v4.3 compatible compatible compatible
v4.4 compatible compatible compatible compatible
preview
v5.0 compatible compatible compatible compatible compatible preview
32 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
A iteración das versións principais adoita implicar axustes na estrutura do cadro e actualizacións do sistema de compilación. Por example, o cambio principal de v3.* a v4.* foi a migración gradual do sistema de compilación de Make a CMake. Por outra banda, a iteración de versións secundarias normalmente implica a adición de novas funcións ou soporte para novos chips.
É importante distinguir e comprender a relación entre as versións estables e as ramas de GitHub. As versións etiquetadas como v*.* ou v*.*.* representan versións estables que pasaron as probas internas completas de Espressif. Unha vez arranxado, o código, a cadea de ferramentas e os documentos de lanzamento para a mesma versión permanecen sen cambios. Non obstante, as ramas de GitHub (por exemplo, a rama release/v4.3) sofren frecuentes commits de código, moitas veces a diario. Polo tanto, dous fragmentos de código baixo a mesma rama poden diferir, polo que os desenvolvedores deben actualizar o seu código de xeito inmediato.
4.1.2 Fluxo de traballo de ESP-IDF Git
Espressif segue un fluxo de traballo Git específico para ESP-IDF, que se describe como segue:
· Realízanse novos cambios na rama mestra, que serve como rama principal de desenvolvemento. A versión ESP-IDF na rama mestra sempre leva un -dev tag para indicar que está actualmente en desenvolvemento, como v4.3-dev. Os cambios na rama mestra serán primeiro revieweditado e probado no repositorio interno de Espressif, e despois enviado a GitHub despois de completar as probas automatizadas.
· Unha vez que unha nova versión completou o desenvolvemento de funcións na rama mestra e cumpre os criterios para entrar na proba beta, pasa a unha nova rama, como a versión/v4.3. Ademais, esta nova rama é tagged como versión previa ao lanzamento, como v4.3-beta1. Os desenvolvedores poden consultar a plataforma GitHub para acceder á lista completa de ramas e tags para ESP-IDF. É importante ter en conta que a versión beta (versión previa ao lanzamento) aínda pode ter un número importante de problemas coñecidos. A medida que a versión beta se somete a probas continuas, engádense correccións de erros tanto a esta versión como á rama mestra simultaneamente. Mentres tanto, é posible que a rama mestra xa comezou a desenvolver novas funcións para a próxima versión. Cando as probas están case completas, engádese á rama unha etiqueta de candidato á versión (rc), que indica que é un candidato potencial á versión oficial, como v4.3-rc1. Neste stage, a rama segue sendo unha versión previa ao lanzamento.
· Se non se descobren nin se informan de erros importantes, a versión previa ao lanzamento finalmente recibe unha etiqueta de versión principal (por exemplo, v5.0) ou unha etiqueta de versión secundaria (por exemplo, v4.3) e convértese nunha versión oficial do lanzamento, que está documentada. na páxina de notas de publicación. Posteriormente, os erros identificados nesta versión son corrixidos na rama de versión. Despois de completar a proba manual, asígnaselle á rama unha etiqueta de versión de corrección de erros (por exemplo, v4.3.2), que tamén se reflicte na páxina de notas da versión.
Capítulo 4. Configurar o contorno de desenvolvemento 33
4.1.3 Elixir unha versión adecuada
Dado que ESP-IDF comezou oficialmente a admitir ESP32-C3 desde a versión v4.3 e a versión 4.4 aínda non se publicou oficialmente no momento de escribir este libro, a versión utilizada neste libro é a v4.3.2, que é unha versión revisada. da v4.3. Non obstante, é importante ter en conta que, no momento en que leas este libro, é posible que xa estean dispoñibles versións v4.4 ou posteriores. Ao seleccionar unha versión, recomendamos o seguinte:
· Para desenvolvedores de nivel de entrada, é recomendable escoller a versión estable v4.3 ou a súa versión revisada, que se aliña coa versión anterior.ampa versión usada neste libro.
· Para fins de produción en masa, recoméndase utilizar a versión estable máis recente para beneficiarse do soporte técnico máis actualizado.
· Se queres experimentar con novos chips ou explorar novas funcións do produto, utiliza a rama mestra. A última versión contén todas as funcións máis recentes, pero ten en conta que pode haber erros coñecidos ou descoñecidos.
· Se a versión estable que se está a utilizar non inclúe as novas funcións desexadas e desexa minimizar os riscos asociados á rama mestra, considere usar a rama de versión correspondente, como a rama versión/v4.4. O repositorio de GitHub de Espressif creará primeiro a rama release/v4.4 e posteriormente lanzará a versión estable v4.4 baseándose nunha instantánea histórica específica desta rama, despois de completar todo o desenvolvemento de funcións e as probas.
4.1.4 Enribaview de ESP-IDF SDK Directory
O SDK de ESP-IDF consta de dous directorios principais: esp-idf e .espressif. O primeiro contén o código fonte do repositorio ESP-IDF files e scripts de compilación, mentres que este último almacena principalmente cadeas de ferramentas de compilación e outro software. A familiaridade con estes dous directorios axudará aos desenvolvedores a facer un mellor uso dos recursos dispoñibles e a acelerar o proceso de desenvolvemento. A estrutura de directorios de ESP-IDF descríbese a continuación:
(1) Directorio de códigos do repositorio ESP-IDF (/esp/esp-idf), como se mostra na Figura 4.2.
a. Compoñentes do directorio de compoñentes
Este directorio principal integra numerosos compoñentes de software esenciais de ESP-IDF. Non se pode compilar ningún código de proxecto sen depender dos compoñentes deste directorio. Inclúe soporte para controladores para varios chips Espressif. Desde a biblioteca LL e as interfaces da biblioteca HAL para periféricos ata o controlador de nivel superior e o Virtual File Soporte de capa de sistema (VFS), os desenvolvedores poden escoller os compoñentes axeitados en diferentes niveis para as súas necesidades de desenvolvemento. ESP-IDF tamén admite varias pilas de protocolos de rede estándar como TCP/IP, HTTP, MQTT, WebSocket, etc. Os desenvolvedores poden utilizar interfaces coñecidas como Socket para crear aplicacións de rede. Os compoñentes proporcionan comprensión
34 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Figura 4.2. Directorio de códigos do repositorio ESP-IDF
funcionalidade siva e pódese integrar facilmente en aplicacións, o que permite aos desenvolvedores centrarse unicamente na lóxica empresarial. Algúns compoñentes comúns inclúen: · controlador: este compoñente contén programas controladores de periféricos para varios Espressif
serie de chips, como GPIO, I2C, SPI, UART, LEDC (PWM), etc. Os programas de controladores periféricos deste compoñente ofrecen interfaces abstractas independentes do chip. Cada periférico ten unha cabeceira común file (como gpio.h), eliminando a necesidade de tratar con diferentes preguntas de soporte específicos do chip. · esp_wifi: a wifi, como un periférico especial, trátase como un compoñente separado. Inclúe varias API, como a inicialización de varios modos de controlador de Wi-Fi, a configuración de parámetros e o procesamento de eventos. Algunhas funcións deste compoñente ofrécense en forma de bibliotecas de ligazóns estáticas. ESP-IDF tamén ofrece documentación completa do controlador para facilitar o seu uso.
Capítulo 4. Configurar o contorno de desenvolvemento 35
· freertos: este compoñente contén o código FreeRTOS completo. Ademais de ofrecer soporte integral para este sistema operativo, Espressif tamén ampliou o seu soporte aos chips de dobre núcleo. Para chips de dobre núcleo como ESP32 e ESP32-S3, os usuarios poden crear tarefas en núcleos específicos.
b. Directorio de documentos docs
Este directorio contén documentos de desenvolvemento relacionados con ESP-IDF, incluíndo a Guía de inicio, o Manual de referencia da API, a Guía de desenvolvemento, etc.
NOTA Despois de ser compilado por ferramentas automatizadas, o contido deste directorio desprégase en https://docs.espressif.com/projects/esp-idf. Asegúrate de cambiar o destino do documento a ESP32-C3 e selecciona a versión ESP-IDF especificada.
c. Ferramentas de script
Este directorio contén ferramentas front-end de compilación de uso común, como idf.py, e a ferramenta de terminal de monitor idf_monitor.py, etc. O subdirectorio cmake tamén contén o script principal files do sistema de compilación, servindo como base para a implementación das regras de compilación ESP-IDF. Ao engadir as variables de ambiente, os contidos do directorio de ferramentas engádense á variable de ambiente do sistema, o que permite que idf.py se execute directamente baixo a ruta do proxecto.
d. Example directorio do programa examples
Este directorio comprende unha gran colección de ESP-IDF exampprogramas que demostran o uso das API de compoñentes. O exampOs ficheiros están organizados en varios subdirectorios segundo as súas categorías:
· comezar: este subdirectorio inclúe exampcomo "hola mundo" e "parpadear" para axudar aos usuarios a comprender o básico.
· bluetooth: podes atopar Bluetooth relacionados, por exemploampaquí, incluíndo Bluetooth LE Mesh, Bluetooth LE HID, BluFi e moito máis.
· wifi: este subdirectorio céntrase en Wi-Fi, por exemploampprogramas básicos como Wi-Fi SoftAP, Wi-Fi Station, espnow, así como o protocolo de comunicación propietario examples de Espressif. Tamén inclúe varias capas de aplicación, p.exampficheiros baseados en Wi-Fi, como Iperf, Sniffer e Smart Config.
· periféricos: este amplo subdirectorio divídese ademais en numerosos subcartafoles baseados en nomes de periféricos. Contén principalmente controladores periféricos, examples para chips Espressif, con cada example con varios subexamples. Por exemplo, o subdirectorio gpio inclúe dous examples: GPIO e teclado matricial GPIO. É importante ter en conta que non todos os exampOs ficheiros deste directorio son aplicables a ESP32-C3.
36 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Por example, o exampOs ficheiros en usb/host só son aplicables a periféricos con hardware USB Host (como ESP32-S3) e ESP32-C3 non ten este periférico. O sistema de compilación adoita ofrecer indicacións ao establecer o destino. O README file de cada example lista os chips compatibles. · protocolos: este subdirectorio contén exampficheiros para varios protocolos de comunicación, incluíndo MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, que abarcan unha ampla gama de protocolos de comunicación, por exemploampos necesarios para o desenvolvemento de IoT. · aprovisionamento: aquí atoparás aprovisionamento por exemploampficheiros para diferentes métodos, como aprovisionamento Wi-Fi e Bluetooth LE. · sistema: este subdirectorio inclúe a depuración do sistema, por exemploampficheiros (p. ex., rastrexo de pila, rastrexo en tempo de execución, seguimento de tarefas), xestión de enerxía, examples (por exemplo, varios modos de suspensión, co-procesadores), e exampficheiros relacionados con compoñentes comúns do sistema como o terminal de consola, o bucle de eventos e o temporizador do sistema. · almacenamento: dentro deste subdirectorio, descubrirá exampos de todos file sistemas e mecanismos de almacenamento compatibles con ESP-IDF (como lectura e escritura de Flash, tarxeta SD e outros medios de almacenamento), así comoamparquivos de almacenamento non volátil (NVS), FatFS, SPIFFS e outros file operacións do sistema. · seguridade: este subdirectorio contén exampficheiros relacionados co cifrado flash. (2) Directorio da cadea de ferramentas de compilación ESP-IDF (/.espressif), como se mostra na Figura 4.3.
Figura 4.3. Directorio da cadea de ferramentas de compilación ESP-IDF
Capítulo 4. Configurar o contorno de desenvolvemento 37
a. Directorio de distribución de software dist
A cadea de ferramentas ESP-IDF e outro software distribúense en forma de paquetes comprimidos. Durante o proceso de instalación, a ferramenta de instalación descarga primeiro o paquete comprimido no directorio dist e despois extraeo no directorio especificado. Unha vez completada a instalación, o contido deste directorio pódese eliminar con seguridade.
b. Directorio do entorno virtual de Python python env
As diferentes versións de ESP-IDF dependen de versións específicas dos paquetes de Python. A instalación destes paquetes directamente no mesmo servidor pode provocar conflitos entre as versións dos paquetes. Para solucionar isto, ESP-IDF utiliza ambientes virtuais Python para illar diferentes versións de paquetes. Con este mecanismo, os desenvolvedores poden instalar varias versións de ESP-IDF no mesmo host e cambiar facilmente entre elas importando diferentes variables de ambiente.
c. Ferramentas de directorio da cadea de ferramentas de compilación ESP-IDF
Este directorio contén principalmente ferramentas de compilación cruzada necesarias para compilar proxectos ESP-IDF, como as ferramentas CMake, as ferramentas de compilación Ninja e a cadea de ferramentas gcc que xera o programa executable final. Ademais, este directorio alberga a biblioteca estándar da linguaxe C/C++ xunto coa cabeceira correspondente files. Se un programa fai referencia a unha cabeceira do sistema file como #include , a cadea de ferramentas de compilación localizará o ficheiro stdio.h file dentro deste directorio.
4.2 Configurar o entorno de desenvolvemento ESP-IDF
O contorno de desenvolvemento ESP-IDF admite sistemas operativos principais como Windows, Linux e macOS. Esta sección presentará como configurar o ambiente de desenvolvemento en cada sistema. Recoméndase desenvolver ESP32-C3 no sistema Linux, que se presentará en detalle aquí. Moitas instrucións son aplicables en todas as plataformas debido á semellanza das ferramentas de desenvolvemento. Polo tanto, recoméndase ler atentamente o contido desta sección.
NOTA Podes consultar os documentos en liña dispoñibles en https://bookc3.espressif.com/esp32c3, que proporcionan os comandos mencionados nesta sección.
4.2.1 Configurar o entorno de desenvolvemento ESP-IDF en Linux
As ferramentas de desenvolvemento e depuración de GNU necesarias para o ambiente de desenvolvemento ESP-IDF son nativas do sistema Linux. Ademais, o terminal de liña de comandos en Linux é potente e fácil de usar, polo que é unha opción ideal para o desenvolvemento de ESP32-C3. Podes
38 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
seleccione a súa distribución Linux preferida, pero recomendamos usar Ubuntu ou outros sistemas baseados en Debian. Esta sección ofrece orientación sobre como configurar o ambiente de desenvolvemento ESP-IDF en Ubuntu 20.04.
1. Instala os paquetes necesarios
Abre un novo terminal e executa o seguinte comando para instalar todos os paquetes necesarios. O comando saltará automaticamente os paquetes que xa están instalados.
$ 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
CONSELLOS Debe utilizar a conta de administrador e o contrasinal para o comando anterior. Por defecto, non se mostrará ningunha información ao introducir o contrasinal. Simplemente prema a tecla "Intro" para continuar o procedemento.
Git é unha ferramenta de xestión de código clave en ESP-IDF. Despois de configurar correctamente o ambiente de desenvolvemento, pode usar o comando git log para view todos os cambios de código realizados desde a creación de ESP-IDF. Ademais, Git tamén se usa en ESP-IDF para confirmar a información da versión, que é necesaria para instalar a cadea de ferramentas correcta correspondente a versións específicas. Xunto con Git, outras ferramentas importantes do sistema inclúen Python. ESP-IDF incorpora numerosos scripts de automatización escritos en Python. Ferramentas como CMake, Ninja-build e Ccache úsanse amplamente en proxectos C/C++ e serven como ferramentas de compilación e construción de código predeterminadas en ESP-IDF. libusb-1.0-0 e dfu-util son os principais controladores utilizados para a comunicación en serie USB e a gravación de firmware. Unha vez instalados os paquetes de software, pode usar o programa apt comando para obter descricións detalladas de cada paquete. Por example, use apt show git para imprimir a información de descrición da ferramenta Git.
P: Que facer se a versión de Python non é compatible? R: ESP-IDF v4.3 require unha versión de Python que non sexa inferior á v3.6. Para versións antigas de Ubuntu, descargue e instale manualmente unha versión superior de Python e configure Python3 como o entorno de Python predeterminado. Podes atopar instrucións detalladas buscando a palabra clave update-alternatives python.
2. Descarga o código do repositorio ESP-IDF
Abre un terminal e crea un cartafol chamado esp no teu directorio persoal usando o comando mkdir. Podes escoller un nome diferente para o cartafol se o prefires. Use o comando cd para entrar no cartafol.
Capítulo 4. Configurar o contorno de desenvolvemento 39
$ mkdir -p /esp $ cd /esp
Use o comando git clone para descargar o código do repositorio ESP-IDF, como se mostra a continuación:
$ git clone -b v4.3.2 –recursivo https://github.com/espressif/esp-idf.git
No comando anterior, o parámetro -b v4.3.2 especifica a versión para descargar (neste caso, a versión 4.3.2). O parámetro –recursive garante que todos os subrepositorios de ESP-IDF se descarguen de forma recursiva. Pódese atopar información sobre subrepositorios nos .gitmodules file.
3. Instala a cadea de ferramentas de desenvolvemento ESP-IDF
Espressif ofrece un script automatizado install.sh para descargar e instalar a cadea de ferramentas. Este script comproba a versión actual de ESP-IDF e o ambiente do sistema operativo, e despois descarga e instala a versión adecuada dos paquetes de ferramentas de Python e das cadeas de ferramentas de compilación. A ruta de instalación predeterminada para a cadea de ferramentas é /.espressif. Todo o que tes que facer é navegar ata o directorio esp-idf e executar install.sh.
$ cd /esp/esp-idf $ ./install.sh
Se instala a cadea de ferramentas correctamente, o terminal mostrará:
Todo feito!
Neste punto, configurou correctamente o ambiente de desenvolvemento ESP-IDF.
4.2.2 Configurar o entorno de desenvolvemento ESP-IDF en Windows
1. Descarga o instalador de ferramentas ESP-IDF
CONSELLOS Recoméndase configurar o ambiente de desenvolvemento ESP-IDF en Windows 10 ou superior. Podes descargar o instalador desde https://dl.espressif.com/dl/esp-idf/. O instalador tamén é un software de código aberto, e o seu código fonte pode ser vieweditado en https://github.com/espressif/idf-installer.
· Instalador de ferramentas ESP-IDF en liña
Este instalador é relativamente pequeno, duns 4 MB de tamaño, e durante o proceso de instalación descargaranse outros paquetes e códigos. O adiantotagA parte do instalador en liña é que non só se poden descargar paquetes de software e código baixo demanda durante o proceso de instalación, senón que tamén permite a instalación de todas as versións dispoñibles de ESP-IDF e a última rama do código de GitHub (como a rama mestra). . A desvantaxetage é que require unha conexión de rede durante o proceso de instalación, o que pode provocar un fallo de instalación debido a problemas de rede.
40 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
· Instalador de ferramentas ESP-IDF fóra de liña Este instalador é máis grande, aproximadamente 1 GB de tamaño e contén todos os paquetes de software e o código necesarios para a configuración do ambiente. O principal advantagO instalador fóra de liña é que se pode usar en ordenadores sen acceso a Internet e, en xeral, ten unha taxa de éxito de instalación máis alta. Nótese que o instalador fóra de liña só pode instalar versións estables de ESP-IDF identificadas por v*.* ou v*.*.*.
2. Execute o instalador de ferramentas ESP-IDF Despois de descargar unha versión adecuada do instalador (tome as ferramentas ESP-IDF fóra de liña 4.3.2, por exemploample aquí), prema dúas veces no exe file para iniciar a interface de instalación de ESP-IDF. A continuación móstrase como instalar a versión estable de ESP-IDF v4.3.2 usando o instalador sen conexión.
(1) Na interface "Seleccionar idioma de instalación" que se mostra na Figura 4.4, seleccione o idioma que se utilizará na lista despregable.
Figura 4.4. Interface "Seleccionar idioma de instalación" (2) Despois de seleccionar o idioma, faga clic en "Aceptar" para abrir a interface "Contrato de licenza"
(ver Figura 4.5). Despois de ler atentamente o acordo de licenza de instalación, seleccione "Acepto o acordo" e faga clic en "Seguinte".
Figura 4.5. Interface "Contrato de licenza" Capítulo 4. Configurar o contorno de desenvolvemento 41
(3) Review a configuración do sistema na interface "Comprobación do sistema previa á instalación" (consulte a Figura 4.6). Comprobe a versión de Windows e a información do software antivirus instalado. Fai clic en "Seguinte" se todos os elementos de configuración son normais. En caso contrario, pode facer clic en "Rexistro completo" para obter solucións baseadas nos elementos clave.
Figura 4.6. CONSELLOS da interface "Comprobación do sistema antes da instalación".
Podes enviar rexistros a https://github.com/espressif/idf-installer/issues para obter axuda. (4) Seleccione o directorio de instalación de ESP-IDF. Aquí, seleccione D:/.espressif, como se mostra en
Figura 4.7 e prema en "Seguinte". Teña en conta que .espressif aquí é un directorio oculto. Despois de completar a instalación, pode view os contidos específicos deste directorio abrindo o file xestor e mostrando elementos ocultos.
Figura 4.7. Seleccione o directorio de instalación de ESP-IDF 42 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
(5) Comprobe os compoñentes que se deben instalar, como se mostra na Figura 4.8. Recoméndase utilizar a opción predeterminada, é dicir, completar a instalación e, a continuación, facer clic en "Seguinte".
Figura 4.8. Seleccione os compoñentes a instalar (6) Confirme os compoñentes que se van instalar e prema en "Instalar" para iniciar a instalación automática.
proceso de instalación, como se mostra na Figura 4.9. O proceso de instalación pode durar decenas de minutos e a barra de progreso do proceso de instalación móstrase na Figura 4.10. Agarde pacientemente.
Figura 4.9. Preparación para a instalación (7) Despois de completar a instalación, recoméndase marcar "Rexistrar o ESP-IDF
Ferramentas executables como exclusións de Windows Defender...” para evitar que se elimine o software antivirus files. Engadir elementos de exclusión tamén pode omitir as análises frecuentes do antivirus
Capítulo 4. Configurar o contorno de desenvolvemento 43
Figura 4.10. Software de barra de progreso da instalación, mellorando moito a eficiencia de compilación de código do sistema Windows. Fai clic en "Finalizar" para completar a instalación do contorno de desenvolvemento, como se mostra na Figura 4.11. Podes optar por marcar "Executar o contorno ESP-IDF PowerShell" ou "Executar o símbolo do sistema ESP-IDF". Execute a xanela de compilación directamente despois da instalación para garantir que o ambiente de desenvolvemento funciona normalmente.
Figura 4.11. Instalación completada (8) Abra o ambiente de desenvolvemento instalado na lista de programas (ou ESP-IDF 4.3
CMD ou o terminal PowerShell ESP-IDF 4.3, como se mostra na Figura 4.12), e a variable de ambiente ESP-IDF engadirase automaticamente cando se execute no terminal. Despois diso, pode usar o comando idf.py para operacións. O CMD ESP-IDF 4.3 aberto móstrase na Figura 4.13. 44 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Imaxe 4.12. Contorno de desenvolvemento instalado
Imaxe 4.13. ESP-IDF 4.3 CMD
4.2.3 Configurar o entorno de desenvolvemento ESP-IDF en Mac
O proceso de instalación do contorno de desenvolvemento ESP-IDF nun sistema Mac é o mesmo que nun sistema Linux. Os comandos para descargar o código do repositorio e instalar a cadea de ferramentas son exactamente os mesmos. Só os comandos para instalar paquetes de dependencia son lixeiramente diferentes. 1. Instalar paquetes de dependencia Abre un terminal e instala pip, a ferramenta de xestión de paquetes de Python, executando o seguinte comando:
% sudo easy install pip
Instala Homebrew, unha ferramenta de xestión de paquetes para macOS, executando o seguinte comando:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Instale os paquetes de dependencia necesarios executando o seguinte comando:
% brew python3 instalar cmake ninja ccache dfu-util
2. Descarga o código do repositorio ESP-IDF Siga as instrucións proporcionadas na sección 4.2.1 para descargar o código do repositorio ESP-IDF. Os pasos son os mesmos que para descargar nun sistema Linux.
Capítulo 4. Configurar o contorno de desenvolvemento 45
3. Instala a cadea de ferramentas de desenvolvemento ESP-IDF
Siga as instrucións proporcionadas na sección 4.2.1 para instalar a cadea de ferramentas de desenvolvemento ESP-IDF. Os pasos son os mesmos que para a instalación nun sistema Linux.
4.2.4 Instalación de VS Code
Por defecto, o SDK de ESP-IDF non inclúe unha ferramenta de edición de código (aínda que o último instalador de ESP-IDF para Windows ofrece a opción de instalar ESP-IDF Eclipse). Podes usar calquera ferramenta de edición de texto que desexes para editar o código e despois compilalo mediante comandos do terminal.
Unha ferramenta de edición de código popular é VS Code (Visual Studio Code), que é un editor de código gratuíto e rico en funcións cunha interface amigable. Ofrece varias plugins que proporcionan funcionalidades como navegación por código, resaltado de sintaxe, control de versións de Git e integración de terminal. Ademais, Espressif desenvolveu un complemento dedicado chamado Espressif IDF para VS Code, que simplifica a configuración e a depuración do proxecto.
Podes usar o comando code no terminal para abrir rapidamente o cartafol actual en VS Code. Alternativamente, pode usar o atallo Ctrl+ para abrir a consola de terminal predeterminada do sistema dentro de VS Code.
CONSELLOS Recoméndase utilizar VS Code para o desenvolvemento do código ESP32-C3. Descarga e instala a última versión de VS Code en https://code.visualstudio.com/.
4.2.5 Introdución aos contornos de desenvolvemento de terceiros
Ademais do entorno de desenvolvemento oficial ESP-IDF, que utiliza principalmente a linguaxe C, ESP32-C3 tamén admite outras linguaxes de programación principais e unha ampla gama de contornos de desenvolvemento de terceiros. Algunhas opcións notables inclúen:
Arduino: unha plataforma de código aberto para hardware e software, que admite varios microcontroladores, incluíndo ESP32-C3.
Usa a linguaxe C++ e ofrece unha API simplificada e estandarizada, coñecida habitualmente como linguaxe Arduino. Arduino úsase amplamente no desenvolvemento de prototipos e contextos educativos. Proporciona un paquete de software extensible e un IDE que permite compilar e flashear facilmente.
MicroPython: un intérprete de linguaxe Python 3 deseñado para funcionar en plataformas de microcontroladores incorporados.
Cunha linguaxe de script sinxela, pode acceder directamente aos recursos periféricos de ESP32-C3 (como UART, SPI e I2C) e funcións de comunicación (como Wi-Fi e Bluetooth LE).
46 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
Isto simplifica a interacción do hardware. MicroPython, combinado coa extensa biblioteca de operacións matemáticas de Python, permite a implementación de algoritmos complexos en ESP32-C3, facilitando o desenvolvemento de aplicacións relacionadas coa IA. Como linguaxe de guión, non hai necesidade de compilación repetida; pódense facer modificacións e executar scripts directamente.
NodeMCU: un intérprete de linguaxe LUA desenvolvido para chips da serie ESP.
Soporta case todas as funcións periféricas dos chips ESP e é máis lixeiro que MicroPython. Semellante a MicroPython, NodeMCU usa unha linguaxe de script, eliminando a necesidade de compilar repetidamente.
Ademais, ESP32-C3 tamén admite os sistemas operativos NuttX e Zephyr. NuttX é un sistema operativo en tempo real que ofrece interfaces compatibles con POSIX, mellorando a portabilidade das aplicacións. Zephyr é un pequeno sistema operativo en tempo real deseñado especificamente para aplicacións IoT. Inclúe numerosas bibliotecas de software necesarias no desenvolvemento de IoT, evolucionando gradualmente nun ecosistema de software completo.
Este libro non ofrece instrucións de instalación detalladas para os contornos de desenvolvemento mencionados anteriormente. Pode instalar un ambiente de desenvolvemento segundo os seus requisitos seguindo a documentación e as instrucións respectivas.
4.3 Sistema de compilación ESP-IDF
4.3.1 Conceptos básicos do sistema de compilación
Un proxecto ESP-IDF é unha colección dun programa principal cunha función de entrada e múltiples compoñentes funcionais independentes. Por example, un proxecto que controla os interruptores LED consta principalmente dun compoñente principal do programa de entrada e un compoñente de controlador que controla GPIO. Se queres realizar o control remoto LED, tamén debes engadir Wi-Fi, pila de protocolos TCP/IP, etc.
O sistema de compilación pode compilar, vincular e xerar executable files (.bin) para o código a través dun conxunto de regras de construción. O sistema de compilación de ESP-IDF v4.0 e versións superiores baséase en CMake por defecto, e o script de compilación CMakeLists.txt pódese usar para controlar o comportamento de compilación do código. Ademais de admitir a sintaxe básica de CMake, o sistema de compilación ESP-IDF tamén define un conxunto de regras de compilación predeterminadas e funcións de CMake, e pode escribir o script de compilación con instrucións sinxelas.
4.3.2 Proxecto File Estrutura
Un proxecto é un cartafol que contén un programa de entrada principal, compoñentes definidos polo usuario e files necesario para construír aplicacións executables, como scripts de compilación, configuración
Capítulo 4. Configurar o contorno de desenvolvemento 47
files, táboas de particións, etc. Os proxectos pódense copiar e transmitir, e o mesmo executable file pódese compilar e xerar en máquinas coa mesma versión do contorno de desenvolvemento ESP-IDF. Un proxecto típico de ESP-IDF file A estrutura móstrase na figura 4.14.
Imaxe 4.14. Proxecto ESP-IDF típico file estrutura Dado que ESP-IDF admite múltiples chips IoT de Espressif, incluíndo ESP32, serie ESP32-S, serie ESP32-C, serie ESP32-H, etc., hai que determinar un obxectivo antes de compilar o código. O destino é tanto o dispositivo de hardware que executa o programa de aplicación como o destino de compilación do sistema de compilación. Dependendo das súas necesidades, pode especificar un ou máis obxectivos para o seu proxecto. Por example, a través do comando idf.py set-target esp32c3, pode establecer o destino de compilación en ESP32-C3, durante o cal se cargarán os parámetros predeterminados e a ruta da cadea da ferramenta de compilación para ESP32C3. Despois da compilación, pódese xerar un programa executable para ESP32C3. Tamén pode executar o comando set-target de novo para establecer un destino diferente e o sistema de compilación limpará e reconfigurará automaticamente. Compoñentes
Os compoñentes de ESP-IDF son unidades de código modulares e independentes xestionadas dentro do sistema de compilación. Organízanse como cartafoles, co nome do cartafol que representa o nome do compoñente por defecto. Cada compoñente ten o seu propio script de compilación que 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
especifica os seus parámetros de compilación e dependencias. Durante o proceso de compilación, os compoñentes compílanse en bibliotecas estáticas separadas (.a files) e eventualmente combinado con outros compoñentes para formar o programa de aplicación.
ESP-IDF ofrece funcións esenciais, como o sistema operativo, os controladores de periféricos e a pila de protocolos de rede, en forma de compoñentes. Estes compoñentes almacénanse no directorio de compoñentes situado dentro do directorio raíz de ESP-IDF. Os desenvolvedores non precisan copiar estes compoñentes no directorio de compoñentes de myProject. Pola contra, só precisan especificar as relacións de dependencia destes compoñentes no CMakeLists.txt do proxecto. file utilizando as directivas REQUIRES ou PRIV_REQUIRES. O sistema de compilación localizará e compilará automaticamente os compoñentes necesarios.
Polo tanto, o directorio de compoñentes de myProject non é necesario. Só se usa para incluír algúns compoñentes personalizados do proxecto, que poden ser bibliotecas de terceiros ou código definido polo usuario. Ademais, os compoñentes pódense obter desde calquera directorio que non sexa ESP-IDF ou o proxecto actual, como un proxecto de código aberto gardado noutro directorio. Neste caso, só precisa engadir a ruta do compoñente configurando a variable EXTRA_COMPONENT_DIRS no CMakeLists.txt no directorio raíz. Este directorio anulará calquera compoñente ESP-IDF co mesmo nome, garantindo que se utilice o compoñente correcto.
Programa de entrada principal O directorio principal dentro do proxecto segue o mesmo file estrutura como outros compoñentes (por exemplo, compoñente1). Non obstante, ten unha importancia especial xa que é un compoñente obrigatorio que debe existir en todo proxecto. O directorio principal contén o código fonte do proxecto e o punto de entrada do programa de usuario, normalmente chamado app_main. Por defecto, a execución do programa de usuario comeza a partir deste punto de entrada. O compoñente principal tamén se diferencia en que depende automaticamente de todos os compoñentes da ruta de busca. Polo tanto, non hai necesidade de indicar de forma explícita as dependencias usando as directivas REQUIRES ou PRIV_REQUIRES no CMakeLists.txt file.
Configuración file O directorio raíz do proxecto contén unha configuración file chamado sdkconfig, que contén os parámetros de configuración de todos os compoñentes do proxecto. O sdkconfig file é xerado automaticamente polo sistema de compilación e pódese modificar e rexenerar co comando idf.py menuconfig. As opcións de menuconfig orixínanse principalmente do Kconfig.projbuild do proxecto e do Kconfig dos compoñentes. Os desenvolvedores de compoñentes xeralmente engaden elementos de configuración en Kconfig para facer o compoñente flexible e configurable.
Directorio de compilación Por defecto, o directorio de compilación dentro do proxecto almacena intermediarios files e os fi-
Capítulo 4. Configurar o contorno de desenvolvemento 49
programas executables finais xerados polo comando de compilación idf.py. En xeral, non é necesario acceder directamente ao contido do directorio de compilación. ESP-IDF ofrece comandos predefinidos para interactuar co directorio, como usar o comando flash idf.py para localizar automaticamente o binario compilado file e flashao no enderezo flash especificado ou usando o comando idf.py fullclean para limpar todo o directorio de compilación.
Táboa de particións (partitions.csv) Cada proxecto require unha táboa de particións para dividir o espazo de flash e especificar o tamaño e o enderezo de inicio do programa executable e do espazo de datos do usuario. O comando idf.py flash ou o programa de actualización OTA fará pasar o firmware ao enderezo correspondente segundo esta táboa. ESP-IDF ofrece varias táboas de particións predeterminadas en components/partition_table, como partitions_singleapp.csv e partitions_two_ ota.csv, que se poden seleccionar en menuconfig.
Se a táboa de particións predeterminada do sistema non pode cumprir os requisitos do proxecto, pódese engadir un partitions.csv personalizado ao directorio do proxecto e seleccionarse en menuconfig.
4.3.3 Regras de compilación predeterminadas do sistema de compilación
Regras para substituír compoñentes co mesmo nome Durante o proceso de busca de compoñentes, o sistema de compilación segue unha orde específica. Primeiro busca compoñentes internos de ESP-IDF, despois busca compoñentes do proxecto do usuario e, finalmente, busca compoñentes en EXTRA_COMPONENT_DIRS. Nos casos en que varios directorios conteñan compoñentes co mesmo nome, o compoñente que se atopa no último directorio anulará os anteriores co mesmo nome. Esta regra permite a personalización dos compoñentes ESP-IDF dentro do proxecto do usuario, mantendo intacto o código ESP-IDF orixinal.
Regras para incluír compoñentes comúns por defecto Como se mencionou na sección 4.3.2, os compoñentes precisan especificar explícitamente as súas dependencias doutros compoñentes no CMakeLists.txt. Non obstante, os compoñentes comúns como os freertos inclúense automaticamente no sistema de compilación de forma predeterminada, aínda que as súas relacións de dependencia non estean definidas explícitamente no script de compilación. Os compoñentes comúns de ESP-IDF inclúen freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv e cxx. O uso destes compoñentes comúns evita o traballo repetitivo ao escribir CMakeLists.txt e faino máis conciso.
Regras para anular elementos de configuración Os desenvolvedores poden engadir parámetros de configuración predeterminados engadindo unha configuración predeterminada file chamado sdkconfig.defaults ao proxecto. Por example, engadindo CONFIG_LOG_
50 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
DEFAULT_LEVEL_NONE = pode configurar a interface UART para que non imprima datos de rexistro de forma predeterminada. Ademais, se hai que establecer parámetros específicos para un destino en particular, unha configuración file Pódese engadir o nome sdkconfig.defaults.TARGET_NAME, onde TARGET_NAME pode ser esp32s2, esp32c3, etc. Estas configuracións files impórtanse ao sdkconfig durante a compilación, coa configuración xeral predeterminada file sdkconfig.defaults importándose primeiro, seguido da configuración específica do destino file, como sdkconfig.defaults.esp32c3. Nos casos en que existan elementos de configuración co mesmo nome, esta última configuración file anulará o anterior.
4.3.4 Introdución ao Script de compilación
Ao desenvolver un proxecto usando ESP-IDF, os desenvolvedores non só precisan escribir código fonte senón que tamén deben escribir CMakeLists.txt para o proxecto e os compoñentes. CMakeLists.txt é un texto file, tamén coñecido como script de compilación, que define unha serie de obxectos de compilación, elementos de configuración de compilación e comandos para guiar o proceso de compilación do código fonte. O sistema de compilación de ESP-IDF v4.3.2 baséase en CMake. Ademais de admitir funcións e comandos nativos de CMake, tamén define unha serie de funcións personalizadas, o que facilita moito a escritura de scripts de compilación.
Os scripts de compilación en ESP-IDF inclúen principalmente o script de compilación do proxecto e os scripts de compilación de compoñentes. O CMakeLists.txt no directorio raíz do proxecto chámase script de compilación do proxecto, que guía o proceso de compilación de todo o proxecto. Un script de compilación de proxecto básico normalmente inclúe as seguintes tres liñas:
1. cmake_minimum_required(VERSIÓN 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. proxecto(myProject)
Entre eles, debe colocarse na primeira liña o cmake_minimum_required (VERSIÓN 3.5), que se utiliza para indicar o número mínimo de versión de CMake que require o proxecto. As versións máis novas de CMake son xeralmente compatibles con versións anteriores, polo que axusta o número de versión en consecuencia cando se usan comandos CMake máis novos para garantir a compatibilidade.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) importa elementos de configuración predefinidos e comandos do sistema de compilación ESP-IDF, incluíndo as regras de compilación predeterminadas do sistema de compilación descrito na Sección 4.3.3. project(myProject) crea o propio proxecto e especifica o seu nome. Este nome empregarase como o binario de saída final file nome, é dicir, myProject.elf e myProject.bin.
Un proxecto pode ter varios compoñentes, incluído o principal. O directorio de nivel superior de cada compoñente contén un CMakeLists.txt file, que se denomina guión de compilación de compoñentes. Os scripts de compilación de compoñentes úsanse principalmente para especificar dependencias de compoñentes, parámetros de configuración e código fonte files e cabeceira incluída files para
Capítulo 4. Configurar o contorno de desenvolvemento 51
recompilación. Coa función personalizada de ESP-IDF idf_component_register, o código mínimo necesario para un script de compilación de compoñentes é o seguinte:
1. idf_component_register(SRCS “src1.c”
2.
INCLUDE_DIRS "incluír"
3.
REQUIRE compoñente 1)
O parámetro SRCS proporciona unha lista de fontes files no compoñente, separados por espazos se hai varios files. O parámetro INCLUDE_DIRS proporciona unha lista de cabeceiras públicas file directorios para o compoñente, que se engadirán á ruta de busca de inclusión doutros compoñentes que dependen do compoñente actual. O parámetro REQUIRES identifica as dependencias do compoñente público para o compoñente actual. É necesario que os compoñentes indiquen explícitamente de que compoñentes dependen, como o compoñente2 dependendo do compoñente1. Non obstante, para o compoñente principal, que depende de todos os compoñentes por defecto, pódese omitir o parámetro REQUIRES.
Ademais, os comandos nativos de CMake tamén se poden usar no script de compilación. Por example, use o comando set para establecer variables, como set(VARIABLE “VALUE”).
4.3.5 Introdución aos comandos comúns
ESP-IDF usa CMake (ferramenta de configuración de proxectos), Ninja (ferramenta de construción de proxectos) e esptool (ferramenta flash) no proceso de compilación de código. Cada ferramenta xoga un papel diferente no proceso de compilación, construción e flash, e tamén admite diferentes comandos operativos. Para facilitar o funcionamento do usuario, ESP-IDF engade un idf.py front-end unificado que permite chamar rapidamente aos comandos anteriores.
Antes de usar idf.py, asegúrese de que:
· A variable de ambiente IDF_PATH de ESP-IDF engadiuse ao terminal actual. · O directorio de execución de comandos é o directorio raíz do proxecto, que inclúe o
script de compilación do proxecto CMakeLists.txt.
Os comandos comúns de idf.py son os seguintes:
· idf.py –help: mostra unha lista de comandos e as súas instrucións de uso. · idf.py set-target : configurar a compilación taidf.py fullcleanrget, tal
como substitución con esp32c3. · idf.py menuconfig: inicio de menuconfig, unha configuración gráfica do terminal
ferramenta, que pode seleccionar ou modificar as opcións de configuración, e os resultados da configuración gárdanse no sdkconfig file. · compilación idf.py: iniciando a compilación de código. O intermedio files e o programa executable final xerado pola compilación gardarase no directorio de compilación do proxecto por defecto. O proceso de compilación é incremental, o que significa que se só unha fonte file está modificado, só o modificado file compilarase a próxima vez.
52 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
· idf.py clean: limpeza do intermedio files xerados pola compilación do proxecto. Todo o proxecto verase obrigado a compilar na seguinte compilación. Teña en conta que a configuración de CMake e as modificacións de configuración feitas por menuconfig non se eliminarán durante a limpeza.
· idf.py fullclean: eliminando todo o directorio de compilación, incluíndo toda a saída de configuración de CMake files. Ao construír de novo o proxecto, CMake configurará o proxecto desde cero. Teña en conta que este comando eliminará todos de forma recursiva files no directorio de compilación, así que utilízao con precaución e na configuración do proxecto file non se eliminará.
· idf.py flash: parpadea o binario do programa executable file xerado pola compilación no destino ESP32-C3. As opcións -p e -b utilízanse para definir o nome do dispositivo do porto serie e a velocidade en baudios para parpadear, respectivamente. Se non se especifican estas dúas opcións, o porto serie detectarase automaticamente e empregarase a velocidade de transmisión predeterminada.
· monitor idf.py: mostra a saída do porto serie do ESP32-C3 de destino. A opción -p pódese usar para especificar o nome do dispositivo do porto serie do host. Durante a impresión do porto serie, prema a combinación de teclas Ctrl+] para saír do monitor.
Os comandos anteriores tamén se poden combinar segundo sexa necesario. Por example, o comando idf.py build flash monitor realizará a compilación de código, flasheará e abrirá o monitor do porto serie en secuencia.
Podes visitar https://bookc3.espressif.com/build-system para saber máis sobre o sistema de compilación ESP-IDF.
4.4 Práctica: recompilación Exampo Programa "Blink"
4.4.1 Example Análise
Esta sección levará o programa Blink como example para analizar o file estrutura e regras de codificación dun proxecto real en detalle. O programa Blink implementa o efecto de parpadeo LED, e o proxecto está situado no directorio examples/get-started/blink, que contén unha fonte file, configuración files, e varios scripts de compilación.
O proxecto de luz intelixente que se presenta neste libro baséase neste exampo programa. Engadiranse funcións aos poucos en capítulos posteriores para finalmente completalo.
Código fonte Para demostrar todo o proceso de desenvolvemento, o programa Blink foi copiado en esp32c3-iot-projects/device firmware/1 blink.
A estrutura de directorios do proxecto blink files móstrase na figura 4.15.
O proxecto blink contén só un directorio principal, que é un compoñente especial que
Capítulo 4. Configurar o contorno de desenvolvemento 53
Figura 4.15. File estrutura de directorios do proxecto blink
debe incluírse como se describe no apartado 4.3.2. O directorio principal utilízase principalmente para almacenar a implementación da función app_main(), que é o punto de entrada ao programa de usuario. O proxecto blink non inclúe o directorio de compoñentes, porque este ex.ample só precisa utilizar os compoñentes que veñen con ESP-IDF e non precisa de compoñentes adicionais. O CMakeLists.txt incluído no proxecto blink úsase para guiar o proceso de compilación, mentres que Kconfig.projbuild úsase para engadir elementos de configuración para este ex.ample programa en menuconfig. Outros innecesarios files non afectará á compilación do código, polo que non se comentarán aquí. Unha introdución detallada ao proxecto Blink files é o seguinte.
1. /*blink.c inclúe a seguinte cabeceira files*/
2. #incluír
//Encabezado da biblioteca C estándar file
3. #include “freertos/freeRTOS.h” //Encabezado principal de FreeRTOS file
4. #include “freeertos/task.h”
// Cabeceira da tarefa de FreeRTOS file
5. #include “sdkconfig.h”
// Cabeceira da configuración file xerado por kconfig
6. #include "driver/gpio.h"
// Cabeceira do controlador GPIO file
A fonte file blink.c contén unha serie de cabeceiras files correspondente á declaración da función
cións. ESP-IDF xeralmente segue a orde de incluír a cabeceira da biblioteca estándar files, libreR-
Cabeceira do TOS files, cabeceira do condutor files, outro encabezado de compoñente files e cabeceira do proxecto files.
A orde na que cabeceira files están incluídos poden afectar o resultado final da compilación, así que tente
seguir as regras predeterminadas. Nótese que sdkconfig.h xérase automaticamente
por kconfig e só se pode configurar mediante o comando idf.py menuconfig.
Modificación directa desta cabeceira file sobrescribirase.
1. /*Podes seleccionar o GPIO correspondente ao LED en idf.py menuconfig, e o resultado da modificación de menuconfig é que o valor de CONFIG_BLINK
_GPIO cambiarase. Tamén pode modificar directamente a definición da macro
aquí e cambia CONFIG_BLINK_GPIO a un valor fixo.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Configurar IO como a función predeterminada de GPIO, activar o modo pull-up e
6.
desactivar os modos de entrada e saída*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Aventura sen fíos: unha guía completa para IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Establecer GPIO no modo de saída*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); mentres (1) {
/*Imprimir rexistro*/ printf(“Apagando o LEDn”); /*Apaga o LED (nivel de saída baixo)*/ gpio_set_level(BLINK_GPIO, 0); /*Atraso (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("Acender o LEDn"); /*Acender o LED (saída de alto nivel)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000/portTICK_PERIOD_MS); }
A función app_main() no Blink, por exemploampo programa le serve como punto de entrada para os programas de usuario. É unha función sinxela sen parámetros e sen valor de retorno. Esta función chámase despois de que o sistema finalice a inicialización, que inclúe tarefas como a inicialización do porto serie do rexistro, a configuración de núcleo único/dobre e a configuración do watchdog.
A función app_main() execútase no contexto dunha tarefa chamada main. O tamaño da pila e a prioridade desta tarefa pódense axustar en menuconfig Componentconfig Common ESP.
Para tarefas sinxelas, como facer parpadear un LED, todo o código necesario pódese implementar directamente na función app_main(). Normalmente, isto implica inicializar o GPIO correspondente ao LED e usar un bucle while(1) para activar e apagar o LED. Alternativamente, pode usar a API FreeRTOS para crear unha nova tarefa que controle o parpadeo do LED. Unha vez creada a nova tarefa, pode saír da función app_main().
O contido de main/CMakeLists.txt file, que guía o proceso de compilación do compoñente principal, é o seguinte:
1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )
Entre eles, main/CMakeLists.txt só chama a unha función do sistema de compilación, que é idf_component_register. Similar ao CMakeLists.txt para a maioría dos outros compoñentes, blink.c engádese a SRCS e a fonte files engadidos a SRCS compilaranse. Ao mesmo tempo, ".", que representa a ruta onde se atopa CMakeLists.txt, debería engadirse a INCLUDE_DIRS como directorios de busca para a cabeceira files. O contido de CMakeLists.txt é o seguinte:
1. #Especifique v3.5 como a versión máis antiga de CMake compatible co proxecto actual 2. #As versións inferiores á v3.5 deben actualizarse antes de que continúe a compilación 3. cmake_minimum_required(VERSIÓN 3.5) 4. #Incluír a configuración predeterminada de CMake do ESP -Sistema de compilación IDF
Capítulo 4. Configurar o contorno de desenvolvemento 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Crear un proxecto chamado “blink” 7. project(myProject)
Entre eles, o CMakeLists.txt no directorio raíz inclúe principalmente $ENV{IDF_ PATH}/tools/cmake/project.cmake, que é a configuración principal de CMake file proporcionado por ESP-IDF. Adóitase para con
Documentos/Recursos
![]() |
Espressif Systems ESP32-C3 Wireless Adventure [pdfGuía do usuario ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |