Bezdrôtové dobrodružstvo ESP32-C3
Bezdrôtové dobrodružstvo ESP32-C3
Komplexný sprievodca internetom vecí
Espressif Systems 12. júna 2023
Špecifikácie
- Produkt: ESP32-C3 Wireless Adventure
- Výrobca: Espressif Systems
- Dátum: 12. jún 2023
Návod na použitie produktu
Príprava
Pred použitím ESP32-C3 Wireless Adventure sa uistite, že áno
poznať koncepty a architektúru internetu vecí. Toto pomôže
rozumiete tomu, ako zariadenie zapadá do väčšieho ekosystému internetu vecí
a jeho potenciálne aplikácie v inteligentných domoch.
Úvod a prax IoT projektov
V tejto časti sa dozviete o typických projektoch IoT,
vrátane základných modulov pre bežné IoT zariadenia, základných modulov
klientskych aplikácií a bežných cloudových platforiem internetu vecí. Toto bude
poskytnúť vám základ pre pochopenie a vytvorenie vášho
vlastné IoT projekty.
Cvičenie: Projekt Smart Light
V tomto cvičnom projekte sa naučíte, ako vytvoriť smart
svetlo pomocou ESP32-C3 Wireless Adventure. Štruktúra projektu,
funkcie, príprava hardvéru a proces vývoja
podrobne vysvetlené.
Štruktúra projektu
Projekt pozostáva z niekoľkých komponentov, medzi ktoré patrí napr
ESP32-C3 Wireless Adventure, LED diódy, senzory a cloud
backend.
Funkcie projektu
Projekt inteligentného svetla vám umožňuje ovládať jas a
farbu LED na diaľku cez mobilnú aplikáciu resp web
rozhranie.
Príprava hardvéru
Ak sa chcete pripraviť na projekt, budete musieť zhromaždiť
potrebné hardvérové komponenty, ako napríklad ESP32-C3 Wireless
Dobrodružná doska, LED diódy, odpory a napájací zdroj.
Vývojový proces
Proces vývoja zahŕňa nastavenie vývoja
prostredia, písanie kódu na ovládanie LED diód, pripojenie k
cloud backend a testovanie funkčnosti smart
svetlo.
Úvod do ESP RainMaker
ESP RainMaker je výkonný rámec pre vývoj internetu vecí
zariadení. V tejto časti sa dozviete, čo je ESP RainMaker a
ako ho možno implementovať do vašich projektov.
Čo je ESP RainMaker?
ESP RainMaker je cloudová platforma, ktorá poskytuje sadu
nástroje a služby na vytváranie a správu zariadení internetu vecí.
Implementácia ESP RainMaker
V tejto časti sú vysvetlené jednotlivé komponenty
implementácia ESP RainMaker, vrátane reklamačnej služby,
RainMaker Agent, cloud backend a RainMaker Client.
Cvičenie: Kľúčové body pre vývoj s ESP RainMaker
V tejto časti praxe sa dozviete o kľúčových bodoch
zvážte pri vývoji s ESP RainMaker. To zahŕňa zariadenie
nárokovanie, synchronizácia údajov a správa používateľov.
Vlastnosti ESP RainMaker
ESP RainMaker ponúka rôzne funkcie pre správu používateľov, koniec
používateľov a správcov. Tieto funkcie umožňujú jednoduché zariadenie
nastavenie, diaľkové ovládanie a monitorovanie.
Nastavenie vývojového prostredia
Táto sekcia poskytuje koniecview ESP-IDF (Espressif IoT
Development Framework), čo je oficiálny rozvojový rámec
pre zariadenia založené na ESP32. Vysvetľuje rôzne verzie
ESP-IDF a ako nastaviť vývojové prostredie.
Vývoj hardvéru a ovládačov
Hardvérový dizajn produktov Smart Light založených na ESP32-C3
Táto časť sa zameriava na hardvérový dizajn inteligentného svetla
produkty založené na ESP32-C3 Wireless Adventure. Pokrýva
vlastnosti a zloženie produktov smart light, ako aj
hardvérový dizajn základného systému ESP32-C3.
Vlastnosti a zloženie produktov Smart Light
Táto podsekcia vysvetľuje funkcie a komponenty, ktoré tvoria
up smart light produkty. Hovorí o rôznych funkciách
a úvahy o dizajne pri vytváraní inteligentných svetiel.
Hardvérový dizajn základného systému ESP32-C3
Hardvérový dizajn základného systému ESP32-C3 zahŕňa napájanie
napájanie, sekvencia zapnutia, reset systému, SPI flash, zdroj hodín,
a úvahy o RF a anténe. Táto podsekcia poskytuje
podrobné informácie o týchto aspektoch.
FAQ
Otázka: Čo je ESP RainMaker?
Odpoveď: ESP RainMaker je cloudová platforma, ktorá poskytuje nástroje
a služby pre budovanie a správu zariadení internetu vecí. Zjednodušuje to
vývojový proces a umožňuje jednoduché nastavenie zariadenia na diaľku
kontrola a monitorovanie.
Otázka: Ako môžem nastaviť vývojové prostredie pre?
ESP32-C3?
Odpoveď: Na nastavenie vývojového prostredia pre ESP32-C3 potrebujete
nainštalovať ESP-IDF (Espressif IoT Development Framework) a
nakonfigurujte ho podľa poskytnutých pokynov. ESP-IDF je
oficiálny vývojový rámec pre zariadenia založené na ESP32.
Otázka: Aké sú funkcie ESP RainMaker?
Odpoveď: ESP RainMaker ponúka rôzne funkcie, vrátane používateľských
správa, funkcie koncového používateľa a funkcie správcu. Správa užívateľov
umožňuje jednoduchú reklamáciu zariadenia a synchronizáciu údajov. Koncový užívateľ
funkcie umožňujú diaľkové ovládanie zariadení cez mobilnú aplikáciu resp
web rozhranie. Funkcie správcu poskytujú nástroje na monitorovanie zariadenia
a manažment.
Bezdrôtové dobrodružstvo ESP32-C3
Komplexný sprievodca internetom vecí
Espressif Systems 12. júna 2023
Obsah
I Príprava
1
1 Úvod do IoT
3
1.1 Architektúra internetu vecí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Aplikácia IoT v inteligentných domácnostiach . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Úvod a prax projektov internetu vecí
9
2.1 Úvod do typických projektov internetu vecí . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Základné moduly pre bežné IoT zariadenia . . . . . . . . . . . . . . . . . 9
2.1.2 Základné moduly klientskych aplikácií . . . . . . . . . . . . . . . . . . . 10
2.1.3 Úvod do bežných IoT cloudových platforiem . . . . . . . . . . . . . . 11
2.2 Cvičenie: Projekt Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Štruktúra projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Funkcie projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Príprava hardvéru . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Proces vývoja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Úvod do ESP RainMaker
19
3.1 Čo je ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Implementácia ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Reklamácia služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Agent RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Klient RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Cvičenie: Kľúčové body pre vývoj s ESP RainMaker . . . . . . . . . . . . 25
3.4 Vlastnosti ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Správa používateľov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Funkcie koncového používateľa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Funkcie správcu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Nastavenie vývojového prostredia
31
4.1 ESP-IDF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Verzie ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 Pracovný postup ESP-IDF Git . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Výber vhodnej verzie . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Koniecview z adresára ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 Nastavenie vývojového prostredia ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Nastavenie vývojového prostredia ESP-IDF v systéme Linux . . . . . . . . 38 4.2.2 Nastavenie vývojového prostredia ESP-IDF v systéme Windows . . . . . . 40 4.2.3 Nastavenie vývojového prostredia ESP-IDF v systéme Mac . . . . . . . . . 45 4.2.4 Inštalácia VS kódu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Úvod do vývojových prostredí tretích strán . . . . . . . . 46 4.3 Systém kompilácie ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Základné pojmy kompilačného systému . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Štruktúra . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Predvolené pravidlá zostavovania kompilačného systému . . . . . . . . . . . . . 50 4.3.4 Úvod do kompilačného skriptu . . . . . . . . . . . . . . . . . . 51 4.3.5 Úvod do bežných príkazov . . . . . . . . . . . . . . . . . . . 52 4.4 Cvičenie: Zostavenie Prample Program „Blikanie“ . . . . . . . . . . . . . . . . . . 53 4.4.1 Prample Analýza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Kompilácia programu Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Blikanie programu Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analýza protokolu sériového portu programu Blink . . . . . . . . . . . . . . 60 4.5 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Vývoj hardvéru a ovládačov
65
5 Hardvérový dizajn produktov Smart Light založených na ESP32-C3
67
5.1 Vlastnosti a zloženie produktov Smart Light . . . . . . . . . . . . . . . 67
5.2 Hardvérový dizajn základného systému ESP32-C3 . . . . . . . . . . . . . . . . . . . 70
5.2.1 Napájanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Sekvencia zapnutia a reset systému . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Zdroj hodín . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF a anténa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Špendlíky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 Ovládač GPIO a PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Cvičenie: Vytvorenie systému inteligentného osvetlenia s ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Výber modulov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Konfigurácia GPIO signálov PWM . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Sťahovanie firmvéru a ladiace rozhranie . . . . . . . . . . . . 82
5.3.4 Pokyny pre návrh RF . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Pokyny pre návrh napájacieho zdroja . . . . . . . . . . . . . . . . . . . 86 5.4 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Vývoj ovládačov
87
6.1 Proces vývoja ovládača . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Periférne aplikácie ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Základy ovládača LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Farebné priestory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Ovládač LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Stmievanie LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Úvod do PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Vývoj ovládača stmievania LED . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Neprchavé úložisko (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM ovládač (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Programovanie LED PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Cvičenie: Pridávanie ovládačov do projektu Smart Light . . . . . . . . . . . . . . . . . 103
6.5.1 Ovládač tlačidiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Ovládač stmievania LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Bezdrôtová komunikácia a ovládanie
109
7 Konfigurácia a pripojenie 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 Koncepty Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Pripojenie Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Základy Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Úvod do Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Koncepty Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Pripojenie Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Konfigurácia siete Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Sprievodca konfiguráciou siete Wi-Fi . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Iné metódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Programovanie Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Komponenty Wi-Fi v ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Cvičenie: Wi-Fi pripojenie . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Cvičenie: Inteligentné pripojenie Wi-Fi . . . . . . . . . . . . . . . . . . . . . 145
7.5 Prax: Konfigurácia Wi-Fi v projekte Smart Light . . . . . . . . . . . . . . . 156 7.5.1 Pripojenie Wi-Fi v projekte Smart Light . . . . . . . . . . . . . . . . . 156 7.5.2 Konfigurácia Smart Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Miestne ovládanie
159
8.1 Úvod do lokálneho ovládania . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Aplikácia miestnej kontroly . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages miestnej kontroly . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Objavovanie ovládaných zariadení prostredníctvom smartfónov . . . . . . . . . . 161
8.1.4 Dátová komunikácia medzi smartfónmi a zariadeniami . . . . . . . . 162
8.2 Spoločné metódy lokálneho zisťovania . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Vysielanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Porovnanie Broadcast a Multicast . . . . . . . . . . . . . . 176
8.2.4 Multicast Application Protocol mDNS pre lokálne vyhľadávanie . . . . . . . . 176
8.3 Spoločné komunikačné protokoly pre lokálne dáta . . . . . . . . . . . . . . . 179
8.3.1 Protokol riadenia prenosu (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 HyperText Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Používateľ Datagram protokol (UDP). . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protokol obmedzenej aplikácie (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Protokol Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Súhrn protokolov dátovej komunikácie . . . . . . . . . . . . . . . 203
8.4 Záruka bezpečnosti údajov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Úvod do zabezpečenia transportnej vrstvy (TLS) . . . . . . . . . . . . . 207
8.4.2 Úvod do Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Cvičenie: Lokálne ovládanie v projekte Smart Light . . . . . . . . . . . . . . . . . . 217
8.5.1 Vytvorenie servera lokálneho ovládania založeného na Wi-Fi . . . . . . . . . . . . . . . 217
8.5.2 Overenie funkčnosti lokálneho ovládania pomocou skriptov . . . . . . . . . . . 221
8.5.3 Vytvorenie servera lokálneho ovládania založeného na Bluetooth . . . . . . . . . . . . 222
8.6 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Cloud Control
225
9.1 Úvod do diaľkového ovládania . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Protokoly dátovej komunikácie v cloude . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 Úvod do MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Zásady MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Formát správy MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Porovnanie protokolov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Nastavenie MQTT Broker v systémoch Linux a Windows . . . . . . . . . . . . 233 9.2.6 Nastavenie klienta MQTT na základe ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Zabezpečenie bezpečnosti dát MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Význam a funkcia certifikátov . . . . . . . . . . . . . . . . . . . 237 9.3.2 Lokálne generovanie certifikátov . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Konfigurácia MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Konfigurácia klienta MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Cvičenie: Diaľkové ovládanie cez ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Základy ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Komunikačný protokol uzla a cloudového backendu . . . . . . . . . . . 244 9.4.3 Komunikácia medzi Klientom a Cloud Backend . . . . . . . . . . . 249 9.4.4 Roly používateľov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Základné služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Prample . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Integrácie aplikácie RainMaker a tretích strán . . . . . . . . . . . . . . . 262 9.5 Súhrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Vývoj aplikácií pre smartfóny
269
10.1 Úvod do vývoja aplikácií pre smartfóny . . . . . . . . . . . . . . . . . . 269
10.1.1 Koniecview vývoja aplikácií pre smartfóny. . . . . . . . . . . . . . . 270
10.1.2 Štruktúra projektu Android . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Štruktúra projektu iOS . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Životný cyklus aktivity Android . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Životný cyklus systému iOS ViewOvládač . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Vytvorenie nového projektu aplikácie pre smartfóny . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Príprava na vývoj systému Android . . . . . . . . . . . . . . . . . . . 275
10.2.2 Vytvorenie nového projektu Android . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Pridanie závislostí pre MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Žiadosť o povolenie v systéme Android . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Príprava na vývoj iOS . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Vytvorenie nového projektu iOS . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Pridanie závislostí pre MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Žiadosť o povolenie v systéme iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analýza funkčných požiadaviek aplikácie . . . . . . . . . . . . . . . . . . 281
10.3.1 Analýza funkčných požiadaviek projektu . . . . . . . . . . . . 282
10.3.2 Analýza požiadaviek na správu používateľov . . . . . . . . . . . . . . . 282 10.3.3 Analýza poskytovania zariadení a požiadaviek na viazanie . . . . . . . 283 10.3.4 Analýza požiadaviek na diaľkové ovládanie . . . . . . . . . . . . . . . . 283 10.3.5 Analýza požiadaviek na plánovanie . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analýza požiadaviek používateľského centra . . . . . . . . . . . . . . . . . . 285 10.4 Vývoj správy používateľov . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Úvod do rozhraní API RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Začatie komunikácie cez smartfón . . . . . . . . . . . . . . . . 286 10.4.3 Registrácia účtu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Prihlásenie účtu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Vývoj poskytovania zariadení . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Skenovacie zariadenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Pripojenie zariadení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generovanie tajných kľúčov . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Získanie ID uzla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Zabezpečovacie zariadenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Vývoj riadenia zariadení . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Naviazanie zariadení na cloudové účty . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Získanie zoznamu zariadení . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Získanie stavu zariadenia . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Zmena stavu zariadenia . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Rozvoj plánovacieho a užívateľského centra . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementácia funkcie plánovania . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementácia používateľského centra . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Viac cloudových API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Súhrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Aktualizácia firmvéru a správa verzií
321
11.1 Aktualizácia firmvéru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Koniecview tabuľky rozdelenia . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Proces zavádzania firmvéru . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Koniecview mechanizmu OTA. . . . . . . . . . . . . . . . . . . . . 326
11.2 Správa verzií firmvéru . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Označenie firmvéru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Vrátenie späť a Anti-Rollback . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Cvičenie: Over-the-air (OTA) Prample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Aktualizácia firmvéru prostredníctvom lokálneho hostiteľa . . . . . . . . . . . . . . . . . 332
11.3.2 Aktualizácia firmvéru prostredníctvom ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimalizácia a hromadná výroba
343
12 Správa napájania a optimalizácia nízkej spotreby
345
12.1 Správa napájania ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dynamické frekvenčné škálovanie . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Konfigurácia správy napájania . . . . . . . . . . . . . . . . . . . . 348
12.2 Režim nízkej spotreby ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Režim spánku modemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Režim ľahkého spánku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Režim hlbokého spánku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Spotreba prúdu v rôznych režimoch výkonu . . . . . . . . . . . . . 358
12.3 Správa napájania a ladenie pri nízkej spotrebe . . . . . . . . . . . . . . . . . 359
12.3.1 Ladenie protokolov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Ladenie GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Cvičenie: Správa napájania v projekte Smart Light . . . . . . . . . . . . . . . 363
12.4.1 Konfigurácia funkcie správy napájania . . . . . . . . . . . . . . . . . 364
12.4.2 Používanie zámkov správy napájania . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Overenie spotreby energie . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Rozšírené funkcie zabezpečenia zariadenia
369
13.1 Koniecview zabezpečenia údajov zariadení IoT. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Prečo zabezpečiť údaje zariadenia IoT? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Základné požiadavky na bezpečnosť údajov zariadení IoT . . . . . . . . . . . . 371
13.2 Ochrana integrity údajov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Úvod do metódy overovania integrity . . . . . . . . . . . . . . 372
13.2.2 Overenie integrity údajov firmvéru . . . . . . . . . . . . . . . . . . 373
13.2.3 Prample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Ochrana dôvernosti údajov . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Úvod do šifrovania údajov . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Úvod do schémy šifrovania Flash . . . . . . . . . . . . . . . . . 376
13.3.3 Úložisko šifrovacieho kľúča Flash . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Pracovný režim šifrovania Flash . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Proces šifrovania Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Úvod do šifrovania NVS . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Prampsúborov Flash Encryption a NVS Encryption . . . . . . . . . . . 384
13.4 Ochrana zákonnosti údajov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Úvod do digitálneho podpisu . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Koniecview programu Secure Boot Scheme . . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Úvod do softvéru Secure Boot . . . . . . . . . . . . . . . . . . . 388 13.4.4 Úvod do hardvérového bezpečného zavádzania . . . . . . . . . . . . . . . . . . 390 13.4.5 Pramples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Prax: Bezpečnostné prvky v hromadnej výrobe . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash šifrovanie a bezpečné spustenie . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Povolenie šifrovania Flash a bezpečného spustenia pomocou nástrojov Batch Flash Tools . . 397 13.5.3 Povolenie šifrovania Flash a bezpečného spustenia v projekte Smart Light . . . 398 13.6 Súhrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Napaľovanie a testovanie firmvéru pre hromadnú výrobu
399
14.1 Napaľovanie firmvéru v hromadnej výrobe . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definovanie dátových oddielov . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Napaľovanie firmvéru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Testovanie hromadnej výroby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Cvičenie: Dáta hromadnej výroby v projekte Smart Light . . . . . . . . . . . . . 404
14.4 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Platforma vzdialeného monitorovania
405
15.1 Úvod do ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Začíname s ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Začíname s ESP Insights v projekte esp-insights . . . . . . 409
15.2.2 Beh naprampv projekte esp-insights Project . . . . . . . . . . . . . . . 411
15.2.3 Hlásenie informácií Coredump . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Prispôsobenie záznamov záujmu . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Hlásenie dôvodu reštartu . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Vykazovanie vlastných metrík . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Cvičenie: Používanie ESP Insights v projekte Smart Light . . . . . . . . . . . . . . . 416
15.4 Zhrnutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Úvod
ESP32-C3 je jednojadrový Wi-Fi a Bluetooth 5 (LE) mikrokontrolér SoC, založený na open-source architektúre RISC-V. Vytvára správnu rovnováhu medzi výkonom, I/O schopnosťami a bezpečnosťou, čím ponúka optimálne a nákladovo efektívne riešenie pre pripojené zariadenia. Táto kniha od Espressif vás zavedie na zaujímavú cestu AIoT, ktorá vám ukáže rôzne aplikácie rodiny ESP32-C3, od základov vývoja projektov internetu vecí a nastavenia prostredia až po praktické príklady.amples. Prvé štyri kapitoly hovoria o IoT, ESP RainMaker a ESP-IDF. Kapitola 5 a 6 stručne popisuje dizajn hardvéru a vývoj ovládačov. Ako budete postupovať, zistíte, ako nakonfigurovať svoj projekt prostredníctvom sietí Wi-Fi a mobilných aplikácií. Nakoniec sa naučíte optimalizovať svoj projekt a zaviesť ho do sériovej výroby.
Ak ste inžinier v príbuzných odboroch, softvérový architekt, učiteľ, študent alebo ktokoľvek, kto sa zaujíma o IoT, táto kniha je pre vás.
Kód si môžete stiahnuť naprample použité v tejto knihe zo stránky Espressif na GitHub. Ak chcete získať najnovšie informácie o vývoji internetu vecí, sledujte náš oficiálny účet.
Predslov
Informatizujúci svet
Internet vecí (IoT) na vlne internetu zažil svoj veľký debut a stal sa novým typom infraštruktúry v digitálnej ekonomike. Aby sa technológia priblížila verejnosti, Espressif Systems pracuje na vízii, že vývojári zo všetkých oblastí života môžu pomocou internetu vecí vyriešiť niektoré z najpálčivejších problémov našej doby. Svet „inteligentnej siete všetkých vecí“ je to, čo očakávame od budúcnosti.
Dizajn našich vlastných čipov je kritickou súčasťou tejto vízie. Má to byť maratón, ktorý si vyžaduje neustále objavovanie technologických hraníc. Od „Game Changer“ ESP8266 po sériu ESP32 integrujúcu Wi-Fi a Bluetoothr (LE) konektivitu, po ktorej nasleduje ESP32-S3 s akceleráciou AI, Espressif nikdy neprestáva skúmať a vyvíjať produkty pre AIoT riešenia. S naším softvérom s otvoreným zdrojovým kódom, ako je IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF a Device Connectivity Platform ESP RainMaker, sme vytvorili nezávislý rámec pre vytváranie aplikácií AIoT.
K júlu 2022 kumulatívne dodávky IoT čipsetov Espressif prekročili 800 miliónov, čo vedie na trhu Wi-Fi MCU a napája obrovské množstvo pripojených zariadení po celom svete. Snaha o dokonalosť robí z každého produktu Espressif veľký hit pre jeho vysokú úroveň integrácie a nákladovú efektívnosť. Vydanie ESP32-C3 predstavuje významný míľnik technológie vyvinutej spoločnosťou Espressif. Ide o jednojadrový 32-bitový MCU založený na RISC-V so 400 KB SRAM, ktorý môže bežať na frekvencii 160 MHz. Má integrovanú 2.4 GHz Wi-Fi a Bluetooth 5 (LE) s podporou dlhého dosahu. Dosahuje jemnú rovnováhu výkonu, I/O schopností a bezpečnosti, čím ponúka optimálne a cenovo výhodné riešenie pre pripojené zariadenia. Táto kniha, založená na tak výkonnom ESP32-C3, je určená na to, aby pomohla čitateľom pochopiť znalosti súvisiace s internetom vecí s podrobnými ilustráciami a praktickými príkladmi.amples.
Prečo sme napísali túto knihu?
Espressif Systems je viac než len polovodičová spoločnosť. Je tiež platformou IoT spoločnosti, ktorá sa vždy snaží o prelomy a inovácie v oblasti technológií. Spoločnosť Espressif zároveň vytvorila otvorený zdroj a zdieľala svoj vlastný vyvinutý operačný systém a softvérový rámec s komunitou, čím vytvorila jedinečný ekosystém. Inžinieri, tvorcovia a technologickí nadšenci aktívne vyvíjajú nové softvérové aplikácie založené na produktoch Espressif, voľne komunikujú a zdieľajú svoje skúsenosti. Fascinujúce nápady vývojárov môžete neustále vidieť na rôznych platformách, ako sú YouTube a GitHub. Popularita produktov Espressif podnietila rastúci počet autorov, ktorí vytvorili viac ako 100 kníh založených na čipsetoch Espressif vo viac ako desiatich jazykoch vrátane angličtiny, čínštiny, nemčiny, francúzštiny a japončiny.
Je to podpora a dôvera komunitných partnerov, čo podporuje neustálu inováciu Espressif. „Snažíme sa, aby naše čipy, operačné systémy, rámce, riešenia, cloud, obchodné praktiky, nástroje, dokumentácia, spisy, nápady atď. boli stále relevantnejšie pre odpovede, ktoré ľudia potrebujú v najnaliehavejších problémoch súčasného života. Toto je Espressifova najvyššia ambícia a morálny kompas.“ povedal pán Teo Swee Ann, zakladateľ a generálny riaditeľ spoločnosti Espressif.
Espressif si váži čítanie a nápady. Keďže neustála modernizácia technológie internetu vecí kladie na inžinierov vyššie požiadavky, ako môžeme pomôcť viacerým ľuďom rýchlo zvládnuť čipy internetu vecí, operačné systémy, softvérové rámce, aplikačné schémy a produkty cloudových služieb? Ako sa hovorí, je lepšie naučiť človeka loviť, ako mu dávať ryby. Na brainstormingu nás napadlo, že by sme mohli napísať knihu, ktorá by systematicky utriedila kľúčové poznatky z vývoja internetu vecí. Trafili sme do toho, rýchlo sme zhromaždili skupinu starších inžinierov a spojili skúsenosti technického tímu v oblasti vstavaného programovania, vývoja hardvéru a softvéru internetu vecí, čo všetko prispelo k vydaniu tejto knihy. V procese písania sme sa snažili čo najlepšie byť objektívni a spravodliví, zbavení zámotkov a pomocou výstižných výrazov vypovedať o zložitosti a šarme internetu vecí. Starostlivo sme zhrnuli bežné otázky, odkázali na spätnú väzbu a návrhy komunity, aby sme jasne odpovedali na otázky, ktoré sa vyskytli v procese vývoja, a poskytli praktické usmernenia pre rozvoj internetu vecí pre príslušných technikov a osoby s rozhodovacou právomocou.
Štruktúra knihy
Táto kniha je zameraná na inžinierov a krok za krokom vysvetľuje potrebné znalosti pre vývoj projektov internetu vecí. Skladá sa zo štyroch častí, a to takto:
· Príprava (kapitola 1): Táto časť predstavuje architektúru internetu vecí, typický projektový rámec internetu vecí, cloudovú platformu ESP RainMakerr a vývojové prostredie ESP-IDF s cieľom položiť pevný základ pre vývoj projektov internetu vecí.
· Vývoj hardvéru a ovládačov (kapitola 5): Na základe čipsetu ESP6-C32 táto časť rozpracúva minimálny hardvérový systém a vývoj ovládačov a implementuje riadenie stmievania, stupňovania farieb a bezdrôtovú komunikáciu.
· Bezdrôtová komunikácia a ovládanie (kapitola 7): Táto časť vysvetľuje schému inteligentnej konfigurácie Wi-Fi založenú na čipe ESP11-C32, lokálnych a cloudových riadiacich protokoloch a lokálnom a vzdialenom ovládaní zariadení. Poskytuje tiež schémy na vývoj aplikácií pre smartfóny, aktualizáciu firmvéru a správu verzií.
· Optimalizácia a hromadná výroba (kapitola 12-15): Táto časť je určená pre pokročilé aplikácie internetu vecí so zameraním na optimalizáciu produktov v oblasti správy napájania, optimalizácie nízkej spotreby a zvýšenej bezpečnosti. Predstavuje tiež napaľovanie a testovanie firmvéru v hromadnej výrobe a ako diagnostikovať stav chodu a protokoly firmvéru zariadenia prostredníctvom platformy vzdialeného monitorovania ESP Insights.
O zdrojovom kóde
Čitatelia môžu spustiť example programov v tejto knihe, buď manuálnym zadaním kódu alebo použitím zdrojového kódu, ktorý je priložený ku knihe. Dôraz kladieme na spojenie teórie a praxe, a preto takmer v každej kapitole nastavujeme časť Prax vychádzajúca z projektu Smart Light. Všetky kódy sú open source. Čitatelia si môžu stiahnuť zdrojový kód a diskutovať o ňom v sekciách súvisiacich s touto knihou na GitHub a našom oficiálnom fóre esp32.com. Na otvorený zdrojový kód tejto knihy sa vzťahujú podmienky licencie Apache 2.0.
Poznámka autora
Túto knihu oficiálne vytvorila spoločnosť Espressif Systems a napísali ju vedúci inžinieri spoločnosti. Je vhodný pre manažérov a pracovníkov výskumu a vývoja v odvetviach súvisiacich s IoT, učiteľov a študentov príbuzných odborov a nadšencov v oblasti internetu vecí. Dúfame, že táto kniha môže slúžiť ako pracovný manuál, referencia a nočná knižka, aby ste boli ako dobrý učiteľ a priateľ.
Pri zostavovaní tejto knihy sme sa odvolávali na niektoré relevantné výsledky výskumu odborníkov, vedcov a technikov doma aj v zahraničí a snažili sme sa ich citovať podľa akademických noriem. Je však nevyhnutné, aby sa vyskytli nejaké opomenutia, a preto by sme tu chceli vyjadriť hlbokú úctu a poďakovanie všetkým príslušným autorom. Okrem toho sme citovali informácie z internetu, preto by sme chceli poďakovať pôvodným autorom a vydavateľom a ospravedlniť sa, že nemôžeme uviesť zdroj každej informácie.
Aby sme vytvorili knihu vysokej kvality, zorganizovali sme kolá interných diskusií a poučili sme sa z návrhov a spätnej väzby čitateľov skúšobnej verzie a redaktorov vydavateľstva. Na tomto mieste by sme sa Vám chceli ešte raz poďakovať za Vašu pomoc, ktorá prispela k tomuto úspešnému dielu.
Posledná, ale najdôležitejšia vďaka patrí všetkým v Espressif, ktorí tak tvrdo pracovali na zrode a popularizácii našich produktov.
Vývoj projektov internetu vecí zahŕňa široké spektrum znalostí. Obmedzené na dĺžku knihy, ako aj úroveň a skúsenosti autora, vynechávkam sa nedá vyhnúť. Preto prosíme odborníkov a čitateľov, aby naše chyby kritizovali a opravili. Ak máte nejaké návrhy na túto knihu, kontaktujte nás na adrese book@espressif.com. Tešíme sa na vašu spätnú väzbu.
Ako používať túto knihu?
Kód projektov v tejto knihe je otvorený. Môžete si ho stiahnuť z nášho úložiska GitHub a podeliť sa o svoje myšlienky a otázky na našom oficiálnom fóre. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Fórum: https://www.esp32.com/bookc3 V celej knihe budú časti zvýraznené, ako je uvedené nižšie.
Zdrojový kód V tejto knihe kladieme dôraz na spojenie teórie a praxe, a preto takmer v každej kapitole uvádzame časť Prax o projekte Smart Light. Zodpovedajúce kroky a zdrojová stránka budú označené medzi dvoma riadkami začínajúcimi na tag Zdrojový kód.
POZNÁMKA/TIPY Tu môžete nájsť dôležité informácie a pripomenutia pre úspešné ladenie vášho programu. Budú označené medzi dvoma hrubými čiarami začínajúcimi na tag POZNÁMKA alebo TIPY.
Väčšina príkazov v tejto knihe sa vykonáva v systéme Linux, pričom sa zobrazí znak „$“. Ak príkaz vyžaduje na vykonanie oprávnenia superužívateľa, výzva sa nahradí znakom „#“. Príkazový riadok na systémoch Mac je „%“, ako sa používa v časti 4.2.3 Inštalácia ESP-IDF na Mac.
Hlavný text v tejto knihe bude vytlačený v Charte, zatiaľ čo kód exampsúbory, komponenty, funkcie, premenné, kód file mená, kódové adresáre a reťazce budú v Courier New.
Príkazy alebo texty, ktoré musí zadať používateľ, a príkazy, ktoré možno zadať stlačením klávesu „Enter“, budú vytlačené tučným písmom Courier New. Protokoly a bloky kódov budú prezentované vo svetlomodrých rámčekoch.
Example:
Po druhé, použite esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py na vygenerovanie binárneho oddielu NVS file na hostiteľovi vývoja pomocou nasledujúceho príkazu:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –veľkosť NVS PARTITION SIZE
Kapitola 1
Úvod
do
IoT
Na konci 20. storočia, s rozmachom počítačových sietí a komunikačných technológií, sa internet rýchlo integroval do života ľudí. Ako internetová technológia neustále dozrieva, zrodila sa myšlienka internetu vecí (IoT). Doslova IoT znamená internet, kde sú veci prepojené. Zatiaľ čo pôvodný internet prekračuje hranice priestoru a času a zužuje vzdialenosť medzi „osobou a osobou“, IoT robí z „vecí“ dôležitého účastníka, čím „ľudí“ a „veci“ zbližuje. IoT sa má v dohľadnej budúcnosti stať hybnou silou informačného priemyslu.
Takže, čo je internet vecí?
Je ťažké presne definovať internet vecí, pretože jeho význam a rozsah sa neustále vyvíja. V roku 1995 Bill Gates prvýkrát predstavil myšlienku internetu vecí vo svojej knihe Cesta vpred. Jednoducho povedané, IoT umožňuje objektom vymieňať si informácie medzi sebou prostredníctvom internetu. Jeho konečným cieľom je vytvoriť „internet všetkého“. Toto je raná interpretácia internetu vecí, ako aj fantázia budúcej technológie. O tridsať rokov neskôr, s rýchlym rozvojom ekonomiky a technológií, sa fantázia stáva skutočnosťou. Od inteligentných zariadení, inteligentných domácností, inteligentných miest, internetu vozidiel a nositeľných zariadení až po „metaverzu“ podporovanú technológiami internetu vecí sa neustále objavujú nové koncepty. V tejto kapitole začneme vysvetlením architektúry internetu vecí a potom predstavíme najbežnejšiu aplikáciu internetu vecí, inteligentnú domácnosť, aby sme vám pomohli lepšie porozumieť internetu vecí.
1.1 Architektúra internetu vecí
Internet vecí zahŕňa viacero technológií, ktoré majú rôzne aplikačné potreby a formy v rôznych odvetviach. Na vyriešenie štruktúry, kľúčových technológií a aplikačných charakteristík IoT je potrebné vytvoriť jednotnú architektúru a štandardný technický systém. V tejto knihe je architektúra internetu vecí jednoducho rozdelená do štyroch vrstiev: vrstva vnímania a riadenia, sieťová vrstva, platformová vrstva a aplikačná vrstva.
Vrstva vnímania a kontroly Ako najzákladnejší prvok architektúry internetu vecí je vrstva vnímania a kontroly jadrom na realizáciu komplexného snímania internetu vecí. Jeho hlavnou funkciou je zhromažďovať, identifikovať a kontrolovať informácie. Pozostáva z rôznych zariadení so schopnosťou vnímania,
3
identifikáciu, kontrolu a vykonávanie a je zodpovedný za získavanie a analýzu údajov, ako sú vlastnosti materiálu, trendy správania a stav zariadenia. Týmto spôsobom internet vecí rozpozná skutočný fyzický svet. Okrem toho je vrstva schopná ovládať aj stav zariadenia.
Najbežnejšími zariadeniami tejto vrstvy sú rôzne senzory, ktoré zohrávajú dôležitú úlohu pri zbere a identifikácii informácií. Senzory sú ako ľudské zmyslové orgány, ako napríklad fotosenzitívne senzory rovnajúce sa zraku, akustické senzory sluchu, plynové senzory čuchu a senzory citlivé na tlak a teplotu na dotyk. So všetkými týmito „zmyslovými orgánmi“ sa predmety stávajú „živými“ a schopnými inteligentného vnímania, rozpoznávania a manipulácie s fyzickým svetom.
Sieťová vrstva Hlavnou funkciou sieťovej vrstvy je prenášať informácie, vrátane údajov získaných z vnímacej a riadiacej vrstvy do určeného cieľa, ako aj príkazov vydaných z aplikačnej vrstvy späť do vnímacej a riadiacej vrstvy. Slúži ako dôležitý komunikačný most spájajúci rôzne vrstvy systému internetu vecí. Nastavenie základného modelu internetu vecí zahŕňa dva kroky na integráciu objektov do siete: prístup na internet a prenos cez internet.
Prístup k internetu Internet umožňuje prepojenie medzi človekom a človekom, ale nezahŕňa veci do veľkej rodiny. Pred príchodom internetu vecí väčšina vecí nebola „sieťovateľná“. Vďaka neustálemu vývoju technológií sa IoT darí spájať veci s internetom, a tak realizovať prepojenie medzi „ľuďmi a vecami“ a „vecami a vecami“. Existujú dva bežné spôsoby implementácie internetového pripojenia: káblový prístup k sieti a bezdrôtový prístup k sieti.
Metódy káblového prístupu k sieti zahŕňajú Ethernet, sériovú komunikáciu (napr. RS-232, RS-485) a USB, pričom prístup k bezdrôtovej sieti závisí od bezdrôtovej komunikácie, ktorú možno ďalej rozdeliť na bezdrôtovú komunikáciu s krátkym dosahom a bezdrôtovú komunikáciu na veľké vzdialenosti.
Bezdrôtová komunikácia krátkeho dosahu zahŕňa ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) a rádiofrekvenčnú identifikáciu (RFID). Bezdrôtová komunikácia na veľké vzdialenosti zahŕňa vylepšenú komunikáciu typu stroja (eMTC), LoRa, úzkopásmový internet vecí (NB-IoT), 2G, 3G, 4G, 5G atď.
Prenos cez internet Rôzne spôsoby prístupu na internet vedú k zodpovedajúcemu fyzickému prenosu dát. Ďalšou vecou je rozhodnúť sa, ktorý komunikačný protokol použiť na prenos údajov. V porovnaní s internetovými terminálmi má väčšina IoT terminálov v súčasnosti menej
4 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
dostupné zdroje, ako je výkon spracovania, kapacita úložiska, rýchlosť siete atď., preto je potrebné zvoliť komunikačný protokol, ktorý v aplikáciách IoT zaberá menej zdrojov. Existujú dva komunikačné protokoly, ktoré sú dnes široko používané: Message Queuing Telemetry Transport (MQTT) a Constrained Application Protocol (CoAP).
Vrstva platformy Vrstva platformy sa týka najmä cloudových platforiem internetu vecí. Keď sú všetky terminály internetu vecí prepojené, ich údaje sa musia agregovať na cloudovej platforme internetu vecí, aby sa vypočítali a uložili. Platformová vrstva podporuje hlavne aplikácie internetu vecí pri uľahčovaní prístupu a správy masívnych zariadení. Spája terminály internetu vecí s cloudovou platformou, zhromažďuje údaje o termináloch a vydáva príkazy terminálom, aby bolo možné implementovať diaľkové ovládanie. Ako sprostredkovateľská služba na priraďovanie zariadení k priemyselným aplikáciám hrá platformová vrstva spojovaciu úlohu v celej architektúre internetu vecí, nesie abstraktnú obchodnú logiku a štandardizovaný model základných údajov, ktorý dokáže nielen realizovať rýchly prístup k zariadeniam, ale poskytuje aj výkonné modulárne funkcie. na splnenie rôznych potrieb v scenároch priemyselných aplikácií. Platformová vrstva zahŕňa najmä funkčné moduly, ako sú prístup k zariadeniam, správa zariadení, správa bezpečnosti, komunikácia správ, monitorovanie prevádzky a údržby a dátové aplikácie.
· Prístup k zariadeniam, realizácia prepojenia a komunikácie medzi terminálmi a cloudovými platformami IoT.
· Správa zariadenia vrátane funkcií, ako je vytváranie zariadení, údržba zariadenia, konverzia údajov, synchronizácia údajov a distribúcia zariadení.
· Riadenie bezpečnosti, zabezpečenie bezpečnosti prenosu dát IoT z pohľadu bezpečnostnej autentifikácie a bezpečnosti komunikácie.
· Komunikácia správ vrátane troch smerov prenosu, to znamená, že terminál odosiela údaje do cloudovej platformy internetu vecí, cloudová platforma internetu vecí posiela údaje na stranu servera alebo na iné cloudové platformy internetu vecí a strana servera vzdialene ovláda zariadenia internetu vecí.
· Monitorovanie O&M vrátane monitorovania a diagnostiky, aktualizácie firmvéru, online ladenia, logovacích služieb atď.
· Dátové aplikácie zahŕňajúce ukladanie, analýzu a aplikáciu údajov.
Aplikačná vrstva Aplikačná vrstva využíva údaje z vrstvy platformy na riadenie aplikácie, ich filtrovanie a spracovanie pomocou nástrojov, ako sú databázy a analytický softvér. Výsledné údaje možno použiť pre aplikácie internetu vecí v reálnom svete, ako je inteligentná zdravotná starostlivosť, inteligentné poľnohospodárstvo, inteligentné domácnosti a inteligentné mestá.
Samozrejme, architektúru internetu vecí možno rozdeliť do viacerých vrstiev, no bez ohľadu na to, z koľkých vrstiev pozostáva, základný princíp zostáva v podstate rovnaký. Učenie
Kapitola 1. Úvod do IoT 5
o architektúre internetu vecí pomáha prehĺbiť naše chápanie technológií internetu vecí a budovať plne funkčné projekty internetu vecí.
1.2 Aplikácia IoT v inteligentných domácnostiach
Internet vecí prenikol do všetkých oblastí života a najbližšou aplikáciou internetu vecí je pre nás inteligentná domácnosť. Mnoho tradičných zariadení je teraz vybavených jedným alebo viacerými zariadeniami internetu vecí a mnoho novopostavených domov je od začiatku navrhnutých s technológiami internetu vecí. Obrázok 1.1 zobrazuje niektoré bežné zariadenia inteligentnej domácnosti.
Obrázok 1.1. Bežné zariadenia inteligentnej domácnosti Vývoj inteligentnej domácnosti možno zjednodušene rozdeliť na inteligentné produktytage, prepojenie scén stage a inteligentný stage, ako je znázornené na obrázku 1.2.
Obrázok 1.2. Development stage of smart home 6 ESP32-C3 Wireless Adventure: Komplexný sprievodca internetom vecí
Prvá stage je o inteligentných produktoch. Na rozdiel od tradičných domácností, v inteligentných domácnostiach IoT zariadenia prijímajú signály so senzormi a sú prepojené prostredníctvom bezdrôtových komunikačných technológií, ako sú Wi-Fi, Bluetooth LE a ZigBee. Používatelia môžu ovládať inteligentné produkty rôznymi spôsobmi, ako sú aplikácie pre smartfóny, hlasoví asistenti, ovládanie inteligentných reproduktorov atď.tage sa zameriava na prepojenie scén. V tejto stage, vývojári už neuvažujú o ovládaní jedného smart produktu, ale o prepojení dvoch alebo viacerých smart produktov, do určitej miery o automatizácii a nakoniec o vytvorení vlastného scénického režimu. NaprampKeď používateľ stlačí ľubovoľné tlačidlo režimu scény, svetlá, závesy a klimatizácia sa automaticky prispôsobia predvoľbám. Samozrejme, je tu predpoklad, že logika prepojenia je pohotovo nastavená, vrátane spúšťacích podmienok a vykonávacích akcií. Predstavte si, že režim vykurovania klimatizácie sa spustí, keď vnútorná teplota klesne pod 10 °C; že o 7. hodine ráno sa spustí hudba na prebudenie používateľa, otvoria sa inteligentné závesy a cez inteligentnú zásuvku sa spustí varič ryže alebo hriankovač chleba; keď používateľ vstane a dokončí umývanie, raňajky sa už podávajú, takže odchod do práce nebude meškať. Aký pohodlný sa stal náš život! Tretia stage ide do spravodajstva stage. S prístupom k viacerým inteligentným domácim zariadeniam sa budú zvyšovať aj typy generovaných údajov. S pomocou cloud computingu, veľkých dát a umelej inteligencie je to ako keby bol „inteligentnejší mozog“ zasadený do inteligentných domácností, ktoré už od používateľa nevyžadujú časté príkazy. Zhromažďujú údaje z predchádzajúcich interakcií a učia sa vzorce správania a preferencie používateľa, aby zautomatizovali činnosti vrátane poskytovania odporúčaní pre rozhodovanie. V súčasnosti je väčšina inteligentných domov na scéne prepojenia stage. S rastúcou mierou penetrácie a inteligenciou inteligentných produktov sa odstraňujú bariéry medzi komunikačnými protokolmi. V budúcnosti sa inteligentné domácnosti určite stanú skutočne „inteligentnými“, rovnako ako systém AI Jarvis v Iron Manovi, ktorý môže používateľovi pomôcť nielen ovládať rôzne zariadenia, zvládať každodenné záležitosti, ale má aj super výpočtovú silu a schopnosť myslenia. V inteligentnej stage, ľudské bytosti dostanú lepšie služby v kvantite aj kvalite.
Kapitola 1. Úvod do IoT 7
8 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Kapitola Úvod a prax 2 projektov internetu vecí
V kapitole 1 sme predstavili architektúru internetu vecí a úlohy a vzájomné vzťahy vrstvy vnímania a riadenia, sieťovej vrstvy, vrstvy platformy a aplikačnej vrstvy, ako aj vývoj inteligentnej domácnosti. Avšak rovnako ako keď sa učíme maľovať, znalosť teoretických vedomostí zďaleka nestačí. Musíme si „zašpiniť ruky“, aby sme projekty IoT zaviedli do praxe, aby sme túto technológiu skutočne zvládli. Navyše, keď sa projekt presunie do sériovej výroby stage, je potrebné zvážiť viac faktorov, ako je sieťové pripojenie, konfigurácia, interakcia s cloudovou platformou internetu vecí, správa a aktualizácie firmvéru, riadenie hromadnej výroby a konfigurácia zabezpečenia. Na čo si teda musíme dať pozor pri vývoji kompletného projektu IoT? V kapitole 1 sme spomenuli, že inteligentná domácnosť je jedným z najbežnejších scenárov aplikácie internetu vecí a inteligentné svetlá sú jedným z najzákladnejších a najpraktickejších zariadení, ktoré možno použiť v domácnostiach, hoteloch, telocvičniach, nemocniciach atď. V tejto knihe zoberieme ako východiskový bod konštrukciu projektu inteligentného osvetlenia, vysvetlíme jeho komponenty a vlastnosti a poskytneme návod na vývoj projektu. Dúfame, že z tohto prípadu dokážete vyvodiť závery a vytvoriť ďalšie aplikácie internetu vecí.
2.1 Úvod do typických projektov internetu vecí
Z hľadiska vývoja možno základné funkčné moduly projektov internetu vecí zaradiť do vývoja softvéru a hardvéru zariadení internetu vecí, vývoja klientskych aplikácií a vývoja cloudových platforiem internetu vecí. Dôležité je ujasniť si základné funkčné moduly, ktoré budú ďalej popísané v tejto časti.
2.1.1 Základné moduly pre bežné IoT zariadenia
Vývoj softvéru a hardvéru IoT zariadení zahŕňa tieto základné moduly: Zber dát
Ako spodná vrstva architektúry internetu vecí IoT zariadenia vrstvy vnímania a riadenia spájajú senzory a zariadenia prostredníctvom svojich čipov a periférnych zariadení, aby sa dosiahli zber údajov a riadenie prevádzky.
9
Väzba účtu a počiatočná konfigurácia Pre väčšinu zariadení IoT sa väzba účtu a počiatočná konfigurácia dokončí v jednom operačnom procese, naprample, pripojenie zariadení k používateľom konfiguráciou siete Wi-Fi.
Interakcia s cloudovými platformami internetu vecí Na monitorovanie a ovládanie zariadení internetu vecí je tiež potrebné ich prepojiť s cloudovými platformami internetu vecí, aby bolo možné zadávať príkazy a hlásiť stav prostredníctvom vzájomnej interakcie.
Ovládanie zariadení Po pripojení k cloudovým platformám internetu vecí môžu zariadenia komunikovať s cloudom a môžu byť registrované, viazané alebo ovládané. Používatelia môžu zisťovať stav produktu a vykonávať ďalšie operácie v aplikácii smartfónu prostredníctvom cloudových platforiem internetu vecí alebo miestnych komunikačných protokolov.
Aktualizácia firmvéru IoT zariadenia môžu tiež dosiahnuť aktualizáciu firmvéru na základe potrieb výrobcov. Prijímaním príkazov odoslaných z cloudu sa uskutoční aktualizácia firmvéru a správa verzií. Pomocou tejto funkcie aktualizácie firmvéru môžete neustále vylepšovať funkcie zariadení internetu vecí, opravovať chyby a zlepšovať používateľskú skúsenosť.
2.1.2 Základné moduly klientskych aplikácií
Klientske aplikácie (napr. aplikácie pre smartfóny) obsahujú najmä tieto základné moduly:
Systém účtov a autorizácia Podporuje autorizáciu účtov a zariadení.
Ovládanie zariadenia Aplikácie pre smartfóny sú zvyčajne vybavené funkciami ovládania. Používatelia sa môžu jednoducho pripojiť k zariadeniam internetu vecí a spravovať ich kedykoľvek a kdekoľvek prostredníctvom aplikácií pre smartfóny. V skutočnej inteligentnej domácnosti sú zariadenia väčšinou ovládané cez aplikácie pre smartfóny, čo umožňuje nielen inteligentnú správu zariadení, ale aj šetrí náklady na pracovnú silu. Preto je ovládanie zariadenia nevyhnutnosťou pre klientske aplikácie, ako je ovládanie atribútov funkcie zariadenia, ovládanie scény, plánovanie, diaľkové ovládanie, prepojenie zariadení atď. Používatelia inteligentných domácností môžu tiež prispôsobiť scény podľa osobných potrieb, ovládať osvetlenie, domáce spotrebiče, vchod atď., aby bol domáci život pohodlnejší a pohodlnejší. Môžu načasovať klimatizáciu, vypnúť ju na diaľku, nastaviť automatické rozsvietenie osvetlenia na chodbe po odomknutí dverí alebo prepnúť do režimu „divadlo“ jediným tlačidlom.
Aplikácie notifikačného klienta aktualizujú stav zariadení IoT v reálnom čase a odosielajú upozornenia, keď sa zariadenia pokazia.
10 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Popredajný zákaznícky servis Aplikácie pre smartfóny môžu poskytovať popredajné služby pre produkty na včasné riešenie problémov súvisiacich s poruchami zariadení internetu vecí a technickými operáciami.
Odporúčané funkcie Na uspokojenie potrieb rôznych používateľov je možné pridať ďalšie funkcie, ako napríklad Shake, NFC, GPS atď. GPS môže pomôcť nastaviť presnosť operácií scény podľa miesta a vzdialenosti, zatiaľ čo funkcia Shake umožňuje používateľom nastaviť príkazy, ktoré sa majú vykonať pre konkrétne zariadenie alebo scénu zatrasením.
2.1.3 Úvod do bežných IoT cloudových platforiem
Cloudová platforma internetu vecí je platforma typu všetko v jednom, ktorá integruje funkcie, ako je správa zariadení, komunikácia v oblasti zabezpečenia údajov a správa upozornení. Cloudové platformy IoT možno podľa cieľovej skupiny a dostupnosti rozdeliť na verejné cloudové platformy internetu vecí (ďalej len „verejný cloud“) a súkromné cloudové platformy internetu vecí (ďalej len „súkromný cloud“).
Verejný cloud zvyčajne označuje zdieľané cloudové platformy IoT pre podniky alebo jednotlivcov, prevádzkované a udržiavané poskytovateľmi platforiem a zdieľané prostredníctvom internetu. Môže byť bezplatný alebo lacný a poskytuje služby v celej otvorenej verejnej sieti, ako je Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT atď. Verejný cloud ako podporná platforma môže integrovať poskytovateľov služieb upstream a následných koncových užívateľov na vytvorenie nového hodnotového reťazca a ekosystému.
Súkromný cloud je vytvorený len pre podnikové použitie, čím zaručuje najlepšiu kontrolu nad dátami, bezpečnosťou a kvalitou služieb. Jeho služby a infraštruktúru spravujú podniky oddelene a podporný hardvér a softvér je tiež určený pre konkrétnych používateľov. Podniky môžu prispôsobiť cloudové služby tak, aby vyhovovali potrebám ich podnikania. V súčasnosti už niektorí výrobcovia inteligentných domácností získali súkromné cloudové platformy IoT a vyvinuli na nich aplikácie pre inteligentné domácnosti.
Verejný cloud a súkromný cloud majú svoje výhodytages, čo bude vysvetlené neskôr.
Na dosiahnutie komunikačnej konektivity je potrebné dokončiť aspoň vstavaný vývoj na strane zariadenia spolu s obchodnými servermi, cloudovými platformami internetu vecí a aplikáciami pre smartfóny. Verejný cloud, ktorý čelí takémuto obrovskému projektu, zvyčajne poskytuje súpravy na vývoj softvéru pre aplikácie na strane zariadenia a smartfóny na urýchlenie procesu. Verejný aj súkromný cloud poskytujú služby vrátane prístupu k zariadeniam, správy zariadení, tieňovania zariadení a prevádzky a údržby.
Prístup k zariadeniam Cloudové platformy internetu vecí musia poskytovať nielen rozhrania pre prístup k zariadeniam pomocou protokolov
Kapitola 2. Úvod a prax projektov internetu vecí 11
ako napríklad MQTT, CoAP, HTTPS a WebZásuvka, ale aj funkcia overenia zabezpečenia zariadenia na blokovanie sfalšovaných a nelegálnych zariadení, čím sa účinne znižuje riziko napadnutia. Takáto autentifikácia zvyčajne podporuje rôzne mechanizmy, takže pri sériovej výrobe zariadení je potrebné vopred prideliť certifikát zariadenia podľa zvoleného autentifikačného mechanizmu a napáliť ho do zariadení.
Správa zariadení Funkcia správy zariadení poskytovaná cloudovými platformami internetu vecí môže pomôcť výrobcom nielen monitorovať stav aktivácie a online stav ich zariadení v reálnom čase, ale umožňuje aj možnosti ako pridávanie/odstraňovanie zariadení, načítanie, pridávanie/odstraňovanie skupín, upgrade firmvéru. a správu verzií.
Tiene zariadenia IoT cloudové platformy môžu vytvoriť trvalú virtuálnu verziu (tieň zariadenia) pre každé zariadenie a stav tieňa zariadenia možno synchronizovať a získať pomocou aplikácie pre smartfóny alebo iných zariadení prostredníctvom internetových prenosových protokolov. Tieň zariadenia ukladá najnovší nahlásený stav a očakávaný stav každého zariadenia a aj keď je zariadenie offline, stále môže získať stav volaním rozhraní API. Device shadow poskytuje vždy zapnuté API, čo uľahčuje vytváranie aplikácií pre smartfóny, ktoré interagujú so zariadeniami.
Prevádzka a údržba Funkcia O&M zahŕňa tri aspekty: · Zobrazovanie štatistických informácií o zariadeniach internetu vecí a upozorneniach. · Správa protokolov umožňuje získavanie informácií o správaní zariadenia, toku správ nahor/nadol a obsahu správ. · Ladenie zariadení podporuje doručovanie príkazov, aktualizáciu konfigurácie a kontrolu interakcie medzi cloudovými platformami internetu vecí a správami zariadení.
2.2 Cvičenie: Projekt Smart Light
Po teoretickom úvode v každej kapitole nájdete praktickú časť súvisiacu s projektom Smart Light, ktorá vám pomôže získať praktické skúsenosti. Projekt je založený na čipe ESP32-C3 Espressif a ESP RainMaker IoT Cloud Platform a pokrýva hardvér bezdrôtových modulov v produktoch smart light, vstavaný softvér pre inteligentné zariadenia založené na ESP32C3, aplikácie pre smartfóny a interakciu ESP RainMaker.
Zdrojový kód Pre lepšie učenie a rozvoj skúseností bol projekt v tejto knihe otvorený. Zdrojový kód si môžete stiahnuť z nášho úložiska GitHub na https://github. com/espressif/book-esp32c3-iot-projects.
12 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
2.2.1 Štruktúra projektu
Projekt Smart Light pozostáva z troch častí: i. Inteligentné svetelné zariadenia založené na ESP32-C3, zodpovedné za interakciu s cloudovými platformami internetu vecí a ovládanie prepínača, jasu a teploty farieb LED lamp korálky. ii. Aplikácie pre smartfóny (vrátane aplikácií pre tablety so systémom Android a iOS), ktoré sú zodpovedné za konfiguráciu siete produktov inteligentného osvetlenia, ako aj za dopytovanie a kontrolu ich stavu.
iii. Cloudová platforma internetu vecí založená na ESP RainMaker. Pre zjednodušenie sa v tejto knihe zaoberáme cloudovou platformou internetu vecí a obchodným serverom ako celkom. Podrobnosti o ESP RainMaker budú uvedené v kapitole 3.
Súvislosť medzi štruktúrou projektu Smart Light a architektúrou internetu vecí je znázornená na obrázku 2.1.
Obrázok 2.1. Štruktúra projektu inteligentného svetla
2.2.2 Funkcie projektu
Funkcie každej časti sú rozdelené podľa štruktúry nasledovne. Inteligentné svetelné zariadenia
· Konfigurácia siete a pripojenie. · LED PWM ovládanie, ako je spínač, jas, teplota farieb atď. · Automatizácia alebo ovládanie scény, napr. časový spínač. · Šifrovanie a bezpečné spustenie Flash. · Aktualizácia firmvéru a správa verzií.
Kapitola 2. Úvod a prax projektov internetu vecí 13
Aplikácie pre smartfóny · Konfigurácia siete a viazanie zariadenia. · Inteligentné ovládanie svetelného produktu, ako je spínač, jas, teplota farieb atď. · Automatizácia alebo nastavenie scény, napr. časový spínač. · Miestne/diaľkové ovládanie. · Registrácia používateľa, prihlásenie atď.
ESP RainMaker IoT cloudová platforma · Umožnenie prístupu k IoT zariadeniam. · Poskytovanie prevádzkových rozhraní API zariadení prístupných aplikáciám smartfónov. · Aktualizácia firmvéru a správa verzií.
2.2.3 Príprava hardvéru
V prípade záujmu o uvedenie projektu do praxe budete potrebovať aj nasledujúci hardvér: inteligentné svetlá, smartfóny, Wi-Fi routery a počítač, ktorý spĺňa inštalačné požiadavky vývojového prostredia. Inteligentné svetlá
Inteligentné svetlá sú nový typ žiaroviek, ktorých tvar je rovnaký ako u bežnej žiarovky. Inteligentné svetlo sa skladá z kondenzátora regulovaného napájacieho zdroja, bezdrôtového modulu (so vstavaným ESP32-C3), LED ovládača a RGB LED matrice. Po pripojení k napájaniu je 15 V DC objtagVýstup po znížení kapacity kondenzátora, usmernení diód a regulácii dodáva energiu do LED ovládača a LED matice. Kontrolér LED môže automaticky vysielať vysoké a nízke úrovne v určitých intervaloch, pričom prepína maticu RGB LED medzi zatvorenou (svieti) a otvorenou (svetlo zhasne), takže môže vyžarovať azúrovú, žltú, zelenú, fialovú, modrú, červenú a biele svetlo. Bezdrôtový modul je zodpovedný za pripojenie k Wi-Fi routeru, prijímanie a hlásenie stavu inteligentných svetiel a odosielanie príkazov na ovládanie LED.
Obrázok 2.2. Simulované inteligentné svetlo
V ranom vývoji stage, môžete simulovať inteligentné svetlo pomocou dosky ESP32-C3DevKitM-1 spojenej s RGB LED lamp guľôčky (pozri obrázok 2.2). Ale mali by ste
14 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
všimnite si, že toto nie je jediný spôsob, ako zostaviť inteligentné svetlo. Hardvérový dizajn projektu v tejto knihe obsahuje iba bezdrôtový modul (so vstavaným ESP32-C3), ale nie kompletný hardvérový dizajn inteligentného svetla. Okrem toho Espressif vyrába aj vývojovú dosku ESP32C3-Lyra na báze ESP32-C3 na ovládanie svetiel so zvukom. Doska má rozhrania pre mikrofóny a reproduktory a dokáže ovládať LED pásy. Môže sa použiť na vývoj ultra nízkonákladových, vysokovýkonných zvukových vysielačov a rytmických svetelných pásov. Obrázok 2.3 zobrazuje dosku ESP32-C3Lyra spojenú s pásom 40 LED svetiel.
Obrázok 2.3. ESP32-C3-Lyra spojené s pásom 40 LED svetiel
Smartfóny (Android/iOS) Projekt Smart Light zahŕňa vývoj aplikácie pre smartfóny na nastavenie a ovládanie produktov smart light.
Smerovače Wi-Fi Smerovače Wi-Fi konvertujú signály káblovej siete a signály mobilnej siete na signály bezdrôtovej siete, aby sa počítače, smartfóny, tablety a iné bezdrôtové zariadenia mohli pripojiť k sieti. NaprampŠirokopásmové pripojenie v domácnosti stačí pripojiť k smerovaču Wi-Fi, aby sa dosiahlo bezdrôtové pripojenie zariadení Wi-Fi. Bežný protokolový štandard podporovaný smerovačmi Wi-Fi je IEEE 802.11n s priemernou rýchlosťou TxRate 300 Mbps alebo maximálne 600 Mbps. Sú spätne kompatibilné s IEEE 802.11b a IEEE 802.11g. Čip ESP32-C3 od Espressif podporuje IEEE 802.11b/g/n, takže si môžete vybrať jednopásmový (2.4 GHz) alebo dvojpásmový (2.4 GHz a 5 GHz) Wi-Fi router.
Počítačové (Linux/macOS/Windows) Vývojové prostredie bude predstavené v kapitole 4. Kapitola 2. Úvod a prax IoT projektov 15
2.2.4 Proces vývoja
Obrázok 2.4. Kroky vývoja projektu Smart Light
Návrh hardvéru Návrh hardvéru zariadení internetu vecí je nevyhnutný pre projekt internetu vecí. Kompletný projekt inteligentného svetla je určený na výrobu alamp pracujúci pod sieťovým napájaním. Rôzni výrobcovia vyrábajú lamps rôznych štýlov a typov ovládačov, ale ich bezdrôtové moduly majú zvyčajne rovnakú funkciu. V záujme zjednodušenia procesu vývoja projektu Smart Ligh sa táto kniha zaoberá iba návrhom hardvéru a vývojom softvéru bezdrôtových modulov.
Konfigurácia cloudovej platformy IoT Ak chcete používať cloudové platformy IoT, musíte nakonfigurovať projekty na backende, ako je vytváranie produktov, vytváranie zariadení, nastavenie vlastností zariadenia atď.
Vývoj vstavaného softvéru pre zariadenia internetu vecí Implementujte očakávané funkcie s ESP-IDF, súpravou SDK na strane zariadenia od Espressif, vrátane pripojenia ku cloudovým platformám internetu vecí, vývoja ovládačov LED a upgradu firmvéru.
Vývoj aplikácií pre smartfóny Vyvíjajte aplikácie pre smartfóny pre systémy Android a iOS na realizáciu registrácie a prihlásenia používateľa, ovládanie zariadenia a ďalšie funkcie.
Optimalizácia IoT zariadení Po dokončení základného vývoja funkcií IoT zariadení sa môžete pustiť do optimalizačných úloh, ako je optimalizácia výkonu.
Testovanie hromadnej výroby Vykonajte testy hromadnej výroby podľa súvisiacich noriem, ako je test funkcie zariadenia, test starnutia, test RF atď.
Napriek vyššie uvedeným krokom projekt Smart Light nemusí nevyhnutne podliehať takémuto postupu, pretože rôzne úlohy možno vykonávať súčasne. Naprample, vstavaný softvér a aplikácie pre smartfóny môžu byť vyvíjané paralelne. Niektoré kroky možno bude potrebné zopakovať, napríklad optimalizáciu zariadení internetu vecí a testovanie hromadnej výroby.
16 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
2.3 Zhrnutie
V tejto kapitole sme si najprv vysvetlili základné komponenty a funkčné moduly projektu IoT, potom sme si predstavili puzdro Smart Light pre prax s odkazom na jeho štruktúru, funkcie, prípravu hardvéru a proces vývoja. Čitatelia môžu vyvodiť závery z praxe a získať istotu, že v budúcnosti budú realizovať projekty internetu vecí s minimálnymi chybami.
Kapitola 2. Úvod a prax projektov internetu vecí 17
18 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Kapitola 3
Úvod
do
ESP
RainMaker
Internet vecí (IoT) ponúka nekonečné možnosti na zmenu spôsobu života ľudí, no vývoj inžinierstva internetu vecí je plný výziev. S verejnými cloudmi môžu výrobcovia terminálov implementovať funkčnosť produktu prostredníctvom nasledujúcich riešení:
Založené na cloudových platformách poskytovateľov riešení Týmto spôsobom potrebujú výrobcovia terminálov iba navrhnúť hardvér produktu, potom pripojiť hardvér ku cloudu pomocou poskytnutého komunikačného modulu a nakonfigurovať funkcie produktu podľa pokynov. Ide o efektívny prístup, pretože eliminuje potrebu vývoja a prevádzky a údržby na strane servera a aplikácie (O&M). Výrobcom terminálov umožňuje zamerať sa na dizajn hardvéru bez toho, aby museli zvažovať cloudovú implementáciu. Takéto riešenia (napr. firmvér zariadenia a aplikácia) však vo všeobecnosti nie sú open source, takže funkcie produktu budú obmedzené cloudovou platformou poskytovateľa, ktorú nemožno prispôsobiť. Údaje o používateľoch a zariadeniach zároveň patria do cloudovej platformy.
Založené na cloudových produktoch V tomto riešení potrebujú výrobcovia terminálov po dokončení návrhu hardvéru nielen implementovať cloudové funkcie pomocou jedného alebo viacerých cloudových produktov poskytovaných verejným cloudom, ale potrebujú aj prepojiť hardvér s cloudom. Naprample, na pripojenie k Amazonu Web Služby (AWS), výrobcovia terminálov musia používať produkty AWS, ako sú Amazon API Gateway, AWS IoT Core a AWS Lambda, aby umožnili prístup k zariadeniu, vzdialené ovládanie, ukladanie údajov, správu používateľov a ďalšie základné funkcie. Požaduje nielen od výrobcov terminálov, aby flexibilne používali a konfigurovali cloudové produkty s dôkladným porozumením a bohatými skúsenosťami, ale tiež od nich vyžaduje, aby zvážili náklady na konštrukciu a údržbu pre počiatočné a neskoršie stages To predstavuje veľké výzvy pre energiu a zdroje spoločnosti.
V porovnaní s verejnými cloudmi sú súkromné cloudy zvyčajne vytvorené pre konkrétne projekty a produkty. Vývojári súkromného cloudu dostávajú najvyššiu úroveň slobody pri navrhovaní protokolov a implementácii obchodnej logiky. Výrobcovia terminálov môžu vytvárať produkty a dizajnové schémy podľa ľubovôle a jednoducho integrovať a posilniť používateľské údaje. Spojenie vysokej bezpečnosti, škálovateľnosti a spoľahlivosti verejného cloudu s výhodamitagV rámci súkromného cloudu Espressif spustil ESP
19
RainMaker, hlboko integrované riešenie privátneho cloudu založené na cloude Amazon. Používatelia môžu nasadiť ESP RainMaker a vytvoriť si súkromný cloud jednoducho pomocou účtu AWS.
3.1 Čo je ESP RainMaker?
ESP RainMaker je kompletná platforma AIoT postavená na viacerých vyspelých produktoch AWS. Poskytuje rôzne služby potrebné pre masovú produkciu, ako je cloudový prístup k zariadeniam, upgrade zariadenia, správa backendu, prihlásenie tretích strán, integrácia hlasu a správa používateľov. Použitím serverového úložiska aplikácií (SAR), ktoré poskytuje AWS, môžu výrobcovia terminálov rýchlo nasadiť ESP RainMaker do svojich účtov AWS, čo je časovo efektívne a ľahko ovládateľné. SAR, ktorú spravuje a udržiava Espressif, pomáha vývojárom znižovať náklady na cloudovú údržbu a urýchľovať vývoj produktov AIoT, čím vytvára bezpečné, stabilné a prispôsobiteľné riešenia AIoT. Obrázok 3.1 zobrazuje architektúru ESP RainMaker.
Obrázok 3.1. Architektúra ESP RainMaker
Verejný server ESP RainMaker od spoločnosti Espressif je bezplatný pre všetkých nadšencov, tvorcov a pedagógov ESP na hodnotenie riešení. Vývojári sa môžu prihlásiť pomocou účtov Apple, Google alebo GitHub a rýchlo vytvárať vlastné prototypy aplikácií IoT. Verejný server integruje Alexa a Google Home a poskytuje služby hlasového ovládania, ktoré podporujú Alexa Skill a Google Actions. Funkciu sémantického rozpoznávania využívajú aj tretie strany. Zariadenia RainMaker IoT reagujú iba na konkrétne akcie. Úplný zoznam podporovaných hlasových príkazov nájdete na platformách tretích strán. Okrem toho Espressif ponúka verejnú aplikáciu RainMaker pre používateľov na ovládanie produktov prostredníctvom smartfónov. 20 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
3.2 Implementácia ESP RainMaker
Ako je znázornené na obrázku 3.2, ESP RainMaker pozostáva zo štyroch častí: · Služba Reklamácie, ktorá umožňuje zariadeniam RainMaker dynamicky získavať certifikáty. · RainMaker Cloud (tiež známy ako cloud backend), poskytujúci služby, ako je filtrovanie správ, správa používateľov, ukladanie údajov a integrácie tretích strán. · Agent RainMaker, ktorý umožňuje zariadeniam RainMaker pripojiť sa k cloudu RainMaker. · Klient RainMaker (aplikácia RainMaker alebo skripty CLI) na poskytovanie, vytváranie používateľov, priraďovanie a ovládanie zariadení atď.
Obrázok 3.2. Štruktúra ESP RainMaker
ESP RainMaker poskytuje kompletnú sadu nástrojov pre vývoj produktov a hromadnú výrobu, vrátane: RainMaker SDK
RainMaker SDK je založený na ESP-IDF a poskytuje zdrojový kód agenta na strane zariadenia a súvisiace C API pre vývoj firmvéru. Vývojárom stačí napísať aplikačnú logiku a zvyšok nechať na framework RainMaker. Viac informácií o C API nájdete na https://bookc3.espressif.com/rm/c-api-reference. Aplikácia RainMaker Verejná verzia aplikácie RainMaker umožňuje vývojárom dokončiť poskytovanie zariadení a ovládať a zisťovať stav zariadení (napr. produkty inteligentného osvetlenia). Je k dispozícii v obchodoch s aplikáciami pre iOS aj Android. Ďalšie podrobnosti nájdete v kapitole 10. Rozhrania REST API Rozhrania REST API pomáhajú používateľom vytvárať ich vlastné aplikácie podobné aplikácii RainMaker. Viac informácií nájdete na https://swaggerapis.rainmaker.espressif.com/.
Kapitola 3. Úvod do ESP RainMaker 21
Rozhrania API Pythonu CLI založené na jazyku Python, ktoré sa dodáva so súpravou RainMaker SDK, je k dispozícii na implementáciu všetkých funkcií podobných funkciám smartfónu. Viac informácií o Python API nájdete na https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI s vyššou úrovňou prístupu sa poskytuje pre súkromné nasadenie ESP RainMaker na hromadné generovanie certifikátov zariadení.
3.2.1 Reklamácia služby
Všetka komunikácia medzi zariadeniami RainMaker a cloudovým backendom prebieha prostredníctvom MQTT+TLS. V kontexte ESP RainMaker je „nárokovanie“ proces, v ktorom zariadenia získavajú certifikáty od služby Claiming Service na pripojenie ku cloudovému backendu. Upozorňujeme, že služba Claiming Service sa vzťahuje iba na verejnú službu RainMaker, zatiaľ čo v prípade súkromného nasadenia je potrebné generovať certifikáty zariadení hromadne prostredníctvom Admin CLI. ESP RainMaker podporuje tri typy reklamačných služieb: Self Claiming
Samotné zariadenie po pripojení na internet získava certifikáty prostredníctvom tajného kľúča predprogramovaného v eFuse. Nárokovanie riadené hostiteľom Certifikáty sa získavajú od hostiteľa vývoja s účtom RainMaker. Asistované vymáhanie Certifikáty sa získavajú prostredníctvom aplikácií smartfónov počas poskytovania.
3.2.2 Agent RainMaker
Obrázok 3.3. Štruktúra RainMaker SDK Primárnou funkciou RainMaker Agent je poskytovať konektivitu a pomáhať aplikačnej vrstve spracovávať uplink/downlink cloudové dáta. Je vytvorený pomocou RainMaker SDK 22 ESP32-C3 Wireless Adventure: Komplexný sprievodca internetom vecí
a vyvinuté na základe osvedčeného rámca ESP-IDF s použitím komponentov ESP-IDF, ako sú RTOS, NVS a MQTT. Obrázok 3.3 zobrazuje štruktúru RainMaker SDK.
RainMaker SDK obsahuje dve hlavné funkcie.
Pripojenie
i. Spolupráca s reklamačným servisom pri získavaní certifikátov zariadení.
ii. Pripojenie ku cloudovému backendu pomocou zabezpečeného protokolu MQTT na poskytovanie vzdialeného pripojenia a implementáciu diaľkového ovládania, hlásenia správ, správy používateľov, správy zariadení atď. Štandardne používa komponent MQTT v ESP-IDF a poskytuje abstrakciu na prepojenie s ostatnými zásobníky protokolov.
iii. Poskytovanie komponentu na poskytovanie Wi-Fi pre pripojenie a poskytovanie Wi-Fi, komponent esp https ota pre inovácie OTA a komponent esp local ctrl na zisťovanie a pripojenie lokálneho zariadenia. Všetky tieto ciele možno dosiahnuť jednoduchou konfiguráciou.
Spracovanie údajov
i. Ukladanie certifikátov zariadení vydaných službou Claiming Service a údajov potrebných pri spustení RainMaker, štandardne pomocou rozhrania poskytovaného komponentom nvs flash a poskytovania API pre vývojárov na priame použitie.
ii. Použitie mechanizmu spätného volania na spracovanie uplink/downlink cloudových dát a automatické odblokovanie dát do aplikačnej vrstvy pre jednoduché spracovanie vývojármi. NapríkladampRainMaker SDK poskytuje bohaté rozhrania na vytváranie údajov TSL (Thing Specification Language), ktoré sú potrebné na definovanie modelov TSL na popis zariadení internetu vecí a implementáciu funkcií, ako je časovanie, odpočítavanie a hlasové ovládanie. Pre základné interaktívne funkcie, ako je časovanie, poskytuje RainMaker SDK riešenie bez vývoja, ktoré možno v prípade potreby jednoducho aktivovať. Potom agent RainMaker priamo spracuje údaje, odošle ich do cloudu prostredníctvom súvisiacej témy MQTT a odošle späť zmeny údajov v cloudovom backende prostredníctvom mechanizmu spätného volania.
3.2.3 Cloud Backend
Cloudový backend je postavený na AWS Serverless Computing a je dosiahnutý prostredníctvom AWS Cognito (systém správy identít), Amazon API Gateway, AWS Lambda (bezserverová výpočtová služba), Amazon DynamoDB (NoSQL databáza), AWS IoT Core (IoT prístupové jadro, ktoré poskytuje prístup MQTT a filtrovanie pravidiel), Amazon Simple Email Service (SES simple mail service), Amazon CloudFront (sieť rýchleho doručovania), Amazon Simple Queue Service (SQS správ do fronty) a Amazon S3 (bucket storage service). Jeho cieľom je optimalizovať škálovateľnosť a bezpečnosť. Pomocou ESP RainMaker môžu vývojári spravovať zariadenia bez toho, aby museli písať kód v cloude. Správy hlásené zariadeniami sa prenášajú transparentne
Kapitola 3. Úvod do ESP RainMaker 23
aplikačných klientov alebo iných služieb tretích strán. Tabuľka 3.1 zobrazuje cloudové produkty a funkcie AWS používané v cloudovom backende, pričom ďalšie produkty a funkcie sú vo vývoji.
Tabuľka 3.1. Cloudové produkty a funkcie AWS používané cloudovým backendom
Cloudový produkt AWS, ktorý používa RainMaker
Funkcia
AWS Cognito
Správa používateľských poverení a podpora prihlásení tretích strán
AWS Lambda
Implementácia základnej obchodnej logiky cloudového backendu
Amazon Timestream Ukladanie údajov časových radov
Amazon DynamoDB Ukladanie súkromných informácií zákazníkov
AWS IoT Core
Podpora komunikácie MQTT
Amazon SES
Poskytovanie služieb odosielania e-mailov
Amazon CloudFront Zrýchlenie správy backendu webprístup na stránku
Amazon SQS
Preposielanie správ z AWS IoT Core
3.2.4 Klient RainMaker
Klienti RainMaker, ako napríklad App a CLI, komunikujú s cloudovým backendom prostredníctvom REST API. Podrobné informácie a pokyny o REST API nájdete v dokumentácii Swagger, ktorú poskytuje Espressif. Klient mobilnej aplikácie RainMaker je dostupný pre systémy iOS aj Android. Umožňuje poskytovanie, ovládanie a zdieľanie zariadení, ako aj vytváranie a povoľovanie úloh odpočítavania a pripojenie k platformám tretích strán. Dokáže automaticky načítať používateľské rozhranie a ikony podľa konfigurácie hlásenej zariadeniami a plne zobraziť TSL zariadenia.
Napríkladample, ak je inteligentné svetlo postavené na súprave RainMaker SDK poskytovanej napramppo dokončení poskytovania sa ikona a používateľské rozhranie žiarovky automaticky načítajú. Používatelia môžu zmeniť farbu a jas svetla prostredníctvom rozhrania a dosiahnuť kontrolu treťou stranou prepojením Alexa Smart Home Skill alebo Google Smart Home Actions so svojimi účtami ESP RainMaker. Obrázok 3.4 zobrazuje ikonu a používateľské rozhranie naprampmenej svetla žiarovky v aplikácii Alexa, Google Home a ESP RainMaker.
24 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
(a) Naprample – Alexa
(b) Naprample – Domovská stránka Google
(c) Naprample – ESP RainMaker
Obrázok 3.4. Prampikony a používateľské rozhranie žiarovky v aplikácii Alexa, Google Home a ESP RainMaker
3.3 Cvičenie: Kľúčové body pre vývoj s ESP RainMaker
Po dokončení vrstvy ovládača zariadenia môžu vývojári začať vytvárať modely TSL a spracovávať downlinkové dáta pomocou API poskytovaných RainMaker SDK a povoliť základné služby ESP RainMaker na základe definície produktu a požiadaviek.
Kapitola 3. Úvod do ESP RainMaker 25
Časť 9.4 tejto knihy vysvetlí implementáciu inteligentného svetla LED v programe RainMaker. Počas ladenia môžu vývojári použiť nástroje CLI v RainMaker SDK na komunikáciu s inteligentným svetlom (alebo volať REST API od Swagger).
Kapitola 10 rozvedie použitie REST API pri vývoji aplikácií pre smartfóny. OTA upgrady LED inteligentných svetiel budú zahrnuté v kapitole 11. Ak vývojári povolili vzdialené monitorovanie ESP Insights, backend správy ESP RainMaker zobrazí údaje ESP Insights. Podrobnosti budú uvedené v kapitole 15.
ESP RainMaker podporuje súkromné nasadenie, ktoré sa líši od verejného servera RainMaker nasledujúcimi spôsobmi:
Nárokovanie služby Na generovanie certifikátov v súkromných nasadeniach je potrebné namiesto Nárokovania použiť RainMaker Admin CLI. Pri verejnom serveri musia mať vývojári administrátorské práva na implementáciu aktualizácie firmvéru, čo je však v komerčnom nasadení nežiaduce. Preto nie je možné poskytnúť samostatnú autentifikačnú službu pre vlastné nárokovanie, ani administrátorské práva pre hostiteľom riadené alebo asistované nárokovanie.
Telefónne aplikácie V súkromných nasadeniach musia byť aplikácie nakonfigurované a kompilované samostatne, aby sa zaistilo, že systémy účtov nebudú interoperabilné.
Prihlasovacie údaje tretích strán a hlasová integrácia Vývojári musia konfigurovať samostatne prostredníctvom účtov vývojárov Google a Apple, aby umožnili prihlásenie tretích strán, ako aj integráciu Alexa Skill a Google Voice Assistant.
TIPY Podrobnosti o nasadení cloudu nájdete na https://customer.rainmaker.espressif. com. Pokiaľ ide o firmvér, migrácia z verejného servera na súkromný server vyžaduje iba výmenu certifikátov zariadenia, čo výrazne zvyšuje efektivitu migrácie a znižuje náklady na migráciu a sekundárne ladenie.
3.4 Vlastnosti ESP RainMaker
Funkcie ESP RainMaker sú zamerané hlavne na tri aspekty – správu používateľov, koncových používateľov a správcov. Všetky funkcie sú podporované na verejných aj súkromných serveroch, pokiaľ nie je uvedené inak.
3.4.1 Správa používateľov
Funkcie správy používateľov umožňujú koncovým používateľom registrovať sa, prihlasovať sa, meniť heslá, získavať heslá atď.
26 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Registrácia a prihlásenie Spôsoby registrácie a prihlásenia, ktoré RainMaker podporuje, zahŕňajú: · E-mailové ID + Heslo · Telefónne číslo + Heslo · Účet Google · Účet Apple · Účet GitHub (iba verejný server) · Účet Amazon (iba súkromný server)
POZNÁMKA Zaregistrujte sa pomocou Google/Amazon a zdieľajte e-mailovú adresu používateľa s programom RainMaker. Zaregistrujte sa pomocou Apple zdieľa fiktívnu adresu, ktorú Apple pridelí používateľovi špeciálne pre službu RainMaker. Používateľom, ktorí sa prvýkrát prihlásia pomocou účtu Google, Apple alebo Amazon, sa automaticky vytvorí účet RainMaker.
Zmeniť heslo Platí len pre prihlásenia na základe e-mailu/telefónneho čísla. Všetky ostatné aktívne relácie budú po zmene hesla odhlásené. Podľa správania AWS Cognito môžu odhlásené relácie zostať aktívne až 1 hodinu.
Získať heslo Platí len pre prihlásenia založené na e-mailovej adrese/telefónnom čísle.
3.4.2 Funkcie koncového používateľa
Funkcie otvorené pre koncových používateľov zahŕňajú miestne a vzdialené ovládanie a monitorovanie, plánovanie, zoskupovanie zariadení, zdieľanie zariadení, upozornenia push a integrácie tretích strán.
Diaľkové ovládanie a monitorovanie · Dopyt na konfiguráciu, hodnoty parametrov a stav pripojenia pre jedno alebo všetky zariadenia. · Nastavte parametre pre jedno alebo viac zariadení.
Lokálne ovládanie a monitorovanie Mobilný telefón a zariadenie musia byť pripojené k rovnakej sieti na miestne ovládanie.
Plánovanie · Používatelia si vopred nastavia určité akcie na konkrétny čas. · Počas vykonávania plánu nie je pre zariadenie potrebné žiadne internetové pripojenie. · Jednorazovo alebo opakovane (zadaním dní) pre jedno alebo viacero zariadení.
Zoskupovanie zariadení Podporuje viacúrovňové abstraktné zoskupovanie Metadáta skupiny možno použiť na vytvorenie štruktúry domácej miestnosti.
Kapitola 3. Úvod do ESP RainMaker 27
Zdieľanie zariadení Jedno alebo viacero zariadení možno zdieľať s jedným alebo viacerými používateľmi.
Push notifikácie Koncoví používatelia budú dostávať push notifikácie o udalostiach, ako sú · Pridané/odstránené nové zariadenie · Zariadenie pripojené ku cloudu · Zariadenie odpojené od cloudu · Vytvorenie/prijatie/odmietnutie požiadaviek na zdieľanie zariadenia · Výstražné správy nahlásené zariadeniami
Integrácie tretích strán Alexa a Google Voice Assistant sú podporované na ovládanie zariadení RainMaker vrátane svetiel, spínačov, zásuviek, ventilátorov a teplotných senzorov.
3.4.3 Funkcie správcu
Funkcie správcu umožňujú správcom implementovať registráciu zariadení, zoskupovanie zariadení a inovácie OTA a do view štatistiky a údaje ESP Insights.
Registrácia zariadenia Vygenerujte certifikáty zariadenia a zaregistrujte sa v Admin CLI (iba súkromný server).
Zoskupovanie zariadení Vytvárajte abstraktné alebo štruktúrované skupiny na základe informácií o zariadení (iba súkromný server).
Aktualizácie OTA (over-the-air) Nahrajte firmvér na základe verzie a modelu do jedného alebo viacerých zariadení alebo do skupiny Monitorujte, zrušujte alebo archivujte úlohy OTA.
View štatistiky Viewdostupné štatistiky zahŕňajú: · Registrácie zariadení (certifikáty registrované správcom) · Aktivácie zariadení (zariadenie pripojené prvýkrát) · Používateľské účty · Priradenie používateľa k zariadeniu
View Údaje ESP Insights ViewÚdaje schopné ESP Insights zahŕňajú: · Chyby, upozornenia a vlastné protokoly · Správy a analýzy o zlyhaní · Dôvody reštartu · Metriky ako využitie pamäte, RSSI atď. · Vlastné metriky a premenné
28 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
3.5 Zhrnutie
V tejto kapitole sme predstavili niektoré kľúčové rozdiely medzi verejným nasadením RainMaker a súkromným nasadením. Súkromné riešenie ESP RainMaker spustené spoločnosťou Espressif je vysoko spoľahlivé a rozšíriteľné. Všetky čipy série ESP32 boli pripojené a prispôsobené AWS, čo výrazne znižuje náklady. Vývojári sa môžu sústrediť na overovanie prototypov bez toho, aby sa museli učiť o cloudových produktoch AWS. Vysvetlili sme tiež implementáciu a funkcie ESP RainMaker a niektoré kľúčové body pre vývoj pomocou platformy.
Naskenujte a stiahnite si ESP RainMaker pre Android Naskenujte a stiahnite si ESP RainMaker pre iOS
Kapitola 3. Úvod do ESP RainMaker 29
30 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Kapitola Nastavenie 4 Vývojové prostredie
Táto kapitola sa zameriava na ESP-IDF, oficiálny rámec pre vývoj softvéru pre ESP32-C3. Vysvetlíme si, ako nastaviť prostredie na rôznych operačných systémoch, predstavíme štruktúru projektu a zostavovací systém ESP-IDF, ako aj použitie súvisiacich vývojových nástrojov. Potom predstavíme proces kompilácie a spustenia example project, pričom ponúka podrobné vysvetlenie výstupného protokolu pri každom stage.
4.1 ESP-IDF Overview
ESP-IDF (Espressif IoT Development Framework) je komplexný vývojový rámec IoT poskytovaný technológiou Espressif. Používa C/C++ ako hlavný vývojový jazyk a podporuje krížovú kompiláciu v bežných operačných systémoch, ako sú Linux, Mac a Windows. BývalýampProgramy zahrnuté v tejto knihe sú vyvinuté pomocou ESP-IDF, ktoré ponúka nasledujúce funkcie: · Ovládače na systémovej úrovni SoC. ESP-IDF obsahuje ovládače pre ESP32, ESP32-S2, ESP32-C3,
a iné čipy. Tieto ovládače zahŕňajú periférnu knižnicu nízkej úrovne (LL), knižnicu hardvérovej abstraktnej vrstvy (HAL), podporu RTOS a softvér ovládačov vyššej vrstvy atď. · Základné komponenty. ESP-IDF obsahuje základné komponenty potrebné pre rozvoj internetu vecí. Zahŕňa to viacero zásobníkov sieťových protokolov, ako sú HTTP a MQTT, rámec správy napájania s dynamickou moduláciou frekvencie a funkcie ako šifrovanie Flash a bezpečné spustenie atď. · Vývojové a produkčné nástroje. ESP-IDF poskytuje bežne používané nástroje na zostavovanie, flashovanie a ladenie počas vývoja a hromadnej výroby (pozri obrázok 4.1), ako je stavebný systém založený na CMake, reťazec nástrojov krížovej kompilácie založený na GCC a JTAG ladiaci nástroj založený na OpenOCD atď. Stojí za zmienku, že kód ESP-IDF primárne dodržiava open-source licenciu Apache 2.0. Používatelia môžu vyvíjať osobný alebo komerčný softvér bez obmedzení pri dodržaní podmienok licencie open source. Používateľom sa navyše bezplatne udeľujú trvalé patentové licencie, bez toho, aby museli používať open source akékoľvek úpravy zdrojového kódu.
31
Obrázok 4.1.
Budovanie, blikanie a ladenie
nástroje pre vývoj a sériovú výrobu
4.1.1 Verzie ESP-IDF
Kód ESP-IDF je hosťovaný na GitHub ako open-source projekt. V súčasnosti sú k dispozícii tri hlavné verzie: v3, v4 a v5. Každá hlavná verzia zvyčajne obsahuje rôzne podverzie, ako napríklad v4.2, v4.3 atď. Espressif Systems zaisťuje 30-mesačnú podporu pre opravy chýb a bezpečnostné záplaty pre každú vydanú podverziu. Preto sa pravidelne vydávajú aj revízie subverzií, ako napríklad v4.3.1, v4.2.2 atď.view stage (ponuka podpory pre predview verzie, ktorým môžu chýbať určité funkcie alebo dokumentácia) alebo sú oficiálne podporované.
Tabuľka 4.1. Stav podpory rôznych verzií ESP-IDF pre čipy Espressif
Séria ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
podporovaná verzia 4.1
podporovaná verzia 4.2
v4.3 podporované podporované podporované
v4.4 podporované podporované podporované podporované
preview
v5.0 podporované podporované podporované podporované podporované predview
32 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Iterácia hlavných verzií často zahŕňa úpravy štruktúry rámca a aktualizácie systému kompilácie. Naprample, hlavnou zmenou z v3.* na v4.* bola postupná migrácia systému zostavovania z Make na CMake. Na druhej strane iterácia menších verzií zvyčajne zahŕňa pridanie nových funkcií alebo podporu nových čipov.
Je dôležité rozlíšiť a pochopiť vzťah medzi stabilnými verziami a vetvami GitHub. Verzie označené ako v*.* alebo v*.*.* predstavujú stabilné verzie, ktoré prešli kompletným interným testovaním spoločnosti Espressif. Po oprave zostanú kód, reťazec nástrojov a dokumenty vydania pre rovnakú verziu nezmenené. Avšak vetvy GitHub (napr. vetva release/v4.3) podstupujú časté potvrdenia kódu, často na dennej báze. Preto sa dva útržky kódu v rámci tej istej vetvy môžu líšiť, čo si vyžaduje, aby vývojári okamžite zodpovedajúcim spôsobom aktualizovali svoj kód.
4.1.2 Pracovný postup ESP-IDF Git
Espressif sa riadi špecifickým pracovným postupom Git pre ESP-IDF, ktorý je načrtnutý takto:
· Nové zmeny sú vykonané na hlavnej vetve, ktorá slúži ako hlavná vývojová vetva. Verzia ESP-IDF na hlavnej vetve vždy obsahuje -dev tag na označenie, že je momentálne vo vývoji, ako napríklad v4.3-dev. Zmeny na hlavnej vetve budú najskôr reviewspracované a otestované v internom úložisku Espressif a po dokončení automatického testovania odoslané na GitHub.
· Akonáhle nová verzia dokončí vývoj funkcií v hlavnej vetve a splní kritériá pre vstup do beta testovania, prejde do novej vetvy, ako je release/v4.3. Navyše táto nová pobočka je tagged ako predbežná verzia, napríklad v4.3-beta1. Vývojári sa môžu obrátiť na platformu GitHub, aby získali úplný zoznam pobočiek a tags pre ESP-IDF. Je dôležité poznamenať, že beta verzia (predbežná verzia) môže mať stále značný počet známych problémov. Keďže beta verzia prechádza nepretržitým testovaním, opravy chýb sa pridávajú súčasne do tejto verzie aj hlavnej vetvy. Medzitým hlavná vetva už možno začala s vývojom nových funkcií pre ďalšiu verziu. Keď je testovanie takmer dokončené, do vetvy sa pridá štítok kandidáta na vydanie (rc), ktorý označuje, že ide o potenciálneho kandidáta na oficiálne vydanie, ako napríklad v4.3-rc1. Pri tejto stage, vetva zostáva predbežnou verziou.
· Ak nie sú objavené alebo nahlásené žiadne závažné chyby, predbežná verzia nakoniec dostane označenie hlavnej verzie (napr. v5.0) alebo označenie vedľajšej verzie (napr. v4.3) a stane sa oficiálnou verziou vydania, ktorá je zdokumentovaná na stránke s poznámkami k vydaniu. Následne sú všetky chyby identifikované v tejto verzii opravené vo vetve vydania. Po dokončení manuálneho testovania sa vetve pridelí označenie verzie opravy chýb (napr. v4.3.2), čo sa tiež odráža na stránke s poznámkami k vydaniu.
Kapitola 4. Nastavenie vývojového prostredia 33
4.1.3 Výber vhodnej verzie
Keďže ESP-IDF oficiálne začal podporovať ESP32-C3 od verzie v4.3 a v4.4 ešte nebola oficiálne vydaná v čase písania tejto knihy, verzia použitá v tejto knihe je v4.3.2, čo je revidovaná verzia verzie 4.3. Je však dôležité poznamenať, že v čase, keď budete čítať túto knihu, už môžu byť dostupné verzie 4.4 alebo novšie. Pri výbere verzie odporúčame nasledovné:
· Pre vývojárov na základnej úrovni je vhodné zvoliť stabilnú verziu v4.3 alebo jej revidovanú verziu, ktorá sa zhoduje s exampverzia použitá v tejto knihe.
· Na účely hromadnej výroby sa odporúča používať najnovšiu stabilnú verziu, aby ste mohli využívať najaktuálnejšiu technickú podporu.
· Ak máte v úmysle experimentovať s novými čipmi alebo skúmať nové funkcie produktu, použite hlavnú vetvu. Najnovšia verzia obsahuje všetky najnovšie funkcie, no majte na pamäti, že sa môžu vyskytovať známe alebo neznáme chyby.
· Ak používaná stabilná verzia neobsahuje požadované nové funkcie a chcete minimalizovať riziká spojené s hlavnou vetvou, zvážte použitie zodpovedajúcej vetvy vydania, ako je vetva release/v4.4. Repozitár GitHub spoločnosti Espressif najprv vytvorí vetvu release/v4.4 a následne po dokončení vývoja a testovania všetkých funkcií vydá stabilnú verziu v4.4 na základe konkrétneho historického snímku tejto vetvy.
4.1.4 Koniecview z adresára ESP-IDF SDK
ESP-IDF SDK pozostáva z dvoch hlavných adresárov: esp-idf a .espressif. Prvý obsahuje zdrojový kód úložiska ESP-IDF files a kompilačné skripty, zatiaľ čo posledný obsahuje hlavne reťazce kompilačných nástrojov a iný softvér. Znalosť týchto dvoch adresárov pomôže vývojárom lepšie využiť dostupné zdroje a urýchliť proces vývoja. Adresárová štruktúra ESP-IDF je opísaná nižšie:
(1) Adresár kódu úložiska ESP-IDF (/esp/esp-idf), ako je znázornené na obrázku 4.2.
a. Komponenty adresára komponentov
Tento hlavný adresár integruje množstvo základných softvérových komponentov ESP-IDF. Žiadny kód projektu nemožno skompilovať bez spoliehania sa na komponenty v tomto adresári. Zahŕňa podporu ovládačov pre rôzne čipy Espressif. Od knižníc LL a knižníc HAL pre periférne zariadenia až po ovládače a virtuálne verzie vyššej úrovne File Podpora systémovej (VFS) vrstvy, vývojári si môžu vybrať vhodné komponenty na rôznych úrovniach pre svoje vývojové potreby. ESP-IDF tiež podporuje viacero štandardných zásobníkov sieťových protokolov, ako sú TCP/IP, HTTP, MQTT, WebSocket atď. Vývojári môžu na vytváranie sieťových aplikácií využiť známe rozhrania, ako je Socket. Komponenty poskytujú zrozumiteľnosť
34 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Obrázok 4.2. Adresár kódu úložiska ESP-IDF
a možno ich ľahko integrovať do aplikácií, čo umožňuje vývojárom sústrediť sa výlučne na obchodnú logiku. Niektoré bežné komponenty zahŕňajú: · Driver: Tento komponent obsahuje programy ovládačov periférnych zariadení pre rôzne Espressif
séria čipov, ako sú GPIO, I2C, SPI, UART, LEDC (PWM) atď. Programy ovládačov periférnych zariadení v tomto komponente ponúkajú abstraktné rozhrania nezávislé od čipu. Každá periféria má spoločnú hlavičku file (ako je gpio.h), čím sa eliminuje potreba zaoberať sa rôznymi otázkami podpory špecifickými pre čip. · esp_wifi: Wi-Fi ako špeciálne periférne zariadenie sa považuje za samostatný komponent. Zahŕňa viacero rozhraní API, ako je inicializácia rôznych režimov ovládača Wi-Fi, konfigurácia parametrov a spracovanie udalostí. Niektoré funkcie tohto komponentu sú poskytované vo forme knižníc statických odkazov. ESP-IDF tiež poskytuje komplexnú dokumentáciu ovládačov pre jednoduché použitie.
Kapitola 4. Nastavenie vývojového prostredia 35
· freertos: Tento komponent obsahuje úplný kód FreeRTOS. Okrem poskytovania komplexnej podpory pre tento operačný systém Espressif rozšíril svoju podporu aj na dvojjadrové čipy. Pre dvojjadrové čipy ako ESP32 a ESP32-S3 môžu používatelia vytvárať úlohy na konkrétnych jadrách.
b. Adresár dokumentov docs
Tento adresár obsahuje vývojové dokumenty súvisiace s ESP-IDF, vrátane príručky Začíname, referenčnej príručky API, príručky vývoja atď.
POZNÁMKA Po skompilovaní automatickými nástrojmi sa obsah tohto adresára umiestni na https://docs.espressif.com/projects/esp-idf. Uistite sa, že prepnete cieľ dokumentu na ESP32-C3 a vyberiete špecifikovanú verziu ESP-IDF.
c. Nástroje skriptovacích nástrojov
Tento adresár obsahuje bežne používané nástroje front-end pre kompiláciu, ako je idf.py a nástroj monitorovacieho terminálu idf_monitor.py atď. Podadresár cmake obsahuje aj hlavný skript files kompilačného systému, ktorý slúži ako základ pre implementáciu pravidiel kompilácie ESP-IDF. Pri pridávaní premenných prostredia sa obsah v adresári tools pridá do systémovej premennej prostredia, čo umožňuje spustiť idf.py priamo pod cestou projektu.
d. Naprample programový adresár napramples
Tento adresár obsahuje rozsiahlu zbierku ESP-IDF example programy, ktoré demonštrujú použitie komponentov API. Bývalýampsúbory sú usporiadané do rôznych podadresárov na základe ich kategórií:
· začať: Tento podadresár obsahuje naprampmenej ako „ahoj svet“ a „žmurknutie“, aby pomohli používateľom pochopiť základy.
· bluetooth: Môžete nájsť súvisiace s Bluetooth napramptu, vrátane Bluetooth LE Mesh, Bluetooth LE HID, BluFi a ďalších.
· wifi: Tento podadresár sa zameriava na Wi-Fi naprampvrátane základných programov ako Wi-Fi SoftAP, Wi-Fi Station, espnow, ako aj proprietárneho komunikačného protokolu examples z Espressif. Zahŕňa tiež viacero aplikačných vrstiev naprampsúbory založené na Wi-Fi, ako napríklad Iperf, Sniffer a Smart Config.
· periférne zariadenia: Tento rozsiahly podadresár je ďalej rozdelený do mnohých podpriečinkov na základe názvov periférnych zariadení. Obsahuje hlavne ovládač periférií napramppre čipy Espressif, pričom každý example predstavovať niekoľko sub-examples. Napríklad podadresár gpio obsahuje dva examples: GPIO a maticová klávesnica GPIO. Je dôležité si uvedomiť, že nie všetky exampsúbory v tomto adresári sú použiteľné pre ESP32-C3.
36 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Napríkladample, exampsúbory v usb/host sú použiteľné iba pre periférne zariadenia s hardvérom USB Host (ako je ESP32-S3) a ESP32-C3 toto periférne zariadenie nemá. Systém kompilácie zvyčajne poskytuje výzvy pri nastavovaní cieľa. Súbor README file z každého example uvádza zoznam podporovaných čipov. · protocols: Tento podadresár obsahuje naprampsúbory pre rôzne komunikačné protokoly, vrátane MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, ktoré pokrývajú širokú škálu komunikačných protokolov napr.ampmenej potrebné na rozvoj internetu vecí. · poskytovanie: Tu nájdete poskytovanie napramppre rôzne metódy, ako je poskytovanie Wi-Fi a Bluetooth LE. · system: Tento podadresár obsahuje ladenie systému naprampsúbory (napr. sledovanie zásobníka, sledovanie za behu, monitorovanie úloh), správa napájania napramples (napr. rôzne režimy spánku, koprocesory) a naprampsúbory súvisiace s bežnými systémovými komponentmi, ako je terminál konzoly, slučka udalostí a systémový časovač. · storage: V tomto podadresári nájdete naprampmenej zo všetkých file systémy a mechanizmy ukladania podporované ESP-IDF (ako je čítanie a zápis na Flash, SD kartu a iné pamäťové médiá), ako aj napr.ampsúbory energeticky nezávislého úložiska (NVS), FatFS, SPIFFS a iné file systémové operácie. · security: Tento podadresár obsahuje naprampsúbory súvisiace s flash šifrovaním. (2) Adresár reťazca nástroja na kompiláciu ESP-IDF (/.espressif), ako je znázornené na obrázku 4.3.
Obrázok 4.3. Adresár reťazca nástrojov na kompiláciu ESP-IDF
Kapitola 4. Nastavenie vývojového prostredia 37
a. Adresár distribúcie softvéru dist
Nástrojový reťazec ESP-IDF a ďalší softvér sú distribuované vo forme komprimovaných balíkov. Počas procesu inštalácie inštalačný nástroj najprv stiahne komprimovaný balík do adresára dist a potom ho rozbalí do určeného adresára. Po dokončení inštalácie je možné obsah v tomto adresári bezpečne odstrániť.
b. Adresár virtuálneho prostredia Python python env
Rôzne verzie ESP-IDF sa spoliehajú na špecifické verzie balíkov Python. Inštalácia týchto balíkov priamo na toho istého hostiteľa môže viesť ku konfliktom medzi verziami balíkov. Na vyriešenie tohto problému používa ESP-IDF virtuálne prostredia Pythonu na izoláciu rôznych verzií balíkov. Pomocou tohto mechanizmu môžu vývojári nainštalovať viacero verzií ESP-IDF na rovnaký hostiteľ a jednoducho medzi nimi prepínať importovaním rôznych premenných prostredia.
c. ESP-IDF kompilačný nástroj reťazec adresárových nástrojov
Tento adresár obsahuje hlavne nástroje krížovej kompilácie potrebné na kompiláciu projektov ESP-IDF, ako sú nástroje CMake, nástroje na zostavovanie Ninja a reťazec nástrojov gcc, ktorý generuje konečný spustiteľný program. Okrem toho sa v tomto adresári nachádza štandardná knižnica jazyka C/C++ spolu s príslušnou hlavičkou files. Ak program odkazuje na hlavičku systému file ako #include , reťazec kompilačných nástrojov nájde súbor stdio.h file v tomto adresári.
4.2 Nastavenie vývojového prostredia ESP-IDF
Vývojové prostredie ESP-IDF podporuje bežné operačné systémy ako Windows, Linux a macOS. Táto časť predstaví, ako nastaviť vývojové prostredie na každom systéme. Odporúča sa vyvíjať ESP32-C3 na systéme Linux, ktorý tu bude podrobne predstavený. Mnohé pokyny sú použiteľné naprieč platformami kvôli podobnosti vývojových nástrojov. Preto sa odporúča pozorne si prečítať obsah tejto časti.
POZNÁMKA Môžete si pozrieť online dokumenty dostupné na https://bookc3.espressif.com/esp32c3, ktoré poskytujú príkazy uvedené v tejto časti.
4.2.1 Nastavenie vývojového prostredia ESP-IDF v systéme Linux
Vývojové a ladiace nástroje GNU potrebné pre vývojové prostredie ESP-IDF sú natívne pre systém Linux. Okrem toho je terminál príkazového riadka v Linuxe výkonný a užívateľsky prívetivý, vďaka čomu je ideálnou voľbou pre vývoj ESP32-C3. Môžeš
38 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
vyberte preferovanú distribúciu Linuxu, ale odporúčame použiť Ubuntu alebo iné systémy založené na Debiane. Táto časť poskytuje návod na nastavenie vývojového prostredia ESP-IDF na Ubuntu 20.04.
1. Nainštalujte požadované balíky
Otvorte nový terminál a vykonajte nasledujúci príkaz na inštaláciu všetkých potrebných balíkov. Príkaz automaticky preskočí balíky, ktoré sú už nainštalované.
$ 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 Pre vyššie uvedený príkaz musíte použiť konto správcu a heslo. Štandardne sa pri zadávaní hesla nebudú zobrazovať žiadne informácie. Ak chcete pokračovať v postupe, jednoducho stlačte kláves „Enter“.
Git je kľúčový nástroj na správu kódu v ESP-IDF. Po úspešnom nastavení vývojového prostredia môžete použiť príkaz git log to view všetky zmeny kódu vykonané od vytvorenia ESP-IDF. Okrem toho sa Git používa aj v ESP-IDF na potvrdenie informácií o verzii, ktoré sú potrebné na inštaláciu správneho reťazca nástrojov zodpovedajúceho konkrétnym verziám. Spolu s Git patria medzi ďalšie dôležité systémové nástroje Python. ESP-IDF obsahuje množstvo automatizačných skriptov napísaných v Pythone. Nástroje ako CMake, Ninja-build a Ccache sú široko používané v projektoch C/C++ a slúžia ako predvolené nástroje na kompiláciu kódu a vytváranie v ESP-IDF. libusb-1.0-0 a dfu-util sú hlavné ovládače používané na sériovú komunikáciu cez USB a napaľovanie firmvéru. Po nainštalovaní softvérových balíkov môžete použiť apt show na získanie podrobných popisov každého balíka. Naprample, použite apt show git na vytlačenie popisných informácií pre nástroj Git.
Otázka: Čo robiť, ak verzia Pythonu nie je podporovaná? Odpoveď: ESP-IDF v4.3 vyžaduje verziu Pythonu, ktorá nie je nižšia ako v3.6. Pre staršie verzie Ubuntu si prosím manuálne stiahnite a nainštalujte vyššiu verziu Pythonu a nastavte Python3 ako predvolené prostredie Pythonu. Podrobné pokyny nájdete vyhľadaním kľúčového slova update-alternatives python.
2. Stiahnite si kód úložiska ESP-IDF
Otvorte terminál a vytvorte priečinok s názvom esp vo svojom domovskom adresári pomocou príkazu mkdir. Ak chcete, môžete pre priečinok zvoliť iný názov. Na vstup do priečinka použite príkaz cd.
Kapitola 4. Nastavenie vývojového prostredia 39
$ mkdir -p /esp $ cd /esp
Pomocou príkazu git clone stiahnite kód úložiska ESP-IDF, ako je uvedené nižšie:
$ git clone -b v4.3.2 – rekurzívne https://github.com/espressif/esp-idf.git
Vo vyššie uvedenom príkaze parameter -b v4.3.2 určuje verziu na stiahnutie (v tomto prípade verziu 4.3.2). Parameter –recursive zabezpečuje, že všetky čiastkové úložiská ESP-IDF sa sťahujú rekurzívne. Informácie o sub-repozitároch nájdete v .gitmodules file.
3. Nainštalujte reťazec vývojových nástrojov ESP-IDF
Espressif poskytuje automatizovaný skript install.sh na stiahnutie a inštaláciu reťazca nástrojov. Tento skript skontroluje aktuálnu verziu ESP-IDF a prostredie operačného systému a potom stiahne a nainštaluje vhodnú verziu balíkov nástrojov Python a reťazcov kompilačných nástrojov. Predvolená inštalačná cesta pre reťazec nástrojov je /.espressif. Všetko, čo musíte urobiť, je prejsť do adresára esp-idf a spustiť install.sh.
$ cd /esp/esp-idf $ ./install.sh
Ak úspešne nainštalujete reťaz nástrojov, terminál zobrazí:
Hotovo!
V tomto bode ste úspešne nastavili vývojové prostredie ESP-IDF.
4.2.2 Nastavenie vývojového prostredia ESP-IDF v systéme Windows
1. Stiahnite si inštalačný program nástrojov ESP-IDF
TIPY Odporúča sa nastaviť vývojové prostredie ESP-IDF v systéme Windows 10 alebo novšom. Inštalačný program si môžete stiahnuť z https://dl.espressif.com/dl/esp-idf/. Inštalátor je tiež softvér s otvoreným zdrojovým kódom a jeho zdrojový kód môže byť viewed na https: //github.com/espressif/idf-installer.
· Online inštalátor nástrojov ESP-IDF
Tento inštalačný program je relatívne malý, má veľkosť približne 4 MB a ďalšie balíčky a kód sa stiahnu počas procesu inštalácie. Advantage online inštalačného programu spočíva v tom, že softvérové balíky a kód je možné stiahnuť na požiadanie počas procesu inštalácie, ale umožňuje aj inštaláciu všetkých dostupných verzií ESP-IDF a najnovšej vetvy kódu GitHub (ako je hlavná vetva) . DisadvantagZnamená to, že počas procesu inštalácie vyžaduje sieťové pripojenie, čo môže spôsobiť zlyhanie inštalácie v dôsledku problémov so sieťou.
40 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
· Offline inštalátor nástrojov ESP-IDF Tento inštalátor je väčší, má veľkosť približne 1 GB a obsahuje všetky softvérové balíky a kód potrebné na nastavenie prostredia. Hlavná výhodatage offline inštalačného programu je, že ho možno použiť na počítačoch bez prístupu na internet a vo všeobecnosti má vyššiu úspešnosť inštalácie. Je potrebné poznamenať, že offline inštalačný program môže nainštalovať iba stabilné vydania ESP-IDF označené v*.* alebo v*.*.*.
2. Spustite inštalačný program nástrojov ESP-IDF Po stiahnutí vhodnej verzie inštalačného programu (napríklad ESP-IDF Tools Offline 4.3.2ample tu), dvakrát kliknite na súbor exe file na spustenie inštalačného rozhrania ESP-IDF. Nasledujúci text ukazuje, ako nainštalovať stabilnú verziu ESP-IDF v4.3.2 pomocou offline inštalátora.
(1) V rozhraní „Vybrať jazyk inštalácie“ znázornenom na obrázku 4.4 vyberte z rozbaľovacieho zoznamu jazyk, ktorý sa má použiť.
Obrázok 4.4. Rozhranie „Vyberte jazyk inštalácie“ (2) Po výbere jazyka kliknite na „OK“, aby sa zobrazilo rozhranie „Licenčná zmluva“
(pozri obrázok 4.5). Po pozornom prečítaní inštalačnej licenčnej zmluvy vyberte „Súhlasím s dohodou“ a kliknite na „Ďalej“.
Obrázok 4.5. Rozhranie „Licenčná zmluva“ Kapitola 4. Nastavenie vývojového prostredia 41
(3) Review konfiguráciu systému v rozhraní „Kontrola systému pred inštaláciou“ (pozri obrázok 4.6). Skontrolujte verziu systému Windows a informácie o nainštalovanom antivírusovom softvéri. Ak sú všetky položky konfigurácie normálne, kliknite na tlačidlo „Ďalej“. V opačnom prípade môžete kliknúť na „Úplný denník“ pre riešenia založené na kľúčových položkách.
Obrázok 4.6. TIPY rozhrania „Kontrola systému pred inštaláciou“.
Ak potrebujete pomoc, môžete odoslať protokoly na https://github.com/espressif/idf-installer/issues. (4) Vyberte inštalačný adresár ESP-IDF. Tu vyberte D:/.espressif, ako je znázornené na obrázku
Obrázok 4.7 a kliknite na „Ďalej“. Upozorňujeme, že .espressif tu je skrytý adresár. Po dokončení inštalácie môžete view konkrétny obsah tohto adresára otvorením súboru file správcu a zobrazovanie skrytých položiek.
Obrázok 4.7. Vyberte inštalačný adresár ESP-IDF 42 ESP32-C3 Wireless Adventure: Komplexný sprievodca internetom vecí
(5) Skontrolujte komponenty, ktoré je potrebné nainštalovať, ako je znázornené na obrázku 4.8. Odporúča sa použiť predvolenú možnosť, to znamená dokončiť inštaláciu a potom kliknúť na „Ďalej“.
Obrázok 4.8. Vyberte komponenty na inštaláciu (6) Potvrďte komponenty, ktoré sa majú nainštalovať a kliknite na „Inštalovať“, aby ste spustili automatickú inštaláciu.
proces inštalácie, ako je znázornené na obrázku 4.9. Proces inštalácie môže trvať desiatky minút a indikátor priebehu inštalácie je znázornený na obrázku 4.10. Čakajte prosím trpezlivo.
Obrázok 4.9. Príprava na inštaláciu (7) Po dokončení inštalácie sa odporúča skontrolovať „Registrovať ESP-IDF
Spustiteľné súbory nástrojov ako vylúčenia programu Windows Defender…“, aby sa zabránilo vymazaniu antivírusového softvéru files. Pridaním vylúčených položiek môžete tiež preskočiť časté kontroly antivírusom
Kapitola 4. Nastavenie vývojového prostredia 43
Obrázok 4.10. Softvér s indikátorom priebehu inštalácie, ktorý výrazne zlepšuje efektivitu kompilácie kódu systému Windows. Kliknutím na „Dokončiť“ dokončíte inštaláciu vývojového prostredia, ako je znázornené na obrázku 4.11. Môžete začiarknuť políčko „Spustiť prostredie ESP-IDF PowerShell“ alebo „Spustiť príkazový riadok ESP-IDF“. Spustite kompilačné okno priamo po inštalácii, aby ste sa uistili, že vývojové prostredie funguje normálne.
Obrázok 4.11. Inštalácia dokončená (8) Otvorte nainštalované vývojové prostredie v zozname programov (buď ESP-IDF 4.3
Terminál CMD alebo ESP-IDF 4.3 PowerShell, ako je znázornené na obrázku 4.12) a premenná prostredia ESP-IDF sa pri spustení v termináli automaticky pridajú. Potom môžete na operácie použiť príkaz idf.py. Otvorený CMD ESP-IDF 4.3 je znázornený na obrázku 4.13. 44 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
Obrázok 4.12. Nainštalované vývojové prostredie
Obrázok 4.13. ESP-IDF 4.3 CMD
4.2.3 Nastavenie vývojového prostredia ESP-IDF na Macu
Proces inštalácie vývojového prostredia ESP-IDF v systéme Mac je rovnaký ako v systéme Linux. Príkazy na stiahnutie kódu úložiska a inštaláciu reťazca nástrojov sú úplne rovnaké. Len príkazy na inštaláciu balíkov závislostí sa mierne líšia. 1. Inštalácia balíkov závislostí Otvorte terminál a nainštalujte pip, nástroj na správu balíkov Pythonu, spustením nasledujúceho príkazu:
% sudo jednoduchá inštalácia pip
Nainštalujte Homebrew, nástroj na správu balíkov pre macOS, spustením nasledujúceho príkazu:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
Nainštalujte požadované balíčky závislostí spustením nasledujúceho príkazu:
% brew python3 nainštalovať cmake ninja ccache dfu-util
2. Stiahnite si kód úložiska ESP-IDF Podľa pokynov v časti 4.2.1 si stiahnite kód úložiska ESP-IDF. Kroky sú rovnaké ako pri sťahovaní v systéme Linux.
Kapitola 4. Nastavenie vývojového prostredia 45
3. Nainštalujte reťazec vývojových nástrojov ESP-IDF
Postupujte podľa pokynov uvedených v časti 4.2.1 a nainštalujte reťazec vývojových nástrojov ESP-IDF. Kroky sú rovnaké ako pri inštalácii v systéme Linux.
4.2.4 Inštalácia kódu VS
V predvolenom nastavení ESP-IDF SDK neobsahuje nástroj na úpravu kódu (hoci najnovší inštalačný program ESP-IDF pre Windows ponúka možnosť nainštalovať ESP-IDF Eclipse). Na úpravu kódu a jeho následnú kompiláciu pomocou príkazov terminálu môžete použiť ľubovoľný nástroj na úpravu textu podľa vlastného výberu.
Jedným z populárnych nástrojov na úpravu kódu je VS Code (Visual Studio Code), čo je bezplatný editor kódu bohatý na funkcie s užívateľsky prívetivým rozhraním. Ponúka rôzne plugins ktoré poskytujú funkcie, ako je navigácia v kóde, zvýrazňovanie syntaxe, riadenie verzií Git a integrácia terminálov. Okrem toho spoločnosť Espressif vyvinula špeciálny doplnok s názvom Espressif IDF pre kód VS, ktorý zjednodušuje konfiguráciu projektu a ladenie.
Na rýchle otvorenie aktuálneho priečinka vo VS Code môžete použiť príkaz code v termináli. Prípadne môžete použiť skratku Ctrl+ na otvorenie predvolenej terminálovej konzoly systému v rámci VS Code.
TIPY Na vývoj kódu ESP32-C3 sa odporúča použiť kód VS. Stiahnite si a nainštalujte najnovšiu verziu VS Code na https://code.visualstudio.com/.
4.2.5 Úvod do vývojových prostredí tretích strán
Okrem oficiálneho vývojového prostredia ESP-IDF, ktoré primárne používa jazyk C, podporuje ESP32-C3 aj ďalšie bežné programovacie jazyky a širokú škálu vývojových prostredí tretích strán. Niektoré pozoruhodné možnosti zahŕňajú:
Arduino: open-source platforma pre hardvér aj softvér, podporujúca rôzne mikrokontroléry, vrátane ESP32-C3.
Používa jazyk C++ a ponúka zjednodušené a štandardizované API, bežne označované ako jazyk Arduino. Arduino je široko používané pri vývoji prototypov a vzdelávacích kontextoch. Poskytuje rozšíriteľný softvérový balík a IDE, ktoré umožňuje jednoduchú kompiláciu a flashovanie.
MicroPython: tlmočník jazyka Python 3 navrhnutý tak, aby fungoval na platformách vstavaných mikrokontrolérov.
Pomocou jednoduchého skriptovacieho jazyka môže priamo pristupovať k periférnym zdrojom ESP32-C3 (ako UART, SPI a I2C) a komunikačným funkciám (ako Wi-Fi a Bluetooth LE).
46 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
To zjednodušuje interakciu hardvéru. MicroPython v kombinácii s rozsiahlou matematickou prevádzkovou knižnicou Pythonu umožňuje implementáciu zložitých algoritmov na ESP32-C3, čo uľahčuje vývoj aplikácií súvisiacich s AI. Ako skriptovací jazyk nie je potrebné opakované kompilovanie; je možné vykonávať úpravy a priamo spúšťať skripty.
NodeMCU: tlmočník jazyka LUA vyvinutý pre čipy série ESP.
Podporuje takmer všetky periférne funkcie čipov ESP a je ľahší ako MicroPython. Podobne ako MicroPython, NodeMCU používa skriptovací jazyk, čím eliminuje potrebu opakovanej kompilácie.
Okrem toho ESP32-C3 podporuje aj operačné systémy NuttX a Zephyr. NuttX je operačný systém v reálnom čase, ktorý poskytuje rozhrania kompatibilné s POSIX, čím sa zlepšuje prenosnosť aplikácií. Zephyr je malý operačný systém v reálnom čase špeciálne navrhnutý pre aplikácie internetu vecí. Zahŕňa množstvo softvérových knižníc potrebných pri vývoji internetu vecí, ktoré sa postupne vyvíjajú do komplexného softvérového ekosystému.
Táto kniha neposkytuje podrobné pokyny na inštaláciu pre vyššie uvedené vývojové prostredia. Vývojové prostredie môžete nainštalovať na základe vašich požiadaviek podľa príslušnej dokumentácie a pokynov.
4.3 Kompilačný systém ESP-IDF
4.3.1 Základné pojmy kompilačného systému
Projekt ESP-IDF je súborom hlavného programu so vstupnou funkciou a viacerými nezávislými funkčnými komponentmi. Naprample, projekt, ktorý riadi LED spínače, pozostáva hlavne z hlavného vstupného programu a komponentu ovládača, ktorý riadi GPIO. Ak chcete realizovať LED diaľkové ovládanie, musíte pridať aj Wi-Fi, zásobník TCP/IP protokolov atď.
Kompilačný systém môže kompilovať, spájať a generovať spustiteľný súbor files (.bin) pre kód prostredníctvom súboru stavebných pravidiel. Kompilačný systém verzií ESP-IDF v4.0 a vyšších je štandardne založený na CMake a kompilačný skript CMakeLists.txt možno použiť na ovládanie správania pri kompilácii kódu. Okrem podpory základnej syntaxe CMake, kompilačný systém ESP-IDF tiež definuje sadu predvolených pravidiel kompilácie a funkcií CMake a kompilačný skript môžete napísať pomocou jednoduchých príkazov.
4.3.2 Projekt File Štruktúra
Projekt je priečinok, ktorý obsahuje hlavný vstupný program, používateľom definované komponenty a filesú potrebné na vytváranie spustiteľných aplikácií, ako sú kompilačné skripty, konfigurácia
Kapitola 4. Nastavenie vývojového prostredia 47
files, tabuľky oddielov atď. Projekty je možné skopírovať a odovzdať ďalej a rovnaký spustiteľný súbor file môžu byť kompilované a generované na strojoch s rovnakou verziou vývojového prostredia ESP-IDF. Typický projekt ESP-IDF file štruktúra je znázornená na obrázku 4.14.
Obrázok 4.14. Typický projekt ESP-IDF file štruktúra Keďže ESP-IDF podporuje viacero IoT čipov od Espressif, vrátane ESP32, ESP32-S série, ESP32-C série, ESP32-H série atď., pred kompiláciou kódu je potrebné určiť cieľ. Cieľ je ako hardvérové zariadenie, na ktorom je spustený aplikačný program, tak aj cieľ zostavenia kompilačného systému. V závislosti od vašich potrieb môžete zadať jeden alebo viac cieľov pre váš projekt. NapríkladampPomocou príkazu idf.py set-target esp32c3 môžete nastaviť cieľ kompilácie na ESP32-C3, počas ktorého sa načítajú predvolené parametre a reťazová cesta kompilačného nástroja pre ESP32C3. Po kompilácii je možné vygenerovať spustiteľný program pre ESP32C3. Môžete tiež znova spustiť príkaz set-target a nastaviť iný cieľ a kompilačný systém sa automaticky vyčistí a prekonfiguruje. Komponenty
Komponenty v ESP-IDF sú modulárne a nezávislé kódové jednotky spravované v rámci kompilačného systému. Sú usporiadané ako priečinky, pričom názov priečinka štandardne predstavuje názov komponentu. Každý komponent má svoj vlastný kompilačný skript, ktorý 48 ESP32-C3 Wireless Adventure: Komplexný sprievodca internetom vecí
špecifikuje jeho kompilačné parametre a závislosti. Počas procesu kompilácie sú komponenty kompilované do samostatných statických knižníc (.a files) a prípadne sa skombinujú s inými komponentmi, aby vytvorili aplikačný program.
ESP-IDF poskytuje základné funkcie, ako je operačný systém, ovládače periférnych zariadení a zásobník sieťových protokolov, vo forme komponentov. Tieto komponenty sú uložené v adresári komponentov, ktorý sa nachádza v koreňovom adresári ESP-IDF. Vývojári nemusia kopírovať tieto komponenty do adresára komponentov myProject. Namiesto toho potrebujú iba špecifikovať vzťahy závislostí týchto komponentov v súbore CMakeLists.txt projektu file pomocou direktív REQUIRES alebo PRIV_REQUIRES. Kompilačný systém automaticky nájde a skompiluje požadované komponenty.
Preto nie je potrebný adresár komponentov pod myProject. Používa sa len na zahrnutie niektorých vlastných komponentov projektu, ktorými môžu byť knižnice tretích strán alebo užívateľsky definovaný kód. Okrem toho môžu byť komponenty získavané z ľubovoľného adresára iného ako ESP-IDF alebo aktuálneho projektu, napríklad z open-source projektu uloženého v inom adresári. V tomto prípade stačí pridať cestu ku komponentu nastavením premennej EXTRA_COMPONENT_DIRS v súbore CMakeLists.txt v koreňovom adresári. Tento adresár prepíše akýkoľvek komponent ESP-IDF s rovnakým názvom, čím sa zabezpečí, že sa použije správny komponent.
Vstupný program main Hlavný adresár v rámci projektu nasleduje rovnako file štruktúru ako ostatné komponenty (napr. komponent1). Má však osobitný význam, keďže ide o povinný komponent, ktorý musí existovať v každom projekte. Hlavný adresár obsahuje zdrojový kód projektu a vstupný bod užívateľského programu, zvyčajne s názvom app_main. Štandardne sa spúšťanie užívateľského programu začína od tohto vstupného bodu. Hlavná zložka sa tiež líši tým, že automaticky závisí od všetkých zložiek v rámci vyhľadávacej cesty. Preto nie je potrebné explicitne označovať závislosti pomocou direktív REQUIRES alebo PRIV_REQUIRES v súbore CMakeLists.txt file.
Konfigurácia file Koreňový adresár projektu obsahuje konfiguráciu file sdkconfig, ktorý obsahuje konfiguračné parametre pre všetky komponenty v rámci projektu. Súbor sdkconfig file je automaticky generovaný kompilačným systémom a môže byť upravený a regenerovaný príkazom idf.py menuconfig. Možnosti menuconfig pochádzajú hlavne z Kconfig.projbuild projektu a Kconfig komponentov. Vývojári komponentov vo všeobecnosti pridávajú konfiguračné položky do Kconfig, aby bol komponent flexibilný a konfigurovateľný.
Adresár zostavy V predvolenom nastavení sa v adresári zostavy v rámci projektu ukladá medziprodukt files a fi-
Kapitola 4. Nastavenie vývojového prostredia 49
nal spustiteľné programy generované príkazom idf.py build. Vo všeobecnosti nie je potrebné priamo pristupovať k obsahu adresára zostavy. ESP-IDF poskytuje preddefinované príkazy na interakciu s adresárom, ako je napríklad použitie príkazu idf.py flash na automatické vyhľadanie skompilovaného binárneho súboru. file a flashujte ho na zadanú adresu flash, alebo pomocou príkazu idf.py fullclean vyčistite celý adresár zostavy.
Tabuľka oddielov (partitions.csv) Každý projekt vyžaduje tabuľku oddielov na rozdelenie priestoru flash a určenie veľkosti a počiatočnej adresy spustiteľného programu a priestoru pre používateľské údaje. Príkaz idf.py flash alebo OTA upgrade program vykoná flashovanie firmvéru na zodpovedajúcu adresu podľa tejto tabuľky. ESP-IDF poskytuje niekoľko predvolených tabuliek oddielov v komponentoch/ tabuľka_rozdielov, ako napríklad partitions_singleapp.csv a partitions_two_ ota.csv, ktoré je možné vybrať v menuconfig.
Ak predvolená tabuľka oblastí systému nemôže spĺňať požiadavky projektu, do adresára projektu možno pridať vlastný súbor partitions.csv a vybrať ho v menuconfig.
4.3.3 Predvolené pravidlá zostavovania kompilačného systému
Pravidlá pre nahradenie komponentov s rovnakým názvom Počas procesu vyhľadávania komponentov sa systém kompilácie riadi špecifickým poradím. Najprv hľadá interné komponenty ESP-IDF, potom hľadá komponenty užívateľského projektu a nakoniec hľadá komponenty v EXTRA_COMPONENT_DIRS. V prípadoch, keď viaceré adresáre obsahujú komponenty s rovnakým názvom, komponent nájdený v poslednom adresári prepíše všetky predchádzajúce komponenty s rovnakým názvom. Toto pravidlo umožňuje prispôsobenie komponentov ESP-IDF v rámci používateľského projektu pri zachovaní pôvodného kódu ESP-IDF.
Pravidlá pre štandardné zahrnutie bežných komponentov Ako je uvedené v časti 4.3.2, komponenty musia explicitne špecifikovať svoje závislosti od iných komponentov v súbore CMakeLists.txt. Bežné komponenty, ako napríklad freertos, sú však v predvolenom nastavení automaticky zahrnuté do systému zostavovania, aj keď ich vzťahy závislostí nie sú explicitne definované v kompilačnom skripte. Bežné komponenty ESP-IDF zahŕňajú freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv a cxx. Použitím týchto spoločných komponentov sa vyhnete opakovanej práci pri písaní CMakeLists.txt a urobíte ho prehľadnejším.
Pravidlá pre prepísanie položiek konfigurácie Vývojári môžu pridať predvolené konfiguračné parametre pridaním predvolenej konfigurácie file s názvom sdkconfig.defaults projektu. Naprample, pridávajúc CONFIG_LOG_
50 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
DEFAULT_LEVEL_NONE = Môžete nakonfigurovať rozhranie UART tak, aby štandardne netlačilo údaje denníka. Okrem toho, ak je potrebné nastaviť špecifické parametre pre konkrétny cieľ, konfiguráciu file možno pridať sdkconfig.defaults.TARGET_NAME, pričom TARGET_NAME môže byť esp32s2, esp32c3 atď. Tieto konfigurácie files sa importujú do sdkconfig počas kompilácie so všeobecnou predvolenou konfiguráciou file Najprv sa importuje sdkconfig.defaults, potom nasleduje konfigurácia špecifická pre cieľ file, ako napríklad sdkconfig.defaults.esp32c3. V prípadoch, keď existujú konfiguračné položky s rovnakým názvom, druhá konfigurácia file prepíše to prvé.
4.3.4 Úvod do kompilačného skriptu
Pri vývoji projektu pomocou ESP-IDF vývojári potrebujú nielen napísať zdrojový kód, ale musia tiež napísať CMakeLists.txt pre projekt a komponenty. CMakeLists.txt je text file, tiež známy ako kompilačný skript, ktorý definuje sériu objektov kompilácie, položky konfigurácie kompilácie a príkazy na vedenie procesu kompilácie zdrojového kódu. Kompilačný systém ESP-IDF v4.3.2 je založený na CMake. Okrem podpory natívnych funkcií a príkazov CMake definuje aj sériu vlastných funkcií, vďaka ktorým je oveľa jednoduchšie písať kompilačné skripty.
Kompilačné skripty v ESP-IDF zahŕňajú hlavne skript kompilácie projektu a skripty kompilácie komponentov. Súbor CMakeLists.txt v koreňovom adresári projektu sa nazýva skript kompilácie projektu, ktorý riadi proces kompilácie celého projektu. Základný skript kompilácie projektu zvyčajne obsahuje nasledujúce tri riadky:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Medzi nimi musí byť cmake_minimum_required (VERZIA 3.5) umiestnený na prvom riadku, ktorý sa používa na označenie minimálneho čísla verzie CMake požadovaného projektom. Novšie verzie CMake sú vo všeobecnosti spätne kompatibilné so staršími verziami, takže pri používaní novších príkazov CMake podľa toho upravte číslo verzie, aby ste zabezpečili kompatibilitu.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) importuje preddefinované konfiguračné položky a príkazy kompilačného systému ESP-IDF, vrátane predvolených pravidiel zostavovania kompilačného systému popísaných v časti 4.3.3. project(myProject) vytvorí samotný projekt a zadá jeho názov. Tento názov sa použije ako konečný výstupný binárny súbor file meno, tj myProject.elf a myProject.bin.
Projekt môže mať viacero komponentov vrátane hlavného komponentu. Adresár najvyššej úrovne každého komponentu obsahuje súbor CMakeLists.txt file, ktorý sa nazýva skript kompilácie komponentov. Skripty kompilácie komponentov sa používajú hlavne na špecifikáciu závislostí komponentov, konfiguračných parametrov, zdrojového kódu files a vrátane hlavičky files pre
Kapitola 4. Nastavenie vývojového prostredia 51
kompilácia. S vlastnou funkciou idf_component_register ESP-IDF je minimálny požadovaný kód pre skript kompilácie komponentu nasledovný:
1. idf_component_register(SRCS „src1.c“
2.
INCLUDE_DIRS „zahrnúť“
3.
VYŽADUJE komponent1)
Parameter SRCS poskytuje zoznam zdrojov files v komponente oddelené medzerami, ak je ich viacero files. Parameter INCLUDE_DIRS poskytuje zoznam verejných hlavičiek file adresáre pre komponent, ktoré sa pridajú do vyhľadávacej cesty include pre ďalšie komponenty, ktoré závisia od aktuálneho komponentu. Parameter REQUIRES identifikuje závislosti verejného komponentu pre aktuálny komponent. Pre komponenty je potrebné explicitne uviesť, na ktorých komponentoch závisia, ako napríklad komponent2 v závislosti od komponentu1. Pre hlavný komponent, ktorý štandardne závisí od všetkých komponentov, však možno parameter REQUIRES vynechať.
Okrem toho je možné v kompilačnom skripte použiť aj natívne príkazy CMake. Napríkladample, použite príkaz set na nastavenie premenných, ako napríklad set(VARIABLE “VALUE”).
4.3.5 Úvod do bežných príkazov
ESP-IDF používa CMake (nástroj na konfiguráciu projektu), Ninja (nástroj na vytváranie projektov) a esptool (nástroj flash) v procese kompilácie kódu. Každý nástroj hrá inú úlohu v procese kompilácie, zostavovania a flashovania a tiež podporuje rôzne prevádzkové príkazy. Na uľahčenie používateľskej prevádzky ESP-IDF pridáva jednotný front-end idf.py, ktorý umožňuje rýchle volanie vyššie uvedených príkazov.
Pred použitím idf.py sa uistite, že:
· Premenná prostredia IDF_PATH ESP-IDF bola pridaná do aktuálneho terminálu. · Adresár na vykonanie príkazu je koreňový adresár projektu, ktorý obsahuje
skript na kompiláciu projektu CMakeLists.txt.
Bežné príkazy idf.py sú nasledovné:
· idf.py –help: zobrazenie zoznamu príkazov a pokynov na ich použitie. · idf.py set-target : nastavenie kompilácie taidf.py fullcleanrget, napr
ako náhrada s esp32c3. · idf.py menuconfig: spustenie menuconfig, grafická konfigurácia terminálu
nástroj, ktorý môže vybrať alebo upraviť možnosti konfigurácie a výsledky konfigurácie sa uložia do súboru sdkconfig file. · idf.py build: spustenie kompilácie kódu. Medziprodukt files a konečný spustiteľný program vygenerovaný kompiláciou sa štandardne uloží do adresára zostavenia projektu. Proces kompilácie je prírastkový, čo znamená, že ak len jeden zdroj file je upravený, iba upravený file bude zostavený nabudúce.
52 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
· idf.py clean: čistenie medziproduktu files generované kompiláciou projektu. Celý projekt bude nútený skompilovať v ďalšej kompilácii. Všimnite si, že konfigurácia CMake a úpravy konfigurácie vykonané pomocou menuconfig sa počas čistenia neodstránia.
· idf.py fullclean: vymazanie celého adresára zostavy, vrátane všetkých výstupov konfigurácie CMake files. Pri opätovnom vytváraní projektu CMake nakonfiguruje projekt od začiatku. Upozorňujeme, že tento príkaz rekurzívne odstráni všetky files v adresári zostavenia, takže ho používajte opatrne a konfiguráciu projektu file nebudú odstránené.
· idf.py flash: blikanie binárneho spustiteľného programu file generované zostavením do cieľového ESP32-C3. Možnosti -p a -b slúžia na nastavenie názvu zariadenia sériového portu a prenosovej rýchlosti pre blikanie, resp. Ak tieto dve možnosti nie sú špecifikované, sériový port sa automaticky zistí a použije sa predvolená prenosová rýchlosť.
· idf.py monitor: zobrazuje výstup sériového portu cieľového ESP32-C3. Voľba -p sa môže použiť na zadanie názvu zariadenia sériového portu na strane hostiteľa. Počas tlače cez sériový port stlačte kombináciu klávesov Ctrl+] na ukončenie monitora.
Vyššie uvedené príkazy je možné podľa potreby aj kombinovať. Naprample, príkaz idf.py build flash monitor vykoná kompiláciu kódu, flash a otvorí monitor sériového portu v poradí.
Môžete navštíviť https://bookc3.espressif.com/build-system, kde sa dozviete viac o systéme kompilácie ESP-IDF.
4.4 Cvičenie: Zostavenie Prample Program „Blink“
4.4.1 Prample Analýza
Táto sekcia bude brať program Blink ako example analyzovať file podrobne o štruktúre a pravidlách kódovania reálneho projektu. Program Blink implementuje efekt blikania LED a projekt sa nachádza v adresári examples/get-started/blink, ktorý obsahuje zdroj file, konfigurácia files a niekoľko kompilačných skriptov.
Projekt inteligentného svetla predstavený v tejto knihe je založený na tomto príkladeample program. Funkcie budú postupne pridané v neskorších kapitolách, aby sa to konečne dokončilo.
Zdrojový kód Na demonštráciu celého procesu vývoja bol program Blink skopírovaný do esp32c3-iot-projects/device firmware/1 blink.
Adresárová štruktúra projektu blink files je znázornené na obrázku 4.15.
Projekt blink obsahuje iba jeden hlavný adresár, čo je špeciálny komponent, ktorý
Kapitola 4. Nastavenie vývojového prostredia 53
Obrázok 4.15. File adresárová štruktúra projektu blink
musia byť zahrnuté podľa popisu v časti 4.3.2. Hlavný adresár sa používa hlavne na uloženie implementácie funkcie app_main(), ktorá je vstupným bodom do používateľského programu. Projekt blink nezahŕňa adresár komponentov, pretože tento napr.ampStačí použiť komponenty, ktoré sa dodávajú s ESP-IDF a nevyžaduje ďalšie komponenty. Súbor CMakeLists.txt zahrnutý v projekte blink sa používa na usmernenie procesu kompilácie, zatiaľ čo Kconfig.projbuild sa používa na pridanie konfiguračných položiek pre tento príkladampprogram v menuconfig. Ostatné zbytočné files neovplyvnia kompiláciu kódu, preto sa tu o nich nebudeme diskutovať. Podrobný úvod do projektu blink files je nasledovné.
1. /*blink.c obsahuje nasledujúcu hlavičku files*/
2. #include
//Záhlavie štandardnej knižnice C file
3. #include “freertos/freeRTOS.h” //Hlavná hlavička FreeRTOS file
4. #include „freertos/task.h“
//FreeRTOS Hlavička úlohy file
5. #include „sdkconfig.h“
//Hlavička konfigurácie file generované programom kconfig
6. #include „driver/gpio.h“
//Hlavička ovládača GPIO file
Zdroj file blink.c obsahuje sériu hlavičiek files zodpovedajúca funkcii deklarovať-
cie. ESP-IDF vo všeobecnosti dodržiava poradie zahrnutia hlavičky štandardnej knižnice files, FreeR-
hlavička TOS files, hlavička vodiča files, hlavička iného komponentu files a hlavičku projektu files.
Poradie, v ktorom hlavička files, ktoré sú zahrnuté, môžu ovplyvniť konečný výsledok kompilácie, skúste to preto
postupujte podľa predvolených pravidiel. Treba poznamenať, že sdkconfig.h sa generuje automaticky
pomocou kconfig a dá sa nakonfigurovať iba pomocou príkazu idf.py menuconfig.
Priama úprava tejto hlavičky file budú prepísané.
1. /* Môžete vybrať GPIO zodpovedajúce LED v idf.py menuconfig a výsledkom úpravy menuconfig je, že hodnota CONFIG_BLINK
_GPIO sa zmení. Môžete tiež priamo upraviť definíciu makra
tu a zmeňte CONFIG_BLINK_GPIO na pevnú hodnotu.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Nakonfigurujte IO ako predvolenú funkciu GPIO, povoľte režim pull-up a
6.
zakázať režimy vstupu a výstupu*/
7.
gpio_reset_pin(BLINK_GPIO);
54 Bezdrôtové dobrodružstvo ESP32-C3: Komplexný sprievodca internetom vecí
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Nastaviť GPIO na výstupný režim*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Vytlačiť protokol*/ printf(“Vypnutie LED diódy”); /*Vypnutie LED (nízka úroveň výstupu)*/ gpio_set_level(BLINK_GPIO, 0); /*Oneskorenie (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“Zapnutie LEDn”); /*Zapnite LED (vysoká úroveň výstupu)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Funkcia app_main() v príklade Blinkample program slúži ako vstupný bod pre užívateľské programy. Je to jednoduchá funkcia bez parametrov a návratovej hodnoty. Táto funkcia sa volá po dokončení inicializácie systému, ktorá zahŕňa úlohy ako inicializácia sériového portu protokolu, konfigurácia jedného/dvojjadra a konfigurácia strážneho psa.
Funkcia app_main() beží v kontexte úlohy s názvom main. Veľkosť zásobníka a prioritu tejto úlohy je možné upraviť v menuconfig Componentconfig Common ESP-related.
Pre jednoduché úlohy, ako je blikanie LED, je možné všetok potrebný kód implementovať priamo do funkcie app_main(). Zvyčajne to zahŕňa inicializáciu GPIO zodpovedajúceho LED a použitie slučky while(1) na zapnutie a vypnutie LED. Prípadne môžete použiť FreeRTOS API na vytvorenie novej úlohy, ktorá sa postará o blikanie LED. Po úspešnom vytvorení novej úlohy môžete ukončiť funkciu app_main().
Obsah súboru main/CMakeLists.txt file, ktorý riadi proces kompilácie pre hlavný komponent, je nasledujúci:
1. idf_component_register(SRCS „blink.c“ INCLUDE_DIRS „.“ )
Medzi nimi main/CMakeLists.txt volá iba jednu systémovú funkciu kompilácie, a to idf_component_register. Podobne ako súbor CMakeLists.txt pre väčšinu ostatných komponentov, blink.c je pridaný do SRCS a zdroj files pridané do SRCS budú skompilované. Zároveň by sa do INCLUDE_DIRS malo pridať „.“, ktoré predstavuje cestu, kde sa nachádza súbor CMakeLists.txt ako vyhľadávacie adresáre pre hlavičku files. Obsah súboru CMakeLists.txt je nasledujúci:
1. #Určite v3.5 ako najstaršiu verziu CMake podporovanú aktuálnym projektom 2. #Verzie nižšie ako v3.5 musia byť aktualizované pred pokračovaním kompilácie 3. cmake_minimum_required(VERSION 3.5) 4. #Zahrňte predvolenú konfiguráciu CMake ESP - IDF kompilačný systém
Kapitola 4. Nastavenie vývojového prostredia 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Vytvorte projekt s názvom „blink“ 7. project(myProject)
Medzi nimi CMakeLists.txt v koreňovom adresári obsahuje hlavne $ENV{IDF_ PATH}/tools/cmake/project.cmake, čo je hlavná konfigurácia CMake file poskytuje ESP-IDF. Používa sa na kon
Dokumenty / zdroje
![]() |
Bezdrôtové dobrodružstvo Espressif Systems ESP32-C3 [pdf] Používateľská príručka ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |