ESP32-C3 vezeték nélküli kaland
ESP32-C3 vezeték nélküli kaland
Átfogó útmutató az IoT-hez
Espressif Systems 12. június 2023
Műszaki adatok
- Termék: ESP32-C3 Wireless Adventure
- Gyártó: Espressif Systems
- Időpont: 12. június 2023
A termék használati útmutatója
Készítmény
Az ESP32-C3 Wireless Adventure használata előtt győződjön meg arról, hogy igen
ismeri az IoT fogalmait és architektúráját. Ez segíteni fog
megérti, hogyan illeszkedik az eszköz a nagyobb IoT-ökoszisztémába
és lehetséges alkalmazásai az intelligens otthonokban.
Az IoT-projektek bemutatása és gyakorlata
Ebben a részben megismerheti a tipikus IoT-projekteket,
beleértve a gyakori IoT-eszközök alapmoduljait, alapmoduljait
az ügyfélalkalmazások és a közös IoT felhőplatformok. Ez lesz
alapot nyújtanak a saját megértéséhez és megteremtéséhez
saját IoT projektek.
Gyakorlat: Smart Light Project
Ebben a gyakorlati projektben megtanulod, hogyan kell okosat létrehozni
világít az ESP32-C3 Wireless Adventure segítségével. A projekt felépítése,
funkciók, hardver előkészítés és fejlesztési folyamat lesz
részletesen kifejtette.
Projekt felépítése
A projekt több összetevőből áll, köztük a
ESP32-C3 Wireless Adventure, LED-ek, érzékelők és egy felhő
backend.
Projekt funkciók
Az intelligens fényprojekt lehetővé teszi a fényerő és a
a LED-ek színét távolról mobilalkalmazáson keresztül, ill web
felület.
Hardver előkészítés
A projekt előkészítéséhez össze kell gyűjtenie a
szükséges hardverösszetevők, például az ESP32-C3 Wireless
Kalandtábla, LED-ek, ellenállások és tápegység.
Fejlesztési folyamat
A fejlesztési folyamat magában foglalja a fejlesztés beállítását
környezet, kód írása a LED-ek vezérléséhez, csatlakozás a
felhő háttérrendszer, valamint az intelligens funkcionalitásának tesztelése
fény.
Az ESP RainMaker bemutatása
Az ESP RainMaker egy hatékony keretrendszer az IoT fejlesztéséhez
eszközöket. Ebben a részben megtudhatja, mi az ESP RainMaker és
hogyan lehet megvalósítani a projektjeiben.
Mi az ESP RainMaker?
Az ESP RainMaker egy felhőalapú platform, amely egy sor
eszközök és szolgáltatások az IoT-eszközök építéséhez és kezeléséhez.
Az ESP RainMaker megvalósítása
Ez a rész ismerteti a különböző összetevőket
az ESP RainMaker megvalósítása, beleértve az igénylő szolgáltatást,
RainMaker Agent, felhő háttérrendszer és RainMaker Client.
Gyakorlat: Kulcspontok az ESP RainMakerrel való fejlesztéshez
Ebben a gyakorlati részben megismerheti a legfontosabb pontokat
fontolja meg az ESP RainMakerrel való fejlesztés során. Ez magában foglalja az eszközt is
igénylés, adatszinkronizálás és felhasználókezelés.
Az ESP RainMaker jellemzői
Az ESP RainMaker különféle funkciókat kínál a felhasználók kezeléséhez, vége
felhasználók és rendszergazdák. Ezek a funkciók lehetővé teszik a készülék egyszerű használatát
beállítás, távirányító és felügyelet.
Fejlesztési környezet beállítása
Ez a rész egy overt biztosítview ESP-IDF (Espressif IoT
Fejlesztési Keretrendszer), amely a hivatalos fejlesztési keret
ESP32 alapú eszközökhöz. Elmagyarázza a különböző verzióit
ESP-IDF és a fejlesztői környezet beállítása.
Hardver- és illesztőprogram-fejlesztés
Smart Light termékek hardvertervezése ESP32-C3 alapján
Ez a rész az intelligens világítás hardvertervezésére összpontosít
az ESP32-C3 vezeték nélküli kalandon alapuló termékek. Lefedi a
smart light termékek jellemzői és összetétele, valamint a
az ESP32-C3 magrendszer hardvertervezése.
A Smart Light termékek jellemzői és összetétele
Ez az alfejezet ismerteti a készítő jellemzőket és összetevőket
intelligens könnyű termékek. A különböző funkciókat tárgyalja
és tervezési szempontok az intelligens lámpák létrehozásához.
Az ESP32-C3 magrendszer hardvertervezése
Az ESP32-C3 magrendszer hardveres kialakítása tápellátást is tartalmaz
tápellátás, bekapcsolási sorrend, rendszer visszaállítása, SPI vaku, óraforrás,
valamint az RF és az antenna szempontjai. Ez az alszakasz biztosítja
részletes tájékoztatást ezekről a szempontokról.
GYIK
K: Mi az ESP RainMaker?
V: Az ESP RainMaker egy felhőalapú platform, amely eszközöket biztosít
valamint az IoT-eszközök építéséhez és kezeléséhez szükséges szolgáltatások. Leegyszerűsíti
a fejlesztési folyamat, és lehetővé teszi az egyszerű eszközbeállítást, távolról
ellenőrzés és felügyelet.
K: Hogyan állíthatom be a fejlesztői környezetet
ESP32-C3?
V: Az ESP32-C3 fejlesztői környezetének beállításához szüksége van
az ESP-IDF (Espressif IoT Development Framework) telepítéséhez és
konfigurálja a mellékelt utasítások szerint. Az ESP-IDF az
hivatalos fejlesztési keretrendszer az ESP32 alapú eszközökhöz.
K: Melyek az ESP RainMaker szolgáltatásai?
V: Az ESP RainMaker különféle funkciókat kínál, beleértve a felhasználót is
felügyelet, végfelhasználói szolgáltatások és adminisztrátori szolgáltatások. Felhasználókezelés
egyszerű eszközigénylést és adatszinkronizálást tesz lehetővé. Végfelhasználó
funkciók lehetővé teszik az eszközök távvezérlését mobilalkalmazáson keresztül, ill
web felület. Az adminisztrátori funkciók eszközöket biztosítanak az eszközfigyeléshez
és a menedzsment.
ESP32-C3 vezeték nélküli kaland
Átfogó útmutató az IoT-hez
Espressif Systems 12. június 2023
Tartalom
I Felkészülés
1
1 Bevezetés az IoT-be
3
1.1 Az IoT architektúrája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 IoT-alkalmazás intelligens otthonokban . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 IoT-projektek bemutatása és gyakorlata
9
2.1 Bevezetés a tipikus IoT-projektekbe . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Alapvető modulok az általános IoT-eszközökhöz . . . . . . . . . . . . . . . . . 9
2.1.2 Az ügyfélalkalmazások alapvető moduljai . . . . . . . . . . . . . . . . . . . 10
2.1.3 Bevezetés a közös IoT felhőplatformokba . . . . . . . . . . . . . . 11
2.2 Gyakorlat: Smart Light Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 A projekt felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Projektfunkciók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Hardver előkészítés . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Fejlesztési folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Az ESP RainMaker bemutatása
19
3.1 Mi az ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Az ESP RainMaker megvalósítása . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1. Igénylési szolgáltatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 RainMaker Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 RainMaker kliens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Gyakorlat: Kulcspontok az ESP RainMakerrel való fejlesztéshez . . . . . . . . . . . . 25
3.4 Az ESP RainMaker szolgáltatásai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Felhasználókezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Végfelhasználói szolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Rendszergazdai szolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Fejlesztői környezet beállítása
31
4.1 ESP-IDF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 ESP-IDF verziók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 ESP-IDF Git munkafolyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 A megfelelő verzió kiválasztása . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Végeview az ESP-IDF SDK könyvtárból. . . . . . . . . . . . . . . . . . . . 34 4.2 Az ESP-IDF fejlesztői környezet beállítása . . . . . . . . . . . . . . . . . 38 4.2.1 Az ESP-IDF fejlesztői környezet beállítása Linuxon . . . . . . . . 38 4.2.2 Az ESP-IDF fejlesztői környezet beállítása Windows rendszeren . . . . . . 40 4.2.3 Az ESP-IDF fejlesztői környezet beállítása Mac rendszeren . . . . . . . . . 45 4.2.4 A VS kód telepítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Bevezetés a harmadik féltől származó fejlesztési környezetekbe . . . . . . . . 46 4.3 ESP-IDF fordítórendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 A fordítási rendszer alapfogalmai . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 A fordítási rendszer alapértelmezett összeállítási szabályai . . . . . . . . . . . . . 50 4.3.4 Bevezetés a fordítási szkriptbe . . . . . . . . . . . . . . . . . . 51 4.3.5 Bevezetés a közös parancsokba . . . . . . . . . . . . . . . . . . . 52 4.4 Gyakorlat: Összeállítás plample Program „Pillogás” . . . . . . . . . . . . . . . . . . 53 4.4.1 Plample Elemzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 A Blink program összeállítása . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 A Blink program villogása . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 A Blink program soros port naplójának elemzése . . . . . . . . . . . . . . 60 4.5 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Hardver- és illesztőprogram-fejlesztés
65
5 Smart Light termékek hardvertervezése ESP32-C3 alapján
67
5.1 A Smart Light termékek jellemzői és összetétele . . . . . . . . . . . . . . . 67
5.2 Az ESP32-C3 alaprendszer hardvertervezése . . . . . . . . . . . . . . . . . . . 70
5.2.1 Tápegység . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Bekapcsolási sorrend és rendszer-visszaállítás . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Óraforrás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF és antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Hevedercsapok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO és PWM vezérlő . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Gyakorlat: Intelligens világítási rendszer felépítése ESP32-C3 segítségével. . . . . . . . . . . . . 80
5.3.1 Modulok kiválasztása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 A PWM-jelek GPIO-jának konfigurálása . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Firmware letöltése és hibakereső felület . . . . . . . . . . . . 82
5.3.4 Irányelvek az RF tervezéshez . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Útmutató a tápegység tervezéséhez . . . . . . . . . . . . . . . . . . . 86 5.4 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Illesztőprogram-fejlesztés
87
6.1 Illesztőprogram-fejlesztési folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 perifériás alkalmazások . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 A LED-illesztőprogram alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Színterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED-illesztőprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 LED tompítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Bevezetés a PWM-be . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 LED-es fényerőszabályzó illesztőprogram fejlesztése . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Nem felejtő tárhely (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM vezérlő (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM programozás . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Gyakorlat: Illesztőprogramok hozzáadása a Smart Light Projecthez . . . . . . . . . . . . . . . . . 103
6.5.1 Gomb-illesztőprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 LED fényerőszabályzó vezérlő . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Vezeték nélküli kommunikáció és vezérlés
109
7 Wi-Fi konfiguráció és csatlakozás
111
7.1 A Wi-Fi alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Bevezetés a Wi-Fi-be . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Az IEEE 802.11 fejlődése. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Wi-Fi fogalmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Wi-Fi kapcsolat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 A Bluetooth alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 A Bluetooth bemutatása . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Bluetooth fogalmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth kapcsolat . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Wi-Fi hálózat beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Wi-Fi hálózat konfigurációs útmutató . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Egyéb módszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Wi-Fi programozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi komponensek az ESP-IDF-ben . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Gyakorlat: Wi-Fi kapcsolat . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Gyakorlat: Intelligens Wi-Fi kapcsolat . . . . . . . . . . . . . . . . . . . . . 145
7.5 Gyakorlat: Wi-Fi konfiguráció a Smart Light Projectben . . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi kapcsolat a Smart Light Projectben . . . . . . . . . . . . . . . . . 156 7.5.2 Intelligens Wi-Fi konfiguráció . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Helyi vezérlés
159
8.1 Bevezetés a helyi vezérlésbe . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Helyi vezérlés alkalmazása . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages a Helyi vezérlés . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Vezérelt eszközök felfedezése okostelefonon keresztül . . . . . . . . . . 161
8.1.4 Adatkommunikáció okostelefonok és eszközök között . . . . . . . . 162
8.2 Általános helyi felfedezési módszerek . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Közvetítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 A Broadcast és a Multicast összehasonlítása . . . . . . . . . . . . . . 176
8.2.4 Multicast Application Protocol mDNS helyi felfedezéshez . . . . . . . . 176
8.3 Közös kommunikációs protokollok helyi adatokhoz . . . . . . . . . . . . . . . 179
8.3.1 Átvitelvezérlő protokoll (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Hypertext Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Felhasználó Datagram protokoll (UDP) . . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Korlátozott alkalmazási protokoll (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Bluetooth protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Az adatkommunikációs protokollok összefoglalása . . . . . . . . . . . . . . . 203
8.4 Az adatbiztonság garanciája . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Bevezetés a szállítási rétegbiztonságba (TLS) . . . . . . . . . . . . . 207
8.4.2 Bevezetés a Da-batagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Gyakorlat: Helyi vezérlés a Smart Light Projectben . . . . . . . . . . . . . . . . . . 217
8.5.1 Wi-Fi alapú helyi vezérlőkiszolgáló létrehozása . . . . . . . . . . . . . . . 217
8.5.2 A helyi vezérlés működőképességének ellenőrzése parancsfájlok segítségével . . . . . . . . . . . 221
8.5.3 Bluetooth-alapú helyi vezérlőkiszolgáló létrehozása . . . . . . . . . . . . 222
8.6 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Felhővezérlés
225
9.1 A távirányító bemutatása . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Felhő adatkommunikációs protokollok . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT alapelvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT üzenetformátum . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokoll-összehasonlítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Az MQTT Broker beállítása Linuxon és Windowson . . . . . . . . . . . . 233 9.2.6 MQTT kliens beállítása ESP-IDF alapján . . . . . . . . . . . . . . . . 235 9.3 Az MQTT adatbiztonságának biztosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 A tanúsítványok jelentése és funkciója . . . . . . . . . . . . . . . . . . . 237 9.3.2 Tanúsítványok helyi generálása . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Az MQTT Broker konfigurálása . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Az MQTT-kliens konfigurálása . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Gyakorlat: Távvezérlés az ESP RainMakeren keresztül . . . . . . . . . . . . . . . . 243 9.4.1 Az ESP RainMaker alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Csomópont és felhő háttérkommunikációs protokoll . . . . . . . . . . . 244 9.4.3 Kommunikáció az ügyfél és a felhő háttérrendszer között . . . . . . . . . . . 249 9.4.4 Felhasználói szerepkörök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Alapvető szolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Plample . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 RainMaker alkalmazás és harmadik felek integrációi . . . . . . . . . . . . . . . 262 9.5 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Okostelefonos alkalmazások fejlesztése
269
10.1 Az okostelefonos alkalmazások fejlesztésének bemutatása . . . . . . . . . . . . . . . . . . 269
10.1.1 Végeview okostelefonos alkalmazások fejlesztése . . . . . . . . . . . . . . . 270
10.1.2 Az Android Project felépítése . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Az iOS projekt felépítése . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Egy Android-tevékenység életciklusa . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Az iOS életciklusa ViewVezérlő . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Új okostelefonos alkalmazásprojekt létrehozása . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Felkészülés az Android fejlesztésre . . . . . . . . . . . . . . . . . . . 275
10.2.2 Új Android-projekt létrehozása . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Függőségek hozzáadása a MyRainmakerhez . . . . . . . . . . . . . . . . . 276
10.2.4 Engedélykérés Androidon . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Felkészülés az iOS fejlesztésre . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Új iOS-projekt létrehozása . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Függőségek hozzáadása a MyRainmakerhez . . . . . . . . . . . . . . . . . 279
10.2.8 Engedélykérés iOS rendszerben . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Az alkalmazás funkcionális követelményeinek elemzése . . . . . . . . . . . . . . . . . . 281
10.3.1 A projekt funkcionális követelményeinek elemzése . . . . . . . . . . . . 282
10.3.2 Felhasználókezelési követelmények elemzése . . . . . . . . . . . . . . . 282 10.3.3 Eszközkiépítési és kötési követelmények elemzése . . . . . . . 283 10.3.4 A távvezérlési követelmények elemzése . . . . . . . . . . . . . . . . 283 10.3.5 Ütemezési követelmények elemzése . . . . . . . . . . . . . . . . . . . 284 10.3.6 A felhasználói központ követelményeinek elemzése . . . . . . . . . . . . . . . . . . 285 10.4 Felhasználókezelés fejlesztése . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 A RainMaker API-k bemutatása . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Kommunikáció kezdeményezése okostelefonon keresztül . . . . . . . . . . . . . . . . 286 10.4.3 Fiókregisztráció . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Belépés a fiókba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Eszközellátás fejlesztése . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Szkennelő eszközök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Eszközök csatlakoztatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Titkos kulcsok generálása . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Csomópontazonosító lekérése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Kiépítési eszközök . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Eszközvezérlés fejlesztése . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Eszközök felhőfiókokhoz kötése . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Eszközlista beszerzése . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Eszközállapot lekérése . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Eszközállapot módosítása . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Ütemezési és felhasználói központ fejlesztése . . . . . . . . . . . . . . . . . . . 313 10.7.1 Ütemezési funkció megvalósítása . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Felhasználói központ megvalósítása . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 További felhő API-k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Firmware frissítés és verziókezelés
321
11.1 Firmware frissítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Végeview partíciós táblák . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Firmware-indítási folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Végeview az OTA mechanizmus . . . . . . . . . . . . . . . . . . . . . 326
11.2 Firmware verziókezelés . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Firmware jelölés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Visszagörgetés és visszaállítás . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Gyakorlat: OTA (OTA) Plample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Firmware frissítése helyi gazdagépen keresztül . . . . . . . . . . . . . . . . . 332
11.3.2 Firmware frissítése az ESP RainMaker segítségével . . . . . . . . . . . . . . . 335
11.4 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimalizálás és tömeggyártás
343
12 Energiagazdálkodás és alacsony energiafogyasztás optimalizálása
345
12.1 ESP32-C3 energiagazdálkodás . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dinamikus frekvenciaskálázás . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Energiagazdálkodási konfiguráció . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 alacsony fogyasztású üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modem-alvó üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Könnyű alvó üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Mély alvó üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Áramfelvétel különböző energia üzemmódokban . . . . . . . . . . . . . 358
12.3 Energiagazdálkodás és alacsony fogyasztású hibakeresés . . . . . . . . . . . . . . . . . 359
12.3.1 Naplóhibakeresés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 GPIO hibakeresés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Gyakorlat: Energiagazdálkodás a Smart Light Projectben . . . . . . . . . . . . . . . 363
12.4.1 Energiagazdálkodási szolgáltatás konfigurálása . . . . . . . . . . . . . . . . . 364
12.4.2 Energiagazdálkodási zárak használata . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Az energiafogyasztás ellenőrzése . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Továbbfejlesztett eszközbiztonsági szolgáltatások
369
13.1 Végeview IoT Device Data Security . . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Miért fontos az IoT-eszközadatok védelme? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Az IoT-eszközök adatbiztonságának alapvető követelményei . . . . . . . . . . . . 371
13.2 Adatintegritás védelme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Az integritás-ellenőrzési módszer bemutatása . . . . . . . . . . . . . . 372
13.2.2 Firmware adatok integritásának ellenőrzése . . . . . . . . . . . . . . . . . . 373
13.2.3 Plample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Adatok titkosságának védelme . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Bevezetés az adattitkosításba . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 A Flash titkosítási séma bemutatása . . . . . . . . . . . . . . . . . 376
13.3.3 Flash titkosítási kulcs tárolása . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 A Flash-titkosítás működési módja . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Flash titkosítási folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Bevezetés az NVS titkosításba . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 PlampFlash Encryption és NVS Encryption . . . . . . . . . . . 384
13.4 Adatok jogszerűségének védelme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Bevezetés a digitális aláírásba . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Végeview Biztonságos rendszerindítási séma . . . . . . . . . . . . . . . . . . . . . 388
13.4.3 A szoftver biztonságos rendszerindításának bemutatása . . . . . . . . . . . . . . . . . . . 388 13.4.4 A hardveres biztonságos rendszerindítás bemutatása . . . . . . . . . . . . . . . . . . 390 13.4.5 Plamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Gyakorlat: Biztonsági jellemzők a tömeggyártásban . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash titkosítás és biztonságos rendszerindítás . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Flash titkosítás és biztonságos rendszerindítás engedélyezése Batch Flash Tools segítségével . . 397 13.5.3 Flash titkosítás és biztonságos rendszerindítás engedélyezése a Smart Light Projectben . . . 398 13.6 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Firmware-égetés és tesztelés tömeggyártáshoz
399
14.1 Firmware-égetés tömeggyártásban . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Adatpartíciók meghatározása . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Firmware-égetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Tömeggyártási tesztelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Gyakorlat: Tömegtermelési adatok a Smart Light Projectben . . . . . . . . . . . . . 404
14.4 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Remote Monitoring Platform
405
15.1 Az ESP Insights bemutatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Az ESP Insights használatának megkezdése . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Az ESP Insights használatának megkezdése az esp-insights projektben . . . . . . 409
15.2.2 Futás plample az esp-insights projektben. . . . . . . . . . . . . . . 411
15.2.3 Alapinformációk jelentése . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Érdeklődési naplók testreszabása . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Újraindítás okának jelentése . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Egyéni mérőszámok jelentése . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Gyakorlat: Az ESP Insights használata a Smart Light Projectben . . . . . . . . . . . . . . . 416
15.4 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Bevezetés
Az ESP32-C3 egy egymagos Wi-Fi és Bluetooth 5 (LE) mikrokontroller SoC, amely a nyílt forráskódú RISC-V architektúrán alapul. Megtalálja a megfelelő egyensúlyt a teljesítmény, az I/O képességek és a biztonság között, így az optimális költséghatékony megoldást kínálja a csatlakoztatott eszközök számára. Az ESP32-C3 család különféle alkalmazásainak bemutatása érdekében az Espressif könyve egy érdekes utazásra vezet az AIoT-n keresztül, kezdve az IoT-projektek fejlesztésének és környezetbeállításának alapjaitól a gyakorlati ex-ig.amples. Az első négy fejezet az IoT-ről, az ESP RainMakerről és az ESP-IDF-ről szól. Az 5. és 6. fejezet a hardvertervezésről és az illesztőprogram-fejlesztésről szól. Ahogy halad előre, rá fog jönni, hogyan konfigurálhatja projektjét Wi-Fi hálózatokon és mobilalkalmazásokon keresztül. Végül megtanulja optimalizálni projektjét, és tömeggyártásba helyezni.
Ha Ön mérnök a kapcsolódó területeken, szoftvertervező, tanár, diák vagy bárki, aki érdeklődik az IoT iránt, akkor ez a könyv Önnek szól.
Letöltheti a kódot plampebben a könyvben az Espressif GitHubon található webhelyéről használták fel. Az IoT fejlesztésével kapcsolatos legfrissebb információkért kérjük, kövesse hivatalos fiókunkat.
Előszó
Informatizáló világ
Az Internet hullámát meglovagolva az Internet of Things (IoT) nagyszabású debütálása a digitális gazdaság új típusú infrastruktúrájává vált. Annak érdekében, hogy a technológiát közelebb vigye a nyilvánossághoz, az Espressif Systems azon a vízión dolgozik, hogy az élet minden területéről érkező fejlesztők használhatják az IoT-t korunk legégetőbb problémáinak megoldására. A „Minden dolgok intelligens hálózatának” világát várjuk a jövőtől.
Saját chipjeink tervezése ennek a jövőképnek a kritikus eleme. Maratonnak kell lennie, amely folyamatos áttörést igényel a technológiai határok ellen. A „Game Changer” ESP8266-tól a Wi-Fi-t és Bluetoothr-t (LE) integráló ESP32 sorozatig, majd az AI-gyorsítással felszerelt ESP32-S3-ig az Espressif soha nem hagyja abba az AIoT-megoldásokhoz szükséges termékek kutatását és fejlesztését. Nyílt forráskódú szoftvereinkkel, mint például az IoT Development Framework ESP-IDF, a Mesh Development Framework ESP-MDF és a Device Connectivity Platform ESP RainMaker, független keretrendszert hoztunk létre az AIoT-alkalmazások építéséhez.
2022 júliusáig az Espressif IoT lapkakészleteinek összesített kiszállítása meghaladta a 800 milliót, ami vezető szerepet tölt be a Wi-Fi MCU piacán, és rengeteg csatlakoztatott eszközt biztosít világszerte. A kiválóságra való törekvés minden Espressif terméket nagy sikert arat a magas szintű integráció és költséghatékonyság miatt. Az ESP32-C3 megjelenése jelentős mérföldkövet jelent az Espressif saját fejlesztésű technológiájában. Ez egy egymagos, 32 bites, RISC-V alapú MCU 400 KB SRAM-mal, amely 160 MHz-en fut. Integrált 2.4 GHz-es Wi-Fi és Bluetooth 5 (LE) nagy hatótávolságú támogatással. Finom egyensúlyt teremt a teljesítmény, az I/O képességek és a biztonság között, így az optimális költséghatékony megoldást kínálja a csatlakoztatott eszközök számára. Az ilyen erős ESP32-C3-ra épülő könyv célja, hogy segítse az olvasókat az IoT-vel kapcsolatos ismeretek megértésében, részletes illusztrációkkal és gyakorlati példákkal.amples.
Miért írtuk ezt a könyvet?
Az Espressif Systems több, mint egy félvezetőgyártó cég. Ez is egy IoT platform cég, amely mindig áttörésekre és innovációkra törekszik a technológia területén. Ugyanakkor az Espressif nyílt forráskódú, és saját fejlesztésű operációs rendszerét és szoftverkeretét megosztotta a közösséggel, így egyedülálló ökoszisztémát alkotott. Mérnökök, gyártók és technológiai rajongók aktívan fejlesztenek új szoftveralkalmazásokat az Espressif termékei alapján, szabadon kommunikálnak és megosztják tapasztalataikat. A fejlesztők lenyűgöző ötleteit folyamatosan láthatja különféle platformokon, például a YouTube-on és a GitHubon. Az Espressif termékeinek népszerűsége egyre több szerzőt ösztönzött, akik több mint 100 könyvet készítettek Espressif lapkakészletek alapján, több mint tíz nyelven, köztük angolul, kínaiul, németül, franciául és japánul.
A közösségi partnerek támogatása és bizalma ösztönzi az Espressif folyamatos innovációját. „Arra törekszünk, hogy chipjeinket, operációs rendszereinket, keretrendszereinket, megoldásainkat, felhőnket, üzleti gyakorlatainkat, eszközeinket, dokumentációinkat, írásainkat, ötleteinket stb. még relevánsabbá tegyük az embereknek a kortárs élet legégetőbb problémáiban szükséges válaszokhoz. Ez Espressif legnagyobb ambíciója és erkölcsi iránytűje.” – mondta Teo Swee Ann, az Espressif alapítója és vezérigazgatója.
Az Espressif értékeli az olvasást és az ötleteket. Mivel az IoT-technológia folyamatos fejlesztése magasabb követelményeket támaszt a mérnökökkel szemben, hogyan segíthetünk több embernek gyorsan elsajátítani az IoT chipeket, operációs rendszereket, szoftverkeretrendszereket, alkalmazássémákat és felhőszolgáltatási termékeket? Ahogy a mondás tartja, jobb megtanítani az embert horgászni, mint halat adni neki. Egy ötletbörze során felmerült bennünk, hogy írhatnánk egy könyvet, amivel szisztematikusan összegyűjthetjük az IoT-fejlesztés kulcsfontosságú ismereteit. Sikerült, gyorsan összegyűjtöttünk egy csoport vezető mérnököt, és egyesítettük a műszaki csapat tapasztalatait a beágyazott programozás, az IoT hardver- és szoftverfejlesztés terén, és mindez hozzájárult e könyv kiadásához. Az írás során mindent megtettünk, hogy tárgyilagosak és igazságosak legyünk, megfosztva a gubótól, és tömör kifejezésekkel elmeséljük a dolgok internetének összetettségét és varázsát. Gondosan összefoglaltuk a gyakori kérdéseket, hivatkoztunk a közösség visszajelzéseire és javaslataira, hogy a fejlesztési folyamat során felmerülő kérdésekre egyértelmű választ adhassunk, és gyakorlati IoT-fejlesztési irányelveket adjunk az érintett technikusok és döntéshozók számára.
Könyv szerkezete
Ez a könyv mérnök-központú perspektívát vesz fel, és lépésről lépésre ismerteti az IoT-projektek fejlesztéséhez szükséges ismereteket. Négy részből áll, az alábbiak szerint:
· Előkészítés (1. fejezet): Ez a rész bemutatja az IoT architektúráját, a tipikus IoT projekt keretrendszert, az ESP RainMakerr felhőplatformot és az ESP-IDF fejlesztői környezetet, hogy szilárd alapot teremtsen az IoT projektfejlesztéshez.
· Hardver- és illesztőprogram-fejlesztés (5. fejezet): Az ESP6-C32 lapkakészlet alapján ez a rész a minimális hardver- és illesztőprogram-fejlesztéssel foglalkozik, valamint megvalósítja a fényerő-szabályozás, a színbesorolás és a vezeték nélküli kommunikáció vezérlését.
· Vezeték nélküli kommunikáció és vezérlés (7. fejezet): Ez a rész az ESP11-C32 chipen, a helyi és felhőalapú vezérlési protokollokon, valamint az eszközök helyi és távvezérlésén alapuló intelligens Wi-Fi konfigurációs sémát ismerteti. Sémákat is biztosít okostelefon-alkalmazások fejlesztéséhez, firmware-frissítéshez és verziókezeléshez.
· Optimalizálás és tömeggyártás (12-15. fejezet): Ez a rész a fejlett IoT-alkalmazásokhoz készült, és a termékek energiagazdálkodási optimalizálására, alacsony energiafogyasztású optimalizálásra és fokozott biztonságra összpontosít. Bemutatja továbbá a firmware-égetést és -tesztelést a tömeggyártásban, valamint azt, hogy miként diagnosztizálható a futási állapot és az eszköz firmware-naplózása az ESP Insights távfelügyeleti platformon keresztül.
A forráskódról
Az olvasók futtathatják az example programokat ebben a könyvben, akár a kód manuális bevitelével, akár a könyvhöz mellékelt forráskód használatával. Hangsúlyozzuk az elmélet és a gyakorlat kombinációját, így szinte minden fejezetben beállítunk egy Gyakorlat részt a Smart Light projekt alapján. Minden kód nyílt forráskódú. Az olvasók letölthetik a forráskódot, és megvitathatják a könyvhöz kapcsolódó részekben a GitHubon és az esp32.com hivatalos fórumunkon. A könyv nyílt forráskódú kódjára az Apache License 2.0 feltételei vonatkoznak.
Szerző megjegyzése
Ezt a könyvet hivatalosan az Espressif Systems készítette, és a cég vezető mérnökei írták. Alkalmas az IoT-vel kapcsolatos iparágak vezetőinek és K+F-személyzetének, a kapcsolódó szakok tanárainak és hallgatóinak, valamint a tárgyak internete iránt érdeklődőknek. Reméljük, hogy ez a könyv használható kézikönyvként, referenciaként és éjjeli könyvként, hogy olyan legyen, mint egy jó oktató és barát.
A könyv összeállítása során hivatkoztunk hazai és külföldi szakértők, tudósok és technikusok releváns kutatási eredményeire, és mindent megtettünk annak érdekében, hogy azokat a tudományos normáknak megfelelően idézzük. Azonban elkerülhetetlen, hogy legyen néhány kihagyás, ezért ezúton szeretnénk kifejezni mély tiszteletünket és köszönetünket minden érintett szerzőnek. Ezen kívül az internetről is idéztünk információkat, ezért köszönetet mondunk az eredeti szerzőknek és kiadóknak, és elnézést kérünk, hogy nem tudjuk minden információ forrását megjelölni.
A minőségi könyv elkészítése érdekében belső megbeszéléseket szerveztünk, tanultunk a próbaolvasók és a kiadói szerkesztők javaslataiból, visszajelzéseiből. Ezúton is szeretnénk megköszönni a segítséget, amellyel mindannyian hozzájárultak ehhez a sikeres munkához.
Végül, de a legfontosabb: köszönet mindenkinek az Espressifnél, aki olyan keményen dolgozott termékeink megszületéséért és népszerűsítéséért.
Az IoT-projektek fejlesztése a tudás széles skáláját foglalja magában. A könyv terjedelmére, valamint a szerző színvonalára és tapasztalataira korlátozva a kihagyások elkerülhetetlenek. Ezért kérjük, hogy a szakértők és az olvasók kritizálják és javítsák ki hibáinkat. Ha bármilyen javaslata van ezzel a könyvvel kapcsolatban, kérjük, vegye fel velünk a kapcsolatot a book@espressif.com címen. Várjuk visszajelzését.
Hogyan kell használni ezt a könyvet?
A könyvben szereplő projektek kódja nyílt forráskódú. Letöltheti GitHub tárhelyünkről, és megoszthatja gondolatait és kérdéseit hivatalos fórumunkon. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Fórum: https://www.esp32.com/bookc3 A könyvben az alábbiak szerint kiemelt részek lesznek.
Forráskód Ebben a könyvben az elmélet és a gyakorlat kombinációját hangsúlyozzuk, így szinte minden fejezetben beállítunk egy Gyakorlat részt a Smart Light projektről. A megfelelő lépések és a forrásoldal a következővel kezdődő két sor között lesz megjelölve tag Forráskód.
MEGJEGYZÉS/TIPPEK Itt találhat néhány fontos információt és emlékeztetőt a program sikeres hibakereséséhez. A jellel kezdődő két vastag vonal között lesznek megjelölve tag MEGJEGYZÉS vagy TIPPEK.
A könyvben található parancsok többsége Linux alatt fut, a „$” karakter hatására. Ha a parancs végrehajtásához szuperfelhasználói jogosultságokra van szükség, a prompt „#”-ra cserélődik. A Mac rendszereken a parancssor a „%”, ahogyan azt a 4.2.3. szakaszban az ESP-IDF telepítése Mac rendszerre használjuk.
A könyv törzsszövege Chartában lesz nyomtatva, míg a kód examples, komponensek, függvények, változók, kód file A nevek, kódkönyvtárak és karakterláncok a Courier New alkalmazásban lesznek.
A felhasználó által beírandó parancsok vagy szövegek, valamint az „Enter” billentyű lenyomásával beírható parancsok Courier New félkövéren jelennek meg. A naplók és kódblokkok világoskék dobozokban jelennek meg.
Example:
Másodszor, használja az esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py fájlt az NVS partíció bináris létrehozásához. file a fejlesztői gazdagépen a következő paranccsal:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –size NVS PARTITION SIZE
1. fejezet
Bevezetés
hogy
IoT
A 20. század végén, a számítógépes hálózatok és a kommunikációs technológiák térnyerésével az internet gyorsan beépült az emberek életébe. Ahogy az internetes technológia tovább fejlődik, megszületett az Internet of Things (IoT) ötlete. Szó szerint az IoT olyan internetet jelent, ahol a dolgok összekapcsolódnak. Míg az eredeti Internet áttöri a tér és az idő korlátait, és leszűkíti a távolságot „személy és személy” között, addig az IoT fontos résztvevővé teszi a „dolgokat”, közelebb hozza egymáshoz az „embereket” és a „dolgokat”. A belátható jövőben az IoT az információs iparág hajtóereje lesz.
Szóval, mi is az a tárgyak internete?
Nehéz pontosan meghatározni a tárgyak internete fogalmát, mivel jelentése és hatóköre folyamatosan változik. Bill Gates 1995-ben vetette fel először az IoT ötletét The Road Ahead című könyvében. Egyszerűen fogalmazva, az IoT lehetővé teszi az objektumok számára, hogy információkat cseréljenek egymással az interneten keresztül. Végső célja egy „minden internet” létrehozása. Ez az IoT korai értelmezése, valamint a jövő technológiájának fantáziája. Harminc évvel később, a gazdaság és a technológia rohamos fejlődésével a fantázia valósággá válik. Az okoseszközöktől, az okosotthonoktól, az okos városoktól, a járművek internetétől és a hordható eszközöktől az IoT-technológiák által támogatott „metaverzumig” folyamatosan új koncepciók születnek. Ebben a fejezetben a dolgok internete architektúrájának magyarázatával kezdjük, majd bemutatjuk a legáltalánosabb IoT-alkalmazást, az intelligens otthont, hogy segítsünk az IoT világos megértésében.
1.1 Az IoT architektúrája
Az Internet of Things számos olyan technológiát foglal magában, amelyek alkalmazási igényei és formái eltérőek a különböző iparágakban. Az IoT szerkezetének, kulcsfontosságú technológiáinak és alkalmazási jellemzőinek rendezéséhez egységes architektúra és szabványos műszaki rendszer kialakítása szükséges. Ebben a könyvben az IoT architektúráját egyszerűen négy rétegre osztjuk: észlelési és vezérlési rétegre, hálózati rétegre, platformrétegre és alkalmazási rétegre.
Perception & Control Layer Az IoT-architektúra legalapvetőbb elemeként az észlelési és vezérlési réteg a lényege az IoT átfogó érzékelésének megvalósításához. Fő feladata az információk gyűjtése, azonosítása és ellenőrzése. Különféle érzékelési képességgel rendelkező eszközökből áll,
3
azonosítás, vezérlés és végrehajtás, és felelős az olyan adatok lekéréséért és elemzéséért, mint az anyagtulajdonságok, a viselkedési trendek és az eszköz állapota. Ily módon az IoT felismeri a valós fizikai világot. Emellett a réteg képes az eszköz állapotának szabályozására is.
Ennek a rétegnek a leggyakoribb eszközei a különféle szenzorok, amelyek fontos szerepet játszanak az információgyűjtésben és az azonosításban. Az érzékelők olyanok, mint az emberi érzékszervek, mint például a fényérzékeny érzékelők a látással, az akusztikus érzékelők a hallással, a gázérzékelők a szaglással és a nyomás- és hőmérsékletérzékeny érzékelők az érintéssel. Mindezekkel az „érzékszervekkel” a tárgyak „élővé” válnak, és képesek a fizikai világ intelligens érzékelésére, felismerésére és manipulálására.
Hálózati réteg A hálózati réteg fő funkciója az információk továbbítása, beleértve az észlelési és vezérlési rétegből kapott adatokat a meghatározott célponthoz, valamint az alkalmazási rétegből kiadott parancsokat vissza az észlelési és vezérlési rétegbe. Fontos kommunikációs hídként szolgál, amely összeköti az IoT-rendszer különböző rétegeit. A dolgok internetének alapmodelljének felállítása két lépésből áll az objektumok hálózatba integrálásához: az internethez való hozzáféréshez és az interneten keresztüli átvitelhez.
Az internethez való hozzáférés Az internet lehetővé teszi az összekapcsolódást személy és személy között, de nem vonja be a dolgokat a nagy családba. Az IoT megjelenése előtt a legtöbb dolog nem volt „hálózatképes”. A technológia folyamatos fejlődésének köszönhetően az IoT-nek sikerül összekapcsolnia a dolgokat az internettel, így valósul meg az „emberek és dolgok” és a „dolgok és dolgok” közötti összekapcsolódás. Az internetkapcsolat megvalósításának két általános módja van: vezetékes hálózati hozzáférés és vezeték nélküli hálózati hozzáférés.
A vezetékes hálózati hozzáférési módok közé tartozik az Ethernet, a soros kommunikáció (pl. RS-232, RS-485) és az USB, míg a vezeték nélküli hálózati hozzáférés a vezeték nélküli kommunikációtól függ, amely tovább osztható kis hatótávolságú vezeték nélküli kommunikációra és nagy hatótávolságú vezeték nélküli kommunikációra.
A rövid hatótávolságú vezeték nélküli kommunikáció magában foglalja a ZigBee-t, a Bluetoothr-t, a Wi-Fi-t, a Near-Field Communication (NFC) és a rádiófrekvenciás azonosítást (RFID). A nagy hatótávolságú vezeték nélküli kommunikáció magában foglalja az Enhanced Machine Type Communication (eMTC), a LoRa, a Narrow Band Internet of Things (NB-IoT), a 2G, 3G, 4G, 5G stb.
Adatátvitel az interneten keresztül Az Internet hozzáférés különböző módjai az adatok megfelelő fizikai átviteli kapcsolatához vezetnek. A következő dolog annak eldöntése, hogy melyik kommunikációs protokollt használja az adatok továbbítására. Az internetes terminálokhoz képest a legtöbb IoT-terminálban jelenleg kevesebb van
4 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
a rendelkezésre álló erőforrások, például a feldolgozási teljesítmény, a tárolási kapacitás, a hálózati sebesség stb., ezért olyan kommunikációs protokollt kell választani, amely kevesebb erőforrást foglal el az IoT-alkalmazásokban. Két kommunikációs protokollt használnak manapság széles körben: Message Queuing Telemetry Transport (MQTT) és Constrained Application Protocol (CoAP).
Platformréteg A platformréteg elsősorban az IoT felhőplatformokra vonatkozik. Amikor az összes IoT-terminál hálózatba van kötve, az adataikat IoT felhőplatformon kell összesíteni a kiszámításhoz és tároláshoz. A platformréteg elsősorban az IoT-alkalmazásokat támogatja a hatalmas eszközök elérésének és kezelésének megkönnyítése érdekében. Az IoT terminálokat a felhőplatformhoz köti, termináladatokat gyűjt, és parancsokat ad ki a termináloknak a távvezérlés megvalósítása érdekében. Köztes szolgáltatásként a berendezések ipari alkalmazásokhoz történő hozzárendeléséhez a platformréteg összekötő szerepet tölt be a teljes IoT architektúrában, elvont üzleti logikát és szabványosított alapvető adatmodellt hordoz, amely nemcsak az eszközök gyors elérését tudja megvalósítani, hanem erőteljes moduláris képességeket is biztosít. különböző igények kielégítésére az ipari alkalmazási forgatókönyvekben. A platformréteg főleg olyan funkcionális modulokat tartalmaz, mint az eszközelérés, az eszközkezelés, a biztonságkezelés, az üzenetkommunikáció, a működés és karbantartás figyelése, valamint az adatalkalmazások.
· Eszközhozzáférés, a terminálok és az IoT felhőplatformok közötti kapcsolat és kommunikáció megvalósítása.
· Eszközkezelés, beleértve az olyan funkciókat, mint az eszköz létrehozása, karbantartása, adatátalakítás, adatszinkronizálás és eszközelosztás.
· Biztonságmenedzsment, az IoT adatátvitel biztonságának biztosítása a biztonsági hitelesítés és a kommunikáció biztonsága szempontjából.
· Üzenetkommunikáció, amely három átviteli irányt foglal magában, vagyis a terminál adatokat küld az IoT felhőplatformnak, az IoT felhőplatform a szerveroldalra vagy más IoT felhőplatformokra, a szerveroldal pedig távolról vezérli az IoT eszközöket.
· O&M figyelése, beleértve a felügyeletet és a diagnosztikát, a firmware frissítést, az online hibakeresést, a naplózási szolgáltatásokat stb.
· Adatalkalmazások, amelyek magukban foglalják az adatok tárolását, elemzését és alkalmazását.
Alkalmazási réteg Az alkalmazási réteg a platformréteg adatait használja az alkalmazás kezelésére, szűrésére és feldolgozására olyan eszközökkel, mint például adatbázisok és elemző szoftverek. Az így kapott adatok felhasználhatók valós IoT-alkalmazásokhoz, például intelligens egészségügyhöz, intelligens mezőgazdasághoz, intelligens otthonokhoz és intelligens városokhoz.
Természetesen az IoT architektúrája több rétegre bontható, de akárhány rétegből áll, az alapelv lényegében ugyanaz marad. Tanulás
1. fejezet Bevezetés az IoT-be 5
Az IoT architektúrája segít elmélyíteni az IoT-technológiák megértését, és teljesen működőképes IoT-projekteket építeni.
1.2 IoT-alkalmazás intelligens otthonokban
Az IoT az élet minden területére behatolt, és a számunkra legszorosabban kapcsolódó IoT-alkalmazás az okosotthon. Sok hagyományos készüléket ma már egy vagy több IoT-eszközzel szerelnek fel, és sok újonnan épült házat a kezdetektől fogva IoT-technológiával terveznek. Az 1.1. ábra néhány gyakori intelligens otthoni eszközt mutat be.
1.1. ábra. Gyakori okosotthon-eszközök Az okosotthon fejlesztése egyszerűen okostermékekre oszthatótage, jelenet összekapcsolása stage és intelligens stage, ahogy az 1.2.
1.2. ábra. Fejlesztés stage of smart home 6 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Az első stage az okos termékekről szól. A hagyományos otthonoktól eltérően az intelligens otthonokban az IoT-eszközök érzékelőkkel fogadják a jeleket, és vezeték nélküli kommunikációs technológiákon, például Wi-Fi-n, Bluetooth LE-n és ZigBee-n keresztül kapcsolódnak hálózatba. A felhasználók többféleképpen vezérelhetik az intelligens termékeket, például okostelefon-alkalmazásokat, hangsegédeket, intelligens hangszóróvezérlést stb.tage a jelenetek összekapcsolására összpontosít. Ebben a stage, a fejlesztők már nem egyetlen intelligens termék vezérlését fontolgatják, hanem két vagy több intelligens termék összekapcsolását, bizonyos mértékig automatizálást és végül egy egyedi jelenet mód kialakítását. PlampHa a felhasználó megnyom egy jelenetmód gombot, a lámpák, függönyök és légkondicionálók automatikusan az előre beállított értékekhez igazodnak. Természetesen előfeltétele, hogy a kapcsolódási logika azonnal be legyen állítva, beleértve az aktiválási feltételeket és a végrehajtási műveleteket. Képzelje el, hogy a légkondicionáló fűtési mód akkor lép működésbe, ha a belső hőmérséklet 10°C alá csökken; hogy reggel 7 órakor zene szól, hogy felébressze a felhasználót, kinyílnak az intelligens függönyök, és egy okos aljzaton keresztül elindul a rizsfőző vagy kenyérpirító; amint a felhasználó felkel és befejezi a mosást, a reggelit már felszolgálják, így nem kell késni a munkába lépéssel. Milyen kényelmessé vált az életünk! A harmadik stage megy az intelligencia stage. Ahogy egyre több intelligens otthoni eszköz érhető el, úgy nő a generált adatok típusa is. A felhőalapú számítástechnika, a big data és a mesterséges intelligencia segítségével olyan, mintha egy „okosabb agyat” ültettek volna az okosotthonokba, amelyek már nem igényelnek gyakori parancsokat a felhasználótól. Adatokat gyűjtenek a korábbi interakciókból, és megtanulják a felhasználó viselkedési mintáit és preferenciáit, hogy automatizálják a tevékenységeket, beleértve a döntéshozatalra vonatkozó ajánlásokat is. Jelenleg a legtöbb intelligens otthon az összekapcsolás helyszínén találhatótage. Az intelligens termékek penetrációjának és intelligenciájának növekedésével a kommunikációs protokollok közötti akadályok megszűnnek. A jövőben az okosotthonok valóban „okossá” válnak, akárcsak a Vasemberben a Jarvis mesterséges intelligencia-rendszer, amely nemcsak a különféle eszközök vezérlésében, a napi ügyek intézésében segítheti a felhasználót, hanem szuper számítási teljesítménnyel és gondolkodási képességgel is rendelkezik. Az intelligens stage, az emberi lények jobb szolgáltatásokat kapnak mind mennyiségben, mind minőségben.
1. fejezet Bevezetés az IoT-be 7
8 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Fejezet 2 IoT-projekt bevezetése és gyakorlata
Az 1. fejezetben bemutattuk az IoT architektúráját, valamint az észlelési és vezérlési réteg, a hálózati réteg, a platformréteg és az alkalmazási réteg szerepeit és összefüggéseit, valamint az okosotthon fejlesztését. Csakúgy, mint amikor festeni tanulunk, az elméleti tudás ismerete korántsem elég. „Be kell piszkítanunk a kezünket” az IoT-projektek gyakorlati megvalósításához, hogy valóban elsajátíthassuk a technológiát. Ezen túlmenően, amikor egy projekt tömeggyártásba kerül stage, több tényezőt is figyelembe kell venni, mint például a hálózati kapcsolat, a konfiguráció, az IoT felhőplatform interakciója, a firmware-kezelés és -frissítések, a tömeggyártás menedzsmentje és a biztonsági konfiguráció. Mire kell tehát figyelnünk egy teljes IoT projekt kidolgozásakor? Az 1. fejezetben megemlítettük, hogy az intelligens otthon az egyik leggyakoribb IoT alkalmazási forgatókönyv, az intelligens lámpák pedig az egyik legalapvetőbb és legpraktikusabb készülékek, amelyek otthonokban, szállodákban, edzőtermekben, kórházakban stb. Ebben a könyvben egy intelligens fényprojekt felépítését vesszük alapul, elmagyarázzuk annak összetevőit és jellemzőit, valamint útmutatást adunk a projektfejlesztéshez. Reméljük, hogy ebből az esetből következtetéseket vonhat le további IoT-alkalmazások létrehozásához.
2.1 Bevezetés a tipikus IoT-projektekbe
Fejlesztési szempontból az IoT-projektek alapvető funkcionális moduljai az IoT-eszközök szoftver- és hardverfejlesztésére, a kliens alkalmazásfejlesztésre és az IoT felhőplatform-fejlesztésre sorolhatók. Fontos tisztázni az alapvető funkcionális modulokat, amelyeket ebben a részben részletesebben ismertetünk.
2.1.1 Alapvető modulok az általános IoT-eszközökhöz
Az IoT eszközök szoftver- és hardverfejlesztése a következő alapmodulokat tartalmazza: Adatgyűjtés
Az IoT-architektúra alsó rétegeként az észlelési és vezérlési réteg IoT-eszközei chipjeiken és perifériáikon keresztül kapcsolják össze az érzékelőket és az eszközöket az adatgyűjtés és a működésvezérlés érdekében.
9
Fiókkötés és kezdeti konfiguráció A legtöbb IoT-eszköz esetében a fiókkötés és a kezdeti konfiguráció egy műveleti folyamatban fejeződik be, plample, az eszközök összekapcsolása a felhasználókkal a Wi-Fi hálózat konfigurálásával.
Interakció IoT-felhőplatformokkal Az IoT-eszközök figyeléséhez és vezérléséhez az IoT-felhőplatformokhoz is csatlakoztatni kell őket, hogy parancsokat adhassanak és jelentsenek állapotot az egymás közötti interakción keresztül.
Eszközvezérlés Az IoT felhőplatformokhoz csatlakoztatva az eszközök kommunikálhatnak a felhővel, és regisztrálhatók, köthetők vagy vezérelhetők. A felhasználók IoT felhőplatformokon vagy helyi kommunikációs protokollokon keresztül lekérdezhetik a termék állapotát, és egyéb műveleteket hajthatnak végre az okostelefon-alkalmazáson.
Firmware-frissítés Az IoT-eszközök firmware-frissítést is megvalósíthatnak a gyártók igényei alapján. A felhő által küldött parancsok fogadásával megvalósul a firmware frissítés és a verziókezelés. Ezzel a firmware-frissítési funkcióval folyamatosan javíthatja az IoT-eszközök funkcióit, javíthatja a hibákat és javíthatja a felhasználói élményt.
2.1.2 Az ügyfélalkalmazások alapmoduljai
Az ügyfélalkalmazások (pl. okostelefonos alkalmazások) főként a következő alapmodulokat tartalmazzák:
Számlarendszer és jogosultság Támogatja a fiók- és eszközengedélyezést.
Eszközvezérlés Az okostelefonos alkalmazások általában vezérlő funkciókkal vannak felszerelve. A felhasználók könnyedén csatlakozhatnak IoT-eszközökhöz, és bármikor, bárhol kezelhetik azokat okostelefon-alkalmazásokon keresztül. Egy valós okosotthonban a készülékek vezérlése többnyire okostelefonos applikációkon keresztül történik, ami nem csak az eszközök intelligens kezelését teszi lehetővé, de munkaerőköltséget is megtakarít. Ezért az eszközvezérlés elengedhetetlen az ügyfélalkalmazásokhoz, mint például az eszközfunkció-attribútum-vezérlés, a jelenetvezérlés, az ütemezés, a távirányító, az eszközök összekapcsolása stb. Az intelligens otthoni felhasználók személyre szabhatják a jeleneteket a személyes igényeknek megfelelően, szabályozhatják a világítást, a háztartási készülékeket, a bejáratot. stb., hogy kényelmesebbé és kényelmesebbé tegyük az otthoni életet. Egyetlen gombbal időzíthetik a légkondicionálást, kikapcsolhatják azt, automatikusan bekapcsolhatják a folyosói világítást az ajtó kinyitásakor, vagy átkapcsolhatnak „mozi” üzemmódba.
Az értesítési ügyfélalkalmazások frissítik az IoT-eszközök valós idejű állapotát, és riasztásokat küldenek, ha az eszközök rendellenesen működnek.
10 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Értékesítés utáni ügyfélszolgálat Az okostelefon-alkalmazások értékesítés utáni szolgáltatásokat nyújthatnak a termékekhez az IoT-eszközök meghibásodásával és a műszaki műveletekkel kapcsolatos problémák időben történő megoldása érdekében.
Kiemelt funkciók A különböző felhasználók igényeinek kielégítése érdekében további funkciók is hozzáadhatók, mint például a Shake, NFC, GPS stb. A GPS segíthet beállítani a helyszíni műveletek pontosságát a hely és a távolság szerint, míg a Shake funkció lehetővé teszi a felhasználók számára a parancsok, amelyeket adott eszközhöz vagy jelenethez rázással kell végrehajtani.
2.1.3 Bevezetés a közös IoT felhőplatformokba
Az IoT felhőplatform egy minden az egyben platform, amely olyan funkciókat integrál, mint az eszközkezelés, az adatbiztonsági kommunikáció és az értesítéskezelés. Az IoT felhőplatformok célcsoportjuk és elérhetőségük szerint nyilvános IoT felhőplatformokra (a továbbiakban: nyilvános felhő) és privát IoT felhőplatformokra (a továbbiakban: privát felhő) oszthatók.
A nyilvános felhő általában a vállalatok vagy magánszemélyek számára megosztott IoT felhőplatformokat jelöli, amelyeket platformszolgáltatók üzemeltetnek és tartanak fenn, és amelyeket az interneten keresztül osztanak meg. Lehet ingyenes vagy olcsó, és az egész nyílt nyilvános hálózaton nyújt szolgáltatásokat, mint például az Alibaba Cloud, a Tencent Cloud, a Baidu Cloud, az AWS IoT, a Google IoT stb. Támogató platformként a nyilvános felhő integrálhatja a upstream szolgáltatókat és a továbbfelhasználók számára, hogy új értékláncot és ökoszisztémát hozzanak létre.
A privát felhő kizárólag vállalati használatra készült, így garantálja az adatok, a biztonság és a szolgáltatásminőség legjobb ellenőrzését. Szolgáltatásait és infrastruktúráját a vállalkozások külön karbantartják, és a támogató hardvereket és szoftvereket is meghatározott felhasználók számára dedikálják. A vállalatok személyre szabhatják a felhőszolgáltatásokat, hogy megfeleljenek vállalkozásuk igényeinek. Jelenleg néhány okosotthon-gyártó már rendelkezett privát IoT felhőplatformokkal, és ezek alapján fejlesztett intelligens otthoni alkalmazásokat.
A nyilvános felhőnek és a privát felhőnek megvan a maga előnyetages, amelyet később ismertetünk.
A kommunikációs kapcsolat eléréséhez legalább eszközoldali beágyazott fejlesztés szükséges, az üzleti szerverek, az IoT felhőplatformok és az okostelefonos alkalmazások mellett. Egy ilyen hatalmas projekttel szemben a nyilvános felhő rendszerint szoftverfejlesztő készleteket biztosít az eszközoldali és okostelefon-alkalmazásokhoz a folyamat felgyorsítása érdekében. Mind a nyilvános, mind a privát felhő szolgáltatásokat nyújt, beleértve az eszközhozzáférést, az eszközkezelést, az eszközárnyékot, valamint az üzemeltetést és karbantartást.
Eszközhozzáférés Az IoT felhőplatformoknak nem csak interfészt kell biztosítaniuk az eszközök protokollok használatával történő eléréséhez
2. fejezet Az IoT-projektek bevezetése és gyakorlata 11
például MQTT, CoAP, HTTPS és WebSocket, hanem az eszközbiztonsági hitelesítés funkciója is a hamis és illegális eszközök blokkolására, hatékonyan csökkentve a kompromittálódás kockázatát. Az ilyen hitelesítés általában különböző mechanizmusokat támogat, így az eszközök sorozatgyártásakor szükséges a kiválasztott hitelesítési mechanizmusnak megfelelő eszköztanúsítvány előzetes hozzárendelése és az eszközökbe való beégetése.
Eszközkezelés Az IoT felhőplatformok által biztosított eszközkezelési funkció nem csak abban segíthet a gyártóknak, hogy valós időben figyeljék eszközeik aktiválási állapotát és online állapotát, hanem olyan lehetőségeket is lehetővé tesz, mint eszközök hozzáadása/eltávolítása, visszakeresés, csoportok hozzáadása/törlése, firmware frissítés. és verziókezelés.
Az eszközárnyék IoT-felhőplatformok állandó virtuális verziót (eszközárnyékot) tudnak létrehozni minden egyes eszközhöz, és az eszközárnyék állapota szinkronizálható és lekérhető okostelefonos alkalmazással vagy más eszközökkel az internetes átviteli protokollokon keresztül. Az eszközárnyék tárolja az egyes eszközök legfrissebb jelentett állapotát és várható állapotát, és még ha az eszköz offline állapotban is van, akkor is lekérheti az állapotot API-k hívásával. Az eszközárnyék mindig bekapcsolt API-kat biztosít, amelyek megkönnyítik az eszközökkel kölcsönhatásba lépő okostelefon-alkalmazások készítését.
Üzemeltetés és karbantartás Az O&M funkció három szempontot foglal magában: · Statisztikai információk bemutatása az IoT-eszközökről és értesítésekről. · A naplókezelés lehetővé teszi az eszköz viselkedésével, a fel/le üzenetáramlással és az üzenettartalommal kapcsolatos információk lekérését. · Az eszközhibakeresés támogatja a parancsok kézbesítését, a konfiguráció frissítését, valamint az IoT felhőplatformok és az eszközüzenetek közötti interakció ellenőrzését.
2.2 Gyakorlat: Smart Light Project
Az egyes fejezetekben található elméleti bevezető után a Smart Light projekthez kapcsolódó gyakorlati részt talál, amely segít a gyakorlati tapasztalatszerzésben. A projekt az Espressif ESP32-C3 chipjén és az ESP RainMaker IoT Cloud Platformon alapul, és kiterjed az intelligens fénytermékek vezeték nélküli moduljainak hardverére, az ESP32C3 alapú okoseszközök beágyazott szoftverére, az okostelefon-alkalmazásokra és az ESP RainMaker interakcióra.
Forráskód A jobb tanulás és a tapasztalatok fejlesztése érdekében a könyvben szereplő projekt nyílt forráskódú. A forráskódot letöltheti a GitHub tárhelyünkről a https://github címen. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
2.2.1 A projekt felépítése
A Smart Light projekt három részből áll: i. ESP32-C3 alapú intelligens világítási eszközök, amelyek az IoT felhőplatformokkal való interakcióért, valamint a kapcsolók, a LED l fényerejének és színhőmérsékletének szabályozásáért felelősek.amp gyöngyöket. ii. Okostelefonos alkalmazások (beleértve az Android és iOS rendszeren futó táblagépes alkalmazásokat is), amelyek felelősek az intelligens light termékek hálózati konfigurálásáért, valamint állapotuk lekérdezéséért és vezérléséért.
iii. Az ESP RainMaker alapú IoT felhőplatform. Az egyszerűsítés kedvéért ebben a könyvben az IoT felhőplatformot és az üzleti szervert mint egészet tekintjük. Az ESP RainMakerrel kapcsolatos részleteket a 3. fejezet tartalmazza.
A Smart Light projektstruktúra és az IoT architektúrája közötti megfelelést a 2.1. ábra mutatja.
2.1. ábra. Az intelligens fényprojekt felépítése
2.2.2 Projektfunkciók
Felépítés szerint felosztva az egyes részek funkciói a következők. Intelligens világító eszközök
· Hálózati konfiguráció és csatlakozás. · LED PWM vezérlés, például kapcsoló, fényerő, színhőmérséklet stb. · Automatizálás vagy jelenet vezérlés, pl. időkapcsoló. · A Flash titkosítása és biztonságos indítása. · Firmware frissítés és verziókezelés.
2. fejezet Az IoT-projektek bevezetése és gyakorlata 13
Okostelefonos alkalmazások · Hálózati konfiguráció és eszköz-összerendelés. · Intelligens világítási termékek vezérlése, például kapcsoló, fényerő, színhőmérséklet stb. · Automatizálási vagy jelenetbeállítások, pl. időkapcsoló. · Helyi/távirányító. · Felhasználó regisztráció, bejelentkezés stb.
ESP RainMaker IoT felhőplatform · Az IoT-eszközökhöz való hozzáférés engedélyezése. · Az okostelefon-alkalmazások számára elérhető eszközműködési API-k biztosítása. · Firmware frissítés és verziókezelés.
2.2.3 Hardver előkészítés
Ha érdekli a projekt gyakorlati megvalósítása, akkor a következő hardverekre is szüksége lesz: intelligens lámpákra, okostelefonokra, Wi-Fi útválasztókra és a fejlesztői környezet telepítési követelményeinek megfelelő számítógépre. Intelligens lámpák
Az intelligens lámpák egy új típusú izzók, amelyek alakja megegyezik az általános izzólámpáéval. Az intelligens lámpa kondenzátoros, lefelé vezérelt tápegységből, vezeték nélküli modulból (beépített ESP32-C3-mal), LED vezérlőből és RGB LED mátrixból áll. Az áramellátáshoz csatlakoztatva a 15 V DC voltagA kondenzátor leépítése, dióda-egyenirányítás és szabályozás utáni kimenet energiát biztosít a LED-vezérlőnek és a LED-mátrixnak. A LED-vezérlő bizonyos időközönként automatikusan küldhet magas és alacsony szinteket, átkapcsolva az RGB LED-mátrixot zárt (világít) és nyitott (világítás) között, így cián, sárga, zöld, lila, kék, piros és fehér fény. A vezeték nélküli modul felelős a Wi-Fi útválasztóhoz való csatlakozásért, az intelligens lámpák állapotának fogadásáért és jelentéséért, valamint a LED vezérléséhez szükséges parancsok küldéséért.
2.2. ábra. Szimulált intelligens lámpa
A korai fejlesztésben stage, szimulálhat egy intelligens fényt az ESP32-C3DevKitM-1 kártyával, amely RGB LED-del l van csatlakoztatvaamp gyöngyök (lásd 2.2. ábra). De kellene
14 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
vegye figyelembe, hogy nem ez az egyetlen módja az intelligens lámpa összeállításának. A projekt hardverterve ebben a könyvben csak egy vezeték nélküli modult tartalmaz (beépített ESP32-C3-mal), de nem tartalmaz egy teljes intelligens lámpa hardvert. Ezenkívül az Espressif ESP32-C3 alapú ESP32C3-Lyra hangfejlesztő kártyát is gyárt a fények hanggal történő vezérlésére. Az alaplap rendelkezik interfésszel a mikrofonokhoz és a hangszórókhoz, és LED-szalagokat vezérelhet. Használható rendkívül alacsony költségű, nagy teljesítményű audio műsorszórók és ritmusfénycsíkok fejlesztésére. A 2.3. ábra egy ESP32-C3Lyra kártyát mutat, amely 40 LED-es fénycsíkkal van összekötve.
2.3. ábra. ESP32-C3-Lyra 40 LED-es lámpával összekapcsolva
Okostelefonok (Android/iOS) A Smart Light projekt egy okostelefon-alkalmazás fejlesztését foglalja magában az intelligens világítástechnikai termékek beállításához és vezérléséhez.
Wi-Fi útválasztók A Wi-Fi útválasztók a vezetékes hálózati jeleket és a mobilhálózati jeleket vezeték nélküli hálózati jelekké alakítják át számítógépek, okostelefonok, táblagépek és más vezeték nélküli eszközök hálózathoz való csatlakozásához. PlampLe, az otthoni szélessávot csak Wi-Fi útválasztóhoz kell csatlakoztatni a Wi-Fi eszközök vezeték nélküli hálózatba kapcsolásához. A Wi-Fi útválasztók által támogatott mainstream protokoll szabvány az IEEE 802.11n, átlagos TxRate 300 Mbps vagy maximum 600 Mbps. Visszafelé kompatibilisek az IEEE 802.11b és IEEE 802.11g szabványokkal. Az Espressif ESP32-C3 chipje támogatja az IEEE 802.11b/g/n szabványt, így választhat egysávos (2.4 GHz) vagy kétsávos (2.4 GHz és 5 GHz) Wi-Fi útválasztót.
A számítógépes (Linux/macOS/Windows) fejlesztői környezetet a 4. fejezet mutatja be. 2. fejezet: Az IoT-projektek bemutatása és gyakorlata 15
2.2.4 Fejlesztési folyamat
2.4. ábra. A Smart Light projekt fejlesztésének lépései
Hardvertervezés Az IoT-eszközök hardvertervezése elengedhetetlen egy IoT-projekthez. Egy komplett intelligens fényprojekt célja, hogy alamp hálózatról működik. Különböző gyártók gyártanak lamps különböző stílusú és meghajtótípusú, de vezeték nélküli moduljaik általában ugyanazt a funkciót látják el. A Smart Ligh projekt fejlesztési folyamatának egyszerűsítése érdekében ez a könyv csak a vezeték nélküli modulok hardvertervezésével és szoftverfejlesztésével foglalkozik.
IoT felhőplatform konfigurálása Az IoT felhőplatformok használatához projekteket kell konfigurálnia a háttérben, például termékek létrehozását, eszközök létrehozását, eszköztulajdonságok beállítását stb.
Beágyazott szoftverfejlesztés IoT-eszközökhöz Az ESP-IDF, az Espressif eszközoldali SDK segítségével valósítsa meg a várt funkciókat, beleértve az IoT felhőplatformokhoz való csatlakozást, a LED-illesztőprogramok fejlesztését és a firmware frissítését.
Okostelefonos alkalmazások fejlesztése Okostelefon-alkalmazások fejlesztése Android és iOS rendszerekhez a felhasználói regisztráció és bejelentkezés, az eszközvezérlés és egyéb funkciók megvalósításához.
IoT-eszköz-optimalizálás Az IoT-eszköz-funkciók alapvető fejlesztésének befejezése után optimalizálási feladatokhoz fordulhat, mint például az energiaoptimalizálás.
Tömeggyártási tesztelés Végezzen tömeggyártási teszteket a kapcsolódó szabványok szerint, mint például a berendezés működési tesztje, öregedési tesztje, RF teszt stb.
A fent felsorolt lépések ellenére egy Smart Light projektre nem feltétlenül vonatkozik ez az eljárás, mivel különböző feladatokat is el lehet végezni egyidejűleg. Plample, beágyazott szoftverek és okostelefonos alkalmazások párhuzamosan fejleszthetők. Előfordulhat, hogy néhány lépést meg kell ismételni, például az IoT-eszközök optimalizálását és a tömeggyártás tesztelését.
16 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
2.3 Összefoglalás
Ebben a fejezetben először egy IoT-projekt alapvető összetevőit és funkcionális moduljait fejtegettük, majd a gyakorlatban bemutattuk a Smart Light esetet, utalva annak szerkezetére, funkcióira, hardver-előkészítésére és fejlesztési folyamatára. Az olvasók következtetéseket vonhatnak le a gyakorlatból, és magabiztossá válhatnak, hogy a jövőben minimális hibákkal hajtsák végre az IoT-projekteket.
2. fejezet Az IoT-projektek bevezetése és gyakorlata 17
18 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
3. fejezet
Bevezetés
hogy
ESP
Esőcsináló
A dolgok internete (IoT) végtelen lehetőségeket kínál az emberek életmódjának megváltoztatására, ugyanakkor az IoT mérnöki fejlesztése tele van kihívásokkal. A nyilvános felhőkkel a terminálgyártók a következő megoldásokon keresztül valósíthatják meg a termékfunkciókat:
A megoldásszolgáltatók felhőplatformjai alapján Így a terminálgyártóknak már csak a termék hardverét kell megtervezni, majd a hardvert a felhőhöz csatlakoztatni a mellékelt kommunikációs modul segítségével, és az irányelvek szerint beállítani a termékfunkciókat. Ez egy hatékony megközelítés, mivel szükségtelenné teszi a szerveroldali és alkalmazásoldali fejlesztést, valamint üzemeltetést és karbantartást (O&M). Lehetővé teszi a terminálgyártók számára, hogy a hardvertervezésre összpontosítsanak anélkül, hogy számításba kellene venniük a felhőalapú megvalósítást. Az ilyen megoldások (pl. eszköz firmware és alkalmazás) azonban általában nem nyílt forráskódúak, így a termék funkcióit korlátozza a szolgáltató felhőplatformja, amely nem szabható testre. Eközben a felhasználói és az eszköz adatai is a felhőplatformhoz tartoznak.
Felhőtermékekre alapozva Ennél a megoldásnál a hardvertervezés befejezése után a terminálgyártóknak nemcsak felhőfunkciókat kell megvalósítaniuk a nyilvános felhő által biztosított egy vagy több felhőtermék használatával, hanem a hardvert a felhővel is össze kell kapcsolniuk. Plample, hogy csatlakozzon az Amazonhoz Web Szolgáltatások (AWS), a terminálgyártók olyan AWS-termékeket kell használniuk, mint az Amazon API Gateway, az AWS IoT Core és az AWS Lambda, hogy lehetővé tegyék az eszközhozzáférést, a távvezérlést, az adattárolást, a felhasználókezelést és más alapvető funkciókat. Nemcsak arra kéri a terminálgyártókat, hogy rugalmasan használják és konfigurálják a felhőtermékeket mélyreható ismeretekkel és gazdag tapasztalattal, hanem azt is megköveteli, hogy vegyék figyelembe a kezdeti és későbbi gyártási és karbantartási költségeket.tages Ez nagy kihívások elé állítja a vállalat energiáját és erőforrásait.
A nyilvános felhőkkel összehasonlítva a privát felhők általában meghatározott projektekhez és termékekhez készülnek. A privát felhőfejlesztők a legnagyobb szabadságot kapják a protokolltervezés és az üzleti logika megvalósítása terén. A terminálgyártók tetszés szerint készíthetnek termékeket és tervezési sémákat, valamint könnyen integrálhatják és felhatalmazhatják a felhasználói adatokat. A nyilvános felhő magas szintű biztonságának, méretezhetőségének és megbízhatóságának ötvözése az AdvannaltagA privát felhőben az Espressif elindította az ESP-t
19
RainMaker, egy mélyen integrált privát felhő megoldás, amely az Amazon felhőn alapul. A felhasználók egyszerűen telepíthetik az ESP RainMaker-t, és létrehozhatnak privát felhőt egyszerűen egy AWS-fiókkal.
3.1 Mi az ESP RainMaker?
Az ESP RainMaker egy komplett AIoT platform, amely több kiforrott AWS-termékkel épül fel. Különféle tömeggyártáshoz szükséges szolgáltatásokat nyújt, mint például az eszközfelhő-hozzáférés, az eszközfrissítés, a háttérkezelés, a harmadik féltől származó bejelentkezés, a hangintegráció és a felhasználókezelés. Az AWS által biztosított Serverless Application Repository (SAR) használatával a terminálgyártók gyorsan telepíthetik az ESP RainMaker-t AWS-fiókjukba, ami időtakarékos és könnyen kezelhető. Az Espressif által kezelt és karbantartott, az ESP RainMaker által használt SAR segít a fejlesztőknek csökkenteni a felhőkarbantartási költségeket és felgyorsítani az AIoT-termékek fejlesztését, így biztonságos, stabil és testreszabható AIoT-megoldásokat építenek ki. A 3.1. ábra az ESP RainMaker architektúráját mutatja.
3.1. ábra. Az ESP RainMaker felépítése
Az Espressif ESP RainMaker nyilvános szervere minden ESP-rajongó, gyártó és oktató számára ingyenes a megoldás értékeléséhez. A fejlesztők bejelentkezhetnek Apple-, Google- vagy GitHub-fiókkal, és gyorsan elkészíthetik saját IoT-alkalmazásuk prototípusait. A nyilvános szerver integrálja az Alexát és a Google Home-t, és hangvezérlési szolgáltatásokat nyújt, amelyeket az Alexa Skill és a Google Actions támogat. Szemantikai felismerési funkcióját szintén harmadik felek látják el. A RainMaker IoT-eszközök csak meghatározott műveletekre reagálnak. A támogatott hangutasítások teljes listáját a harmadik fél platformjain találja. Ezenkívül az Espressif nyilvános RainMaker alkalmazást kínál a felhasználók számára, hogy okostelefonon keresztül vezéreljék a termékeket. 20 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
3.2 Az ESP RainMaker megvalósítása
A 3.2. ábrán látható módon az ESP RainMaker négy részből áll: · Igénylési szolgáltatás, amely lehetővé teszi a RainMaker eszközök számára a tanúsítványok dinamikus beszerzését. · RainMaker Cloud (más néven felhő háttérrendszer), amely olyan szolgáltatásokat nyújt, mint az üzenetszűrés, a felhasználókezelés, az adattárolás és a harmadik féltől származó integráció. · RainMaker Agent, amely lehetővé teszi a RainMaker eszközök számára, hogy csatlakozzanak a RainMaker Cloudhoz. · RainMaker Client (RainMaker App vagy CLI-szkriptek), kiépítéshez, felhasználók létrehozásához, eszköztársításhoz és -vezérléshez stb.
3.2. ábra. Az ESP RainMaker felépítése
Az ESP RainMaker teljes eszközkészletet biztosít a termékfejlesztéshez és a tömeggyártáshoz, beleértve a RainMaker SDK-t
A RainMaker SDK az ESP-IDF-en alapul, és biztosítja az eszközoldali ügynök és a kapcsolódó C API-k forráskódját a firmware-fejlesztéshez. A fejlesztőknek csak az alkalmazás logikáját kell megírniuk, a többit pedig a RainMaker keretrendszerre kell bízniuk. A C API-kkal kapcsolatos további információkért látogasson el a https://bookc3.espressif.com/rm/c-api-reference webhelyre. RainMaker App A RainMaker App nyilvános verziója lehetővé teszi a fejlesztők számára, hogy befejezzék az eszközök kiépítését, valamint az eszközök (pl. intelligens világítási termékek) állapotának vezérlését és lekérdezését. Elérhető iOS és Android alkalmazásboltokban is. További részletekért lásd a 10. fejezetet. REST API-k A REST API-k segítenek a felhasználóknak saját, a RainMaker alkalmazáshoz hasonló alkalmazásokat létrehozni. További információért látogasson el a https://swaggerapis.rainmaker.espressif.com/ oldalra.
3. fejezet: Az ESP RainMaker 21 bemutatása
Python API-k A RainMaker SDK-val együtt kapott Python-alapú CLI az okostelefonok funkcióihoz hasonló összes funkció megvalósításához biztosított. A Python API-kkal kapcsolatos további információkért látogasson el a https://bookc3.espressif.com/rm/python-api-reference webhelyre.
Admin CLI A magasabb szintű hozzáféréssel rendelkező adminisztrátori CLI az ESP RainMaker privát telepítéséhez biztosított az eszköztanúsítványok tömeges generálásához.
3.2.1 Igénybejelentési szolgáltatás
A RainMaker eszközök és a felhő háttérrendszer közötti minden kommunikáció az MQTT+TLS-en keresztül történik. Az ESP RainMaker kontextusában a „igénylés” az a folyamat, amelyben az eszközök tanúsítványokat szereznek be a Claiming Service-től a felhő háttérrendszerhez való csatlakozáshoz. Ne feledje, hogy a Claiming Service csak a nyilvános RainMaker szolgáltatásra vonatkozik, míg a privát telepítéshez az eszköztanúsítványokat tömegesen kell előállítani az Admin CLI-n keresztül. Az ESP RainMaker háromféle igényérvényesítési szolgáltatást támogat: Önkövetelés
Az eszköz maga kéri le a tanúsítványokat az eFuse-ban előre programozott titkos kulcson keresztül, miután csatlakozott az internethez. Host Driven Claiming A tanúsítványokat a RainMaker fiókkal rendelkező fejlesztő gazdagéptől szerezzük be. Támogatott igénylés A tanúsítványok beszerzése okostelefon-alkalmazásokon keresztül történik a kiépítés során.
3.2.2 RainMaker ügynök
3.3. ábra. A RainMaker SDK felépítése A RainMaker Agent elsődleges feladata, hogy kapcsolatot biztosítson, és segítse az alkalmazási réteget a uplink/downlink felhőadatok feldolgozásához. A RainMaker SDK 22 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez segítségével készült
és a bevált ESP-IDF keretrendszer alapján fejlesztették ki, olyan ESP-IDF komponensek felhasználásával, mint az RTOS, NVS és MQTT. A 3.3. ábra a RainMaker SDK felépítését mutatja.
A RainMaker SDK két fő funkciót tartalmaz.
Kapcsolat
én. Együttműködés a Claiming Service-vel az eszköztanúsítványok beszerzése érdekében.
ii. Csatlakozás a felhő háttérrendszerhez a biztonságos MQTT protokoll használatával távoli kapcsolat biztosításához és távvezérlés, üzenetjelentések, felhasználókezelés, eszközkezelés stb. megvalósításához. Alapértelmezés szerint az ESP-IDF MQTT összetevőjét használja, és absztrakciós réteget biztosít a másokkal való interfészhez. protokoll veremek.
iii. Wi-Fi hozzáférési komponens biztosítása a Wi-Fi kapcsolathoz és kiépítéshez, esp https ota komponens az OTA frissítésekhez, és esp helyi ctrl komponens a helyi eszközök felderítéséhez és csatlakoztatásához. Mindezek a célok egyszerű konfigurációval elérhetők.
Adatfeldolgozás
én. A Claiming Service által kiadott eszköztanúsítványok és a RainMaker futtatásakor szükséges adatok tárolása alapértelmezésben az nvs flash komponens által biztosított interfész segítségével, valamint API-k biztosítása a fejlesztők számára közvetlen használatra.
ii. A visszahívási mechanizmus használata az uplink/downlink felhőadatok feldolgozásához, és az adatok automatikus feloldása az alkalmazási rétegbe a fejlesztők általi egyszerű feldolgozás érdekében. PlampA RainMaker SDK gazdag interfészt biztosít a TSL (Thing Specification Language) adatok létrehozásához, amelyek szükségesek a TSL-modellek meghatározásához az IoT-eszközök leírásához és olyan funkciók megvalósításához, mint az időzítés, a visszaszámlálás és a hangvezérlés. Az alapvető interaktív funkciókhoz, például az időzítéshez a RainMaker SDK fejlesztésmentes megoldást kínál, amely szükség esetén egyszerűen engedélyezhető. Ezután a RainMaker Agent közvetlenül feldolgozza az adatokat, elküldi a felhőbe a kapcsolódó MQTT témakörön keresztül, és visszahívási mechanizmuson keresztül visszacsatolja a felhő háttérrendszerben történt adatváltozásokat.
3.2.3 Cloud Backend
A felhő háttérrendszer az AWS szerver nélküli számítástechnikára épül, és az AWS Cognito (identitáskezelő rendszer), az Amazon API Gateway, az AWS Lambda (szerver nélküli számítási szolgáltatás), az Amazon DynamoDB (NoSQL adatbázis), az AWS IoT Core (MQTT hozzáférést biztosító IoT hozzáférési mag) révén érhető el. és szabályszűrés), Amazon Simple Email Service (SES egyszerű levelezési szolgáltatás), Amazon CloudFront (gyors kézbesítési hálózat), Amazon Simple Queue Service (SQS üzenetsorolás) és Amazon S3 (bucket storage szolgáltatás). Célja a méretezhetőség és a biztonság optimalizálása. Az ESP RainMaker segítségével a fejlesztők anélkül kezelhetik az eszközöket, hogy kódot kellene írniuk a felhőbe. Az eszközök által jelentett üzenetek transzparensen továbbítódnak a címre
3. fejezet: Az ESP RainMaker 23 bemutatása
alkalmazáskliensek vagy más harmadik féltől származó szolgáltatások. A 3.1. táblázat a felhő háttérrendszerben használt AWS felhőtermékeket és -funkciókat mutatja be, további termékek és szolgáltatások fejlesztés alatt.
3.1. táblázat. A felhő háttérrendszer által használt AWS felhőtermékek és -funkciók
A RainMaker által használt AWS Cloud termék
Funkció
AWS Cognito
Felhasználói hitelesítő adatok kezelése és harmadik féltől származó bejelentkezések támogatása
AWS lambda
A felhő háttérrendszer alapvető üzleti logikájának megvalósítása
Amazon Timestream Idősor adatok tárolása
Amazon DynamoDB Az ügyfelek személyes adatainak tárolása
AWS IoT Core
MQTT kommunikáció támogatása
Amazon SES
E-mail küldési szolgáltatások nyújtása
Amazon CloudFront A háttérrendszer kezelésének felgyorsítása webwebhely hozzáférés
Amazon SQS
Üzenetek továbbítása az AWS IoT Core-ból
3.2.4 RainMaker kliens
A RainMaker kliensek, például az App és a CLI, REST API-kon keresztül kommunikálnak a felhő háttérrendszerrel. A REST API-kkal kapcsolatos részletes információk és utasítások az Espressif által biztosított Swagger dokumentációban találhatók. A RainMaker mobilalkalmazás-kliense iOS és Android rendszerekre is elérhető. Lehetővé teszi az eszközök kiépítését, vezérlését és megosztását, valamint visszaszámlálási feladatok létrehozását és engedélyezését, valamint harmadik féltől származó platformokhoz való csatlakozást. Az eszközök által jelentett konfigurációnak megfelelően automatikusan betölti a felhasználói felületet és az ikonokat, és teljes mértékben megjeleníti az eszköz TSL-jét.
Plample, ha egy intelligens lámpa a RainMaker SDK által biztosított examples, az izzólámpa ikonja és felhasználói felülete automatikusan betöltődik, amikor a kiépítés befejeződött. A felhasználók az interfészen keresztül módosíthatják a fény színét és fényerejét, és harmadik fél vezérlését is elérhetik az Alexa Smart Home Skill vagy a Google Smart Home Actions ESP RainMaker fiókjukkal való összekapcsolásával. A 3.4. ábra az ikont és a felhasználói felületet mutatja, plampAz Alexa, a Google Home és az ESP RainMaker App izzólámpáit.
24 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
(a) Plample – Alexa
(b) Plample – Google Home
(c) Plample – ESP RainMaker
3.4. ábra Plampikon és az izzólámpa felhasználói felülete az Alexa, a Google Home és az ESP RainMaker alkalmazásban
3.3 Gyakorlat: Kulcspontok az ESP RainMakerrel való fejlesztéshez
Miután az eszközillesztő réteg elkészült, a fejlesztők elkezdhetik létrehozni a TSL-modelleket és feldolgozni a lefelé irányuló adatokat a RainMaker SDK által biztosított API-k segítségével, és engedélyezhetik az ESP RainMaker alapszolgáltatásokat a termékdefiníció és a követelmények alapján.
3. fejezet: Az ESP RainMaker 25 bemutatása
A könyv 9.4. szakasza elmagyarázza a LED-es intelligens lámpa megvalósítását a RainMakerben. A hibakeresés során a fejlesztők a RainMaker SDK CLI-eszközeit használhatják az intelligens lámpával való kommunikációhoz (vagy hívhatnak REST API-kat a Swaggertől).
A 10. fejezet a REST API-k használatát ismerteti az okostelefonos alkalmazások fejlesztésében. A LED intelligens lámpák OTA frissítéseivel a 11. fejezet foglalkozik. Ha a fejlesztők engedélyezték az ESP Insights távfelügyeletet, az ESP RainMaker felügyeleti háttérprogramja megjeleníti az ESP Insights adatait. A részleteket a 15. fejezetben mutatjuk be.
Az ESP RainMaker támogatja a privát telepítést, amely a következő módokon különbözik a nyilvános RainMaker szervertől:
Igénylési szolgáltatás A tanúsítványok privát telepítésekben történő generálásához a RainMaker Admin CLI-t kell használni az igénylés helyett. Nyilvános szerver esetén a fejlesztőknek rendszergazdai jogokat kell adni a firmware frissítés végrehajtásához, de ez nem kívánatos kereskedelmi telepítéseknél. Ezért sem külön hitelesítési szolgáltatás nem biztosítható az önigényléshez, sem adminisztrátori jogok a gazdagép által vezérelt vagy támogatott igényléshez.
Telefonos alkalmazások Privát telepítéseknél az alkalmazásokat külön kell konfigurálni és lefordítani annak érdekében, hogy a fiókrendszerek ne legyenek együttműködőek.
Harmadik féltől származó bejelentkezések és hangintegráció A fejlesztőknek külön kell konfigurálniuk a Google és az Apple Developer fiókokon keresztül, hogy engedélyezzék a harmadik féltől származó bejelentkezéseket, valamint az Alexa Skill és a Google Voice Assistant integrációját.
TIPPEK A felhő telepítésével kapcsolatos részletekért látogasson el a https://customer.rainmaker.espressif webhelyre. com. Ami a firmware-t illeti, a nyilvános szerverről a privát szerverre való migrációhoz csak az eszköztanúsítványok cseréje szükséges, ami nagymértékben javítja a migráció hatékonyságát, valamint csökkenti az áttelepítés és a másodlagos hibakeresés költségeit.
3.4 Az ESP RainMaker szolgáltatásai
Az ESP RainMaker szolgáltatásai főként három szempontot céloznak meg – a felhasználókezelést, a végfelhasználókat és a rendszergazdákat. Minden funkció támogatott mind a nyilvános, mind a privát szervereken, hacsak másként nem jelezzük.
3.4.1 Felhasználókezelés
A felhasználókezelési funkciók lehetővé teszik a végfelhasználók számára a regisztrációt, bejelentkezést, jelszavak megváltoztatását, jelszavak lekérését stb.
26 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Regisztráció és bejelentkezés A RainMaker által támogatott regisztrációs és bejelentkezési módok a következők: · E-mail azonosító + Jelszó · Telefonszám + Jelszó · Google fiók · Apple fiók · GitHub fiók (csak nyilvános szerveren) · Amazon fiók (csak privát szerver)
MEGJEGYZÉS A Google/Amazon szolgáltatással történő regisztráció megosztja a felhasználó e-mail címét a RainMakerrel. Az Apple használatával történő regisztráció megoszt egy álcímet, amelyet az Apple kifejezetten a RainMaker szolgáltatáshoz rendel a felhasználó számára. A rendszer automatikusan létrehoz egy RainMaker-fiókot azon felhasználók számára, akik először jelentkeznek be Google-, Apple- vagy Amazon-fiókkal.
Jelszó módosítása Csak e-mail azonosító/telefonszám alapú bejelentkezéshez érvényes. A jelszó megváltoztatása után az összes többi aktív munkamenet kijelentkezett. Az AWS Cognito viselkedésének megfelelően a kijelentkezett munkamenetek akár 1 óráig is aktívak maradhatnak.
Jelszó lekérése Csak e-mail azonosító/telefonszám alapú bejelentkezéshez érvényes.
3.4.2 Végfelhasználói szolgáltatások
A végfelhasználók számára elérhető szolgáltatások közé tartozik a helyi és távvezérlés és felügyelet, az ütemezés, az eszközcsoportosítás, az eszközmegosztás, a push értesítések és a harmadik féltől származó integrációk.
Távvezérlés és felügyelet · Lekérdezheti egy vagy az összes eszköz konfigurációját, paraméterértékeit és kapcsolati állapotát. · Paraméterek beállítása egy vagy több eszközhöz.
Helyi vezérlés és felügyelet A helyi vezérléshez a mobiltelefont és a készüléket ugyanahhoz a hálózathoz kell csatlakoztatni.
Ütemezés · A felhasználók előre beállítanak bizonyos műveleteket egy adott időpontban. · Az ütemezés végrehajtása közben nem szükséges az eszköz internetkapcsolata. · Egyszeri vagy ismételt (napok megadásával) egyetlen vagy több eszközhöz.
Eszközcsoportosítás Támogatja a többszintű absztrakt csoportosítást A csoport metaadatai felhasználhatók Otthoni szoba struktúra létrehozására.
3. fejezet: Az ESP RainMaker 27 bemutatása
Eszközmegosztás Egy vagy több eszköz megosztható egy vagy több felhasználóval.
Push értesítések A végfelhasználók push értesítéseket kapnak az olyan eseményekről, mint például · Új eszköz(ek) hozzáadása/eltávolítása · Eszköz csatlakoztatva a felhőhöz · Az eszköz le van választva a felhőről · Eszközmegosztási kérelmek létrehozva/elfogadva/elutasítva · Eszközök által jelentett figyelmeztető üzenetek
Harmadik féltől származó integrációk Az Alexa és a Google Voice Assistant támogatja a RainMaker eszközök, köztük a lámpák, kapcsolók, aljzatok, ventilátorok és hőmérséklet-érzékelők vezérlését.
3.4.3 Adminisztrátori szolgáltatások
Az adminisztrációs funkciók lehetővé teszik az adminisztrátorok számára az eszközregisztrációt, az eszközcsoportosítást, az OTA-frissítéseket, valamint az OTA-frissítéseket view statisztikák és ESP Insights adatok.
Eszköz regisztráció Készítsen eszköztanúsítványokat, és regisztráljon az Admin CLI-n (csak privát szerveren).
Eszközcsoportosítás Hozzon létre absztrakt vagy strukturált csoportokat az eszközinformációk alapján (csak privát szerver).
OTA (Over-the-Air) frissítések Töltsön fel firmware-t a verzió és a modell alapján egy vagy több eszközre vagy csoportra Az OTA-feladatok megfigyelése, törlése vagy archiválása.
View statisztika ViewA statisztikai adatok a következőket tartalmazzák: · Eszközregisztráció (az adminisztrátor által regisztrált tanúsítványok) · Eszközaktiválások (első alkalommal csatlakoztatott eszköz) · Felhasználói fiókok · Felhasználó-eszköz társítás
View ESP Insights adatok ViewAz ESP Insights adatai a következőket tartalmazzák: · Hibák, figyelmeztetések és egyéni naplók · Összeomlási jelentések és elemzés · Újraindítás okai · Memóriahasználat, RSSI stb. · Egyéni mutatók és változók
28 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
3.5 Összefoglalás
Ebben a fejezetben bemutattunk néhány fő különbséget a nyilvános RainMaker és a privát telepítés között. Az Espressif által elindított privát ESP RainMaker megoldás rendkívül megbízható és bővíthető. Az összes ESP32 sorozatú chip AWS-hez lett csatlakoztatva és adaptálva, ami nagymértékben csökkenti a költségeket. A fejlesztők a prototípus-ellenőrzésre összpontosíthatnak anélkül, hogy az AWS felhőtermékeiről kellene tanulniuk. Elmagyaráztuk az ESP RainMaker megvalósítását és funkcióit, valamint néhány kulcsfontosságú pontot a platform használatával történő fejlesztéshez.
Beolvasás az ESP RainMaker for Android letöltéséhez Scan az ESP RainMaker iOS-hez letöltéséhez
3. fejezet: Az ESP RainMaker 29 bemutatása
30 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Fejezet Beállítás 4 Fejlesztői környezet
Ez a fejezet az ESP-IDF-re, az ESP32-C3 hivatalos szoftverfejlesztési keretére összpontosít. Elmagyarázzuk a környezet beállítását különböző operációs rendszereken, bemutatjuk az ESP-IDF projektstruktúráját és build rendszerét, valamint a kapcsolódó fejlesztőeszközök használatát. Ezután bemutatjuk egy ex fordítási és futtatási folyamatátample projektet, miközben részletes magyarázatot ad a kimeneti naplóról minden stage.
4.1 ESP-IDF Overview
Az ESP-IDF (Espressif IoT Development Framework) az Espressif Technology által biztosított egyablakos IoT fejlesztési keretrendszer. A C/C++-t használja fő fejlesztői nyelvként, és támogatja a keresztfordítást olyan általános operációs rendszereken, mint a Linux, Mac és Windows. Az exampA könyvben szereplő programok az ESP-IDF használatával lettek kifejlesztve, amely a következő funkciókat kínálja: · SoC rendszerszintű illesztőprogramok. Az ESP-IDF illesztőprogramokat tartalmaz az ESP32, ESP32-S2, ESP32-C3,
és egyéb chips. Ezek az illesztőprogramok magukban foglalják a perifériás alacsony szintű (LL) könyvtárat, a hardveres absztrakciós réteg (HAL) könyvtárát, az RTOS támogatást és a felső rétegű illesztőprogramokat stb. · Alapvető összetevők. Az ESP-IDF az IoT fejlesztéséhez szükséges alapvető összetevőket tartalmazza. Ez magában foglalja a több hálózati protokoll veremét, például a HTTP és az MQTT, egy dinamikus frekvenciamodulációval rendelkező energiagazdálkodási keretrendszert, valamint olyan funkciókat, mint a Flash Encryption és a Secure Boot stb. · Fejlesztői és gyártási eszközök. Az ESP-IDF általánosan használt eszközöket biztosít az építkezéshez, a flash-hez és a hibakereséshez a fejlesztés és a tömeggyártás során (lásd a 4.1. ábrát), mint például a CMake alapú épületrendszer, a GCC alapú keresztfordító eszközlánc és a J.TAG Az OpenOCD-n alapuló hibakereső eszköz stb. Érdemes megjegyezni, hogy az ESP-IDF kód elsősorban az Apache 2.0 nyílt forráskódú licencéhez tapad. A felhasználók korlátozás nélkül fejleszthetnek személyes vagy kereskedelmi szoftvereket, miközben betartják a nyílt forráskódú licenc feltételeit. Ezenkívül a felhasználók ingyenesen kapnak állandó szabadalmi licenceket, anélkül, hogy nyílt forráskódúak legyenek a forráskód bármilyen módosítása.
31
4.1. ábra.
Építés, villogás és hibakeresés
fejlesztéshez és tömeggyártáshoz szükséges eszközöket
4.1.1 ESP-IDF verziók
Az ESP-IDF kód nyílt forráskódú projektként a GitHubon található. Jelenleg három fő verzió áll rendelkezésre: v3, v4 és v5. Az egyes főverziók általában különböző alverziókat tartalmaznak, mint például a v4.2, v4.3 és így tovább. Az Espressif Systems 30 hónapos támogatást biztosít a hibajavításokhoz és a biztonsági javításokhoz minden egyes kiadott alverzióhoz. Ezért a szubverziók változatait is rendszeresen kiadják, mint például a v4.3.1, v4.2.2 stb. A 4.1 táblázat bemutatja a különböző ESP-IDF verziók támogatási állapotát az Espressif chipekhez, jelezve, hogy vannak-e előzetes verzióban.view stage (támogatás felajánlása előview verziók, amelyekből hiányozhatnak bizonyos szolgáltatások vagy dokumentáció), vagy hivatalosan támogatottak.
4.1. táblázat. Az Espressif chipek különböző ESP-IDF verzióinak támogatási állapota
ESP32 sorozat ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 támogatott
v4.2 támogatott támogatott
v4.3 támogatott támogatott támogatott
v4.4 támogatott támogatott támogatott támogatott támogatott
előttiview
v5.0 támogatott támogatott támogatott támogatott támogatott támogatott előview
32 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
A főbb verziók iterációja gyakran magában foglalja a keretszerkezet módosítását és a fordítási rendszer frissítését. Plample, a fő változás a v3.*-ról a v4.*-ra a build rendszer fokozatos átállása volt Make-ről CMake-re. Másrészt a kisebb verziók iterációja jellemzően új funkciók hozzáadásával vagy új chipek támogatásával jár.
Fontos megkülönböztetni és megérteni a kapcsolatot a stabil verziók és a GitHub-ágak között. A v*.* vagy v*.*.* címkével ellátott verziók olyan stabil verziókat jelentenek, amelyek átmentek az Espressif teljes belső tesztelésen. A javítás után ugyanazon verzió kódja, szerszámlánca és kiadási dokumentumai változatlanok maradnak. A GitHub-ágak (pl. a kiadás/v4.3 ág) azonban gyakori kódvégrehajtáson mennek keresztül, gyakran napi rendszerességgel. Ezért az ugyanazon ágon található két kódrészlet eltérhet, ezért a fejlesztőknek ennek megfelelően haladéktalanul frissíteniük kell kódjukat.
4.1.2 ESP-IDF Git munkafolyamat
Az Espressif egy adott Git-munkafolyamatot követ az ESP-IDF-hez, az alábbiak szerint:
· Új változtatások történnek a fő fejlesztési ágként szolgáló master ágon. Az ESP-IDF verzió a fő ágon mindig tartalmaz egy -dev értéket tag jelzi, hogy jelenleg fejlesztés alatt áll, például a v4.3-dev. A fő ágon végrehajtott változások először újraviewSzerkesztette és tesztelte az Espressif belső tárházában, majd az automatikus tesztelés befejezése után továbbította a GitHubba.
· Miután egy új verzió befejezte a fő ágon a funkciófejlesztést, és megfelel a béta tesztelés feltételeinek, átvált egy új ágra, például a release/ v4.3-ra. Ráadásul ez az új ág az tagged kiadás előtti verzióként, mint például a v4.3-beta1. A fejlesztők a GitHub platformra hivatkozva hozzáférhetnek az ágak teljes listájához és tags az ESP-IDF számára. Fontos megjegyezni, hogy a béta verzió (kiadás előtti verzió) továbbra is jelentős számú ismert problémát tartalmazhat. Mivel a béta verzió folyamatos tesztelésen megy keresztül, a hibajavítások egyszerre jelennek meg ehhez a verzióhoz és a fő ághoz. Eközben a fő ág már elkezdhetett új funkciókat fejleszteni a következő verzióhoz. Amikor a tesztelés majdnem befejeződött, egy kiadásjelölt (rc) címkét adnak az ághoz, jelezve, hogy potenciális jelölt a hivatalos kiadásra, például a v4.3-rc1-re. Ezen stage, az ág továbbra is kiadás előtti verzió.
· Ha nem fedeznek fel vagy jelentenek jelentősebb hibákat, a kiadás előtti verzió végül kap egy fő verziócímkét (pl. v5.0) vagy egy kisebb verziócímkét (pl. v4.3), és hivatalos kiadási verzióvá válik, amelyet dokumentálnak. a kiadási megjegyzések oldalán. Ezt követően az ebben a verzióban azonosított hibákat a kiadási ágon javítják. A kézi tesztelés befejezése után az ághoz egy hibajavító verziócímkét rendelnek (pl. v4.3.2), ami a kiadási megjegyzések oldalán is megjelenik.
4. fejezet Fejlesztői környezet beállítása 33
4.1.3 A megfelelő verzió kiválasztása
Mivel az ESP-IDF hivatalosan megkezdte az ESP32-C3 támogatását a 4.3-as verziótól, és a v4.4 még nem jelent meg hivatalosan a könyv írásakor, a könyvben a v4.3.2 verziót használtuk, amely egy átdolgozott verzió. v4.3. Fontos azonban megjegyezni, hogy mire elolvassa ezt a könyvet, a 4.4-es vagy újabb verziók már elérhetőek lehetnek. A verzió kiválasztásakor a következőket javasoljuk:
· Belépő szintű fejlesztőknek célszerű a stabil v4.3-as verziót vagy annak felülvizsgált verzióját választani, ami igazodik az ex-hezampebben a könyvben használt változat.
· Tömeggyártási célokra ajánlott a legújabb stabil verzió használata, hogy a legfrissebb műszaki támogatást élvezhesse.
· Ha új chipekkel kíván kísérletezni vagy új termékfunkciókat szeretne felfedezni, kérjük, használja a fő ágat. A legújabb verzió tartalmazza az összes legújabb funkciót, de ne feledje, hogy lehetnek ismert vagy ismeretlen hibák.
· Ha a használt stabil verzió nem tartalmazza a kívánt új funkciókat, és minimalizálni szeretné a fő ághoz kapcsolódó kockázatokat, fontolja meg a megfelelő kiadási ág, például a kiadás/v4.4 ág használatát. Az Espressif GitHub tárháza először létrehozza a kiadás/v4.4 ágat, majd kiadja a stabil v4.4-es verziót az ág konkrét történeti pillanatképe alapján, miután befejezte az összes funkciófejlesztést és tesztelést.
4.1.4 Végeview az ESP-IDF SDK könyvtárból
Az ESP-IDF SDK két fő könyvtárból áll: esp-idf és .espressif. Az előbbi tartalmazza az ESP-IDF lerakat forráskódját files és fordítási szkriptek, míg az utóbbi elsősorban a fordítóeszköz-láncokat és egyéb szoftvereket tárolja. E két könyvtár ismerete segít a fejlesztőknek a rendelkezésre álló erőforrások jobb kihasználásában és a fejlesztési folyamat felgyorsításában. Az ESP-IDF könyvtárszerkezetét az alábbiakban ismertetjük:
(1) ESP-IDF repository kódkönyvtár (/esp/esp-idf), a 4.2. ábrán látható módon.
a. Összetevők könyvtárának összetevői
Ez az alapvető könyvtár az ESP-IDF számos alapvető szoftverkomponensét integrálja. Egyetlen projektkód sem fordítható le anélkül, hogy a könyvtárban található összetevőkre támaszkodnánk. Tartalmazza a különféle Espressif chipek illesztőprogram-támogatását. Az LL-könyvtártól és a HAL-könyvtár-interfészektől a perifériákhoz a felső szintű Driver és Virtual-ig File Rendszer (VFS) réteg támogatás, a fejlesztők különböző szinteken választhatják ki a megfelelő komponenseket fejlesztési igényeiknek. Az ESP-IDF több szabványos hálózati protokollvermet is támogat, mint például a TCP/IP, HTTP, MQTT, WebSocket stb. A fejlesztők olyan ismerős interfészeket használhatnak, mint a Socket hálózati alkalmazások létrehozásához. A komponensek megértést biztosítanak
34 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
4.2. ábra. ESP-IDF lerakat kódkönyvtár
funkcionalitása, és könnyen integrálható alkalmazásokba, így a fejlesztők kizárólag az üzleti logikára összpontosíthatnak. Néhány gyakori összetevő: · illesztőprogram: Ez az összetevő perifériás illesztőprogramokat tartalmaz különböző Espressif-ekhez
chip-sorozatok, például GPIO, I2C, SPI, UART, LEDC (PWM), stb. Az ebben a komponensben található periféria-illesztőprogramok chip-független absztrakt interfészeket kínálnak. Minden perifériának van egy közös fejléce file (mint például a gpio.h), így nincs szükség különféle chip-specifikus támogatási kérdésekre. · esp_wifi: A Wi-Fi, mint speciális periféria, külön komponensként kezelendő. Több API-t tartalmaz, például különféle Wi-Fi illesztőprogram-módok inicializálását, paraméterkonfigurációt és eseményfeldolgozást. Ennek az összetevőnek bizonyos funkciói statikus hivatkozási könyvtárak formájában állnak rendelkezésre. Az ESP-IDF átfogó illesztőprogram-dokumentációt is biztosít a könnyű használat érdekében.
4. fejezet Fejlesztői környezet beállítása 35
· freertos: Ez a komponens tartalmazza a teljes FreeRTOS kódot. Amellett, hogy átfogó támogatást nyújt ehhez az operációs rendszerhez, az Espressif kiterjesztette támogatását a kétmagos chipekre is. Az olyan kétmagos chipeknél, mint az ESP32 és az ESP32-S3, a felhasználók feladatokat hozhatnak létre meghatározott magokon.
b. Dokumentumkönyvtár docs
Ez a könyvtár az ESP-IDF-hez kapcsolódó fejlesztési dokumentumokat tartalmazza, beleértve az Első lépések útmutatót, az API referencia kézikönyvet, a Fejlesztési útmutatót stb.
MEGJEGYZÉS Az automatizált eszközökkel történő összeállítás után a könyvtár tartalma a https://docs.espressif.com/projects/esp-idf címen kerül telepítésre. Kérjük, győződjön meg arról, hogy a dokumentumcélt ESP32-C3-ra váltja, és válassza ki a megadott ESP-IDF verziót.
c. Script eszköz eszközök
Ez a könyvtár tartalmazza az általánosan használt fordítási előtér-eszközöket, például az idf.py fájlt és az idf_monitor.py monitorterminál eszközt stb. A cmake alkönyvtár szintén tartalmazza a fő szkriptet files a fordítási rendszerben, amely az ESP-IDF fordítási szabályok megvalósításának alapjául szolgál. A környezeti változók hozzáadásakor az eszközök könyvtár tartalma hozzáadódik a rendszer környezeti változójához, lehetővé téve az idf.py közvetlenül a projekt elérési útja alatt történő végrehajtását.
d. Voltample programkönyvtár plamples
Ez a könyvtár az ESP-IDF ex. hatalmas gyűjteményét tartalmazzaample programokat, amelyek bemutatják az összetevő API-k használatát. Az exampa les kategóriáik alapján különböző alkönyvtárakba vannak rendezve:
· kezdő lépések: Ez az alkönyvtár belépő szintű exampolyanok, mint a „hello world” és a „blink”, hogy segítsenek a felhasználóknak megérteni az alapokat.
· bluetooth: Bluetooth-hoz kapcsolódó plamples itt, beleértve a Bluetooth LE Mesh, a Bluetooth LE HID, a BluFi és még sok mást.
· wifi: Ez az alkönyvtár a Wi-Fi-re összpontosít, plamples, beleértve az alapvető programokat, mint a Wi-Fi SoftAP, a Wi-Fi Station, az espnow, valamint a védett kommunikációs protokollt, pl.amples az Espressiftől. Több alkalmazási réteget is tartalmaz, plampWi-Fi-n alapulnak, mint például az Iperf, a Sniffer és a Smart Config.
· perifériák: Ez a kiterjedt alkönyvtár a perifériák nevei alapján számos almappára oszlik. Főleg perifériás illesztőprogramokat tartalmaz, plampLes az Espressif chipekhez, minden egyes example több alexamples. Például a gpio alkönyvtár két plamples: GPIO és GPIO mátrix billentyűzet. Fontos megjegyezni, hogy nem minden exampAz ebben a címtárban található leírások az ESP32-C3-ra vonatkoznak.
36 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Plample, az exampAz usb/host les csak az USB Host hardverrel rendelkező perifériákra alkalmazható (például ESP32-S3), és az ESP32-C3 nem rendelkezik ezzel a perifériával. A fordítórendszer jellemzően felszólításokat ad a cél beállításakor. A README file minden example listázza a támogatott chipeket. · protokollok: Ez az alkönyvtár plampkülönböző kommunikációs protokollokhoz, beleértve az MQTT, HTTP, HTTP szervert, PPPoS, Modbus, mDNS, SNTP, kommunikációs protokollok széles skáláját, pl.ampkevésbé szükséges az IoT fejlesztéséhez. · kiépítés: Itt találja a kiépítést plample a különböző módszerekhez, például a Wi-Fi-kiépítéshez és a Bluetooth LE-kiépítéshez. · system: Ez az alkönyvtár tartalmazza a rendszerhibakeresést, plamples (pl. veremkövetés, futásidejű nyomkövetés, feladatfigyelés), energiagazdálkodás plamples (pl. különféle alvó üzemmódok, társprocesszorok), és plampolyan általános rendszerelemekhez kapcsolódnak, mint a konzolterminál, az eseményhurok és a rendszeridőzítő. · storage: Ebben az alkönyvtárban találhat plampkevesebb minden file az ESP-IDF által támogatott rendszerek és tárolási mechanizmusok (például Flash, SD-kártya és egyéb adathordozók olvasása és írása), valamint pl.ampkevesebb nem felejtő tároló (NVS), FatFS, SPIFFS és egyéb file rendszerműveletek. · biztonság: Ez az alkönyvtár plampa flash titkosítással kapcsolatos. (2) Az ESP-IDF fordítási eszköz lánckönyvtára (/.espressif), a 4.3. ábrán látható módon.
4.3. ábra. ESP-IDF fordítóeszköz lánckönyvtár
4. fejezet Fejlesztői környezet beállítása 37
a. Szoftverterjesztési címtár dist
Az ESP-IDF szerszámlánc és más szoftverek tömörített csomagok formájában kerülnek terjesztésre. A telepítési folyamat során a telepítőeszköz először letölti a tömörített csomagot a dist könyvtárba, majd kibontja a megadott könyvtárba. A telepítés befejezése után a könyvtár tartalma biztonságosan eltávolítható.
b. Python virtuális környezet könyvtára python env
Az ESP-IDF különböző verziói a Python-csomagok meghatározott verzióira támaszkodnak. Ha ezeket a csomagokat közvetlenül ugyanarra a gazdagépre telepíti, az ütközésekhez vezethet a csomagverziók között. Ennek megoldására az ESP-IDF Python virtuális környezeteket használ a különböző csomagverziók elkülönítésére. Ezzel a mechanizmussal a fejlesztők az ESP-IDF több verzióját telepíthetik ugyanarra a gazdagépre, és könnyen válthatnak közöttük különböző környezeti változók importálásával.
c. ESP-IDF fordítási eszköz lánc-címtár eszközök
Ez a könyvtár főleg az ESP-IDF projektek fordításához szükséges keresztfordító eszközöket tartalmazza, mint például a CMake eszközöket, a Ninja build eszközöket és a végső végrehajtható programot előállító gcc eszközláncot. Ezenkívül ez a könyvtár tartalmazza a C/C++ nyelv szabványos könyvtárát a megfelelő fejléccel együtt files. Ha egy program egy rendszerfejlécre hivatkozik file mint az #include , a fordítási eszközlánc megkeresi az stdio.h file ezen a könyvtáron belül.
4.2 Az ESP-IDF fejlesztői környezet beállítása
Az ESP-IDF fejlesztői környezet támogatja az olyan általános operációs rendszereket, mint a Windows, a Linux és a macOS. Ez a rész bemutatja, hogyan kell beállítani a fejlesztői környezetet az egyes rendszereken. Javasoljuk az ESP32-C3 fejlesztését Linux rendszeren, amelyet itt fogunk részletesen bemutatni. A fejlesztői eszközök hasonlósága miatt sok utasítás alkalmazható platformonként. Ezért javasoljuk, hogy figyelmesen olvassa el ennek a szakasznak a tartalmát.
MEGJEGYZÉS Tekintse meg a https://bookc3.espressif.com/esp32c3 címen elérhető online dokumentumokat, amelyek az ebben a részben említett parancsokat tartalmazzák.
4.2.1 Az ESP-IDF fejlesztői környezet beállítása Linuxon
Az ESP-IDF fejlesztői környezethez szükséges GNU fejlesztői és hibakereső eszközök a Linux rendszerben natívak. Ezenkívül a Linux parancssori terminálja erős és felhasználóbarát, így ideális választás az ESP32-C3 fejlesztéshez. tudsz
38 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
válassza ki a kívánt Linux disztribúciót, de javasoljuk az Ubuntu vagy más Debian-alapú rendszerek használatát. Ez a szakasz útmutatást ad az ESP-IDF fejlesztői környezet Ubuntu 20.04-en történő beállításához.
1. Telepítse a szükséges csomagokat
Nyisson meg egy új terminált, és hajtsa végre a következő parancsot az összes szükséges csomag telepítéséhez. A parancs automatikusan kihagyja a már telepített csomagokat.
$ 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
TIPPEK A fenti parancshoz a rendszergazdai fiókot és jelszót kell használnia. Alapértelmezés szerint a jelszó megadásakor nem jelenik meg információ. A folyamat folytatásához egyszerűen nyomja meg az „Enter” gombot.
A Git egy kulcsfontosságú kódkezelő eszköz az ESP-IDF-ben. A fejlesztői környezet sikeres beállítása után használhatja a git log parancsot view az ESP-IDF létrehozása óta végrehajtott összes kódmódosítás. Ezenkívül a Git az ESP-IDF-ben is használatos a verzióinformációk megerősítésére, amelyek szükségesek az adott verzióknak megfelelő szerszámlánc telepítéséhez. A Git mellett más fontos rendszereszközök közé tartozik a Python. Az ESP-IDF számos Pythonban írt automatizálási szkriptet tartalmaz. Az olyan eszközöket, mint a CMake, a Ninja-build és a Ccache, széles körben használják a C/C++ projektekben, és alapértelmezett kódfordító és -építő eszközökként szolgálnak az ESP-IDF-ben. A libusb-1.0-0 és a dfu-util a fő meghajtók az USB soros kommunikációhoz és a firmware íráshoz. A szoftvercsomagok telepítése után használhatja az apt show-t parancsot, hogy részletes leírást kapjon az egyes csomagokról. Plample, használja az apt show git parancsot a Git eszköz leírási információinak kinyomtatásához.
K: Mi a teendő, ha a Python verzió nem támogatott? V: Az ESP-IDF v4.3 Python verziót igényel, amely nem alacsonyabb a 3.6-nál. Az Ubuntu régebbi verziói esetén manuálisan töltse le és telepítse a Python magasabb verzióját, és állítsa be a Python3-at alapértelmezett Python-környezetként. Részletes útmutatást találhat az update-alternatives python kulcsszóra keresve.
2. Töltse le az ESP-IDF adattárkódot
Nyisson meg egy terminált, és hozzon létre egy esp nevű mappát a saját könyvtárában az mkdir paranccsal. Ha szeretné, választhat más nevet is a mappának. A cd paranccsal lépjen be a mappába.
4. fejezet Fejlesztői környezet beállítása 39
$ mkdir -p /esp $ cd /esp
Használja a git clone parancsot az ESP-IDF lerakatkód letöltéséhez, az alábbiak szerint:
$ git klón -b v4.3.2 – rekurzív https://github.com/espressif/esp-idf.git
A fenti parancsban a -b v4.3.2 paraméter határozza meg a letöltendő verziót (jelen esetben a 4.3.2-es verziót). A –recursive paraméter biztosítja, hogy az ESP-IDF összes allerakatának rekurzív letöltése megtörténjen. Az allerakatokkal kapcsolatos információk a .gitmodules fájlban találhatók file.
3. Telepítse az ESP-IDF fejlesztői eszközláncot
Az Espressif automatikus install.sh szkriptet biztosít az eszközlánc letöltéséhez és telepítéséhez. Ez a szkript ellenőrzi az aktuális ESP-IDF verziót és operációs rendszer környezetet, majd letölti és telepíti a Python eszközcsomagok és fordítási eszközláncok megfelelő verzióját. Az eszközlánc alapértelmezett telepítési útvonala az /.espressif. Mindössze annyit kell tennie, hogy navigáljon az esp-idf könyvtárba, és futtassa az install.sh-t.
$ cd /esp/esp-idf $ ./install.sh
Ha sikeresen telepíti a szerszámláncot, a terminál a következőt jeleníti meg:
Minden kész!
Ezen a ponton sikeresen beállította az ESP-IDF fejlesztői környezetet.
4.2.2 Az ESP-IDF fejlesztői környezet beállítása Windows rendszeren
1. Töltse le az ESP-IDF eszközök telepítőjét
TIPPEK Javasoljuk, hogy az ESP-IDF fejlesztői környezetet Windows 10 vagy újabb rendszeren állítsa be. A telepítő letölthető a https://dl.espressif.com/dl/esp-idf/ címről. A telepítő is nyílt forráskódú szoftver, és a forráskódja lehet viewed: https://github.com/espressif/idf-installer.
· Online ESP-IDF szerszámtelepítő
Ez a telepítő viszonylag kicsi, körülbelül 4 MB méretű, és más csomagok és kódok is letöltésre kerülnek a telepítési folyamat során. Az advantagAz online telepítőnek az, hogy nem csak szoftvercsomagok és kódok tölthetők le igény szerint a telepítési folyamat során, hanem lehetővé teszi az ESP-IDF összes elérhető kiadásának és a GitHub kód legújabb ágának (például a fő ág) telepítését is. . A rosszindulattage az, hogy a telepítési folyamat során hálózati kapcsolatra van szükség, ami hálózati problémák miatt telepítési hibához vezethet.
40 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
· Offline ESP-IDF eszközök telepítője Ez a telepítő nagyobb, körülbelül 1 GB méretű, és tartalmazza a környezet beállításához szükséges összes szoftvercsomagot és kódot. A fő advantagAz offline telepítőnek az, hogy internet-hozzáféréssel nem rendelkező számítógépeken is használható, és általában magasabb a sikeres telepítési arány. Meg kell jegyezni, hogy az offline telepítő csak a v*.* vagy v*.*.* által azonosított ESP-IDF stabil kiadásait tudja telepíteni.
2. Futtassa az ESP-IDF eszközök telepítőjét A telepítő megfelelő verziójának letöltése után (pl. az ESP-IDF Tools Offline 4.3.2-es verzióját használjaample itt), kattintson duplán az exe-re file az ESP-IDF telepítőfelület elindításához. Az alábbiakban bemutatjuk, hogyan telepíthető az ESP-IDF 4.3.2 stabil verziója az offline telepítő használatával.
(1) A 4.4. ábrán látható „Telepítési nyelv kiválasztása” felületen válassza ki a használni kívánt nyelvet a legördülő listából.
4.4. ábra. „Telepítési nyelv kiválasztása” felület (2) A nyelv kiválasztása után kattintson az „OK” gombra a „Licencszerződés” interfész felbukkanásához.
(lásd 4.5. ábra). Miután gondosan elolvasta a telepítési licencszerződést, válassza az „Elfogadom a szerződést” lehetőséget, majd kattintson a „Tovább” gombra.
4.5. ábra. „Licencszerződés” felület Fejezet 4. Fejlesztői környezet beállítása 41
(3) Review a rendszer konfigurációját a „Telepítés előtti rendszerellenőrzés” felületen (lásd 4.6. ábra). Ellenőrizze a Windows verzióját és a telepített víruskereső szoftverre vonatkozó információkat. Kattintson a „Tovább” gombra, ha az összes konfigurációs elem normális. Ellenkező esetben kattintson a „Teljes napló” gombra a kulcselemeken alapuló megoldásokért.
4.6. ábra. „Rendszerellenőrzés telepítés előtt” interfész TIPPEK
A naplókat a https://github.com/espressif/idf-installer/issues címre küldheti el segítségért. (4) Válassza ki az ESP-IDF telepítési könyvtárát. Itt válassza ki a D:/.espressif lehetőséget, ahogy az ábrán látható
4.7 ábra, majd kattintson a „Tovább” gombra. Kérjük, vegye figyelembe, hogy az .espressif itt egy rejtett könyvtár. A telepítés befejezése után megteheti view ennek a könyvtárnak a konkrét tartalmát a file kezelő és rejtett elemek megjelenítése.
4.7. ábra. Válassza ki az ESP-IDF telepítési könyvtárát 42 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
(5) Ellenőrizze a beszerelendő alkatrészeket a 4.8. ábra szerint. Javasoljuk, hogy az alapértelmezett beállítást használja, vagyis fejezze be a telepítést, majd kattintson a „Tovább” gombra.
4.8. ábra. Válassza ki a telepíteni kívánt összetevőket (6) Erősítse meg a telepíteni kívánt összetevőket, majd kattintson a „Telepítés” gombra az automatizált telepítés elindításához.
leállási folyamat, a 4.9. ábra szerint. A telepítési folyamat több tíz percig is eltarthat, és a telepítési folyamat folyamatjelzője a 4.10. ábrán látható. Kérjük, várjon türelmesen.
4.9. ábra. Felkészülés a telepítésre (7) A telepítés befejezése után javasoljuk, hogy ellenőrizze az „ESP-IDF regisztrálása
Eszközök futtatható fájlok Windows Defender kizárásaként…” a víruskereső szoftverek törlésének megakadályozására files. A kizárási elemek hozzáadásával kihagyhatja a víruskereső által végzett gyakori vizsgálatokat
4. fejezet Fejlesztői környezet beállítása 43
4.10. ábra. Telepítési folyamatjelző szoftver, amely jelentősen javítja a Windows rendszer kódfordítási hatékonyságát. Kattintson a „Befejezés” gombra a fejlesztői környezet telepítésének befejezéséhez, ahogy az a 4.11. ábrán látható. Kiválaszthatja az „ESP-IDF PowerShell környezet futtatása” vagy az „ESP-IDF parancssor futtatása” lehetőséget. Futtassa a fordítási ablakot közvetlenül a telepítés után, hogy biztosítsa a fejlesztői környezet megfelelő működését.
4.11. ábra. A telepítés befejeződött (8) Nyissa meg a telepített fejlesztői környezetet a programlistában (ESP-IDF 4.3
A CMD vagy ESP-IDF 4.3 PowerShell terminál, amint az a 4.12. ábrán látható), és az ESP-IDF környezeti változó automatikusan hozzáadódik, amikor fut a terminálon. Ezt követően használhatja az idf.py parancsot a műveletekhez. A megnyitott ESP-IDF 4.3 CMD a 4.13. ábrán látható. 44 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
4.12. ábra. Fejlesztői környezet telepítve
4.13. ábra. ESP-IDF 4.3 CMD
4.2.3 Az ESP-IDF fejlesztői környezet beállítása Mac rendszeren
Az ESP-IDF fejlesztői környezet Mac rendszerre történő telepítésének folyamata ugyanaz, mint a Linux rendszeren. A tárkód letöltésére és az eszközlánc telepítésére vonatkozó parancsok pontosan megegyeznek. Csak a függőségi csomagok telepítésére vonatkozó parancsok különböznek kissé. 1. Függőségi csomagok telepítése Nyisson meg egy terminált, és telepítse a pip-et, a Python csomagkezelő eszközt a következő parancs futtatásával:
% sudo egyszerű telepítés pip
Telepítse a Homebrew-t, a macOS csomagkezelő eszközét a következő parancs futtatásával:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Telepítse a szükséges függőségi csomagokat a következő parancs futtatásával:
% brew python3 telepítse a cmake ninja ccache dfu-util fájlt
2. Az ESP-IDF lerakatkód letöltése Kövesse a 4.2.1. szakaszban található utasításokat az ESP-IDF lerakatkód letöltéséhez. A lépések ugyanazok, mint a Linux rendszeren történő letöltésnél.
4. fejezet Fejlesztői környezet beállítása 45
3. Telepítse az ESP-IDF fejlesztői eszközláncot
Kövesse a 4.2.1. szakaszban található utasításokat az ESP-IDF fejlesztői eszközlánc telepítéséhez. A lépések ugyanazok, mint a Linux rendszerre történő telepítésnél.
4.2.4 A VS kód telepítése
Alapértelmezés szerint az ESP-IDF SDK nem tartalmaz kódszerkesztő eszközt (bár a Windows legújabb ESP-IDF telepítője lehetőséget kínál az ESP-IDF Eclipse telepítésére). Bármilyen szövegszerkesztő eszközzel szerkesztheti a kódot, majd terminálparancsokkal lefordíthatja.
Az egyik népszerű kódszerkesztő eszköz a VS Code (Visual Studio Code), amely egy ingyenes és funkciókban gazdag kódszerkesztő, felhasználóbarát felülettel. Különféle lehetőségeket kínál plugins amelyek olyan funkciókat biztosítanak, mint a kódnavigáció, a szintaxis kiemelése, a Git verzióvezérlés és a terminálintegráció. Ezenkívül az Espressif kifejlesztett egy külön bővítményt, az Espressif IDF for VS Code-ot, amely leegyszerűsíti a projektkonfigurációt és a hibakeresést.
A terminál kód parancsával gyorsan megnyithatja az aktuális mappát a VS Code-ban. Alternatív megoldásként használhatja a Ctrl+ billentyűparancsot a rendszer alapértelmezett terminálkonzoljának megnyitásához a VS Code-on belül.
TIPPEK Az ESP32-C3 kódfejlesztéshez a VS Code használata javasolt. Töltse le és telepítse a VS Code legújabb verzióját a https://code.visualstudio.com/ címen.
4.2.5 Bevezetés a harmadik féltől származó fejlesztési környezetekbe
A hivatalos ESP-IDF fejlesztői környezet mellett, amely elsősorban a C nyelvet használja, az ESP32-C3 támogatja a többi mainstream programozási nyelvet és a harmadik féltől származó fejlesztői környezetek széles skáláját is. Néhány figyelemre méltó lehetőség:
Arduino: nyílt forráskódú platform hardverhez és szoftverhez egyaránt, amely különféle mikrokontrollereket támogat, beleértve az ESP32-C3-at.
A C++ nyelvet használja, és egy egyszerűsített és szabványosított API-t kínál, amelyet általában Arduino nyelvnek neveznek. Az Arduino-t széles körben használják prototípus-fejlesztésben és oktatási környezetben. Bõvíthetõ szoftvercsomagot és IDE-t biztosít, amely lehetõvé teszi az egyszerû fordítást és flash-megjelenítést.
MicroPython: Python 3 nyelvi tolmács, amelyet beágyazott mikrovezérlő platformokon való futtatásra terveztek.
Egy egyszerű szkriptnyelvvel közvetlenül hozzáférhet az ESP32-C3 perifériás erőforrásaihoz (például UART, SPI és I2C) és kommunikációs funkcióihoz (például Wi-Fi és Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
Ez leegyszerűsíti a hardveres interakciót. A MicroPython a Python kiterjedt matematikai műveleti könyvtárával kombinálva lehetővé teszi összetett algoritmusok megvalósítását az ESP32-C3 felületen, megkönnyítve az AI-val kapcsolatos alkalmazások fejlesztését. Szkriptnyelvként nincs szükség ismételt fordításra; módosítások végezhetők, és a szkriptek közvetlenül végrehajthatók.
NodeMCU: ESP sorozatú chipekhez kifejlesztett LUA nyelvi tolmács.
Támogatja az ESP chipek szinte minden perifériás funkcióját, és könnyebb, mint a MicroPython. A MicroPythonhoz hasonlóan a NodeMCU is szkriptnyelvet használ, így nincs szükség ismételt fordításra.
Ezenkívül az ESP32-C3 támogatja a NuttX és Zephyr operációs rendszereket is. A NuttX egy valós idejű operációs rendszer, amely POSIX-kompatibilis interfészeket biztosít, javítva az alkalmazások hordozhatóságát. A Zephyr egy kicsi, valós idejű operációs rendszer, amelyet kifejezetten az IoT-alkalmazásokhoz terveztek. Számos, az IoT-fejlesztéshez szükséges szoftverkönyvtárat tartalmaz, amelyek fokozatosan átfogó szoftver-ökoszisztémává fejlődnek.
Ez a könyv nem ad részletes telepítési utasításokat a fent említett fejlesztői környezetekhez. Igényei alapján telepíthet fejlesztői környezetet a vonatkozó dokumentáció és utasítások követésével.
4.3 ESP-IDF fordítórendszer
4.3.1 A fordítási rendszer alapfogalmai
Az ESP-IDF projekt egy fő program gyűjteménye belépési funkcióval és több független funkcionális komponenssel. PlampLe, a LED-kapcsolókat vezérlő projekt főként egy belépő program főből és egy GPIO-t vezérlő illesztőprogram-komponensből áll. Ha meg szeretné valósítani a LED távirányítót, akkor Wi-Fi, TCP/IP protokoll verem stb.
A fordítórendszer képes lefordítani, linkelni és végrehajtható fájlt generálni files (.bin) a kódhoz építési szabályokon keresztül. Az ESP-IDF v4.0 és újabb verzióinak fordítási rendszere alapértelmezés szerint a CMake-en alapul, és a CMakeLists.txt fordítási szkript használható a kód fordítási viselkedésének szabályozására. Az ESP-IDF fordítórendszer a CMake alapszintaxisának támogatása mellett alapértelmezett fordítási szabályokat és CMake függvényeket is definiál, a fordítási szkriptet pedig egyszerű utasításokkal írhatjuk meg.
4.3.2 Projekt File Szerkezet
A projekt egy mappa, amely tartalmaz egy beléptető programot, a felhasználó által meghatározott összetevőket és files szükséges futtatható alkalmazások, például fordítási szkriptek, konfigurációk létrehozásához
4. fejezet Fejlesztői környezet beállítása 47
files, partíciós táblák stb. A projektek másolhatók és továbbíthatók, és ugyanaz a végrehajtható fájl file az ESP-IDF fejlesztőkörnyezet azonos verziójával rendelkező gépeken fordítható és generálható. Egy tipikus ESP-IDF projekt file szerkezetét a 4.14. ábra mutatja.
4.14. ábra. Tipikus ESP-IDF projekt file struktúra Mivel az ESP-IDF több Espressif IoT chipet támogat, beleértve az ESP32, ESP32-S sorozatot, ESP32-C sorozatot, ESP32-H sorozatot stb., a kód fordítása előtt meg kell határozni a célt. A cél egyrészt az alkalmazásprogramot futtató hardvereszköz, másrészt a fordítórendszer összeállítási célja. Igényeitől függően egy vagy több célt is megadhat a projekthez. Plample, az idf.py set-target esp32c3 paranccsal beállíthatja a fordítási célt az ESP32-C3 értékre, amely során az ESP32C3 alapértelmezett paraméterei és a fordítási eszköz láncútvonala betöltődik. A fordítás után egy végrehajtható program generálható az ESP32C3-hoz. A set-target parancsot is lefuttathatja egy másik cél beállításához, és a fordítórendszer automatikusan megtisztítja és újrakonfigurálja. Alkatrészek
Az ESP-IDF összetevői moduláris és független kódegységek, amelyeket a fordítási rendszeren belül kezelnek. Ezek mappákba vannak rendezve, és a mappanév alapértelmezés szerint az összetevő nevét jelenti. Minden összetevőnek saját fordítási szkriptje van, amely 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
megadja a fordítási paramétereit és függőségeit. A fordítási folyamat során a komponenseket különálló statikus könyvtárakba fordítják (.a files) és végül más komponensekkel kombinálva létrehozzák az alkalmazási programot.
Az ESP-IDF olyan alapvető funkciókat biztosít, mint az operációs rendszer, a periféria-illesztőprogramok és a hálózati protokollverem, komponensek formájában. Ezek az összetevők az ESP-IDF gyökérkönyvtárában található összetevők könyvtárában vannak tárolva. A fejlesztőknek nem kell átmásolniuk ezeket az összetevőket a myProject összetevők könyvtárába. Ehelyett csak ezeknek az összetevőknek a függőségi kapcsolatait kell megadniuk a projekt CMakeLists.txt fájljában. file a REQUIRES vagy PRIV_REQUIRES direktívák használatával. A fordítórendszer automatikusan megkeresi és lefordítja a szükséges összetevőket.
Ezért a myProject alatti összetevők könyvtára nem szükséges. Csak a projekt néhány egyéni összetevőjének beépítésére szolgál, amelyek lehetnek harmadik féltől származó könyvtárak vagy felhasználó által meghatározott kódok. Ezenkívül az összetevők az ESP-IDF-től vagy az aktuális projekttől eltérő bármely könyvtárból származhatnak, például egy másik könyvtárba mentett nyílt forráskódú projektből. Ebben az esetben csak az összetevő elérési útját kell hozzáadni az EXTRA_COMPONENT_DIRS változó beállításával a CMakeLists.txt fájl gyökérkönyvtárában. Ez a könyvtár felülír minden azonos nevű ESP-IDF összetevőt, biztosítva, hogy a megfelelő összetevőt használja.
Belépési program fő A projekten belüli főkönyvtár ugyanezt követi file szerkezet, mint a többi komponens (pl. komponens1). Különös jelentőséggel bír azonban, mivel kötelező komponens, amelynek minden projektben meg kell jelennie. A fő könyvtár tartalmazza a projekt forráskódját és a felhasználói program belépési pontját, általában app_main néven. Alapértelmezés szerint a felhasználói program végrehajtása ettől a belépési ponttól kezdődik. A fő komponens abban is különbözik, hogy automatikusan függ a keresési útvonalon belüli összes összetevőtől. Ezért nincs szükség a függőségek kifejezett megjelölésére a REQUIRES vagy PRIV_REQUIRES direktívák használatával a CMakeLists.txt fájlban file.
Konfiguráció file A projekt gyökérkönyvtára tartalmaz egy konfigurációt file sdkconfig néven, amely a projekten belüli összes összetevő konfigurációs paramétereit tartalmazza. Az sdkconfig file a fordítórendszer automatikusan generálja, és az idf.py menuconfig paranccsal módosítható és újragenerálható. A menuconfig opciók főként a projekt Kconfig.projbuild fájljából és az összetevők Kconfig fájljából származnak. A komponensfejlesztők általában konfigurációs elemeket adnak hozzá a Kconfig programhoz, hogy az összetevőket rugalmassá és konfigurálhatóvá tegyék.
Build könyvtár Alapértelmezés szerint a projekten belüli összeállítási könyvtár közteseket tárol files és a fi-
4. fejezet Fejlesztői környezet beállítása 49
az idf.py build parancs által generált végső végrehajtható programok. Általában nem szükséges közvetlenül hozzáférni a build könyvtár tartalmához. Az ESP-IDF előre meghatározott parancsokat biztosít a könyvtárral való interakcióhoz, például az idf.py flash paranccsal a lefordított bináris fájl automatikus megkeresésére. file és flashelje meg a megadott flash-címre, vagy az idf.py fullclean paranccsal tisztítsa meg a teljes build könyvtárat.
Partíciós tábla (partitions.csv) Minden projektnek szüksége van egy partíciós táblára, amely felosztja a flash területét, és megadja a végrehajtható program és a felhasználói adatterület méretét és kezdőcímét. Az idf.py flash vagy az OTA frissítési program a megfelelő címre villogtatja a firmware-t a táblázat szerint. Az ESP-IDF számos alapértelmezett partíciós táblát biztosít a komponensek/partition_table mappában, mint például a partitions_singleapp.csv és a partitions_two_ ota.csv, amelyeket a menuconfig menüben lehet kiválasztani.
Ha a rendszer alapértelmezett partíciós táblája nem felel meg a projekt követelményeinek, egy egyedi partitions.csv hozzáadható a projektkönyvtárhoz, és kiválasztható a menuconfig-ban.
4.3.3 A fordítási rendszer alapértelmezett összeállítási szabályai
Az azonos nevű komponensek felülbírálásának szabályai A komponenskeresési folyamat során a fordítórendszer meghatározott sorrendet követ. Először az ESP-IDF belső összetevőit keresi, majd a felhasználói projekt összetevőit, végül pedig az EXTRA_COMPONENT_DIRS komponenseit keresi. Azokban az esetekben, amikor több könyvtár azonos nevű összetevőket tartalmaz, az utolsó könyvtárban található összetevő felülír minden korábbi, azonos nevű összetevőt. Ez a szabály lehetővé teszi az ESP-IDF összetevők testreszabását a felhasználói projekten belül, miközben az eredeti ESP-IDF kódot érintetlenül hagyja.
Szabályok a közös komponensek alapértelmezés szerinti beépítésére A 4.3.2. szakaszban említettek szerint az összetevőknek kifejezetten meg kell határozniuk a CMakeLists.txt fájlban lévő egyéb összetevőktől való függőségeiket. A gyakori összetevők, például a freertos azonban alapértelmezés szerint automatikusan bekerülnek a build rendszerbe, még akkor is, ha függőségi kapcsolataik nincsenek kifejezetten definiálva a fordítási szkriptben. Az ESP-IDF gyakori összetevői közé tartozik a freertos, a Newlib, a heap, a log, a soc, az esp_rom, az esp_common, az xtensa/riscv és a cxx. Ezen gyakori összetevők használatával elkerülhető az ismétlődő munka a CMakeLists.txt írásakor, és tömörebbé válik.
A konfigurációs elemek felülbírálásának szabályai A fejlesztők alapértelmezett konfigurációs paramétereket adhatnak hozzá egy alapértelmezett konfiguráció hozzáadásával file az sdkconfig.defaults nevű projektet. Plample, CONFIG_LOG_ hozzáadása
50 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
DEFAULT_LEVEL_NONE = y beállíthatja az UART interfészt úgy, hogy alapértelmezés szerint ne nyomtasson naplóadatokat. Továbbá, ha konkrét paramétereket kell beállítani egy adott célhoz, akkor egy konfigurációt file sdkconfig.defaults.TARGET_NAME néven hozzáadható, ahol a TARGET_NAME lehet esp32s2, esp32c3 és így tovább. Ezek a konfigurációk files a fordítás során importálódnak az sdkconfigba, az általános alapértelmezett konfigurációval file Először az sdkconfig.defaults importálásra kerül sor, majd a célspecifikus konfigurációt file, például sdkconfig.defaults.esp32c3. Ha vannak azonos nevű konfigurációs elemek, akkor az utóbbi konfigurációt file felülírja az előbbit.
4.3.4 Bevezetés a fordítási szkriptbe
Amikor egy projektet ESP-IDF használatával fejlesztenek, a fejlesztőknek nemcsak forráskódot kell írniuk, hanem a CMakeLists.txt fájlt is meg kell írniuk a projekthez és az összetevőkhöz. A CMakeLists.txt egy szöveg file, más néven fordítási szkript, amely egy sor fordítási objektumot, fordítási konfigurációs elemet és parancsokat határoz meg, amelyek irányítják a forráskód fordítási folyamatát. Az ESP-IDF v4.3.2 fordítási rendszere a CMake-en alapul. Amellett, hogy támogatja a natív CMake függvényeket és parancsokat, egy sor egyéni függvényt is definiál, így sokkal könnyebbé válik a fordítási szkriptek írása.
Az ESP-IDF fordítási szkriptjei főként a projekt-fordítási szkriptet és a komponens-fordítási szkripteket tartalmazzák. A projekt gyökérkönyvtárában található CMakeLists.txt fájl neve projektfordítási szkript, amely a teljes projekt fordítási folyamatát irányítja. Az alapvető projekt-összeállítási szkript általában a következő három sort tartalmazza:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Közülük a cmake_minimum_required (VERSION 3.5) az első sorba kell kerülni, ami a projekt által igényelt minimális CMake verziószám jelzésére szolgál. A CMake újabb verziói általában visszamenőleg kompatibilisek a régebbi verziókkal, ezért a kompatibilitás biztosítása érdekében módosítsa a verziószámot, ha újabb CMake parancsokat használ.
Az include($ENV {IDF_PATH}/tools/cmake/project.cmake) előre definiált konfigurációs elemeket és parancsokat importál az ESP-IDF fordítórendszerből, beleértve a 4.3.3. szakaszban leírt fordítási rendszer alapértelmezett összeállítási szabályait. A project(myProject) magát a projektet hozza létre, és megadja a nevét. Ez a név lesz a végső kimeneti bináris file név, azaz myProject.elf és myProject.bin.
Egy projektnek több összetevője is lehet, beleértve a fő összetevőt is. Az egyes összetevők legfelső szintű könyvtára tartalmaz egy CMakeLists.txt fájlt file, amelyet komponens-összeállítási szkriptnek neveznek. A komponens-összeállítási szkripteket elsősorban az összetevő-függőségek, konfigurációs paraméterek, forráskód megadására használják files, és tartalmazza a fejlécet files azért
4. fejezet Fejlesztői környezet beállítása 51
összeállítás. Az ESP-IDF idf_component_register egyéni függvényével az összetevő-összeállítási szkripthez minimálisan szükséges kód a következő:
1. idf_component_register(SRCS "src1.c"
2.
INCLUDE_DIRS „beleértve”
3.
SZÜKSÉGES komponens 1)
Az SRCS paraméter megadja a forráslistát files a komponensben, szóközökkel elválasztva, ha több van files. Az INCLUDE_DIRS paraméter a nyilvános fejlécek listáját adja meg file az összetevőhöz tartozó könyvtárak, amelyek hozzáadódnak az include keresési útvonalhoz az aktuális összetevőtől függő egyéb összetevők esetén. A REQUIRES paraméter azonosítja az aktuális összetevő nyilvános összetevő-függőségeit. Az összetevőknek kifejezetten meg kell adniuk, hogy mely összetevőktől függenek, például a 2. komponenst az 1. komponenstől függően. A fő komponensnél azonban, amely alapértelmezés szerint minden összetevőtől függ, a REQUIRES paraméter elhagyható.
Ezenkívül a natív CMake parancsok is használhatók a fordítási szkriptben. Plample, használja a set parancsot változók beállításához, például set(VARIABLE “VALUE”).
4.3.5 Bevezetés a közös parancsokba
Az ESP-IDF a CMake-et (projektkonfigurációs eszköz), a Ninja-t (projektépítő eszköz) és az esptool-t (flash-eszköz) használja a kódfordítási folyamat során. Minden eszköz más-más szerepet tölt be a fordítási, építési és flash-folyamatban, és különböző működési parancsokat is támogat. A felhasználói műveletek megkönnyítése érdekében az ESP-IDF egy egységes előtér-idf.py fájlt ad hozzá, amely lehetővé teszi a fenti parancsok gyors meghívását.
Az idf.py használata előtt győződjön meg a következőkről:
· Az ESP-IDF IDF_PATH környezeti változója hozzáadásra került az aktuális terminálhoz. · A parancsvégrehajtási könyvtár a projekt gyökérkönyvtára, amely tartalmazza a
projekt-összeállítási szkript CMakeLists.txt.
Az idf.py általános parancsai a következők:
· idf.py –help: a parancsok listájának és a használati utasításaik megjelenítése. · idf.py set-target : a taidf.py fullcleanrget összeállítás beállítása, ilyen
mint csere esp32c3-mal. · idf.py menuconfig: a menuconfig elindítása, egy terminál grafikus konfigurációja
eszköz, amely kiválaszthatja vagy módosíthatja a konfigurációs beállításokat, és a konfigurációs eredmények az sdkconfig fájlba kerülnek file. · idf.py build: kódfordítás kezdeményezése. A köztes files és a fordítás által generált végső végrehajtható program alapértelmezés szerint a projekt build könyvtárába kerül mentésre. Az összeállítási folyamat növekményes, ami azt jelenti, hogy ha csak egy forrás file módosul, csak a módosított file legközelebb kerül összeállításra.
52 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
· idf.py clean: az intermedier tisztítása files a projekt összeállítása által generált. A következő összeállításban kénytelen lesz a teljes projektet összeállítani. Vegye figyelembe, hogy a CMake konfigurációja és a menuconfig által végrehajtott konfigurációs módosítások nem törlődnek a tisztítás során.
· idf.py fullclean: a teljes build könyvtár törlése, beleértve az összes CMake konfigurációs kimenetet files. A projekt újbóli összeállításakor a CMake a semmiből konfigurálja a projektet. Felhívjuk figyelmét, hogy ez a parancs rekurzív módon törli az összeset files a build könyvtárban, ezért óvatosan használja, és a projekt konfigurációját file nem törlődik.
· idf.py flash: a végrehajtható program bináris fájljának villogása file a cél ESP32-C3-ra való felépítése által generált. Az opciók -o és -b a soros port eszköznevének és villogási adatátviteli sebességének beállítására szolgál. Ha ez a két lehetőség nincs megadva, a soros port automatikusan felismerésre kerül, és az alapértelmezett adatátviteli sebesség kerül felhasználásra.
· idf.py monitor: a cél ESP32-C3 soros port kimenetének megjelenítése. A -p kapcsolóval megadható a gazdagép oldali soros port eszközneve. Soros portos nyomtatás közben nyomja meg a Ctrl+] billentyűkombinációt a monitorból való kilépéshez.
A fenti parancsok szükség szerint kombinálhatók is. Plample, az idf.py build flash monitor parancs végrehajtja a kódfordítást, a flash-t, és sorban megnyitja a soros port figyelőt.
Látogassa meg a https://bookc3.espressif.com/build-system webhelyet, ha többet szeretne megtudni az ESP-IDF fordítási rendszerről.
4.4 Gyakorlat: Összeállítás plamp"Pillogás" program
4.4.1 Plample Elemzés
Ez a rész a Blink programot ex-ként fogja használniample elemezni a file egy valós projekt felépítését és kódolási szabályait részletesen. A Blink program megvalósítja a LED villogó effektust, és a projekt az ex könyvtárban találhatóamples/get-started/blink, amely forrást tartalmaz file, konfiguráció files, és számos fordítási szkript.
Az ebben a könyvben bemutatott intelligens fényprojekt ezen az exen alapulample program. A későbbi fejezetekben fokozatosan hozzáadjuk a funkciókat, hogy végre teljes legyen.
Forráskód A teljes fejlesztési folyamat bemutatása érdekében a Blink program át lett másolva az esp32c3-iot-projects/device firmware/1 blink mappába.
A blink projekt könyvtárstruktúrája files a 4.15. ábrán látható.
A blink projekt csak egy főkönyvtárat tartalmaz, amely egy speciális összetevő, amely
4. fejezet Fejlesztői környezet beállítása 53
4.15. ábra. File a blink projekt könyvtárszerkezete
a 4.3.2. szakaszban leírtak szerint kell tartalmaznia. A főkönyvtár elsősorban az app_main() függvény megvalósításának tárolására szolgál, amely a felhasználói program belépési pontja. A blink projekt nem tartalmazza a komponensek könyvtárát, mert ez a pl.ampA le-nek csak az ESP-IDF-hez tartozó komponenseket kell használnia, és nincs szükség további összetevőkre. A blink projektben található CMakeLists.txt a fordítási folyamat irányítására szolgál, míg a Kconfig.projbuild a konfigurációs elemek hozzáadásához ehhez az ex.ampprogram a menuconfigban. Egyéb felesleges files nem befolyásolja a kód összeállítását, ezért itt nem lesz szó róla. A blink projekt részletes bemutatása files a következő.
1. A /*blink.c a következő fejlécet tartalmazza files*/
2. #include
//A szabványos C könyvtár fejléce file
3. #include "freertos/freeRTOS.h" //FreeRTOS fő fejléc file
4. #include „freertos/task.h”
//FreeRTOS Feladatfejléc file
5. #include „sdkconfig.h”
//Konfigurációs fejléc file a kconfig által generált
6. #include „driver/gpio.h”
//GPIO illesztőprogram fejléce file
A forrás file A blink.c fejlécsorozatot tartalmaz files függvény deklara-
ciók. Az ESP-IDF általában követi a szabványos könyvtárfejléc beillesztési sorrendjét files, FreeR-
TOS fejléc files, driver fejléc files, egyéb összetevő fejléce files, és a projekt fejléce files.
A fejléc sorrendje files szerepelnek, befolyásolhatják a végső összeállítás eredményét, ezért próbálja meg
kövesse az alapértelmezett szabályokat. Megjegyzendő, hogy az sdkconfig.h automatikusan generálódik
a kconfig által, és csak az idf.py menuconfig paranccsal konfigurálható.
A fejléc közvetlen módosítása file felül lesz írva.
1. /*Az idf.py menuconfig fájlban kiválaszthatja a LED-nek megfelelő GPIO-t, és a menuconfig módosításának eredménye az, hogy a CONFIG_BLINK értéke
_GPIO módosul. A makródefiníciót közvetlenül is módosíthatja
itt, és módosítsa a CONFIG_BLINK_GPIO-t egy rögzített értékre.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Állítsa be az IO-t alapértelmezett GPIO-funkcióként, engedélyezze a felhúzási módot, és
6.
bemeneti és kimeneti módok letiltása*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Wireless Adventure: Átfogó útmutató az IoT-hez
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*GPIO beállítása kimeneti módba*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Napló nyomtatása*/ printf(“A LEDn kikapcsolása”); /*A LED kikapcsolása (alacsony kimeneti szint)*/ gpio_set_level(BLINK_GPIO, 0); /*Késleltetés (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“A LEDn bekapcsolása”); /*A LED bekapcsolása (magas kimeneti szint)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Az app_main() függvény a Blink exampA le program belépési pontként szolgál a felhasználói programok számára. Ez egy egyszerű függvény, paraméterek és visszatérési érték nélkül. Ez a funkció azután hívódik meg, hogy a rendszer befejezte az inicializálást, amely olyan feladatokat foglal magában, mint a napló soros portjának inicializálása, az egy-/kétmagos konfigurálás és a watchdog konfigurálása.
Az app_main() függvény egy main nevű feladat kontextusában fut. A feladat veremmérete és prioritása beállítható a menuconfig Componentconfig Common ESP-rel kapcsolatos menüpontban.
Az olyan egyszerű feladatokhoz, mint a LED villogása, az összes szükséges kód közvetlenül implementálható az app_main() függvényben. Ez általában magában foglalja a LED-nek megfelelő GPIO inicializálását, és egy while(1) hurok használatával a LED be- és kikapcsolását. Alternatív megoldásként használhatja a FreeRTOS API-t egy új feladat létrehozására, amely kezeli a LED villogását. Az új feladat sikeres létrehozása után kiléphet az app_main() függvényből.
A main/CMakeLists.txt tartalma file, amely a fő komponens összeállítási folyamatát irányítja, a következő:
1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS "." )
Ezek közül a main/CMakeLists.txt csak egy fordítási rendszerfüggvényt hív meg, ez az idf_component_register. A legtöbb egyéb összetevő CMakeLists.txt fájljához hasonlóan a blink.c hozzáadódik az SRCS-hez, és a forrás fileAz SRCS-hez hozzáadott s le lesz fordítva. Ugyanakkor a „.”, amely a CMakeLists.txt elérési útját jelöli, hozzá kell adni az INCLUDE_DIRS-hez a fejléc keresési könyvtáraként. files. A CMakeLists.txt tartalma a következő:
1. #Adja meg a v3.5-öt a jelenlegi projekt által támogatott legrégebbi CMake verzióként 2. #A v3.5-nél régebbi verziókat frissíteni kell a fordítás folytatása előtt 3. cmake_minimum_required(VERSION 3.5) 4. #Tartalmazza az ESP alapértelmezett CMake konfigurációját -IDF fordítórendszer
4. fejezet Fejlesztői környezet beállítása 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Hozzon létre egy „blink” nevű projektet 7. project(myProject)
Ezek közül a gyökérkönyvtárban található CMakeLists.txt főként a $ENV{IDF_ PATH}/tools/cmake/project.cmake fájlt tartalmazza, amely a CMake fő konfigurációja file az ESP-IDF. Arra használják, hogy con
Dokumentumok / Források
![]() |
Espressif Systems ESP32-C3 vezeték nélküli kaland [pdf] Felhasználói útmutató ESP32-C3 vezeték nélküli kaland, ESP32-C3, vezeték nélküli kaland, kaland |