ESP32-C3 juhtmevaba seiklus
ESP32-C3 juhtmevaba seiklus
Põhjalik IoT juhend
Espressif Systems 12. juuni 2023
Tehnilised andmed
- Toode: ESP32-C3 Wireless Adventure
- Tootja: Espressif Systems
- Kuupäev: 12. juuni 2023
Toote kasutusjuhised
Ettevalmistus
Enne ESP32-C3 Wireless Adventure'i kasutamist veenduge, et olete
tuttav asjade Interneti kontseptsioonide ja arhitektuuriga. See aitab
saate aru, kuidas seade sobib suuremasse asjade Interneti ökosüsteemi
ja selle potentsiaalsed rakendused nutikates kodudes.
IoT projektide tutvustus ja praktika
Selles jaotises saate teada tüüpiliste IoT-projektide kohta,
sealhulgas tavaliste IoT-seadmete põhimoodulid, põhimoodulid
kliendirakenduste ja tavaliste IoT pilveplatvormide jaoks. See tahe
annab teile aluse oma mõistmiseks ja loomiseks
enda IoT projekte.
Praktika: Smart Light Project
Selles praktikaprojektis saate teada, kuidas luua nutikat
valgus, kasutades ESP32-C3 Wireless Adventure'i. Projekti struktuur,
funktsioonid, riistvara ettevalmistamine ja arendusprotsess
üksikasjalikult selgitatud.
Projekti struktuur
Projekt koosneb mitmest komponendist, sealhulgas
ESP32-C3 Wireless Adventure, LED-id, andurid ja pilv
taustaprogramm.
Projekti funktsioonid
Nutikas valgusprojekt võimaldab juhtida heledust ja
LED-ide värvi kaugjuhtimisega mobiilirakenduse kaudu või web
liides.
Riistvara ettevalmistamine
Projekti ettevalmistamiseks peate koguma
vajalikud riistvarakomponendid, näiteks ESP32-C3 Wireless
Seikluslaud, LED-id, takistid ja toiteplokk.
Arendusprotsess
Arendusprotsess hõlmab arenduse seadistamist
keskkond, koodi kirjutamine LED-ide juhtimiseks, ühenduse loomine
pilve taustaprogramm ja nutiseadme funktsionaalsuse testimine
kerge.
ESP RainMakeri tutvustus
ESP RainMaker on võimas raamistik asjade Interneti arendamiseks
seadmeid. Sellest jaotisest saate teada, mis on ESP RainMaker ja
kuidas seda oma projektides rakendada.
Mis on ESP RainMaker?
ESP RainMaker on pilvepõhine platvorm, mis pakub komplekti
tööriistad ja teenused asjade Interneti-seadmete ehitamiseks ja haldamiseks.
ESP RainMakeri rakendamine
See jaotis selgitab erinevaid komponente
ESP RainMakeri rakendamine, sealhulgas nõudeteenus,
RainMaker Agent, pilve taustaprogramm ja RainMaker Client.
Praktika: ESP RainMakeriga arendamise põhipunktid
Selles praktika osas saate teada põhipunktidest
kaaluge ESP RainMakeriga arendamisel. See hõlmab seadet
nõuded, andmete sünkroonimine ja kasutajahaldus.
ESP RainMakeri omadused
ESP RainMaker pakub erinevaid funktsioone kasutajate haldamiseks, lõpp
kasutajad ja administraatorid. Need funktsioonid võimaldavad seadet hõlpsalt kasutada
seadistamine, kaugjuhtimispult ja jälgimine.
Arenduskeskkonna seadistamine
See jaotis pakub üleview ESP-IDF (Espressif IoT
arendusraamistik), mis on ametlik arendusraamistik
ESP32-põhiste seadmete jaoks. See selgitab erinevaid versioone
ESP-IDF ja arenduskeskkonna seadistamine.
Riistvara ja draiverite arendamine
ESP32-C3 baasil põhinevate nutikate valgustoodete riistvarakujundus
See jaotis keskendub nutika valguse riistvarakujundusele
ESP32-C3 Wireless Adventure'il põhinevad tooted. See hõlmab
nutikate valgustoodete omadused ja koostis, samuti
ESP32-C3 põhisüsteemi riistvarakujundus.
Smart Light toodete omadused ja koostis
See alajaotis selgitab valmistatavaid funktsioone ja komponente
nutikad valgustooted. See käsitleb erinevaid funktsioone
ja disainikaalutlused nutikate tulede loomisel.
ESP32-C3 põhisüsteemi riistvarakujundus
ESP32-C3 põhisüsteemi riistvaraline disain sisaldab toidet
toiteallikas, sisselülitamise jada, süsteemi lähtestamine, SPI-välklamp, kella allikas,
ning RF ja antenni kaalutlused. See alajaotis näeb ette
üksikasjalikku teavet nende aspektide kohta.
KKK
K: Mis on ESP RainMaker?
V: ESP RainMaker on pilvepõhine platvorm, mis pakub tööriistu
ning IoT-seadmete ehitamise ja haldamise teenused. See lihtsustab
arendusprotsessi ja võimaldab seadme hõlpsat seadistamist kaugjuhtimispuldi abil
kontroll ja jälgimine.
K: Kuidas saan seadistada arenduskeskkonda
ESP32-C3?
V: ESP32-C3 arenduskeskkonna seadistamiseks vajate
installida ESP-IDF (Espressif IoT Development Framework) ja
konfigureerige see vastavalt antud juhistele. ESP-IDF on
ESP32-põhiste seadmete ametlik arendusraamistik.
K: Millised on ESP RainMakeri funktsioonid?
V: ESP RainMaker pakub erinevaid funktsioone, sealhulgas kasutaja
haldus, lõppkasutaja funktsioonid ja administraatori funktsioonid. Kasutajate haldamine
võimaldab hõlpsat seadme nõudmist ja andmete sünkroonimist. Lõppkasutaja
funktsioonid võimaldavad seadmeid kaugjuhtida läbi mobiilirakenduse või
web liides. Administraatori funktsioonid pakuvad tööriistu seadme jälgimiseks
ja juhtimine.
ESP32-C3 juhtmevaba seiklus
Põhjalik IoT juhend
Espressif Systems 12. juuni 2023
Sisu
I Ettevalmistus
1
1 Sissejuhatus IoT-sse
3
1.1 IoT arhitektuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 IoT rakendus nutikates kodudes . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 IoT projektide tutvustus ja praktika
9
2.1 Tüüpiliste IoT-projektide tutvustus . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Tavaliste IoT-seadmete põhimoodulid . . . . . . . . . . . . . . . . . 9
2.1.2 Kliendirakenduste põhimoodulid . . . . . . . . . . . . . . . . . . . 10
2.1.3 Levinud IoT pilveplatvormide tutvustus . . . . . . . . . . . . . . 11
2.2 Praktika: Smart Light Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Projekti struktuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Projekti funktsioonid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Riistvara ettevalmistamine . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Arendusprotsess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 ESP RainMakeri tutvustus
19
3.1 Mis on ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 ESP RainMakeri rakendamine . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Nõude esitamise teenus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 RainMaker Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Pilve taustaprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 RainMakeri klient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Harjutamine: ESP RainMakeriga arendamise põhipunktid . . . . . . . . . . . . 25
3.4 ESP RainMakeri omadused . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Kasutajahaldus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Lõppkasutaja funktsioonid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Administraatori funktsioonid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Arenduskeskkonna seadistamine
31
4.1 ESP-IDF üleview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 ESP-IDF versioonid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 ESP-IDF Giti töövoog . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Sobiva versiooni valimine . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Üleview ESP-IDF SDK kataloogist . . . . . . . . . . . . . . . . . . . . 34 4.2 ESP-IDF arenduskeskkonna seadistamine . . . . . . . . . . . . . . . . . 38 4.2.1 ESP-IDF arenduskeskkonna seadistamine Linuxis . . . . . . . . 38 4.2.2 ESP-IDF arenduskeskkonna seadistamine Windowsis . . . . . . 40 4.2.3 ESP-IDF arenduskeskkonna seadistamine Macis . . . . . . . . . 45 4.2.4 VS-koodi installimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Sissejuhatus kolmandate osapoolte arenduskeskkondadesse . . . . . . . . 46 4.3 ESP-IDF kompileerimissüsteem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Kompileerimissüsteemi põhimõisted . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Struktuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Kompileerimissüsteemi ehituse vaikereeglid . . . . . . . . . . . . . 50 4.3.4 Sissejuhatus kompileerimisskripti . . . . . . . . . . . . . . . . . . 51 4.3.5 Sissejuhatus tavakäskudesse . . . . . . . . . . . . . . . . . . . 52 4.4 Praktika: koostamine Näitample Programm "Pilkumine" . . . . . . . . . . . . . . . . . . 53 4.4.1 Ntample Analüüs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Blinki programmi koostamine . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Vilgutusprogrammi vilkumine . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Blinki programmi jadapordi logi analüüs . . . . . . . . . . . . . . 60 4.5 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Riistvara ja draiverite arendamine
65
5 ESP32-C3 baasil põhinevate Smart Light toodete riistvaradisain
67
5.1 Smart Light toodete omadused ja koostis . . . . . . . . . . . . . . . 67
5.2 ESP32-C3 põhisüsteemi riistvarakujundus . . . . . . . . . . . . . . . . . . . 70
5.2.1 Toiteallikas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Sisselülitamise järjestus ja süsteemi lähtestamine . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI-välklamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Kella allikas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF ja antenn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Kinnitustihvtid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO ja PWM kontroller . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Harjutamine: ESP32-C3 abil nutika valgustussüsteemi loomine . . . . . . . . . . . . . 80
5.3.1 Moodulite valimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 PWM-signaalide GPIO-de konfigureerimine . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Püsivara allalaadimine ja silumisliides . . . . . . . . . . . . 82
5.3.4 Raadiosagedusliku disaini juhised . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Toiteallika projekteerimise juhised . . . . . . . . . . . . . . . . . . . 86 5.4 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Draiveri arendamine
87
6.1 Draiveri arendusprotsess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 välisseadmed . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 LED-draiveri põhitõed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Värviruumid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED-draiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 LED-i hämardamine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 PWM-i tutvustus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 LED-i hämardamise draiveri arendamine . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Püsimälu (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM-kontroller (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM programmeerimine . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Harjutamine: draiverite lisamine Smart Light Projectile . . . . . . . . . . . . . . . . . 103
6.5.1 Nupudraiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 LED-i hämardamise draiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Traadita side ja juhtimine
109
7 Wi-Fi konfigureerimine ja ühendus
111
7.1 Wi-Fi põhitõed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Sissejuhatus WiFi-sse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 IEEE 802.11 areng. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Wi-Fi kontseptsioonid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Wi-Fi-ühendus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Bluetoothi põhitõed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Bluetoothi tutvustus . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Bluetoothi kontseptsioonid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth-ühendus . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Wi-Fi võrgu konfigureerimine . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Wi-Fi võrgu seadistamise juhend . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Muud meetodid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Wi-Fi programmeerimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi komponendid ESP-IDF-is . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Harjutus: Wi-Fi-ühendus . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Harjutus: nutikas WiFi-ühendus . . . . . . . . . . . . . . . . . . . . . 145
7.5 Harjutamine: Wi-Fi konfigureerimine Smart Light Projectis . . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi-ühendus Smart Light Projectis . . . . . . . . . . . . . . . . . 156 7.5.2 Nutika Wi-Fi konfigureerimine . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Kohalik juhtimine
159
8.1 Kohaliku juhtimise tutvustus . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Kohaliku juhtimise rakendamine . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 AdvantagKohaliku juhtimise esitlus. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Nutitelefonide kaudu juhitavate seadmete leidmine . . . . . . . . . . 161
8.1.4 Andmeside nutitelefonide ja seadmete vahel . . . . . . . . 162
8.2 Levinud kohaliku avastamise meetodid . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Edastamine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multisaade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Ringhäälingu ja multisaadete võrdlus . . . . . . . . . . . . . . 176
8.2.4 Multisaaterakenduse protokoll mDNS kohaliku avastamise jaoks . . . . . . . . 176
8.3 Kohalike andmete ühised sideprotokollid . . . . . . . . . . . . . . . 179
8.3.1 Edastuse juhtimisprotokoll (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Hüperteksti edastusprotokoll (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Kasutaja Datagram Protocol (UDP) . . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Piiratud rakenduse protokoll (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Bluetoothi protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Andmesideprotokollide kokkuvõte . . . . . . . . . . . . . . . 203
8.4 Andmeturbe garantii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Transpordikihi turvalisuse (TLS) tutvustus . . . . . . . . . . . . . 207
8.4.2 Sissejuhatus Datagram Transpordikihi turvalisus (DTLS) . . . . . . . 213
8.5 Harjutamine: Smart Light Projecti kohalik juhtimine . . . . . . . . . . . . . . . . . . 217
8.5.1 Wi-Fi-põhise kohaliku juhtimisserveri loomine . . . . . . . . . . . . . . . 217
8.5.2 Kohaliku juhtimise funktsionaalsuse kontrollimine skriptide abil . . . . . . . . . . . 221
8.5.3 Bluetooth-põhise kohaliku juhtimisserveri loomine . . . . . . . . . . . . 222
8.6 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Pilve juhtimine
225
9.1 Kaugjuhtimispuldi tutvustus . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Pilve andmesideprotokollid . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT sissejuhatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT põhimõtted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT sõnumivorming . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokolli võrdlus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 MQTT Brokeri seadistamine Linuxis ja Windowsis . . . . . . . . . . . . 233 9.2.6 MQTT kliendi seadistamine ESP-IDF alusel . . . . . . . . . . . . . . . . 235 9.3 MQTT andmeturbe tagamine . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Sertifikaatide tähendus ja funktsioon . . . . . . . . . . . . . . . . . . . 237 9.3.2 Sertifikaatide lokaalne genereerimine . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 MQTT Brokeri konfigureerimine . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 MQTT kliendi konfigureerimine . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Harjutamine: Kaugjuhtimine ESP RainMakeri kaudu . . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMakeri põhitõed . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Sõlme ja pilve taustaprogrammi sideprotokoll . . . . . . . . . . . 244 9.4.3 Side kliendi ja pilve taustaprogrammi vahel . . . . . . . . . . . 249 9.4.4 Kasutaja rollid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Põhiteenused . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Rakendus RainMaker ja kolmandate osapoolte integreerimine . . . . . . . . . . . . . . . 262 9.5 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Nutitelefonirakenduste arendamine
269
10.1 Sissejuhatus nutitelefoni rakenduste arendamisse . . . . . . . . . . . . . . . . . . 269
10.1.1 Üleview nutitelefoni rakenduste arendusest. . . . . . . . . . . . . . . 270
10.1.2 Androidi projekti struktuur . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 iOS-i projekti struktuur . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Androidi tegevuse elutsükkel . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 iOS-i elutsükkel ViewKontroller . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Uue nutitelefonirakenduse projekti loomine . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Androidi arendamiseks valmistumine . . . . . . . . . . . . . . . . . . . 275
10.2.2 Uue Androidi projekti loomine . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 MyRainmakeri sõltuvuste lisamine . . . . . . . . . . . . . . . . . 276
10.2.4 Loataotlus Androidis . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 iOS-i arendamiseks valmistumine . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Uue iOS-i projekti loomine . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 MyRainmakeri sõltuvuste lisamine . . . . . . . . . . . . . . . . . 279
10.2.8 Loataotlus iOS-is . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Rakenduse funktsionaalsete nõuete analüüs . . . . . . . . . . . . . . . . . . 281
10.3.1 Projekti funktsionaalsete nõuete analüüs . . . . . . . . . . . . 282
10.3.2 Kasutajahaldusnõuete analüüs . . . . . . . . . . . . . . . 282 10.3.3 Seadme varustamise ja sidumisnõuete analüüs . . . . . . . 283 10.3.4 Kaugjuhtimisnõuete analüüs . . . . . . . . . . . . . . . . 283 10.3.5 Planeerimisnõuete analüüs . . . . . . . . . . . . . . . . . . . 284 10.3.6 Kasutajakeskuse nõuete analüüs . . . . . . . . . . . . . . . . . . 285 10.4 Kasutajahalduse arendamine . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 RainMaker API-de tutvustus . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Nutitelefoni kaudu suhtlemise alustamine . . . . . . . . . . . . . . . . 286 10.4.3 Konto registreerimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Konto sisselogimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Seadmete varustamise arendamine . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Seadmete skannimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Seadmete ühendamine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Salajaste võtmete genereerimine . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Sõlme ID hankimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Ettevalmistusseadmed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Seadme juhtimise arendamine . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Seadmete sidumine pilvekontodega . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Seadmete loendi hankimine . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Seadme oleku hankimine . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Seadme oleku muutmine . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Planeerimis- ja kasutajakeskuse arendamine . . . . . . . . . . . . . . . . . . . 313 10.7.1 Ajastamise funktsiooni rakendamine . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Kasutajakeskuse juurutamine . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Rohkem pilve API-sid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Püsivara uuendamine ja versioonihaldus
321
11.1 Püsivara uuendamine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Üleview partitsioonitabelitest . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Püsivara alglaadimisprotsess . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Üleview OTA mehhanismi kohta. . . . . . . . . . . . . . . . . . . . . 326
11.2 Püsivara versioonihaldus . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Püsivara märgistus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Tagasipööramine ja tagasipööramise tõkestamine . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Harjutamine: Õhu kaudu (OTA) Näitample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Püsivara uuendamine kohaliku hosti kaudu . . . . . . . . . . . . . . . . . 332
11.3.2 Püsivara uuendamine ESP RainMakeri kaudu . . . . . . . . . . . . . . . 335
11.4 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimeerimine ja masstootmine
343
12 Toitehaldus ja vähese energiatarbega optimeerimine
345
12.1 ESP32-C3 toitehaldus . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dünaamiline sageduse skaleerimine . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Toitehalduse konfigureerimine . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 vähese energiatarbega režiim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modemi puhkerežiim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Kerge puhkerežiim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Sügav unerežiim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Voolutarve erinevatel toiterežiimidel . . . . . . . . . . . . . 358
12.3 Toitehaldus ja vähese energiatarbega silumine . . . . . . . . . . . . . . . . . 359
12.3.1 Logide silumine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 GPIO silumine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Praktika: toitehaldus nutika valguse projektis . . . . . . . . . . . . . . . 363
12.4.1 Toitehalduse funktsiooni konfigureerimine . . . . . . . . . . . . . . . . . 364
12.4.2 Toitehalduse lukkude kasutamine . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Energiatarbimise kontrollimine . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Seadme täiustatud turbefunktsioonid
369
13.1 Üleview IoT-seadme andmeturbe kohta. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Miks IoT-seadme andmeid kaitsta? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 IoT-seadme andmeturbe põhinõuded . . . . . . . . . . . . 371
13.2 Andmete terviklikkuse kaitse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Terviklikkuse kontrollimise meetodi tutvustus . . . . . . . . . . . . . . 372
13.2.2 Püsivara andmete terviklikkuse kontrollimine . . . . . . . . . . . . . . . . . . 373
13.2.3 Ntample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Andmete konfidentsiaalsuse kaitse . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Sissejuhatus andmete krüptimisse . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Sissejuhatus Flash-krüpteerimisskeemi . . . . . . . . . . . . . . . . . 376
13.3.3 Flash-krüpteerimisvõtme salvestus . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Flash-krüptimise töörežiim . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Flash-krüpteerimisprotsess . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Sissejuhatus NVS-krüptimisse . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 NtampFlash-krüptimise ja NVS-krüptimise osas. . . . . . . . . . . 384
13.4 Andmete legitiimsuse kaitse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Sissejuhatus digitaalallkirja . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Üleview turvalise alglaadimise skeemi kohta. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Tarkvara turvalise alglaadimise tutvustus . . . . . . . . . . . . . . . . . . . 388 13.4.4 Riistvara turvalise alglaadimise sissejuhatus . . . . . . . . . . . . . . . . . . 390 13.4.5 Ntamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Praktika: masstootmise turvaelemendid . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash-krüptimine ja turvaline alglaadimine . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Flash-krüptimise ja turvalise alglaadimise lubamine pakett-Flash-tööriistadega . . 397 13.5.3 Flash-krüptimise ja turvalise alglaadimise lubamine rakenduses Smart Light Project . . . 398 13.6 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Püsivara põletamine ja masstootmise testimine
399
14.1 Püsivara põletamine masstootmises . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Andmesektsioonide määratlemine . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Püsivara põletamine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Masstootmise testimine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Praktika: masstootmisandmed nutika valguse projektis . . . . . . . . . . . . . 404
14.4 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Remote Monitoring Platform
405
15.1 Sissejuhatus ESP Insightsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 ESP Insightsi kasutamise alustamine . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 ESP Insightsiga alustamine esp-insightsi projektis . . . . . . 409
15.2.2 Jooksmine Example in the esp-insights Project . . . . . . . . . . . . . . . 411
15.2.3 Põhiteabe esitamine . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Huvipakkuvate logide kohandamine . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Taaskäivitamise põhjuse teatamine . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Kohandatud mõõdikute aruandlus . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Praktika: ESP Insightsi kasutamine Smart Light Projectis . . . . . . . . . . . . . . . 416
15.4 Kokkuvõte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Sissejuhatus
ESP32-C3 on ühetuumaline Wi-Fi ja Bluetooth 5 (LE) mikrokontroller SoC, mis põhineb avatud lähtekoodiga RISC-V arhitektuuril. See saavutab õige tasakaalu võimsuse, I/O võimaluste ja turvalisuse vahel, pakkudes seega ühendatud seadmete jaoks optimaalset kulutõhusat lahendust. ESP32-C3 perekonna erinevate rakenduste näitamiseks viib see Espressifi raamat teid huvitavale teekonnale läbi AIoT, alustades asjade Interneti-projektide arendamise ja keskkonna seadistamise põhitõdedest kuni praktiliste eksemplarideni.amples. Esimeses neljas peatükis räägitakse asjade internetist, ESP RainMakerist ja ESP-IDF-ist. Peatükk 5 ja 6 lühidalt riistvara disaini ja draiveri arendamise kohta. Edenedes avastate, kuidas oma projekti WiFi-võrkude ja mobiilirakenduste kaudu konfigureerida. Lõpuks õpite oma projekti optimeerima ja masstootmisse panema.
Kui olete seotud valdkondade insener, tarkvaraarhitekt, õpetaja, üliõpilane või keegi, kes tunneb asjade interneti vastu huvi, on see raamat teie jaoks.
Võite alla laadida koodi example kasutatud selles raamatus Espressifi saidilt GitHubis. IoT arenduse kohta uusima teabe saamiseks järgige meie ametlikku kontot.
Eessõna
Informatiseeriv maailm
Interneti lainel sõites tegi asjade Internet (IoT) oma suurejoonelise debüüdi, saades uut tüüpi infrastruktuuriks digitaalmajanduses. Tehnoloogia avalikkusele lähemale toomiseks töötab Espressif Systems nägemuse nimel, et arendajad kõigilt elualadelt saaksid kasutada asjade internetti meie aja kõige pakilisemate probleemide lahendamiseks. Ootame tulevikust "Intelligentse kõigi asjade võrgustiku" maailma.
Oma kiipide kujundamine on selle visiooni oluline komponent. See peab olema maraton, mis nõuab pidevaid läbimurdeid tehnoloogiliste piiride vastu. Alates “Game Changerist” ESP8266 kuni ESP32 seeriani, mis integreerib Wi-Fi ja Bluetoothr (LE) ühenduvuse, millele järgneb tehisintellekti kiirendusega varustatud ESP32-S3, Espressif ei lõpeta kunagi AIoT lahenduste jaoks toodete uurimist ja arendamist. Meie avatud lähtekoodiga tarkvaraga, nagu IoT arendusraamistik ESP-IDF, Mesh Development Framework ESP-MDF ja Device Connectivity Platform ESP RainMaker, oleme loonud sõltumatu raamistiku AIoT rakenduste loomiseks.
2022. aasta juuli seisuga on Espressifi IoT kiibikomplektide kumulatiivne tarne ületanud 800 miljonit, mis on Wi-Fi MCU turul juhtpositsioonil ja toidab tohutul hulgal ühendatud seadmeid kogu maailmas. Püüdlus tipptaseme poole muudab iga Espressifi toote suureks hitiks oma kõrge integratsioonitaseme ja kulutõhususe tõttu. ESP32-C3 väljalaskmine tähistab olulist verstaposti Espressifi enda väljatöötatud tehnoloogias. See on ühetuumaline 32-bitine RISC-V-põhine MCU, millel on 400 KB SRAM ja mis võib töötada sagedusel 160 MHz. Sellel on integreeritud 2.4 GHz Wi-Fi ja Bluetooth 5 (LE) koos pikamaa toega. See saavutab võimsuse, I/O-võimaluste ja turvalisuse suurepärase tasakaalu, pakkudes seega ühendatud seadmete jaoks optimaalset kulutõhusat lahendust. See raamat, mis põhineb sellisel võimsal ESP32-C3-l, on mõeldud selleks, et aidata lugejatel mõista IoT-ga seotud teadmisi koos üksikasjalike illustratsioonide ja praktiliste eksemplaridega.ampvähem.
Miks me selle raamatu kirjutasime?
Espressif Systems on midagi enamat kui pooljuhtide ettevõte. Tegemist on ka IoT platvormi ettevõttega, mis pürgib alati läbimurde ja uuenduste poole tehnoloogia vallas. Samal ajal on Espressif avatud lähtekoodiga ja jaganud oma väljatöötatud operatsioonisüsteemi ja tarkvararaamistikku kogukonnaga, moodustades ainulaadse ökosüsteemi. Insenerid, tegijad ja tehnoloogiahuvilised arendavad aktiivselt Espressifi toodetel põhinevaid uusi tarkvararakendusi, suhtlevad vabalt ja jagavad oma kogemusi. Arendajate põnevaid ideid näete pidevalt erinevatel platvormidel, nagu YouTube ja GitHub. Espressifi toodete populaarsus on ärgitanud üha suuremat arvu autoreid, kes on koostanud üle 100 raamatu Espressifi kiibistiku põhjal enam kui kümnes keeles, sealhulgas inglise, hiina, saksa, prantsuse ja jaapani keeles.
See on kogukonna partnerite toetus ja usaldus, mis julgustab Espressifi pidevat innovatsiooni. „Püüame muuta oma kiibid, operatsioonisüsteemid, raamistikud, lahendused, pilve, äritavad, tööriistad, dokumentatsioon, kirjutised, ideed jne üha asjakohasemaks nende vastuste jaoks, mida inimesed vajavad tänapäeva elu kõige pakilisemate probleemide lahendamisel. See on Espressifi kõrgeim ambitsioon ja moraalne kompass. ütles Espressifi asutaja ja tegevjuht Teo Swee Ann.
Espressif väärtustab lugemist ja ideid. Kuna asjade Interneti-tehnoloogia pidev täiendamine seab inseneridele kõrgemaid nõudeid, kuidas saaksime aidata rohkematel inimestel kiiresti omandada IoT kiibid, operatsioonisüsteemid, tarkvararaamistikud, rakendusskeemid ja pilveteenuste tooted? Nagu öeldakse, on parem õpetada mehele kala püüdma, kui anda talle kala. Ühel ajurünnakul tuli meile pähe, et võiksime kirjutada raamatu, mille abil saaksime süstemaatiliselt sorteerida asjade Interneti arendamise võtmeteadmisi. Lõpetasime, kogusime kiiresti vaneminseneride rühma ja ühendasime tehnilise meeskonna kogemused manustatud programmeerimise, asjade Interneti riist- ja tarkvaraarenduse vallas, mis kõik aitasid kaasa selle raamatu avaldamisele. Kirjutamise käigus andsime endast parima, et olla objektiivsed ja õiglased, ilma kookonist eemaldatud ning kasutada napisõnalisi väljendeid, et rääkida asjade interneti keerukusest ja võlust. Võtsime hoolikalt kokku levinud küsimused, viitasime kogukonna tagasisidele ja ettepanekutele, et arendusprotsessis tekkinud küsimustele arusaadavalt vastata ning asjaomastele tehnikutele ja otsustajatele praktilised IoT arendusjuhised.
Raamatu struktuur
See raamat võtab insenerikeskse vaatenurga ja selgitab samm-sammult IoT-projektide arendamiseks vajalikke teadmisi. See koosneb neljast osast:
· Ettevalmistus (1. peatükk): selles osas tutvustatakse asjade Interneti arhitektuuri, tüüpilist asjade Interneti projektiraamistikku, ESP RainMakerr pilveplatvormi ja arenduskeskkonda ESP-IDF, et panna IoT projekti arendamiseks kindel alus.
· Riistvara ja draiverite arendamine (peatükk 5): ESP6-C32 kiibistikul põhinev osa käsitleb minimaalset riistvarasüsteemi ja draiveri arendust ning rakendab hämardamise, värvide sorteerimise ja traadita side juhtimist.
· Traadita side ja juhtimine (peatükk 7): selles osas selgitatakse intelligentset Wi-Fi konfiguratsiooniskeemi, mis põhineb ESP11-C32 kiibil, kohalikel ja pilvejuhtimisprotokollidel ning seadmete kohalikul ja kaugjuhtimisel. See pakub ka skeeme nutitelefoni rakenduste arendamiseks, püsivara uuendamiseks ja versioonihalduseks.
· Optimeerimine ja masstootmine (peatükk 12–15): see osa on mõeldud täiustatud asjade Interneti rakendustele, keskendudes toodete optimeerimisele toitehalduses, vähese energiatarbega optimeerimisele ja täiustatud turvalisusele. Samuti tutvustatakse püsivara põletamist ja testimist masstootmises ning kaugseireplatvormi ESP Insights kaudu seadme püsivara tööoleku ja logide diagnoosimist.
Lähtekoodi kohta
Lugejad saavad käivitada endiseample programmid selles raamatus, kas sisestades koodi käsitsi või kasutades raamatuga kaasas olevat lähtekoodi. Rõhutame teooria ja praktika kombinatsiooni ning seega paneme peaaegu igasse peatükki sisse Smart Light projektil põhineva Praktika rubriigi. Kõik koodid on avatud lähtekoodiga. Lugejad on teretulnud lähtekoodi alla laadima ja seda GitHubi ja meie ametliku foorumi esp32.com raamatuga seotud jaotistes arutlema. Selle raamatu avatud lähtekoodiga koodile kehtivad Apache License 2.0 tingimused.
Autori märkus
Selle raamatu on ametlikult välja andnud Espressif Systems ja selle on kirjutanud ettevõtte vaneminsenerid. See sobib IoT-ga seotud valdkondade juhtidele ja teadus- ja arendustöötajatele, seotud erialade õpetajatele ja üliõpilastele ning asjade interneti valdkonna entusiastidele. Loodame, et see raamat võib olla tööjuhend, teatmik ja ööraamat, et olla nagu hea juhendaja ja sõber.
Selle raamatu koostamisel viitasime mõnele asjakohastele ekspertide, teadlaste ja tehnikute uurimistulemustele nii kodu- kui välismaal ning andsime endast parima, et neid akadeemiliste normide kohaselt tsiteerida. Siiski on möödapääsmatu, et siinkohal soovime avaldada sügavat lugupidamist ja tänu kõigile asjassepuutuvatele autoritele. Lisaks oleme tsiteerinud teavet Internetist, seega täname esialgseid autoreid ja väljaandjaid ning vabandame, et me ei saa märkida iga teabe allikat.
Kvaliteetse raamatu valmimiseks oleme korraldanud sisevestlusringe ning õppinud proovilugejate ja kirjastuse toimetajate ettepanekutest ja tagasisidest. Siinkohal soovime teid veel kord tänada teie abi eest, mis kõik sellele edukale tööle aitas.
Viimaseks, kuid kõige olulisemaks, tänu kõigile Espressifis, kes on meie toodete sünni ja populariseerimise nimel nii palju vaeva näinud.
IoT projektide arendamine hõlmab laia valikut teadmisi. Piirdudes nii raamatu pikkuse kui ka autori taseme ja kogemusega, on möödalaskmised vältimatud. Seetõttu palume ekspertidel ja lugejatel meie vigu kritiseerida ja parandada. Kui teil on selle raamatu kohta ettepanekuid, võtke meiega ühendust aadressil book@espressif.com. Ootame teie tagasisidet.
Kuidas seda raamatut kasutada?
Selle raamatu projektide kood on avatud lähtekoodiga. Saate selle alla laadida meie GitHubi hoidlast ning jagada oma mõtteid ja küsimusi meie ametlikus foorumis. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Foorum: https://www.esp32.com/bookc3 Kogu raamatus on osad esile tõstetud, nagu allpool näidatud.
Lähtekood Selles raamatus rõhutame teooria ja praktika kombinatsiooni ning seega paneme peaaegu igasse peatükki sisse praktilise osa Smart Light projekti kohta. Vastavad sammud ja lähteleht märgitakse kahe rea vahele, mis algavad tähega tag Lähtekood.
MÄRKUS/NÕUANDED Siit võite leida olulist teavet ja meeldetuletusi programmi edukaks silumiseks. Need märgitakse kahe jämeda joone vahele, mis algavad tähega tag MÄRKUS või NÕUANDED.
Enamik selles raamatus olevaid käske käivitatakse Linuxi all, mida küsib märk "$". Kui käsu täitmiseks on vaja superkasutaja õigusi, asendatakse viip tähega #. Maci süsteemide käsuviip on „%”, nagu on kasutatud jaotises 4.2.3 ESP-IDF installimine Maci.
Selle raamatu põhitekst trükitakse hartas, samas kui kood examples, komponendid, funktsioonid, muutujad, kood file nimed, koodikataloogid ja stringid asuvad rakenduses Courier New.
Käsud või tekstid, mida kasutaja peab sisestama, ja käsud, mida saab sisestada klahvi "Enter" vajutamisega, trükitakse Courier New paksus kirjas. Logid ja koodiplokid esitatakse helesinistes kastides.
Example:
Teiseks kasutage NVS-i binaarse partitsiooni genereerimiseks faili esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py file arendushostis järgmise käsuga:
$ python $IDF PATH/components/nvs flash/nvs partitsiooni generaator/nvs partitsioon gen.py –sisendmass prod.csv –väljundmass prod.bin –suurus NVS PARTITSIOONI SUURUS
1. peatükk
Sissejuhatus
juurde
IoT
20. sajandi lõpus, arvutivõrkude ja sidetehnoloogiate levikuga, integreerus Internet kiiresti inimeste ellu. Kuna Interneti-tehnoloogia areneb edasi, sündis asjade Interneti (IoT) idee. Sõna otseses mõttes tähendab IoT Internetti, kus asjad on ühendatud. Kui algne Internet murrab ruumi ja aja piire ning kitsendab distantsi “inimese ja inimese” vahel, siis asjade internet muudab “asjad” oluliseks osalejaks, tuues “inimesed” ja “asjad” üksteisele lähemale. Lähitulevikus peaks asjade internetist saama infotööstuse liikumapanev jõud.
Niisiis, mis on asjade Internet?
Asjade internetti on raske täpselt määratleda, kuna selle tähendus ja ulatus muutuvad pidevalt. 1995. aastal tõi Bill Gates esimest korda välja IoT idee oma raamatus The Road Ahead. Lihtsamalt öeldes võimaldab IoT objektidel Interneti kaudu üksteisega teavet vahetada. Selle lõppeesmärk on luua "kõige Internet". See on asjade interneti varajane tõlgendus, aga ka tulevikutehnoloogia fantaasia. Kolmkümmend aastat hiljem, majanduse ja tehnoloogia kiire arenguga, on fantaasia teoks saamas. Alates nutiseadmetest, nutikatest kodudest, nutikatest linnadest, sõidukite Internetist ja kantavatest seadmetest kuni asjade Interneti-tehnoloogiate toetatud metaversioonini on pidevalt esile kerkimas uusi kontseptsioone. Selles peatükis alustame asjade Interneti arhitektuuri selgitusega ja seejärel tutvustame kõige levinumat asjade Interneti rakendust nutikat kodu, et aidata teil asjade Internetist selget arusaamist saada.
1.1 IoT arhitektuur
Asjade Internet hõlmab mitmeid tehnoloogiaid, millel on erinevates tööstusharudes erinevad rakendusvajadused ja -vormid. IoT struktuuri, võtmetehnoloogiate ja rakendusomaduste väljaselgitamiseks on vaja luua ühtne arhitektuur ja standardne tehniline süsteem. Selles raamatus on asjade Interneti arhitektuur lihtsalt jagatud neljaks kihiks: taju- ja juhtimiskiht, võrgukiht, platvormikiht ja rakenduskiht.
Taju- ja juhtimiskiht IoT-arhitektuuri kõige põhilisema elemendina on taju- ja juhtimiskiht asjade Interneti igakülgse tajumise aluseks. Selle põhiülesanne on teabe kogumine, tuvastamine ja kontrollimine. See koosneb mitmesugustest tajuvõimega seadmetest,
3
identifitseerimine, juhtimine ja teostamine ning vastutab selliste andmete hankimise ja analüüsimise eest nagu materjali omadused, käitumistrendid ja seadme olek. Sel viisil tunneb asjade internet ära tegeliku füüsilise maailma. Lisaks on kihil võimalik kontrollida ka seadme olekut.
Selle kihi levinumad seadmed on erinevad andurid, millel on oluline roll info kogumisel ja tuvastamisel. Andurid on nagu inimese sensoorsed organid, nagu valgustundlikud andurid, mis on võrdväärsed nägemisega, akustilised andurid kuulmisele, gaasiandurid haistmisele ning rõhu- ja temperatuuritundlikud andurid puudutamisele. Kõigi nende "sensoorsete organitega" muutuvad objektid "elusateks" ja on võimelised füüsilise maailma intelligentseks tajumiseks, äratundmiseks ja sellega manipuleerimiseks.
Võrgukiht Võrgukihi põhiülesanne on edastada teavet, sealhulgas taju- ja juhtimiskihist saadud andmeid määratud sihtmärgile, samuti rakenduskihilt antud käske tagasi taju- ja juhtimiskihile. See toimib olulise sidesillana, mis ühendab IoT-süsteemi erinevaid kihte. Asjade Interneti põhimudeli seadistamine hõlmab objektide võrku integreerimiseks kahte sammu: juurdepääs Internetile ja edastamine Interneti kaudu.
Juurdepääs Internetile Internet võimaldab vastastikust ühendust inimese ja inimese vahel, kuid ei suuda kaasata asju suurde perekonda. Enne asjade Interneti tulekut ei olnud enamik asju "võrkuvõimelised". Tänu tehnoloogia pidevale arengule õnnestub IoT-l asju Internetti ühendada, realiseerides nii seose “inimeste ja asjade” ning “asjade ja asjade” vahel. Interneti-ühenduse loomiseks on kaks levinumat viisi: juurdepääs traadiga võrgule ja juurdepääs traadita võrgule.
Juhtmega võrgule juurdepääsu meetodid hõlmavad Etherneti, jadasidet (nt RS-232, RS-485) ja USB-d, samas kui traadita võrgu juurdepääs sõltub traadita sidest, mida saab veel jagada lähi- ja pikamaa traadita sideks.
Lühimaa traadita side hõlmab ZigBee, Bluetoothr, Wi-Fi, lähivälja side (NFC) ja raadiosagedustuvastus (RFID). Pikamaa traadita side hõlmab täiustatud masinatüüpi sidet (eMTC), LoRa, kitsaribalist asjade internetti (NB-IoT), 2G, 3G, 4G, 5G jne.
Edastamine Interneti kaudu Erinevad Interneti-juurdepääsu meetodid viivad vastava andmete füüsilise edastuslingini. Järgmine asi on otsustada, millist sideprotokolli andmete edastamiseks kasutada. Võrreldes Interneti-terminalidega on enamikus asjade Interneti terminalides praegu vähem
4 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
saadaolevad ressursid, nagu töötlemise jõudlus, salvestusmaht, võrgu kiirus jne, seega on vaja valida sideprotokoll, mis võtab asjade Interneti rakendustes vähem ressursse. Tänapäeval on laialdaselt kasutusel kaks sideprotokolli: sõnumijärjekorra telemeetriatransport (MQTT) ja piiratud rakendusprotokoll (CoAP).
Platvormikiht Platvormikiht viitab peamiselt IoT pilveplatvormidele. Kui kõik IoT terminalid on võrku ühendatud, tuleb nende andmed arvutamiseks ja salvestamiseks koondada IoT pilveplatvormile. Platvormikiht toetab peamiselt IoT rakendusi, hõlbustades juurdepääsu ja haldamist massiivsetele seadmetele. See ühendab IoT terminalid pilveplatvormiga, kogub terminaliandmeid ja annab terminalidele käske, et rakendada kaugjuhtimist. Vaheteenusena seadmete määramisel tööstuslikele rakendustele, etendab platvormikiht ühendavat rolli kogu asjade Interneti arhitektuuris, kandes abstraktset äriloogikat ja standardiseeritud põhiandmemudelit, mis mitte ainult ei võimalda seadmetele kiiret juurdepääsu, vaid pakub ka võimsaid modulaarseid võimalusi. tööstuse rakendusstsenaariumide erinevate vajaduste rahuldamiseks. Platvormikiht sisaldab peamiselt selliseid funktsionaalseid mooduleid nagu juurdepääs seadmetele, seadmehaldus, turbehaldus, sõnumivahetus, toimimise ja hoolduse jälgimine ning andmerakendused.
· Juurdepääs seadmetele, terminalide ja IoT pilveplatvormide vahelise ühenduse ja suhtluse realiseerimine.
· Seadmehaldus, sealhulgas sellised funktsioonid nagu seadme loomine, seadme hooldus, andmete teisendamine, andmete sünkroonimine ja seadme levitamine.
· Turvahaldus, IoT andmeedastuse turvalisuse tagamine turvaautentimise ja sideturbe vaatenurgast.
· Sõnumiside, sealhulgas kolm edastussuunda, ehk terminal saadab andmeid IoT pilveplatvormile, IoT pilveplatvorm saadab andmed serveri poolele või teistele IoT pilveplatvormidele ning serveri pool juhib kaugjuhtimisega IoT seadmeid.
· O&M jälgimine, mis hõlmab jälgimist ja diagnostikat, püsivara uuendamist, võrgusilumist, logiteenuseid jne.
· Andmerakendused, mis hõlmavad andmete salvestamist, analüüsi ja rakendamist.
Rakenduskiht Rakenduskiht kasutab platvormikihi andmeid rakenduse haldamiseks, filtreerimiseks ja töötlemiseks selliste tööriistadega nagu andmebaasid ja analüüsitarkvara. Saadud andmeid saab kasutada reaalsete asjade interneti rakenduste jaoks, nagu tark tervishoid, nutikas põllumajandus, arukad kodud ja targad linnad.
Loomulikult saab asjade Interneti arhitektuuri jagada rohkemateks kihtideks, kuid olenemata sellest, kui mitmest kihist see koosneb, jääb aluspõhimõte sisuliselt samaks. Õppimine
Peatükk 1. Sissejuhatus IoT-sse 5
asjade Interneti arhitektuurist aitab süvendada meie arusaamist IoT tehnoloogiatest ja luua täielikult toimivaid IoT projekte.
1.2 IoT rakendus nutikates kodudes
IoT on tunginud kõikidesse eluvaldkondadesse ja meiega kõige lähemalt seotud asjade interneti rakendus on nutikas kodu. Paljud traditsioonilised seadmed on nüüd varustatud ühe või mitme IoT-seadmega ja paljud vastvalminud majad on algusest peale projekteeritud asjade Interneti-tehnoloogiatega. Joonis 1.1 näitab mõningaid levinumaid nutikodu seadmeid.
Joonis 1.1. Levinud targa kodu seadmed Targa kodu arendamise võib lihtsalt jagada nutitoodetekstage, stseeni omavaheline ühendus stage ja intelligentsed stage, nagu on näidatud joonisel 1.2.
Joonis 1.2. Areng stage of smart home 6 ESP32-C3 Wireless Adventure: põhjalik juhend asjade Interneti kohta
Esimesed stage puudutab nutikaid tooteid. Erinevalt tavapärastest kodudest võtavad IoT-seadmed arukates kodudes signaale vastu anduritega ja on võrku ühendatud traadita sidetehnoloogiate (nt Wi-Fi, Bluetooth LE ja ZigBee) kaudu. Kasutajad saavad juhtida nutikaid tooteid mitmel viisil, näiteks nutitelefonirakendusi, häälassistente, nutikate kõlarite juhtimist jne.tage keskendub stseenide omavahelisele ühendamisele. Selles stage, arendajad ei kaalu enam ühe nutika toote juhtimist, vaid kahe või enama nutika toote ühendamist, teatud määral automatiseerimist ja lõpuks kohandatud stseenirežiimi moodustamist. NäiteksampKui kasutaja vajutab mis tahes stseenirežiimi nuppu, kohandatakse tuled, kardinad ja kliimaseadmed automaatselt eelseadistustega. Loomulikult on eeltingimuseks, et sidumisloogika, sealhulgas käivitustingimused ja täitmistoimingud, on hõlpsasti seadistatud. Kujutage ette, et kliimaseadme kütterežiim lülitub sisse, kui sisetemperatuur langeb alla 10°C; et hommikul kell 7 kõlab kasutaja äratamiseks muusika, avatakse nutikardinad ning riisikeetja või leivaröster käivitub läbi nutipesa; kui kasutaja tõuseb ja pesemise lõpetab, on hommikusöök juba serveeritud, et tööleminekuga ei tekiks viivitusi. Kui mugavaks on meie elu muutunud! Kolmas stage läheb luurele stage. Kui juurde pääseb rohkem nutika kodu seadmeid, muutuvad ka genereeritavad andmetüübid. Pilvandmetöötluse, suurandmete ja tehisintellekti abil on nutikatesse kodudesse justkui istutatud “targem aju”, mis ei nõua enam kasutajalt sagedasi käsklusi. Nad koguvad andmeid varasemate interaktsioonide kohta ning õpivad tundma kasutaja käitumismustreid ja eelistusi, et automatiseerida tegevusi, sealhulgas anda soovitusi otsuste tegemiseks. Praegu on enamik nutikaid kodusid sündmuskohaltage. Kuna nutikate toodete levik ja intelligentsus kasvavad, eemaldatakse sideprotokollide vahelised tõkked. Tulevikus muutuvad targad kodud kindlasti tõeliselt “targaks”, nagu ka Iron Mani tehisintellektisüsteem Jarvis, mis mitte ainult ei aita kasutajal erinevaid seadmeid juhtida, igapäevaste asjadega toime tulla, vaid omab ka ülimat arvutusvõimsust ja mõtlemisvõimet. Intelligentsete stage, inimesed saavad paremaid teenuseid nii kvantiteedi kui ka kvaliteediga.
Peatükk 1. Sissejuhatus IoT-sse 7
8 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Peatükk 2 IoT projekti sissejuhatus ja praktika
Peatükis 1 tutvustasime IoT arhitektuuri ning taju- ja juhtimiskihi, võrgukihi, platvormikihi ja rakenduskihi rolle ja omavahelisi seoseid ning targa kodu arengut. Kuid nii nagu maalimise õppimisel, ei piisa ka teoreetiliste teadmiste tundmisest. Peame oma käed määrima, et IoT-projekte praktikas rakendada, et tehnoloogiat tõeliselt hallata. Lisaks, kui projekt liigub masstootmisse stage, on vaja arvestada rohkemate teguritega, nagu võrguühendus, konfiguratsioon, asjade Interneti pilvplatvormi interaktsioon, püsivara haldus ja värskendused, masstootmise haldus ja turbekonfiguratsioon. Niisiis, millele peame täieliku IoT projekti väljatöötamisel tähelepanu pöörama? Peatükis 1 mainisime, et nutikas kodu on üks levinumaid IoT rakendusstsenaariume ning nutikad valgustid on üks elementaarsemaid ja praktilisemaid seadmeid, mida saab kasutada kodudes, hotellides, spordisaalides, haiglates jne. Selles raamatus võtame lähtepunktiks nutika valguse projekti ehitamise, selgitame selle komponente ja funktsioone ning anname juhiseid projekti arendamiseks. Loodame, et saate sellest juhtumist teha järeldusi, et luua rohkem IoT rakendusi.
2.1 Tüüpiliste IoT-projektide tutvustus
Arenduslikult võib IoT projektide põhifunktsionaalseid mooduleid liigitada IoT seadmete tarkvara- ja riistvaraarendusteks, klientrakenduste arendamiseks ja IoT pilveplatvormi arendamiseks. Oluline on selgitada põhilised funktsionaalsed moodulid, mida käesolevas jaotises täpsemalt kirjeldatakse.
2.1.1 Tavaliste IoT-seadmete põhimoodulid
IoT-seadmete tarkvara- ja riistvaraarendus sisaldab järgmisi põhimooduleid: Andmete kogumine
IoT arhitektuuri alumise kihina ühendavad taju- ja juhtimiskihi IoT seadmed andureid ja seadmeid oma kiipide ja välisseadmete kaudu, et saavutada andmete kogumine ja toimimise juhtimine.
9
Konto sidumine ja esialgne konfiguratsioon Enamiku asjade Interneti-seadmete puhul viiakse konto sidumine ja esialgne konfigureerimine lõpule ühe tööprotsessiga, ntample, ühendades seadmed kasutajatega Wi-Fi võrgu konfigureerimise teel.
Interaktsioon IoT pilveplatvormidega IoT seadmete jälgimiseks ja juhtimiseks on vajalik ka nende ühendamine IoT pilveplatvormidega, et omavahelisel suhtlusel käsklusi anda ja olekust raporteerida.
Seadme juhtimine Kui seadmed on ühendatud IoT pilveplatvormidega, saavad seadmed pilvega suhelda ning neid registreerida, siduda või juhtida. Kasutajad saavad IoT pilveplatvormide või kohalike sideprotokollide kaudu nutitelefoni rakenduses küsida toote olekut ja teha muid toiminguid.
Püsivara uuendamine IoT-seadmed suudavad saavutada ka püsivara uuenduse vastavalt tootjate vajadustele. Pilve poolt saadetud käskude vastuvõtmisega realiseeritakse püsivara uuendamine ja versioonihaldus. Selle püsivara uuendamise funktsiooniga saate pidevalt täiustada asjade Interneti-seadmete funktsioone, parandada defekte ja parandada kasutajakogemust.
2.1.2 Kliendirakenduste põhimoodulid
Kliendirakendused (nt nutitelefoni rakendused) sisaldavad peamiselt järgmisi põhimooduleid:
Kontosüsteem ja autoriseerimine See toetab konto ja seadme autoriseerimist.
Seadme juhtimine Nutitelefonirakendused on tavaliselt varustatud juhtimisfunktsioonidega. Kasutajad saavad hõlpsasti ühendada IoT-seadmetega ja hallata neid igal ajal ja igal pool nutitelefoni rakenduste kaudu. Päris nutikas kodus juhitakse seadmeid valdavalt nutitelefoni äppide kaudu, mis ei võimalda mitte ainult seadmete intelligentset haldamist, vaid hoiab kokku ka tööjõukulu. Seetõttu on seadme juhtimine kohustuslik kliendirakenduste jaoks, nagu seadme funktsiooni atribuutide juhtimine, stseeni juhtimine, ajastamine, kaugjuhtimispult, seadmete ühendamine jne. Nutika kodu kasutajad saavad ka kohandada stseene vastavalt isiklikele vajadustele, juhtida valgustust, kodumasinaid, sissepääsu jne, et muuta kodune elu mugavamaks ja mugavamaks. Nad saavad ajastada kliimaseadet, lülitada selle kaugjuhtimisega välja, lülitada koridori valguse automaatselt sisse, kui uks on lukust lahti keeratud, või lülituda ühe nupuga "kino" režiimi.
Teavituskliendi rakendused värskendavad asjade Interneti-seadmete reaalajas olekut ja saadavad hoiatusi, kui seadmed ei tööta normaalselt.
10 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Müügijärgne klienditeenindus Nutitelefonirakendused võivad pakkuda toodetele müügijärgseid teenuseid, et lahendada õigeaegselt IoT-seadmete rikete ja tehniliste toimingutega seotud probleeme.
Soovitatavad funktsioonid Erinevate kasutajate vajaduste rahuldamiseks võib lisada muid funktsioone, nagu raputus, NFC, GPS jne. GPS võib aidata määrata stseeni toimingute täpsust vastavalt asukohale ja kaugusele, samal ajal kui funktsioon Shake võimaldab kasutajatel määrata konkreetse seadme või stseeni jaoks raputades täidetavad käsud.
2.1.3 Tavaliste IoT pilveplatvormide tutvustus
IoT pilveplatvorm on kõik-ühes platvorm, mis integreerib selliseid funktsioone nagu seadmehaldus, andmeturbe side ja teavituste haldus. Sihtrühma ja juurdepääsetavuse järgi võib IoT pilveplatvormid jagada avalikeks IoT pilveplatvormideks (edaspidi “avalik pilv”) ja privaatseks IoT pilveplatvormideks (edaspidi “privaatpilv”).
Avalik pilv tähistab tavaliselt ettevõtetele või üksikisikutele mõeldud jagatud asjade Interneti pilveplatvorme, mida haldavad ja hooldavad platvormi pakkujad ning mida jagatakse Interneti kaudu. See võib olla tasuta või odav ning pakub teenuseid kogu avatud avalikus võrgus, nagu Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT jne. Toetava platvormina saab avalik pilv integreerida ülesvoolu teenusepakkujaid ja allkasutajatele, et luua uus väärtusahel ja ökosüsteem.
Privaatpilv on loodud ainult ettevõtte kasutamiseks, tagades seega parima kontrolli andmete, turvalisuse ja teenuse kvaliteedi üle. Selle teenuseid ja taristut hooldavad ettevõtted eraldi ning ka toetav riist- ja tarkvara on mõeldud konkreetsetele kasutajatele. Ettevõtted saavad kohandada pilveteenuseid vastavalt oma ettevõtte vajadustele. Praeguseks on mõned targa kodu tootjad juba hankinud privaatsed IoT pilveplatvormid ja nende baasil välja töötanud nutikodu rakendusi.
Avalikul pilvel ja privaatsel pilvel on oma eelisedtages, mida selgitatakse hiljem.
Suhtlusühenduvuse saavutamiseks on vaja läbi viia vähemalt seadmepoolne manustatud arendus koos äriserverite, IoT pilveplatvormide ja nutitelefoni rakendustega. Sellise tohutu projektiga silmitsi seistes pakub avalik pilv tavaliselt protsessi kiirendamiseks tarkvaraarenduskomplekte seadmepoolsetele ja nutitelefonirakendustele. Nii avalik kui ka privaatne pilv pakub teenuseid, sealhulgas juurdepääsu seadmetele, seadmehaldust, seadme varju ning kasutamist ja hooldust.
Seadmetele juurdepääsu IoT pilvplatvormid peavad pakkuma mitte ainult liideseid seadmetele juurdepääsuks protokollide abil
2. peatükk. IoT-projektide tutvustus ja praktika 11
nagu MQTT, CoAP, HTTPS ja WebPistikupesa, aga ka seadme turvaautentimise funktsioon võltsitud ja ebaseaduslike seadmete blokeerimiseks, vähendades tõhusalt ohtu sattuda. Selline autentimine toetab reeglina erinevaid mehhanisme, mistõttu on seadmete masstootmise korral vajalik seadme sertifikaat vastavalt valitud autentimismehhanismile eelnevalt määrata ja seadmetesse sisse põletada.
Seadmehaldus IoT pilveplatvormide pakutav seadmehaldusfunktsioon ei saa mitte ainult aidata tootjatel jälgida oma seadmete aktiveerimisolekut ja võrguolekut reaalajas, vaid võimaldab ka selliseid valikuid nagu seadmete lisamine/eemaldamine, toomine, rühmade lisamine/kustutamine, püsivara uuendamine. ja versioonihaldus.
Seadmevarju IoT pilveplatvormid saavad luua iga seadme jaoks püsiva virtuaalversiooni (seadme varju) ning seadme varju olekut saab sünkroonida ja saada nutitelefoni rakenduse või muude seadmete kaudu Interneti-edastusprotokollide kaudu. Seadme vari salvestab iga seadme viimase teatatud oleku ja eeldatava oleku ning isegi kui seade on võrguühenduseta, saab see oleku API-liideste helistades siiski hankida. Seadme vari pakub alati sisse lülitatud API-sid, mis muudab seadmetega suhtlevate nutitelefonirakenduste loomise lihtsamaks.
Kasutamine ja hooldus O&M funktsioon sisaldab kolme aspekti: · IoT-seadmete ja teatiste statistilise teabe esitamine. · Logihaldus võimaldab hankida teavet seadme käitumise, üles/alla sõnumivoo ja sõnumi sisu kohta. · Seadme silumine toetab käskude edastamist, konfiguratsiooni värskendamist ning IoT pilvplatvormide ja seadme sõnumite vahelise koostoime kontrollimist.
2.2 Praktika: Smart Light Project
Pärast iga peatüki teoreetilist sissejuhatust leiate nutika valguse projektiga seotud praktikaosa, mis aitab teil saada praktilisi kogemusi. Projekt põhineb Espressifi ESP32-C3 kiibil ja ESP RainMaker IoT pilveplatvormil ning hõlmab nutikate valgustoodete juhtmevaba mooduli riistvara, ESP32C3-l põhinevat nutiseadmete manustatud tarkvara, nutitelefoni rakendusi ja ESP RainMakeri interaktsiooni.
Lähtekood Parema õppimise ja kogemuste arendamiseks on selles raamatus käsitletav projekt avatud lähtekoodiga. Lähtekoodi saate alla laadida meie GitHubi hoidlast aadressil https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
2.2.1 Projekti struktuur
Smart Light projekt koosneb kolmest osast: i. ESP32-C3-l põhinevad nutikad valgusseadmed, mis vastutavad IoT pilveplatvormidega suhtlemise ning LED-i lüliti, heleduse ja värvitemperatuuri juhtimise eest.amp helmed. ii. Nutitelefonirakendused (sealhulgas Androidis ja iOS-is töötavad tahvelarvutirakendused), mis vastutavad nutikate valgustoodete võrgukonfiguratsiooni ning nende oleku päringute ja kontrollimise eest.
iii. ESP RainMakeril põhinev IoT pilveplatvorm. Lihtsustuse huvides käsitleme selles raamatus IoT pilveplatvormi ja äriserverit tervikuna. ESP RainMakeri üksikasjad on esitatud 3. peatükis.
Smart Light projekti struktuuri ja IoT arhitektuuri vaheline vastavus on näidatud joonisel 2.1.
Joonis 2.1. Nutika valguse projekti struktuur
2.2.2 Projekti funktsioonid
Vastavalt struktuurile on iga osa funktsioonid järgmised. Nutikad valgusseadmed
· Võrgu konfigureerimine ja ühendus. · LED PWM juhtimine, nagu lüliti, heledus, värvitemperatuur jne. · Automatiseerimine või stseeni juhtimine, nt ajalüliti. · Flashi krüpteerimine ja turvaline käivitamine. · Püsivara uuendamine ja versioonihaldus.
2. peatükk. IoT-projektide tutvustus ja praktika 13
Nutitelefoni rakendused · Võrgukonfiguratsioon ja seadme sidumine. · Nutikas valgustoote juhtimine, nagu lüliti, heledus, värvitemperatuur jne. · Automatiseerimine või stseeni seaded, nt ajalüliti. · Kohalik/kaugjuhtimispult. · Kasutaja registreerimine, sisselogimine jne.
ESP RainMaker IoT pilveplatvorm · IoT-seadmetele juurdepääsu lubamine. · Nutitelefoni rakendustele juurdepääsetavate seadme töö API-de pakkumine. · Püsivara uuendamine ja versioonihaldus.
2.2.3 Riistvara ettevalmistamine
Kui on huvi projekti ellu viia, läheb vaja ka järgmist riistvara: nutikad valgustid, nutitelefonid, Wi-Fi ruuterid ja arvuti, mis vastab arenduskeskkonna paigaldusnõuetele. Nutikad tuled
Nutikad tuled on uut tüüpi pirnid, mille kuju on sama, mis tavalisel hõõglambil. Nutikas valgusti koosneb kondensaatoriga reguleeritavast toiteallikast, juhtmevabast moodulist (koos sisseehitatud ESP32-C3), LED-kontrollerist ja RGB LED-maatriksist. Toiteallikaga ühendamisel töötab 15 V DC voltagVäljund pärast kondensaatori alandamist, dioodi alaldit ja reguleerimist annab energiat LED-kontrollerile ja LED-maatriksile. LED-kontroller võib teatud ajavahemike järel automaatselt saata kõrgeid ja madalaid tasemeid, lülitades RGB LED-maatriksi suletud (tuled sisse) ja avatud (tuled väljas) vahel, nii et see võib kiirata tsüaani, kollast, rohelist, lillat, sinist, punast ja valge valgus. Juhtmeta moodul vastutab Wi-Fi-ruuteriga ühenduse loomise, nutikate tulede oleku vastuvõtmise ja teavitamise ning LED-i juhtimiseks käskude saatmise eest.
Joonis 2.2. Simuleeritud nutikas valgusti
Varases arengus stage, saate simuleerida nutikat valgust, kasutades ESP32-C3DevKitM-1 plaati, mis on ühendatud RGB LED-iga lamp helmed (vt joonis 2.2). Aga sa peaksid
14 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Pange tähele, et see pole ainus viis nutika valgusti kokkupanemiseks. Selle raamatu projekti riistvarakujundus sisaldab ainult juhtmevaba moodulit (koos sisseehitatud ESP32-C3-ga), kuid mitte täielikku nutika valgusti riistvarakujundust. Lisaks toodab Espressif ka ESP32-C3-põhist heliarendusplaati ESP32C3-Lyra valguse juhtimiseks heliga. Plaadil on liidesed mikrofonide ja kõlarite jaoks ning sellega saab juhtida LED-ribasid. Seda saab kasutada üliodavate, suure jõudlusega helisaadete ja rütmivalgusribade väljatöötamiseks. Joonisel 2.3 on kujutatud ESP32-C3Lyra plaat, mis on ühendatud 40 LED-valgusti ribaga.
Joonis 2.3. ESP32-C3-Lyra ühendatud 40 LED-valgusti ribaga
Nutitelefonid (Android/iOS) Smart Lighti projekt hõlmab nutitelefoni rakenduse arendamist nutikate valgustite toodete seadistamiseks ja juhtimiseks.
Wi-Fi-ruuterid Wi-Fi-ruuterid muudavad traadiga võrgusignaalid ja mobiilsidevõrgu signaalid traadita võrgu signaalideks, et arvutid, nutitelefonid, tahvelarvutid ja muud traadita seadmed saaksid võrguga ühenduse luua. NäiteksampKodus peab lairibaühendus olema ühendatud ainult WiFi-ruuteriga, et saavutada Wi-Fi-seadmete traadita võrguühendus. Wi-Fi ruuterite toetatud tavaprotokolli standard on IEEE 802.11n, mille keskmine TxRate on 300 Mbps või maksimaalselt 600 Mbps. Need on tagasiühilduvad standarditega IEEE 802.11b ja IEEE 802.11g. Espressifi ESP32-C3 kiip toetab IEEE 802.11b/g/n, nii et saate valida üheribalise (2.4 GHz) või kaheribalise (2.4 GHz ja 5 GHz) Wi-Fi-ruuteri.
Arvuti (Linux/macOS/Windows) arenduskeskkonda tutvustatakse 4. peatükis. 2. peatükk. IoT-projektide tutvustus ja praktika 15
2.2.4 Arendusprotsess
Joonis 2.4. Smart Light projekti arendamise sammud
Riistvara disain IoT-seadmete riistvarakujundus on asjade Interneti-projekti jaoks hädavajalik. Täielik nutika valguse projekt on mõeldud tootma alamp töötab elektrivõrgu all. Erinevad tootjad toodavad lamperinevat tüüpi ja erinevat tüüpi draivereid, kuid nende juhtmeta moodulid täidavad tavaliselt sama funktsiooni. Smart Lighi projekti arendusprotsessi lihtsustamiseks hõlmab see raamat ainult juhtmevabade moodulite riistvara disaini ja tarkvara arendamist.
IoT pilveplatvormi konfigureerimine IoT pilveplatvormide kasutamiseks tuleb taustaprogrammis konfigureerida projekte, näiteks luua tooteid, luua seadmeid, seadistada seadme atribuute jne.
Manustatud tarkvaraarendus asjade Interneti-seadmete jaoks Rakendage oodatud funktsioone ESP-IDF, Espressifi seadmepoolse SDK-ga, sealhulgas asjade Interneti pilvplatvormidega ühenduse loomine, LED-draiverite arendamine ja püsivara uuendamine.
Nutitelefonirakenduste arendus Androidi ja iOS-i süsteemidele mõeldud nutitelefonirakenduste arendamine kasutaja registreerimiseks ja sisselogimiseks, seadme juhtimiseks ja muudeks funktsioonideks.
IoT-seadmete optimeerimine Kui IoT-seadme funktsioonide põhiarendus on lõpetatud, võite pöörduda optimeerimisülesannete poole, näiteks energia optimeerimise poole.
Masstootmise testimine Tehke masstootmise katsed vastavalt seotud standarditele, näiteks seadmete talitluskatse, vananemise test, raadiosageduskatse jne.
Vaatamata ülaltoodud sammudele ei kehti Smart Lighti projekt tingimata sellisele protseduurile, kuna samal ajal saab teostada ka erinevaid ülesandeid. Näiteksampsisseehitatud tarkvara ja nutitelefoni rakendusi saab arendada paralleelselt. Mõningaid samme võib olla vaja ka korrata, näiteks asjade Interneti-seadmete optimeerimine ja masstootmise testimine.
16 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
2.3 Kokkuvõte
Selles peatükis käsitlesime esmalt IoT-projekti põhikomponente ja funktsionaalseid mooduleid, seejärel tutvustasime praktikaks Smart Lighti juhtumit, viidates selle struktuurile, funktsioonidele, riistvara ettevalmistamisele ja arendusprotsessile. Lugejad saavad teha järeldusi praktikast ja olla kindlad, et suudavad tulevikus asjade Interneti-projekte minimaalsete vigadega ellu viia.
2. peatükk. IoT-projektide tutvustus ja praktika 17
18 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
3. peatükk
Sissejuhatus
juurde
ESP
RainMaker
Asjade internet (IoT) pakub lõputuid võimalusi inimeste eluviisi muutmiseks, kuid asjade Interneti inseneri arendamine on täis väljakutseid. Avalike pilvedega saavad terminalitootjad toote funktsionaalsust juurutada järgmiste lahenduste kaudu:
Põhineb lahenduse pakkujate pilveplatvormidel Sel viisil peavad terminalitootjad ainult toote riistvara disainima, seejärel riistvara kaasasoleva sidemooduli abil pilvega ühendama ja toote funktsioonid juhiseid järgides konfigureerima. See on tõhus lähenemisviis, kuna see välistab vajaduse serveri- ja rakenduspoolse arenduse ning toimingute ja hoolduse (O&M) järele. See võimaldab terminalitootjatel keskenduda riistvara disainile, ilma et nad peaksid pilverakendust kaaluma. Sellised lahendused (nt seadme püsivara ja rakendus) ei ole aga üldjuhul avatud lähtekoodiga, mistõttu piirab toote funktsioone teenusepakkuja pilveplatvorm, mida ei saa kohandada. Samal ajal kuuluvad pilveplatvormi ka kasutaja- ja seadmeandmed.
Pilvetoodete baasil Selle lahenduse puhul ei pea terminalitootjad pärast riistvarakujunduse valmimist mitte ainult pilvefunktsioone rakendama, kasutades ühte või mitut avaliku pilve pakutavat pilvetoodet, vaid ka siduma riistvara pilvega. Näiteksample, et ühendada Amazoniga Web Teenused (AWS), terminalitootjad peavad kasutama AWS-i tooteid, nagu Amazon API Gateway, AWS IoT Core ja AWS Lambda, et võimaldada seadmetele juurdepääsu, kaugjuhtimist, andmete salvestamist, kasutajahaldust ja muid põhifunktsioone. See mitte ainult ei nõua terminalitootjatelt pilvetoodete paindlikku kasutamist ja konfigureerimist põhjaliku arusaamise ja rikkalike kogemustega, vaid nõuab ka esialgsete ja hilisemate ehitus- ja hoolduskulude arvestamist.tages See seab ettevõtte energiale ja ressurssidele suuri väljakutseid.
Võrreldes avalike pilvedega luuakse privaatpilved tavaliselt konkreetsete projektide ja toodete jaoks. Erapilvearendajatele antakse protokollide kujundamisel ja äriloogika rakendamisel kõrgeim vabadus. Terminalitootjad saavad soovi korral tooteid ja disainiskeeme teha ning kasutajaandmeid hõlpsalt integreerida ja volitada. Kombineerides avaliku pilve kõrge turvalisuse, skaleeritavuse ja töökindluse advanigatagEspressif käivitas privaatpilve ESP
19
RainMaker, sügavalt integreeritud privaatpilvelahendus, mis põhineb Amazoni pilvel. Kasutajad saavad juurutada ESP RainMakeri ja luua privaatpilve lihtsalt AWS-i kontoga.
3.1 Mis on ESP RainMaker?
ESP RainMaker on täielik AIoT-platvorm, mis on ehitatud mitme küpse AWS-i tootega. See pakub mitmesuguseid masstootmiseks vajalikke teenuseid, nagu juurdepääs seadme pilvele, seadme uuendamine, taustahaldus, kolmanda osapoole sisselogimine, häälega integreerimine ja kasutajahaldus. Kasutades AWS-i pakutavat serverivaba rakenduste hoidlat (SAR), saavad terminalitootjad kiiresti juurutada oma AWS-i kontodele ESP RainMakeri, mis on ajasäästlik ja hõlpsasti kasutatav. Espressifi hallatav ja hooldatav SAR, mida kasutab ESP RainMaker, aitab arendajatel vähendada pilvehoolduskulusid ja kiirendada AIoT-toodete arendamist, luues seeläbi turvalisi, stabiilseid ja kohandatavaid AIoT-lahendusi. Joonis 3.1 näitab ESP RainMakeri arhitektuuri.
Joonis 3.1. ESP RainMakeri arhitektuur
Espressifi avalik ESP RainMaker server on lahenduste hindamiseks kõigile ESP entusiastidele, tegijatele ja koolitajatele tasuta. Arendajad saavad sisse logida Apple'i, Google'i või GitHubi kontodega ja kiiresti luua oma IoT-rakenduste prototüüpe. Avalik server integreerib Alexa ja Google Home'i ning pakub hääljuhtimisteenuseid, mida toetavad Alexa Skill ja Google Actions. Selle semantilist tuvastamise funktsiooni kasutavad ka kolmandad osapooled. RainMaker IoT-seadmed reageerivad ainult konkreetsetele toimingutele. Toetatud häälkäskluste täieliku loendi vaatamiseks vaadake kolmandate osapoolte platvorme. Lisaks pakub Espressif kasutajatele avalikku rakendust RainMaker, mis võimaldab tooteid nutitelefonide kaudu juhtida. 20 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
3.2 ESP RainMakeri rakendamine
Nagu on näidatud joonisel 3.2, koosneb ESP RainMaker neljast osast: · Nõudeteenus, mis võimaldab RainMakeri seadmetel dünaamiliselt sertifikaate hankida. · RainMaker Cloud (tuntud ka kui pilve taustaprogramm), mis pakub selliseid teenuseid nagu sõnumite filtreerimine, kasutajahaldus, andmete salvestamine ja kolmandate osapoolte integreerimine. · RainMaker Agent, mis võimaldab RainMakeri seadmetel luua ühenduse RainMaker Cloudiga. · RainMaker Client (RainMaker App või CLI skriptid) etteandmiseks, kasutajate loomiseks, seadme seostamiseks ja juhtimiseks jne.
Joonis 3.2. ESP RainMakeri struktuur
ESP RainMaker pakub tootearenduse ja masstootmise jaoks täielikku tööriistakomplekti, sealhulgas: RainMaker SDK
RainMaker SDK põhineb ESP-IDF-il ja pakub püsivara arendamiseks seadmepoolse agendi ja seotud C API-de lähtekoodi. Arendajad peavad kirjutama ainult rakenduse loogika ja jätma ülejäänu RainMakeri raamistiku hooleks. C API-de kohta lisateabe saamiseks külastage aadressi https://bookc3.espressif.com/rm/c-api-reference. RainMaker App RainMaker Appi avalik versioon võimaldab arendajatel lõpetada seadme varustamise ning kontrollida ja päringuid teha seadmete olekut (nt nutikaid valgustustooteid). See on saadaval nii iOS-i kui ka Androidi rakenduste poodides. Lisateavet leiate peatükist 10. REST API-d REST API-d aitavad kasutajatel luua oma rakendusi sarnaselt RainMakeri rakendusega. Lisateabe saamiseks külastage aadressi https://swaggerapis.rainmaker.espressif.com/.
3. peatükk. ESP RainMaker 21 tutvustus
Pythoni API-d RainMakeri SDK-ga kaasas olev Pythoni-põhine CLI on ette nähtud kõigi nutitelefoni funktsioonidega sarnaste funktsioonide rakendamiseks. Pythoni API-de kohta lisateabe saamiseks külastage aadressi https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Kõrgema juurdepääsutasemega Admin CLI on ette nähtud ESP RainMakeri privaatseks juurutamiseks seadme sertifikaatide hulgi genereerimiseks.
3.2.1 Nõude esitamise teenus
Kogu side RainMakeri seadmete ja pilve taustaprogrammi vahel toimub MQTT+TLS-i kaudu. ESP RainMakeri kontekstis on "nõude esitamine" protsess, mille käigus seadmed hangivad nõudmisteenuselt sertifikaadid pilve taustaprogrammiga ühenduse loomiseks. Pange tähele, et nõudmisteenus on kohaldatav ainult avaliku RainMakeri teenuse puhul, samas kui privaatseks juurutamiseks tuleb seadme sertifikaadid luua administraatori CLI kaudu hulgi. ESP RainMaker toetab kolme tüüpi nõuete esitamise teenust: isenõude esitamine
Seade ise tõmbab pärast Interneti-ühenduse loomist sertifikaadid eFuse'is eelprogrammeeritud salajase võtme kaudu. Hostipõhine nõue Sertifikaadid saadakse arendushostilt RainMakeri kontoga. Abinõudmine Sertifikaadid hangitakse nutitelefoni rakenduste kaudu varustamise ajal.
3.2.2 RainMakeri agent
Joonis 3.3. RainMaker SDK struktuur RainMaker Agendi põhiülesanne on pakkuda ühenduvust ja aidata rakenduskihti töödelda üles-/allalingi pilvandmeid. See on loodud RainMaker SDK 22 ESP32-C3 Wireless Adventure kaudu: kõikehõlmav asjade Interneti juhend
ja välja töötatud tõestatud ESP-IDF raamistiku alusel, kasutades ESP-IDF komponente nagu RTOS, NVS ja MQTT. Joonis 3.3 näitab RainMaker SDK struktuuri.
RainMaker SDK sisaldab kahte peamist funktsiooni.
Ühendus
i. Seadme sertifikaatide hankimiseks tehke koostööd Claiming Service'iga.
ii. Ühenduse loomine pilve taustaprogrammiga turvalise MQTT-protokolli abil, et pakkuda kaugühendust ja rakendada kaugjuhtimist, sõnumite aruandlust, kasutajahaldust, seadmehaldust jne. See kasutab vaikimisi ESP-IDF-i MQTT komponenti ja pakub abstraktsioonikihti, et liidestada teistega. protokollivirnad.
iii. Wi-Fi pakkumise komponendi pakkumine Wi-Fi-ühenduse ja pakkumise jaoks, sp. https ota komponendi OTA versiooniuuenduste jaoks ja sp. kohalikku ctrl-komponenti kohaliku seadme tuvastamiseks ja ühendamiseks. Kõiki neid eesmärke saab saavutada lihtsa konfigureerimisega.
Andmetöötlus
i. Claiming Service'i väljastatud seadmesertifikaatide ja RainMakeri käitamiseks vajalike andmete salvestamine vaikimisi nvs flash-komponendi pakutava liidese abil ning API-de pakkumine arendajatele otseseks kasutamiseks.
ii. Tagasihelistamise mehhanismi kasutamine üles-/allalingi pilvandmete töötlemiseks ja andmete automaatne deblokeerimine rakenduskihti, et arendajad saaksid neid hõlpsalt töödelda. NäiteksampRainMaker SDK pakub rikkalikke liideseid TSL-i (Thing Specification Language) andmete loomiseks, mis on vajalikud TSL-i mudelite määratlemiseks, et kirjeldada IoT-seadmeid ja rakendada selliseid funktsioone nagu ajastus, pöördloendus ja hääljuhtimine. Põhiliste interaktiivsete funktsioonide (nt ajastus) jaoks pakub RainMaker SDK arendusvaba lahendust, mille saab vajadusel lihtsalt lubada. Seejärel töötleb RainMaker Agent andmeid otse, saadab need seotud MQTT teema kaudu pilve ja edastab tagasihelistamise mehhanismi kaudu pilve taustaprogrammi andmete muudatusi.
3.2.3 Pilve taustaprogramm
Pilvetaust on üles ehitatud AWS-i serverita andmetöötlusele ja saavutatakse AWS Cognito (identiteedihaldussüsteem), Amazon API Gateway, AWS Lambda (serverita andmetöötlusteenus), Amazon DynamoDB (NoSQL-i andmebaas), AWS IoT Core (IoT juurdepääsutuum, mis pakub MQTT-juurdepääsu) kaudu. ja reeglite filtreerimine), Amazon Simple Email Service (SES lihtpostiteenus), Amazon CloudFront (kiire kohaletoimetamise võrk), Amazon Simple Queue Service (SQS sõnumite järjekord) ja Amazon S3 (ämbrisalvestusteenus). Selle eesmärk on optimeerida skaleeritavust ja turvalisust. ESP RainMakeriga saavad arendajad seadmeid hallata ilma koodi pilve kirjutamata. Seadmete teatatud sõnumid edastatakse läbipaistvalt aadressile
3. peatükk. ESP RainMaker 23 tutvustus
rakenduskliendid või muud kolmanda osapoole teenused. Tabel 3.1 näitab pilve taustaprogrammis kasutatavaid AWS-i pilvetooteid ja -funktsioone ning rohkem tooteid ja funktsioone on arendamisel.
Tabel 3.1. AWS-i pilvetooted ja -funktsioonid, mida pilve taustaprogramm kasutab
RainMakeri kasutatav AWS-i pilvetoode
Funktsioon
AWS Cognito
Kasutajate mandaatide haldamine ja kolmandate osapoolte sisselogimiste toetamine
AWS lambda
Pilvetaustaprogrammi põhitegevuse loogika rakendamine
Amazon Timestream Aegridade andmete salvestamine
Amazon DynamoDB Klientide isikliku teabe salvestamine
AWS IoT Core
MQTT suhtluse toetamine
Amazon SES
Meili saatmisteenuste pakkumine
Amazon CloudFront Taustaprogrammi haldamise kiirendamine websaidi juurdepääs
Amazon SQS
AWS IoT Core'i sõnumite edastamine
3.2.4 RainMakeri klient
RainMakeri kliendid, nagu rakendus ja CLI, suhtlevad pilve taustaprogrammiga REST API-de kaudu. Üksikasjalikku teavet ja juhiseid REST API-de kohta leiate Espressifi pakutavast Swaggeri dokumentatsioonist. RainMakeri mobiilirakenduse klient on saadaval nii iOS-i kui ka Androidi süsteemidele. See võimaldab seadmeid ette valmistada, juhtida ja jagada, samuti luua ja lubada loendustoiminguid ning luua ühenduse kolmandate osapoolte platvormidega. See saab automaatselt laadida kasutajaliidese ja ikoone vastavalt seadmete teatatud konfiguratsioonile ning kuvada täielikult seadme TSL-i.
Näiteksample, kui nutikas valgusti on ehitatud RainMakeri SDK-ga pakutavale examples, laaditakse lambipirni ikoon ja kasutajaliides automaatselt, kui ettevalmistamine on lõpetatud. Kasutajad saavad liidese kaudu muuta valguse värvi ja heledust ning saavutada kolmanda osapoole kontrolli, linkides Alexa Smart Home Skill või Google Smart Home Actions oma ESP RainMakeri kontodega. Joonis 3.4 näitab ikooni ja kasutajaliidest, ntampLambi valgust vastavalt Alexas, Google Home'is ja ESP RainMaker Appis.
24 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
(a) Ntample – Alexa
(b) Ntample – Google'i avaleht
(c) Ntample – ESP RainMaker
Joonis 3.4. Näideampikooni ja pirni tule kasutajaliidese kasutamine Alexas, Google Home'is ja ESP RainMaker rakenduses
3.3 Harjutamine: ESP RainMakeriga arendamise põhipunktid
Kui seadme draiverikiht on valmis, võivad arendajad hakata looma TSL-i mudeleid ja töötlema allalingi andmeid, kasutades RainMaker SDK pakutavaid API-sid, ning lubama ESP RainMakeri põhiteenuseid toote määratluse ja nõuete alusel.
3. peatükk. ESP RainMaker 25 tutvustus
Selle raamatu jaotises 9.4 selgitatakse LED-nutivalgusti rakendamist RainMakeris. Silumise ajal saavad arendajad kasutada nutika valgusega suhtlemiseks RainMaker SDK CLI tööriistu (või helistada Swaggeri REST API-dele).
10. peatükis käsitletakse REST API-de kasutamist nutitelefoni rakenduste arendamisel. LED-nutitulede OTA-uuendusi käsitletakse peatükis 11. Kui arendajad on lubanud ESP Insightsi kaugseire, kuvab ESP RainMakeri haldustaustaprogramm ESP Insightsi andmed. Üksikasjad esitatakse 15. peatükis.
ESP RainMaker toetab privaatset juurutamist, mis erineb avalikust RainMakeri serverist järgmistel viisidel:
Nõudeteenus Sertifikaatide loomiseks privaatsetes juurutustes tuleb nõudmise asemel kasutada RainMakeri administraatori CLI-d. Avaliku serveri puhul tuleb arendajatele anda püsivara uuendamise juurutamiseks administraatoriõigused, kuid see on ärilistel juurutustel ebasoovitav. Seetõttu ei saa isenõude esitamiseks pakkuda eraldi autentimisteenust ega hostipõhise või abistatud nõude esitamise jaoks administraatoriõigusi.
Telefonirakendused Privaatsete juurutuste puhul tuleb rakendused eraldi konfigureerida ja kompileerida, et kontosüsteemid ei oleks koostalitlusvõimelised.
Kolmanda osapoole sisselogimised ja häälega integreerimine Arendajad peavad konfigureerima eraldi Google'i ja Apple'i arendajakontode kaudu, et võimaldada kolmanda osapoole sisselogimisi ning integreerida Alexa Skill ja Google Voice Assistant.
NÕUANDED Pilve juurutamise kohta lisateabe saamiseks külastage veebisaiti https://customer.rainmaker.espressif. com. Püsivara osas nõuab avalikust serverist privaatsesse serverisse migreerimine ainult seadme sertifikaatide väljavahetamist, mis parandab oluliselt migratsiooni tõhusust ning vähendab migratsiooni ja teisese silumise kulusid.
3.4 ESP RainMakeri omadused
ESP RainMakeri funktsioonid on peamiselt suunatud kolmele aspektile – kasutajahaldus, lõppkasutajad ja administraatorid. Kõiki funktsioone toetavad nii avalikud kui ka privaatsed serverid, kui pole öeldud teisiti.
3.4.1 Kasutajahaldus
Kasutajahaldusfunktsioonid võimaldavad lõppkasutajatel registreeruda, sisse logida, paroole muuta, paroole alla laadida jne.
26 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Registreerumine ja sisselogimine RainMakeri toetatavate registreerimis- ja sisselogimismeetodite hulka kuuluvad: · E-posti ID + parool · Telefoninumber + Parool · Google’i konto · Apple’i konto · GitHubi konto (ainult avalik server) · Amazoni konto (ainult privaatserver)
MÄRKUS Google'i kaudu registreerumine/Amazon jagab kasutaja e-posti aadressi RainMakeriga. Apple'i abil registreerumisel jagatakse näivat aadressi, mille Apple määrab kasutajale spetsiaalselt teenuse RainMaker jaoks. Google'i, Apple'i või Amazoni kontoga esimest korda sisse logivatele kasutajatele luuakse automaatselt RainMakeri konto.
Muuda parooli Kehtib ainult e-posti ID/telefoninumbri põhise sisselogimise korral. Kõik muud aktiivsed seansid logitakse pärast parooli muutmist välja. AWS Cognito käitumise kohaselt võivad väljalogitud seansid jääda aktiivseks kuni 1 tund.
Parooli toomine Kehtib ainult e-posti ID-l/telefoninumbril põhinevate sisselogimiste korral.
3.4.2 Lõppkasutaja funktsioonid
Lõppkasutajatele avatud funktsioonide hulka kuuluvad kohalik ja kaugjuhtimine ja jälgimine, ajastamine, seadmete rühmitamine, seadmete jagamine, tõukemärguanded ja kolmandate osapoolte integratsioonid.
Kaugjuhtimine ja jälgimine · Päring ühe või kõigi seadmete konfiguratsiooni, parameetrite väärtuste ja ühenduse oleku kohta. · Määrake parameetrid ühele või mitmele seadmele.
Kohalik juhtimine ja jälgimine Mobiiltelefon ja seade peavad olema ühendatud samasse võrku kohalikuks juhtimiseks.
Ajastamine · Kasutajad määravad teatud toimingud kindlal ajal. · Ajakava täitmisel pole seadme jaoks Interneti-ühendust vaja. · Üks kord või korrata (määrates päevad) ühe või mitme seadme puhul.
Seadmete rühmitamine Toetab mitmetasandilist abstraktset rühmitamist Grupi metaandmeid saab kasutada koduruumi struktuuri loomiseks.
3. peatükk. ESP RainMaker 27 tutvustus
Seadme jagamine Ühte või mitut seadet saab jagada ühe või mitme kasutajaga.
Tõukemärguanded Lõppkasutajad saavad tõukemärguandeid selliste sündmuste kohta nagu · Lisatud/eemaldatud uus(ad) seadme(d) · Pilvega ühendatud seade · Seadme ühendus pilvega katkestatud · Seadme jagamistaotlused on loodud/vastu võetud/keeldutud · Seadmete teatatud hoiatusteated
Kolmandate osapoolte integratsioone Alexa ja Google Voice Assistant toetatakse RainMakeri seadmete, sealhulgas tulede, lülitite, pistikupesade, ventilaatorite ja temperatuuriandurite juhtimiseks.
3.4.3 Administraatori funktsioonid
Administraatori funktsioonid võimaldavad administraatoritel rakendada seadme registreerimist, seadmete rühmitamist ja OTA versiooniuuendusi ning view statistika ja ESP Insightsi andmed.
Seadme registreerimine Looge seadme sertifikaadid ja registreeruge administraatori CLI-s (ainult privaatserveris).
Seadmete rühmitamine Looge seadme teabe põhjal abstraktseid või struktureeritud rühmi (ainult privaatserver).
Õhu kaudu (OTA) versiooniuuendused Laadige püsivara versiooni ja mudeli alusel üles ühte või mitmesse seadmesse või rühma Jälgige, tühistage või arhiivige OTA-töid.
View statistikat Viewvõimalik statistika sisaldab järgmist: · Seadme registreerimised (administraatori registreeritud sertifikaadid) · Seadme aktiveerimised (seade on esimest korda ühendatud) · Kasutajakontod · Kasutaja-seadme seos
View ESP Insightsi andmed Viewvõimalikud ESP Insightsi andmed hõlmavad järgmist: · Vead, hoiatused ja kohandatud logid · Krahhiaruanded ja analüüs · Taaskäivitamise põhjused · Mõõdikud, nagu mälukasutus, RSSI jne. · Kohandatud mõõdikud ja muutujad
28 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
3.5 Kokkuvõte
Selles peatükis tutvustasime mõningaid olulisi erinevusi avaliku RainMakeri juurutamise ja privaatse juurutamise vahel. Espressifi käivitatud privaatne ESP RainMaker lahendus on väga töökindel ja laiendatav. Kõik ESP32 seeria kiibid on ühendatud ja kohandatud AWS-iga, mis vähendab oluliselt kulusid. Arendajad saavad keskenduda prototüübi kinnitamisele, ilma et peaksid AWS-i pilvetooteid tundma õppima. Samuti selgitasime ESP RainMakeri rakendamist ja funktsioone ning mõningaid põhipunkte platvormi kasutades arendamiseks.
Skannige, et alla laadida ESP RainMaker Androidile Skannige ESP RainMaker iOS-i allalaadimiseks
3. peatükk. ESP RainMaker 29 tutvustus
30 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Peatükk Seadistamine 4 Arenduskeskkond
See peatükk keskendub ESP-IDF-ile, ESP32-C3 ametlikule tarkvaraarendusraamistikule. Selgitame, kuidas seadistada keskkonda erinevatel operatsioonisüsteemidel ning tutvustame ESP-IDF projektistruktuuri ja ehitussüsteemi ning sellega seotud arendustööriistade kasutamist. Seejärel tutvustame endise kompileerimis- ja käitamisprotsessiample projekti, pakkudes samal ajal üksikasjalikku selgitust väljundlogi kohta igal stage.
4.1 ESP-IDF üleview
ESP-IDF (Espressif IoT Development Framework) on Espressif Technology pakutav IoT arendusraamistik. See kasutab peamise arenduskeelena C/C++ ja toetab ristkompileerimist tavalistes operatsioonisüsteemides, nagu Linux, Mac ja Windows. Endineampselles raamatus sisalduvad programmid on välja töötatud ESP-IDF-i abil, mis pakub järgmisi funktsioone: · SoC süsteemitaseme draiverid. ESP-IDF sisaldab draivereid ESP32, ESP32-S2, ESP32-C3,
ja muud kiibid. Need draiverid hõlmavad perifeerset madala taseme (LL) teeki, riistvara abstraktsioonikihi (HAL) teeki, RTOS-i tuge ja ülemise kihi draiveritarkvara jne. · Olulised komponendid. ESP-IDF sisaldab IoT arendamiseks vajalikke põhikomponente. See hõlmab mitut võrguprotokolli virna (nt HTTP ja MQTT), dünaamilise sagedusmodulatsiooniga toitehaldusraamistikku ja funktsioone, nagu välkkrüptimine ja turvaline alglaadimine jne. · Arendus- ja tootmistööriistad. ESP-IDF pakub arenduse ja masstootmise ajal tavaliselt kasutatavaid tööriistu ehitamiseks, välguks ja silumiseks (vt joonis 4.1), näiteks CMake-il põhinev ehitussüsteem, GCC-l põhinev ristkompileerimise tööriistaahel ja JTAG Silumistööriist, mis põhineb OpenOCD-l jne. Väärib märkimist, et ESP-IDF kood järgib peamiselt Apache 2.0 avatud lähtekoodiga litsentsi. Kasutajad saavad piiranguteta arendada isiklikku või kommertstarkvara, järgides samal ajal avatud lähtekoodiga litsentsi tingimusi. Lisaks antakse kasutajatele alalised patendilitsentsid tasuta, ilma kohustuseta lähtekoodis tehtud muudatusi avatud lähtekoodiga kasutada.
31
Joonis 4.1.
Ehitamine, vilkumine ja silumine
arendus- ja masstootmise tööriistad
4.1.1 ESP-IDF versioonid
ESP-IDF koodi hostitakse GitHubis avatud lähtekoodiga projektina. Praegu on saadaval kolm peamist versiooni: v3, v4 ja v5. Iga suurem versioon sisaldab tavaliselt erinevaid alamversioone, nagu v4.2, v4.3 jne. Espressif Systems tagab iga välja antud alamversiooni veaparanduste ja turvapaikade 30-kuulise toe. Seetõttu antakse regulaarselt välja ka alaversioonide versioone, nagu v4.3.1, v4.2.2 jne. Tabel 4.1 näitab erinevate ESP-IDF-i versioonide toe olekut Espressifi kiipide jaoks, näidates, kas need on eelversioonis.view stage (toe pakkumine eelview versioonid, millel võivad puududa teatud funktsioonid või dokumentatsioon) või on ametlikult toetatud.
Tabel 4.1. Espressifi kiipide erinevate ESP-IDF versioonide toe olek
Seeria ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 toetatud
Toetatud v4.2
v4.3 toetatud toetatud toetatud
v4.4 toetatud toetatud toetatud toetatud
eelview
v5.0 toetatud toetatud toetatud toetatud toetatud eelview
32 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Peamiste versioonide iteratsioon hõlmab sageli raamistiku struktuuri kohandamist ja kompileerimissüsteemi värskendamist. Näiteksample, peamine muudatus versioonilt v3.* versioonile v4.* oli ehitussüsteemi järkjärguline üleminek versioonilt Make versioonile CMake. Teisest küljest tähendab väiksemate versioonide iteratsioon tavaliselt uute funktsioonide lisamist või uute kiipide toetamist.
Oluline on eristada ja mõista stabiilsete versioonide ja GitHubi filiaalide vahelisi seoseid. Versioonid, mis on märgistatud kui v*.* või v*.*.*, tähistavad stabiilseid versioone, mis on läbinud Espressifi täieliku sisetesti. Pärast parandamist jäävad sama versiooni kood, tööriistakett ja väljalaskedokumendid muutumatuks. GitHubi filiaalid (nt väljalaske/v4.3 haru) läbivad aga sagedasi, sageli iga päev, koodi sisestamise. Seetõttu võivad kaks sama haru all olevat koodilõiku erineda, mistõttu peavad arendajad oma koodi viivitamatult vastavalt värskendama.
4.1.2 ESP-IDF Git Workflow
Espressif järgib ESP-IDF jaoks spetsiifilist Giti töövoogu, mis on kirjeldatud järgmiselt:
· Põhiharus, mis toimib peamise arendusharuna, tehakse uued muudatused. Põhiharu ESP-IDF versioon kannab alati -dev tag näitamaks, et see on praegu väljatöötamisel, näiteks v4.3-dev. Põhiharu muudatused tehakse esmalt uuestiviewredigeeritud ja testitud Espressifi sisemises hoidlas ning seejärel surutud GitHubisse pärast automaatse testimise lõppu.
· Kui uus versioon on põhiharus funktsioonide arendamise lõpetanud ja täitnud beetatestimise kriteeriumid, läheb see üle uude harusse, näiteks release/ v4.3. Lisaks on see uus haru tagged väljalaskeeelse versioonina, nagu v4.3-beta1. Arendajad saavad viidata GitHubi platvormile, et pääseda juurde filiaalide täielikule loendile ja tags ESP-IDF jaoks. Oluline on märkida, et beetaversioonil (väljalaskeeelsel versioonil) võib siiski olla märkimisväärne hulk teadaolevaid probleeme. Kuna beetaversiooni testitakse pidevalt, lisatakse veaparandused nii sellele versioonile kui ka põhiharule korraga. Vahepeal võib põhiharu olla juba alustanud järgmise versiooni uute funktsioonide väljatöötamist. Kui testimine on peaaegu lõppenud, lisatakse harule väljalaskekandidaat (rc) silt, mis näitab, et see on potentsiaalne kandidaat ametlikule väljalasele, näiteks v4.3-rc1. Sellel stage, haru jääb väljalaskeeelseks versiooniks.
· Kui suuri vigu ei avastata ega teatata, saab väljalaskeeelne versioon lõpuks suurema versiooni sildi (nt v5.0) või väiksema versiooni sildi (nt v4.3) ja sellest saab ametlik väljalaskeversioon, mis dokumenteeritakse väljalaskemärkmete lehel. Seejärel parandatakse väljalaskeharus kõik selles versioonis tuvastatud vead. Pärast käsitsi testimise lõpetamist omistatakse harule veaparanduse versiooni silt (nt v4.3.2), mis kajastub ka väljalaskemärkmete lehel.
4. peatükk. Arenduskeskkonna seadistamine 33
4.1.3 Sobiva versiooni valimine
Kuna ESP-IDF alustas ametlikult ESP32-C3 toetamist versioonist v4.3 ja v4.4 ei ole selle raamatu kirjutamise ajal veel ametlikult välja antud, on selles raamatus kasutatud versioon v4.3.2, mis on muudetud versioon. versioonist 4.3. Siiski on oluline tähele panna, et selle raamatu lugemise ajaks võivad v4.4 või uuemad versioonid juba saadaval olla. Versiooni valimisel soovitame järgmist.
· Algtaseme arendajatel on soovitatav valida stabiilne versioon 4.3 või selle muudetud versioon, mis ühtib endise versioonigaampselles raamatus kasutatud versioon.
· Masstootmise eesmärgil on soovitatav kasutada uusimat stabiilset versiooni, et saada kasu kõige ajakohasemast tehnilisest toest.
· Kui kavatsete katsetada uusi kiipe või uurida uusi tootefunktsioone, kasutage põhiharu. Uusim versioon sisaldab kõiki uusimaid funktsioone, kuid pidage meeles, et esineda võib teadaolevaid või tundmatuid vigu.
· Kui kasutatav stabiilne versioon ei sisalda soovitud uusi funktsioone ja soovite minimeerida põhiharuga seotud riske, kaaluge vastava väljalaskeharu, näiteks väljalase/v4.4 haru kasutamist. Espressifi GitHubi hoidla loob esmalt väljalaske/v4.4 haru ja seejärel annab pärast kogu funktsioonide arendamise ja testimise lõpetamist selle haru konkreetse ajaloolise ülevaate põhjal välja stabiilse versiooni v4.4.
4.1.4 Üleview ESP-IDF SDK kataloogist
ESP-IDF SDK koosneb kahest peamisest kataloogist: esp-idf ja .espressif. Esimene sisaldab ESP-IDF hoidla lähtekoodi files ja kompileerimisskriptid, samas kui viimane salvestab peamiselt kompileerimistööriistade kette ja muud tarkvara. Nende kahe kataloogi tundmine aitab arendajatel olemasolevaid ressursse paremini kasutada ja arendusprotsessi kiirendada. ESP-IDF kataloogistruktuuri kirjeldatakse allpool:
(1) ESP-IDF hoidla koodikataloog (/esp/esp-idf), nagu on näidatud joonisel 4.2.
a. Komponentide kataloogi komponendid
See põhikataloog integreerib arvukalt olulisi ESP-IDF tarkvarakomponente. Ühtegi projekti koodi ei saa koostada ilma selle kataloogi komponentidele tuginemata. See sisaldab draiverite tuge erinevatele Espressifi kiipidele. Alates LL-teegi ja HAL-i teegi liidestest välisseadmete jaoks kuni kõrgema taseme draiveri ja virtuaalseni File Süsteemi (VFS) kihi tugi võimaldab arendajatel valida oma arendusvajadustele vastavad komponendid erinevatel tasanditel. ESP-IDF toetab ka mitut standardset võrguprotokolli virna, nagu TCP/IP, HTTP, MQTT, WebSocket jne. Arendajad saavad võrgurakenduste loomiseks kasutada tuttavaid liideseid, nagu Socket. Komponendid annavad arusaama
34 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Joonis 4.2. ESP-IDF hoidla koodikataloog
funktsioonid ja neid saab hõlpsasti rakendustesse integreerida, võimaldades arendajatel keskenduda ainult äriloogikale. Mõned levinumad komponendid on järgmised: · draiver: see komponent sisaldab erinevate Espressifi välisseadmete draiveriprogramme
kiibiseeriad, nagu GPIO, I2C, SPI, UART, LEDC (PWM) jne. Selle komponendi välisseadmete draiveriprogrammid pakuvad kiibist sõltumatuid abstraktseid liideseid. Igal välisseadmel on ühine päis file (nt gpio.h), kaotades vajaduse tegeleda erinevate kiibispetsiifiliste tugiküsimustega. · esp_wifi: Wi-Fi-d kui spetsiaalset välisseadet käsitletakse eraldi komponendina. See sisaldab mitut API-d, nagu erinevate Wi-Fi draiverirežiimide lähtestamine, parameetrite konfigureerimine ja sündmuste töötlemine. Selle komponendi teatud funktsioonid on saadaval staatiliste linkide teekide kujul. ESP-IDF pakub kasutamise hõlbustamiseks ka põhjalikku draiveri dokumentatsiooni.
4. peatükk. Arenduskeskkonna seadistamine 35
· freertos: see komponent sisaldab täielikku FreeRTOS-koodi. Peale selle operatsioonisüsteemi igakülgse toe pakkumise on Espressif laiendanud oma tuge ka kahetuumalistele kiipidele. Kahetuumaliste kiipide jaoks, nagu ESP32 ja ESP32-S3, saavad kasutajad luua ülesandeid kindlatele tuumadele.
b. Dokumendikataloogi dokumendid
See kataloog sisaldab ESP-IDF-iga seotud arendusdokumente, sealhulgas alustusjuhendit, API teatmekäsiraamatut, arendusjuhendit jne.
MÄRKUS. Pärast automatiseeritud tööriistadega kompileerimist juurutatakse selle kataloogi sisu aadressil https://docs.espressif.com/projects/esp-idf. Veenduge, et lülitate dokumendi sihtmärgiks ESP32-C3 ja valige määratud ESP-IDF versioon.
c. Skripti tööriista tööriistad
See kataloog sisaldab tavaliselt kasutatavaid kompileerimise esiotsa tööriistu, nagu idf.py ja monitori terminali tööriista idf_monitor.py jne. Alamkataloog cmake sisaldab ka põhiskripti files kompileerimissüsteemist, mis on aluseks ESP-IDF kompileerimisreeglite rakendamisele. Keskkonnamuutujate lisamisel lisatakse tööriistade kataloogi sisu süsteemi keskkonnamuutujale, võimaldades faili idf.py käivitada otse projekti tee all.
d. Ntample programmikataloog examples
See kataloog sisaldab suurt hulka ESP-IDF example programmid, mis demonstreerivad komponentide API-de kasutamist. Endineamples on jaotatud erinevatesse alamkataloogidesse nende kategooriate alusel:
· alustamine: see alamkataloog sisaldab algtaseme exampnagu "tere maailm" ja "pilgutamine", et aidata kasutajatel põhitõdesid mõista.
· Bluetooth: leiate Bluetoothiga seotud ntampsiin, sealhulgas Bluetooth LE Mesh, Bluetooth LE HID, BluFi ja palju muud.
· wifi: see alamkataloog keskendub näiteks Wi-Fi-leamples, sealhulgas põhiprogrammid, nagu Wi-Fi SoftAP, Wi-Fi Station, espnow, samuti patenteeritud sideprotokoll, ntamples Espressifist. See sisaldab ka mitut rakenduskihti, ntamppõhinevad Wi-Fi-l, nagu Iperf, Sniffer ja Smart Config.
· Välisseadmed: see ulatuslik alamkataloog on välisseadmete nimede alusel jagatud veel arvukateks alamkaustadeks. See sisaldab peamiselt väliseid draivereid examples Espressifi kiipide jaoks, iga eksample, milles on mitu alam-eksamples. Näiteks gpio alamkataloog sisaldab kahte ntamples: GPIO ja GPIO maatriksklaviatuur. Oluline on märkida, et mitte kõik endisedampselles kataloogis olevad leed kehtivad ESP32-C3 jaoks.
36 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Näiteksample, endineampusb/hosti les kehtivad ainult USB-hosti riistvaraga välisseadmetele (nt ESP32-S3) ja ESP32-C3-l seda välisseadet pole. Kompileerimissüsteem annab tavaliselt eesmärgi seadmisel viipasid. README file igast eksample loetleb toetatud kiibid. · protokollid: see alamkataloog sisaldab ntamples erinevate sideprotokollide jaoks, sealhulgas MQTT, HTTP, HTTP server, PPPoS, Modbus, mDNS, SNTP, mis hõlmab laia valikut sideprotokolle, ntampIoT arendamiseks on vaja vähem. · Ettevalmistus: siit leiate varustuse ntamples erinevate meetodite jaoks, nagu Wi-Fi pakkumine ja Bluetooth LE pakkumine. · system: see alamkataloog sisaldab süsteemi silumist ntamples (nt virna jälgimine, käitusaja jälgimine, ülesannete jälgimine), toitehaldus ntamples (nt erinevad puhkerežiimid, kaasprotsessorid) ja ntampvähem seotud tavaliste süsteemikomponentidega, nagu konsooli terminal, sündmuste ahel ja süsteemi taimer. · ladustamine: selles alamkataloogis leiate ntampvähem kõigist file ESP-IDF-i toetatud süsteemid ja salvestusmehhanismid (nagu Flashi, SD-kaardi ja muude andmekandjate lugemine ja kirjutamine), samuti ntampvähem püsimälu (NVS), FatFS, SPIFFS ja muud file süsteemi toimingud. · turvalisus: see alamkataloog sisaldab ntampvähem seotud välkkrüptimisega. (2) ESP-IDF kompileerimistööriistade ahela kataloog (/.espressif), nagu on näidatud joonisel 4.3.
Joonis 4.3. ESP-IDF kompileerimistööriistade ketikataloog
4. peatükk. Arenduskeskkonna seadistamine 37
a. Tarkvara levitamise kataloog dist
ESP-IDF tööriistaketti ja muud tarkvara levitatakse tihendatud pakettidena. Installimise käigus laadib installitööriist esmalt kokkusurutud paketi alla dist-kataloogi ja seejärel ekstraktib selle määratud kataloogi. Kui installimine on lõppenud, saab selle kataloogi sisu ohutult eemaldada.
b. Pythoni virtuaalse keskkonna kataloog python env
ESP-IDF-i erinevad versioonid tuginevad Pythoni pakettide konkreetsetele versioonidele. Nende pakettide installimine otse samasse hosti võib põhjustada konflikte paketi versioonide vahel. Selle lahendamiseks kasutab ESP-IDF Pythoni virtuaalseid keskkondi, et eraldada erinevad paketiversioonid. Selle mehhanismi abil saavad arendajad installida samasse hosti mitu ESP-IDF-i versiooni ja hõlpsalt nende vahel vahetada, importides erinevaid keskkonnamuutujaid.
c. ESP-IDF kompileerimistööriistade ketikataloogi tööriistad
See kataloog sisaldab peamiselt ESP-IDF projektide kompileerimiseks vajalikke ristkompileerimistööriistu, nagu CMake'i tööriistad, Ninja ehitustööriistad ja gcc tööriistaahel, mis loob lõpliku käivitatava programmi. Lisaks sisaldab see kataloog C/C++ keele standardteeki koos vastava päisega files. Kui programm viitab süsteemi päisele file nagu #include , leiab koostamise tööriistakett faili stdio.h file selles kataloogis.
4.2 ESP-IDF arenduskeskkonna seadistamine
ESP-IDF arenduskeskkond toetab tavalisi operatsioonisüsteeme, nagu Windows, Linux ja macOS. Selles jaotises tutvustatakse, kuidas igas süsteemis arenduskeskkonda seadistada. Soovitatav on arendada ESP32-C3 Linuxi süsteemis, mida siin üksikasjalikult tutvustatakse. Paljud juhised on arendustööriistade sarnasuse tõttu rakendatavad platvormide vahel. Seetõttu on soovitatav selle jaotise sisu hoolikalt läbi lugeda.
MÄRKUS Võite vaadata veebidokumente, mis on saadaval aadressil https://bookc3.espressif.com/esp32c3 ja sisaldavad selles jaotises mainitud käske.
4.2.1 ESP-IDF arenduskeskkonna seadistamine Linuxis
ESP-IDF arenduskeskkonna jaoks vajalikud GNU arendus- ja silumistööriistad on Linuxi süsteemi algsed. Lisaks on Linuxi käsurea terminal võimas ja kasutajasõbralik, mistõttu on see ideaalne valik ESP32-C3 arendamiseks. Sa saad
38 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
valige oma eelistatud Linuxi distributsioon, kuid soovitame kasutada Ubuntu või muid Debianil põhinevaid süsteeme. See jaotis annab juhiseid ESP-IDF arenduskeskkonna seadistamiseks Ubuntu 20.04 jaoks.
1. Installige vajalikud paketid
Avage uus terminal ja käivitage kõigi vajalike pakettide installimiseks järgmine käsk. Käsk jätab automaatselt vahele juba installitud paketid.
$ 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
NÕUANDED Peate ülaltoodud käsu jaoks kasutama administraatori kontot ja parooli. Vaikimisi parooli sisestamisel teavet ei kuvata. Protseduuri jätkamiseks vajutage lihtsalt sisestusklahvi.
Git on ESP-IDF võtmekoodihaldustööriist. Pärast arenduskeskkonna edukat seadistamist saate kasutada käsku git log view kõik koodimuudatused, mis on tehtud pärast ESP-IDF loomist. Lisaks kasutatakse Giti ka ESP-IDF-is versiooniteabe kinnitamiseks, mis on vajalik konkreetsetele versioonidele vastava õige tööriistaahela paigaldamiseks. Lisaks Gitile hõlmavad muud olulised süsteemitööriistad Pythonit. ESP-IDF sisaldab arvukalt Pythonis kirjutatud automatiseerimisskripte. Selliseid tööriistu nagu CMake, Ninja-build ja Ccache kasutatakse laialdaselt C/C++ projektides ning need on ESP-IDF-i vaikekoodide koostamise ja koostamise tööriistad. libusb-1.0-0 ja dfu-util on peamised draiverid, mida kasutatakse USB-jadaside ja püsivara kirjutamiseks. Kui tarkvarapaketid on installitud, saate apt show'i kasutada iga paketi üksikasjaliku kirjelduse saamiseks. Näiteksample, kasutage Giti tööriista kirjeldusteabe printimiseks käsku apt show git.
K: Mida teha, kui Pythoni versiooni ei toetata? V: ESP-IDF v4.3 nõuab Pythoni versiooni, mis ei ole vanem kui v3.6. Ubuntu vanemate versioonide puhul laadige käsitsi alla ja installige Pythoni kõrgem versioon ning määrake Python3 vaikekeskkonnaks. Üksikasjalikud juhised leiate, kui otsite märksõna update-alternatives python.
2. Laadige alla ESP-IDF hoidla kood
Avage terminal ja looge oma kodukataloogis kaust nimega esp, kasutades käsku mkdir. Soovi korral saate valida kaustale muu nime. Kasutage kausta sisenemiseks käsku cd.
4. peatükk. Arenduskeskkonna seadistamine 39
$ mkdir -p /esp $ cd /esp
Kasutage ESP-IDF hoidla koodi allalaadimiseks käsku git clone, nagu allpool näidatud:
$ git kloon -b v4.3.2 – rekursiivne https://github.com/espressif/esp-idf.git
Ülaltoodud käsus määrab parameeter -b v4.3.2 allalaaditava versiooni (antud juhul versiooni 4.3.2). Parameeter –recursive tagab, et kõik ESP-IDF alamhoidlad laaditakse alla rekursiivselt. Teavet alamhoidlate kohta leiate failist .gitmodules file.
3. Installige ESP-IDF arendustööriistade kett
Espressif pakub tööriistaahela allalaadimiseks ja installimiseks automatiseeritud skripti install.sh. See skript kontrollib praegust ESP-IDF versiooni ja operatsioonisüsteemi keskkonda ning seejärel laadib alla ja installib Pythoni tööriistapakettide ja kompileerimistööriistade kettide sobivad versioonid. Tööriistaahela vaikepaigaldustee on /.espressif. Kõik, mida pead tegema, on navigeerida esp-idf kataloogi ja käivitada install.sh.
$ cd /esp/esp-idf $ ./install.sh
Kui installite tööriistaketi edukalt, kuvatakse terminalis:
Kõik tehtud!
Siinkohal olete edukalt seadistanud ESP-IDF arenduskeskkonna.
4.2.2 ESP-IDF arenduskeskkonna seadistamine Windowsis
1. Laadige alla ESP-IDF tööriistade installer
NÕUANDED Soovitatav on seadistada ESP-IDF arenduskeskkond opsüsteemis Windows 10 või uuemas versioonis. Installeri saate alla laadida aadressilt https://dl.espressif.com/dl/esp-idf/. Installer on ka avatud lähtekoodiga tarkvara ja selle lähtekood võib olla viewvälja antud aadressil https://github.com/espressif/idf-installer.
· Online ESP-IDF tööriistade installija
See installer on suhteliselt väike, umbes 4 MB suurune ning teised paketid ja kood laaditakse alla installiprotsessi käigus. AdvantagVeebipaigaldaja eesmärk on mitte ainult tarkvarapakettide ja koodide allalaadimine nõudmisel installiprotsessi ajal, vaid see võimaldab installida ka kõik saadaolevad ESP-IDF-i versioonid ja GitHubi koodi uusima haru (nt põhiharu) . Disadvantage on see, et see nõuab installiprotsessi ajal võrguühendust, mis võib võrguprobleemide tõttu põhjustada installitõrkeid.
40 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
· Võrguühenduseta ESP-IDF tööriistade installija See installija on suurem, umbes 1 GB suurune ja sisaldab kõiki keskkonna seadistamiseks vajalikke tarkvarapakette ja koodi. Peamine advantagVõrguühenduseta installija eeliseks on see, et seda saab kasutada Interneti-ühenduseta arvutites ja selle installimise edukuse määr on üldiselt suurem. Tuleb märkida, et võrguühenduseta installija saab installida ainult ESP-IDF stabiilseid versioone, mis on identifitseeritud v*.* või v*.*.*.
2. Käivitage ESP-IDF tööriistade installer Pärast installeri sobiva versiooni allalaadimist (näiteks kasutage ESP-IDF Tools Offline 4.3.2ample siin), topeltklõpsake failil exe file ESP-IDF installiliidese käivitamiseks. Järgnevalt näidatakse, kuidas installida ESP-IDF stabiilne versioon v4.3.2 võrguühenduseta installija abil.
(1) Valige joonisel 4.4 näidatud liideses "Vali installikeel" ripploendist kasutatav keel.
Joonis 4.4. Liides „Vali installikeel“ (2) Pärast keele valimist klõpsake „OK“, et kuvada liides „Litsentsileping“
(vt joonis 4.5). Pärast installilitsentsilepingu hoolikat lugemist valige "Nõustun lepinguga" ja klõpsake nuppu "Järgmine".
Joonis 4.5. “Litsentsileping” liides Peatükk 4. Arenduskeskkonna seadistamine 41
(3) Review süsteemi konfiguratsiooni liideses "Installieelse süsteemi kontroll" (vt joonis 4.6). Kontrollige Windowsi versiooni ja installitud viirusetõrjetarkvara teavet. Kui kõik konfiguratsioonielemendid on normaalsed, klõpsake nuppu "Järgmine". Vastasel juhul võite võtmeüksustel põhinevate lahenduste vaatamiseks klõpsata valikul „Täielik logi”.
Joonis 4.6. "Süsteemi kontroll enne installimist" liidese NÕUANDED
Abi saamiseks võite logid saata aadressil https://github.com/espressif/idf-installer/issues. (4) Valige ESP-IDF installikataloog. Siin valige D:/.espressif, nagu näidatud
Joonis 4.7 ja klõpsake nuppu "Järgmine". Pange tähele, et .espressif on siin peidetud kataloog. Kui installimine on lõpetatud, saate seda teha view selle kataloogi konkreetset sisu avades file haldur ja peidetud üksuste kuvamine.
Joonis 4.7. Valige ESP-IDF installikataloog 42 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
(5) Kontrollige komponente, mida on vaja paigaldada, nagu näidatud joonisel 4.8. Soovitatav on kasutada vaikevalikut, st lõpetada installimine ja seejärel vajutada nuppu "Järgmine".
Joonis 4.8. Valige installitavad komponendid (6) Kinnitage installitavad komponendid ja klõpsake automaatse installimise käivitamiseks nuppu "Install".
seiskamisprotsess, nagu on näidatud joonisel 4.9. Installiprotsess võib kesta kümneid minuteid ja installiprotsessi edenemisriba on näidatud joonisel 4.10. Palun oodake kannatlikult.
Joonis 4.9. Paigaldamise ettevalmistamine (7) Pärast installimise lõpetamist on soovitatav kontrollida „Registreeri ESP-IDF
Tööriistade käivitatavad failid Windows Defenderi välistustena…”, et vältida viirusetõrjetarkvara kustutamist files. Välistamisüksuste lisamine võib ka sagedased viirusetõrjekontrollid vahele jätta
4. peatükk. Arenduskeskkonna seadistamine 43
Joonis 4.10. Installimise edenemisriba tarkvara, mis parandab oluliselt Windowsi süsteemi koodide koostamise tõhusust. Arenduskeskkonna installimise lõpuleviimiseks klõpsake nuppu "Lõpeta", nagu on näidatud joonisel 4.11. Saate valida, kas märkida "Käivita ESP-IDF PowerShelli keskkond" või "Käivita ESP-IDF käsurida". Käivitage kompileerimisaken kohe pärast installimist, et tagada arenduskeskkonna normaalne toimimine.
Joonis 4.11. Installimine lõpetatud (8) Avage installitud arenduskeskkond programmide loendis (kas ESP-IDF 4.3
CMD või ESP-IDF 4.3 PowerShelli terminal, nagu on näidatud joonisel 4.12), ja ESP-IDF keskkonnamuutuja lisatakse terminalis töötades automaatselt. Pärast seda saate toimingute tegemiseks kasutada käsku idf.py. Avatud ESP-IDF 4.3 CMD on näidatud joonisel 4.13. 44 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
Joonis 4.12. Paigaldatud arenduskeskkond
Joonis 4.13. ESP-IDF 4.3 CMD
4.2.3 ESP-IDF arenduskeskkonna seadistamine Macis
ESP-IDF arenduskeskkonna installimine Maci süsteemi on sama, mis Linuxi süsteemis. Hoidla koodi allalaadimise ja tööriistaahela installimise käsud on täpselt samad. Ainult sõltuvuspakettide installimise käsud on veidi erinevad. 1. Sõltuvuspakettide installimine Avage terminal ja installige Pythoni paketihaldustööriist pip, käivitades järgmise käsu:
% sudo lihtne paigaldada pip
Installige MacOS-i paketihaldustööriist Homebrew, käivitades järgmise käsu:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Installige vajalikud sõltuvuspaketid, käivitades järgmise käsu:
% brew python3 installi cmake ninja ccache dfu-util
2. ESP-IDF hoidla koodi allalaadimine Järgige ESP-IDF hoidla koodi allalaadimiseks jaotises 4.2.1 toodud juhiseid. Toimingud on samad, mis Linuxi süsteemi allalaadimisel.
4. peatükk. Arenduskeskkonna seadistamine 45
3. Installige ESP-IDF arendustööriistade kett
ESP-IDF arendustööriistade ahela installimiseks järgige jaotises 4.2.1 toodud juhiseid. Toimingud on samad, mis Linuxi süsteemi installimisel.
4.2.4 VS-koodi installimine
Vaikimisi ei sisalda ESP-IDF SDK koodi redigeerimise tööriista (kuigi uusim Windowsi ESP-IDF installiprogramm pakub võimalust installida ESP-IDF Eclipse). Koodi redigeerimiseks ja seejärel terminali käskude abil kompileerimiseks saate kasutada mis tahes teksti redigeerimise tööriista.
Üks populaarne koodi redigeerimise tööriist on VS Code (Visual Studio Code), mis on tasuta ja funktsioonirikas kasutajasõbraliku liidesega koodiredaktor. See pakub erinevaid plugins mis pakuvad selliseid funktsioone nagu koodi navigeerimine, süntaksi esiletõstmine, Giti versioonikontroll ja terminali integreerimine. Lisaks on Espressif välja töötanud spetsiaalse pistikprogrammi nimega Espressif IDF VS Code jaoks, mis lihtsustab projekti konfigureerimist ja silumist.
Saate kasutada terminali koodikäsku, et kiiresti avada VS Code praegune kaust. Teise võimalusena saate VS-koodis süsteemi vaiketerminali konsooli avamiseks kasutada otseteed Ctrl+.
NÕUANDED ESP32-C3 koodi arendamiseks on soovitatav kasutada VS-koodi. Laadige alla ja installige VS Code uusim versioon aadressilt https://code.visualstudio.com/.
4.2.5 Sissejuhatus kolmandate osapoolte arenduskeskkondadesse
Lisaks ametlikule ESP-IDF arenduskeskkonnale, mis kasutab peamiselt C-keelt, toetab ESP32-C3 ka teisi tavalisi programmeerimiskeeli ja laia valikut kolmandate osapoolte arenduskeskkondi. Mõned märkimisväärsed valikud hõlmavad järgmist:
Arduino: avatud lähtekoodiga platvorm nii riist- kui ka tarkvarale, mis toetab erinevaid mikrokontrollereid, sealhulgas ESP32-C3.
See kasutab C++ keelt ning pakub lihtsustatud ja standardiseeritud API-d, mida tavaliselt nimetatakse Arduino keeleks. Arduinot kasutatakse laialdaselt prototüüpide arendamiseks ja hariduslikes kontekstides. See pakub laiendatavat tarkvarapaketti ja IDE-d, mis võimaldavad hõlpsat kompileerimist ja vilkumist.
MicroPython: Python 3 keeletõlk, mis on loodud manustatud mikrokontrolleri platvormidel töötamiseks.
Lihtsa skriptikeelega pääseb see otse juurde ESP32-C3 välisseadmetele (nagu UART, SPI ja I2C) ja sidefunktsioonidele (nt Wi-Fi ja Bluetooth LE).
46 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
See lihtsustab riistvara interaktsiooni. MicroPython koos Pythoni ulatusliku matemaatiliste operatsioonide teegiga võimaldab ESP32-C3-l rakendada keerulisi algoritme, hõlbustades tehisintellektiga seotud rakenduste arendamist. Skriptikeelena puudub vajadus korduvaks kompileerimiseks; muudatusi saab teha ja skripte saab otse käivitada.
NodeMCU: ESP-seeria kiipide jaoks välja töötatud LUA keeletõlk.
See toetab peaaegu kõiki ESP-kiipide välisfunktsioone ja on MicroPythonist kergem. Sarnaselt MicroPythoniga kasutab NodeMCU skriptikeelt, mis välistab vajaduse korduva kompileerimise järele.
Lisaks toetab ESP32-C3 ka operatsioonisüsteeme NuttX ja Zephyr. NuttX on reaalajas töötav operatsioonisüsteem, mis pakub POSIX-iga ühilduvaid liideseid, parandades rakenduste kaasaskantavust. Zephyr on väike reaalajas operatsioonisüsteem, mis on spetsiaalselt loodud asjade Interneti rakenduste jaoks. See sisaldab arvukalt IoT arendamiseks vajalikke tarkvarateeke, mis arenevad järk-järgult terviklikuks tarkvaraökosüsteemiks.
See raamat ei anna üksikasjalikke paigaldusjuhiseid eelnimetatud arenduskeskkondade jaoks. Arenduskeskkonna saate installida vastavalt oma vajadustele, järgides vastavat dokumentatsiooni ja juhiseid.
4.3 ESP-IDF kompileerimissüsteem
4.3.1 Kompileerimissüsteemi põhimõisted
ESP-IDF projekt on sisestusfunktsiooni ja mitme sõltumatu funktsionaalkomponendiga põhiprogrammi kogum. Näiteksample, LED-lüliteid kontrolliv projekt koosneb peamiselt sisestusprogrammi peamisest ja draiverikomponendist, mis juhib GPIO-d. Kui soovite LED-kaugjuhtimispulti realiseerida, peate lisama ka Wi-Fi, TCP/IP protokolli pinu jne.
Kompileerimissüsteem võib käivitatava faili kompileerida, linkida ja genereerida files (.bin) koodi jaoks ehitusreeglite kogumi kaudu. ESP-IDF v4.0 ja uuemate versioonide kompileerimissüsteem põhineb vaikimisi CMake'il ja koodi kompileerimiskäitumise juhtimiseks saab kasutada kompileerimisskripti CMakeLists.txt. Lisaks CMake'i põhisüntaksi toetamisele määratleb ESP-IDF kompileerimissüsteem ka kompileerimisreeglite ja CMake'i vaikefunktsioonide komplekti ning kompileerimisskripti saate kirjutada lihtsate lausetega.
4.3.2 Projekt File Struktuur
Projekt on kaust, mis sisaldab sisestusprogrammi peamisi, kasutaja määratud komponente ja files on vajalik käivitatavate rakenduste, näiteks kompileerimisskriptide, konfiguratsiooni loomiseks
4. peatükk. Arenduskeskkonna seadistamine 47
files, partitsioonitabelid jne. Projekte saab kopeerida ja edasi saata ning sama käivitatava failiga file saab kompileerida ja genereerida masinates, millel on sama ESP-IDF arenduskeskkonna versioon. Tüüpiline ESP-IDF projekt file struktuur on näidatud joonisel 4.14.
Joonis 4.14. Tüüpiline ESP-IDF projekt file struktuur Kuna ESP-IDF toetab mitut Espressifi IoT kiipi, sealhulgas ESP32, ESP32-S seeria, ESP32-C seeria, ESP32-H seeria jne, tuleb enne koodi koostamist määrata sihtmärk. Sihtmärk on nii rakendusprogrammi käivitav riistvaraseade kui ka kompileerimissüsteemi ehituse sihtmärk. Sõltuvalt teie vajadustest saate oma projektile määrata ühe või mitu sihtmärki. Näiteksample saate käsu idf.py set-target esp32c3 kaudu seada kompileerimissihtmärgiks ESP32-C3, mille käigus laaditakse ESP32C3 jaoks vaikeparameetrid ja kompileerimistööriista ahela tee. Pärast kompileerimist saab ESP32C3 jaoks luua käivitatava programmi. Samuti võite teise sihtmärgi määramiseks uuesti käivitada käsu set-target ning kompileerimissüsteem puhastab ja konfigureerib automaatselt. Komponendid
ESP-IDF komponendid on modulaarsed ja sõltumatud koodiüksused, mida hallatakse kompileerimissüsteemis. Need on korraldatud kaustadena, kusjuures kausta nimi tähistab vaikimisi komponendi nime. Igal komponendil on oma kompileerimisskript, mis 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
määrab selle kompileerimisparameetrid ja sõltuvused. Kompileerimise käigus kompileeritakse komponendid eraldi staatiilisse teeki (.a files) ja lõpuks kombineeritakse teiste komponentidega, et moodustada rakendusprogramm.
ESP-IDF pakub komponentide kujul olulisi funktsioone, nagu operatsioonisüsteem, välisseadmete draiverid ja võrguprotokolli virn. Need komponendid salvestatakse komponentide kataloogi, mis asub ESP-IDF juurkataloogis. Arendajad ei pea neid komponente myProjecti komponentide kataloogi kopeerima. Selle asemel peavad nad määrama ainult nende komponentide sõltuvussuhted projekti failis CMakeLists.txt file kasutades REQUIRES või PRIV_REQUIRES direktiive. Kompileerimissüsteem otsib ja kompileerib automaatselt vajalikud komponendid.
Seetõttu pole myProjecti komponentide kataloog vajalik. Seda kasutatakse ainult projekti mõne kohandatud komponendi kaasamiseks, milleks võivad olla kolmanda osapoole teegid või kasutaja määratud kood. Lisaks saab komponente hankida mis tahes muust kataloogist peale ESP-IDF või praeguse projekti, näiteks teise kataloogi salvestatud avatud lähtekoodiga projektist. Sel juhul peate lisama ainult komponendi tee, määrates juurkataloogi failis CMakeLists.txt muutuja EXTRA_COMPONENT_DIRS. See kataloog tühistab kõik sama nimega ESP-IDF komponendid, tagades õige komponendi kasutamise.
Sisenemisprogrammi põhikataloog Projekti põhikataloog järgib sama file struktuur teiste komponentidega (nt komponent1). Sellel on aga eriline tähtsus, kuna see on kohustuslik komponent, mis peab olema igas projektis. Peakataloog sisaldab projekti lähtekoodi ja kasutajaprogrammi sisenemispunkti, tavaliselt nimega app_main. Vaikimisi algab kasutajaprogrammi täitmine sellest sisestuspunktist. Põhikomponent erineb ka selle poolest, et see sõltub automaatselt kõigist otsingutee komponentidest. Seetõttu ei ole failis CMakeLists.txt vaja sõltuvusi selgesõnaliselt näidata, kasutades käske REQUIRES või PRIV_REQUIRES. file.
Seadistamine file Projekti juurkataloog sisaldab konfiguratsiooni file sdkconfig, mis sisaldab kõigi projekti komponentide konfiguratsiooniparameetreid. sdkconfig file genereerib kompileerimissüsteem automaatselt ning seda saab muuta ja taastada käsuga idf.py menuconfig. Menüükonfiguratsiooni valikud pärinevad peamiselt projekti Kconfig.projbuildist ja komponentide Kconfig-ist. Komponentide arendajad lisavad tavaliselt Kconfigi konfiguratsiooniüksusi, et muuta komponent paindlikuks ja konfigureeritavaks.
Järgukataloog Vaikimisi salvestab projekti ehituskataloog vahepealset kataloogi files ja fi-
4. peatükk. Arenduskeskkonna seadistamine 49
lõplikud käivitatavad programmid, mis on loodud idf.py build käsuga. Üldiselt pole ehituskataloogi sisule otsene juurdepääs vajalik. ESP-IDF pakub kataloogiga suhtlemiseks eelmääratletud käske, näiteks välkkäsu idf.py kasutamine kompileeritud kahendfaili automaatseks leidmiseks file ja välgutage see määratud välguaadressile või kasutage kogu ehituskataloogi puhastamiseks käsku idf.py fullclean.
Sektsioonitabel (partitions.csv) Iga projekt nõuab partitsioonitabelit, mis jagab flashi ruumi ning määrab käivitatava programmi ja kasutaja andmeruumi suuruse ja algusaadressi. Käsk idf.py flash või OTA uuendusprogramm vilgutab püsivara vastavale aadressile vastavalt sellele tabelile. ESP-IDF pakub mitut vaikepartitsioonitabelit jaotises komponendid/ partitsiooni_tabel, näiteks partitions_singleapp.csv ja partitions_two_ ota.csv, mida saab valida menüükonfiguratsioonis.
Kui süsteemi vaikimisi partitsioonitabel ei vasta projekti nõuetele, saab projekti kataloogi lisada kohandatud partitsioonid.csv ja valida menüükonfiguratsioonis.
4.3.3 Kompileerimissüsteemi ehituse vaikereeglid
Samanimeliste komponentide alistamise reeglid Komponendiotsingu käigus järgib kompileerimissüsteem kindlat järjekorda. Esmalt otsib see ESP-IDF sisemisi komponente, seejärel kasutajaprojekti komponente ja lõpuks otsib komponente kaustast EXTRA_COMPONENT_DIRS. Juhtudel, kui mitu kataloogi sisaldavad sama nimega komponente, alistab viimases kataloogis leitud komponent kõik varasemad sama nimega komponendid. See reegel võimaldab ESP-IDF-i komponente kasutajaprojektis kohandada, jättes samal ajal algse ESP-IDF-koodi puutumata.
Üldiste komponentide vaikimisi kaasamise reeglid Nagu mainitud jaotises 4.3.2, peavad komponendid selgelt määratlema oma sõltuvused faili CMakeLists.txt teistest komponentidest. Levinud komponendid, nagu freertod, kaasatakse aga automaatselt ehitussüsteemi vaikimisi, isegi kui nende sõltuvussuhted pole kompileerimisskriptis selgesõnaliselt määratletud. ESP-IDF levinud komponentide hulka kuuluvad freertos, Newlib, hep, log, soc, esp_rom, esp_common, xtensa/riscv ja cxx. Nende levinud komponentide kasutamine väldib korduvat tööd faili CMakeLists.txt kirjutamisel ja muudab selle sisutihedamaks.
Konfiguratsiooniüksuste alistamise reeglid Arendajad saavad lisada vaikekonfiguratsiooni parameetreid, lisades vaikekonfiguratsiooni file nimega sdkconfig.defaults projekti jaoks. Näiteksample, lisades CONFIG_LOG_
50 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
DEFAULT_LEVEL_NONE = y saab konfigureerida UART-liidese vaikimisi logiandmeid mitte printima. Lisaks, kui konkreetse sihtmärgi jaoks on vaja määrata konkreetsed parameetrid, konfiguratsioon file Nimega sdkconfig.defaults.TARGET_NAME saab lisada, kus TARGET_NAME võib olla esp32s2, esp32c3 ja nii edasi. Need konfiguratsioonid files imporditakse kompileerimise ajal sdkconfigi üldise vaikekonfiguratsiooniga file Esmalt imporditakse sdkconfig.defaults, seejärel sihtmärgispetsiifiline konfiguratsioon file, näiteks sdkconfig.defaults.esp32c3. Kui on olemas sama nimega konfiguratsiooniüksusi, siis viimane konfiguratsioon file alistab eelmise.
4.3.4 Sissejuhatus kompileerimisskripti
ESP-IDF-i abil projekti arendamisel ei pea arendajad kirjutama ainult lähtekoodi, vaid peavad kirjutama projekti ja komponentide jaoks ka faili CMakeLists.txt. CMakeLists.txt on tekst file, mida tuntakse ka kompileerimisskriptina, mis määratleb rea kompileerimisobjekte, kompileerimise konfiguratsiooniüksusi ja käske, mis juhivad lähtekoodi kompileerimisprotsessi. ESP-IDF v4.3.2 kompileerimissüsteem põhineb CMake'il. Lisaks natiivsete CMake funktsioonide ja käskude toetamisele määratleb see ka rea kohandatud funktsioone, muutes kompileerimisskriptide kirjutamise palju lihtsamaks.
ESP-IDF-i kompileerimisskriptid hõlmavad peamiselt projekti kompileerimisskripte ja komponentide kompileerimisskripte. Projekti juurkataloogis olevat faili CMakeLists.txt nimetatakse projekti koostamise skriptiks, mis juhib kogu projekti kompileerimisprotsessi. Põhiprojekti koostamise skript sisaldab tavaliselt järgmist kolme rida:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Nende hulgas tuleb esimesele reale panna cmake_minimum_required (VERSION 3.5), mida kasutatakse projekti poolt nõutava minimaalse CMake versiooninumbri tähistamiseks. CMake'i uuemad versioonid ühilduvad üldiselt vanemate versioonidega, seega kohandage ühilduvuse tagamiseks versiooninumbrit uuemate CMake-käskude kasutamisel.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) impordib ESP-IDF kompileerimissüsteemi eelmääratletud konfiguratsiooniüksused ja käsud, sealhulgas kompileerimissüsteemi vaikeehitusreeglid, mida on kirjeldatud jaotises 4.3.3. project(myProject) loob projekti ise ja määrab selle nime. Seda nime kasutatakse lõpliku väljundbinaarina file nimi, st myProject.elf ja myProject.bin.
Projektil võib olla mitu komponenti, sealhulgas põhikomponent. Iga komponendi ülataseme kataloog sisaldab faili CMakeLists.txt file, mida nimetatakse komponendi kompileerimisskriptiks. Komponentide kompileerimisskripte kasutatakse peamiselt komponentide sõltuvuste, konfiguratsiooniparameetrite, lähtekoodi täpsustamiseks files ja kaasas päis files jaoks
4. peatükk. Arenduskeskkonna seadistamine 51
koostamine. ESP-IDF kohandatud funktsiooniga idf_component_register on komponendi kompileerimisskripti jaoks minimaalne nõutav kood järgmine:
1. idf_component_register(SRCS "src1.c"
2.
INCLUDE_DIRS „kaasa”
3.
NÕUAB komponenti1)
SRCS-i parameeter pakub allikate loendit files komponendis, eraldatuna tühikutega, kui neid on mitu files. Parameeter INCLUDE_DIRS pakub avalike päiste loendit file komponendi kataloogid, mis lisatakse aktiivsest komponendist sõltuvate muude komponentide otsinguteele. Parameeter REQUIRES tuvastab praeguse komponendi avaliku komponendi sõltuvused. Komponentide jaoks on vaja selgesõnaliselt märkida, millistest komponentidest nad sõltuvad, näiteks komponent2 sõltub komponendist1. Põhikomponendi puhul, mis vaikimisi sõltub kõigist komponentidest, võib aga parameetri REQUIRES ära jätta.
Lisaks saab kompileerimisskriptis kasutada ka natiivseid CMake käske. Näiteksample, kasutage muutujate määramiseks käsku set, näiteks set(MUUTIJA "VALUE").
4.3.5 Sissejuhatus tavakäskudesse
ESP-IDF kasutab koodi koostamise protsessis CMake'i (projekti konfigureerimise tööriist), Ninjat (projekti koostamise tööriist) ja esptooli (flash-tööriist). Iga tööriist mängib kompileerimise, koostamise ja välklampide protsessis erinevat rolli ning toetab ka erinevaid töökäske. Kasutaja töö hõlbustamiseks lisab ESP-IDF ühtse esiotsa idf.py, mis võimaldab ülaltoodud käske kiiresti kutsuda.
Enne idf.py kasutamist veenduge, et:
· Praegusele terminalile on lisatud ESP-IDF keskkonnamuutuja IDF_PATH. · Käsu täitmise kataloog on projekti juurkataloog, mis sisaldab
projekti koostamise skript CMakeLists.txt.
Levinud idf.py käsud on järgmised:
· idf.py –help: käskude loendi ja nende kasutusjuhiste kuvamine. · idf.py sea-target : kompilatsiooni taidf.py fullcleanrget seadistamine, näiteks
kui asendamine koos esp32c3-ga. · idf.py menuconfig: terminali graafilise konfiguratsiooni menuconfig käivitamine
tööriist, mis saab valida või muuta konfiguratsioonisuvandeid, ja konfiguratsiooni tulemused salvestatakse sdkconfig file. · idf.py build: koodi koostamise algatamine. Vahepealne files ja kompileerimisega loodud lõplik käivitatav programm salvestatakse vaikimisi projekti ehituskataloogi. Koostamisprotsess on järkjärguline, mis tähendab, et kui ainult üks allikas file on muudetud, ainult muudetud file koostatakse järgmisel korral.
52 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
· idf.py clean: vaheaine puhastamine files on loodud projekti koostamise käigus. Kogu projekt on sunnitud koostama järgmises koostamises. Pange tähele, et CMake'i konfiguratsiooni ja menüüconfigi poolt tehtud konfiguratsioonimuudatusi puhastamise ajal ei kustutata.
· idf.py fullclean: kogu ehituskataloogi kustutamine, sealhulgas kogu CMake konfiguratsiooniväljund files. Projekti uuesti üles ehitades konfigureerib CMake projekti nullist. Pange tähele, et see käsk kustutab kõik rekursiivselt files ehituskataloogis, seega kasutage seda ettevaatlikult ja projekti konfiguratsiooniga file ei kustutata.
· idf.py flash: käivitatava programmi kahendfaili vilkumine file loodud sihtmärgi ESP32-C3 ehitamisega. Valikud -lk ja -b kasutatakse vastavalt jadapordi seadme nime ja vilkumise edastuskiiruse määramiseks. Kui need kaks valikut pole määratud, tuvastatakse jadaport automaatselt ja kasutatakse vaikeedastuskiirust.
· idf.py monitor: kuvab sihtmärgi ESP32-C3 jadapordi väljundi. Suvandit -p saab kasutada hostipoolse jadapordi seadme nime määramiseks. Jadapordi printimise ajal vajutage monitorist väljumiseks klahvikombinatsiooni Ctrl+].
Ülaltoodud käske saab ka vastavalt vajadusele kombineerida. Näiteksample, koostab käsk idf.py build flash monitor koodi, välgub ja avab järjestikku jadapordi monitori.
ESP-IDF kompileerimissüsteemi kohta lisateabe saamiseks külastage aadressi https://bookc3.espressif.com/build-system.
4.4 Praktika: koostamine Exampprogramm "Pilkumine"
4.4.1 Ntample Analüüs
See jaotis käsitleb programmi Blink kui endistample analüüsida file reaalse projekti struktuur ja kodeerimisreeglid üksikasjalikult. Programm Blink rakendab LED-i vilkumise efekti ja projekt asub kataloogis examples/get-started/blink, mis sisaldab allikat file, konfiguratsioon files ja mitu kompileerimisskripti.
Selles raamatus tutvustatud nutika valguse projekt põhineb sellel eksample programm. Funktsioonid lisatakse järk-järgult hilisemates peatükkides, et see lõpuks lõpule viia.
Lähtekood Kogu arendusprotsessi demonstreerimiseks on programm Blink kopeeritud kausta esp32c3-iot-projects/device firmware/1 blink.
Vilgutusprojekti kataloogistruktuur files on näidatud joonisel 4.15.
Blink-projekt sisaldab ainult ühte põhikataloogi, mis on spetsiaalne komponent, mis
4. peatükk. Arenduskeskkonna seadistamine 53
Joonis 4.15. File vilkumise projekti kataloogistruktuur
tuleb lisada punktis 4.3.2 kirjeldatud viisil. Peakataloogi kasutatakse peamiselt funktsiooni app_main() rakendamise salvestamiseks, mis on kasutajaprogrammi sisenemispunkt. Blinki projekt ei sisalda komponentide kataloogi, kuna see eks.ample peab kasutama ainult ESP-IDF-iga kaasasolevaid komponente ega vaja lisakomponente. Blink-projektis sisalduvat faili CMakeLists.txt kasutatakse kompileerimisprotsessi juhtimiseks, samas kui faili Kconfig.projbuild kasutatakse selle ex jaoks konfiguratsioonielementide lisamiseksampprogramm menüükonfiguratsioonis. Muu ebavajalik files ei mõjuta koodi koostamist, seega neid siin ei käsitleta. Blink-projekti üksikasjalik tutvustus files on järgmine.
1. /*blink.c sisaldab järgmist päist files*/
2. #kaasa
//Standardne C teegi päis file
3. #include "freertos/freeRTOS.h" //FreeRTOS-e põhipäis file
4. #include "freertos/task.h"
//FreeRTOS-i ülesande päis file
5. #include "sdkconfig.h"
//Konfiguratsiooni päis file mille on genereerinud kconfig
6. #include "driver/gpio.h"
//GPIO draiveri päis file
Allikas file blink.c sisaldab päise seeriat files vastab funktsioonile deklara-
tsioone. ESP-IDF järgib üldiselt standardse teegi päise lisamise järjekorda files, FreeR-
TOS-i päis files, juhi päis files, muu komponendi päis files ja projekti päis files.
Päise järjekord files sisalduvad võivad mõjutada lõplikku koostamise tulemust, seega proovige seda teha
järgige vaikereegleid. Tuleb märkida, et sdkconfig.h genereeritakse automaatselt
kconfig abil ja seda saab konfigureerida ainult käsu idf.py menuconfig kaudu.
Selle päise otsene muutmine file kirjutatakse üle.
1. /*Saate valida failis idf.py menuconfig LED-ile vastava GPIO ja parameetri menuconfig muutmise tulemuseks on CONFIG_BLINK väärtus.
_GPIO muudetakse. Makro määratlust saate ka otse muuta
siin ja muutke CONFIG_BLINK_GPIO fikseeritud väärtuseks.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Seadistage IO GPIO vaikefunktsiooniks, lubage ülestõmbamisrežiim ja
6.
keela sisend- ja väljundrežiimid*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 juhtmevaba seiklus: asjade Interneti põhjalik juhend
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Seadke GPIO väljundrežiimi*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); samas(1) {
/*Prindilogi*/ printf("LEDn-i väljalülitamine"); /*Lülita LED välja (väljund madal tase)*/ gpio_set_level(BLINK_GPIO, 0); /*Viide (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf ("LEDn-i sisselülitamine"); /*Lülita sisse LED (väljund kõrge tase)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Funktsioon app_main() funktsioonis Blink example programm toimib kasutajaprogrammide sisenemispunktina. See on lihtne funktsioon, millel pole parameetreid ega tagastusväärtust. Seda funktsiooni kutsutakse välja pärast seda, kui süsteem on initsialiseerimise lõpetanud, mis hõlmab selliseid ülesandeid nagu logi jadapordi lähtestamine, ühe-/kahetuumalise konfigureerimine ja valvekoera konfigureerimine.
Funktsioon app_main() töötab ülesande main kontekstis. Selle ülesande pinu suurust ja prioriteeti saab reguleerida menüüs menuconfig Componentconfig Common ESP-related.
Lihtsate toimingute jaoks, nagu LED-i vilkumine, saab kogu vajaliku koodi rakendada otse funktsioonis app_main(). Tavaliselt hõlmab see LED-le vastava GPIO lähtestamist ja LED-i sisse- ja väljalülitamiseks ahela while (1) kasutamist. Teise võimalusena saate kasutada FreeRTOS API-d, et luua uus ülesanne, mis tegeleb LED-i vilkumisega. Kui uus ülesanne on edukalt loodud, saate funktsioonist app_main() väljuda.
Faili main/CMakeLists.txt sisu file, mis juhib põhikomponendi koostamise protsessi, on järgmine:
1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS "." )
Nende hulgas kutsub fail main/CMakeLists.txt ainult ühte kompileerimissüsteemi funktsiooni, see on idf_component_register. Sarnaselt failiga CMakeLists.txt enamiku muude komponentide puhul lisatakse SRCS-i blink.c ja allikas fileSRCS-i lisatud s koostatakse. Samal ajal tuleks päise otsingukataloogina jaotisesse INCLUDE_DIRS lisada ".", mis tähistab teed, kus CMakeLists.txt asub files. Faili CMakeLists.txt sisu on järgmine:
1. #Määrake v3.5 kui vanim CMake'i versioon, mida praegune projekt toetab 2. #Versioonid, mis on vanemad kui v3.5, tuleb enne kompileerimise jätkamist uuendada 3. cmake_minimum_required(VERSION 3.5) 4. #Kaasake ESP CMake'i vaikekonfiguratsioon -IDF kompileerimissüsteem
4. peatükk. Arenduskeskkonna seadistamine 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Loo projekt nimega “blink” 7. project(myProject)
Nende hulgas sisaldab juurkataloogi fail CMakeLists.txt peamiselt $ENV{IDF_ PATH}/tools/cmake/project.cmake, mis on CMake'i põhikonfiguratsioon file pakub ESP-IDF. Seda kasutatakse con
Dokumendid / Ressursid
![]() |
Espressif Systems ESP32-C3 Wireless Adventure [pdfKasutusjuhend ESP32-C3 juhtmevaba seiklus, ESP32-C3, juhtmevaba seiklus, seiklus |