ESP32-C3 langaton seikkailu

ESP32-C3 langaton seikkailu

Kattava IoT:n opas

Espressif Systems 12. kesäkuuta 2023

Tekniset tiedot

  • Tuote: ESP32-C3 Wireless Adventure
  • Valmistaja: Espressif Systems
  • Päivämäärä: 12

Tuotteen käyttöohjeet

Valmistelu

Ennen kuin käytät ESP32-C3 Wireless Adventurea, varmista, että olet
tuntee IoT:n käsitteet ja arkkitehtuuri. Tämä auttaa
ymmärrät, kuinka laite sopii laajempaan IoT-ekosysteemiin
ja sen mahdolliset sovellukset älykodeissa.

IoT-projektien esittely ja käytäntö

Tässä osiossa opit tyypillisistä IoT-projekteista,
mukaan lukien yleisten IoT-laitteiden perusmoduulit, perusmoduulit
asiakassovelluksista ja yleisistä IoT-pilvialustoista. Tämä tulee
antaa sinulle perustan ymmärtää ja luoda omasi
omia IoT-projekteja.

Harjoitus: Smart Light Project

Tässä harjoitusprojektissa opit luomaan älykkään
valoa käyttämällä ESP32-C3 Wireless Adventurea. Hankkeen rakenne,
toimintoja, laitteiston valmistelua ja kehitysprosessia
selitetty yksityiskohtaisesti.

Hankkeen rakenne

Projekti koostuu useista osista, mukaan lukien
ESP32-C3 Wireless Adventure, LEDit, anturit ja pilvi
tausta.

Projektin toiminnot

Älykkään valoprojektin avulla voit säätää kirkkautta ja
LEDien väriä etänä mobiilisovelluksen kautta tai web
käyttöliittymä.

Laitteiston valmistelu

Valmistautuaksesi projektiin sinun on kerättävä
tarvittavat laitteistokomponentit, kuten ESP32-C3 Wireless
Seikkailulauta, LEDit, vastukset ja virtalähde.

Kehitysprosessi

Kehitysprosessiin kuuluu kehityksen perustaminen
ympäristö, koodin kirjoittaminen LEDien ohjaamiseksi, yhteyden muodostaminen
pilvitaustaa ja älykkään toimivuuden testaamista
valoa.

ESP RainMakerin esittely

ESP RainMaker on tehokas kehys IoT:n kehittämiseen
laitteet. Tässä osiossa opit mitä ESP RainMaker on ja
miten se voidaan toteuttaa projekteissasi.

Mikä on ESP RainMaker?

ESP RainMaker on pilvipohjainen alusta, joka tarjoaa joukon
työkalut ja palvelut IoT-laitteiden rakentamiseen ja hallintaan.

ESP RainMakerin käyttöönotto

Tässä osiossa selitetään eri komponentit, jotka ovat mukana
ESP RainMakerin käyttöönotto, mukaan lukien vaatimuspalvelu,
RainMaker Agent, pilvitaustaohjelma ja RainMaker Client.

Harjoittelu: ESP RainMaker -kehityksen tärkeimmät kohdat

Tässä harjoitusosassa opit tärkeimmistä kohdista
harkitse, kun kehität ESP RainMakerilla. Tämä sisältää laitteen
vaatimuksen tekeminen, tietojen synkronointi ja käyttäjien hallinta.

ESP RainMakerin ominaisuudet

ESP RainMaker tarjoaa erilaisia ​​ominaisuuksia käyttäjien hallintaan, loppu
käyttäjiä ja järjestelmänvalvojia. Nämä ominaisuudet mahdollistavat helpon laitteen
asennus, kaukosäädin ja valvonta.

Kehitysympäristön määrittäminen

Tämä osio tarjoaa ylityksenview ESP-IDF:stä (Espressif IoT
Development Framework), joka on virallinen kehityskehys
ESP32-pohjaisille laitteille. Se selittää eri versioita
ESP-IDF ja miten kehitysympäristö asetetaan.

Laitteiston ja ajurien kehitys

ESP32-C3:een perustuvien Smart Light -tuotteiden laitteistosuunnittelu

Tämä osio keskittyy älyvalon laitteistosuunnitteluun
ESP32-C3 Wireless Adventureen perustuvia tuotteita. Se kattaa
Smart Light -tuotteiden ominaisuudet ja koostumus sekä
ESP32-C3-ydinjärjestelmän laitteistosuunnittelu.

Smart Light -tuotteiden ominaisuudet ja koostumus

Tämä alaosio selittää ominaisuudet ja komponentit, jotka tekevät
älykkäät valotuotteet. Siinä käsitellään erilaisia ​​toimintoja
ja suunnittelunäkökohdat älyvalojen luomiseen.

ESP32-C3-ydinjärjestelmän laitteistosuunnittelu

ESP32-C3-ydinjärjestelmän laitteistorakenne sisältää tehon
syöttö, käynnistysjärjestys, järjestelmän nollaus, SPI-salama, kellolähde,
sekä RF- ja antenninäkökohdat. Tämä alajakso tarjoaa
yksityiskohtaiset tiedot näistä näkökohdista.

FAQ

K: Mikä ESP RainMaker on?

V: ESP RainMaker on pilvipohjainen alusta, joka tarjoaa työkaluja
ja palvelut IoT-laitteiden rakentamiseen ja hallintaan. Se yksinkertaistaa
kehitysprosessin ja mahdollistaa helpon laitteen asennuksen kauko-ohjauksella
valvontaa ja valvontaa.

K: Kuinka voin perustaa kehitysympäristön
ESP32-C3?

V: ESP32-C3:n kehitysympäristön määrittäminen edellyttää
asentaa ESP-IDF (Espressif IoT Development Framework) ja
määritä se annettujen ohjeiden mukaan. ESP-IDF on
virallinen kehityskehys ESP32-pohjaisille laitteille.

K: Mitkä ovat ESP RainMakerin ominaisuudet?

V: ESP RainMaker tarjoaa erilaisia ​​ominaisuuksia, mukaan lukien käyttäjä
hallinta, loppukäyttäjän ominaisuudet ja järjestelmänvalvojan ominaisuudet. Käyttäjien hallinta
mahdollistaa helpon laitevaatimusten tekemisen ja tietojen synkronoinnin. Loppukäyttäjä
ominaisuudet mahdollistavat laitteiden etäohjauksen mobiilisovelluksen tai
web käyttöliittymä. Järjestelmänvalvojan ominaisuudet tarjoavat työkaluja laitteen valvontaan
ja hallinta.

ESP32-C3 langaton seikkailu
Kattava IoT:n opas
Espressif Systems 12. kesäkuuta 2023

Sisällys

I Valmistelu

1

1 Johdatus IoT:hen

3

1.1 IoT:n arkkitehtuuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 IoT-sovellus älykkäissä kodeissa . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 IoT-projektien esittely ja käytäntö

9

2.1 Johdatus tyypillisiin IoT-projekteihin . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Yleisten IoT-laitteiden perusmoduulit . . . . . . . . . . . . . . . . . 9

2.1.2 Asiakassovellusten perusmoduulit . . . . . . . . . . . . . . . . . . . 10

2.1.3 Yleisten IoT-pilvialustojen esittely . . . . . . . . . . . . . . 11

2.2 Harjoittelu: Smart Light Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Hankkeen rakenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Projektitoiminnot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Laitteiston valmistelu . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Kehitysprosessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 ESP RainMakerin esittely

19

3.1 Mikä ESP RainMaker on? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 ESP RainMakerin käyttöönotto . . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Ilmoituspalvelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 RainMaker Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Cloud backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 RainMaker Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Harjoittelu: ESP RainMaker -kehityksen avainkohdat . . . . . . . . . . . . 25

3.4 ESP RainMakerin ominaisuudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Käyttäjien hallinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Loppukäyttäjän ominaisuudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Järjestelmänvalvojan ominaisuudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Kehitysympäristön määrittäminen

31

4.1 ESP-IDF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 ESP-IDF-versiot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 ESP-IDF Git Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Sopivan version valitseminen . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Yliview ESP-IDF SDK -hakemistosta. . . . . . . . . . . . . . . . . . . . 34 4.2 ESP-IDF-kehitysympäristön määrittäminen . . . . . . . . . . . . . . . . . 38 4.2.1 ESP-IDF-kehitysympäristön määrittäminen Linuxissa . . . . . . . . 38 4.2.2 ESP-IDF-kehitysympäristön määrittäminen Windowsissa . . . . . . 40 4.2.3 ESP-IDF-kehitysympäristön määrittäminen Macissa . . . . . . . . . 45 4.2.4 VS-koodin asentaminen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Kolmannen osapuolen kehitysympäristöjen esittely . . . . . . . . 46 4.3 ESP-IDF-käännösjärjestelmä . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Käännösjärjestelmän peruskäsitteet . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekti File Rakenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Käännösjärjestelmän oletuskoontisäännöt . . . . . . . . . . . . . 50 4.3.4 Käännösskriptin esittely . . . . . . . . . . . . . . . . . . 51 4.3.5 Yleisten komentojen esittely . . . . . . . . . . . . . . . . . . . 52 4.4 Harjoitus: Kääntäminen Esimample Ohjelmisto "Blink" . . . . . . . . . . . . . . . . . . 53 4.4.1 Esimample Analyysi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Blink-ohjelman laatiminen . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Vilkkumisohjelman vilkkuminen . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Blink-ohjelman sarjaportin lokianalyysi . . . . . . . . . . . . . . 60 4.5 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Laitteiston ja ajurien kehittäminen

65

5 ESP32-C3:een perustuvien Smart Light -tuotteiden laitteistosuunnittelu

67

5.1 Smart Light -tuotteiden ominaisuudet ja koostumus . . . . . . . . . . . . . . . 67

5.2 ESP32-C3-ydinjärjestelmän laitteistosuunnittelu . . . . . . . . . . . . . . . . . . . 70

5.2.1 Virtalähde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Käynnistysjärjestys ja järjestelmän nollaus . . . . . . . . . . . . . . . . . . 74

5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.4 Kellon lähde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 RF ja antenni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Kiinnitystapit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 GPIO- ja PWM-ohjain . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Harjoitus: Älykkään valojärjestelmän rakentaminen ESP32-C3:lla . . . . . . . . . . . . . 80

5.3.1 Moduulien valinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 PWM-signaalien GPIO:iden määrittäminen . . . . . . . . . . . . . . . . . . . . 82

5.3.3 Laiteohjelmiston lataaminen ja virheenkorjausliittymä . . . . . . . . . . . . 82

5.3.4 RF-suunnittelun ohjeet . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Virtalähteen suunnittelun ohjeet . . . . . . . . . . . . . . . . . . . 86 5.4 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Ohjaimen kehittäminen

87

6.1 Ohjaimen kehitysprosessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 ESP32-C3-oheissovellukset . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 LED-ohjaimen perusteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Väriavaruudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 LED-ohjain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 LED-himmennys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 PWM:n esittely . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 LED-himmennysohjaimen kehittäminen . . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Haihtumaton tallennus (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 LED PWM -ohjain (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 LED PWM -ohjelmointi . . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Harjoitus: Ohjainten lisääminen Smart Light Projectiin . . . . . . . . . . . . . . . . . 103

6.5.1 Painikeohjain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 LED-himmennysohjain . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III Langaton tiedonsiirto ja ohjaus

109

7 Wi-Fi-asetukset ja -yhteys

111

7.1 Wi-Fin perusteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.1 Wi-Fi-yhteyden esittely . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 IEEE 802.11:n kehitys . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.3 Wi-Fi-käsitteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.1.4 Wi-Fi-yhteys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7.2 Bluetoothin perusteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 Bluetoothin esittely . . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Bluetooth-käsitteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 Bluetooth-yhteys . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3 Wi-Fi-verkon määritys . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.3.1 Wi-Fi-verkon määritysopas . . . . . . . . . . . . . . . . . . . . 131

7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.3.5 Muut menetelmät . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 Wi-Fi-ohjelmointi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi-komponentit ESP-IDF:ssä . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Harjoitus: Wi-Fi-yhteys . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Harjoitus: Älykäs Wi-Fi-yhteys . . . . . . . . . . . . . . . . . . . . . 145
7.5 Harjoittelu: Wi-Fi-määritykset Smart Light Projectissa . . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi-yhteys Smart Light Projectissa . . . . . . . . . . . . . . . . . 156 7.5.2 Älykäs Wi-Fi-määritys . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Paikallinen ohjaus

159

8.1 Paikallisen ohjauksen esittely . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Paikallisen ohjauksen soveltaminen . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 Advantages paikallisohjauksesta . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Ohjattujen laitteiden löytäminen älypuhelimien kautta . . . . . . . . . . 161

8.1.4 Tietoliikenne älypuhelimien ja laitteiden välillä . . . . . . . . 162

8.2 Yleiset paikalliset etsintämenetelmät . . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Lähetys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

8.2.2 Monilähetys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2.3 Yleislähetyksen ja monilähetyksen vertailu . . . . . . . . . . . . . . 176

8.2.4 Multicast-sovellusprotokolla mDNS paikallista etsintää varten . . . . . . . . 176

8.3 Yhteiset yhteysprotokollat ​​paikallisille tiedoille . . . . . . . . . . . . . . . 179

8.3.1 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . 179

8.3.2 HyperText Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Käyttäjä Datagram-protokolla (UDP) . . . . . . . . . . . . . . . . . . . . . . 189

8.3.4 CoAP (Constrained Application Protocol) . . . . . . . . . . . . . . . . 192

8.3.5 Bluetooth-protokolla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

8.3.6 Yhteenveto tiedonsiirtoprotokollista . . . . . . . . . . . . . . . 203

8.4 Tietoturvatakuu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Transport Layer Securityn (TLS) esittely . . . . . . . . . . . . . 207

8.4.2 Da:n esittelytagram Transport Layer Security (DTLS) . . . . . . . 213

8.5 Harjoittelu: Paikallinen ohjaus Smart Light Projectissa . . . . . . . . . . . . . . . . . . 217

8.5.1 Wi-Fi-pohjaisen paikallisen ohjauspalvelimen luominen . . . . . . . . . . . . . . . 217

8.5.2 Paikallisen ohjauksen toimivuuden tarkistaminen komentosarjoilla . . . . . . . . . . . 221

8.5.3 Bluetooth-pohjaisen paikallisen ohjauspalvelimen luominen . . . . . . . . . . . . 222

8.6 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Pilvienhallinta

225

9.1 Kaukosäätimen esittely . . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Pilvitietoliikenneprotokollat ​​. . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 MQTT Johdanto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT-periaatteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT-viestimuoto . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokollavertailu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 MQTT Brokerin käyttöönotto Linuxissa ja Windowsissa . . . . . . . . . . . . 233 9.2.6 MQTT Client -sovelluksen määrittäminen ESP-IDF:n perusteella . . . . . . . . . . . . . . . . 235 9.3 MQTT-tietoturvan varmistaminen . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Varmenteiden merkitys ja toiminta . . . . . . . . . . . . . . . . . . . 237 9.3.2 Varmenteiden luominen paikallisesti . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 MQTT Brokerin määrittäminen . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 MQTT Client -sovelluksen määrittäminen . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Harjoitus: Kaukosäädin ESP RainMakerin kautta . . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMakerin perusteet . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Solmu- ja pilvitaustayhteysprotokolla . . . . . . . . . . . 244 9.4.3 Viestintä asiakkaan ja pilvitaustan välillä . . . . . . . . . . . 249 9.4.4 Käyttäjän roolit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Peruspalvelut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 RainMaker-sovellus ja kolmannen osapuolen integraatiot . . . . . . . . . . . . . . . 262 9.5 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Älypuhelinsovellusten kehittäminen

269

10.1 Johdatus älypuhelinsovellusten kehittämiseen . . . . . . . . . . . . . . . . . . 269

10.1.1 Yliview älypuhelinsovelluskehityksestä. . . . . . . . . . . . . . . 270

10.1.2 Android-projektin rakenne . . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 iOS-projektin rakenne . . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Android-toiminnan elinkaari . . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 iOS:n elinkaari ViewOhjain. . . . . . . . . . . . . . . . . . . . . . 273

10.2 Uuden älypuhelinsovellusprojektin luominen . . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Android-kehitykseen valmistautuminen . . . . . . . . . . . . . . . . . . . 275

10.2.2 Uuden Android-projektin luominen . . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 Riippuvuuksien lisääminen MyRainmakeriin . . . . . . . . . . . . . . . . . 276

10.2.4 Lupapyyntö Androidissa . . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Valmistautuminen iOS-kehitykseen . . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Uuden iOS-projektin luominen . . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 Riippuvuuksien lisääminen MyRainmakeriin . . . . . . . . . . . . . . . . . 279

10.2.8 Lupapyyntö iOS:ssä . . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 Sovelluksen toiminnallisten vaatimusten analyysi . . . . . . . . . . . . . . . . . . 281

10.3.1 Hankkeen toiminnallisten vaatimusten analyysi . . . . . . . . . . . . 282

10.3.2 Käyttäjähallintavaatimusten analyysi . . . . . . . . . . . . . . . 282 10.3.3 Laitteiden hallinta- ja sitomisvaatimusten analysointi . . . . . . . 283 10.3.4 Kauko-ohjausvaatimusten analysointi . . . . . . . . . . . . . . . . 283 10.3.5 Aikatauluvaatimusten analyysi . . . . . . . . . . . . . . . . . . . 284 10.3.6 Käyttäjäkeskuksen vaatimusten analysointi . . . . . . . . . . . . . . . . . . 285 10.4 Käyttäjähallinnan kehittäminen . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 RainMaker-sovellusliittymien esittely . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Viestinnän aloittaminen älypuhelimen kautta . . . . . . . . . . . . . . . . 286 10.4.3 Tilin rekisteröinti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Tilin kirjautuminen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Laitteiden hallinnan kehittäminen . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Skannauslaitteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Laitteiden liittäminen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Salaisten avainten luominen . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Solmutunnuksen saaminen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Käyttöönottolaitteet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Laitehallinnan kehittäminen . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Laitteiden sitominen pilvitileihin . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Laiteluettelon hankkiminen . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Laitteen tilan saaminen . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Laitteen tilan muuttaminen . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Ajoitus- ja käyttäjäkeskuksen kehittäminen . . . . . . . . . . . . . . . . . . . 313 10.7.1 Ajoitustoiminnon käyttöönotto . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Käyttäjäkeskuksen käyttöönotto . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Lisää pilvisovellusliittymiä . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11 Laiteohjelmiston päivitys ja versionhallinta

321

11.1 Laiteohjelmiston päivitys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

11.1.1 Yliview Osiotaulukot . . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Laiteohjelmiston käynnistysprosessi . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Yliview OTA-mekanismista. . . . . . . . . . . . . . . . . . . . . 326

11.2 Laiteohjelmistoversion hallinta . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Laiteohjelmiston merkintä . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Palautus ja palautuksen esto . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Harjoitus: Over-the-air (OTA) Esimample . . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Päivitä laiteohjelmisto paikallisen isännän kautta . . . . . . . . . . . . . . . . . 332

11.3.2 Päivitä laiteohjelmisto ESP RainMakerin kautta . . . . . . . . . . . . . . . 335

11.4 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Optimointi ja massatuotanto

343

12 Virranhallinta ja virransäästön optimointi

345

12.1 ESP32-C3 Virranhallinta . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Dynaaminen taajuuden skaalaus . . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Virranhallinnan määritykset . . . . . . . . . . . . . . . . . . . . 348

12.2 ESP32-C3 Low Power Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Modeemi-lepotila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Kevyt lepotila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Syvä unitila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Virrankulutus eri tehotiloissa . . . . . . . . . . . . . 358

12.3 Virranhallinta ja vähän virtaa vaativa virheenkorjaus . . . . . . . . . . . . . . . . . 359

12.3.1 Lokin virheenkorjaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

12.3.2 GPIO-virheenkorjaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

12.4 Harjoitus: Tehonhallinta Smart Light Projectissa . . . . . . . . . . . . . . . 363

12.4.1 Virranhallintatoiminnon määrittäminen . . . . . . . . . . . . . . . . . 364

12.4.2 Käytä virranhallinnan lukkoja . . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Virrankulutuksen tarkistaminen . . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Parannetut laitteen suojausominaisuudet

369

13.1 Yliview IoT-laitteiden tietoturvasta . . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 Miksi IoT-laitetiedot suojataan? . . . . . . . . . . . . . . . . . . . . . . 370

13.1.2 IoT-laitteiden tietoturvan perusvaatimukset . . . . . . . . . . . . 371

13.2 Tietojen eheyden suojaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

13.2.1 Eheyden varmistusmenetelmän esittely . . . . . . . . . . . . . . 372

13.2.2 Laiteohjelmistotietojen eheyden tarkastus . . . . . . . . . . . . . . . . . . 373

13.2.3 Esimample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Tietojen luottamuksellisuuden suoja . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Tietojen salauksen esittely . . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Flash-salausjärjestelmän esittely . . . . . . . . . . . . . . . . . 376

13.3.3 Flash-salausavaimen tallennus . . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Flash-salauksen toimintatila . . . . . . . . . . . . . . . . . . . . 380

13.3.5 Flash-salausprosessi . . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 NVS-salauksen esittely . . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 EsimampFlash-salausta ja NVS-salausta. . . . . . . . . . . 384

13.4 Tietojen laillisuuden suoja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 Digitaalisen allekirjoituksen esittely . . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Yliview Secure Boot Scheme -ohjelmasta. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Ohjelmiston suojatun käynnistyksen esittely . . . . . . . . . . . . . . . . . . . 388 13.4.4 Johdatus laitteiston suojattuun käynnistykseen . . . . . . . . . . . . . . . . . . 390 13.4.5 Esimamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Harjoittelu: Suojausominaisuudet massatuotannossa . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash-salaus ja suojattu käynnistys . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Flash-salauksen ja suojatun käynnistyksen ottaminen käyttöön Batch Flash -työkaluilla . . 397 13.5.3 Flash-salauksen ja suojatun käynnistyksen ottaminen käyttöön Smart Light Projectissa . . . 398 13.6 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Laiteohjelmiston polttaminen ja testaus massatuotantoa varten

399

14.1 Laiteohjelmiston polttaminen massatuotannossa . . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Tietoosioiden määrittäminen . . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Laiteohjelmiston polttaminen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Massatuotannon testaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Käytäntö: Massatuotantotiedot Smart Light Projectissa . . . . . . . . . . . . . 404

14.4 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 ESP Insights: Remote Monitoring Platform

405

15.1 ESP Insightsin esittely . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 ESP Insightsin käytön aloittaminen . . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 ESP Insightsin käytön aloittaminen esp-insights -projektissa . . . . . . 409

15.2.2 Käynti esimample in the esp-insights Project . . . . . . . . . . . . . . . 411

15.2.3 Perustietojen ilmoittaminen . . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Kiinnostavien lokien mukauttaminen . . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Uudelleenkäynnistyksen syyn ilmoittaminen . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Muokattujen mittareiden raportointi . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Harjoitus: ESP Insightsin käyttö Smart Light Projectissa . . . . . . . . . . . . . . . 416

15.4 Yhteenveto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Johdanto
ESP32-C3 on yhden ytimen Wi-Fi- ja Bluetooth 5 (LE) -mikro-ohjain SoC, joka perustuu avoimen lähdekoodin RISC-V-arkkitehtuuriin. Se löytää oikean tasapainon tehon, I/O-ominaisuuksien ja turvallisuuden välillä ja tarjoaa siten optimaalisen kustannustehokkaan ratkaisun liitettyihin laitteisiin. Espressifin ESP32-C3-perheen eri sovellusten esittelemiseksi tämä Espressifin kirja vie sinut mielenkiintoiselle matkalle AIoT:n läpi alkaen IoT-projektien kehittämisen ja ympäristön asennuksen perusteista käytännön exiin.amples. Ensimmäisessä neljässä luvussa puhutaan IoT:stä, ESP RainMakerista ja ESP-IDF:stä. Luvuissa 5 ja 6 kerrotaan laitteiston suunnittelusta ja ajurien kehittämisestä. Kun edistyt, huomaat, kuinka projektisi määritetään Wi-Fi-verkkojen ja mobiilisovellusten avulla. Lopuksi opit optimoimaan projektisi ja laittamaan sen massatuotantoon.
Jos olet vastaavien alojen insinööri, ohjelmistoarkkitehti, opettaja, opiskelija tai joku muu, joka on kiinnostunut IoT:stä, tämä kirja on sinua varten.
Voit ladata koodin esimample käytetty tässä kirjassa Espressifin GitHub-sivustolta. Saat viimeisimmät tiedot IoT-kehityksestä seuraamalla virallista tiliämme.

Esipuhe
Informatisoiva maailma
Internet of Things (IoT) teki Internet of Things (IoT) -debyyttinsä uudenlaisena infrastruktuurina digitaalisessa taloudessa. Tuodakseen teknologiaa lähemmäs yleisöä Espressif Systems pyrkii näkemykseen, että kehittäjät kaikilta elämänaloilta voivat käyttää IoT:tä ratkaistakseen joitain aikamme kiireellisimmistä ongelmista. Odotamme tulevaisuudelta "Intelligent Network of All Things" -maailmaa.
Omien sirujen suunnittelu on kriittinen osa tätä visiota. Se on maraton, joka vaatii jatkuvaa läpimurtoa teknologian rajoja vastaan. "Game Changer" ESP8266:sta ESP32-sarjaan, jossa on integroitu Wi-Fi- ja Bluetoothr (LE) -yhteys, ja sen jälkeen ESP32-S3, joka on varustettu AI-kiihdytyksellä, Espressif ei koskaan lopeta AIoT-ratkaisujen tuotteiden tutkimusta ja kehittämistä. Avoimen lähdekoodin ohjelmistoillamme, kuten IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF ja Device Connectivity Platform ESP RainMaker, olemme luoneet itsenäisen kehyksen AIoT-sovellusten rakentamiseen.
Heinäkuuhun 2022 mennessä Espressifin IoT-piirisarjojen kumulatiiviset toimitukset ovat ylittäneet 800 miljoonaa, mikä on johtava Wi-Fi MCU-markkinoilla ja tarjoaa valtavan määrän kytkettyjä laitteita maailmanlaajuisesti. Huippuosaamisen tavoittelu tekee jokaisesta Espressif-tuotteesta suuren hitin korkean integrointitason ja kustannustehokkuuden vuoksi. ESP32-C3:n julkaisu on merkittävä virstanpylväs Espressifin itse kehittämässä teknologiassa. Se on yksiytiminen, 32-bittinen, RISC-V-pohjainen MCU, jossa on 400 kt SRAM-muistia ja joka voi toimia 160 MHz:n taajuudella. Siinä on integroitu 2.4 GHz Wi-Fi ja Bluetooth 5 (LE) pitkän kantaman tuella. Se saavuttaa hyvän tasapainon tehon, I/O-ominaisuuksien ja turvallisuuden välillä ja tarjoaa siten optimaalisen kustannustehokkaan ratkaisun liitetyille laitteille. Tämä tehokkaaseen ESP32-C3:een perustuva kirja on tarkoitettu auttamaan lukijoita ymmärtämään IoT:hen liittyvää tietoa yksityiskohtaisen kuvituksen ja käytännön ex.amples.
Miksi kirjoitimme tämän kirjan?
Espressif Systems on enemmän kuin puolijohdeyritys. Se on myös IoT-alustayritys, joka pyrkii aina läpimurtoihin ja innovaatioihin teknologian alalla. Samaan aikaan Espressif on avannut ja jakanut itse kehittämän käyttöjärjestelmän ja ohjelmistokehyksen yhteisön kanssa muodostaen ainutlaatuisen ekosysteemin. Insinöörit, valmistajat ja teknologian harrastajat kehittävät aktiivisesti uusia Espressifin tuotteisiin perustuvia ohjelmistosovelluksia, kommunikoivat vapaasti ja jakavat kokemuksiaan. Voit nähdä kehittäjien kiehtovia ideoita jatkuvasti eri alustoilla, kuten YouTubessa ja GitHubissa. Espressifin tuotteiden suosio on kannustanut yhä useampia kirjailijoita, jotka ovat tuottaneet yli 100 Espressif-piirisarjoihin perustuvaa kirjaa yli kymmenellä kielellä, mukaan lukien englanti, kiina, saksa, ranska ja japani.

Yhteisökumppaneiden tuki ja luottamus rohkaisee Espressifin jatkuvaan innovaatioon. ”Pyrimme tekemään siruistamme, käyttöjärjestelmistämme, kehyksistämme, ratkaisuistamme, pilvestämme, liiketoimintakäytännöistämme, työkaluistamme, dokumentaatiostamme, kirjoituksistamme, ideoistamme jne. yhä osuvampia vastauksia, joita ihmiset tarvitsevat nykyelämän kiireellisimissä ongelmissa. Tämä on Espressifin korkein kunnianhimo ja moraalinen kompassi." sanoi Teo Swee Ann, Espressifin perustaja ja toimitusjohtaja.
Espressif arvostaa lukemista ja ideoita. Koska IoT-teknologian jatkuva päivitys asettaa insinööreille korkeampia vaatimuksia, miten voimme auttaa useampia ihmisiä hallitsemaan nopeasti IoT-sirut, käyttöjärjestelmät, ohjelmistokehykset, sovellusmallit ja pilvipalvelutuotteet? Kuten sanonta kuuluu, on parempi opettaa mies kalastamaan kuin antaa hänelle kalaa. Aivoriihissä meille tuli mieleen, että voisimme kirjoittaa kirjan järjestelmällisesti selvittääksesi IoT-kehityksen keskeiset tiedot. Löysimme sen, kokosimme nopeasti ryhmän vanhempia insinöörejä ja yhdistimme teknisen tiimin kokemuksen sulautetusta ohjelmoinnista, IoT-laitteisto- ja ohjelmistokehityksestä, mikä kaikki vaikutti tämän kirjan julkaisemiseen. Kirjoittaessamme yritimme parhaamme olla objektiivisia ja oikeudenmukaisia, ilman koteloa ja käyttää tiiviitä ilmaisuja kertoaksemme esineiden internetin monimutkaisuudesta ja viehätyksestä. Tiivistimme huolellisesti yleiset kysymykset, viitasimme yhteisön palautteeseen ja ehdotuksiin vastataksemme selkeästi kehitysprosessissa esiin tulleisiin kysymyksiin sekä tarjotaksemme käytännönläheisiä IoT-kehitysohjeita asiaankuuluville teknikoille ja päättäjille.
Kirjan rakenne
Tämä kirja ottaa insinöörikeskeisen näkökulman ja selittää IoT-projektien kehittämiseen tarvittavat tiedot askel askeleelta. Se koostuu neljästä osasta seuraavasti:
· Valmistelu (Luku 1): Tässä osassa esitellään IoT:n arkkitehtuuri, tyypillinen IoT-projektikehys, ESP RainMakerr -pilvialustaa ja kehitysympäristö ESP-IDF, jotta IoT-projektien kehittämiselle luodaan vankka perusta.
· Laitteiston ja ajurien kehittäminen (luku 5): ESP6-C32-piirisarjaan perustuva tämä osa käsittelee laitteiston ja ajurien vähimmäiskehitystä ja toteuttaa himmennyksen, väriluokituksen ja langattoman viestinnän hallinnan.
· Langaton tiedonsiirto ja ohjaus (luku 7): Tämä osa selittää älykkään Wi-Fi-määritysjärjestelmän, joka perustuu ESP11-C32-siruun, paikallisiin ja pilviohjausprotokolliin sekä laitteiden paikalliseen ja kauko-ohjaukseen. Se tarjoaa myös järjestelmiä älypuhelinsovellusten kehittämiseen, laiteohjelmiston päivitykseen ja versionhallintaan.
· Optimointi ja massatuotanto (luku 12-15): Tämä osa on tarkoitettu edistyneille IoT-sovelluksille, ja siinä keskitytään tuotteiden optimointiin virranhallinnassa, virrankulutuksen optimointiin ja parempaan tietoturvaan. Se esittelee myös laiteohjelmiston polton ja testauksen massatuotannossa sekä kuinka diagnosoidaan laitteen laiteohjelmiston toimintatila ja lokit ESP Insights -etävalvontaalustan avulla.

Tietoja lähdekoodista
Lukijat voivat ajaa example ohjelmia tässä kirjassa joko syöttämällä koodi manuaalisesti tai käyttämällä kirjan mukana tulevaa lähdekoodia. Korostamme teorian ja käytännön yhdistelmää ja laitamme näin Smart Light -projektiin perustuvan käytännön osion lähes jokaiseen lukuun. Kaikki koodit ovat avoimen lähdekoodin. Lukijat voivat ladata lähdekoodin ja keskustella siitä tähän kirjaan liittyvissä osioissa GitHubissa ja virallisella foorumillamme esp32.com. Tämän kirjan avoimen lähdekoodin koodia koskevat Apache License 2.0:n ehdot.
Tekijän huomautus
Tämän kirjan on virallisesti tuottanut Espressif Systems, ja sen ovat kirjoittaneet yrityksen johtavat insinöörit. Se sopii IoT:hen liittyvien toimialojen johtajille ja tuotekehityshenkilöstölle, vastaavien pääaineiden opettajille ja opiskelijoille sekä esineiden internetin alan harrastajille. Toivomme, että tämä kirja voi toimia käsikirjana, viitteenä ja vuodekirjana ollaksemme kuin hyvä ohjaaja ja ystävä.
Tätä kirjaa laatiessamme viittasimme joihinkin kotimaisten ja ulkomaisten asiantuntijoiden, tutkijoiden ja teknikkojen asiaankuuluviin tutkimustuloksiin ja teimme parhaamme lainataksemme niitä akateemisten normien mukaisesti. On kuitenkin väistämätöntä, että joitakin puutteita tulee, joten tässä yhteydessä haluamme ilmaista syvän kunnioituksemme ja kiitollisuutemme kaikille asiaankuuluville kirjoittajille. Lisäksi olemme lainanneet tietoa Internetistä, joten haluamme kiittää alkuperäisiä tekijöitä ja kustantajia ja pahoittelumme, ettemme voi ilmoittaa jokaisen tiedon lähdettä.
Laadukkaan kirjan tuottamiseksi olemme järjestäneet sisäisiä keskustelukierroksia ja oppineet kokeilulukijoiden ja kustantajien toimittajien ehdotuksista ja palautteista. Tässä haluamme kiittää teitä jälleen avustanne, joka myötävaikutti tähän onnistuneeseen työhön.
Viimeisenä, mutta tärkeintä, kiitos kaikille Espressifissä, jotka ovat tehneet niin lujasti töitä tuotteidemme synnyn ja popularisoinnin eteen.
IoT-projektien kehittämiseen liittyy monenlaista osaamista. Kirjan pituuden sekä kirjoittajan tason ja kokemuksen perusteella puutteita ei voida välttää. Siksi pyydämme ystävällisesti asiantuntijoita ja lukijoita kritisoimaan ja korjaamaan virheemme. Jos sinulla on ehdotuksia tästä kirjasta, ota meihin yhteyttä osoitteeseen book@espressif.com. Odotamme palautettasi.

Kuinka käyttää tätä kirjaa?
Tämän kirjan projektien koodi on avoimen lähdekoodin. Voit ladata sen GitHub-arkistostamme ja jakaa ajatuksesi ja kysymyksesi virallisella foorumillamme. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Foorumi: https://www.esp32.com/bookc3 Koko kirjan osia on korostettu alla olevan kuvan mukaisesti.
Lähdekoodi Tässä kirjassa korostamme teorian ja käytännön yhdistelmää, ja näin ollen laitamme lähes jokaiseen lukuun Smart Light -projektista käytännön osion. Vastaavat vaiheet ja lähdesivu merkitään kahden rivin väliin, jotka alkavat kirjaimella tag Lähdekoodi.
HUOMAUTUS/VINKKEJÄ Täältä voit löytää tärkeitä tietoja ja muistutuksia ohjelman onnistuneesta virheenkorjauksesta. Ne merkitään kahden paksun viivan väliin, jotka alkavat kirjaimella tag HUOM tai VINKKEJÄ.
Suurin osa tämän kirjan komennoista suoritetaan Linuxissa merkin "$" kehotteena. Jos komennon suorittaminen edellyttää pääkäyttäjän oikeuksia, kehote korvataan merkillä #. Mac-järjestelmien komentokehote on "%", kuten käytetään kohdassa 4.2.3 ESP-IDF:n asentaminen Maciin.
Tämän kirjan leipäteksti painetaan peruskirjassa, kun taas koodi examples, komponentit, funktiot, muuttujat, koodi file nimet, koodihakemistot ja merkkijonot ovat Courier Newissa.
Komennot tai tekstit, jotka käyttäjän on syötettävä, ja komennot, jotka voidaan syöttää painamalla Enter-näppäintä, tulostetaan Courier New lihavoituna. Lokit ja koodilohkot esitetään vaaleansinisinä laatikoina.
Exampseuraavat:
Toiseksi, käytä esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py luomaan NVS-osion binaari. file kehityspalvelimessa seuraavalla komennolla:
$ python $IDF PATH/komponentit/nvs flash/nvs-osion generaattori/nvs-osio gen.py –input mass prod.csv –output mass prod.bin –koko NVS OSIOKOKO

Luku 1

Johdanto

to

IoT

20-luvun lopulla tietokoneverkkojen ja viestintätekniikoiden nousun myötä Internet integroitui nopeasti ihmisten elämään. Internet-teknologian kypsyessä edelleen syntyi ajatus esineiden Internetistä (IoT). Kirjaimellisesti IoT tarkoittaa Internetiä, jossa asiat ovat yhteydessä toisiinsa. Alkuperäinen Internet rikkoo tilan ja ajan rajoja ja kaventaa "henkilön ja henkilön" välistä etäisyyttä, kun taas IoT tekee "asioista" tärkeän osallistujan, joka tuo "ihmiset" ja "asiat" lähemmäksi toisiaan. IoT:stä tulee lähitulevaisuudessa tietoteollisuuden liikkeellepaneva voima.
Joten mikä on esineiden internet?
Esineiden Internetiä on vaikea määritellä tarkasti, koska sen merkitys ja laajuus kehittyvät jatkuvasti. Vuonna 1995 Bill Gates esitti ensimmäisen kerran idean IoT:stä kirjassaan The Road Ahead. Yksinkertaisesti sanottuna IoT:n avulla objektit voivat vaihtaa tietoja keskenään Internetin kautta. Sen perimmäisenä tavoitteena on perustaa "kaiken Internet". Tämä on IoT:n varhainen tulkinta sekä fantasia tulevaisuuden teknologiasta. Kolmekymmentä vuotta myöhemmin, talouden ja tekniikan nopean kehityksen myötä, fantasia on tulossa todeksi. Uusia konsepteja ilmaantuu jatkuvasti älylaitteista, älykodeista, älykaupungeista, ajoneuvojen Internetistä ja puetettavista laitteista aina IoT-teknologioiden tukemaan "metaversioon". Tässä luvussa aloitamme esineiden internetin arkkitehtuurin selityksellä ja esittelemme sitten yleisimmän IoT-sovelluksen, älykkään kodin, jotta saat selkeän käsityksen IoT:stä.
1.1 IoT:n arkkitehtuuri
Internet of Things sisältää useita teknologioita, joilla on erilaiset sovellustarpeet ja -muodot eri toimialoilla. IoT:n rakenteen, keskeisten teknologioiden ja sovellusominaisuuksien selvittämiseksi on tarpeen luoda yhtenäinen arkkitehtuuri ja standardi tekninen järjestelmä. Tässä kirjassa IoT:n arkkitehtuuri on yksinkertaisesti jaettu neljään kerrokseen: havainto- ja ohjauskerros, verkkokerros, alustakerros ja sovelluskerros.
Havainto- ja ohjauskerros IoT-arkkitehtuurin peruselementtinä havaitsemis- ja ohjauskerros on IoT:n kattavan havaitsemisen ydin. Sen päätehtävä on kerätä, tunnistaa ja hallita tietoa. Se koostuu erilaisista laitteista, joilla on havainnointikyky,
3

tunnistamiseen, hallintaan ja suorittamiseen, ja on vastuussa tietojen, kuten materiaalien ominaisuuksien, käyttäytymistrendien ja laitteen tilan, hakemisesta ja analysoinnista. Tällä tavalla IoT saa tunnistaa todellisen fyysisen maailman. Lisäksi kerros pystyy myös hallitsemaan laitteen tilaa.
Tämän kerroksen yleisimpiä laitteita ovat erilaiset anturit, joilla on tärkeä rooli tiedonkeruussa ja tunnistamisessa. Anturit ovat kuin ihmisen aistielimiä, kuten valoherkät sensorit, jotka vastaavat näköä, akustiset anturit kuulolle, kaasuanturit hajulle ja paine- ja lämpötilaherkät sensorit kosketukseen. Kaikkien näiden "aistillisten elinten" avulla kohteista tulee "eläviä" ja ne kykenevät älykkäästi havaitsemaan, tunnistamaan ja manipuloimaan fyysistä maailmaa.
Verkkokerros Verkkokerroksen päätehtävänä on siirtää tietoa, mukaan lukien havainnointi- ja ohjauskerrokselta saatu data määritettyyn kohteeseen, sekä sovelluskerroksesta antamat komennot takaisin havainto- ja ohjauskerrokseen. Se toimii tärkeänä viestintäsiltana, joka yhdistää IoT-järjestelmän eri kerroksia. Esineiden Internetin perusmallin luominen edellyttää kahdessa vaiheessa objektien integrointia verkkoon: pääsy Internetiin ja tiedonsiirto Internetin kautta.
Pääsy Internetiin Internet mahdollistaa ihmisen ja henkilön välisen yhteyden, mutta se ei sisällytä asioita suureen perheeseen. Ennen IoT:n tuloa useimmat asiat eivät olleet "verkkokelpoisia". Teknologian jatkuvan kehityksen ansiosta IoT onnistuu yhdistämään asioita Internetiin ja toteuttamaan siten "ihmisten ja asioiden" ja "asioiden ja asioiden" välisen yhteyden. Internet-yhteyden toteuttamiseen on kaksi yleistä tapaa: langallinen verkkoyhteys ja langaton verkkoyhteys.
Langallisiin verkkoyhteyksiin kuuluvat Ethernet, sarjaliikenne (esim. RS-232, RS-485) ja USB, kun taas langaton verkkoyhteys riippuu langattomasta tiedonsiirrosta, joka voidaan edelleen jakaa lyhyen kantaman langattomaan viestintään ja pitkän kantaman langattomaan viestintään.
Lyhyen kantaman langaton viestintä sisältää ZigBeen, Bluetoothrin, Wi-Fi:n, Near-Field Communication (NFC) ja Radio Frequency Identification (RFID) -tunnistuksen. Pitkän kantaman langaton viestintä sisältää Enhanced Machine Type Communication (eMTC), LoRa, kapeakaistainen esineiden internet (NB-IoT), 2G, 3G, 4G, 5G jne.
Siirto Internetin kautta Erilaiset Internet-käyttötavat johtavat vastaavaan fyysiseen tiedonsiirtolinkkiin. Seuraava asia on päättää, mitä viestintäprotokollaa käytetään tiedon siirtämiseen. Internet-päätteisiin verrattuna useimmissa IoT-päätteissä on tällä hetkellä vähemmän
4 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

käytettävissä olevat resurssit, kuten prosessointiteho, tallennuskapasiteetti, verkon nopeus jne., joten on tarpeen valita tietoliikenneprotokolla, joka vie vähemmän resursseja IoT-sovelluksissa. Nykyään käytetään laajalti kahta viestintäprotokollaa: Message Queuing Telemetry Transport (MQTT) ja Constrained Application Protocol (CoAP).
Alustakerros Alustakerros viittaa pääasiassa IoT-pilvialustoille. Kun kaikki IoT-päätelaitteet ovat verkotettuja, niiden tiedot on koottava IoT-pilvialustaan, jotta ne voidaan laskea ja tallentaa. Alustakerros tukee pääasiassa IoT-sovelluksia, jotka helpottavat massiivisten laitteiden pääsyä ja hallintaa. Se yhdistää IoT-päätteet pilvialustaan, kerää päätetietoja ja antaa komentoja päätelaitteille kauko-ohjauksen toteuttamiseksi. Välipalveluna laitteiden määrittämisessä teollisuuden sovelluksiin alustakerroksella on yhdistävä rooli koko IoT-arkkitehtuurissa, sillä se kantaa abstraktia liiketoimintalogiikkaa ja standardoitua ydintietomallia, joka ei ainoastaan ​​mahdollista nopeaa laitteiden pääsyä, vaan tarjoaa myös tehokkaita modulaarisia ominaisuuksia. vastaamaan erilaisiin tarpeisiin teollisuuden sovellusten skenaarioissa. Alustakerros sisältää pääasiassa toiminnallisia moduuleja, kuten laitepääsyn, laitehallinnan, tietoturvan hallinnan, viestiviestinnän, toiminnan ja ylläpidon valvontaa sekä datasovelluksia.
· Laitteen käyttö, terminaalien ja IoT-pilvialustojen välisen yhteyden ja viestinnän toteuttaminen.
· Laitehallinta, mukaan lukien toiminnot, kuten laitteen luominen, laitteen ylläpito, tietojen muuntaminen, tietojen synkronointi ja laitteiden jakelu.
· Turvallisuuden hallinta, joka varmistaa IoT-tiedonsiirron turvallisuuden tietoturvatodennuksen ja viestintäturvallisuuden näkökulmasta.
· Viestiviestintä sisältää kolme siirtosuuntaa, eli pääte lähettää dataa IoT-pilvialustaan, IoT-pilvialusta lähettää dataa palvelinpuolelle tai muille IoT-pilvialustoille ja palvelinpuoli etäohjaa IoT-laitteita.
· O&M-valvonta, johon sisältyy seuranta ja diagnoosi, laiteohjelmistopäivitys, online-virheenkorjaus, lokipalvelut jne.
· Datasovellukset, joihin sisältyy tietojen tallennus, analysointi ja soveltaminen.
Sovelluskerros Sovelluskerros käyttää alustakerroksen tietoja sovelluksen hallintaan, suodattamiseen ja käsittelyyn työkaluilla, kuten tietokantoilla ja analyysiohjelmistoilla. Saatua dataa voidaan käyttää todellisiin IoT-sovelluksiin, kuten älykkääseen terveydenhuoltoon, älykkääseen maatalouteen, älykkäisiin koteihin ja älykkäisiin kaupunkeihin.
Tietysti IoT:n arkkitehtuuri voidaan jakaa useampaan kerrokseen, mutta riippumatta siitä kuinka monesta kerroksesta se koostuu, perusperiaate pysyy olennaisesti samana. Oppiminen
Luku 1. Johdatus IoT:hen 5

IoT-arkkitehtuuri auttaa syventämään ymmärrystämme IoT-tekniikoista ja rakentamaan täysin toimivia IoT-projekteja.
1.2 IoT-sovellus älykkäissä kodeissa
IoT on tunkeutunut kaikille elämänaloille, ja meille läheisin IoT-sovellus on älykäs koti. Monet perinteiset laitteet on nyt varustettu yhdellä tai useammalla IoT-laitteella, ja monet uudet talot on suunniteltu alusta alkaen IoT-tekniikoilla. Kuva 1.1 näyttää joitain yleisiä älykodin laitteita.
Kuva 1.1. Yleiset älykodin laitteet Älykodin kehitys voidaan yksinkertaisesti jakaa älytuotteisiintage, kohtausten yhteenliittäminen stage ja älykäs stage, kuten kuvassa 1.2.
Kuva 1.2. Kehitys stage of smart home 6 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Ensimmäinen stage on älykkäistä tuotteista. Perinteisistä kodeista poiketen älykodeissa IoT-laitteet vastaanottavat signaaleja antureilla ja ne on verkotettu langattomien viestintätekniikoiden, kuten Wi-Fi, Bluetooth LE ja ZigBee, kautta. Käyttäjät voivat ohjata älytuotteita monin eri tavoin, kuten älypuhelinsovelluksia, ääniavustajia, älykaiuttimien ohjausta jne.tage keskittyy kohtausten yhteenliittämiseen. Tässä stage, kehittäjät eivät enää harkitse yksittäisen älytuotteen ohjaamista, vaan kahden tai useamman älytuotteen yhdistämistä, automatisoimista tietyssä määrin ja lopuksi mukautetun kohtaustilan muodostamista. esimampKun käyttäjä painaa mitä tahansa kuvausohjelman painiketta, valot, verhot ja ilmastointilaitteet mukautuvat automaattisesti esiasetusten mukaan. Tietenkin edellytyksenä on, että linkityslogiikka määritetään helposti, mukaan lukien laukaisuehdot ja suoritustoimet. Kuvittele, että ilmastoinnin lämmitystila laukeaa, kun sisälämpötila laskee alle 10 °C; että kello 7 aamulla soitetaan musiikkia käyttäjän herättämiseksi, älyverhot avautuvat ja riisinkeitin tai leivänpaahdin käynnistyy älypistorasian kautta; kun käyttäjä nousee ylös ja lopettaa pesun, aamiainen on jo tarjoiltu, jotta töihin meno ei viivy. Kuinka kätevää elämästämme on tullut! Kolmas stage menee älykkyyteen stage. Kun älykkään kodin laitteita käytetään enemmän, myös luotujen tietojen tyypit lisääntyvät. Pilvitekniikan, big datan ja tekoälyn avulla se on kuin "älykkäämmät aivot" olisi istutettu älykoteihin, jotka eivät enää vaadi käyttäjältä toistuvia komentoja. He keräävät tietoja aikaisemmista vuorovaikutuksista ja oppivat käyttäjien käyttäytymismalleja ja mieltymyksiä toimintojen automatisoimiseksi ja antamaan suosituksia päätöksentekoon. Tällä hetkellä useimmat älykkäät kodit ovat paikalla yhteenliittämisen stage. Kun älykkäiden tuotteiden levinneisyysaste ja älykkyys lisääntyvät, esteitä viestintäprotokollien välillä poistetaan. Tulevaisuudessa älykodeista tulee väistämättä todella ”älykkäitä”, kuten Iron Manissa Jarvisin tekoälyjärjestelmä, joka ei ainoastaan ​​auta käyttäjää ohjaamaan erilaisia ​​laitteita, hoitamaan päivittäisiä asioita, vaan sillä on myös superlaskentatehoa ja ajattelukykyä. Älykkäissä stage, ihmiset saavat parempia palveluja sekä määrällisesti että laadullisesti.
Luku 1. Johdatus IoT:hen 7

8 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Luku 2 IoT-projektin esittely ja käytäntö
Luvussa 1 esittelimme IoT:n arkkitehtuuria ja havainto- ja ohjauskerroksen, verkkokerroksen, alustakerroksen ja sovelluskerroksen rooleja ja keskinäisiä suhteita sekä älykkään kodin kehitystä. Teoreettisen tiedon tunteminen ei kuitenkaan riitä, kuten maalaamaan opetettaessa. Meidän täytyy "likata kätemme" toteuttaaksemme IoT-projektit käytännössä, jotta voimme todella hallita teknologiaa. Lisäksi kun projekti siirtyy massatuotantoon stage, on tarpeen ottaa huomioon enemmän tekijöitä, kuten verkkoyhteys, konfigurointi, IoT-pilvialustan vuorovaikutus, laiteohjelmiston hallinta ja päivitykset, massatuotannon hallinta ja suojauskonfiguraatio. Joten mihin meidän tulee kiinnittää huomiota, kun kehitämme kokonaista IoT-projektia? Luvussa 1 mainittiin, että älykäs koti on yksi yleisimmistä IoT-sovellusskenaarioista ja älyvalot ovat yksi perus- ja käytännöllisimmistä laitteista, joita voidaan käyttää kodeissa, hotelleissa, kuntosaleissa, sairaaloissa jne. Tässä kirjassa otamme lähtökohtana älyvaloprojektin rakentamisen, selitämme sen komponentit ja ominaisuudet sekä annamme opastusta projektin kehittämiseen. Toivomme, että voit tehdä johtopäätöksiä tästä tapauksesta luodaksesi lisää IoT-sovelluksia.
2.1 Johdatus tyypillisiin IoT-projekteihin
Kehityksen kannalta IoT-projektien perustoiminnalliset moduulit voidaan luokitella IoT-laitteiden ohjelmisto- ja laitteistokehitykseen, asiakassovelluskehitykseen ja IoT-pilvialustan kehittämiseen. On tärkeää selventää perustoiminnalliset moduulit, joita kuvataan tarkemmin tässä osiossa.
2.1.1 Yleisten IoT-laitteiden perusmoduulit
IoT-laitteiden ohjelmisto- ja laitteistokehitys sisältää seuraavat perusmoduulit: Tiedonkeruu
IoT-arkkitehtuurin pohjakerroksena havaitsemis- ja ohjauskerroksen IoT-laitteet yhdistävät anturit ja laitteet sirujensa ja oheislaitteidensa kautta tiedonkeruun ja toiminnan ohjauksen saavuttamiseksi.
9

Tilin sidonta ja alkukonfigurointi Useimmissa IoT-laitteissa tilin sidonta ja alkukonfigurointi suoritetaan yhdessä toimintaprosessissa, esimample, yhdistämällä laitteet käyttäjiin määrittämällä Wi-Fi-verkon.
Vuorovaikutus IoT-pilvialustojen kanssa IoT-laitteiden valvomiseksi ja ohjaamiseksi on myös tarpeen liittää ne IoT-pilvialustoille, jotta voidaan antaa komentoja ja raportoida tila toistensa vuorovaikutuksen kautta.
Laiteohjaus Kun laitteet on yhdistetty IoT-pilvialustoille, ne voivat kommunikoida pilven kanssa ja olla rekisteröityjä, sidottuja tai ohjattuja. Käyttäjät voivat tiedustella tuotteen tilaa ja suorittaa muita toimintoja älypuhelinsovelluksella IoT-pilvialustojen tai paikallisten viestintäprotokollien kautta.
Firmware-päivitys IoT-laitteet voivat myös päivittää laiteohjelmiston valmistajien tarpeiden mukaan. Vastaanottamalla pilven lähettämiä komentoja, laiteohjelmiston päivitys ja versionhallinta toteutuvat. Tämän laiteohjelmiston päivitysominaisuuden avulla voit jatkuvasti parantaa IoT-laitteiden toimintoja, korjata vikoja ja parantaa käyttökokemusta.
2.1.2 Asiakassovellusten perusmoduulit
Asiakassovellukset (esim. älypuhelinsovellukset) sisältävät pääasiassa seuraavat perusmoduulit:
Tilijärjestelmä ja valtuutus Se tukee tilien ja laitteen valtuutusta.
Laiteohjaus Älypuhelinsovellukset on yleensä varustettu ohjaustoiminnoilla. Käyttäjät voivat helposti muodostaa yhteyden IoT-laitteisiin ja hallita niitä milloin tahansa ja missä tahansa älypuhelinsovellusten kautta. Reaalimaailman älykodissa laitteita ohjataan pääosin älypuhelinsovelluksilla, mikä paitsi mahdollistaa älykkään laitteiden hallinnan, myös säästää työvoimakustannuksia. Siksi laiteohjaus on välttämätön asiakassovelluksille, kuten laitetoimintojen attribuuttien hallintaan, kohtausten hallintaan, ajoitukseen, kaukosäätimeen, laitteiden kytkemiseen jne. Älykodin käyttäjät voivat myös muokata kohtauksia henkilökohtaisten tarpeiden mukaan ohjaamalla valaistusta, kodinkoneita, sisäänkäyntiä jne., jotta kotielämästä tulee mukavampaa ja mukavampaa. He voivat ajastaa ilmastoinnin, sammuttaa sen etänä, sytyttää käytävän valon automaattisesti, kun ovi avataan, tai siirtyä "teatteri"-tilaan yhdellä painikkeella.
Notification Client -sovellukset päivittävät IoT-laitteiden reaaliaikaisen tilan ja lähettävät hälytyksiä, kun laitteet toimivat epänormaalisti.
10 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Myynnin jälkeinen asiakaspalvelu Älypuhelinsovellukset voivat tarjota tuotteille myynnin jälkeisiä palveluita, jotka ratkaisevat IoT-laitteiden vikoja ja teknisiä toimintoja koskevat ongelmat oikea-aikaisesti.
Suositellut toiminnot Eri käyttäjien tarpeisiin voidaan lisätä muita toimintoja, kuten Shake, NFC, GPS jne. GPS voi auttaa asettamaan kohtaustoimintojen tarkkuuden sijainnin ja etäisyyden mukaan, kun taas Shake-toiminnon avulla käyttäjät voivat asettaa komennot, jotka suoritetaan tietylle laitteelle tai kohtaukselle ravistamalla.
2.1.3 Yleisten IoT-pilvialustojen esittely
IoT-pilvialusta on all-in-one-alusta, joka yhdistää toimintoja, kuten laitehallinnan, tietoturvaviestinnän ja ilmoitusten hallinnan. Kohderyhmän ja saavutettavuuden mukaan IoT-pilvialustat voidaan jakaa julkisiin IoT-pilvialustoihin (jäljempänä "julkinen pilvi") ja yksityisiin IoT-pilvialustoihin (jäljempänä "yksityinen pilvi").
Julkinen pilvi tarkoittaa yleensä jaettuja IoT-pilvialustoja yrityksille tai yksityishenkilöille, joita ylläpitävät ja ylläpitävät alustan tarjoajat ja jotka jaetaan Internetin kautta. Se voi olla ilmainen tai edullinen, ja se tarjoaa palveluita kaikkialla avoimessa julkisessa verkossa, kuten Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT jne. Julkinen pilvi voi tukea tukialustanaan integroida ylävirran palveluntarjoajat ja loppukäyttäjät voivat luoda uuden arvoketjun ja ekosysteemin.
Yksityinen pilvi on rakennettu vain yrityskäyttöön, mikä takaa parhaan hallinnan tietojen, turvallisuuden ja palvelun laadun suhteen. Sen palveluita ja infrastruktuuria ylläpitävät yritykset erikseen, ja myös niitä tukevat laitteistot ja ohjelmistot on omistettu tietyille käyttäjille. Yritykset voivat muokata pilvipalveluita vastaamaan liiketoimintansa tarpeita. Tällä hetkellä osa älykotien valmistajista on jo hankkinut yksityisiä IoT-pilvialustoja ja kehittänyt niiden pohjalta älykotisovelluksia.
Julkisella pilvellä ja yksityisellä pilvellä on oma etunsatages, joka selitetään myöhemmin.
Viestintäyhteyksien saavuttamiseksi on suoritettava vähintään sulautettu kehitys laitepuolella, yrityspalvelimien, IoT-pilvialustojen ja älypuhelinsovellusten ohella. Tällaisen valtavan projektin edessä julkinen pilvi tarjoaa yleensä ohjelmistokehityssarjoja laitepuolen ja älypuhelinsovelluksille prosessin nopeuttamiseksi. Sekä julkinen että yksityinen pilvi tarjoavat palveluita, kuten laitteen pääsyn, laitehallinnan, laitevarjon sekä käytön ja ylläpidon.
Laitteen käyttöoikeus IoT-pilvialustojen ei tarvitse tarjota vain rajapintoja laitteiden käyttöä varten protokollien avulla
Luku 2. Esineiden internet-projektien esittely ja käytäntö 11

kuten MQTT, CoAP, HTTPS ja WebSocket, mutta myös laitteen suojaustodennuksen tehtävä väärennettyjen ja laittomien laitteiden estämiseksi, mikä vähentää tehokkaasti vaarantumisen riskiä. Tällainen autentikointi tukee yleensä erilaisia ​​mekanismeja, joten kun laitteita valmistetaan massatuotannossa, laitevarmenne on esiasetettava valitun todennusmekanismin mukaisesti ja poltettava se laitteisiin.
Laitehallinta IoT-pilvialustojen tarjoama laitehallintatoiminto ei voi ainoastaan ​​auttaa valmistajia seuraamaan laitteidensa aktivointitilaa ja online-tilaa reaaliajassa, vaan se mahdollistaa myös vaihtoehtoja, kuten laitteiden lisäämisen/poistamisen, noudon, ryhmien lisäämisen/poistamisen, laiteohjelmiston päivityksen. ja versionhallinta.
Laitevarjon IoT-pilvialusto voi luoda pysyvän virtuaalisen version (laitevarjon) jokaiselle laitteelle, ja laitevarjon tila voidaan synkronoida ja saada älypuhelinsovelluksella tai muilla laitteilla Internet-siirtoprotokollien kautta. Laitevarjo tallentaa kunkin laitteen viimeisimmän raportoidun tilan ja odotetun tilan, ja vaikka laite olisi offline-tilassa, se voi silti saada tilan kutsumalla API:ita. Device shadow tarjoaa aina päällä olevat API:t, mikä helpottaa laitteiden kanssa vuorovaikutuksessa olevien älypuhelinsovellusten rakentamista.
Käyttö ja ylläpito O&M-toiminto sisältää kolme osaa: · Tilastotietojen näyttäminen IoT-laitteista ja ilmoituksista. · Lokinhallinnan avulla voidaan hakea tietoja laitteen toiminnasta, viestien kulku ylös/alas sekä viestin sisältö. · Laitteen virheenkorjaus tukee komentojen toimitusta, konfiguraatiopäivitystä ja IoT-pilvialustojen ja laiteviestien välisen vuorovaikutuksen tarkistamista.
2.2 Harjoittelu: Smart Light Project
Jokaisen luvun teoreettisen johdannon jälkeen löydät Smart Light -projektiin liittyvän harjoitusosion, joka auttaa sinua saamaan käytännön kokemusta. Projekti perustuu Espressifin ESP32-C3-siruun ja ESP RainMaker IoT Cloud Platformiin, ja se kattaa älyvalotuotteiden langattomat moduulilaitteistot, ESP32C3:een perustuvat älylaitteiden sulautetut ohjelmistot, älypuhelinsovellukset ja ESP RainMaker -vuorovaikutuksen.
Lähdekoodi Paremman oppimisen ja kokemuksen kehittämiseksi tämän kirjan projekti on avoimen lähdekoodin lähde. Voit ladata lähdekoodin GitHub-arkistostamme osoitteessa https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

2.2.1 Hankkeen rakenne
Smart Light -projekti koostuu kolmesta osasta: i. ESP32-C3:een perustuvat älykkäät valolaitteet, jotka vastaavat vuorovaikutuksesta IoT-pilvialustojen kanssa sekä LEDin kytkimen, kirkkauden ja värilämpötilan ohjaamisesta.amp helmiä. ii. Älypuhelinsovellukset (mukaan lukien Android- ja iOS-käyttöjärjestelmät tablet-sovellukset), jotka vastaavat älyvalotuotteiden verkkokonfiguroinnista sekä niiden tilan kyselystä ja hallinnasta.
iii. ESP RainMakeriin perustuva IoT-pilvialusta. Yksinkertaistamisen vuoksi tarkastelemme tässä kirjassa IoT-pilvialustaa ja yrityspalvelinta kokonaisuutena. Yksityiskohdat ESP RainMakerista annetaan luvussa 3.
Smart Light -projektirakenteen ja IoT-arkkitehtuurin välinen vastaavuus on esitetty kuvassa 2.1.
Kuva 2.1. Älykkään valoprojektin rakenne
2.2.2 Projektitoiminnot
Jaettuna rakenteen mukaan kunkin osan toiminnot ovat seuraavat. Älykkäät valolaitteet
· Verkkoasetukset ja -yhteys. · LED PWM -ohjaus, kuten kytkin, kirkkaus, värilämpötila jne. · Automaatio tai kohtauksen ohjaus, esim. aikakytkin. · Flashin salaus ja suojattu käynnistys. · Laiteohjelmiston päivitys ja versionhallinta.
Luku 2. Esineiden internet-projektien esittely ja käytäntö 13

Älypuhelinsovellukset · Verkkoasetukset ja laitesidonta. · Älykäs valotuotteiden ohjaus, kuten kytkin, kirkkaus, värilämpötila jne. · Automaatio- tai kohtausasetukset, esim. aikakytkin. · Paikallis-/kaukosäädin. · Käyttäjän rekisteröinti, kirjautuminen jne.
ESP RainMaker IoT-pilvialusta · Ottaa käyttöön IoT-laitteiden käytön. · Laitteen käyttösovellusliittymien tarjoaminen älypuhelinsovelluksille. · Laiteohjelmiston päivitys ja versionhallinta.
2.2.3 Laitteiston valmistelu
Jos olet kiinnostunut hankkeen toteuttamisesta, tarvitset myös seuraavat laitteet: älyvalot, älypuhelimet, Wi-Fi-reitittimet sekä kehitysympäristön asennusvaatimukset täyttävän tietokoneen. Älykkäät valot
Älyvalot ovat uudentyyppisiä lamppuja, joiden muoto on sama kuin tavallisella hehkulampulla. Älyvalo koostuu kondensaattorilla säädetystä virtalähteestä, langattomasta moduulista (sisäänrakennettu ESP32-C3), LED-ohjaimesta ja RGB LED-matriisista. Kun 15 V DC voltagUlostulo kondensaattorin sammutuksen, diodin tasasuuntauksen ja säädön jälkeen antaa energiaa LED-ohjaimelle ja LED-matriisille. LED-ohjain voi lähettää automaattisesti korkeita ja matalia tasoja tietyin väliajoin ja vaihtaa RGB-LED-matriisin suljetun (valot päällä) ja auki (valot pois päältä) välillä, jotta se voi lähettää syaania, keltaista, vihreää, violettia, sinistä, punaista ja valkoinen valo. Langaton moduuli vastaa yhteyden muodostamisesta Wi-Fi-reitittimeen, älyvalojen tilan vastaanottamisesta ja raportoinnista sekä LEDin ohjauskomentojen lähettämisestä.
Kuva 2.2. Simuloitu älyvalo
Varhaisessa kehityksessä stage, voit simuloida älyvaloa käyttämällä ESP32-C3DevKitM-1-korttia, joka on yhdistetty RGB LED l: henamp helmiä (katso kuva 2.2). Mutta sinun pitäisi
14 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Huomaa, että tämä ei ole ainoa tapa koota älyvalo. Tämän kirjan projektin laitteistosuunnittelu sisältää vain langattoman moduulin (sisäänrakennettu ESP32-C3), mutta ei täydellistä älykästä valolaitteistoa. Lisäksi Espressif tuottaa myös ESP32-C3-pohjaisen äänenkehityslevyn ESP32C3-Lyra valojen ohjaamiseen äänellä. Kortilla on liitännät mikrofoneille ja kaiuttimille ja se voi ohjata LED-nauhoja. Sitä voidaan käyttää erittäin edullisien, suorituskykyisten äänilähetysten ja rytmivalonauhojen kehittämiseen. Kuvassa 2.3 näkyy ESP32-C3Lyra-kortti, joka on yhdistetty 40 LED-valon nauhaan.
Kuva 2.3. ESP32-C3-Lyra yhdistetty 40 LED-valon nauhaan
Älypuhelimet (Android/iOS) Smart Light -projekti sisältää älypuhelinsovelluksen kehittämisen älyvalotuotteiden määrittämiseen ja ohjaamiseen.
Wi-Fi-reitittimet Wi-Fi-reitittimet muuntavat langallisen verkon signaalit ja mobiiliverkon signaalit langattoman verkon signaaleiksi, jotta tietokoneet, älypuhelimet, tabletit ja muut langattomat laitteet voivat muodostaa yhteyden verkkoon. esimampKodin laajakaista tarvitsee vain liittää Wi-Fi-reitittimeen, jotta Wi-Fi-laitteet voidaan verkottaa langattomasti. Wi-Fi-reitittimien tukema valtavirran protokollastandardi on IEEE 802.11n, jonka keskimääräinen TxRate on 300 Mbps tai enintään 600 Mbps. Ne ovat taaksepäin yhteensopivia IEEE 802.11b ja IEEE 802.11g kanssa. Espressifin ESP32-C3-siru tukee IEEE 802.11b/g/n -standardia, joten voit valita yksikaistaisen (2.4 GHz) tai kaksikaistaisen (2.4 GHz ja 5 GHz) Wi-Fi-reitittimen.
Tietokoneen (Linux/macOS/Windows) kehitysympäristö esitellään luvussa 4. Luku 2. Esineiden internet-projektien esittely ja käytäntö 15

2.2.4 Kehitysprosessi
Kuva 2.4. Smart Light -projektin kehittämisen vaiheet
Laitteistosuunnittelu IoT-laitteiden laitteistosuunnittelu on olennaista IoT-projektille. Täydellinen älyvaloprojekti on tarkoitettu tuottamaan alamp toimii sähköverkon alla. Eri valmistajat tuottavat lamps eri tyylejä ja ohjaintyyppejä, mutta niiden langattomat moduulit ovat yleensä samaa toimintoa. Smart Ligh -projektin kehitysprosessin yksinkertaistamiseksi tämä kirja kattaa vain langattomien moduulien laitteistosuunnittelun ja ohjelmistokehityksen.
IoT-pilvialustan konfigurointi Jotta voit käyttää IoT-pilvialustoja, sinun on määritettävä projektit taustalla, kuten tuotteiden luominen, laitteiden luominen, laitteen ominaisuuksien asettaminen jne.
Sulautettu ohjelmistokehitys IoT-laitteille Toteuta odotetut toiminnot ESP-IDF:llä, Espressifin laitepuolen SDK:lla, mukaan lukien yhteyden muodostaminen IoT-pilvialustoille, LED-ajurien kehittäminen ja laiteohjelmiston päivitys.
Älypuhelinsovellusten kehitys Kehitä älypuhelinsovelluksia Android- ja iOS-järjestelmille käyttäjien rekisteröintiin ja sisäänkirjautumiseen, laitehallintaan ja muihin toimintoihin.
IoT-laitteiden optimointi Kun IoT-laitteiden toimintojen peruskehitys on valmis, voit siirtyä optimointitehtäviin, kuten tehooptimointiin.
Massatuotantotestaus Suorita massatuotantotestejä asiaan liittyvien standardien mukaisesti, kuten laitteiden toimintatesti, ikääntymistesti, RF-testi jne.
Yllä luetelluista vaiheista huolimatta Smart Light -projekti ei välttämättä ole tällaisen menettelyn alainen, sillä eri tehtäviä voidaan suorittaa myös samanaikaisesti. esimampsulautettuja ohjelmistoja ja älypuhelinsovelluksia voidaan kehittää rinnakkain. Jotkut vaiheet saattavat myös joutua toistamaan, kuten IoT-laitteiden optimointi ja massatuotannon testaus.
16 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

2.3 Yhteenveto
Tässä luvussa käsittelimme ensin IoT-projektin peruskomponentteja ja toiminnallisia moduuleja, minkä jälkeen esittelimme Smart Light -tapauksen käytäntöön viitaten sen rakenteeseen, toimintoihin, laitteiston valmisteluun ja kehitysprosessiin. Lukijat voivat tehdä johtopäätöksiä käytännöstä ja luottaa siihen, että IoT-projektit voivat tulevaisuudessa toteuttaa mahdollisimman vähän virheitä.
Luku 2. Esineiden internet-projektien esittely ja käytäntö 17

18 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Luku 3

Johdanto

to

ESP

RainMaker

Internet of Things (IoT) tarjoaa loputtomasti mahdollisuuksia muuttaa ihmisten elämäntapaa, mutta IoT-tekniikan kehitys on täynnä haasteita. Julkisten pilvien avulla päätelaitteiden valmistajat voivat toteuttaa tuotteen toimintoja seuraavilla ratkaisuilla:
Ratkaisutoimittajien pilvialustojen perusteella Päätelaitteiden valmistajien tarvitsee vain suunnitella tuotteen laitteisto, sitten liittää laitteisto pilveen mukana tulevalla viestintämoduulilla ja konfiguroida tuotteen toiminnot ohjeiden mukaisesti. Tämä on tehokas lähestymistapa, koska se eliminoi palvelinpuolen ja sovelluspuolen kehittämisen ja toiminnan ja ylläpidon tarpeen. Sen avulla päätelaitteiden valmistajat voivat keskittyä laitteistosuunnitteluun ilman, että heidän tarvitsee harkita pilvikäyttöä. Tällaiset ratkaisut (esim. laitteen laiteohjelmisto ja sovellus) eivät kuitenkaan yleensä ole avoimen lähdekoodin lähdekoodia, joten tuotteen toimintoja rajoittaa palveluntarjoajan pilvialusta, jota ei voi mukauttaa. Samaan aikaan myös käyttäjä- ja laitetiedot kuuluvat pilvialustaan.
Pilvituotteisiin perustuen Tässä ratkaisussa päätelaitteiden valmistajien ei tarvitse vain toteuttaa pilvitoimintoja yhden tai useamman julkisen pilven tarjoaman pilvituotteen avulla laitteistosuunnittelun jälkeen, vaan myös linkittää laitteisto pilveen. esimample, muodostaa yhteyden Amazoniin Web Palvelut (AWS), päätelaitteiden valmistajien on käytettävä AWS-tuotteita, kuten Amazon API Gateway, AWS IoT Core ja AWS Lambda mahdollistaakseen laitteen käytön, kauko-ohjauksen, tietojen tallennuksen, käyttäjien hallinnan ja muut perustoiminnot. Se ei ainoastaan ​​pyydä päätelaitteiden valmistajia käyttämään ja konfiguroimaan pilvituotteita joustavasti syvällisen ymmärryksen ja runsaan kokemuksen avulla, vaan myös ottamaan huomioon rakennus- ja ylläpitokustannukset alkuvaiheessa ja myöhemmissä osissa.tages Tämä asettaa suuria haasteita yhtiön energialle ja resursseille.
Julkisiin pilviin verrattuna yksityiset pilvet rakennetaan yleensä tiettyjä projekteja ja tuotteita varten. Yksityisille pilvikehittäjille annetaan suurin vapaus protokollasuunnittelussa ja liiketoimintalogiikan toteutuksessa. Päätevalmistajat voivat tehdä tuotteita ja suunnittelusuunnitelmia mielensä mukaan sekä integroida ja tehostaa käyttäjätietoja helposti. Yhdistetään julkisen pilven korkea turvallisuus, skaalautuvuus ja luotettavuus AdvaniintagEspressif julkaisi ESP:n
19

RainMaker, syvästi integroitu yksityinen pilviratkaisu, joka perustuu Amazon-pilveen. Käyttäjät voivat ottaa käyttöön ESP RainMakerin ja rakentaa yksityisen pilven yksinkertaisesti AWS-tilin avulla.
3.1 Mikä ESP RainMaker on?
ESP RainMaker on täydellinen AIoT-alusta, joka on rakennettu useista kypsistä AWS-tuotteista. Se tarjoaa erilaisia ​​massatuotantoon tarvittavia palveluita, kuten laitepilvikäyttöä, laitepäivitystä, taustahallintaa, kolmannen osapuolen kirjautumista, puheintegraatiota ja käyttäjien hallintaa. Käyttämällä AWS:n tarjoamaa Serverless Application Repository (SAR) -sovellusvarastoa päätelaitteiden valmistajat voivat nopeasti ottaa ESP RainMakerin käyttöön AWS-tileilleen, mikä on aikaatehokasta ja helppokäyttöistä. Espressifin hallinnoima ja ylläpitämä ESP RainMakerin käyttämä SAR auttaa kehittäjiä alentamaan pilven ylläpitokustannuksia ja nopeuttamaan AIoT-tuotteiden kehitystä, mikä luo turvallisia, vakaita ja muokattavia AIoT-ratkaisuja. Kuva 3.1 esittää ESP RainMakerin arkkitehtuuria.
Kuva 3.1. ESP RainMakerin arkkitehtuuri
Espressifin ESP RainMaker julkinen palvelin on ilmainen kaikille ESP:n harrastajille, tekijöille ja kouluttajille ratkaisujen arviointia varten. Kehittäjät voivat kirjautua sisään Apple-, Google- tai GitHub-tileillä ja rakentaa nopeasti omia IoT-sovellusprototyyppejä. Julkinen palvelin yhdistää Alexan ja Google Homen ja tarjoaa ääniohjauspalveluita, joita tukevat Alexa Skill ja Google Actions. Sen semanttista tunnistustoimintoa käyttävät myös kolmannet osapuolet. RainMaker IoT -laitteet reagoivat vain tiettyihin toimiin. Katso kattava luettelo tuetuista äänikomennoista kolmansien osapuolien alustoista. Lisäksi Espressif tarjoaa julkisen RainMaker-sovelluksen, jonka avulla käyttäjät voivat ohjata tuotteita älypuhelimien kautta. 20 ESP32-C3 Wireless Adventure: Kattava IoT:n opas

3.2 ESP RainMakerin käyttöönotto
Kuten kuvasta 3.2 näkyy, ESP RainMaker koostuu neljästä osasta: · Claiming Service, jonka avulla RainMaker-laitteet voivat hankkia varmenteita dynaamisesti. · RainMaker Cloud (tunnetaan myös nimellä pilvitausta), joka tarjoaa palveluita, kuten viestien suodatuksen, käyttäjien hallinnan, tietojen tallennuksen ja kolmannen osapuolen integraatiot. · RainMaker Agent, jonka avulla RainMaker-laitteet voivat muodostaa yhteyden RainMaker Cloudiin. · RainMaker-asiakasohjelma (RainMaker-sovellus tai CLI-komentosarjat) hallintaan, käyttäjien luomiseen, laitteiden yhdistämiseen ja hallintaan jne.
Kuva 3.2. ESP RainMakerin rakenne
ESP RainMaker tarjoaa täydellisen työkalusarjan tuotekehitykseen ja massatuotantoon, mukaan lukien: RainMaker SDK
RainMaker SDK perustuu ESP-IDF:ään ja tarjoaa laitepuolen agentin ja siihen liittyvien C-sovellusliittymien lähdekoodin laiteohjelmistokehitystä varten. Kehittäjien tarvitsee vain kirjoittaa sovelluslogiikka ja jättää loput RainMaker-kehykselle. Lisätietoja C-sovellusliittymistä on osoitteessa https://bookc3.espressif.com/rm/c-api-reference. RainMaker App RainMaker Appin julkinen versio antaa kehittäjille mahdollisuuden suorittaa laitteiden hallintaa sekä hallita ja kysellä laitteiden tilaa (esim. älyvalaistustuotteet). Se on saatavana sekä iOS- että Android-sovelluskaupoista. Katso lisätietoja luvusta 10. REST API:t REST API:t auttavat käyttäjiä rakentamaan omia RainMaker Appin kaltaisia ​​sovelluksia. Lisätietoja on osoitteessa https://swaggerapis.rainmaker.espressif.com/.
Luku 3. ESP RainMaker 21:n esittely

Python-sovellusliittymät Python-pohjainen CLI, joka tulee RainMaker SDK:n mukana, toimitetaan toteuttamaan kaikki älypuhelimen ominaisuuksia vastaavat toiminnot. Lisätietoja Python-sovellusliittymistä on osoitteessa https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, jolla on korkeampi käyttöoikeus, tarjotaan ESP RainMakerin yksityiselle käyttöönotolle laitevarmenteiden luomiseksi joukkona.
3.2.1 Ilmoituspalvelu
Kaikki RainMaker-laitteiden ja pilvitaustan välinen viestintä tapahtuu MQTT+TLS:n kautta. ESP RainMakerin yhteydessä "Claiming" on prosessi, jossa laitteet hankkivat sertifikaatit Claiming Service -palvelusta muodostaakseen yhteyden pilvitaustajärjestelmään. Huomaa, että Claiming Service koskee vain julkista RainMaker-palvelua, kun taas yksityisen käyttöönoton laitevarmenteet on luotava joukkona Admin CLI:n kautta. ESP RainMaker tukee kolmen tyyppistä korvausvaatimuspalvelua: Self Claiming
Laite itse hakee varmenteet eFuseen esiohjelmoidun salaisen avaimen kautta, kun se on muodostanut yhteyden Internetiin. Host Driven Claiming Sertifikaatit hankitaan kehitysisännältä RainMaker-tilillä. Avustettu hakeminen Varmenteet hankitaan älypuhelinsovellusten kautta provisioinnin aikana.
3.2.2 RainMaker-agentti
Kuva 3.3. RainMaker SDK:n rakenne RainMaker Agentin ensisijainen tehtävä on tarjota liitettävyys ja auttaa sovelluskerrosta käsittelemään uplink-/downlink-pilvitietoja. Se on rakennettu RainMaker SDK 22 ESP32-C3 Wireless Adventure: Kattava opas IoT:n kautta.

ja se on kehitetty todistetun ESP-IDF-kehyksen perusteella käyttämällä ESP-IDF-komponentteja, kuten RTOS, NVS ja MQTT. Kuva 3.3 näyttää RainMaker SDK:n rakenteen.
RainMaker SDK sisältää kaksi tärkeää ominaisuutta.
Yhteys
i. Yhteistyö Claiming Servicen kanssa laitevarmenteiden hankkimiseksi.
ii. Yhdistäminen pilvitaustaohjelmaan käyttämällä suojattua MQTT-protokollaa etäyhteyden tarjoamiseksi ja kauko-ohjauksen, viestiraportoinnin, käyttäjienhallinnan, laitehallinnan jne. toteuttamiseksi. Se käyttää oletusarvoisesti MQTT-komponenttia ESP-IDF:ssä ja tarjoaa abstraktiokerroksen liitäntään muiden kanssa. protokollapinot.
iii. Tarjoaa wifi-provisiokomponentin Wi-Fi-yhteyttä ja provisiointia varten, esp https ota -komponentin OTA-päivityksiä varten ja esp paikallisen ctrl-komponentin paikallisten laitteiden etsintään ja yhdistämiseen. Kaikki nämä tavoitteet voidaan saavuttaa yksinkertaisella konfiguroinnilla.
Tietojenkäsittely
i. Claiming Servicen myöntämien laitesertifikaattien ja RainMakerin käytön aikana tarvittavien tietojen tallentaminen oletusarvoisesti nvs flash -komponentin tarjoaman käyttöliittymän avulla ja API:iden tarjoaminen kehittäjille suoraa käyttöä varten.
ii. Takaisinsoittomekanismin käyttäminen uplink-/downlink-pilvitietojen käsittelemiseen ja tietojen automaattinen poistaminen sovelluskerrokseen, jotta kehittäjät voivat käsitellä niitä helposti. esimampRainMaker SDK tarjoaa monipuoliset rajapinnat TSL-tietojen (Thing Specification Language) luomiseen, joita tarvitaan TSL-mallien määrittämiseen IoT-laitteiden kuvaamiseksi ja toimintojen, kuten ajoituksen, lähtölaskennan ja puheohjauksen, toteuttamiseksi. Interaktiivisia perusominaisuuksia, kuten ajoitusta, varten RainMaker SDK tarjoaa kehitysvapaan ratkaisun, joka voidaan yksinkertaisesti ottaa käyttöön tarvittaessa. Sitten RainMaker-agentti käsittelee tiedot suoraan, lähettää ne pilveen liittyvän MQTT-aiheen kautta ja palauttaa datamuutokset pilvitaustassa takaisinsoittomekanismin kautta.
3.2.3 Pilvitausta
Pilvi-tausta on rakennettu AWS Serverless Computing -tekniikkaan, ja se saavutetaan AWS Cogniton (identiteetin hallintajärjestelmä), Amazon API Gatewayn, AWS Lambdan (palvelimeton laskentapalvelu), Amazon DynamoDB:n (NoSQL-tietokanta), AWS IoT Coren (IoT-käyttöydin, joka tarjoaa MQTT-käytön) kautta. ja sääntösuodatus), Amazon Simple Email Service (SES yksinkertainen sähköpostipalvelu), Amazon CloudFront (nopea toimitusverkko), Amazon Simple Queue Service (SQS-viestijono) ja Amazon S3 (ämpäritallennuspalvelu). Sen tarkoituksena on optimoida skaalautuvuus ja tietoturva. ESP RainMakerin avulla kehittäjät voivat hallita laitteita ilman, että heidän tarvitsee kirjoittaa koodia pilveen. Laitteiden ilmoittamat viestit välitetään läpinäkyvästi osoitteeseen
Luku 3. ESP RainMaker 23:n esittely

sovellusasiakkaat tai muut kolmannen osapuolen palvelut. Taulukko 3.1 näyttää pilvitaustassa käytetyt AWS-pilvituotteet ja -toiminnot sekä lisää tuotteita ja ominaisuuksia kehitteillä.
Taulukko 3.1. Pilvitaustan käyttämät AWS-pilvituotteet ja -toiminnot

RainMakerin käyttämä AWS-pilvituote

Toiminto

AWS Cognito

Käyttäjien tunnistetietojen hallinta ja kolmannen osapuolen kirjautumisten tukeminen

AWS lambda

Pilvitaustan ydinliiketoimintalogiikan toteuttaminen

Amazon Timestream Aikasarjatietojen tallennus

Amazon DynamoDB Tallentaa asiakkaiden yksityisiä tietoja

AWS IoT Core

Tukee MQTT-viestintää

Amazon SES

Sähköpostin lähetyspalvelujen tarjoaminen

Amazon CloudFront Nopeuttaa taustajärjestelmän hallintaa webpääsy sivustolle

Amazon SQS

Viestien välittäminen AWS IoT Coresta

3.2.4 RainMaker Client
RainMaker-asiakkaat, kuten App ja CLI, kommunikoivat pilvitaustan kanssa REST-sovellusliittymien kautta. Yksityiskohtaiset tiedot ja ohjeet REST-sovellusliittymistä löytyvät Espressifin toimittamasta Swagger-dokumentaatiosta. RainMakerin mobiilisovellusohjelma on saatavilla sekä iOS- että Android-järjestelmille. Se mahdollistaa laitteiden hallinnan, hallinnan ja jakamisen sekä lähtölaskentatehtävien luomisen ja sallimisen sekä yhteyden muodostamisen kolmannen osapuolen alustoihin. Se voi ladata automaattisesti käyttöliittymän ja kuvakkeet laitteiden ilmoittaman kokoonpanon mukaan ja näyttää laitteen TSL:n kokonaan.
esimample, jos älyvalo on rakennettu RainMaker SDK:n toimittamaan examples, lampun valon kuvake ja käyttöliittymä ladataan automaattisesti, kun hallinta on valmis. Käyttäjät voivat muuttaa valon väriä ja kirkkautta käyttöliittymän kautta ja saavuttaa kolmannen osapuolen hallinnan linkittämällä Alexa Smart Home Skill tai Google Smart Home Actions ESP RainMaker -tileihinsä. Kuva 3.4 näyttää kuvakkeen ja käyttöliittymän esimamppolttimon valot vastaavasti Alexassa, Google Homessa ja ESP RainMaker Appissa.

24 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

(a) esimample – Alexa

(b) Esimample – Googlen etusivu

(c) Esimample – ESP RainMaker
Kuva 3.4. Esimampkuvake ja lampun valon käyttöliittymä Alexassa, Google Homessa ja ESP RainMaker Appissa
3.3 Harjoittelu: ESP RainMaker -kehityksen avainkohdat
Kun laiteohjainkerros on valmis, kehittäjät voivat alkaa luoda TSL-malleja ja käsitellä downlink-tietoja RainMaker SDK:n tarjoamien API:iden avulla sekä ottaa käyttöön ESP RainMaker -peruspalvelut tuotteen määritelmän ja vaatimusten perusteella.
Luku 3. ESP RainMaker 25:n esittely

Tämän kirjan osiossa 9.4 selitetään LED-älyvalon käyttöönotto RainMakerissa. Virheenkorjauksen aikana kehittäjät voivat käyttää RainMaker SDK:n CLI-työkaluja kommunikoidakseen älyvalon kanssa (tai kutsua Swaggerin REST-sovellusliittymiä).
Luvussa 10 käsitellään REST-sovellusliittymien käyttöä älypuhelinsovellusten kehittämisessä. LED-älyvalojen OTA-päivitykset käsitellään luvussa 11. Jos kehittäjät ovat ottaneet käyttöön ESP Insights -etävalvonnan, ESP RainMaker -hallintataustaohjelma näyttää ESP Insights -tiedot. Yksityiskohdat esitellään luvussa 15.
ESP RainMaker tukee yksityistä käyttöönottoa, joka eroaa julkisesta RainMaker-palvelimesta seuraavilla tavoilla:
Claiming Service Varmenteiden luomiseksi yksityisissä käyttöönottoissa on käytettävä RainMaker Admin CLI:tä vaatimuksen sijaan. Julkisella palvelimella kehittäjille on annettava järjestelmänvalvojan oikeudet laiteohjelmistopäivityksen toteuttamiseen, mutta se ei ole toivottavaa kaupallisissa käyttöönotoissa. Tästä syystä erillistä todennuspalvelua ei voida tarjota itseluottamukselliselle vaatimiselle eikä järjestelmänvalvojan oikeuksia isäntäohjatulle tai avustamalle vaatimuksen tekemiselle.
Puhelinsovellukset Yksityisissä käyttöönotoissa sovellukset on konfiguroitava ja käännettävä erikseen, jotta tilijärjestelmät eivät ole yhteentoimivia.
Kolmannen osapuolen kirjautumiset ja puheintegraatio Kehittäjien on määritettävä asetukset erikseen Google- ja Apple Developer -tilien kautta mahdollistaakseen kolmannen osapuolen kirjautumiset sekä Alexa Skill- ja Google Voice Assistant -integroinnin.
VINKKEJÄ Lisätietoja pilvipalvelun käyttöönotosta on osoitteessa https://customer.rainmaker.espressif. com. Laiteohjelmiston osalta siirtyminen julkiselta palvelimelta yksityiselle palvelimelle vaatii vain laitevarmenteiden vaihtamisen, mikä parantaa huomattavasti siirtymisen tehokkuutta ja pienentää siirron ja toissijaisen virheenkorjauksen kustannuksia.
3.4 ESP RainMakerin ominaisuudet
ESP RainMakerin ominaisuudet on suunnattu pääasiassa kolmeen osa-alueeseen – käyttäjien hallintaan, loppukäyttäjiin ja ylläpitäjiin. Kaikki ominaisuudet ovat tuettuja sekä julkisilla että yksityisillä palvelimilla, ellei toisin mainita.
3.4.1 Käyttäjien hallinta
Käyttäjähallintaominaisuuksien avulla loppukäyttäjät voivat rekisteröityä, kirjautua sisään, vaihtaa salasanoja, hakea salasanoja jne.
26 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Rekisteröidy ja kirjaudu sisään RainMakerin tukemia rekisteröinti- ja kirjautumismenetelmiä ovat: · Sähköpostitunnus + Salasana · Puhelinnumero + Salasana · Google-tili · Apple-tili · GitHub-tili (vain julkinen palvelin) · Amazon-tili (vain yksityinen palvelin)
HUOMAUTUS Rekisteröidy Googlen kautta/Amazon jakaa käyttäjän sähköpostiosoitteen RainMakerin kanssa. Rekisteröidy käyttämällä Applea jakaa valeosoitteen, jonka Apple määrittää käyttäjälle erityisesti RainMaker-palvelua varten. RainMaker-tili luodaan automaattisesti käyttäjille, jotka kirjautuvat sisään Google-, Apple- tai Amazon-tilillä ensimmäistä kertaa.
Vaihda salasana Pätee vain sähköpostiosoitteeseen/puhelinnumeroon perustuvissa kirjautumisissa. Kaikki muut aktiiviset istunnot kirjataan ulos salasanan vaihtamisen jälkeen. AWS Cognito -käyttäytymisen mukaan uloskirjautuneet istunnot voivat pysyä aktiivisina jopa tunnin ajan.
Nouda salasana. Voimassa vain sähköpostiosoitteeseen/puhelinnumeroon perustuvissa kirjautumisissa.
3.4.2 Loppukäyttäjän ominaisuudet
Loppukäyttäjille avoimia ominaisuuksia ovat paikallinen ja kauko-ohjaus ja valvonta, ajoitus, laitteiden ryhmittely, laitteiden jakaminen, push-ilmoitukset ja kolmannen osapuolen integraatiot.
Kaukosäädin ja valvonta · Kysely yhden tai kaikkien laitteiden konfiguraatiosta, parametriarvoista ja yhteyden tilasta. · Aseta parametrit yhdelle tai useammalle laitteelle.
Paikallinen ohjaus ja valvonta Paikallista ohjausta varten matkapuhelin ja laite on kytkettävä samaan verkkoon.
Ajoitus · Käyttäjät määrittävät valmiiksi tietyt toiminnot tiettyyn aikaan. · Laite ei vaadi Internet-yhteyttä aikataulun suorittamisen aikana. · Kerran tai toistaa (määrittämällä päivät) yhdelle tai useammalle laitteelle.
Laitteiden ryhmittely Tukee monitasoista abstraktia ryhmittelyä Ryhmän metatietoja voidaan käyttää kotihuonerakenteen luomiseen.
Luku 3. ESP RainMaker 27:n esittely

Laitteen jakaminen Yksi tai useampi laite voidaan jakaa yhden tai useamman käyttäjän kanssa.
Push-ilmoitukset Loppukäyttäjät saavat push-ilmoituksia tapahtumista, kuten · Uusia laitteita lisätty/poistettu · Laite yhdistetty pilveen · Laite irrotettu pilvestä · Luodut/hyväksytyt/hylätyt laitteiden jakamispyynnöt · Laitteiden ilmoittamat hälytysviestit
Kolmannen osapuolen integraatioita Alexa ja Google Voice Assistant tuetaan ohjaamaan RainMaker-laitteita, mukaan lukien valot, kytkimet, pistorasiat, tuulettimet ja lämpötila-anturit.
3.4.3 Järjestelmänvalvojan ominaisuudet
Järjestelmänvalvojan ominaisuuksien avulla järjestelmänvalvojat voivat ottaa käyttöön laitteiden rekisteröinnin, ryhmittelyn ja OTA-päivitykset view tilastot ja ESP Insights -tiedot.
Laitteen rekisteröinti Luo laitevarmenteita ja rekisteröidy Admin CLI:ssä (vain yksityinen palvelin).
Laitteiden ryhmittely Luo abstrakteja tai jäsenneltyjä ryhmiä laitetietojen perusteella (vain yksityinen palvelin).
Over-the-Air (OTA) -päivitykset Lataa laiteohjelmisto version ja mallin mukaan yhteen tai useampaan laitteeseen tai ryhmään Tarkkaile, peruuta tai arkistoi OTA-töitä.
View tilastot Viewmahdollisia tilastoja ovat: · Laitteen rekisteröinnit (järjestelmänvalvojan rekisteröimät varmenteet) · Laitteiden aktivointi (laite yhdistetty ensimmäistä kertaa) · Käyttäjätilit · Käyttäjä-laiteyhteys
View ESP Insights -tiedot Viewkykeneviä ESP Insights -tietoja ovat: · Virheet, varoitukset ja mukautetut lokit · Kaatumisraportit ja -analyysit · Uudelleenkäynnistyssyyt · Mittarit, kuten muistin käyttö, RSSI jne. · Mukautetut mittarit ja muuttujat
28 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

3.5 Yhteenveto
Tässä luvussa esittelimme joitakin keskeisiä eroja julkisen RainMaker-asennuksen ja yksityisen käyttöönoton välillä. Espressifin lanseeraama yksityinen ESP RainMaker -ratkaisu on erittäin luotettava ja laajennettava. Kaikki ESP32-sarjan sirut on kytketty ja mukautettu AWS:ään, mikä vähentää huomattavasti kustannuksia. Kehittäjät voivat keskittyä prototyyppien todentamiseen ilman, että heidän tarvitsee oppia AWS-pilvituotteista. Selvitimme myös ESP RainMakerin toteutuksen ja ominaisuudet sekä joitakin keskeisiä kohtia alustan avulla tapahtuvaa kehitystä varten.
Skannaa ladataksesi ESP RainMaker for Android Skannaa ladataksesi ESP RainMaker for iOS
Luku 3. ESP RainMaker 29:n esittely

30 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Luku Asennus 4 Kehitysympäristö
Tämä luku keskittyy ESP-IDF:ään, joka on virallinen ohjelmistokehityskehys ESP32-C3:lle. Selitämme ympäristön asettamisen eri käyttöjärjestelmille ja esittelemme ESP-IDF:n projektirakenteen ja rakennusjärjestelmän sekä siihen liittyvien kehitystyökalujen käytön. Sitten esittelemme exän kokoamis- ja ajoprosessinample projektissa, samalla kun se tarjoaa yksityiskohtaisen selityksen tuloslokin jokaisessa vaiheessatage.
4.1 ESP-IDF Overview
ESP-IDF (Espressif IoT Development Framework) on Espressif Technologyn tarjoama yhden luukun IoT-kehityskehys. Se käyttää C/C++:aa pääkehityskielenä ja tukee ristiinkääntämistä yleisissä käyttöjärjestelmissä, kuten Linuxissa, Macissa ja Windowsissa. Examptähän kirjaan sisältyvät ohjelmat on kehitetty ESP-IDF:llä, joka tarjoaa seuraavat ominaisuudet: · SoC-järjestelmätason ajurit. ESP-IDF sisältää ajurit ESP32:lle, ESP32-S2:lle, ESP32-C3:lle,
ja muut sirut. Nämä ajurit sisältävät oheislaitteiden matalan tason (LL) kirjaston, laitteiston abstraktiokerroksen (HAL) kirjaston, RTOS-tuen ja ylemmän tason ohjainohjelmiston jne. · Olennaiset komponentit. ESP-IDF sisältää IoT-kehitykseen tarvittavat peruskomponentit. Tämä sisältää useita verkkoprotokollapinoja, kuten HTTP ja MQTT, virranhallintakehyksen dynaamisella taajuusmodulaatiolla ja ominaisuuksia, kuten Flash Encryption ja Secure Boot jne. · Kehitys- ja tuotantotyökalut. ESP-IDF tarjoaa yleisesti käytettyjä työkaluja rakentamiseen, flashiin ja virheenkorjaukseen kehitys- ja massatuotannon aikana (katso kuva 4.1), kuten CMake-pohjainen rakennusjärjestelmä, GCC-pohjainen ristiinkäännöstyökaluketju ja J.TAG Virheenkorjaustyökalu, joka perustuu OpenOCD:hen jne. On syytä huomata, että ESP-IDF-koodi noudattaa ensisijaisesti Apache 2.0 avoimen lähdekoodin lisenssiä. Käyttäjät voivat kehittää henkilökohtaisia ​​tai kaupallisia ohjelmistoja ilman rajoituksia noudattaen avoimen lähdekoodin lisenssin ehtoja. Lisäksi käyttäjille myönnetään pysyvät patenttilisenssit maksutta, ilman velvollisuutta avoimeen lähdekoodiin tehdä lähdekoodiin tehtyjä muutoksia.
31

Kuva 4.1.

Rakentaminen, vilkkuminen ja virheenkorjaus

työkaluja kehitystä ja massatuotantoa varten

4.1.1 ESP-IDF-versiot
ESP-IDF-koodia isännöidään GitHubissa avoimen lähdekoodin projektina. Tällä hetkellä saatavilla on kolme pääversiota: v3, v4 ja v5. Jokainen pääversio sisältää yleensä erilaisia ​​alaversioita, kuten v4.2, v4.3 ja niin edelleen. Espressif Systems takaa 30 kuukauden tuen virheenkorjauksille ja tietoturvakorjauksille jokaiselle julkaistulle aliversiolle. Siksi myös subversioiden versioita julkaistaan ​​säännöllisesti, kuten v4.3.1, v4.2.2 jne. Taulukko 4.1 näyttää eri ESP-IDF-versioiden tuen tilan Espressif-siruille osoittaen, ovatko ne esiversiossaview stage (tarjoaa tukea esiview versiot, joista saattaa puuttua tiettyjä ominaisuuksia tai dokumentaatiota) tai joita tuetaan virallisesti.

Taulukko 4.1. Eri ESP-IDF-versioiden tukitila Espressif-siruille

Sarja ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

v4.1 tuettu

v4.2 tuettu tuettu

v4.3 tuettu tuettu tuettu

v4.4 tuettu tuettu tuettu tuettu
preview

v5.0 tuettu tuettu tuettu tuettu tuettu esiview

32 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Tärkeimpien versioiden iterointiin liittyy usein kehysrakenteen muutoksia ja käännösjärjestelmän päivityksiä. esimample, suurin muutos v3.*:sta v4.*:een oli käännösjärjestelmän asteittainen siirtyminen Makesta CMakeen. Toisaalta pienempien versioiden iterointiin liittyy yleensä uusien ominaisuuksien lisääminen tai uusien sirujen tuki.
On tärkeää erottaa ja ymmärtää vakaiden versioiden ja GitHub-haarojen välinen suhde. Versiot, jotka on merkitty v*.* tai v*.*.*, edustavat vakaita versioita, jotka ovat läpäisseet täydellisen Espressifin sisäisen testauksen. Korjauksen jälkeen saman version koodi, työkaluketju ja julkaisuasiakirjat pysyvät ennallaan. Kuitenkin GitHub-haarat (esim. julkaisu/v4.3-haara) käyvät läpi usein koodisitoumuksia, usein päivittäin. Siksi kaksi saman haaran koodinpätkää voivat erota toisistaan, joten kehittäjien on päivitettävä koodinsa viipymättä vastaavasti.
4.1.2 ESP-IDF Git Workflow
Espressif noudattaa erityistä Git-työnkulkua ESP-IDF:lle, joka on kuvattu seuraavasti:
· Päähaaraan, joka toimii päähaarana, tehdään uusia muutoksia. Päähaaran ESP-IDF-versiossa on aina -dev tag ilmaisemaan, että se on parhaillaan kehitteillä, kuten v4.3-dev. Päähaaran muutokset otetaan käyttöön ensinviewmuokattu ja testattu Espressifin sisäisessä arkistossa ja siirretty sitten GitHubiin, kun automaattinen testaus on valmis.
· Kun uusi versio on saanut valmiiksi ominaisuuskehityksen päähaarassa ja täytti betatestaukseen pääsyn kriteerit, se siirtyy uuteen haaraan, kuten release/ v4.3. Lisäksi tämä uusi haara on tagged esijulkaisuversiona, kuten v4.3-beta1. Kehittäjät voivat viitata GitHub-alustalle päästäkseen täydelliseen luetteloon sivuliikkeistä ja tags ESP-IDF:lle. On tärkeää huomata, että beta-versiossa (ennen julkaisua) voi silti olla huomattava määrä tunnettuja ongelmia. Koska beta-versiota testataan jatkuvasti, sekä tähän versioon että päähaaraan lisätään virheenkorjauksia samanaikaisesti. Sillä välin päähaara on saattanut jo alkaa kehittää uusia ominaisuuksia seuraavaan versioon. Kun testaus on melkein valmis, haaraan lisätään julkaisukandidaatti (rc) -nimike, joka osoittaa, että se on mahdollinen ehdokas viralliselle julkaisulle, kuten v4.3-rc1. Tällä stage, haara pysyy ennakkoversiona.
· Jos suuria virheitä ei löydetä tai ilmoiteta, julkaisua edeltävä versio saa lopulta pääversiomerkinnän (esim. v5.0) tai pienemmän version etiketin (esim. v4.3) ja siitä tulee virallinen julkaisuversio, joka dokumentoidaan julkaisutietosivulla. Myöhemmin kaikki tässä versiossa havaitut virheet korjataan julkaisuhaarassa. Kun manuaalinen testaus on suoritettu, haaralle määritetään virheenkorjausversion tunniste (esim. v4.3.2), joka näkyy myös julkaisutietosivulla.
Luku 4. Kehitysympäristön määrittäminen 33

4.1.3 Sopivan version valitseminen
Koska ESP-IDF aloitti virallisesti ESP32-C3:n tuen versiosta v4.3, eikä versiota 4.4 ole vielä virallisesti julkaistu tätä kirjaa kirjoitettaessa, tässä kirjassa käytetty versio on v4.3.2, joka on tarkistettu versio. versiosta 4.3. On kuitenkin tärkeää huomata, että kun luet tämän kirjan, v4.4 tai uudemmat versiot saattavat olla jo saatavilla. Kun valitset versiota, suosittelemme seuraavaa:
· Aloitustason kehittäjille on suositeltavaa valita vakaa v4.3-versio tai sen tarkistettu versio, joka vastaa ex-versiotaamptässä kirjassa käytetty versio.
· Massatuotantotarkoituksiin on suositeltavaa käyttää uusinta vakaata versiota, jotta voit hyötyä uusimmasta teknisestä tuesta.
· Jos aiot kokeilla uusia siruja tai tutustua uusiin tuoteominaisuuksiin, käytä päähaaraa. Uusin versio sisältää kaikki uusimmat ominaisuudet, mutta muista, että siinä voi olla tunnettuja tai tuntemattomia virheitä.
· Jos käytössä oleva vakaa versio ei sisällä haluttuja uusia ominaisuuksia ja haluat minimoida päähaaraan liittyvät riskit, harkitse vastaavan julkaisuhaaran, kuten julkaisu/v4.4-haaran, käyttöä. Espressifin GitHub-arkisto luo ensin julkaisun/v4.4-haaran ja julkaisee sitten vakaan v4.4-version tämän haaran tietyn historiallisen tilannekuvan perusteella, kun kaikki ominaisuudet on kehitetty ja testattu.
4.1.4 Yliview ESP-IDF SDK -hakemistosta
ESP-IDF SDK koostuu kahdesta päähakemistosta: esp-idf ja .espressif. Edellinen sisältää ESP-IDF-arkiston lähdekoodin files ja käännösskriptit, kun taas jälkimmäinen tallentaa pääasiassa käännöstyökaluketjuja ja muita ohjelmistoja. Näiden kahden hakemiston tuntemus auttaa kehittäjiä hyödyntämään käytettävissä olevia resursseja paremmin ja nopeuttamaan kehitysprosessia. ESP-IDF:n hakemistorakenne on kuvattu alla:
(1) ESP-IDF-arkiston koodihakemisto (/esp/esp-idf), kuten kuvassa 4.2.
a. Komponenttihakemiston komponentit
Tämä ydinhakemisto integroi lukuisia ESP-IDF:n olennaisia ​​ohjelmistokomponentteja. Projektikoodia ei voida kääntää ilman tämän hakemiston komponentteja. Se sisältää ajurituen erilaisille Espressif-siruille. Oheislaitteiden LL-kirjasto- ja HAL-kirjastoliitännöistä ylemmän tason Driver- ja Virtual-liitäntöihin File System (VFS) -kerroksen tuki, kehittäjät voivat valita sopivat komponentit eri tasoilla kehitystarpeisiinsa. ESP-IDF tukee myös useita vakioverkkoprotokollapinoja, kuten TCP/IP, HTTP, MQTT, WebSocket jne. Kehittäjät voivat käyttää tuttuja käyttöliittymiä, kuten Socket, verkkosovellusten rakentamiseen. Komponentit tarjoavat ymmärrystä
34 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Kuva 4.2. ESP-IDF arkiston koodihakemisto
toiminnallisuutta ja voidaan helposti integroida sovelluksiin, jolloin kehittäjät voivat keskittyä pelkästään liiketoimintalogiikkaan. Joitakin yleisiä osia ovat: · Ajuri: Tämä komponentti sisältää oheislaitteiden ohjainohjelmia eri Espressif-laitteille
sirusarjat, kuten GPIO, I2C, SPI, UART, LEDC (PWM) jne. Tämän komponentin oheisohjainohjelmat tarjoavat siruista riippumattomia abstrakteja rajapintoja. Jokaisella oheislaitteella on yhteinen otsikko file (kuten gpio.h), jolloin ei tarvitse käsitellä erilaisia ​​sirukohtaisia ​​tukikysymyksiä. · esp_wifi: Wi-Fi-verkkoa käsitellään erillisenä oheislaitteena. Se sisältää useita sovellusliittymiä, kuten erilaisten Wi-Fi-ohjaintilojen alustuksen, parametrien määrityksen ja tapahtumien käsittelyn. Tietyt tämän komponentin toiminnot tarjotaan staattisten linkkikirjastojen muodossa. ESP-IDF tarjoaa myös kattavan ohjaindokumentaation käytön helpottamiseksi.
Luku 4. Kehitysympäristön määrittäminen 35

· freertos: Tämä komponentti sisältää täydellisen FreeRTOS-koodin. Tälle käyttöjärjestelmälle kattavan tuen tarjoamisen lisäksi Espressif on myös laajentanut tukeaan kaksiytimisille siruille. Kaksiytimisille siruille, kuten ESP32 ja ESP32-S3, käyttäjät voivat luoda tehtäviä tietyille ytimille.
b. Asiakirjahakemiston asiakirjat
Tämä hakemisto sisältää ESP-IDF:ään liittyviä kehitysdokumentteja, mukaan lukien Aloitusopas, API-viiteopas, kehitysopas jne.
HUOMAUTUS Kun tämän hakemiston sisältö on käännetty automaattisilla työkaluilla, se otetaan käyttöön osoitteessa https://docs.espressif.com/projects/esp-idf. Varmista, että vaihdat asiakirjakohteen ESP32-C3:een ja valitse määritetty ESP-IDF-versio.
c. Käsikirjoitustyökalut
Tämä hakemisto sisältää yleisesti käytetyt käännöstyökalut, kuten idf.py, ja valvontapäätetyökalun idf_monitor.py jne. Alihakemisto cmake sisältää myös ydinkomentosarjan files käännösjärjestelmän, joka toimii perustana ESP-IDF käännössääntöjen toteuttamiselle. Kun ympäristömuuttujia lisätään, työkaluhakemiston sisältö lisätään järjestelmäympäristömuuttujaan, jolloin idf.py voidaan suorittaa suoraan projektipolun alla.
d. Esimample ohjelmahakemisto examples
Tämä hakemisto sisältää laajan kokoelman ESP-IDF example ohjelmat, jotka esittelevät komponenttien sovellusliittymien käyttöä. Examples on järjestetty useisiin alihakemistoihin kategorioidensa perusteella:
· Aloita: Tämä alihakemisto sisältää lähtötason exampkuten "hello world" ja "blink" auttaakseen käyttäjiä ymmärtämään perusasiat.
· bluetooth: Löydät Bluetoothiin liittyviä esimamples täällä, mukaan lukien Bluetooth LE Mesh, Bluetooth LE HID, BluFi ja paljon muuta.
· wifi: Tämä alihakemisto keskittyy Wi-Fi-verkkoihin, esimamples, mukaan lukien perusohjelmat, kuten Wi-Fi SoftAP, Wi-Fi Station, espnow, sekä oma tietoliikenneprotokolla, esim.amples Espressifistä. Se sisältää myös useita sovelluskerroksia, esimamples perustuvat Wi-Fi-verkkoon, kuten Iperf, Sniffer ja Smart Config.
· oheislaitteet: Tämä laaja alihakemisto on edelleen jaettu useisiin alikansioihin oheislaitteiden nimien perusteella. Se sisältää pääasiassa oheisohjaimen esimamples Espressif-siruille, jokaisen example, jossa on useita ala-examples. Esimerkiksi gpio-alihakemisto sisältää kaksi esimamples: GPIO ja GPIO matriisinäppäimistö. On tärkeää huomata, että kaikki exampTämän hakemiston kohdat koskevat ESP32-C3:a.
36 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

esimample, examples in usb/host koskevat vain oheislaitteita, joissa on USB-isäntälaitteisto (kuten ESP32-S3), ja ESP32-C3:ssa ei ole tätä oheislaitetta. Käännösjärjestelmä antaa tyypillisesti kehotteita tavoitetta asetettaessa. README file jokaisesta example luettelee tuetut pelimerkit. · protokollat: Tämä alihakemisto sisältää mmamples eri tietoliikenneprotokollia varten, mukaan lukien MQTT, HTTP, HTTP-palvelin, PPPoS, Modbus, mDNS, SNTP, jotka kattavat laajan valikoiman viestintäprotokollia mm.ampvähemmän tarvitaan IoT:n kehittämiseen. · provisiointi: Täältä löydät provisioinnin esimamples eri menetelmille, kuten Wi-Fi- ja Bluetooth LE -hallintaan. · system: Tämä alihakemisto sisältää järjestelmän virheenkorjauksen esimamples (esim. pinon seuranta, ajonaikainen jäljitys, tehtävien seuranta), virranhallinta esimamples (esim. erilaiset lepotilatilat, rinnakkaisprosessorit) ja esimampliittyvät yleisiin järjestelmäkomponentteihin, kuten konsolipääte, tapahtumasilmukka ja järjestelmäajastin. · varastointi: Tästä alihakemistosta löydät mmampvähemmän kaikista file ESP-IDF:n tukemat järjestelmät ja tallennusmekanismit (kuten Flashin, SD-kortin ja muiden tallennusvälineiden lukeminen ja kirjoittaminen), sekä esim.ampvähemmän haihtumatonta tallennustilaa (NVS), FatFS:ää, SPIFFS:ää ja muita file järjestelmän toiminnot. · turvallisuus: Tämä alihakemisto sisältää mmampjotka liittyvät flash-salaukseen. (2) ESP-IDF-käännöstyökalun ketjuhakemisto (/.espressif), kuten kuvassa 4.3.
Kuva 4.3. ESP-IDF käännöstyökalujen ketjuhakemisto
Luku 4. Kehitysympäristön määrittäminen 37

a. Ohjelmistojen jakeluhakemisto dist
ESP-IDF-työkaluketju ja muut ohjelmistot toimitetaan pakattujen pakettien muodossa. Asennusprosessin aikana asennustyökalu lataa ensin pakatun paketin dist-hakemistoon ja purkaa sen sitten määritettyyn hakemistoon. Kun asennus on valmis, tämän hakemiston sisältö voidaan poistaa turvallisesti.
b. Python-virtuaaliympäristön hakemisto python env
ESP-IDF:n eri versiot perustuvat tiettyihin Python-pakettien versioihin. Näiden pakettien asentaminen suoraan samaan isäntään voi johtaa ristiriitaan pakettiversioiden välillä. Tämän ratkaisemiseksi ESP-IDF käyttää Python-virtuaaliympäristöjä eristääkseen eri pakettiversiot. Tämän mekanismin avulla kehittäjät voivat asentaa useita ESP-IDF-versioita samalle isännälle ja vaihtaa helposti niiden välillä tuomalla erilaisia ​​ympäristömuuttujia.
c. ESP-IDF käännöstyökalujen ketjuhakemistotyökalut
Tämä hakemisto sisältää pääasiassa ristiinkäännöstyökaluja, joita tarvitaan ESP-IDF-projektien kääntämiseen, kuten CMake-työkalut, Ninja-rakennustyökalut ja gcc-työkaluketju, joka luo lopullisen suoritettavan ohjelman. Lisäksi tässä hakemistossa on C/C++-kielen vakiokirjasto ja vastaava otsikko files. Jos ohjelma viittaa järjestelmän otsikkoon file kuten #sisällytä , käännöstyökaluketju paikantaa stdio.h file tässä hakemistossa.
4.2 ESP-IDF-kehitysympäristön määrittäminen
ESP-IDF-kehitysympäristö tukee yleisiä käyttöjärjestelmiä, kuten Windowsia, Linuxia ja macOS:ää. Tässä osiossa esitellään kehitysympäristön määrittäminen jokaisessa järjestelmässä. Suosittelemme ESP32-C3:n kehittämistä Linux-järjestelmälle, jota esitellään yksityiskohtaisesti täällä. Monet ohjeet ovat sovellettavissa eri alustoilla kehitystyökalujen samankaltaisuuden vuoksi. Siksi on suositeltavaa lukea tämän osion sisältö huolellisesti.
HUOMAUTUS Voit katsoa online-asiakirjoja, jotka ovat saatavilla osoitteessa https://bookc3.espressif.com/esp32c3 ja jotka sisältävät tässä osiossa mainitut komennot.
4.2.1 ESP-IDF-kehitysympäristön määrittäminen Linuxissa
ESP-IDF-kehitysympäristöön tarvittavat GNU-kehitys- ja virheenkorjaustyökalut ovat Linux-järjestelmän alkuperäisiä. Lisäksi Linuxin komentorivipääte on tehokas ja käyttäjäystävällinen, joten se on ihanteellinen valinta ESP32-C3-kehitykseen. Sinä pystyt
38 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Valitse haluamasi Linux-jakelu, mutta suosittelemme Ubuntun tai muiden Debian-pohjaisten järjestelmien käyttöä. Tämä osio antaa ohjeita ESP-IDF-kehitysympäristön määrittämiseen Ubuntu 20.04:ssä.
1. Asenna tarvittavat paketit
Avaa uusi pääte ja suorita seuraava komento asentaaksesi kaikki tarvittavat paketit. Komento ohittaa automaattisesti jo asennetut paketit.
$ sudo apt-get asennus git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
VINKKEJÄ Yllä olevaan komentoon on käytettävä järjestelmänvalvojan tiliä ja salasanaa. Oletusarvoisesti mitään tietoja ei näytetä salasanaa syötettäessä. Jatka toimenpidettä vain painamalla “Enter”-näppäintä.
Git on avainkoodinhallintatyökalu ESP-IDF:ssä. Kun kehitysympäristö on määritetty onnistuneesti, voit käyttää git log -komentoa view kaikki koodimuutokset, jotka on tehty ESP-IDF:n luomisen jälkeen. Lisäksi Gitiä käytetään myös ESP-IDF:ssä vahvistamaan versiotiedot, jotka ovat välttämättömiä oikean työkaluketjun asentamiseksi, joka vastaa tiettyjä versioita. Gitin ohella muita tärkeitä järjestelmätyökaluja ovat Python. ESP-IDF sisältää lukuisia Pythonilla kirjoitettuja automaatiokomentosarjoja. Työkaluja, kuten CMake, Ninja-build ja Ccache, käytetään laajalti C/C++-projekteissa ja ne toimivat oletusarvoisina koodin käännös- ja rakennustyökaluina ESP-IDF:ssä. libusb-1.0-0 ja dfu-util ovat tärkeimmät ajurit, joita käytetään USB-sarjaviestintään ja laiteohjelmiston polttamiseen. Kun ohjelmistopaketit on asennettu, voit käyttää apt show -ohjelmaa -komento saadaksesi yksityiskohtaiset kuvaukset jokaisesta paketista. esimample, käytä apt show gitiä tulostaaksesi Git-työkalun kuvaustiedot.
K: Mitä tehdä, jos Python-versiota ei tueta? V: ESP-IDF v4.3 vaatii Python-version, joka on vähintään v3.6. Vanhemmille Ubuntun versioille lataa ja asenna Pythonin uudempi versio manuaalisesti ja aseta Python3 Python-oletusympäristöksi. Löydät tarkat ohjeet etsimällä avainsanalla update-alternatives python.
2. Lataa ESP-IDF-arkistokoodi
Avaa pääte ja luo kansio nimeltä esp kotihakemistoosi mkdir-komennolla. Voit halutessasi valita kansiolle toisen nimen. Käytä cd-komentoa päästäksesi kansioon.
Luku 4. Kehitysympäristön määrittäminen 39

$ mkdir -p /esp $ cd /esp
Käytä git clone -komentoa ladataksesi ESP-IDF-arkistokoodi alla olevan kuvan mukaisesti:
$ git klooni -b v4.3.2 – rekursiivinen https://github.com/espressif/esp-idf.git
Yllä olevassa komennossa parametri -b v4.3.2 määrittää ladattavan version (tässä tapauksessa version 4.3.2). Parametri –recursive varmistaa, että kaikki ESP-IDF:n alivarastot ladataan rekursiivisesti. Tietoja alivarastoista löytyy .gitmodulesista file.
3. Asenna ESP-IDF-kehitystyökaluketju
Espressif tarjoaa automaattisen komentosarjan install.sh työkaluketjun lataamista ja asentamista varten. Tämä komentosarja tarkistaa nykyisen ESP-IDF-version ja käyttöjärjestelmäympäristön ja lataa ja asentaa sitten sopivan version Python-työkalupaketteista ja käännöstyökaluketjuista. Työkaluketjun oletusasennuspolku on /.espressif. Sinun tarvitsee vain siirtyä esp-idf-hakemistoon ja suorittaa install.sh.
$ cd /esp/esp-idf $ ./install.sh
Jos asennat työkaluketjun onnistuneesti, pääte näyttää:
Kaikki tehty!
Tässä vaiheessa olet onnistuneesti määrittänyt ESP-IDF-kehitysympäristön.
4.2.2 ESP-IDF-kehitysympäristön määrittäminen Windowsissa
1. Lataa ESP-IDF-työkalujen asennusohjelma
VINKKEJÄ ESP-IDF-kehitysympäristö kannattaa määrittää Windows 10:lle tai uudemmalle. Voit ladata asennusohjelman osoitteesta https://dl.espressif.com/dl/esp-idf/. Asennusohjelma on myös avoimen lähdekoodin ohjelmisto, ja sen lähdekoodi voi olla viewed osoitteessa https://github.com/espressif/idf-installer.
· Online ESP-IDF työkalujen asennusohjelma
Tämä asennusohjelma on suhteellisen pieni, noin 4 Mt kooltaan, ja muut paketit ja koodi ladataan asennuksen aikana. AdvantagOnline-asennusohjelmassa on se, että ohjelmistopaketteja ja koodia voidaan ladata pyynnöstä asennusprosessin aikana, vaan se mahdollistaa myös kaikkien saatavilla olevien ESP-IDF-julkaisujen ja uusimman GitHub-koodin asennuksen (kuten päähaaran) . Haitattage on, että se vaatii verkkoyhteyden asennuksen aikana, mikä voi aiheuttaa asennuksen epäonnistumisen verkko-ongelmien vuoksi.
40 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

· Offline ESP-IDF -työkalujen asennusohjelma Tämä asennusohjelma on suurempi, kooltaan noin 1 Gt ja sisältää kaikki ohjelmistopaketit ja koodit, jotka tarvitaan ympäristön määrittämiseen. Tärkein etutagYksi offline-asennusohjelmasta on, että sitä voidaan käyttää tietokoneissa, joissa ei ole Internet-yhteyttä, ja sen asennuksen onnistumisprosentti on yleensä korkeampi. On huomattava, että offline-asennusohjelma voi asentaa vain vakaat ESP-IDF:n julkaisut, jotka tunnistetaan v*.* tai v*.*.*.
2. Suorita ESP-IDF-työkalujen asennusohjelma Kun olet ladannut sopivan asennusohjelman version (ota ESP-IDF Tools Offline 4.3.2 esim.ample täällä), kaksoisnapsauta exe-tiedostoa file käynnistääksesi ESP-IDF-asennusliittymän. Seuraavassa näytetään, kuinka ESP-IDF:n vakaa versio v4.3.2 asennetaan offline-asennusohjelman avulla.
(1) Valitse käytettävä kieli kuvassa 4.4 näkyvästä "Valitse asennuskieli" -liittymästä pudotusvalikosta.
Kuva 4.4. "Valitse asennuskieli" -käyttöliittymä (2) Kun olet valinnut kielen, napsauta "OK" avataksesi "Lisenssisopimus"-liittymän
(katso kuva 4.5). Kun olet lukenut asennuslisenssisopimuksen huolellisesti, valitse "Hyväksyn sopimuksen" ja napsauta "Seuraava".
Kuva 4.5. Käyttöoikeussopimusliittymä Luku 4. Kehitysympäristön määrittäminen 41

(3) Review järjestelmän konfiguraatio "Pre-installation system check" -liittymässä (katso kuva 4.6). Tarkista Windows-versio ja asennetun virustorjuntaohjelmiston tiedot. Napsauta "Seuraava", jos kaikki konfigurointikohteet ovat normaaleja. Muussa tapauksessa voit napsauttaa "Täysi loki" saadaksesi ratkaisuja, jotka perustuvat avainkohtiin.
Kuva 4.6. "Järjestelmän tarkistus ennen asennusta" käyttöliittymä VINKKEJÄ
Voit lähettää lokit osoitteeseen https://github.com/espressif/idf-installer/issues saadaksesi apua. (4) Valitse ESP-IDF-asennushakemisto. Valitse tässä D:/.espressif kuvan osoittamalla tavalla
Kuva 4.7 ja napsauta "Seuraava". Huomaa, että .espressif tässä on piilotettu hakemisto. Kun asennus on valmis, voit view tämän hakemiston tietty sisältö avaamalla file hallinta ja piilotettujen kohteiden näyttäminen.
Kuva 4.7. Valitse ESP-IDF:n asennushakemisto 42 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT

(5) Tarkista asennettavat komponentit kuvan 4.8 mukaisesti. On suositeltavaa käyttää oletusvaihtoehtoa, eli suorittaa asennus loppuun, ja napsauta sitten "Seuraava".
Kuva 4.8. Valitse asennettavat komponentit (6) Vahvista asennettavat komponentit ja napsauta "Asenna" aloittaaksesi automaattisen asennuksen.
asennusprosessi, kuten kuvassa 4.9. Asennusprosessi voi kestää kymmeniä minuutteja ja asennuksen edistymispalkki näkyy kuvassa 4.10. Odota kärsivällisesti.
Kuva 4.9. Asennuksen valmistelu (7) Kun asennus on valmis, on suositeltavaa tarkistaa “Rekisteröi ESP-IDF
Työkalujen suoritettavat tiedostot Windows Defenderin poikkeuksina…” estääksesi virustorjuntaohjelmiston poistamisen files. Poissulkevien kohteiden lisääminen voi myös ohittaa toistuvia virustarkistuksia
Luku 4. Kehitysympäristön määrittäminen 43

Kuva 4.10. Asennuksen edistymispalkkiohjelmisto, joka parantaa huomattavasti Windows-järjestelmän koodin kokoamisen tehokkuutta. Napsauta "Finish" viimeistelläksesi kehitysympäristön asennuksen kuvan 4.11 mukaisesti. Voit valita "Suorita ESP-IDF PowerShell -ympäristö" tai "Suorita ESP-IDF-komentokehote". Suorita käännösikkuna heti asennuksen jälkeen varmistaaksesi, että kehitysympäristö toimii normaalisti.
Kuva 4.11. Asennus valmis (8) Avaa asennettu kehitysympäristö ohjelmaluettelosta (joko ESP-IDF 4.3
CMD tai ESP-IDF 4.3 PowerShell-pääte, kuten kuvassa 4.12), ja ESP-IDF-ympäristömuuttuja lisätään automaattisesti, kun se suoritetaan päätteessä. Tämän jälkeen voit käyttää idf.py-komentoa toimintoihin. Avattu ESP-IDF 4.3 CMD näkyy kuvassa 4.13. 44 ESP32-C3 Wireless Adventure: Kattava IoT:n opas

Kuva 4.12. Kehitysympäristö asennettuna
Kuva 4.13. ESP-IDF 4.3 CMD
4.2.3 ESP-IDF-kehitysympäristön määrittäminen Macissa
ESP-IDF-kehitysympäristön asennusprosessi Mac-järjestelmään on sama kuin Linux-järjestelmään. Komennot arkistokoodin lataamiseen ja työkaluketjun asentamiseen ovat täsmälleen samat. Vain riippuvuuspakettien asennuskomennot ovat hieman erilaisia. 1. Asenna riippuvuuspaketit Avaa pääte ja asenna pip, Python-paketinhallintatyökalu, suorittamalla seuraava komento:
% sudo helppo asennus pip
Asenna Homebrew, paketinhallintatyökalu macOS:lle, suorittamalla seuraava komento:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Asenna tarvittavat riippuvuuspaketit suorittamalla seuraava komento:
% brew python3 asenna cmake ninja ccache dfu-util
2. Lataa ESP-IDF-arkistokoodi Lataa ESP-IDF-arkistokoodi noudattamalla kohdan 4.2.1 ohjeita. Vaiheet ovat samat kuin ladattaessa Linux-järjestelmään.
Luku 4. Kehitysympäristön määrittäminen 45

3. Asenna ESP-IDF-kehitystyökaluketju
Asenna ESP-IDF-kehitystyökaluketju noudattamalla kohdan 4.2.1 ohjeita. Vaiheet ovat samat kuin asennuksessa Linux-järjestelmään.
4.2.4 VS-koodin asentaminen
Oletusarvoisesti ESP-IDF SDK ei sisällä koodinmuokkaustyökalua (vaikka uusin ESP-IDF Windows-asennusohjelma tarjoaa mahdollisuuden asentaa ESP-IDF Eclipse). Voit muokata koodia millä tahansa tekstinmuokkaustyökalulla ja kääntää sen sitten päätekomentojen avulla.
Yksi suosittu koodinmuokkaustyökalu on VS Code (Visual Studio Code), joka on ilmainen ja monipuolinen koodieditori käyttäjäystävällisellä käyttöliittymällä. Se tarjoaa erilaisia plugins jotka tarjoavat toimintoja, kuten koodinavigoinnin, syntaksin korostuksen, Git-version hallinnan ja pääteintegroinnin. Lisäksi Espressif on kehittänyt erillisen laajennuksen nimeltä Espressif IDF VS Codelle, joka yksinkertaistaa projektin määritystä ja virheenkorjausta.
Voit käyttää päätteen koodikomentoa avataksesi nopeasti nykyisen kansion VS Codessa. Vaihtoehtoisesti voit käyttää pikanäppäintä Ctrl+ avataksesi järjestelmän oletuspäätekonsolin VS Codessa.
VINKKEJÄ ESP32-C3-koodin kehittämiseen on suositeltavaa käyttää VS-koodia. Lataa ja asenna VS Coden uusin versio osoitteesta https://code.visualstudio.com/.
4.2.5 Kolmannen osapuolen kehitysympäristöjen esittely
Virallisen ESP-IDF-kehitysympäristön lisäksi, joka käyttää pääasiassa C-kieltä, ESP32-C3 tukee myös muita valtavirran ohjelmointikieliä ja laajaa valikoimaa kolmansien osapuolien kehitysympäristöjä. Joitakin merkittäviä vaihtoehtoja ovat:
Arduino: avoimen lähdekoodin alusta sekä laitteistolle että ohjelmistolle, joka tukee erilaisia ​​mikro-ohjaimia, mukaan lukien ESP32-C3.
Se käyttää C++-kieltä ja tarjoaa yksinkertaistetun ja standardoidun API:n, jota kutsutaan yleisesti Arduino-kieleksi. Arduinoa käytetään laajalti prototyyppien kehittämisessä ja koulutustilanteissa. Se tarjoaa laajennettavan ohjelmistopaketin ja IDE:n, joka mahdollistaa helpon kääntämisen ja vilkkumisen.
MicroPython: Python 3 -kielitulkki, joka on suunniteltu toimimaan sulautetuilla mikro-ohjainalustoilla.
Yksinkertaisella skriptikielellä se voi käyttää suoraan ESP32-C3:n oheisresursseja (kuten UART, SPI ja I2C) ja viestintätoimintoja (kuten Wi-Fi ja Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

Tämä yksinkertaistaa laitteiston vuorovaikutusta. MicroPython yhdistettynä Pythonin laajaan matemaattiseen operaatiokirjastoon mahdollistaa monimutkaisten algoritmien toteuttamisen ESP32-C3:lle, mikä helpottaa tekoälyyn liittyvien sovellusten kehittämistä. Käsikirjoituskielenä ei tarvita toistuvaa käännöstä; muutoksia voidaan tehdä ja komentosarjat voidaan suorittaa suoraan.
NodeMCU: ESP-sarjan siruille kehitetty LUA-kielen tulkki.
Se tukee lähes kaikkia ESP-sirujen oheistoimintoja ja on kevyempi kuin MicroPython. MicroPythonin tapaan NodeMCU käyttää skriptikieltä, mikä eliminoi toistuvan käännöksen tarpeen.
Lisäksi ESP32-C3 tukee myös NuttX- ja Zephyr-käyttöjärjestelmiä. NuttX on reaaliaikainen käyttöjärjestelmä, joka tarjoaa POSIX-yhteensopivia liitäntöjä, mikä parantaa sovellusten siirrettävyyttä. Zephyr on pieni reaaliaikainen käyttöjärjestelmä, joka on suunniteltu erityisesti IoT-sovelluksiin. Se sisältää lukuisia IoT-kehityksessä tarvittavia ohjelmistokirjastoja, jotka kehittyvät vähitellen kattavaksi ohjelmistoekosysteemiksi.
Tämä kirja ei sisällä yksityiskohtaisia ​​asennusohjeita edellä mainituille kehitysympäristöille. Voit asentaa kehitysympäristön tarpeidesi mukaan noudattamalla asianmukaisia ​​dokumentaatioita ja ohjeita.
4.3 ESP-IDF-käännösjärjestelmä
4.3.1 Käännösjärjestelmän peruskäsitteet
ESP-IDF-projekti on kokoelma pääohjelmaa, jossa on syöttötoiminto ja useita itsenäisiä toiminnallisia komponentteja. esimample, LED-kytkimiä ohjaava projekti koostuu pääasiassa syöttöohjelman pääosasta ja GPIO:ta ohjaavasta ajurikomponentista. Jos haluat toteuttaa LED-kaukosäätimen, sinun on lisättävä myös Wi-Fi, TCP/IP-protokollapino jne.
Käännösjärjestelmä voi kääntää, linkittää ja luoda suoritettavan tiedoston files (.bin) koodille rakennussääntöjen avulla. ESP-IDF v4.0 ja sitä uudempien versioiden käännösjärjestelmä perustuu oletuksena CMakeen, ja käännösskriptiä CMakeLists.txt voidaan käyttää koodin käännöskäyttäytymisen ohjaamiseen. Sen lisäksi, että ESP-IDF-käännösjärjestelmä tukee CMaken perussyntaksia, se määrittää myös oletuskäännössäännöt ja CMake-funktiot, ja voit kirjoittaa käännösskriptin yksinkertaisilla käskyillä.
4.3.2 Projekti File Rakenne
Projekti on kansio, joka sisältää syöttöohjelman pääasialliset, käyttäjän määrittämät komponentit ja files tarvitaan suoritettavien sovellusten, kuten käännösskriptien, konfiguroinnin rakentamiseen
Luku 4. Kehitysympäristön määrittäminen 47

files, osiotaulukot jne. Projekteja voidaan kopioida ja välittää, ja sama suoritettava tiedosto file voidaan kääntää ja luoda koneissa, joissa on sama versio ESP-IDF-kehitysympäristöstä. Tyypillinen ESP-IDF-projekti file rakenne on esitetty kuvassa 4.14.
Kuva 4.14. Tyypillinen ESP-IDF-projekti file rakenne Koska ESP-IDF tukee useita Espressifin IoT-siruja, mukaan lukien ESP32, ESP32-S-sarja, ESP32-C-sarja, ESP32-H-sarja jne., tavoite on määritettävä ennen koodin kääntämistä. Kohde on sekä laitteisto, joka suorittaa sovellusohjelman, että käännösjärjestelmän koontikohde. Tarpeistasi riippuen voit määrittää projektille yhden tai useamman kohteen. esimample, komennolla idf.py set-target esp32c3 voit asettaa käännöskohteeksi ESP32-C3, jonka aikana ESP32C3:n oletusparametrit ja käännöstyökalun ketjupolku ladataan. Kääntämisen jälkeen ESP32C3:lle voidaan luoda suoritettava ohjelma. Voit myös suorittaa komennon set-target uudelleen asettaaksesi toisen kohteen, jolloin käännösjärjestelmä puhdistaa ja määrittää uudelleen automaattisesti. Komponentit
ESP-IDF:n komponentit ovat modulaarisia ja itsenäisiä koodiyksiköitä, joita hallitaan käännösjärjestelmässä. Ne on järjestetty kansioihin, ja kansion nimi edustaa oletusarvoisesti komponentin nimeä. Jokaisella komponentilla on oma käännösskripti, joka 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT

määrittää sen käännösparametrit ja riippuvuudet. Käännösprosessin aikana komponentit käännetään erillisiin staattisiin kirjastoihin (.a files) ja yhdistetään lopulta muihin komponentteihin sovellusohjelman muodostamiseksi.
ESP-IDF tarjoaa tärkeitä toimintoja, kuten käyttöjärjestelmän, oheislaitteiden ajurit ja verkkoprotokollapinon, komponenttien muodossa. Nämä komponentit on tallennettu komponenttihakemistoon, joka sijaitsee ESP-IDF-juurihakemistossa. Kehittäjien ei tarvitse kopioida näitä komponentteja myProjectin komponenttihakemistoon. Sen sijaan heidän tarvitsee vain määrittää näiden komponenttien riippuvuussuhteet projektin CMakeLists.txt-tiedostossa. file käyttämällä REQUIRES- tai PRIV_REQUIRES-ohjeita. Käännösjärjestelmä paikantaa ja kokoaa automaattisesti tarvittavat komponentit.
Siksi myProjectin alla oleva komponenttihakemisto ei ole välttämätön. Sitä käytetään vain sisällyttämään joitain projektin mukautettuja osia, jotka voivat olla kolmannen osapuolen kirjastoja tai käyttäjän määrittämää koodia. Lisäksi komponentit voidaan hankkia mistä tahansa muusta hakemistosta kuin ESP-IDF:stä tai nykyisestä projektista, kuten toiseen hakemistoon tallennetusta avoimen lähdekoodin projektista. Tässä tapauksessa sinun tarvitsee vain lisätä komponentin polku asettamalla EXTRA_COMPONENT_DIRS-muuttuja juurihakemiston CMakeLists.txt-tiedostossa. Tämä hakemisto ohittaa kaikki samannimiset ESP-IDF-komponentit varmistaen, että käytetään oikeaa komponenttia.
Entry program main Projektin päähakemisto noudattaa samaa file rakenne muiden komponenttien tavoin (esim. komponentti1). Sillä on kuitenkin erityinen merkitys, koska se on pakollinen komponentti, jonka on oltava jokaisessa projektissa. Päähakemisto sisältää projektin lähdekoodin ja käyttäjäohjelman aloituspisteen, tyypillisesti nimeltään app_main. Oletusarvoisesti käyttäjäohjelman suoritus alkaa tästä aloituskohdasta. Pääkomponentti eroaa myös siinä, että se riippuu automaattisesti kaikista hakupolun komponenteista. Siksi ei tarvitse erikseen ilmoittaa riippuvuuksia REQUIRES- tai PRIV_REQUIRES-käskyjen avulla CMakeLists.txt-tiedostossa file.
Kokoonpano file Projektin juurihakemisto sisältää määrityksen file nimeltä sdkconfig, joka sisältää kokoonpanoparametrit kaikille projektin komponenteille. sdkconfig file käännösjärjestelmä luo automaattisesti, ja sitä voidaan muokata ja luoda uudelleen komennolla idf.py menuconfig. Menuconfig-vaihtoehdot ovat pääosin peräisin projektin Kconfig.projbuildista ja komponenttien Kconfig-tiedostosta. Komponenttien kehittäjät lisäävät yleensä määrityskohteita Kconfigiin tehdäkseen komponentista joustavan ja konfiguroitavan.
Rakennushakemisto Projektin sisällä oleva koontihakemisto tallentaa oletuksena välitason files ja fi-
Luku 4. Kehitysympäristön määrittäminen 49

idf.py build-komennon luomat lopulliset suoritettavat ohjelmat. Yleensä ei ole välttämätöntä päästä suoraan rakennushakemiston sisältöön. ESP-IDF tarjoaa ennalta määritettyjä komentoja vuorovaikutukseen hakemiston kanssa, kuten idf.py flash-komennon avulla käännetyn binaarin automaattinen paikantaminen file ja flash-tiedosto määritettyyn flash-osoitteeseen tai puhdista koko rakennushakemisto idf.py fullclean -komennolla.
Osiotaulukko (partitions.csv) Jokainen projekti vaatii osiotaulukon, joka jakaa flash-tilan ja määrittää suoritettavan ohjelman ja käyttäjän tietotilan koon ja aloitusosoitteen. Komento idf.py flash tai OTA-päivitysohjelma päivittää laiteohjelmiston vastaavaan osoitteeseen tämän taulukon mukaisesti. ESP-IDF tarjoaa useita oletusosiotaulukoita komponenteissa/osiotaulukko, kuten partitions_singleapp.csv ja partitions_two_ ota.csv, jotka voidaan valita menuconfig-kohdassa.
Jos järjestelmän oletusosiotaulukko ei täytä projektin vaatimuksia, mukautettu partitions.csv voidaan lisätä projektihakemistoon ja valita menuconfig-valikosta.
4.3.3 Käännösjärjestelmän oletuskoontisäännöt
Säännöt samannimisten komponenttien ohittamiseksi Komponenttihaun aikana käännösjärjestelmä noudattaa tiettyä järjestystä. Se etsii ensin ESP-IDF:n sisäisiä komponentteja, sitten käyttäjäprojektin komponentteja ja lopuksi komponentteja hakemistosta EXTRA_COMPONENT_DIRS. Tapauksissa, joissa useat hakemistot sisältävät samannimisiä komponentteja, viimeisestä hakemistosta löytynyt komponentti ohittaa kaikki aiemmat samannimiset komponentit. Tämä sääntö mahdollistaa ESP-IDF-komponenttien mukauttamisen käyttäjäprojektissa säilyttäen samalla alkuperäisen ESP-IDF-koodin ennallaan.
Säännöt yleisten komponenttien sisällyttämiseksi oletusarvoisesti Kuten kohdassa 4.3.2 mainittiin, komponenttien on erikseen määritettävä riippuvuutensa muista komponenteista CMakeLists.txt-tiedostossa. Yleiset komponentit, kuten freertot, sisällytetään kuitenkin oletusarvoisesti automaattisesti koontijärjestelmään, vaikka niiden riippuvuussuhteita ei ole erikseen määritelty käännösskriptissä. ESP-IDF:n yleisiä komponentteja ovat freertos, Newlib, kasa, log, soc, esp_rom, esp_common, xtensa/riscv ja cxx. Näiden yleisten komponenttien käyttäminen välttää toistuvan työn kirjoitettaessa CMakeLists.txt-tiedostoa ja tekee siitä tiiviimmän.
Säännöt konfigurointikohteiden ohittamiseksi Kehittäjät voivat lisätä oletusmääritysparametreja lisäämällä oletuskokoonpanon file nimeltä sdkconfig.defaults projektille. esimample, lisäämällä CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

DEFAULT_LEVEL_NONE = y voi määrittää UART-liitännän olemaan tulostamatta lokitietoja oletuksena. Lisäksi, jos tietylle kohteelle on asetettava erityisiä parametreja, konfiguraatio file nimeltä sdkconfig.defaults.TARGET_NAME voidaan lisätä, missä TARGET_NAME voi olla esp32s2, esp32c3 ja niin edelleen. Nämä kokoonpanot files tuodaan sdkconfigiin kääntämisen aikana yleisellä oletuskokoonpanolla file sdkconfig.defaults tuodaan ensin ja sen jälkeen kohdekohtainen kokoonpano file, kuten sdkconfig.defaults.esp32c3. Tapauksissa, joissa kokoonpanokohteita on sama nimi, jälkimmäinen kokoonpano file ohittaa entisen.
4.3.4 Johdatus käännösskriptiin
Kun kehitetään projektia ESP-IDF:llä, kehittäjien ei tarvitse vain kirjoittaa lähdekoodia vaan myös kirjoittaa CMakeLists.txt projektille ja komponenteille. CMakeLists.txt on teksti file, joka tunnetaan myös nimellä käännösskripti, joka määrittää sarjan käännösobjekteja, käännöskokoonpanon kohteita ja komentoja lähdekoodin käännösprosessin ohjaamiseksi. ESP-IDF v4.3.2:n käännösjärjestelmä perustuu CMakeen. Sen lisäksi, että se tukee alkuperäisiä CMake-funktioita ja -komentoja, se määrittää myös joukon mukautettuja toimintoja, mikä tekee käännösskriptien kirjoittamisesta paljon helpompaa.
ESP-IDF:n käännösskriptit sisältävät pääasiassa projektin käännösskriptin ja komponenttien käännösskriptit. Projektin juurihakemistossa olevaa CMakeLists.txt-tiedostoa kutsutaan projektin käännösskriptiksi, joka ohjaa koko projektin käännösprosessia. Perusprojektin kokoamisskripti sisältää tyypillisesti seuraavat kolme riviä:
1. cmake_minimum_required(VERSIO 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Niistä ensimmäiselle riville on sijoitettava cmake_minimum_required (VERSIO 3.5), jota käytetään osoittamaan projektin vaatimaa CMake-version vähimmäisnumeroa. CMaken uudemmat versiot ovat yleensä taaksepäin yhteensopivia vanhempien versioiden kanssa, joten säädä versionumeroa vastaavasti, kun käytät uudempia CMake-komentoja yhteensopivuuden varmistamiseksi.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) tuo ESP-IDF-käännösjärjestelmän ennalta määritetyt kokoonpanokohteet ja komennot, mukaan lukien käännösjärjestelmän oletuskoontisäännöt, jotka on kuvattu Kohta 4.3.3. project(myProject) luo projektin itse ja määrittää sen nimen. Tätä nimeä käytetään lopullisena lähtöbinaarina file nimi, eli myProject.elf ja myProject.bin.
Projektissa voi olla useita osia, mukaan lukien pääkomponentti. Kunkin komponentin ylätason hakemisto sisältää CMakeLists.txt-tiedoston file, jota kutsutaan komponenttien käännösskriptiksi. Komponenttien käännösskriptejä käytetään pääasiassa komponenttien riippuvuuksien, konfigurointiparametrien ja lähdekoodin määrittämiseen files ja mukana otsikko files varten
Luku 4. Kehitysympäristön määrittäminen 51

kokoelma. ESP-IDF:n mukautetun toiminnon idf_component_register kanssa komponenttien käännösskriptille vaadittava vähimmäiskoodi on seuraava:

1. idf_component_register(SRCS "src1.c"

2.

INCLUDE_DIRS "sisällytä"

3.

VAATII komponentti1)

SRCS-parametri tarjoaa luettelon lähteistä files komponentissa välilyönnillä erotettuna, jos niitä on useita files. Parametri INCLUDE_DIRS tarjoaa luettelon julkisista otsikoista file komponentin hakemistoja, jotka lisätään muiden nykyisestä komponentista riippuvien komponenttien hakupolkuun. REQUIRES-parametri identifioi nykyisen komponentin julkisten komponenttien riippuvuudet. Komponenttien on ilmoitettava selvästi, mistä komponenteista ne riippuvat, kuten komponentti2 riippuen komponentista 1. Kuitenkin pääkomponentista, joka riippuu oletusarvoisesti kaikista komponenteista, REQUIRES-parametri voidaan jättää pois.

Lisäksi alkuperäisiä CMake-komentoja voidaan käyttää myös käännösskriptissä. esimample, käytä komentoa set asettaaksesi muuttujat, kuten set(MUUTTUJA “ARVO”).

4.3.5 Yleisten komentojen esittely
ESP-IDF käyttää CMakea (projektin määritystyökalu), Ninjaa (projektinrakennustyökalu) ja esptool-työkalua (flash-työkalu) koodin käännösprosessissa. Jokaisella työkalulla on erilainen rooli käännös-, rakennus- ja flash-prosessissa, ja ne tukevat myös erilaisia ​​käyttökomentoja. Käyttäjän toiminnan helpottamiseksi ESP-IDF lisää yhtenäisen käyttöliittymän idf.py:n, jonka avulla yllä olevat komennot voidaan kutsua nopeasti.
Ennen kuin käytät tiedostoa idf.py, varmista, että:
· ESP-IDF:n ympäristömuuttuja IDF_PATH on lisätty nykyiseen päätteeseen. · Komennon suoritushakemisto on projektin juurihakemisto, joka sisältää
projektin käännösskripti CMakeLists.txt.
Idf.py:n yleiset komennot ovat seuraavat:
· idf.py –help: näyttää luettelon komennoista ja niiden käyttöohjeista. · idf.py set-target : kokoelman taidf.py fullcleanrget asettaminen, esim
korvaavana esp32c3:n kanssa. · idf.py menuconfig: käynnistetään menuconfig, päätelaitteen graafinen konfiguraatio
työkalu, joka voi valita tai muokata määritysasetuksia, ja määritystulokset tallennetaan sdkconfig-tiedostoon file. · idf.py build: aloittaa koodin kääntämisen. Välimuoto files ja käännöksen luoma lopullinen suoritettava ohjelma tallennetaan oletusarvoisesti projektin rakennushakemistoon. Kokoamisprosessi on inkrementaalinen, mikä tarkoittaa, että jos vain yksi lähde file on muokattu, vain muokattu file kootaan ensi kerralla.

52 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

· idf.py clean: välituotteen puhdistus files syntyy projektin kokoamisesta. Koko projekti on pakko koota seuraavassa koosteessa. Huomaa, että CMake-konfiguraatiota ja menuconfig:n tekemiä konfiguraatiomuutoksia ei poisteta puhdistuksen aikana.
· idf.py fullclean: koko koontihakemiston poistaminen, mukaan lukien kaikki CMake-määritystulosteet files. Kun rakentaa projektia uudelleen, CMake määrittää projektin tyhjästä. Huomaa, että tämä komento poistaa rekursiivisesti kaikki files rakennushakemistossa, joten käytä sitä varoen ja projektin kokoonpanossa file ei poisteta.
· idf.py flash: suoritettavan ohjelman binaarin vilkkuminen file luotu rakentamalla kohde ESP32-C3. Vaihtoehdot -s ja -b käytetään asettamaan sarjaportin laitenimi ja vilkkumisen baudinopeus. Jos näitä kahta vaihtoehtoa ei ole määritetty, sarjaportti tunnistetaan automaattisesti ja käytetään oletussiirtonopeutta.
· idf.py-näyttö: näyttää kohteen ESP32-C3:n sarjaportin lähdön. Vaihtoehtoa -p voidaan käyttää isäntäpuolen sarjaportin laitenimen määrittämiseen. Sarjaporttitulostuksen aikana poistu näytöstä painamalla näppäinyhdistelmää Ctrl+].
Yllä olevia komentoja voidaan myös yhdistää tarpeen mukaan. esimample, komento idf.py build flash monitor suorittaa koodin kokoamisen, flashin ja avaa sarjaportin monitorin järjestyksessä.
Voit vierailla osoitteessa https://bookc3.espressif.com/build-system saadaksesi lisätietoja ESP-IDF-käännösjärjestelmästä.
4.4 Harjoitus: Kääntäminen EsimampOhjelma "Blink"
4.4.1 Esimample Analyysi
Tässä osiossa käytetään Blink-ohjelmaa entisenäample analysoida file todellisen projektin rakenne ja koodaussäännöt yksityiskohtaisesti. Blink-ohjelma toteuttaa LED-vilkkuefektin, ja projekti sijaitsee hakemistossa examples/get-started/blink, joka sisältää lähteen file, kokoonpano files ja useita kokoelmaskriptejä.
Tässä kirjassa esitelty älyvaloprojekti perustuu tähän example ohjelma. Toimintoja lisätään vähitellen myöhemmissä luvuissa sen viimeistelemiseksi.
Lähdekoodi Koko kehitysprosessin havainnollistamiseksi Blink-ohjelma on kopioitu kansioon esp32c3-iot-projects/device firmware/1 blink.
Blink-projektin hakemistorakenne files on esitetty kuvassa 4.15.
Blink-projekti sisältää vain yhden päähakemiston, joka on erityinen komponentti
Luku 4. Kehitysympäristön määrittäminen 53

Kuva 4.15. File vilkkumisprojektin hakemistorakenne

on sisällytettävä kohdassa 4.3.2 kuvatulla tavalla. Päähakemistoa käytetään pääasiassa tallentamaan app_main()-funktion toteutus, joka on sisääntulopiste käyttäjäohjelmaan. Blink-projekti ei sisällä komponenttihakemistoa, koska tämä ex.ample tarvitsee vain ESP-IDF:n mukana tulevia komponentteja, eikä se vaadi lisäkomponentteja. Blink-projektiin sisältyvää CMakeLists.txt-tiedostoa käytetään käännösprosessin ohjaamiseen, kun taas Kconfig.projbuild-tiedostoa käytetään konfigurointikohteiden lisäämiseen tälle esim.ampohjelma menuconfigissa. Muut tarpeettomat files eivät vaikuta koodin kääntämiseen, joten niitä ei käsitellä tässä. Yksityiskohtainen johdatus vilkkuprojektiin files on seuraava.

1. /*blink.c sisältää seuraavan otsikon files*/

2. #sisällytä

//Standard C-kirjaston otsikko file

3. #include "freertos/freeRTOS.h" //FreeRTOS-pääotsikko file

4. #include "freertos/task.h"

//FreeRTOS-tehtävän otsikko file

5. #include "sdkconfig.h"

//Määritysotsikko file kconfig:n luoma

6. #include "driver/gpio.h"

//GPIO-ohjaimen otsikko file

Lähde file blink.c sisältää sarjan otsikoita files vastaa toimintoilmoitusta-

toimenpiteitä. ESP-IDF noudattaa yleensä vakiokirjastootsikon sisällyttämisjärjestystä files, FreeR-

TOS-otsikko files, kuljettajan otsikko files, muun komponentin otsikko files ja projektin otsikko files.

Järjestys, jossa otsikko files sisältyvät, voivat vaikuttaa lopulliseen käännöstulokseen, joten yritä

noudata oletussääntöjä. On huomattava, että sdkconfig.h luodaan automaattisesti

kconfig, ja se voidaan määrittää vain komennolla idf.py menuconfig.

Tämän otsikon suora muokkaus file kirjoitetaan päälle.

1. /*Voit valita idf.py menuconfig -tiedoston LED-valoa vastaavan GPIO:n, ja menuconfig:n muokkaustulos on, että CONFIG_BLINK

_GPIO muutetaan. Voit myös muokata makron määritelmää suoraan

tähän ja muuta CONFIG_BLINK_GPIO kiinteäksi arvoksi.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main(void)

4. {

5.

/*Määritä IO GPIO-oletustoiminnoksi, ota ylösvetotila käyttöön ja

6.

poista tulo- ja lähtötilat käytöstä*/

7.

gpio_reset_pin(BLINK_GPIO);

54 ESP32-C3 Wireless Adventure: Kattava opas IoT:hen

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }

/*Aseta GPIO lähtötilaan*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Tulosta loki*/ printf("LEDn:n sammuttaminen"); /*Sammuta LED (ulostulo matala taso)*/ gpio_set_level(BLINK_GPIO, 0); /*Viive (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("LEDn:n kytkeminen päälle"); /*Sytytä LED (yläteho)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

App_main()-funktio Blinkissä esimample-ohjelma toimii sisääntulopisteenä käyttäjäohjelmille. Se on yksinkertainen funktio, jossa ei ole parametreja eikä palautusarvoa. Tämä toiminto kutsutaan, kun järjestelmä on suorittanut alustuksen, joka sisältää tehtäviä, kuten lokin sarjaportin alustuksen, yhden/kaksiytimisen konfiguroinnin ja vahtikoiran konfiguroinnin.

Funktio app_main() suoritetaan main-nimisen tehtävän yhteydessä. Tämän tehtävän pinon kokoa ja prioriteettia voidaan säätää menuconfig-kohdassa Componentconfig Common ESP-related.

Yksinkertaisia ​​tehtäviä, kuten LED-valon vilkkumista varten, kaikki tarvittava koodi voidaan toteuttaa suoraan app_main()-funktiossa. Tämä sisältää tyypillisesti LED-valoa vastaavan GPIO:n alustamisen ja while(1)-silmukan käytön LEDin kytkemiseksi päälle ja pois. Vaihtoehtoisesti voit käyttää FreeRTOS-sovellusliittymää luodaksesi uuden tehtävän, joka käsittelee LED-valon vilkkumista. Kun uusi tehtävä on luotu onnistuneesti, voit poistua app_main()-funktiosta.

Main/CMakeLists.txt-tiedoston sisältö file, joka ohjaa pääkomponentin käännösprosessia, on seuraava:

1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS "." )

Niistä main/CMakeLists.txt kutsuu vain yhtä käännösjärjestelmäfunktiota, joka on idf_component_register. Kuten useimpien muiden komponenttien CMakeLists.txt, blink.c lisätään SRCS:ään ja lähde fileSRCS:ään lisätyt s käännetään. Samanaikaisesti ".", joka edustaa polkua, jossa CMakeLists.txt sijaitsee, tulee lisätä INCLUDE_DIRS-hakemistoon otsikon hakuhakemistoksi. files. CMakeLists.txt-tiedoston sisältö on seuraava:
1. #Määritä v3.5 vanhimmaksi nykyisen projektin tukemaksi CMake-versioksi 2. #V3.5:tä alemmat versiot on päivitettävä ennen kuin käännös jatkuu 3. cmake_minimum_required(VERSION 3.5) 4. #Sisällytä ESP:n CMake-oletuskokoonpano -IDF käännösjärjestelmä

Luku 4. Kehitysympäristön määrittäminen 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Luo projekti nimeltä "blink" 7. project(myProject)
Niiden joukossa juurihakemiston CMakeLists.txt sisältää pääasiassa $ENV{IDF_ PATH}/tools/cmake/project.cmake, joka on CMaken pääkokoonpano. file tarjoaa ESP-IDF. Sitä käytetään con

Asiakirjat / Resurssit

Espressif Systems ESP32-C3 Wireless Adventure [pdfKäyttöopas
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

Viitteet

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *