Bezdrátové dobrodružství ESP32-C3
Bezdrátové dobrodružství ESP32-C3
Komplexní průvodce IoT
Espressif Systems 12. června 2023
Specifikace
- Produkt: ESP32-C3 Wireless Adventure
- Výrobce: Espressif Systems
- Datum: 12. června 2023
Návod k použití produktu
Příprava
Před použitím ESP32-C3 Wireless Adventure se ujistěte, že ano
obeznámeni s koncepty a architekturou IoT. To pomůže
chápete, jak zařízení zapadá do většího ekosystému internetu věcí
a jeho potenciální aplikace v chytrých domácnostech.
Úvod a praxe IoT projektů
V této části se dozvíte o typických projektech IoT,
včetně základních modulů pro běžná zařízení IoT, základní moduly
klientských aplikací a běžných cloudových platforem IoT. Tohle bude
poskytnout vám základ pro pochopení a vytvoření vašeho
vlastní IoT projekty.
Cvičení: Projekt Smart Light
V tomto cvičném projektu se naučíte, jak vytvořit smart
světlo pomocí ESP32-C3 Wireless Adventure. Struktura projektu,
funkce, příprava hardwaru a proces vývoje
podrobně vysvětleno.
Struktura projektu
Projekt se skládá z několika částí, vč
ESP32-C3 Wireless Adventure, LED diody, senzory a cloud
backend.
Funkce projektu
Projekt chytrého světla umožňuje ovládat jas a
barvu LED na dálku přes mobilní aplikaci popř web
rozhraní.
Příprava hardwaru
Chcete-li se připravit na projekt, budete muset shromáždit
potřebné hardwarové komponenty, jako je ESP32-C3 Wireless
Dobrodružná deska, LED diody, odpory a napájecí zdroj.
Vývojový proces
Proces vývoje zahrnuje nastavení vývoje
prostředí, psaní kódu pro ovládání LED, připojení k
cloud backend a testování funkčnosti smart
světlo.
Úvod do ESP RainMaker
ESP RainMaker je výkonný rámec pro vývoj IoT
zařízení. V této části se dozvíte, co je ESP RainMaker a
jak to lze implementovat do vašich projektů.
Co je ESP RainMaker?
ESP RainMaker je cloudová platforma, která poskytuje sadu
nástroje a služby pro budování a správu zařízení IoT.
Implementace ESP RainMaker
Tato část vysvětluje různé součásti, které jsou součástí
implementace ESP RainMaker, včetně reklamační služby,
Agent RainMaker, cloudový backend a klient RainMaker.
Cvičení: Klíčové body pro vývoj s ESP RainMaker
V této praktické části se dozvíte o klíčových bodech
zvážit při vývoji s ESP RainMaker. To zahrnuje zařízení
nárokování, synchronizace dat a správa uživatelů.
Vlastnosti ESP RainMaker
ESP RainMaker nabízí různé funkce pro správu uživatelů, konec
uživatelům a správcům. Tyto funkce umožňují snadné zařízení
nastavení, dálkové ovládání a monitorování.
Nastavení vývojového prostředí
Tato sekce poskytuje přesview ESP-IDF (Espressif IoT
Development Framework), což je oficiální rozvojový rámec
pro zařízení založená na ESP32. Vysvětluje různé verze
ESP-IDF a jak nastavit vývojové prostředí.
Vývoj hardwaru a ovladačů
Hardware Design produktů Smart Light založených na ESP32-C3
Tato část se zaměřuje na hardwarový návrh chytrého světla
produkty založené na ESP32-C3 Wireless Adventure. Pokrývá
vlastnosti a složení produktů smart light, stejně jako
hardwarový návrh základního systému ESP32-C3.
Vlastnosti a složení produktů Smart Light
Tato podčást vysvětluje funkce a komponenty, které tvoří
up smart light produkty. Pojednává o různých funkcích
a úvahy o designu pro vytváření chytrých světel.
Hardwarový návrh základního systému ESP32-C3
Hardwarový návrh základního systému ESP32-C3 zahrnuje napájení
napájení, zapínací sekvence, reset systému, SPI flash, zdroj hodin,
a úvahy o RF a anténě. Tato pododdíl poskytuje
podrobné informace o těchto aspektech.
FAQ
Otázka: Co je ESP RainMaker?
Odpověď: ESP RainMaker je cloudová platforma, která poskytuje nástroje
a služby pro budování a správu zařízení IoT. To zjednodušuje
vývojový proces a umožňuje snadné vzdálené nastavení zařízení
ovládání a monitorování.
Otázka: Jak mohu nastavit vývojové prostředí pro
ESP32-C3?
A: Chcete-li nastavit vývojové prostředí pro ESP32-C3, potřebujete
k instalaci ESP-IDF (Espressif IoT Development Framework) a
nakonfigurujte jej podle dodaných pokynů. ESP-IDF je
oficiální vývojový rámec pro zařízení založená na ESP32.
Otázka: Jaké jsou vlastnosti ESP RainMaker?
A: ESP RainMaker nabízí různé funkce, včetně uživatelských
správa, funkce pro koncové uživatele a funkce pro správu. Správa uživatelů
umožňuje snadnou reklamaci zařízení a synchronizaci dat. Koncový uživatel
funkce umožňují dálkové ovládání zařízení prostřednictvím mobilní aplikace popř
web rozhraní. Funkce správce poskytují nástroje pro monitorování zařízení
a řízení.
Bezdrátové dobrodružství ESP32-C3
Komplexní průvodce IoT
Espressif Systems 12. června 2023
Obsah
I Příprava
1
1 Úvod do IoT
3
1.1 Architektura internetu věcí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Aplikace IoT v chytrých domácnostech . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Úvod a praxe projektů IoT
9
2.1 Úvod do typických projektů IoT . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Základní moduly pro běžná zařízení IoT . . . . . . . . . . . . . . . . . 9
2.1.2 Základní moduly klientských aplikací . . . . . . . . . . . . . . . . . . . 10
2.1.3 Úvod do běžných cloudových platforem IoT . . . . . . . . . . . . . . 11
2.2 Cvičení: Projekt Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Struktura projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Funkce projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Příprava hardwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Vývojový proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Úvod do ESP RainMaker
19
3.1 Co je ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Implementace ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Reklamace služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Agent RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Klient RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Cvičení: Klíčové body pro vývoj s ESP RainMaker . . . . . . . . . . . . 25
3.4 Vlastnosti ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Správa uživatelů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Funkce pro koncového uživatele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Funkce správce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Nastavení vývojového prostředí
31
4.1 ESP-IDF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Verze ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 Pracovní postup ESP-IDF Git . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Výběr vhodné verze . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Přesview adresáře ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 Nastavení vývojového prostředí ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Nastavení vývojového prostředí ESP-IDF v systému Linux . . . . . . . . 38 4.2.2 Nastavení vývojového prostředí ESP-IDF ve Windows . . . . . . 40 4.2.3 Nastavení vývojového prostředí ESP-IDF v systému Mac . . . . . . . . . 45 4.2.4 Instalace kódu VS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Úvod do vývojových prostředí třetích stran . . . . . . . . 46 4.3 Systém kompilace ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Základní pojmy kompilačního systému . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Struktura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Výchozí pravidla sestavení kompilačního systému . . . . . . . . . . . . . 50 4.3.4 Úvod do kompilačního skriptu . . . . . . . . . . . . . . . . . . 51 4.3.5 Úvod do běžných příkazů . . . . . . . . . . . . . . . . . . . 52 4.4 Cvičení: Sestavení Přample Program “Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Přample Analýza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Kompilace programu Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Blikání programu Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analýza protokolu sériového portu programu Blink . . . . . . . . . . . . . . 60 4.5 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Vývoj hardwaru a ovladačů
65
5 Hardware Design produktů Smart Light založených na ESP32-C3
67
5.1 Vlastnosti a složení produktů Smart Light . . . . . . . . . . . . . . . 67
5.2 Návrh hardwaru základního systému ESP32-C3 . . . . . . . . . . . . . . . . . . . 70
5.2.1 Napájení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Sekvence zapnutí a reset systému . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Zdroj hodin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF a anténa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Páskovací kolíky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 Řadič GPIO a PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Cvičení: Sestavení inteligentního světelného systému s ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Výběr modulů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Konfigurace GPIO signálů PWM . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Stažení firmwaru a ladění rozhraní . . . . . . . . . . . . 82
5.3.4 Pokyny pro návrh RF . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Pokyny pro návrh napájecího zdroje . . . . . . . . . . . . . . . . . . . 86 5.4 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Vývoj ovladačů
87
6.1 Proces vývoje ovladače . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Periferní aplikace ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Základy ovladače LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Barevné prostory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Ovladač LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Stmívání LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Úvod do PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Vývoj ovladače stmívání LED . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Energeticky nezávislé úložiště (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 Kontrolér LED PWM (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Programování LED PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Cvičení: Přidání ovladačů do projektu Smart Light . . . . . . . . . . . . . . . . . 103
6.5.1 Ovladač tlačítka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Ovladač stmívání LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Bezdrátová komunikace a ovládání
109
7 Konfigurace a připojení Wi-Fi
111
7.1 Základy Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Úvod do Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Vývoj IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Koncepce Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Připojení Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Základy Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Úvod do Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Koncepce Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Připojení Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Konfigurace sítě Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Průvodce konfigurací sítě Wi-Fi . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Jiné metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Programování Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi komponenty v ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Cvičení: Wi-Fi připojení . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Cvičení: Chytré připojení Wi-Fi . . . . . . . . . . . . . . . . . . . . . 145
7.5 Cvičení: Konfigurace Wi-Fi v projektu Smart Light . . . . . . . . . . . . . . . 156 7.5.1 Připojení Wi-Fi v projektu Smart Light . . . . . . . . . . . . . . . . . 156 7.5.2 Konfigurace Smart Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Místní ovládání
159
8.1 Úvod do místního ovládání . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Aplikace místního ovládání . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages místního ovládání. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Zjišťování ovládaných zařízení prostřednictvím chytrých telefonů . . . . . . . . . . 161
8.1.4 Datová komunikace mezi chytrými telefony a zařízeními . . . . . . . . 162
8.2 Společné místní metody zjišťování . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Vysílání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Porovnání mezi vysíláním a multicastem . . . . . . . . . . . . . . 176
8.2.4 Multicast Application Protocol mDNS pro místní zjišťování . . . . . . . . 176
8.3 Společné komunikační protokoly pro lokální data . . . . . . . . . . . . . . . 179
8.3.1 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 HyperText Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Uživatel Datagram protokol (UDP). . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protokol CoAP (Constrained Application Protocol) . . . . . . . . . . . . . . . . 192
8.3.5 Protokol Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Souhrn protokolů datové komunikace . . . . . . . . . . . . . . . 203
8.4 Záruka bezpečnosti dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Úvod do Transport Layer Security (TLS) . . . . . . . . . . . . . 207
8.4.2 Úvod do Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Cvičení: Místní ovládání v projektu Smart Light . . . . . . . . . . . . . . . . . . 217
8.5.1 Vytvoření serveru místního ovládání založeného na Wi-Fi . . . . . . . . . . . . . . . 217
8.5.2 Ověření funkčnosti místního ovládání pomocí skriptů . . . . . . . . . . . 221
8.5.3 Vytvoření serveru místního ovládání založeného na technologii Bluetooth . . . . . . . . . . . . 222
8.6 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Ovládání cloudu
225
9.1 Úvod do dálkového ovládání . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Protokoly datové komunikace v cloudu . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 Úvod do MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Principy MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Formát zprávy MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Porovnání protokolů . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Nastavení MQTT Broker v systémech Linux a Windows . . . . . . . . . . . . 233 9.2.6 Nastavení klienta MQTT na základě ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Zajištění zabezpečení dat MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Význam a funkce certifikátů . . . . . . . . . . . . . . . . . . . 237 9.3.2 Lokální generování certifikátů . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Konfigurace MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Konfigurace klienta MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Cvičení: Dálkové ovládání pomocí ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Základy ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Komunikační protokol uzlu a cloudového backendu . . . . . . . . . . . 244 9.4.3 Komunikace mezi Klientem a Cloud Backend . . . . . . . . . . . 249 9.4.4 Uživatelské role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Základní služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Přample . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Integrace aplikace RainMaker a třetích stran . . . . . . . . . . . . . . . 262 9.5 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Vývoj aplikací pro chytré telefony
269
10.1 Úvod do vývoje aplikací pro chytré telefony . . . . . . . . . . . . . . . . . . 269
10.1.1 Konecview vývoje aplikací pro chytré telefony. . . . . . . . . . . . . . . 270
10.1.2 Struktura projektu Android . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Struktura projektu iOS . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Životní cyklus aktivity Android . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Životní cyklus iOS ViewOvladač . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Vytvoření nového projektu aplikace pro smartphone . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Příprava na vývoj pro Android . . . . . . . . . . . . . . . . . . . 275
10.2.2 Vytvoření nového projektu Android . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Přidání závislostí pro MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Žádost o povolení v systému Android . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Příprava na vývoj pro iOS . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Vytvoření nového projektu iOS . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Přidání závislostí pro MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Žádost o povolení v systému iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analýza funkčních požadavků aplikace . . . . . . . . . . . . . . . . . . 281
10.3.1 Analýza funkčních požadavků projektu . . . . . . . . . . . . 282
10.3.2 Analýza požadavků na správu uživatelů . . . . . . . . . . . . . . . 282 10.3.3 Analýza zajišťování zařízení a požadavků na vazbu . . . . . . . 283 10.3.4 Analýza požadavků na dálkové ovládání . . . . . . . . . . . . . . . . 283 10.3.5 Analýza požadavků na plánování . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analýza požadavků uživatelského centra . . . . . . . . . . . . . . . . . . 285 10.4 Vývoj správy uživatelů . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Úvod do rozhraní API RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Zahájení komunikace prostřednictvím chytrého telefonu . . . . . . . . . . . . . . . . 286 10.4.3 Registrace účtu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Přihlášení k účtu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Vývoj zřizování zařízení . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Skenovací zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Připojení zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generování tajných klíčů . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Získání ID uzlu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Zajišťovací zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Vývoj řízení zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Navázání zařízení na cloudové účty . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Získání seznamu zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Získání stavu zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Změna stavu zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Vývoj Plánovacího a uživatelského centra . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementace funkce plánování . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementace uživatelského centra . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Další cloudová API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Souhrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Aktualizace firmwaru a správa verzí
321
11.1 Aktualizace firmwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Konecview oddílových tabulek . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Proces spouštění firmwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Konecview mechanismu OTA. . . . . . . . . . . . . . . . . . . . . 326
11.2 Správa verzí firmwaru . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Označení firmwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Vrácení zpět a Anti-Rollback . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Cvičení: Bezdrátově (OTA) Přample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Aktualizace firmwaru prostřednictvím místního hostitele . . . . . . . . . . . . . . . . . 332
11.3.2 Aktualizace firmwaru prostřednictvím ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimalizace a hromadná výroba
343
12 Řízení spotřeby a optimalizace nízké spotřeby
345
12.1 Řízení spotřeby ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dynamické frekvenční škálování . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Konfigurace řízení spotřeby . . . . . . . . . . . . . . . . . . . . 348
12.2 Režim nízké spotřeby ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Režim spánku modemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Režim lehkého spánku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Režim hlubokého spánku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Spotřeba proudu v různých režimech výkonu . . . . . . . . . . . . . 358
12.3 Řízení spotřeby a ladění při nízké spotřebě . . . . . . . . . . . . . . . . . 359
12.3.1 Ladění protokolů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Ladění GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Cvičení: Správa napájení v projektu Smart Light . . . . . . . . . . . . . . . 363
12.4.1 Konfigurace funkce řízení spotřeby . . . . . . . . . . . . . . . . . 364
12.4.2 Použití zámků řízení spotřeby . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Ověření spotřeby energie . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Rozšířené funkce zabezpečení zařízení
369
13.1 Konecview zabezpečení dat zařízení IoT. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Proč zabezpečit data zařízení IoT? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Základní požadavky na zabezpečení dat zařízení IoT . . . . . . . . . . . . 371
13.2 Ochrana integrity dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Úvod do metody ověřování integrity . . . . . . . . . . . . . . 372
13.2.2 Ověření integrity dat firmwaru . . . . . . . . . . . . . . . . . . 373
13.2.3 Přample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Ochrana důvěrnosti údajů . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Úvod do šifrování dat . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Úvod do schématu šifrování Flash . . . . . . . . . . . . . . . . . 376
13.3.3 Uložení šifrovacího klíče Flash . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Pracovní režim šifrování Flash . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Proces šifrování Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Úvod do šifrování NVS . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Přampsoubory Flash Encryption a NVS Encryption . . . . . . . . . . . 384
13.4 Ochrana legitimity dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Úvod do digitálního podpisu . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Konecview Secure Boot Scheme . . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Úvod do Software Secure Boot . . . . . . . . . . . . . . . . . . . 388 13.4.4 Úvod do hardwarového zabezpečeného spouštění . . . . . . . . . . . . . . . . . . 390 13.4.5 Přamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Cvičení: Bezpečnostní prvky v hromadné výrobě . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash šifrování a bezpečné spouštění . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Povolení Flash Encryption a Secure Boot pomocí Batch Flash Tools . . 397 13.5.3 Povolení Flash Encryption a Secure Boot v Smart Light Project . . . 398 13.6 Souhrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Vypalování a testování firmwaru pro hromadnou výrobu
399
14.1 Vypalování firmwaru v hromadné výrobě . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definování datových oddílů . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Vypalování firmwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Testování hromadné výroby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Cvičení: Data hromadné výroby v projektu Smart Light . . . . . . . . . . . . . 404
14.4 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Platforma vzdáleného monitorování
405
15.1 Úvod do ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Začínáme s ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Začínáme s ESP Insights v projektu esp-insights . . . . . . 409
15.2.2 Spuštění Přampv projektu esp-insights Project . . . . . . . . . . . . . . . 411
15.2.3 Hlášení informací Coredump . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Přizpůsobení protokolů zájmu . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Hlášení důvodu restartu . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Vykazování vlastních metrik . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Cvičení: Použití ESP Insights v projektu Smart Light . . . . . . . . . . . . . . . 416
15.4 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Zavedení
ESP32-C3 je jednojádrový mikrokontrolér SoC Wi-Fi a Bluetooth 5 (LE), založený na open-source architektuře RISC-V. Dosahuje správné rovnováhy mezi výkonem, I/O schopnostmi a zabezpečením, a nabízí tak optimální nákladově efektivní řešení pro připojená zařízení. Tato kniha od Espressif vás zavede na zajímavou cestu AIoT, která vám ukáže různé aplikace rodiny ESP32-C3, a to od základů vývoje projektů IoT a nastavení prostředí až po praktické příklady.amples. První čtyři kapitoly pojednávají o IoT, ESP RainMaker a ESP-IDF. Kapitola 5 a 6 stručně popisuje návrh hardwaru a vývoj ovladačů. Jak budete postupovat, zjistíte, jak nakonfigurovat svůj projekt prostřednictvím sítí Wi-Fi a mobilních aplikací. Nakonec se naučíte optimalizovat svůj projekt a uvést jej do sériové výroby.
Pokud jste inženýr v příbuzných oborech, softwarový architekt, učitel, student nebo kdokoli, kdo se zajímá o IoT, je tato kniha určena právě vám.
Kód si můžete stáhnout napřample použité v této knize z webu Espressif na GitHubu. Pro nejnovější informace o vývoji IoT prosím sledujte náš oficiální účet.
Předmluva
Svět informující
Internet věcí (IoT) na vlně internetu zažil svůj velkolepý debut a stal se novým typem infrastruktury v digitální ekonomice. Aby technologii přiblížili veřejnosti, Espressif Systems pracuje na vizi, že vývojáři ze všech oblastí života mohou využívat IoT k řešení některých nejpalčivějších problémů naší doby. Svět „inteligentní sítě všech věcí“ je to, co očekáváme od budoucnosti.
Návrh našich vlastních čipů je kritickou součástí této vize. Má to být maraton, který vyžaduje neustálé objevování technologických hranic. Od „Game Changeru“ ESP8266 po řadu ESP32 integrující připojení Wi-Fi a Bluetoothr (LE), následovanou ESP32-S3 s akcelerací AI, Espressif nikdy nepřestává zkoumat a vyvíjet produkty pro řešení AIoT. S naším softwarem s otevřeným zdrojovým kódem, jako je IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF a Device Connectivity Platform ESP RainMaker, jsme vytvořili nezávislý rámec pro vytváření aplikací AIoT.
K červenci 2022 přesáhly kumulativní dodávky IoT čipsetů Espressif 800 milionů, což je vedoucí postavení na trhu Wi-Fi MCU a dodává energii obrovskému množství připojených zařízení po celém světě. Díky snaze o dokonalost je každý produkt Espressif velkým hitem pro svou vysokou úroveň integrace a nákladovou efektivitu. Uvedení ESP32-C3 představuje významný milník vlastní technologie Espressif. Jedná se o jednojádrový 32bitový MCU založený na RISC-V se 400 KB SRAM, který může běžet na 160 MHz. Má integrovanou 2.4 GHz Wi-Fi a Bluetooth 5 (LE) s podporou dlouhého dosahu. Dosahuje jemné rovnováhy mezi výkonem, I/O schopnostmi a zabezpečením, a nabízí tak optimální a cenově výhodné řešení pro připojená zařízení. Tato kniha založená na tak výkonném ESP32-C3 má čtenářům pomoci porozumět znalostem souvisejícím s internetem věcí s podrobnými ilustracemi a praktickými příklady.amples.
Proč jsme napsali tuto knihu?
Espressif Systems je více než jen polovodičová společnost. Je také platformou IoT společnosti, která vždy usiluje o průlomy a inovace v oblasti technologií. Espressif zároveň vytvořil open-source a sdílel svůj vlastní vyvinutý operační systém a softwarový rámec s komunitou, čímž vytvořil jedinečný ekosystém. Inženýři, tvůrci a technologičtí nadšenci aktivně vyvíjejí nové softwarové aplikace založené na produktech Espressif, volně komunikují a sdílejí své zkušenosti. Fascinující nápady vývojářů můžete neustále vidět na různých platformách, jako je YouTube a GitHub. Popularita produktů Espressif podnítila rostoucí počet autorů, kteří vytvořili více než 100 knih založených na čipových sadách Espressif ve více než deseti jazycích, včetně angličtiny, čínštiny, němčiny, francouzštiny a japonštiny.
Je to podpora a důvěra partnerů z komunity, co podporuje neustálé inovace Espressif. „Snažíme se, aby naše čipy, operační systémy, rámce, řešení, cloud, obchodní postupy, nástroje, dokumentace, spisy, nápady atd. byly stále relevantnější pro odpovědi, které lidé potřebují v nejnaléhavějších problémech současného života. To je Espressifova nejvyšší ambice a morální kompas." řekl pan Teo Swee Ann, zakladatel a generální ředitel společnosti Espressif.
Espressif si cení čtení a nápadů. Vzhledem k tomu, že neustálé upgradování technologie IoT klade na inženýry vyšší požadavky, jak můžeme pomoci více lidem rychle zvládnout čipy IoT, operační systémy, softwarové rámce, aplikační schémata a produkty cloudových služeb? Jak se říká, je lepší naučit člověka rybařit, než mu rybu dávat. Na brainstormingu nás napadlo, že bychom mohli napsat knihu, která by systematicky utřídila klíčové poznatky z vývoje IoT. Trefili jsme se do toho, rychle shromáždili skupinu zkušených inženýrů a spojili zkušenosti technického týmu s vestavěným programováním, vývojem hardwaru a softwaru IoT, což vše přispělo k vydání této knihy. V procesu psaní jsme se ze všech sil snažili být objektivní a spravedliví, zbaveni zámotků a pomocí výstižných výrazů vyjadřovat složitost a kouzlo internetu věcí. Pečlivě jsme shrnuli běžné otázky, odkázali na zpětnou vazbu a návrhy komunity, abychom jasně odpověděli na otázky, se kterými se setkáváme v procesu vývoje, a poskytli praktické pokyny pro vývoj internetu věcí pro příslušné techniky a osoby s rozhodovací pravomocí.
Struktura knihy
Tato kniha zaujímá perspektivu zaměřenou na inženýry a krok za krokem vysvětluje nezbytné znalosti pro vývoj projektů IoT. Skládá se ze čtyř částí, a to následovně:
· Příprava (kapitola 1): Tato část představuje architekturu IoT, typický projektový rámec IoT, cloudovou platformu ESP RainMakerr a vývojové prostředí ESP-IDF tak, aby byly položeny pevné základy pro vývoj projektů IoT.
· Vývoj hardwaru a ovladačů (kapitola 5): Na základě čipové sady ESP6-C32 tato část rozpracovává minimální vývoj hardwarového systému a ovladačů a implementuje řízení stmívání, odstupňování barev a bezdrátovou komunikaci.
· Bezdrátová komunikace a ovládání (kapitola 7): Tato část vysvětluje schéma inteligentní konfigurace Wi-Fi založené na čipu ESP11-C32, protokolech místního a cloudového ovládání a místním a vzdáleném ovládání zařízení. Poskytuje také schémata pro vývoj aplikací pro chytré telefony, upgrade firmwaru a správu verzí.
· Optimalizace a hromadná výroba (kapitola 12-15): Tato část je určena pro pokročilé aplikace IoT se zaměřením na optimalizaci produktů v oblasti správy napájení, optimalizaci s nízkou spotřebou a zvýšenou bezpečnost. Představuje také vypalování a testování firmwaru v hromadné výrobě a jak diagnostikovat provozní stav a protokoly firmwaru zařízení prostřednictvím platformy vzdáleného monitorování ESP Insights.
O zdrojovém kódu
Čtenáři mohou spustit example programy v této knize, buď ručním zadáním kódu, nebo použitím zdrojového kódu, který knihu doprovází. Důraz klademe na spojení teorie a praxe, a proto téměř v každé kapitole nastavujeme sekci Praxe vycházející z projektu Smart Light. Všechny kódy jsou open-source. Čtenáři si mohou stáhnout zdrojový kód a diskutovat o něm v částech souvisejících s touto knihou na GitHubu a na našem oficiálním fóru esp32.com. Open source kód této knihy podléhá podmínkám Apache License 2.0.
Poznámka autora
Tato kniha je oficiálně produkována společností Espressif Systems a je napsána vedoucími inženýry společnosti. Je vhodný pro manažery a pracovníky výzkumu a vývoje v odvětvích souvisejících s IoT, učitele a studenty příbuzných oborů a nadšence v oblasti internetu věcí. Doufáme, že tato kniha může posloužit jako pracovní příručka, reference a příruční kniha, abyste byli jako dobrý učitel a přítel.
Při sestavování této knihy jsme odkazovali na některé relevantní výsledky výzkumu odborníků, vědců a techniků doma i v zahraničí a snažili jsme se je citovat podle akademických norem. Je však nevyhnutelné, aby došlo k určitým opomenutím, a proto bychom zde rádi vyjádřili hlubokou úctu a poděkování všem příslušným autorům. Navíc jsme citovali informace z internetu, takže děkujeme původním autorům a vydavatelům a omlouváme se, že nemůžeme u každé informace uvést zdroj.
Abychom vytvořili knihu vysoké kvality, zorganizovali jsme kola interních diskusí a poučili jsme se z návrhů a zpětné vazby zkušebních čtenářů a redaktorů nakladatelství. Zde bychom Vám rádi ještě jednou poděkovali za Vaši pomoc, která přispěla k tomuto úspěšnému dílu.
Poslední, ale to nejdůležitější, díky všem v Espressif, kteří tak tvrdě pracovali na zrodu a popularizaci našich produktů.
Vývoj projektů IoT zahrnuje širokou škálu znalostí. Vzhledem k délce knihy a také úrovni a zkušenostem autora se opomenutí nelze vyhnout. Proto prosíme odborníky a čtenáře, aby naše chyby kritizovali a opravili. Pokud máte nějaké návrhy na tuto knihu, kontaktujte nás na adrese book@espressif.com. Těšíme se na vaši zpětnou vazbu.
Jak používat tuto knihu?
Kód projektů v této knize je open source. Můžete si jej stáhnout z našeho úložiště GitHub a sdílet své myšlenky a otázky na našem oficiálním fóru. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Fórum: https://www.esp32.com/bookc3 V celé knize budou části zvýrazněné, jak je uvedeno níže.
Zdrojový kód V této knize klademe důraz na spojení teorie a praxe, a proto jsme téměř v každé kapitole vytvořili část Praxe o projektu Smart Light. Odpovídající kroky a zdrojová stránka budou označeny mezi dvěma řádky začínajícími na tag Zdrojový kód.
POZNÁMKA/TIPY Zde můžete najít některé důležité informace a připomenutí pro úspěšné ladění vašeho programu. Budou označeny mezi dvěma tlustými čarami začínajícími na tag POZNÁMKA nebo TIPY.
Většina příkazů v této knize se spouští pod Linuxem a je vyvolána znakem „$“. Pokud příkaz vyžaduje ke spuštění oprávnění superuživatele, bude výzva nahrazena znakem „#“. Příkazový řádek na systémech Mac je „%“, jak je použito v části 4.2.3 Instalace ESP-IDF na Mac.
Hlavní text v této knize bude vytištěn v Chartě, zatímco kód exampsoubory, komponenty, funkce, proměnné, kód file názvy, adresáře kódů a řetězce budou v Courier New.
Příkazy nebo texty, které musí zadat uživatel, a příkazy, které lze zadat stisknutím klávesy „Enter“, budou vytištěny tučným písmem Courier New. Protokoly a bloky kódu budou prezentovány ve světle modrých rámečcích.
Exampten:
Za druhé, použijte esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py k vygenerování binárního oddílu NVS file na vývojovém hostiteli pomocí následujícího příkazu:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –velikost VELIKOST PARTITION NVS
Kapitola 1
Zavedení
na
IoT
Na konci 20. století, s rozmachem počítačových sítí a komunikačních technologií, se internet rychle integroval do života lidí. Jak internetová technologie stále dospívá, zrodila se myšlenka internetu věcí (IoT). Doslova IoT znamená internet, kde jsou věci propojené. Zatímco původní internet boří hranice prostoru a času a zužuje vzdálenost mezi „osobou a osobou“, IoT dělá z „věcí“ důležitého účastníka, který „lidi“ a „věci“ sbližuje. IoT se má v dohledné době stát hnací silou informačního průmyslu.
Co je tedy internet věcí?
Je těžké přesně definovat internet věcí, protože jeho význam a rozsah se neustále vyvíjí. V roce 1995 Bill Gates poprvé představil myšlenku IoT ve své knize The Road Ahead. Jednoduše řečeno, IoT umožňuje objektům vyměňovat si informace mezi sebou prostřednictvím internetu. Jeho konečným cílem je vytvořit „internet všeho“. Toto je raná interpretace IoT, stejně jako fantazie budoucích technologií. O třicet let později, s rychlým rozvojem ekonomiky a technologií, se fantazie stává skutečností. Od chytrých zařízení, chytrých domácností, chytrých měst, internetu vozidel a nositelných zařízení až po „metaverse“ podporované technologiemi IoT se neustále objevují nové koncepty. V této kapitole začneme vysvětlením architektury internetu věcí a poté představíme nejběžnější aplikaci IoT, chytrou domácnost, abychom vám pomohli lépe porozumět IoT.
1.1 Architektura internetu věcí
Internet věcí zahrnuje několik technologií, které mají různé aplikační potřeby a formy v různých odvětvích. Pro vyřešení struktury, klíčových technologií a aplikačních charakteristik IoT je nutné vytvořit jednotnou architekturu a standardní technický systém. V této knize je architektura IoT jednoduše rozdělena do čtyř vrstev: vrstva vnímání a řízení, síťová vrstva, platforma a aplikační vrstva.
Vrstva vnímání a řízení Jako nejzákladnější prvek architektury IoT je vrstva vnímání a řízení jádrem pro realizaci komplexního vnímání internetu věcí. Jeho hlavní funkcí je shromažďovat, identifikovat a kontrolovat informace. Skládá se z různých zařízení se schopností vnímání,
3
identifikaci, řízení a provádění a je odpovědný za získávání a analýzu dat, jako jsou vlastnosti materiálu, trendy chování a stav zařízení. Tímto způsobem IoT rozpozná skutečný fyzický svět. Kromě toho je vrstva také schopna řídit stav zařízení.
Nejběžnějšími zařízeními této vrstvy jsou různé senzory, které hrají důležitou roli při sběru a identifikaci informací. Senzory jsou jako lidské smyslové orgány, jako jsou fotosenzitivní senzory srovnatelné se zrakem, akustické senzory pro sluch, plynové senzory pro čich a senzory citlivé na tlak a teplotu pro dotyk. Se všemi těmito „smyslovými orgány“ se předměty stávají „živými“ a schopnými inteligentního vnímání, rozpoznávání a manipulace s fyzickým světem.
Síťová vrstva Hlavní funkcí síťové vrstvy je přenášet informace, včetně dat získaných z vrstvy vnímání a řízení k určenému cíli, stejně jako příkazů vydávaných z aplikační vrstvy zpět do vrstvy vnímání a řízení. Slouží jako důležitý komunikační most spojující různé vrstvy systému IoT. Nastavení základního modelu internetu věcí zahrnuje dva kroky k integraci objektů do sítě: přístup k internetu a přenos přes internet.
Přístup k internetu Internet umožňuje propojení mezi člověkem a člověkem, ale nezahrnuje věci do velké rodiny. Před příchodem IoT většina věcí nebyla „síťovatelná“. Díky neustálému vývoji technologií se IoT daří propojovat věci s internetem a realizovat tak propojení mezi „lidmi a věcmi“ a „věcmi a věcmi“. Existují dva běžné způsoby, jak implementovat připojení k internetu: kabelový přístup k síti a bezdrátový přístup k síti.
Mezi metody drátového přístupu k síti patří Ethernet, sériová komunikace (např. RS-232, RS-485) a USB, zatímco přístup k bezdrátové síti závisí na bezdrátové komunikaci, kterou lze dále rozdělit na bezdrátovou komunikaci na krátkou vzdálenost a bezdrátovou komunikaci na velkou vzdálenost.
Bezdrátová komunikace krátkého dosahu zahrnuje ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) a Radio Frequency Identification (RFID). Bezdrátová komunikace na dlouhé vzdálenosti zahrnuje eMTC (Enhanced Machine Type Communication), LoRa, úzkopásmový internet věcí (NB-IoT), 2G, 3G, 4G, 5G atd.
Přenos přes internet Různé způsoby přístupu k internetu vedou k odpovídajícímu fyzickému přenosovému spoji dat. Další věcí je rozhodnout, který komunikační protokol použít k přenosu dat. Ve srovnání s internetovými terminály jich má většina IoT terminálů v současnosti méně
4 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
dostupné zdroje, jako je výkon zpracování, kapacita úložiště, rychlost sítě atd., proto je nutné zvolit komunikační protokol, který v aplikacích IoT zabírá méně zdrojů. Existují dva komunikační protokoly, které jsou dnes široce používány: Message Queuing Telemetry Transport (MQTT) a Constrained Application Protocol (CoAP).
Platformová vrstva Platformová vrstva se týká především cloudových platforem IoT. Když jsou všechny terminály IoT propojeny sítí, jejich data je třeba agregovat na cloudové platformě IoT, aby je bylo možné vypočítat a uložit. Platformová vrstva podporuje hlavně IoT aplikace při usnadnění přístupu a správy masivních zařízení. Připojuje terminály internetu věcí ke cloudové platformě, shromažďuje data terminálů a vydává příkazy terminálům, aby bylo možné implementovat vzdálené ovládání. Platformová vrstva jako zprostředkovatelská služba pro přiřazování zařízení k průmyslovým aplikacím hraje spojovací roli v celé architektuře IoT, nese abstraktní obchodní logiku a standardizovaný základní datový model, který může nejen realizovat rychlý přístup k zařízením, ale také poskytovat výkonné modulární schopnosti. pro splnění různých potřeb ve scénářích průmyslových aplikací. Platformová vrstva zahrnuje především funkční moduly, jako je přístup k zařízení, správa zařízení, správa zabezpečení, komunikace zpráv, monitorování provozu a údržby a datové aplikace.
· Přístup k zařízení, realizace propojení a komunikace mezi terminály a cloudovými platformami IoT.
· Správa zařízení, včetně funkcí, jako je vytváření zařízení, údržba zařízení, konverze dat, synchronizace dat a distribuce zařízení.
· Řízení bezpečnosti, zajištění bezpečnosti přenosu dat IoT z pohledu bezpečnostní autentizace a bezpečnosti komunikace.
· Komunikace zpráv, včetně tří směrů přenosu, to znamená, že terminál odesílá data do cloudové platformy IoT, cloudová platforma IoT odesílá data na stranu serveru nebo jiné cloudové platformy IoT a strana serveru vzdáleně ovládá zařízení IoT.
· Monitorování O&M, zahrnující monitorování a diagnostiku, upgrade firmwaru, online ladění, logovací služby atd.
· Datové aplikace zahrnující ukládání, analýzu a aplikaci dat.
Aplikační vrstva Aplikační vrstva využívá data z vrstvy platformy ke správě aplikace, k jejich filtrování a zpracování pomocí nástrojů, jako jsou databáze a analytický software. Výsledná data lze použít pro aplikace IoT v reálném světě, jako je chytré zdravotnictví, chytré zemědělství, chytré domácnosti a chytrá města.
Architekturu IoT lze samozřejmě rozdělit do více vrstev, ale bez ohledu na to, z kolika vrstev se skládá, základní princip zůstává v podstatě stejný. Učení se
Kapitola 1. Úvod do IoT 5
o architektuře IoT pomáhá prohloubit naše porozumění technologiím IoT a budovat plně funkční projekty IoT.
1.2 Aplikace IoT v chytrých domácnostech
IoT pronikl do všech oblastí života a nejblíže související aplikací IoT je pro nás chytrá domácnost. Mnoho tradičních spotřebičů je nyní vybaveno jedním nebo více zařízeními IoT a mnoho nově postavených domů je od začátku navrženo s technologiemi IoT. Obrázek 1.1 ukazuje některá běžná zařízení pro chytrou domácnost.
Obrázek 1.1. Běžná zařízení pro chytrou domácnost Vývoj chytré domácnosti lze zjednodušeně rozdělit na chytré produktytage, propojení scén stage a inteligentní stage, jak je znázorněno na obrázku 1.2.
Obrázek 1.2. Development stage of smart home 6 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
První stage je o chytrých produktech. Na rozdíl od tradičních domácností v chytrých domácnostech přijímají zařízení IoT signály pomocí senzorů a jsou propojena prostřednictvím bezdrátových komunikačních technologií, jako je Wi-Fi, Bluetooth LE a ZigBee. Uživatelé mohou ovládat chytré produkty různými způsoby, jako jsou aplikace pro chytré telefony, hlasové asistenty, ovládání chytrých reproduktorů atd.tage se zaměřuje na propojení scén. V této stagVývojáři již neuvažují o ovládání jednoho chytrého produktu, ale o propojení dvou nebo více chytrých produktů, do určité míry o automatizaci a nakonec o vytvoření vlastního scénického režimu. NapřampKdyž uživatel stiskne libovolné tlačítko režimu scény, světla, závěsy a klimatizace se automaticky přizpůsobí předvolbám. Předpokladem samozřejmě je, že logika propojení je snadno nastavena, včetně podmínek spouštění a akcí provádění. Představte si, že režim topení klimatizace se spustí, když vnitřní teplota klesne pod 10 °C; že v 7 hodin ráno zazní hudba k probuzení uživatele, otevřou se chytré závěsy a přes chytrou zásuvku se spustí rýžovar nebo toustovač chleba; když uživatel vstane a dokončí mytí, snídaně je již podávána, takže nebude zdržovat odchod do práce. Jak pohodlný se stal náš život! Třetí stage jde do rozvědky stagE. S rostoucím počtem zařízení pro chytrou domácnost se budou zvyšovat i typy generovaných dat. S pomocí cloud computingu, velkých dat a umělé inteligence je jakoby „chytřejší mozek“ zasazen do chytrých domácností, které již od uživatele nevyžadují časté příkazy. Shromažďují data z předchozích interakcí a učí se vzorce chování a preference uživatele, aby zautomatizovali činnosti, včetně poskytování doporučení pro rozhodování. V současné době je většina chytrých domácností na scéně propojení stagE. S rostoucí mírou penetrace a inteligencí chytrých produktů se odstraňují bariéry mezi komunikačními protokoly. V budoucnu se chytré domácnosti stanou skutečně „chytrými“, stejně jako systém umělé inteligence Jarvis v Iron Manovi, který může uživateli nejen pomoci ovládat různá zařízení, zvládat každodenní záležitosti, ale má také super výpočetní výkon a schopnost myšlení. V inteligentní stage, lidé získají lepší služby jak v kvantitě, tak v kvalitě.
Kapitola 1. Úvod do IoT 7
8 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Kapitola Úvod a praxe 2 projektů IoT
V kapitole 1 jsme představili architekturu IoT a role a vzájemné vztahy vrstvy vnímání a řízení, síťové vrstvy, platformy a aplikační vrstvy a také vývoj chytré domácnosti. Ovšem stejně jako když se učíme malovat, znalost teoretických znalostí zdaleka nestačí. Musíme si „ušpinit ruce“, abychom uvedli projekty IoT do praxe, abychom technologii skutečně zvládli. Navíc, když se projekt přesune do sériové výrobytage, je nutné vzít v úvahu více faktorů, jako je připojení k síti, konfigurace, interakce cloudové platformy IoT, správa a aktualizace firmwaru, řízení hromadné výroby a konfigurace zabezpečení. Na co si tedy musíme dát pozor při vývoji kompletního projektu IoT? V kapitole 1 jsme zmínili, že chytrá domácnost je jedním z nejběžnějších scénářů aplikace IoT a chytrá světla jsou jedním z nejzákladnějších a nejpraktičtějších spotřebičů, které lze použít v domácnostech, hotelech, tělocvičnách, nemocnicích atd. V této knize vezmeme za výchozí bod konstrukci projektu chytrého osvětlení, vysvětlíme jeho součásti a funkce a poskytneme pokyny pro vývoj projektu. Doufáme, že z tohoto případu můžete vyvodit závěry a vytvořit další aplikace IoT.
2.1 Úvod do typických projektů IoT
Z hlediska vývoje lze základní funkční moduly projektů IoT rozdělit na vývoj softwaru a hardwaru IoT zařízení, vývoj klientských aplikací a vývoj cloudové platformy IoT. Důležité je ujasnit si základní funkční moduly, které budou dále popsány v této části.
2.1.1 Základní moduly pro běžná zařízení IoT
Vývoj softwaru a hardwaru IoT zařízení zahrnuje tyto základní moduly: Sběr dat
Jako spodní vrstva architektury IoT propojují zařízení IoT z vrstvy vnímání a řízení senzory a zařízení prostřednictvím svých čipů a periferií, aby bylo dosaženo sběru dat a řízení provozu.
9
Vazba účtu a počáteční konfigurace U většiny zařízení IoT je vazba účtu a počáteční konfigurace dokončena v jednom provozním procesu, napřample, připojení zařízení k uživatelům pomocí konfigurace sítě Wi-Fi.
Interakce s cloudovými platformami IoT Pro monitorování a ovládání zařízení IoT je také nutné je propojit s cloudovými platformami IoT, aby bylo možné udělovat příkazy a hlásit stav prostřednictvím vzájemné interakce.
Ovládání zařízení Při připojení ke cloudovým platformám IoT mohou zařízení komunikovat s cloudem a být registrována, vázána nebo řízena. Uživatelé mohou zjišťovat stav produktu a provádět další operace v aplikaci pro chytré telefony prostřednictvím cloudových platforem IoT nebo místních komunikačních protokolů.
Upgrade firmwaru Zařízení IoT mohou také dosáhnout upgradu firmwaru na základě potřeb výrobců. Přijetím příkazů odeslaných z cloudu bude realizován upgrade firmwaru a správa verzí. Pomocí této funkce upgradu firmwaru můžete neustále vylepšovat funkce zařízení IoT, opravovat závady a zlepšovat uživatelskou zkušenost.
2.1.2 Základní moduly klientských aplikací
Klientské aplikace (např. aplikace pro chytré telefony) zahrnují především následující základní moduly:
Systém účtů a autorizace Podporuje autorizaci účtů a zařízení.
Ovládání zařízení Aplikace pro chytré telefony jsou obvykle vybaveny ovládacími funkcemi. Uživatelé se mohou snadno připojit k zařízením IoT a spravovat je kdykoli a kdekoli prostřednictvím aplikací pro chytré telefony. V reálném chytrém domě jsou zařízení většinou ovládána prostřednictvím aplikací pro chytré telefony, což umožňuje nejen inteligentní správu zařízení, ale také šetří náklady na pracovní sílu. Proto je ovládání zařízení nutností pro klientské aplikace, jako je ovládání atributů funkcí zařízení, ovládání scén, plánování, dálkové ovládání, propojení zařízení atd. Uživatelé chytré domácnosti si také mohou přizpůsobit scény podle osobních potřeb, ovládat osvětlení, domácí spotřebiče, vchod atd., aby byl domácí život pohodlnější a pohodlnější. Mohou časovat klimatizaci, vypnout ji na dálku, nastavit automatické rozsvícení osvětlení v chodbě po odemknutí dveří nebo přepnout do režimu „divadlo“ jediným tlačítkem.
Aplikace Notification Client aktualizují stav zařízení IoT v reálném čase a odesílají upozornění, když se zařízení pokazí.
10 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Poprodejní zákaznický servis Aplikace pro chytré telefony mohou poskytovat poprodejní služby pro produkty a včas řešit problémy související s poruchami zařízení IoT a technickými operacemi.
Vybrané funkce Pro uspokojení potřeb různých uživatelů lze přidat další funkce, jako je Shake, NFC, GPS atd. GPS může pomoci nastavit přesnost operací scény podle místa a vzdálenosti, zatímco funkce Shake umožňuje uživatelům nastavit příkazy, které se mají provést pro konkrétní zařízení nebo scénu zatřesením.
2.1.3 Úvod do běžných cloudových platforem IoT
Cloudová platforma IoT je platforma typu vše v jednom, která integruje funkce, jako je správa zařízení, komunikace zabezpečení dat a správa oznámení. Cloudové platformy IoT lze podle cílové skupiny a dostupnosti rozdělit na veřejné cloudové platformy IoT (dále jen „veřejný cloud“) a privátní cloudové platformy IoT (dále jen „privátní cloud“).
Veřejný cloud obvykle označuje sdílené cloudové platformy IoT pro podniky nebo jednotlivce, provozované a spravované poskytovateli platforem a sdílené prostřednictvím internetu. Může být bezplatný nebo levný a poskytuje služby v celé otevřené veřejné síti, jako je Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT atd. Jako podpůrná platforma může veřejný cloud integrovat upstream poskytovatele služeb a následné koncové uživatele k vytvoření nového hodnotového řetězce a ekosystému.
Privátní cloud je vytvořen pouze pro podnikové použití, a tak zaručuje nejlepší kontrolu nad daty, zabezpečením a kvalitou služeb. Jeho služby a infrastruktura jsou spravovány odděleně podniky a podpůrný hardware a software je také věnován konkrétním uživatelům. Podniky si mohou cloudové služby přizpůsobit tak, aby vyhovovaly potřebám jejich podnikání. V současné době již někteří výrobci chytrých domácností získali soukromé cloudové platformy IoT a vyvinuli na nich aplikace pro chytrou domácnost.
Veřejný cloud a privátní cloud mají své výhodytages, což bude vysvětleno později.
Pro dosažení komunikační konektivity je nutné dokončit alespoň vestavěný vývoj na straně zařízení spolu s obchodními servery, cloudovými platformami IoT a aplikacemi pro chytré telefony. Tváří v tvář tak obrovskému projektu poskytuje veřejný cloud obvykle sady pro vývoj softwaru pro aplikace na straně zařízení a chytré telefony, aby se proces urychlil. Veřejný i soukromý cloud poskytují služby včetně přístupu k zařízení, správy zařízení, stínování zařízení a provozu a údržby.
Přístup k zařízení Cloudové platformy IoT musí poskytovat nejen rozhraní pro přístup k zařízení pomocí protokolů
Kapitola 2. Úvod a praxe projektů IoT 11
jako MQTT, CoAP, HTTPS a WebSocket, ale také funkce bezpečnostní autentizace zařízení k blokování padělaných a nelegálních zařízení, čímž se účinně snižuje riziko kompromitace. Taková autentizace obvykle podporuje různé mechanismy, takže při sériové výrobě zařízení je nutné předem přiřadit certifikát zařízení podle zvoleného autentizačního mechanismu a vypálit jej do zařízení.
Správa zařízení Funkce správy zařízení poskytovaná cloudovými platformami IoT může výrobcům pomoci nejen sledovat stav aktivace a online stav jejich zařízení v reálném čase, ale umožňuje také možnosti, jako je přidávání/odebírání zařízení, načítání, přidávání/mazání skupin, upgrade firmwaru. a správa verzí.
Stín zařízení IoT cloudové platformy mohou vytvořit trvalou virtuální verzi (stín zařízení) pro každé zařízení a stav stínu zařízení lze synchronizovat a získat pomocí aplikace pro chytré telefony nebo jiných zařízení prostřednictvím internetových přenosových protokolů. Stín zařízení ukládá nejnovější hlášený stav a očekávaný stav každého zařízení, a i když je zařízení offline, může stále získat stav voláním rozhraní API. Stín zařízení poskytuje vždy zapnutá rozhraní API, což usnadňuje vytváření aplikací pro chytré telefony, které komunikují se zařízeními.
Provoz a údržba Funkce O&M zahrnuje tři aspekty: · Ukazování statistických informací o zařízeních IoT a upozornění. · Správa protokolů umožňuje získávat informace o chování zařízení, toku zpráv nahoru/dolů a obsahu zpráv. · Ladění zařízení podporuje doručování příkazů, aktualizaci konfigurace a kontrolu interakce mezi cloudovými platformami IoT a zprávami zařízení.
2.2 Cvičení: Projekt Smart Light
Po teoretickém úvodu v každé kapitole najdete praktickou část související s projektem Smart Light, která vám pomůže získat praktické zkušenosti. Projekt je založen na čipu ESP32-C3 Espressif a ESP RainMaker IoT Cloud Platform a pokrývá hardware bezdrátových modulů v produktech chytrých světel, vestavěný software pro chytrá zařízení na bázi ESP32C3, aplikace pro chytré telefony a interakci ESP RainMaker.
Zdrojový kód Pro lepší učení a rozvoj byl projekt v této knize vytvořen jako opensource. Zdrojový kód si můžete stáhnout z našeho úložiště GitHub na https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
2.2.1 Struktura projektu
Projekt Smart Light se skládá ze tří částí: i. Inteligentní světelná zařízení založená na ESP32-C3, zodpovědná za interakci s cloudovými platformami IoT a ovládání spínače, jasu a teploty barev LED lamp korálky. ii. Aplikace pro chytré telefony (včetně aplikací pro tablety běžící na systémech Android a iOS), odpovědné za síťovou konfiguraci produktů chytrého osvětlení, jakož i dotazování a řízení jejich stavu.
iii. Cloudová platforma IoT založená na ESP RainMaker. Pro zjednodušení v této knize uvažujeme o cloudové platformě IoT a obchodním serveru jako o celku. Podrobnosti o ESP RainMaker budou uvedeny v kapitole 3.
Souvislost mezi strukturou projektu Smart Light a architekturou IoT je znázorněna na obrázku 2.1.
Obrázek 2.1. Struktura projektu chytrého světla
2.2.2 Funkce projektu
Funkce jednotlivých částí jsou rozděleny podle struktury následovně. Inteligentní světelná zařízení
· Konfigurace sítě a připojení. · LED PWM ovládání, jako je spínač, jas, teplota barev atd. · Automatizace nebo ovládání scény, např. časový spínač. · Šifrování a bezpečné spouštění Flash. · Upgrade firmwaru a správa verzí.
Kapitola 2. Úvod a praxe projektů IoT 13
Aplikace pro chytré telefony · Konfigurace sítě a vazba zařízení. · Inteligentní ovládání světelných produktů, jako je spínač, jas, teplota barev atd. · Automatizace nebo nastavení scény, např. časový spínač. · Místní/dálkové ovládání. · Registrace uživatele, přihlášení atd.
Cloudová platforma IoT ESP RainMaker · Povolení přístupu k zařízení IoT. · Poskytování rozhraní API pro ovládání zařízení přístupných aplikacím pro chytré telefony. · Upgrade firmwaru a správa verzí.
2.2.3 Příprava hardwaru
V případě zájmu o uvedení projektu do praxe budete dále potřebovat následující hardware: chytrá světla, chytré telefony, Wi-Fi routery a počítač splňující instalační požadavky vývojového prostředí. Chytrá světla
Chytrá světla jsou novým typem žárovek, jejichž tvar je stejný jako u běžné žárovky. Inteligentní světlo se skládá z kondenzátoru regulovaného napájecího zdroje, bezdrátového modulu (s vestavěným ESP32-C3), LED ovladače a RGB LED matice. Po připojení k napájení je 15 V DC objtagVýstup po snížení kondenzátoru, usměrnění diody a regulaci dodává energii do LED kontroléru a LED matice. Ovladač LED může automaticky vysílat vysoké a nízké úrovně v určitých intervalech a přepínat matici RGB LED mezi zavřenou (svítí) a otevřenou (světla zhasne), takže může vyzařovat azurovou, žlutou, zelenou, fialovou, modrou, červenou a bílé světlo. Bezdrátový modul je zodpovědný za připojení k Wi-Fi routeru, přijímání a hlášení stavu chytrých světel a odesílání příkazů k ovládání LED.
Obrázek 2.2. Simulované chytré světlo
V raném vývoji stage, můžete simulovat chytré světlo pomocí desky ESP32-C3DevKitM-1 spojené s RGB LED lamp korálky (viz obrázek 2.2). Ale měli byste
14 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
všimněte si, že toto není jediný způsob, jak sestavit chytré světlo. Hardwarový návrh projektu v této knize obsahuje pouze bezdrátový modul (s vestavěným ESP32-C3), ale ne kompletní návrh hardwaru chytrého světla. Kromě toho Espressif vyrábí také vývojovou zvukovou desku ESP32C3-Lyra na bázi ESP32-C3 pro ovládání světel pomocí zvuku. Deska má rozhraní pro mikrofony a reproduktory a umí ovládat LED pásky. Může být použit pro vývoj ultra-nízkých, vysoce výkonných audio vysílačů a rytmických světelných pásů. Obrázek 2.3 ukazuje desku ESP32-C3Lyra spojenou pásem 40 LED světel.
Obrázek 2.3. ESP32-C3-Lyra propojená pásem 40 LED světel
Smartphony (Android/iOS) Projekt Smart Light zahrnuje vývoj aplikace pro chytré telefony pro nastavení a ovládání produktů chytrého osvětlení.
Směrovače Wi-Fi Směrovače Wi-Fi převádějí signály kabelové sítě a signály mobilních sítí na signály bezdrátové sítě, aby se počítače, chytré telefony, tablety a další bezdrátová zařízení připojily k síti. NapřampŠirokopásmové připojení v domácnosti musí být připojeno pouze k Wi-Fi routeru, aby bylo dosaženo bezdrátové sítě Wi-Fi zařízení. Standardní protokolový standard podporovaný směrovači Wi-Fi je IEEE 802.11n s průměrnou rychlostí TxRate 300 Mbps nebo maximálně 600 Mbps. Jsou zpětně kompatibilní s IEEE 802.11ba IEEE 802.11g. Čip ESP32-C3 od Espressif podporuje IEEE 802.11b/g/n, takže si můžete vybrat jednopásmový (2.4 GHz) nebo dvoupásmový (2.4 GHz a 5 GHz) Wi-Fi router.
Počítačové (Linux/macOS/Windows) vývojové prostředí bude představeno v kapitole 4. Kapitola 2. Úvod a praxe IoT projektů 15
2.2.4 Proces vývoje
Obrázek 2.4. Kroky vývoje projektu Smart Light
Návrh hardwaru Návrh hardwaru zařízení IoT je pro projekt IoT zásadní. Kompletní projekt chytrého světla je určen k výrobě lamp pracující pod síťovým napájením. Různí výrobci vyrábějí lamps různých stylů a typů ovladačů, ale jejich bezdrátové moduly mají obvykle stejnou funkci. Pro zjednodušení procesu vývoje projektu Smart Ligh se tato kniha zabývá pouze návrhem hardwaru a vývojem softwaru bezdrátových modulů.
Konfigurace cloudové platformy IoT Chcete-li používat cloudové platformy IoT, musíte nakonfigurovat projekty na backendu, jako je vytváření produktů, vytváření zařízení, nastavení vlastností zařízení atd.
Vývoj vestavěného softwaru pro zařízení IoT Implementujte očekávané funkce s ESP-IDF, SDK na straně zařízení od Espressif, včetně připojení ke cloudovým platformám IoT, vývoje ovladačů LED a upgradu firmwaru.
Vývoj aplikací pro chytré telefony Vyvíjejte aplikace pro chytré telefony pro systémy Android a iOS pro realizaci registrace a přihlášení uživatele, ovládání zařízení a dalších funkcí.
Optimalizace zařízení IoT Po dokončení základního vývoje funkcí zařízení IoT se můžete věnovat optimalizačním úlohám, jako je optimalizace napájení.
Testování hromadné výroby Provádějte testy hromadné výroby podle souvisejících norem, jako je test funkce zařízení, test stárnutí, RF test atd.
Navzdory výše uvedeným krokům nemusí projekt Smart Light nutně podléhat takovému postupu, protože různé úkoly lze provádět současně. NapřampVestavěný software a aplikace pro chytré telefony lze vyvíjet paralelně. Některé kroky může být také nutné opakovat, jako je optimalizace zařízení IoT a testování hromadné výroby.
16 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
2.3 Shrnutí
V této kapitole jsme si nejprve vysvětlili základní komponenty a funkční moduly projektu IoT, poté jsme pro praxi představili pouzdro Smart Light s odkazem na jeho strukturu, funkce, přípravu hardwaru a proces vývoje. Čtenáři mohou vyvodit závěry z praxe a získat jistotu, že v budoucnu budou provádět projekty IoT s minimem chyb.
Kapitola 2. Úvod a praxe projektů IoT 17
18 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Kapitola 3
Zavedení
na
ESP
RainMaker
Internet věcí (IoT) nabízí nekonečné možnosti, jak změnit způsob života lidí, ale vývoj inženýrství IoT je plný výzev. S veřejnými cloudy mohou výrobci terminálů implementovat funkčnost produktu prostřednictvím následujících řešení:
Na základě cloudových platforem poskytovatelů řešení Tímto způsobem výrobci terminálů potřebují pouze navrhnout hardware produktu, poté připojit hardware ke cloudu pomocí dodaného komunikačního modulu a nakonfigurovat funkce produktu podle pokynů. Jedná se o efektivní přístup, protože eliminuje potřebu vývoje a provozu a údržby na straně serveru a aplikací (O&M). Umožňuje výrobcům terminálů soustředit se na návrh hardwaru, aniž by museli uvažovat o cloudové implementaci. Taková řešení (např. firmware zařízení a aplikace) však obecně nejsou open source, takže funkce produktu budou omezeny cloudovou platformou poskytovatele, kterou nelze přizpůsobit. Mezitím data uživatelů a zařízení také patří do cloudové platformy.
Na základě cloudových produktů V tomto řešení potřebují výrobci terminálů po dokončení návrhu hardwaru nejen implementovat cloudové funkce pomocí jednoho nebo více cloudových produktů poskytovaných veřejným cloudem, ale také propojit hardware s cloudem. Napřample, pro připojení k Amazonu Web Služby (AWS), výrobci terminálů potřebují používat produkty AWS, jako je Amazon API Gateway, AWS IoT Core a AWS Lambda, aby umožnili přístup k zařízení, vzdálené ovládání, ukládání dat, správu uživatelů a další základní funkce. Požaduje nejen po výrobcích terminálů, aby flexibilně používali a konfigurovali cloudové produkty s důkladným porozuměním a bohatými zkušenostmi, ale také po nich vyžaduje, aby zvážili náklady na konstrukci a údržbu pro počáteční a pozdější stages To představuje velké výzvy pro energii a zdroje společnosti.
Ve srovnání s veřejnými cloudy jsou privátní cloudy obvykle vytvořeny pro konkrétní projekty a produkty. Vývojáři privátního cloudu dostávají nejvyšší míru svobody v návrhu protokolu a implementaci obchodní logiky. Výrobci terminálů mohou vytvářet produkty a návrhová schémata podle libosti a snadno integrovat a zmocňovat uživatelská data. Kombinace vysoké bezpečnosti, škálovatelnosti a spolehlivosti veřejného cloudu s výhodamitagV rámci soukromého cloudu Espressif spustil ESP
19
RainMaker, hluboce integrované řešení privátního cloudu založené na cloudu Amazon. Uživatelé mohou nasadit ESP RainMaker a budovat privátní cloud jednoduše pomocí účtu AWS.
3.1 Co je ESP RainMaker?
ESP RainMaker je kompletní platforma AIoT postavená na několika vyspělých produktech AWS. Poskytuje různé služby potřebné pro hromadnou výrobu, jako je přístup ke cloudu zařízení, upgrade zařízení, správa backendu, přihlašování třetích stran, integrace hlasu a správa uživatelů. Díky použití Serverless Application Repository (SAR) poskytovaného společností AWS mohou výrobci terminálů rychle nasadit ESP RainMaker do svých účtů AWS, což je časově efektivní a snadno ovladatelné. SAR, kterou spravuje a spravuje Espressif, pomáhá vývojářům snižovat náklady na cloudovou údržbu a urychlovat vývoj produktů AIoT, čímž vytváří bezpečná, stabilní a přizpůsobitelná řešení AIoT. Obrázek 3.1 ukazuje architekturu ESP RainMaker.
Obrázek 3.1. Architektura ESP RainMaker
Veřejný server ESP RainMaker od společnosti Espressif je zdarma pro všechny nadšence, tvůrce a pedagogy ESP pro hodnocení řešení. Vývojáři se mohou přihlásit pomocí účtů Apple, Google nebo GitHub a rychle vytvářet vlastní prototypy aplikací IoT. Veřejný server integruje Alexa a Google Home a poskytuje služby hlasového ovládání, které jsou podporovány Alexa Skill a Google Actions. Jeho funkce sémantického rozpoznávání je také podporována třetími stranami. Zařízení RainMaker IoT reagují pouze na konkrétní akce. Úplný seznam podporovaných hlasových příkazů naleznete na platformách třetích stran. Kromě toho Espressif nabízí veřejnou aplikaci RainMaker, která uživatelům umožňuje ovládat produkty prostřednictvím chytrých telefonů. 20 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
3.2 Implementace ESP RainMaker
Jak je znázorněno na obrázku 3.2, ESP RainMaker se skládá ze čtyř částí: · Služba Claiming Service, která umožňuje zařízením RainMaker dynamicky získávat certifikáty. · RainMaker Cloud (také známý jako cloud backend), poskytující služby, jako je filtrování zpráv, správa uživatelů, ukládání dat a integrace třetích stran. · RainMaker Agent, který umožňuje zařízením RainMaker připojit se k RainMaker Cloud. · Klient RainMaker (aplikace RainMaker nebo skripty CLI) pro poskytování, vytváření uživatelů, přidružení a ovládání zařízení atd.
Obrázek 3.2. Struktura ESP RainMaker
ESP RainMaker poskytuje kompletní sadu nástrojů pro vývoj produktů a hromadnou výrobu, včetně: RainMaker SDK
RainMaker SDK je založen na ESP-IDF a poskytuje zdrojový kód agenta na straně zařízení a související C API pro vývoj firmwaru. Vývojáři potřebují pouze napsat aplikační logiku a zbytek nechat na frameworku RainMaker. Další informace o rozhraních C API naleznete na https://bookc3.espressif.com/rm/c-api-reference. Aplikace RainMaker Veřejná verze aplikace RainMaker umožňuje vývojářům dokončit zřizování zařízení a ovládat a dotazovat se na stav zařízení (např. produktů chytrého osvětlení). Je k dispozici v obchodech s aplikacemi pro iOS i Android. Více podrobností naleznete v kapitole 10. REST API Rozhraní REST API pomáhají uživatelům vytvářet jejich vlastní aplikace podobné aplikaci RainMaker. Pro více informací prosím navštivte https://swaggerapis.rainmaker.espressif.com/.
Kapitola 3. Úvod do ESP RainMaker 21
Rozhraní API Pythonu K implementaci všech funkcí podobných funkcím smartphonu je poskytováno rozhraní CLI založené na Pythonu, které je dodáváno se sadou RainMaker SDK. Další informace o Python API najdete na https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI s vyšší úrovní přístupu je k dispozici pro soukromé nasazení ESP RainMaker pro hromadné generování certifikátů zařízení.
3.2.1 Reklamace služby
Veškerá komunikace mezi zařízeními RainMaker a cloudovým backendem probíhá prostřednictvím MQTT+TLS. V kontextu ESP RainMaker je „nárokování“ proces, ve kterém zařízení získávají certifikáty od služby Claiming Service pro připojení ke cloudovému backendu. Všimněte si, že Claiming Service se vztahuje pouze na veřejnou službu RainMaker, zatímco pro soukromé nasazení je třeba certifikáty zařízení generovat hromadně prostřednictvím Admin CLI. ESP RainMaker podporuje tři typy služby Claiming Service: Self Claiming
Zařízení samo získává certifikáty pomocí tajného klíče předem naprogramovaného v eFuse po připojení k internetu. Host Driven Claiming Certifikáty jsou získávány od vývojového hostitele s účtem RainMaker. Asistované vyzvednutí Certifikáty jsou získávány prostřednictvím aplikací pro chytré telefony během zřizování.
3.2.2 Agent RainMaker
Obrázek 3.3. Struktura RainMaker SDK Primární funkcí RainMaker Agent je poskytovat konektivitu a pomáhat aplikační vrstvě zpracovávat uplink/downlink cloudová data. Je postaven pomocí RainMaker SDK 22 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
a vyvinutý na základě osvědčeného rámce ESP-IDF s použitím komponent ESP-IDF, jako jsou RTOS, NVS a MQTT. Obrázek 3.3 ukazuje strukturu sady RainMaker SDK.
RainMaker SDK obsahuje dvě hlavní funkce.
Spojení
i. Spolupráce se službou Claiming Service za účelem získání certifikátů zařízení.
ii. Připojení ke cloudovému backendu pomocí zabezpečeného protokolu MQTT pro poskytování vzdálené konektivity a implementaci vzdáleného ovládání, hlášení zpráv, správy uživatelů, správy zařízení atd. Ve výchozím nastavení používá komponentu MQTT v ESP-IDF a poskytuje abstraktní vrstvu pro rozhraní s ostatními zásobníky protokolů.
iii. Poskytování komponenty pro zřizování wifi pro připojení a zřizování Wi-Fi, komponenta esp https ota pro upgrady OTA a komponenta esp local ctrl pro zjišťování a připojení místního zařízení. Všech těchto cílů lze dosáhnout jednoduchou konfigurací.
Zpracování dat
i. Ukládání certifikátů zařízení vydaných službou Claiming Service a dat potřebných při spuštění RainMakeru ve výchozím nastavení pomocí rozhraní poskytovaného komponentou nvs flash a poskytování rozhraní API pro vývojáře k přímému použití.
ii. Použití mechanismu zpětného volání ke zpracování uplink/downlink cloudových dat a automatické odblokování dat do aplikační vrstvy pro snadné zpracování vývojáři. NapřampRainMaker SDK poskytuje bohaté rozhraní pro vytváření dat TSL (Thing Specification Language), která jsou potřebná k definování modelů TSL pro popis zařízení internetu věcí a implementaci funkcí, jako je časování, odpočítávání a hlasové ovládání. Pro základní interaktivní funkce, jako je časování, poskytuje RainMaker SDK řešení bez vývoje, které lze v případě potřeby jednoduše aktivovat. Poté Agent RainMaker přímo zpracuje data, odešle je do cloudu prostřednictvím souvisejícího tématu MQTT a vrátí zpět změny dat v cloudovém backendu prostřednictvím mechanismu zpětného volání.
3.2.3 Cloud Backend
Cloudový backend je postaven na AWS Serverless Computing a je dosahován prostřednictvím AWS Cognito (systém správy identit), Amazon API Gateway, AWS Lambda (bezserverová výpočetní služba), Amazon DynamoDB (NoSQL databáze), AWS IoT Core (přístupové jádro IoT, které poskytuje přístup MQTT a filtrování pravidel), Amazon Simple Email Service (SES simple mail service), Amazon CloudFront (síť rychlého doručování), Amazon Simple Queue Service (SQS fronting message) a Amazon S3 (bucket storage service). Je zaměřen na optimalizaci škálovatelnosti a zabezpečení. S ESP RainMaker mohou vývojáři spravovat zařízení, aniž by museli psát kód v cloudu. Zprávy hlášené zařízeními jsou transparentně přenášeny
Kapitola 3. Úvod do ESP RainMaker 23
aplikační klienti nebo jiné služby třetích stran. Tabulka 3.1 ukazuje cloudové produkty a funkce AWS používané v cloudovém backendu, přičemž další produkty a funkce jsou ve vývoji.
Tabulka 3.1. Cloudové produkty a funkce AWS používané cloudovým backendem
Cloudový produkt AWS používaný RainMakerem
Funkce
AWS Cognito
Správa uživatelských přihlašovacích údajů a podpora přihlášení třetích stran
AWS Lambda
Implementace základní obchodní logiky cloudového backendu
Amazon Timestream Ukládání dat časové řady
Amazon DynamoDB Ukládání soukromých informací zákazníků
AWS IoT Core
Podpora komunikace MQTT
Amazon SES
Poskytování služeb zasílání e-mailů
Amazon CloudFront Zrychlení správy backendu webpřístup na stránky
Amazon SQS
Přeposílání zpráv z AWS IoT Core
3.2.4 Klient RainMaker
Klienti RainMaker, jako je App a CLI, komunikují s cloudovým backendem prostřednictvím REST API. Podrobné informace a pokyny o REST API lze nalézt v dokumentaci Swagger poskytnuté společností Espressif. Klient mobilní aplikace RainMaker je k dispozici pro systémy iOS i Android. Umožňuje zřizování, ovládání a sdílení zařízení, stejně jako vytváření a povolení úloh odpočítávání a připojení k platformám třetích stran. Dokáže automaticky načíst uživatelské rozhraní a ikony podle konfigurace hlášené zařízeními a plně zobrazit TSL zařízení.
Napřample, pokud je chytré světlo postaveno na RainMaker SDK poskytovaném exampPo dokončení zřizování se ikona a uživatelské rozhraní žárovky automaticky načtou. Uživatelé mohou měnit barvu a jas světla prostřednictvím rozhraní a dosáhnout ovládání třetí stranou propojením Alexa Smart Home Skill nebo Google Smart Home Actions se svými účty ESP RainMaker. Obrázek 3.4 ukazuje ikonu a uživatelské rozhraní exampméně světla žárovky v aplikaci Alexa, Google Home a ESP RainMaker.
24 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
(a) Přample – Alexa
(b) Přample – Domovská stránka Google
(c) Přample – ESP RainMaker
Obrázek 3.4. Přampikony a uživatelské rozhraní žárovky v aplikaci Alexa, Google Home a ESP RainMaker
3.3 Cvičení: Klíčové body pro vývoj s ESP RainMaker
Po dokončení vrstvy ovladače zařízení mohou vývojáři začít vytvářet modely TSL a zpracovávat data pro stahování pomocí API poskytovaných RainMaker SDK a aktivovat základní služby ESP RainMaker na základě definice a požadavků produktu.
Kapitola 3. Úvod do ESP RainMaker 25
Část 9.4 této knihy vysvětlí implementaci chytrého LED světla v RainMakeru. Během ladění mohou vývojáři používat nástroje CLI v RainMaker SDK ke komunikaci s chytrým světlem (nebo volat REST API od Swagger).
Kapitola 10 bude podrobněji rozvádět použití REST API při vývoji aplikací pro chytré telefony. OTA upgrady LED chytrých světel budou popsány v kapitole 11. Pokud vývojáři povolili vzdálené monitorování ESP Insights, backend pro správu ESP RainMaker zobrazí data ESP Insights. Podrobnosti budou uvedeny v kapitole 15.
ESP RainMaker podporuje soukromé nasazení, které se liší od veřejného serveru RainMaker v následujících ohledech:
Nárokování služby Pro generování certifikátů v soukromých nasazeních je nutné místo Nárokování použít CLI správce RainMaker. U veřejného serveru musí být vývojářům udělena administrátorská práva k implementaci upgradu firmwaru, ale v komerčním nasazení je to nežádoucí. Proto nelze poskytnout samostatnou autentizační službu pro vlastní nárokování, ani práva správce pro hostitelem řízené nebo asistované nárokování.
Telefonní aplikace V soukromých nasazeních je třeba aplikace konfigurovat a kompilovat samostatně, aby bylo zajištěno, že systémy účtů nebudou interoperabilní.
Přihlašování třetích stran a hlasová integrace Vývojáři se musí konfigurovat samostatně prostřednictvím účtů Google a Apple Developer, aby umožnili přihlášení třetích stran, stejně jako integraci Alexa Skill a Google Voice Assistant.
TIPY Podrobnosti o nasazení cloudu naleznete na https://customer.rainmaker.espressif. com. Pokud jde o firmware, migrace z veřejného serveru na soukromý server vyžaduje pouze výměnu certifikátů zařízení, což výrazně zlepšuje efektivitu migrace a snižuje náklady na migraci a sekundární ladění.
3.4 Vlastnosti ESP RainMaker
Funkce ESP RainMaker jsou zaměřeny hlavně na tři aspekty – správu uživatelů, koncové uživatele a administrátory. Všechny funkce jsou podporovány na veřejných i soukromých serverech, pokud není uvedeno jinak.
3.4.1 Správa uživatelů
Funkce správy uživatelů umožňují koncovým uživatelům registrovat se, přihlašovat se, měnit hesla, získávat hesla atd.
26 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Registrace a přihlášení Způsoby registrace a přihlášení podporované RainMakerem zahrnují: · E-mailové ID + Heslo · Telefonní číslo + Heslo · Účet Google · Účet Apple · Účet GitHub (pouze veřejný server) · Účet Amazon (pouze soukromý server)
POZNÁMKA Zaregistrujte se pomocí Google/Amazon a sdílejte e-mailovou adresu uživatele s RainMaker. Zaregistrujte se pomocí Apple sdílí fiktivní adresu, kterou Apple přiřadí uživateli speciálně pro službu RainMaker. Uživatelům, kteří se poprvé přihlásí pomocí účtu Google, Apple nebo Amazon, bude automaticky vytvořen účet RainMaker.
Změnit heslo Platí pouze pro přihlášení na základě e-mailu/telefonního čísla. Všechny ostatní aktivní relace budou po změně hesla odhlášeny. Podle chování AWS Cognito mohou odhlášené relace zůstat aktivní až 1 hodinu.
Získat heslo Platí pouze pro přihlášení založená na e-mailovém ID/telefonním čísle.
3.4.2 Funkce koncového uživatele
Mezi funkce otevřené pro koncové uživatele patří místní a vzdálené ovládání a monitorování, plánování, seskupování zařízení, sdílení zařízení, oznámení push a integrace třetích stran.
Dálkové ovládání a monitorování · Dotaz na konfiguraci, hodnoty parametrů a stav připojení pro jedno nebo všechna zařízení. · Nastavení parametrů pro jedno nebo více zařízení.
Místní ovládání a monitorování Mobilní telefon a zařízení musí být připojeny ke stejné síti pro místní ovládání.
Plánování · Uživatelé předem nastaví určité akce v konkrétní čas. · Při provádění plánu není pro zařízení vyžadováno připojení k internetu. · Jednou nebo opakovat (zadáním dnů) pro jedno nebo více zařízení.
Seskupování zařízení Podporuje víceúrovňové abstraktní seskupování Metadata skupiny lze použít k vytvoření struktury domácí místnosti.
Kapitola 3. Úvod do ESP RainMaker 27
Sdílení zařízení Jedno nebo více zařízení lze sdílet s jedním nebo více uživateli.
Push oznámení Koncoví uživatelé budou dostávat push oznámení o událostech, jako jsou · Přidání/odstranění nového zařízení · Zařízení připojené ke cloudu · Zařízení odpojené od cloudu · Vytvořené/přijaté/odmítnuté požadavky na sdílení zařízení · Výstražné zprávy hlášené zařízeními
Integrace třetích stran Alexa a Google Voice Assistant jsou podporovány pro ovládání zařízení RainMaker, včetně světel, spínačů, zásuvek, ventilátorů a teplotních senzorů.
3.4.3 Funkce správce
Funkce správce umožňují správcům implementovat registraci zařízení, seskupování zařízení a upgrady OTA a na view statistiky a data ESP Insights.
Registrace zařízení Vygenerujte certifikáty zařízení a zaregistrujte se pomocí Admin CLI (pouze soukromý server).
Seskupování zařízení Vytvářejte abstraktní nebo strukturované skupiny na základě informací o zařízení (pouze soukromý server).
Upgrady OTA (Over-the-Air) Nahrajte firmware na základě verze a modelu do jednoho nebo více zařízení nebo skupiny Monitorujte, rušte nebo archivujte úlohy OTA.
View statistika Viewdostupné statistiky zahrnují: · Registrace zařízení (certifikáty registrované administrátorem) · Aktivace zařízení (zařízení připojené poprvé) · Uživatelské účty · Přidružení uživatele k zařízení
View Údaje ESP Insights ViewMezi dostupná data ESP Insights patří: · Chyby, varování a vlastní protokoly · Zprávy a analýzy o selhání · Důvody restartu · Metriky jako využití paměti, RSSI atd. · Vlastní metriky a proměnné
28 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
3.5 Shrnutí
V této kapitole jsme představili některé klíčové rozdíly mezi veřejným nasazením RainMakeru a soukromým nasazením. Soukromé řešení ESP RainMaker spuštěné společností Espressif je vysoce spolehlivé a rozšiřitelné. Všechny čipy řady ESP32 byly připojeny a přizpůsobeny AWS, což výrazně snižuje náklady. Vývojáři se mohou soustředit na ověřování prototypů, aniž by se museli učit o cloudových produktech AWS. Vysvětlili jsme také implementaci a funkce ESP RainMaker a některé klíčové body pro vývoj pomocí platformy.
Naskenováním stáhněte ESP RainMaker pro Android Naskenujte a stáhněte si ESP RainMaker pro iOS
Kapitola 3. Úvod do ESP RainMaker 29
30 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Kapitola Nastavení 4 Vývojové prostředí
Tato kapitola se zaměřuje na ESP-IDF, oficiální rámec pro vývoj softwaru pro ESP32-C3. Vysvětlíme, jak nastavit prostředí na různých operačních systémech, představíme strukturu projektu a systém sestavení ESP-IDF a také použití souvisejících vývojových nástrojů. Poté představíme proces kompilace a spuštění example project a zároveň nabízí podrobné vysvětlení výstupního protokolu na každém stage.
4.1 ESP-IDF Overview
ESP-IDF (Espressif IoT Development Framework) je komplexní vývojový rámec IoT poskytovaný technologií Espressif. Používá C/C++ jako hlavní vývojový jazyk a podporuje křížovou kompilaci pod běžnými operačními systémy, jako jsou Linux, Mac a Windows. BývalýampProgramy obsažené v této knize jsou vyvinuty pomocí ESP-IDF, které nabízí následující funkce: · Ovladače na systémové úrovni SoC. ESP-IDF obsahuje ovladače pro ESP32, ESP32-S2, ESP32-C3,
a další čipy. Tyto ovladače zahrnují periferní knihovnu nízké úrovně (LL), knihovnu hardwarové abstraktní vrstvy (HAL), podporu RTOS a software ovladačů horní vrstvy atd. · Základní komponenty. ESP-IDF obsahuje základní komponenty potřebné pro vývoj IoT. To zahrnuje několik zásobníků síťových protokolů, jako je HTTP a MQTT, rámec pro správu napájení s dynamickou modulací frekvence a funkce jako Flash Encryption a Secure Boot atd. · Vývojové a produkční nástroje. ESP-IDF poskytuje běžně používané nástroje pro vytváření, flashování a ladění během vývoje a hromadné výroby (viz obrázek 4.1), jako je stavební systém založený na CMake, řetězec nástrojů pro křížovou kompilaci založený na GCC a JTAG ladicí nástroj založený na OpenOCD atd. Za zmínku stojí, že kód ESP-IDF primárně dodržuje open-source licenci Apache 2.0. Uživatelé mohou vyvíjet osobní nebo komerční software bez omezení při dodržení podmínek licence open source. Uživatelům jsou navíc zdarma uděleny trvalé patentové licence, bez povinnosti open-source jakékoli úpravy provedené ve zdrojovém kódu.
31
Obrázek 4.1.
Budování, flashování a ladění
nástroje pro vývoj a sériovou výrobu
4.1.1 Verze ESP-IDF
Kód ESP-IDF je hostován na GitHubu jako open-source projekt. V současné době jsou k dispozici tři hlavní verze: v3, v4 a v5. Každá hlavní verze obvykle obsahuje různé podverze, jako je v4.2, v4.3 a tak dále. Espressif Systems zajišťuje 30měsíční podporu pro opravy chyb a bezpečnostní záplaty pro každou vydanou podverzi. Proto jsou také pravidelně vydávány revize subverzí, jako např. v4.3.1, v4.2.2 atd. Tabulka 4.1 ukazuje stav podpory různých verzí ESP-IDF pro čipy Espressif s uvedením, zda jsou v předběžnémview stage (nabízí podporu pro preview verze, které mohou postrádat určité funkce nebo dokumentaci) nebo jsou oficiálně podporovány.
Tabulka 4.1. Stav podpory různých verzí ESP-IDF pro čipy Espressif
Řada ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
podporována v4.1
podporována verze 4.2
v4.3 podporováno podporováno podporováno
v4.4 podporováno podporováno podporováno podporováno
předview
v5.0 podporované podporované podporované podporované podporované preview
32 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Iterace hlavních verzí často zahrnuje úpravy struktury rámce a aktualizace systému kompilace. Napřample, hlavní změnou z v3.* na v4.* byla postupná migrace systému sestavení z Make na CMake. Na druhou stranu iterace menších verzí obvykle znamená přidání nových funkcí nebo podporu nových čipů.
Je důležité rozlišovat a chápat vztah mezi stabilními verzemi a větvemi GitHubu. Verze označené jako v*.* nebo v*.*.* představují stabilní verze, které prošly kompletním interním testováním společnosti Espressif. Po opravě zůstanou kód, řetězec nástrojů a dokumenty k verzi pro stejnou verzi nezměněny. Větve GitHubu (např. větev release/v4.3) však podstupují časté schvalování kódu, často na denní bázi. Proto se dva fragmenty kódu ve stejné větvi mohou lišit, což vyžaduje, aby vývojáři svůj kód odpovídajícím způsobem rychle aktualizovali.
4.1.2 Pracovní postup ESP-IDF Git
Espressif se řídí specifickým pracovním postupem Git pro ESP-IDF, který je popsán následovně:
· Nové změny jsou provedeny na hlavní větvi, která slouží jako hlavní vývojová větev. Verze ESP-IDF na hlavní větvi vždy nese -dev tag označující, že je v současné době ve vývoji, jako například v4.3-dev. Změny na hlavní větvi budou nejprve znovuviewupraveno a otestováno v interním úložišti Espressif a poté odesláno na GitHub po dokončení automatického testování.
· Jakmile nová verze dokončí vývoj funkcí na hlavní větvi a splní kritéria pro zadání beta testování, přejde do nové větve, jako je release/v4.3. Navíc tato nová pobočka je tagged jako předběžná verze, jako v4.3-beta1. Vývojáři se mohou obrátit na platformu GitHub a získat přístup ke kompletnímu seznamu poboček a tags pro ESP-IDF. Je důležité si uvědomit, že beta verze (předběžná verze) může mít stále značný počet známých problémů. Vzhledem k tomu, že beta verze prochází neustálým testováním, jsou opravy chyb přidávány současně do této verze i do hlavní větve. Mezitím hlavní větev již možná začala vyvíjet nové funkce pro další verzi. Když je testování téměř dokončeno, přidá se k větvi štítek kandidáta na vydání (rc), který označuje, že se jedná o potenciálního kandidáta na oficiální vydání, jako je v4.3-rc1. Při této stage, větev zůstává předběžnou verzí.
· Pokud nejsou objeveny nebo hlášeny žádné závažné chyby, předběžná verze nakonec obdrží označení hlavní verze (např. v5.0) nebo označení vedlejší verze (např. v4.3) a stane se oficiální verzí, která je zdokumentována na stránce s poznámkami k vydání. Následně jsou všechny chyby zjištěné v této verzi opraveny ve větvi vydání. Po dokončení ručního testování je větvi přiřazen štítek verze opravy chyb (např. v4.3.2), který se také odráží na stránce s poznámkami k vydání.
Kapitola 4. Nastavení vývojového prostředí 33
4.1.3 Výběr vhodné verze
Protože ESP-IDF oficiálně začalo podporovat ESP32-C3 od verze v4.3 a v době psaní této knihy ještě nebyla oficiálně vydána verze 4.4, verze použitá v této knize je v4.3.2, což je přepracovaná verze. verze 4.3. Je však důležité poznamenat, že v době, kdy budete číst tuto knihu, již mohou být k dispozici verze 4.4 nebo novější. Při výběru verze doporučujeme následující:
· Pro vývojáře na základní úrovni je vhodné zvolit stabilní verzi v4.3 nebo její revidovanou verzi, která odpovídá exampverze použitá v této knize.
· Pro účely hromadné výroby se doporučuje používat nejnovější stabilní verzi, abyste mohli využívat nejaktuálnější technickou podporu.
· Pokud máte v úmyslu experimentovat s novými čipy nebo prozkoumat nové funkce produktu, použijte prosím hlavní větev. Nejnovější verze obsahuje všechny nejnovější funkce, ale mějte na paměti, že se mohou vyskytovat známé nebo neznámé chyby.
· Pokud používaná stabilní verze neobsahuje požadované nové funkce a chcete minimalizovat rizika spojená s hlavní větví, zvažte použití odpovídající větve vydání, jako je větev release/v4.4. Repozitář GitHub společnosti Espressif nejprve vytvoří větev release/v4.4 a následně vydá stabilní verzi v4.4 na základě konkrétního historického snímku této větve, po dokončení vývoje a testování všech funkcí.
4.1.4 Konecview z adresáře ESP-IDF SDK
ESP-IDF SDK se skládá ze dvou hlavních adresářů: esp-idf a .espressif. První obsahuje zdrojový kód úložiště ESP-IDF files a kompilační skripty, zatímco v posledně jmenovaném jsou uloženy hlavně řetězce nástrojů pro kompilaci a další software. Znalost těchto dvou adresářů pomůže vývojářům lépe využívat dostupné zdroje a urychlit proces vývoje. Struktura adresářů ESP-IDF je popsána níže:
(1) Adresář kódu úložiště ESP-IDF (/esp/esp-idf), jak je znázorněno na obrázku 4.2.
A. Komponenty adresáře komponenty
Tento základní adresář integruje řadu základních softwarových komponent ESP-IDF. Žádný kód projektu nelze zkompilovat bez spoléhání se na komponenty v tomto adresáři. Zahrnuje podporu ovladačů pro různé čipy Espressif. Od rozhraní knihoven LL a knihoven HAL pro periferní zařízení až po ovladače a virtuální prostředí vyšší úrovně File Díky podpoře systémové (VFS) vrstvy si vývojáři mohou vybrat vhodné komponenty na různých úrovních pro své vývojové potřeby. ESP-IDF také podporuje několik standardních zásobníků síťových protokolů, jako jsou TCP/IP, HTTP, MQTT, WebSocket atd. Vývojáři mohou využívat známá rozhraní jako Socket k vytváření síťových aplikací. Komponenty poskytují srozumitelnost
34 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Obrázek 4.2. Adresář kódu úložiště ESP-IDF
a lze je snadno integrovat do aplikací, což umožňuje vývojářům soustředit se pouze na obchodní logiku. Některé běžné součásti zahrnují: · ovladač: Tato součást obsahuje programy ovladače periferních zařízení pro různé Espressif
řady čipů, jako jsou GPIO, I2C, SPI, UART, LEDC (PWM) atd. Programy ovladačů periferií v této komponentě nabízejí abstraktní rozhraní nezávislá na čipu. Každá periferie má společnou hlavičku file (jako je gpio.h), což eliminuje potřebu řešit různé otázky podpory specifické pro čip. · esp_wifi: Wi-Fi jako speciální periferní zařízení je považováno za samostatnou součást. Zahrnuje několik rozhraní API, jako je inicializace různých režimů ovladače Wi-Fi, konfigurace parametrů a zpracování událostí. Některé funkce této komponenty jsou poskytovány ve formě knihoven statických odkazů. ESP-IDF také poskytuje komplexní dokumentaci ovladače pro snadné použití.
Kapitola 4. Nastavení vývojového prostředí 35
· freertos: Tato komponenta obsahuje kompletní kód FreeRTOS. Kromě poskytování komplexní podpory pro tento operační systém rozšířil Espressif svou podporu také na dvoujádrové čipy. U dvoujádrových čipů jako ESP32 a ESP32-S3 mohou uživatelé vytvářet úlohy na konkrétních jádrech.
b. Adresář dokumentů docs
Tento adresář obsahuje vývojové dokumenty související s ESP-IDF, včetně příručky Začínáme, referenční příručky API, vývojové příručky atd.
POZNÁMKA Po zkompilování pomocí automatických nástrojů je obsah tohoto adresáře nasazen na https://docs.espressif.com/projects/esp-idf. Ujistěte se, že přepnete cíl dokumentu na ESP32-C3 a vyberete specifikovanou verzi ESP-IDF.
C. Nástroje skriptovacích nástrojů
Tento adresář obsahuje běžně používané nástroje front-end pro kompilaci, jako je idf.py a nástroj monitorovacího terminálu idf_monitor.py atd. Podadresář cmake také obsahuje základní skript files kompilačního systému, který slouží jako základ pro implementaci pravidel kompilace ESP-IDF. Při přidávání proměnných prostředí se obsah v adresáři nástrojů přidá do systémové proměnné prostředí, což umožňuje spuštění idf.py přímo pod cestou projektu.
d. Přample adresář programu examples
Tento adresář obsahuje rozsáhlou sbírku ESP-IDF example programy, které demonstrují použití komponent API. Bývalýampsoubory jsou organizovány do různých podadresářů na základě jejich kategorií:
· začít: Tento podadresář obsahuje vstupní úroveň napřampméně jako „ahoj světe“ a „blikání“, které uživatelům pomohou pochopit základy.
· bluetooth: Můžete najít související Bluetooth napřampzde, včetně Bluetooth LE Mesh, Bluetooth LE HID, BluFi a dalších.
· wifi: Tento podadresář se zaměřuje na Wi-Fi exampsouborů, včetně základních programů, jako je Wi-Fi SoftAP, Wi-Fi Station, espnow, stejně jako proprietární komunikační protokol examples z Espressif. Zahrnuje také více aplikační vrstvy napřampsoubory založené na Wi-Fi, jako jsou Iperf, Sniffer a Smart Config.
· periferní zařízení: Tento rozsáhlý podadresář je dále rozdělen do mnoha podsložek na základě názvů periferií. Obsahuje především periferní ovladač napřampLes pro čipy Espressif, s každým example obsahující několik dílčích examples. Například podadresář gpio obsahuje dva examples: GPIO a maticová klávesnice GPIO. Je důležité si uvědomit, že ne všechny exampsoubory v tomto adresáři jsou použitelné pro ESP32-C3.
36 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Napřample, exampsoubory v usb/host jsou použitelné pouze pro periferní zařízení s hardwarem USB Host (jako je ESP32-S3) a ESP32-C3 tuto periferii nemá. Systém kompilace obvykle poskytuje výzvy při nastavování cíle. Soubor README file každého example uvádí podporované čipy. · protocols: Tento podadresář obsahuje napřampsoubory pro různé komunikační protokoly, včetně MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, pokrývající širokou škálu komunikačních protokolů např.ampméně potřebné pro rozvoj IoT. · zajišťování: Zde najdete zajišťování napřamppro různé metody, jako je poskytování Wi-Fi a poskytování Bluetooth LE. · system: Tento podadresář obsahuje ladění systému napřampsoubory (např. trasování zásobníku, trasování za běhu, monitorování úloh), řízení spotřeby napřamples (např. různé režimy spánku, koprocesory) a napřampsoubory související s běžnými systémovými komponentami, jako je konzolový terminál, smyčka událostí a systémový časovač. · úložiště: V tomto podadresáři najdete napřampméně ze všech file systémy a úložné mechanismy podporované ESP-IDF (jako je čtení a zápis Flash, SD karty a dalších úložných médií), stejně jako např.ampsoubory energeticky nezávislého úložiště (NVS), FatFS, SPIFFS a další file systémové operace. · security: Tento podadresář obsahuje napřampsoubory související s flash šifrováním. (2) Adresář řetězce nástroje pro kompilaci ESP-IDF (/.espressif), jak je znázorněno na obrázku 4.3.
Obrázek 4.3. Řetězový adresář nástrojů pro kompilaci ESP-IDF
Kapitola 4. Nastavení vývojového prostředí 37
A. Adresář distribuce softwaru dist
Řetězec nástrojů ESP-IDF a další software jsou distribuovány ve formě komprimovaných balíčků. Během procesu instalace instalační nástroj nejprve stáhne komprimovaný balíček do adresáře dist a poté jej rozbalí do určeného adresáře. Po dokončení instalace lze obsah tohoto adresáře bezpečně odebrat.
b. Adresář virtuálního prostředí Python python env
Různé verze ESP-IDF spoléhají na konkrétní verze balíčků Pythonu. Instalace těchto balíčků přímo na stejný hostitel může vést ke konfliktům mezi verzemi balíčků. K vyřešení tohoto problému používá ESP-IDF virtuální prostředí Pythonu k izolaci různých verzí balíčků. Pomocí tohoto mechanismu mohou vývojáři nainstalovat více verzí ESP-IDF na stejný hostitel a snadno mezi nimi přepínat importováním různých proměnných prostředí.
C. ESP-IDF nástroje pro kompilaci řetězců adresářů
Tento adresář obsahuje hlavně nástroje pro křížovou kompilaci potřebné pro kompilaci projektů ESP-IDF, jako jsou nástroje CMake, nástroje pro sestavení Ninja a řetězec nástrojů gcc, který generuje konečný spustitelný program. Tento adresář navíc obsahuje standardní knihovnu jazyka C/C++ spolu s odpovídající hlavičkou files. Pokud program odkazuje na systémové záhlaví file jako #include , řetězec nástrojů pro kompilaci najde stdio.h file v tomto adresáři.
4.2 Nastavení vývojového prostředí ESP-IDF
Vývojové prostředí ESP-IDF podporuje běžné operační systémy, jako jsou Windows, Linux a macOS. Tato část představí, jak nastavit vývojové prostředí na každém systému. Doporučuje se vyvíjet ESP32-C3 na systému Linux, který zde bude podrobně představen. Mnoho instrukcí je použitelných napříč platformami kvůli podobnosti vývojových nástrojů. Proto se doporučuje pečlivě si přečíst obsah této části.
POZNÁMKA Můžete se podívat na online dokumenty dostupné na https://bookc3.espressif.com/esp32c3, které poskytují příkazy uvedené v této části.
4.2.1 Nastavení vývojového prostředí ESP-IDF na Linuxu
Vývojové a ladicí nástroje GNU potřebné pro vývojové prostředí ESP-IDF jsou nativní pro systém Linux. Terminál příkazového řádku v Linuxu je navíc výkonný a uživatelsky přívětivý, takže je ideální volbou pro vývoj ESP32-C3. Můžeš
38 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
vyberte preferovanou distribuci Linuxu, ale doporučujeme používat Ubuntu nebo jiné systémy založené na Debianu. Tato část poskytuje pokyny k nastavení vývojového prostředí ESP-IDF na Ubuntu 20.04.
1. Nainstalujte požadované balíčky
Otevřete nový terminál a spusťte následující příkaz pro instalaci všech potřebných balíčků. Příkaz automaticky přeskočí balíčky, které jsou již nainstalovány.
$ 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
TIPY Pro výše uvedený příkaz musíte použít účet správce a heslo. Ve výchozím nastavení se při zadávání hesla nebudou zobrazovat žádné informace. Jednoduše stiskněte klávesu „Enter“ a pokračujte v postupu.
Git je klíčový nástroj pro správu kódu v ESP-IDF. Po úspěšném nastavení vývojového prostředí můžete použít příkaz git log to view všechny změny kódu provedené od vytvoření ESP-IDF. Kromě toho se Git používá také v ESP-IDF k potvrzení informací o verzi, které jsou nezbytné pro instalaci správného řetězce nástrojů odpovídajících konkrétním verzím. Spolu s Git patří mezi další důležité systémové nástroje Python. ESP-IDF obsahuje četné automatizační skripty napsané v Pythonu. Nástroje jako CMake, Ninja-build a Ccache jsou široce používány v projektech C/C++ a slouží jako výchozí nástroje pro kompilaci kódu a vytváření v ESP-IDF. libusb-1.0-0 a dfu-util jsou hlavní ovladače používané pro sériovou USB komunikaci a vypalování firmwaru. Jakmile jsou softwarové balíčky nainstalovány, můžete pomocí příkazu apt show získat podrobné popisy každého balíčku. Napřample, použijte apt show git k vytištění informací popisu nástroje Git.
Otázka: Co dělat, když verze Pythonu není podporována? Odpověď: ESP-IDF v4.3 vyžaduje verzi Pythonu, která není nižší než v3.6. Pro starší verze Ubuntu si prosím ručně stáhněte a nainstalujte vyšší verzi Pythonu a nastavte Python3 jako výchozí prostředí Pythonu. Podrobné pokyny naleznete vyhledáním klíčového slova update-alternatives python.
2. Stáhněte si kód úložiště ESP-IDF
Otevřete terminál a vytvořte složku s názvem esp ve svém domovském adresáři pomocí příkazu mkdir. Pokud chcete, můžete pro složku zvolit jiný název. Pro vstup do složky použijte příkaz cd.
Kapitola 4. Nastavení vývojového prostředí 39
$ mkdir -p /esp $ cd /esp
Pomocí příkazu git clone stáhněte kód úložiště ESP-IDF, jak je znázorněno níže:
$ git clone -b v4.3.2 – rekurzivní https://github.com/espressif/esp-idf.git
Ve výše uvedeném příkazu parametr -b v4.3.2 určuje verzi ke stažení (v tomto případě verze 4.3.2). Parametr –recursive zajišťuje, že všechny dílčí repozitáře ESP-IDF jsou stahovány rekurzivně. Informace o dílčích repozitářích naleznete v .gitmodules file.
3. Nainstalujte řetězec vývojových nástrojů ESP-IDF
Espressif poskytuje automatizovaný skript install.sh ke stažení a instalaci řetězce nástrojů. Tento skript zkontroluje aktuální verzi ESP-IDF a prostředí operačního systému a poté stáhne a nainstaluje příslušnou verzi balíčků nástrojů Python a řetězců nástrojů pro kompilaci. Výchozí instalační cesta pro řetězec nástrojů je /.espressif. Vše, co musíte udělat, je přejít do adresáře esp-idf a spustit install.sh.
$ cd /esp/esp-idf $ ./install.sh
Pokud úspěšně nainstalujete nástrojový řetěz, terminál zobrazí:
Vše hotovo!
V tomto okamžiku jste úspěšně nastavili vývojové prostředí ESP-IDF.
4.2.2 Nastavení vývojového prostředí ESP-IDF ve Windows
1. Stáhněte si instalační program nástrojů ESP-IDF
TIPY Vývojové prostředí ESP-IDF se doporučuje nastavit na Windows 10 nebo vyšší. Instalační program si můžete stáhnout z https://dl.espressif.com/dl/esp-idf/. Instalační program je také software s otevřeným zdrojovým kódem a jeho zdrojový kód může být viewed na https: //github.com/espressif/idf-installer.
· Online instalátor nástrojů ESP-IDF
Tento instalační program je relativně malý, má velikost kolem 4 MB a další balíčky a kód budou staženy během procesu instalace. Advantage online instalátoru spočívá v tom, že nejenže je možné stahovat softwarové balíčky a kód na vyžádání během procesu instalace, ale také umožňuje instalaci všech dostupných verzí ESP-IDF a nejnovější větve kódu GitHub (jako je hlavní větev) . DisadvantagTo znamená, že vyžaduje připojení k síti během procesu instalace, což může způsobit selhání instalace kvůli problémům se sítí.
40 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
· Offline instalátor nástrojů ESP-IDF Tento instalátor je větší, má velikost asi 1 GB a obsahuje všechny softwarové balíčky a kód potřebné pro nastavení prostředí. Hlavní výhodatage offline instalačního programu je, že jej lze použít na počítačích bez přístupu k internetu a obecně má vyšší úspěšnost instalace. Je třeba poznamenat, že offline instalační program může nainstalovat pouze stabilní verze ESP-IDF označené v*.* nebo v*.*.*.
2. Spusťte instalační program nástrojů ESP-IDF Po stažení vhodné verze instalačního programu (například ESP-IDF Tools Offline 4.3.2ample zde), poklepejte na soubor exe file pro spuštění instalačního rozhraní ESP-IDF. Následující text ukazuje, jak nainstalovat stabilní verzi ESP-IDF v4.3.2 pomocí offline instalačního programu.
(1) V rozhraní „Vybrat jazyk instalace“ zobrazeném na obrázku 4.4 vyberte z rozevíracího seznamu jazyk, který se má použít.
Obrázek 4.4. Rozhraní „Vyberte jazyk instalace“ (2) Po výběru jazyka klikněte na „OK“, aby se zobrazilo rozhraní „Licenční smlouva“
(viz obrázek 4.5). Po pečlivém přečtení instalační licenční smlouvy vyberte „Souhlasím s dohodou“ a klikněte na „Další“.
Obrázek 4.5. Rozhraní „Licenční smlouva“ Kapitola 4. Nastavení vývojového prostředí 41
(3) Review konfiguraci systému v rozhraní „Předinstalační kontrola systému“ (viz obrázek 4.6). Zkontrolujte verzi systému Windows a informace o nainstalovaném antivirovém softwaru. Pokud jsou všechny položky konfigurace normální, klikněte na „Další“. Jinak můžete kliknout na „Úplný protokol“ pro řešení založená na klíčových položkách.
Obrázek 4.6. TIPY rozhraní „Kontrola systému před instalací“.
Pro pomoc můžete odeslat protokoly na https://github.com/espressif/idf-installer/issues. (4) Vyberte instalační adresář ESP-IDF. Zde vyberte D:/.espressif, jak je znázorněno na
Obrázek 4.7 a klikněte na „Další“. Upozorňujeme, že .espressif zde je skrytý adresář. Po dokončení instalace můžete view konkrétní obsah tohoto adresáře otevřením file správce a zobrazování skrytých položek.
Obrázek 4.7. Vyberte instalační adresář ESP-IDF 42 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
(5) Zkontrolujte součásti, které je třeba nainstalovat, jak ukazuje obrázek 4.8. Doporučuje se použít výchozí možnost, tedy dokončit instalaci a poté kliknout na „Další“.
Obrázek 4.8. Vyberte součásti k instalaci (6) Potvrďte součásti, které se mají nainstalovat, a kliknutím na „Instalovat“ spusťte automatickou instalaci.
proces instalace, jak je znázorněno na obrázku 4.9. Instalační proces může trvat desítky minut a průběh instalace je znázorněn na obrázku 4.10. Čekejte prosím trpělivě.
Obrázek 4.9. Příprava na instalaci (7) Po dokončení instalace se doporučuje zkontrolovat „Registrace ESP-IDF
Spustitelné soubory nástrojů jako výjimky programu Windows Defender…“, aby se zabránilo odstranění antivirového softwaru files. Přidáním položek vyloučení můžete také přeskočit časté antivirové kontroly
Kapitola 4. Nastavení vývojového prostředí 43
Obrázek 4.10. Software pro ukazatel průběhu instalace výrazně zlepšuje efektivitu kompilace kódu systému Windows. Klepnutím na „Dokončit“ dokončete instalaci vývojového prostředí, jak je znázorněno na obrázku 4.11. Můžete zaškrtnout políčko „Spustit prostředí ESP-IDF PowerShell“ nebo „Spustit příkazový řádek ESP-IDF“. Spusťte okno kompilace přímo po instalaci, abyste zajistili, že vývojové prostředí funguje normálně.
Obrázek 4.11. Instalace dokončena (8) Otevřete nainstalované vývojové prostředí v seznamu programů (buď ESP-IDF 4.3
Terminál CMD nebo ESP-IDF 4.3 PowerShell, jak je znázorněno na obrázku 4.12), a proměnná prostředí ESP-IDF se při spuštění v terminálu automaticky přidají. Poté můžete pro operace použít příkaz idf.py. Otevřené CMD ESP-IDF 4.3 je znázorněno na obrázku 4.13. 44 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
Obrázek 4.12. Nainstalované vývojové prostředí
Obrázek 4.13. ESP-IDF 4.3 CMD
4.2.3 Nastavení vývojového prostředí ESP-IDF na Macu
Proces instalace vývojového prostředí ESP-IDF v systému Mac je stejný jako v systému Linux. Příkazy pro stažení kódu úložiště a instalaci řetězce nástrojů jsou naprosto stejné. Pouze příkazy pro instalaci závislých balíčků se mírně liší. 1. Instalace závislých balíčků Otevřete terminál a nainstalujte pip, nástroj pro správu balíčků Pythonu, spuštěním následujícího příkazu:
% sudo jednoduchá instalace pip
Nainstalujte Homebrew, nástroj pro správu balíčků pro macOS, spuštěním následujícího příkazu:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Nainstalujte požadované balíčky závislostí spuštěním následujícího příkazu:
% brew python3 nainstalovat cmake ninja ccache dfu-util
2. Stáhněte kód úložiště ESP-IDF Podle pokynů uvedených v části 4.2.1 stáhněte kód úložiště ESP-IDF. Kroky jsou stejné jako při stahování v systému Linux.
Kapitola 4. Nastavení vývojového prostředí 45
3. Nainstalujte řetězec vývojových nástrojů ESP-IDF
Při instalaci řetězce vývojových nástrojů ESP-IDF postupujte podle pokynů uvedených v části 4.2.1. Kroky jsou stejné jako při instalaci v systému Linux.
4.2.4 Instalace kódu VS
Ve výchozím nastavení sada ESP-IDF SDK neobsahuje nástroj pro úpravu kódu (ačkoli nejnovější instalační program ESP-IDF pro Windows nabízí možnost nainstalovat ESP-IDF Eclipse). K úpravě kódu a následné kompilaci pomocí příkazů terminálu můžete použít libovolný nástroj pro úpravu textu podle vašeho výběru.
Jedním z oblíbených nástrojů pro úpravu kódu je VS Code (Visual Studio Code), což je bezplatný editor kódu bohatý na funkce s uživatelsky přívětivým rozhraním. Nabízí různé plugins které poskytují funkce, jako je navigace v kódu, zvýrazňování syntaxe, řízení verzí Git a integrace terminálu. Kromě toho Espressif vyvinul specializovaný plugin nazvaný Espressif IDF pro VS Code, který zjednodušuje konfiguraci a ladění projektu.
Pro rychlé otevření aktuální složky ve VS Code můžete použít příkaz code v terminálu. Alternativně můžete použít zkratku Ctrl+ k otevření výchozí terminálové konzoly systému v rámci VS Code.
TIPY Pro vývoj kódu ESP32-C3 se doporučuje používat VS Code. Stáhněte si a nainstalujte nejnovější verzi VS Code na https://code.visualstudio.com/.
4.2.5 Úvod do vývojových prostředí třetích stran
Kromě oficiálního vývojového prostředí ESP-IDF, které primárně používá jazyk C, podporuje ESP32-C3 také další běžné programovací jazyky a širokou škálu vývojových prostředí třetích stran. Některé pozoruhodné možnosti zahrnují:
Arduino: open-source platforma pro hardware i software, podporující různé mikrokontroléry, včetně ESP32-C3.
Využívá jazyk C++ a nabízí zjednodušené a standardizované API, běžně označované jako jazyk Arduino. Arduino je široce používáno ve vývoji prototypů a vzdělávacích kontextech. Poskytuje rozšiřitelný softwarový balík a IDE, které umožňuje snadnou kompilaci a flashování.
MicroPython: překladač jazyka Python 3 navržený tak, aby běžel na platformách vestavěných mikrokontrolérů.
Pomocí jednoduchého skriptovacího jazyka může přímo přistupovat k periferním zdrojům ESP32-C3 (jako je UART, SPI a I2C) a komunikačním funkcím (jako je Wi-Fi a Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
To zjednodušuje interakci hardwaru. MicroPython v kombinaci s rozsáhlou knihovnou matematických operací Pythonu umožňuje implementaci komplexních algoritmů na ESP32-C3, což usnadňuje vývoj aplikací souvisejících s AI. Jako skriptovací jazyk není potřeba opakované kompilace; lze provádět úpravy a přímo spouštět skripty.
NodeMCU: LUA jazykový interpret vyvinutý pro čipy řady ESP.
Podporuje téměř všechny periferní funkce čipů ESP a je lehčí než MicroPython. Podobně jako MicroPython, NodeMCU používá skriptovací jazyk, což eliminuje potřebu opakované kompilace.
Kromě toho ESP32-C3 také podporuje operační systémy NuttX a Zephyr. NuttX je operační systém pracující v reálném čase, který poskytuje rozhraní kompatibilní s POSIX a zlepšuje přenositelnost aplikací. Zephyr je malý operační systém pracující v reálném čase speciálně navržený pro aplikace IoT. Zahrnuje četné softwarové knihovny potřebné pro vývoj IoT, které se postupně vyvíjejí do komplexního softwarového ekosystému.
Tato kniha neposkytuje podrobné pokyny k instalaci pro výše uvedená vývojová prostředí. Vývojové prostředí můžete nainstalovat na základě vašich požadavků podle příslušné dokumentace a pokynů.
4.3 Kompilační systém ESP-IDF
4.3.1 Základní pojmy kompilačního systému
Projekt ESP-IDF je souborem hlavního programu se vstupní funkcí a více nezávislými funkčními komponentami. Napřample, projekt, který řídí LED spínače, se skládá hlavně z hlavního vstupního programu a komponenty ovladače, která ovládá GPIO. Pokud chcete realizovat LED dálkové ovládání, musíte přidat také Wi-Fi, zásobník protokolu TCP/IP atd.
Kompilační systém může kompilovat, propojovat a generovat spustitelný soubor files (.bin) pro kód prostřednictvím sady stavebních pravidel. Systém kompilace ESP-IDF v4.0 a vyšších verzí je ve výchozím nastavení založen na CMake a kompilační skript CMakeLists.txt lze použít k řízení chování při kompilaci kódu. Kromě podpory základní syntaxe CMake kompilační systém ESP-IDF také definuje sadu výchozích pravidel kompilace a funkcí CMake a kompilační skript můžete napsat pomocí jednoduchých příkazů.
4.3.2 Projekt File Struktura
Projekt je složka, která obsahuje hlavní vstupní program, uživatelsky definované komponenty a fileje vyžadována k vytváření spustitelných aplikací, jako jsou kompilační skripty, konfigurace
Kapitola 4. Nastavení vývojového prostředí 47
files, tabulky oddílů atd. Projekty lze kopírovat a předávat dál a stejný spustitelný soubor file lze kompilovat a generovat na strojích se stejnou verzí vývojového prostředí ESP-IDF. Typický projekt ESP-IDF file struktura je znázorněna na obrázku 4.14.
Obrázek 4.14. Typický projekt ESP-IDF file struktura Protože ESP-IDF podporuje více čipů IoT od Espressif, včetně ESP32, ESP32-S série, ESP32-C série, ESP32-H série atd., je třeba před kompilací kódu určit cíl. Cílem je jak hardwarové zařízení, na kterém je spuštěn aplikační program, tak cíl sestavení kompilačního systému. V závislosti na vašich potřebách můžete určit jeden nebo více cílů pro váš projekt. NapřampPomocí příkazu idf.py set-target esp32c3 můžete nastavit cíl kompilace na ESP32-C3, během kterého se načtou výchozí parametry a řetězová cesta kompilačního nástroje pro ESP32C3. Po kompilaci lze pro ESP32C3 vygenerovat spustitelný program. Můžete také znovu spustit příkaz set-target a nastavit jiný cíl a systém kompilace se automaticky vyčistí a překonfiguruje. Komponenty
Komponenty v ESP-IDF jsou modulární a nezávislé kódové jednotky spravované v rámci kompilačního systému. Jsou organizovány jako složky, přičemž název složky ve výchozím nastavení představuje název komponenty. Každá komponenta má svůj vlastní kompilační skript, který 48 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
specifikuje jeho parametry kompilace a závislosti. Během procesu kompilace jsou komponenty kompilovány do samostatných statických knihoven (.a files) a případně zkombinovány s dalšími komponentami za účelem vytvoření aplikačního programu.
ESP-IDF poskytuje základní funkce, jako je operační systém, ovladače periferií a zásobník síťových protokolů, ve formě komponent. Tyto součásti jsou uloženy v adresáři součástí umístěném v kořenovém adresáři ESP-IDF. Vývojáři nemusí kopírovat tyto komponenty do adresáře komponent myProject. Místo toho potřebují pouze určit vztahy závislostí těchto komponent v souboru CMakeLists.txt projektu file pomocí direktiv REQUIRES nebo PRIV_REQUIRES. Kompilační systém automaticky vyhledá a zkompiluje požadované komponenty.
Adresář komponent pod myProject tedy není nutný. Používá se pouze k zahrnutí některých vlastních součástí projektu, což mohou být knihovny třetích stran nebo uživatelsky definovaný kód. Komponenty lze navíc získat z libovolného adresáře jiného než ESP-IDF nebo aktuálního projektu, například z projektu s otevřeným zdrojovým kódem uloženého v jiném adresáři. V tomto případě stačí přidat cestu ke komponentě nastavením proměnné EXTRA_COMPONENT_DIRS v souboru CMakeLists.txt v kořenovém adresáři. Tento adresář přepíše jakoukoli komponentu ESP-IDF se stejným názvem, což zajistí použití správné komponenty.
Vstupní program hlavní Hlavní adresář v rámci projektu následuje stejně file struktura jako jiné komponenty (např. komponenta1). Má však zvláštní význam, protože je povinnou součástí, která musí existovat v každém projektu. Hlavní adresář obsahuje zdrojový kód projektu a vstupní bod uživatelského programu, obvykle pojmenovaný app_main. Ve výchozím nastavení začíná provádění uživatelského programu od tohoto vstupního bodu. Hlavní komponenta se také liší tím, že automaticky závisí na všech komponentách v rámci vyhledávací cesty. Proto není potřeba explicitně označovat závislosti pomocí direktiv REQUIRES nebo PRIV_REQUIRES v souboru CMakeLists.txt file.
Konfigurace file Kořenový adresář projektu obsahuje konfiguraci file sdkconfig, který obsahuje konfigurační parametry pro všechny komponenty v rámci projektu. Soubor sdkconfig file je automaticky generován systémem kompilace a lze jej upravit a znovu vytvořit příkazem idf.py menuconfig. Možnosti menuconfig pocházejí hlavně z Kconfig.projbuild projektu a Kconfig komponent. Vývojáři komponent obecně přidávají konfigurační položky do Kconfig, aby byla komponenta flexibilní a konfigurovatelná.
Adresář sestavení Ve výchozím nastavení ukládá adresář sestavení v rámci projektu meziprodukt files a fi-
Kapitola 4. Nastavení vývojového prostředí 49
nal spustitelné programy generované příkazem idf.py build. Obecně není nutné přímo přistupovat k obsahu adresáře sestavení. ESP-IDF poskytuje předdefinované příkazy pro interakci s adresářem, jako je použití příkazu idf.py flash k automatickému vyhledání zkompilovaného binárního souboru. file a flashnout jej na zadanou adresu flash, nebo pomocí příkazu idf.py fullclean vyčistit celý adresář sestavení.
Tabulka oddílů (partitions.csv) Každý projekt vyžaduje tabulku oddílů pro rozdělení prostoru flash a specifikaci velikosti a počáteční adresy spustitelného programu a prostoru uživatelských dat. Příkaz idf.py flash nebo OTA upgrade program provede flashování firmwaru na odpovídající adresu podle této tabulky. ESP-IDF poskytuje několik výchozích tabulek oblastí v komponentách/tabulka_rozdílů, jako jsou partitions_singleapp.csv a partitions_two_ota.csv, které lze vybrat v menuconfig.
Pokud výchozí tabulka oddílů systému nemůže splňovat požadavky projektu, lze do adresáře projektu přidat vlastní oddíly.csv a vybrat jej v menuconfig.
4.3.3 Výchozí pravidla sestavení kompilačního systému
Pravidla pro přepsání komponent se stejným názvem Během procesu vyhledávání komponent se systém kompilace řídí konkrétním pořadím. Nejprve hledá vnitřní součásti ESP-IDF, poté hledá součásti uživatelského projektu a nakonec hledá součásti v EXTRA_COMPONENT_DIRS. V případech, kdy více adresářů obsahuje komponenty se stejným názvem, komponenta nalezená v posledním adresáři přepíše všechny předchozí komponenty se stejným názvem. Toto pravidlo umožňuje přizpůsobení komponent ESP-IDF v rámci uživatelského projektu při zachování původního kódu ESP-IDF beze změny.
Pravidla pro standardní zahrnutí společných komponent Jak je uvedeno v sekci 4.3.2, komponenty musí explicitně specifikovat své závislosti na jiných komponentách v CMakeLists.txt. Běžné komponenty, jako je freertos, jsou však ve výchozím nastavení automaticky zahrnuty do systému sestavení, i když jejich vztahy závislostí nejsou explicitně definovány ve skriptu kompilace. Mezi běžné komponenty ESP-IDF patří freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv a cxx. Použití těchto společných komponent zabraňuje opakované práci při psaní CMakeLists.txt a činí jej stručnějším.
Pravidla pro přepsání položek konfigurace Vývojáři mohou přidat výchozí konfigurační parametry přidáním výchozí konfigurace file s názvem sdkconfig.defaults projektu. Napřample, přidávání CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
DEFAULT_LEVEL_NONE = y můžete nakonfigurovat rozhraní UART tak, aby ve výchozím nastavení netisklo data protokolu. Dále, pokud je třeba nastavit specifické parametry pro konkrétní cíl, konfiguraci file lze přidat sdkconfig.defaults.TARGET_NAME, kde TARGET_NAME může být esp32s2, esp32c3 a tak dále. Tyto konfigurace files jsou importovány do sdkconfig během kompilace s obecnou výchozí konfigurací file Nejprve se importuje sdkconfig.defaults a poté konfigurace specifická pro cíl file, jako je sdkconfig.defaults.esp32c3. V případech, kdy existují konfigurační položky se stejným názvem, druhá konfigurace file přepíše předchozí.
4.3.4 Úvod do kompilačního skriptu
Při vývoji projektu pomocí ESP-IDF potřebují vývojáři nejen napsat zdrojový kód, ale také potřebují napsat CMakeLists.txt pro projekt a komponenty. CMakeLists.txt je text file, také známý jako kompilační skript, který definuje řadu objektů kompilace, položky konfigurace kompilace a příkazy, které vedou proces kompilace zdrojového kódu. Kompilační systém ESP-IDF v4.3.2 je založen na CMake. Kromě podpory nativních funkcí a příkazů CMake také definuje řadu vlastních funkcí, což výrazně usnadňuje psaní kompilačních skriptů.
Mezi kompilační skripty v ESP-IDF patří především skript kompilace projektu a skripty kompilace komponent. Soubor CMakeLists.txt v kořenovém adresáři projektu se nazývá skript kompilace projektu, který řídí proces kompilace celého projektu. Základní skript kompilace projektu obvykle obsahuje následující tři řádky:
1. cmake_minimum_required(VERZE 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Mezi nimi musí být cmake_minimum_required (VERZE 3.5) umístěn na prvním řádku, který se používá k označení minimálního čísla verze CMake požadovaného projektem. Novější verze CMake jsou obecně zpětně kompatibilní se staršími verzemi, takže při použití novějších příkazů CMake upravte číslo verze, abyste zajistili kompatibilitu.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) importuje předdefinované konfigurační položky a příkazy systému kompilace ESP-IDF, včetně výchozích pravidel sestavování systému kompilace popsaných v části 4.3.3. project(myProject) vytvoří samotný projekt a zadá jeho název. Tento název bude použit jako konečný výstupní binární soubor file jméno, tj. myProject.elf a myProject.bin.
Projekt může mít více komponent, včetně hlavní komponenty. Adresář nejvyšší úrovně každé součásti obsahuje soubor CMakeLists.txt file, který se nazývá skript kompilace komponent. Skripty kompilace komponent se používají hlavně pro specifikaci závislostí komponent, konfiguračních parametrů, zdrojového kódu files a včetně záhlaví files pro
Kapitola 4. Nastavení vývojového prostředí 51
sestavení. S vlastní funkcí idf_component_register ESP-IDF je minimální požadovaný kód pro skript kompilace komponenty následující:
1. idf_component_register(SRCS „src1.c“
2.
INCLUDE_DIRS „zahrnout“
3.
VYŽADUJE součást1)
Parametr SRCS poskytuje seznam zdroje files v komponentě oddělené mezerami, pokud jich je více files. Parametr INCLUDE_DIRS poskytuje seznam veřejných hlaviček file adresáře pro komponentu, které budou přidány do vyhledávací cesty include pro další komponenty, které závisí na aktuální komponentě. Parametr REQUIRES identifikuje závislosti veřejné komponenty pro aktuální komponentu. Je nutné, aby komponenty explicitně uvedly, na kterých komponentách závisí, jako je komponenta2 v závislosti na komponentě1. U hlavní komponenty, která ve výchozím nastavení závisí na všech komponentách, však lze parametr REQUIRES vynechat.
Kromě toho lze v kompilačním skriptu použít nativní příkazy CMake. Napřample, použijte příkaz set k nastavení proměnných, jako je set(VARIABLE “VALUE”).
4.3.5 Úvod do běžných příkazů
ESP-IDF používá CMake (nástroj pro konfiguraci projektu), Ninja (nástroj pro vytváření projektů) a esptool (nástroj flash) v procesu kompilace kódu. Každý nástroj hraje jinou roli v procesu kompilace, sestavování a flashování a také podporuje různé provozní příkazy. Pro usnadnění uživatelského ovládání přidává ESP-IDF jednotný front-end idf.py, který umožňuje rychlé volání výše uvedených příkazů.
Před použitím idf.py se ujistěte, že:
· Proměnná prostředí IDF_PATH ESP-IDF byla přidána do aktuálního terminálu. · Adresář pro provádění příkazu je kořenový adresář projektu, který zahrnuje
skript pro kompilaci projektu CMakeLists.txt.
Běžné příkazy idf.py jsou následující:
· idf.py –help: zobrazení seznamu příkazů a pokynů k jejich použití. · idf.py set-target : nastavení kompilace taidf.py fullcleanrget, např.
jako nahrazení esp32c3. · idf.py menuconfig: spuštění menuconfig, grafické konfigurace terminálu
nástroj, který může vybrat nebo upravit možnosti konfigurace, a výsledky konfigurace jsou uloženy v souboru sdkconfig file. · idf.py build: zahájení kompilace kódu. Střední files a konečný spustitelný program vygenerovaný kompilací se standardně uloží do adresáře sestavení projektu. Proces kompilace je přírůstkový, což znamená, že pokud pouze jeden zdroj file je upraveno, pouze upraveno file bude sestaven příště.
52 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
· idf.py clean: čištění meziproduktu files generované kompilací projektu. Celý projekt bude nucen zkompilovat v další kompilaci. Všimněte si, že konfigurace CMake a úpravy konfigurace provedené pomocí menuconfig nebudou během čištění odstraněny.
· idf.py fullclean: smazání celého adresáře sestavení, včetně všech výstupů konfigurace CMake files. Při opětovném vytváření projektu CMake nakonfiguruje projekt od začátku. Upozorňujeme, že tento příkaz rekurzivně odstraní všechny files v adresáři sestavení, takže jej používejte opatrně a konfiguraci projektu file nebudou smazány.
· idf.py flash: blikání binárního spustitelného programu file generované sestavením do cílového ESP32-C3. Volby -p a -b se používají k nastavení názvu zařízení sériového portu a přenosové rychlosti pro blikání. Pokud tyto dvě možnosti nejsou specifikovány, sériový port bude automaticky detekován a bude použita výchozí přenosová rychlost.
· idf.py monitor: zobrazení výstupu sériového portu cílového ESP32-C3. Volbu -p lze použít k zadání názvu zařízení sériového portu na straně hostitele. Během tisku přes sériový port stiskněte kombinaci kláves Ctrl+] pro ukončení monitoru.
Výše uvedené příkazy lze také podle potřeby kombinovat. Napřample, příkaz idf.py build flash monitor provede kompilaci kódu, flash a otevře monitor sériového portu v pořadí.
Můžete navštívit https://bookc3.espressif.com/build-system, kde se dozvíte více o systému kompilace ESP-IDF.
4.4 Cvičení: Sestavení Přample Program "Blink"
4.4.1 Přample Analýza
Tato sekce bude brát program Blink jako example analyzovat file podrobně strukturu a pravidla kódování reálného projektu. Program Blink implementuje efekt blikání LED a projekt je umístěn v adresáři examples/get-started/blink, který obsahuje zdroj file, konfigurace files a několik kompilačních skriptů.
Projekt chytrého světla představený v této knize je založen na tomto příkladuample program. Funkce budou postupně přidávány v pozdějších kapitolách, aby byly konečně dokončeny.
Zdrojový kód Aby bylo možné demonstrovat celý vývojový proces, byl program Blink zkopírován do esp32c3-iot-projects/device firmware/1 blink.
Adresářová struktura projektu blink files je znázorněno na obrázku 4.15.
Projekt blink obsahuje pouze jeden hlavní adresář, což je speciální komponenta, která
Kapitola 4. Nastavení vývojového prostředí 53
Obrázek 4.15. File adresářová struktura projektu blink
musí být zahrnuty, jak je popsáno v části 4.3.2. Hlavní adresář se používá hlavně k uložení implementace funkce app_main(), která je vstupním bodem do uživatelského programu. Projekt blink nezahrnuje adresář komponent, protože tento např.ampPotřebuje pouze používat součásti dodávané s ESP-IDF a nevyžaduje další součásti. Soubor CMakeLists.txt zahrnutý v projektu blink se používá k vedení procesu kompilace, zatímco Kconfig.projbuild se používá k přidávání konfiguračních položek pro tento příkladampprogram v menuconfig. Ostatní zbytečné files neovlivní kompilaci kódu, takže zde nebudou probírány. Podrobný úvod do projektu blink files je následující.
1. /*blink.c obsahuje následující záhlaví files*/
2. #include
//Záhlaví standardní knihovny C file
3. #include “freertos/freeRTOS.h” //Hlavní záhlaví FreeRTOS file
4. #include „freertos/task.h“
//FreeRTOS Hlavička úlohy file
5. #include „sdkconfig.h“
//Záhlaví konfigurace file generovaný kconfig
6. #include „driver/gpio.h“
//Záhlaví ovladače GPIO file
Zdroj file blink.c obsahuje řadu záhlaví files odpovídající funkci deklarovat-
ních. ESP-IDF obecně dodržuje pořadí zahrnutí standardní hlavičky knihovny files, FreeR-
hlavička TOS files, záhlaví řidiče files, záhlaví jiné složky files a záhlaví projektu files.
Pořadí, v jakém záhlaví files jsou zahrnuty, mohou ovlivnit konečný výsledek kompilace, tak to zkuste
dodržovat výchozí pravidla. Je třeba poznamenat, že sdkconfig.h je generován automaticky
pomocí kconfig a lze jej konfigurovat pouze pomocí příkazu idf.py menuconfig.
Přímá úprava této hlavičky file bude přepsán.
1. /*Můžete vybrat GPIO odpovídající LED v idf.py menuconfig a výsledkem úpravy menuconfig je hodnota CONFIG_BLINK
_GPIO se změní. Můžete také přímo upravit definici makra
zde a změňte CONFIG_BLINK_GPIO na pevnou hodnotu.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Nakonfigurujte IO jako výchozí funkci GPIO, povolte režim pull-up a
6.
deaktivovat režimy vstupu a výstupu*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Wireless Adventure: Komplexní průvodce IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Nastavit GPIO na výstupní režim*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Vytisknout protokol*/ printf(“Vypnutí LEDn”); /*Vypnout LED (nízká úroveň výstupu)*/ gpio_set_level(BLINK_GPIO, 0); /*Zpoždění (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“Zapnutí LEDn”); /*Zapněte LED (vysoká úroveň výstupu)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Funkce app_main() v příkladu Blinkample program slouží jako vstupní bod pro uživatelské programy. Je to jednoduchá funkce bez parametrů a návratové hodnoty. Tato funkce se volá poté, co systém dokončí inicializaci, která zahrnuje úkoly, jako je inicializace sériového portu protokolu, konfigurace jednoho/dvoujádrového jádra a konfigurace hlídacího psa.
Funkce app_main() běží v kontextu úlohy s názvem main. Velikost zásobníku a prioritu této úlohy lze upravit v menuconfig Componentconfig Common ESP-related.
Pro jednoduché úkoly, jako je blikání LED, lze veškerý potřebný kód implementovat přímo do funkce app_main(). To typicky zahrnuje inicializaci GPIO odpovídající LED a použití while(1) smyčky pro přepínání LED zapínání a vypínání. Alternativně můžete použít FreeRTOS API k vytvoření nové úlohy, která se postará o blikání LED. Jakmile je nová úloha úspěšně vytvořena, můžete ukončit funkci app_main().
Obsah souboru main/CMakeLists.txt file, který řídí proces kompilace pro hlavní komponentu, je následující:
1. idf_component_register(SRCS „blink.c“ INCLUDE_DIRS „.“ )
Mezi nimi main/CMakeLists.txt volá pouze jednu systémovou funkci kompilace, a to idf_component_register. Podobně jako u souboru CMakeLists.txt pro většinu ostatních komponent je do SRCS přidán blink.c a zdroj files přidané do SRCS budou zkompilovány. Současně by mělo být do INCLUDE_DIRS přidáno „.“, které představuje cestu, kde se nachází soubor CMakeLists.txt jako vyhledávací adresáře pro záhlaví files. Obsah souboru CMakeLists.txt je následující:
1. #Uveďte v3.5 jako nejstarší verzi CMake podporovanou aktuálním projektem 2. #Verze nižší než v3.5 musí být upgradovány před pokračováním kompilace 3. cmake_minimum_required(VERZE 3.5) 4. #Zahrňte výchozí konfiguraci CMake ESP -IDF kompilační systém
Kapitola 4. Nastavení vývojového prostředí 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Vytvořte projekt s názvem „blink“ 7. project(myProject)
Mezi nimi CMakeLists.txt v kořenovém adresáři obsahuje hlavně $ENV{IDF_ PATH}/tools/cmake/project.cmake, což je hlavní konfigurace CMake file poskytuje ESP-IDF. Používá se ke kon
Dokumenty / zdroje
![]() |
Bezdrátové dobrodružství Espressif Systems ESP32-C3 [pdfUživatelská příručka ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |