Բովանդակություն թաքցնել
2 ESP32-C3 անլար արկածային
2.1 IoT-ի համապարփակ ուղեցույց

ESP32-C3 անլար արկածային

ESP32-C3 անլար արկածային

IoT-ի համապարփակ ուղեցույց

Espressif Systems 12 հունիսի, 2023 թ

Տեխնիկական պայմաններ

  • Արտադրանք՝ ESP32-C3 Wireless Adventure
  • Արտադրող՝ Espressif Systems
  • Ամսաթիվ՝ 12 հունիսի, 2023թ

Ապրանքի օգտագործման հրահանգներ

Նախապատրաստում

ESP32-C3 Wireless Adventure-ն օգտագործելուց առաջ համոզվեք, որ դուք այդպես եք
ծանոթ է IoT-ի հայեցակարգին և ճարտարապետությանը: Սա կօգնի
դուք հասկանում եք, թե ինչպես է սարքը տեղավորվում ավելի մեծ IoT էկոհամակարգի մեջ
և դրա հնարավոր կիրառությունները խելացի տներում:

IoT նախագծերի ներդրում և կիրառում

Այս բաժնում դուք կսովորեք տիպիկ IoT նախագծերի մասին,
ներառյալ ընդհանուր IoT սարքերի հիմնական մոդուլները, հիմնական մոդուլները
հաճախորդի հավելվածների և ընդհանուր IoT ամպային հարթակների: Սա կամք
ձեզ հիմք է տալիս հասկանալու և ստեղծելու ձերը
սեփական IoT նախագծերը:

Պրակտիկա՝ Smart Light Project

Այս պրակտիկայի նախագծում դուք կսովորեք, թե ինչպես ստեղծել խելացի
լույս՝ օգտագործելով ESP32-C3 Wireless Adventure-ը: Ծրագրի կառուցվածքը,
գործառույթները, սարքավորումների պատրաստումը և մշակման գործընթացը կլինեն
մանրամասն բացատրվել է.

Ծրագրի կառուցվածքը

Նախագիծը բաղկացած է մի քանի բաղադրիչներից, այդ թվում՝
ESP32-C3 Wireless Adventure, LED-ներ, սենսորներ և ամպ
backend.

Ծրագրի գործառույթները

Խելացի լույսի նախագիծը թույլ է տալիս վերահսկել պայծառությունն ու
LED-ների գույնը հեռակա կարգով բջջային հավելվածի միջոցով կամ web
ինտերֆեյս.

Սարքավորումների պատրաստում

Նախագծին պատրաստվելու համար ձեզ հարկավոր է հավաքել
անհրաժեշտ ապարատային բաղադրիչներ, ինչպիսիք են ESP32-C3 Wireless-ը
Արկածային տախտակ, լուսադիոդներ, ռեզիստորներ և էլեկտրամատակարարում:

Զարգացման գործընթաց

Զարգացման գործընթացը ներառում է մշակման կարգավորումը
միջավայր, կոդ գրել՝ LED-ները կառավարելու համար, միանալով դեպի
cloud backend-ը և խելացի-ի ֆունկցիոնալության փորձարկումը
լույս.

ESP RainMaker-ի ներածություն

ESP RainMaker-ը հզոր շրջանակ է IoT-ի զարգացման համար
սարքեր. Այս բաժնում դուք կսովորեք, թե ինչ է ESP RainMaker-ը և
ինչպես այն կարող է իրականացվել ձեր նախագծերում:

Ի՞նչ է ESP RainMaker-ը:

ESP RainMaker-ը ամպի վրա հիմնված հարթակ է, որն ապահովում է մի շարք
գործիքներ և ծառայություններ IoT սարքերի կառուցման և կառավարման համար:

ESP RainMaker-ի իրականացումը

Այս բաժինը բացատրում է տարբեր բաղադրիչները, որոնք ներգրավված են
ESP RainMaker-ի ներդրում, ներառյալ հայցադիմումի ծառայությունը,
RainMaker Agent, cloud backend և RainMaker Client:

Պրակտիկա. ESP RainMaker-ի հետ մշակման հիմնական կետերը

Այս պրակտիկայի բաժնում դուք կսովորեք հիմնական կետերի մասին
հաշվի առեք ESP RainMaker-ի հետ մշակելիս: Սա ներառում է սարքը
պահանջներ, տվյալների համաժամացում և օգտվողների կառավարում:

ESP RainMaker-ի առանձնահատկությունները

ESP RainMaker-ն առաջարկում է տարբեր հնարավորություններ օգտվողների կառավարման համար, վերջ
օգտվողներ և ադմինիստրատորներ: Այս հատկանիշները թույլ են տալիս հեշտ սարքի
կարգավորում, հեռակառավարում և մոնիտորինգ:

Զարգացման միջավայրի ստեղծում

Այս բաժինը տրամադրում է ավարտview ESP-IDF (Espressif IoT
Զարգացման շրջանակ), որը զարգացման պաշտոնական շրջանակն է
ESP32-ի վրա հիմնված սարքերի համար: Այն բացատրում է տարբեր տարբերակները
ESP-IDF և ինչպես ստեղծել զարգացման միջավայր:

Սարքավորումների և վարորդների մշակում

Smart Light արտադրանքների ապարատային ձևավորում՝ հիմնված ESP32-C3-ի վրա

Այս բաժինը կենտրոնանում է խելացի լույսի ապարատային դիզայնի վրա
ապրանքներ, որոնք հիմնված են ESP32-C3 Wireless Adventure-ի վրա: Այն ընդգրկում է
խելացի լույսի արտադրանքի առանձնահատկությունները և կազմը, ինչպես նաև
ESP32-C3 հիմնական համակարգի ապարատային ձևավորում:

Smart Light արտադրանքի առանձնահատկությունները և կազմը

Այս ենթաբաժինը բացատրում է այն հատկանիշները և բաղադրիչները, որոնք կազմում են
խելացի լույսի արտադրանք: Այն քննարկում է տարբեր գործառույթները
և դիզայնի նկատառումներ՝ խելացի լույսեր ստեղծելու համար:

ESP32-C3 Core համակարգի ապարատային ձևավորում

ESP32-C3 հիմնական համակարգի ապարատային դիզայնը ներառում է էներգիա
մատակարարում, միացման հաջորդականություն, համակարգի վերակայում, SPI ֆլեշ, ժամացույցի աղբյուր,
և ՌԴ և ալեհավաքի նկատառումներ: Այս ենթաբաժինը նախատեսում է
մանրամասն տեղեկություններ այս ասպեկտների վերաբերյալ:

ՀՏՀ

Հարց: Ի՞նչ է ESP RainMaker-ը:

A: ESP RainMaker-ը ամպի վրա հիմնված հարթակ է, որն ապահովում է գործիքներ
և ծառայություններ IoT սարքերի կառուցման և կառավարման համար: Դա պարզեցնում է
մշակման գործընթացը և թույլ է տալիս հեշտ սարքի տեղադրում, հեռակառավարում
վերահսկողություն և մոնիտորինգ:

Հարց. Ինչպե՞ս կարող եմ ստեղծել զարգացման միջավայր
ESP32-C3?

A: ESP32-C3-ի զարգացման միջավայրը կարգավորելու համար ձեզ անհրաժեշտ է
տեղադրել ESP-IDF (Espressif IoT Development Framework) և
կարգավորեք այն ըստ տրված հրահանգների: ESP-IDF-ն է
ESP32-ի վրա հիմնված սարքերի զարգացման պաշտոնական շրջանակ:

Հարց: Որո՞նք են ESP RainMaker-ի առանձնահատկությունները:

A: ESP RainMaker-ն առաջարկում է տարբեր հնարավորություններ, ներառյալ օգտվողին
կառավարում, վերջնական օգտագործողի առանձնահատկություններ և ադմինիստրատորի առանձնահատկություններ: Օգտագործողի կառավարում
թույլ է տալիս հեշտացնել սարքի պահանջը և տվյալների համաժամացումը: Վերջնական օգտվող
գործառույթները թույլ են տալիս սարքերի հեռակառավարումը բջջային հավելվածի միջոցով կամ
web ինտերֆեյս. Ադմինիստրատորի գործառույթները ապահովում են սարքերի մոնիտորինգի գործիքներ
և կառավարում։

ESP32-C3 անլար արկածային
IoT-ի համապարփակ ուղեցույց
Espressif Systems 12 հունիսի, 2023 թ

Բովանդակություն

I Նախապատրաստում

1

1 Ներածություն IoT

3

1.1 IoT-ի ճարտարապետություն. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 IoT հավելված խելացի տներում: . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 IoT նախագծերի ներդրում և պրակտիկա

9

2.1 Տիպիկ IoT նախագծերի ներածություն: . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Հիմնական մոդուլներ ընդհանուր IoT սարքերի համար: . . . . . . . . . . . . . . . . 9

2.1.2 Հաճախորդների հայտերի հիմնական մոդուլները: . . . . . . . . . . . . . . . . . . 10

2.1.3 Ներածություն ընդհանուր IoT Cloud հարթակներում: . . . . . . . . . . . . . 11

2.2 Պրակտիկա. Smart Light Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Ծրագրի կառուցվածքը. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Ծրագրի գործառույթները. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Սարքավորումների պատրաստում: . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Զարգացման գործընթաց. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Ներածություն ESP RainMaker-ին

19

3.1 Ի՞նչ է ESP RainMaker-ը: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 ESP RainMaker-ի իրականացում: . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Հայցադիմումի ծառայություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 RainMaker գործակալ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Cloud Backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 RainMaker հաճախորդ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Պրակտիկա. ESP RainMaker-ի հետ մշակման հիմնական կետերը: . . . . . . . . . . . 25

3.4 ESP RainMaker-ի առանձնահատկությունները: . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Օգտագործողի կառավարում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Վերջնական օգտագործողի առանձնահատկությունները: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Ադմինիստրատորի առանձնահատկությունները: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Զարգացման միջավայրի ստեղծում

31

4.1 ESP-IDF Ավարտվածview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 ESP-IDF տարբերակները. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 ESP-IDF Git Աշխատանքային հոսք: . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Հարմար տարբերակի ընտրություն: . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Ավարտview ESP-IDF SDK գրացուցակի: . . . . . . . . . . . . . . . . . . . 34 4.2 ESP-IDF զարգացման միջավայրի ստեղծում: . . . . . . . . . . . . . . . . 38 ESP-IDF զարգացման միջավայրի կարգավորում Linux-ում: . . . . . . . 4.2.1 38 Windows-ում ESP-IDF զարգացման միջավայրի կարգավորում: . . . . . 4.2.2 40 ESP-IDF զարգացման միջավայրի կարգավորում Mac-ում: . . . . . . . . 4.2.3 45 VS կոդի տեղադրում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 46 Ներածություն երրորդ կողմի զարգացման միջավայրին: . . . . . . . 4.2.5 46 ESP-IDF կոմպիլացիոն համակարգ. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 47 Կոմպիլացիոն համակարգի հիմնական հասկացությունները: . . . . . . . . . . . . . . . . . 4.3.1 47 Նախագիծ File Կառուցվածք . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Կոմպիլացիոն համակարգի լռելյայն կառուցման կանոններ: . . . . . . . . . . . . 50 4.3.4 Կազմման սցենարի ներածություն: . . . . . . . . . . . . . . . . . 51 4.3.5 Ներածություն ընդհանուր հրամաններին: . . . . . . . . . . . . . . . . . . 52 4.4 պրակտիկա՝ Կազմել Նախamp«Blink» ծրագիրը: . . . . . . . . . . . . . . . . . 53 4.4.1 ՕրինակampՎերլուծություն. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Blink ծրագրի կազմում: . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Թարթել Blink ծրագիրը: . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Blink ծրագրի սերիական պորտի գրանցամատյանի վերլուծություն: . . . . . . . . . . . . . 60 4.5 Ամփոփում . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Սարքավորումների և վարորդների մշակում

65

5 Smart Light արտադրանքների ապարատային ձևավորում՝ հիմնված ESP32-C3-ի վրա

67

5.1 Smart Light արտադրանքի առանձնահատկությունները և կազմը: . . . . . . . . . . . . . . 67

5.2 ESP32-C3 Core համակարգի ապարատային ձևավորում: . . . . . . . . . . . . . . . . . . 70

5.2.1 Էլեկտրամատակարարում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Միացման հաջորդականությունը և համակարգի վերակայումը: . . . . . . . . . . . . . . . . . 74

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

5.2.4 Ժամացույցի աղբյուրը: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 ՌԴ և ալեհավաք: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Գոտիների կապում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 GPIO և PWM վերահսկիչ: . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Պրակտիկա. ESP32-C3-ով խելացի լուսային համակարգի կառուցում: . . . . . . . . . . . . 80

5.3.1 Մոդուլների ընտրություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 PWM ազդանշանների GPIO-ների կազմաձևում: . . . . . . . . . . . . . . . . . . . 82

5.3.3 Ներբեռնում որոնվածը և վրիպազերծման միջերեսը: . . . . . . . . . . . 82

5.3.4 ՌԴ նախագծման ուղեցույցներ: . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Ուղեցույց էլեկտրամատակարարման նախագծման համար: . . . . . . . . . . . . . . . . . . 86 5.4 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Վարորդի զարգացում

87

6.1 Վարորդի զարգացման գործընթաց: . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 ESP32-C3 ծայրամասային հավելվածներ: . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 LED Վարորդի հիմունքներ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Գունավոր տարածություններ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 LED Վարորդ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 LED մթագնում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 Ներածություն PWM-ին: . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 LED Dimming Driver Մշակում. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Ոչ ցնդող պահեստավորում (NVS): . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 LED PWM վերահսկիչ (LEDC): . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 LED PWM ծրագրավորում: . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Պրակտիկա. Վարորդների ավելացում Smart Light նախագծին: . . . . . . . . . . . . . . . . 103

6.5.1 Կոճակի վարորդ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 LED Dimming Driver: . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III Անլար կապ և վերահսկում

109

7 Wi-Fi-ի կազմաձևում և միացում

111

7.1 Wi-Fi-ի հիմունքներ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.1 Wi-Fi-ի ներածություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 IEEE 802.11-ի էվոլյուցիան: . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.3 Wi-Fi հասկացություններ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.1.4 Wi-Fi միացում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7.2 Bluetooth-ի հիմունքները: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 Ներածություն Bluetooth-ին: . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Bluetooth հասկացություններ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 Bluetooth միացում: . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3 Wi-Fi ցանցի կազմաձևում: . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.3.1 Wi-Fi ցանցի կազմաձևման ուղեցույց: . . . . . . . . . . . . . . . . . . . 131

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

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

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

7.3.5 Այլ մեթոդներ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 Wi-Fi ծրագրավորում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi բաղադրիչներ ESP-IDF-ում: . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Վարժություն՝ Wi-Fi միացում . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Վարժություն. Խելացի Wi-Fi միացում . . . . . . . . . . . . . . . . . . . . . 145
7.5 Պրակտիկա. Wi-Fi կոնֆիգուրացիա Smart Light նախագծում: . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi միացում Smart Light նախագծում: . . . . . . . . . . . . . . . . 156 7.5.2 Խելացի Wi-Fi կոնֆիգուրացիա: . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Տեղական վերահսկողություն

159

8.1 Ներածություն տեղական վերահսկողության մեջ: . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Տեղական վերահսկողության կիրառում. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 ԱդվանtagՏեղական վերահսկողության էս. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Սմարթֆոնների միջոցով վերահսկվող սարքերի հայտնաբերում: . . . . . . . . . 161

8.1.4 Տվյալների հաղորդակցություն սմարթֆոնների և սարքերի միջև: . . . . . . . 162

8.2 Տեղական հայտնաբերման ընդհանուր մեթոդներ: . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Հեռարձակում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

8.2.2 Multicast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2.3 Համեմատություն հեռարձակման և բազմակի հեռարձակման միջև: . . . . . . . . . . . . . 176

8.2.4 Multicast Application Protocol mDNS Local Discovery-ի համար: . . . . . . . 176

8.3 Տեղական տվյալների ընդհանուր հաղորդակցման արձանագրություններ: . . . . . . . . . . . . . . 179

8.3.1 Փոխանցման կառավարման արձանագրություն (TCP): . . . . . . . . . . . . . . . . . . 179

8.3.2 Հիպերտեքստի փոխանցման արձանագրություն (HTTP): . . . . . . . . . . . . . . . . . . 185

8.3.3 Օգտվող Դtagram արձանագրություն (UDP): . . . . . . . . . . . . . . . . . . . . . 189

8.3.4 Սահմանափակ կիրառման արձանագրություն (CoAP): . . . . . . . . . . . . . . . 192

8.3.5 Bluetooth արձանագրություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 թ

8.3.6 Տվյալների հաղորդման արձանագրությունների ամփոփում: . . . . . . . . . . . . . . 203

8.4 Տվյալների անվտանգության երաշխիք: . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Տրանսպորտային շերտի անվտանգության (TLS) ներածություն: . . . . . . . . . . . . 207

8.4.2 Ներածություն Datagram Transport Layer Security (DTLS) . . . . . . . 213

8.5 Պրակտիկա. Տեղական վերահսկում Smart Light Project-ում: . . . . . . . . . . . . . . . . . 217

8.5.1 Wi-Fi-ի վրա հիմնված տեղական կառավարման սերվերի ստեղծում: . . . . . . . . . . . . . . 217

8.5.2 Տեղական կառավարման գործառույթների ստուգում սկրիպտների միջոցով: . . . . . . . . . . 221

8.5.3 Bluetooth-ի վրա հիմնված տեղական կառավարման սերվերի ստեղծում: . . . . . . . . . . . 222

8.6 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Cloud Control

225

9.1 Ներածություն հեռակառավարման մեջ: . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Ամպային տվյալների հաղորդակցման արձանագրություններ: . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 MQTT Ներածություն. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT սկզբունքներ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT Հաղորդագրության ձևաչափ: . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Արձանագրության համեմատություն. . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 MQTT բրոքերի կարգավորում Linux-ում և Windows-ում: . . . . . . . . . . . 233 9.2.6 MQTT հաճախորդի կարգավորում՝ հիմնված ESP-IDF-ի վրա: . . . . . . . . . . . . . . . 235 9.3 MQTT տվյալների անվտանգության ապահովում: . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Վկայականների նշանակությունը և գործառույթը: . . . . . . . . . . . . . . . . . . 237 9.3.2 Տեղական վկայագրերի ստեղծում: . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 MQTT բրոքերի կարգավորում: . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 MQTT հաճախորդի կազմաձևում: . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Պրակտիկա. Հեռակառավարում ESP RainMaker-ի միջոցով: . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMaker հիմունքներ. . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Node and Cloud Backend Communication Protocol . . . . . . . . . . . 244 9.4.3 Հաղորդակցություն հաճախորդի և Cloud Backend-ի միջև: . . . . . . . . . . 249 9.4.4 Օգտվողի դերերը: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Հիմնական ծառայություններ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Exampլե . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 RainMaker հավելված և երրորդ կողմի ինտեգրումներ: . . . . . . . . . . . . . . 262 9.5 Ամփոփում . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Սմարթֆոնի հավելվածի մշակում

269

10.1 Ներածություն սմարթֆոնների հավելվածների մշակմանը: . . . . . . . . . . . . . . . . . 269

10.1.1 Ավարտview Սմարթֆոնների հավելվածների մշակում: . . . . . . . . . . . . . . 270

10.1.2 Android նախագծի կառուցվածքը: . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 iOS նախագծի կառուցվածքը: . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Android-ի գործունեության կենսացիկլը: . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 iOS-ի կյանքի ցիկլը ViewՎերահսկիչ. . . . . . . . . . . . . . . . . . . . . . 273

10.2 Սմարթֆոնի նոր հավելվածի նախագիծ ստեղծելը: . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Նախապատրաստում Android-ի մշակմանը: . . . . . . . . . . . . . . . . . . 275

10.2.2 Նոր Android նախագծի ստեղծում: . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 MyRainmaker-ի համար կախվածությունների ավելացում: . . . . . . . . . . . . . . . . 276

10.2.4 Թույլտվության հարցում Android-ում: . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Պատրաստվում է iOS-ի զարգացմանը: . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Նոր iOS նախագծի ստեղծում: . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 MyRainmaker-ի համար կախվածությունների ավելացում: . . . . . . . . . . . . . . . . 279

10.2.8 Թույլտվության հարցում iOS-ում: . . . . . . . . . . . . . . . . . . . . . . . . 280 թ

10.3 Հավելվածի ֆունկցիոնալ պահանջների վերլուծություն: . . . . . . . . . . . . . . . . . 281

10.3.1 Ծրագրի ֆունկցիոնալ պահանջների վերլուծություն: . . . . . . . . . . . 282

10.3.2 Օգտագործողների կառավարման պահանջների վերլուծություն: . . . . . . . . . . . . . . 282 10.3.3 Սարքի տրամադրման և կապակցման պահանջների վերլուծություն: . . . . . . 283 10.3.4 Հեռակառավարման պահանջների վերլուծություն. . . . . . . . . . . . . . . . 283 10.3.5 Ժամանակացույցի պահանջների վերլուծություն: . . . . . . . . . . . . . . . . . . 284 10.3.6 Օգտատերերի կենտրոնի պահանջների վերլուծություն: . . . . . . . . . . . . . . . . . 285 10.4 Օգտագործողների կառավարման զարգացում. . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Ներածություն RainMaker API-ներին: . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Սմարթֆոնի միջոցով հաղորդակցության նախաձեռնում: . . . . . . . . . . . . . . . 286 10.4.3 Հաշվի գրանցում. . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Հաշվի մուտք . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Սարքերի տրամադրման մշակում. . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Սկանավորման սարքեր. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Միացնող սարքեր. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Գաղտնի բանալիների ստեղծում: . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Ստանալով հանգույցի ID: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Մատակարարման սարքեր. . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Սարքի կառավարման մշակում. . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Սարքերը կապել ամպային հաշիվներին: . . . . . . . . . . . . . . . . . . . 303 10.6.2 Սարքերի ցուցակի ստացում: . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Սարքի կարգավիճակի ստացում: . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Սարքի կարգավիճակի փոփոխություն: . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Ժամանակացույցի և օգտագործողների կենտրոնի մշակում: . . . . . . . . . . . . . . . . . . 313 10.7.1 Ժամանակացույցի գործառույթի իրականացում. . . . . . . . . . . . . . . . . . . . 313 10.7.2 Օգտատերերի կենտրոնի ներդրում. . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Ավելի շատ Cloud API-ներ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Ամփոփում . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 թ

11 Որոնվածի արդիականացում և տարբերակի կառավարում

321

11.1 Որոնվածի արդիականացում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 թ

11.1.1 Ավարտview բաժանման աղյուսակներ. . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Որոնվածի բեռնման գործընթաց: . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Ավարտview OTA մեխանիզմի. . . . . . . . . . . . . . . . . . . . . 326

11.2 Որոնվածի տարբերակների կառավարում: . . . . . . . . . . . . . . . . . . . . . . . . . 329 թ

11.2.1 Որոնվածի նշում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 թ

11.2.2 Հետ վերադարձ և հակադարձում: . . . . . . . . . . . . . . . . . . . . . . . 331 թ

11.3 Պրակտիկա. Օդային (OTA) Օրինակampլե . . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Թարմացրեք որոնվածը տեղական հոսթի միջոցով: . . . . . . . . . . . . . . . . 332

11.3.2 Թարմացրեք որոնվածը ESP RainMaker-ի միջոցով: . . . . . . . . . . . . . . 335

11.4 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV օպտիմիզացում և զանգվածային արտադրություն

343

12 Էլեկտրաէներգիայի կառավարում և ցածր էներգիայի օպտիմիզացում

345

12.1 ESP32-C3 Էլեկտրաէներգիայի կառավարում. . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Դինամիկ հաճախականության մասշտաբավորում: . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Էլեկտրաէներգիայի կառավարման կոնֆիգուրացիա: . . . . . . . . . . . . . . . . . . . 348

12.2 ESP32-C3 Ցածր էներգիայի ռեժիմ: . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Մոդեմ-քնի ռեժիմ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 թ

12.2.2 Թեթև քնի ռեժիմ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 թ

12.2.3 Խորը քնի ռեժիմ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Ընթացիկ սպառումը էներգիայի տարբեր ռեժիմներում: . . . . . . . . . . . . 358 թ

12.3 Էլեկտրաէներգիայի կառավարում և ցածր էներգիայի վրիպազերծում: . . . . . . . . . . . . . . . . 359 թ

12.3.1 Մատյանների վրիպազերծում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 թ

12.3.2 GPIO վրիպազերծում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 թ

12.4 Պրակտիկա. էներգիայի կառավարում Smart Light նախագծում: . . . . . . . . . . . . . . 363

12.4.1 Էլեկտրաէներգիայի կառավարման գործառույթի կարգավորում: . . . . . . . . . . . . . . . . 364 թ

12.4.2 Օգտագործեք էներգիայի կառավարման կողպեքներ: . . . . . . . . . . . . . . . . . . . . . 365 թ

12.4.3 Էլեկտրաէներգիայի սպառման ստուգում: . . . . . . . . . . . . . . . . . . . . . . 366 թ

12.5 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Սարքի անվտանգության ընդլայնված առանձնահատկություններ

369

13.1 Ավարտview IoT Սարքի տվյալների անվտանգություն: . . . . . . . . . . . . . . . . . . . . . . 369 թ

13.1.1 Ինչու՞ ապահովել IoT սարքի տվյալները: . . . . . . . . . . . . . . . . . . . . . . 370 թ

13.1.2 Հիմնական պահանջներ IoT սարքի տվյալների անվտանգության համար: . . . . . . . . . . . 371 թ

13.2 Տվյալների ամբողջականության պաշտպանություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 թ

13.2.1 Ներածություն ամբողջականության ստուգման մեթոդին: . . . . . . . . . . . . . 372 թ

13.2.2 Որոնվածի տվյալների ամբողջականության ստուգում: . . . . . . . . . . . . . . . . . 373 թ

13.2.3 Նախկինampլե . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 թ

13.3 Տվյալների գաղտնիության պաշտպանություն: . . . . . . . . . . . . . . . . . . . . . . . . . 374 թ

13.3.1 Տվյալների գաղտնագրման ներածություն: . . . . . . . . . . . . . . . . . . . . . 374 թ

13.3.2 Ներածություն Flash ծածկագրման սխեմային: . . . . . . . . . . . . . . . . 376 թ

13.3.3 Flash գաղտնագրման բանալի պահեստավորում: . . . . . . . . . . . . . . . . . . . . . . 379 թ

13.3.4 Flash կոդավորման աշխատանքային ռեժիմ: . . . . . . . . . . . . . . . . . . . 380 թ

13.3.5 Flash ծածկագրման գործընթաց: . . . . . . . . . . . . . . . . . . . . . . . . . 381 թ

13.3.6 Ներածություն NVS ծածկագրման մեջ: . . . . . . . . . . . . . . . . . . . . . 383 թ

13.3.7 ՆախկինampFlash գաղտնագրման և NVS կոդավորման տեսակները: . . . . . . . . . . 384 թ

13.4 Տվյալների օրինականության պաշտպանություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 թ

13.4.1 Թվային ստորագրության ներածություն: . . . . . . . . . . . . . . . . . . . . 386 թ

13.4.2 Ավարտview Secure Boot Scheme-ի: . . . . . . . . . . . . . . . . . . . . 388 թ

13.4.3 Ծրագրային ապահով բեռնման ներածություն: . . . . . . . . . . . . . . . . . . 388 13.4.4 Ներածություն ապարատային ապահով բեռնման մեջ: . . . . . . . . . . . . . . . . . 390 13.4.5 Օրինակamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Պրակտիկա. Անվտանգության առանձնահատկությունները զանգվածային արտադրության մեջ: . . . . . . . . . . . . . . . . . 396 13.5.1 Flash ծածկագրում և անվտանգ բեռնում: . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Ֆլեշ գաղտնագրման և ապահով բեռնման ակտիվացում Batch Flash Tools-ով: . 397 13.5.3 Ֆլեշ գաղտնագրման և անվտանգ բեռնման ակտիվացում Smart Light նախագծում: . . 398 13.6 Ամփոփում . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 թ

14 Որոնվածային ծրագրերի այրում և փորձարկում զանգվածային արտադրության համար

399

14.1 Որոնվածը այրվում է զանգվածային արտադրության մեջ: . . . . . . . . . . . . . . . . . . . . . 399 թ

14.1.1 Տվյալների բաժանման սահմանում: . . . . . . . . . . . . . . . . . . . . . . . . . 399 թ

14.1.2 Որոնվածի այրում: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 թ

14.2 Զանգվածային արտադրության փորձարկում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Պրակտիկա. Զանգվածային արտադրության տվյալներ Smart Light Project-ում: . . . . . . . . . . . . 404

14.4 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 ESP Insights. Remote Monitoring Platform

405

15.1 ESP Insights-ի ներածություն: . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 Սկսել ESP Insights-ին: . . . . . . . . . . . . . . . . . . . . . . . . 409 թ

15.2.1 Սկսել ESP Insights-ին esp-inights նախագծում: . . . . . 409 թ

15.2.2 Վազք Օրինակample esp-inights նախագծում: . . . . . . . . . . . . . . 411 թ

15.2.3 Հաշվետվության հիմնական տեղեկատվություն: . . . . . . . . . . . . . . . . . . . . 411 թ

15.2.4 Հետաքրքրությունների մատյանների անհատականացում: . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Զեկուցում Վերագործարկման պատճառ: . . . . . . . . . . . . . . . . . . . . . . . . 413 թ

15.2.6 Պատվերով չափումների հաշվետվություն: . . . . . . . . . . . . . . . . . . . . . . . . 413 թ

15.3 Պրակտիկա. ESP Insights-ի օգտագործում Smart Light Project-ում: . . . . . . . . . . . . . . 416

15.4 Ամփոփում. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Ներածություն
ESP32-C3-ը մեկ միջուկով Wi-Fi և Bluetooth 5 (LE) միկրոկառավարիչ SoC է, որը հիմնված է բաց կոդով RISC-V ճարտարապետության վրա: Այն ապահովում է ուժերի ճիշտ հավասարակշռությունը, մուտքի/ելքի հնարավորությունները և անվտանգությունը՝ այդպիսով առաջարկելով օպտիմալ ծախսարդյունավետ լուծում միացված սարքերի համար: ESP32-C3 ընտանիքի տարբեր կիրառությունները ցուցադրելու համար Espressif-ի այս գիրքը ձեզ կտանի հետաքրքիր ճանապարհորդության AIoT-ի միջոցով՝ սկսած IoT նախագծի մշակման հիմունքներից և շրջակա միջավայրի կարգավորումից մինչև գործնական նախկին:amples. Առաջին չորս գլուխները խոսում են IoT-ի, ESP RainMaker-ի և ESP-IDF-ի մասին: 5-րդ և 6-րդ գլուխների համառոտ ապարատային նախագծման և վարորդների մշակման մասին: Առաջընթացի ընթացքում դուք կիմանաք, թե ինչպես կարգավորել ձեր նախագիծը Wi-Fi ցանցերի և բջջային հավելվածների միջոցով: Ի վերջո, դուք կսովորեք օպտիմալացնել ձեր նախագիծը և այն զանգվածային արտադրության մեջ դնել:
Եթե ​​դուք հարակից ոլորտների ինժեներ եք, ծրագրային ապահովման ճարտարապետ, ուսուցիչ, ուսանող կամ որևէ մեկը, ով հետաքրքրված է IoT-ով, այս գիրքը ձեզ համար է:
Դուք կարող եք ներբեռնել կոդը exampԱյս գրքում օգտագործվել է Espressif-ի կայքից GitHub-ում: IoT-ի զարգացման վերաբերյալ վերջին տեղեկությունների համար խնդրում ենք հետևել մեր պաշտոնական հաշվին:

Նախաբան
Տեղեկատվական աշխարհ
Ինտերնետի ալիքը վարելով՝ Իրերի ինտերնետը (IoT) կատարեց իր մեծ դեբյուտը` դառնալով թվային տնտեսության նոր տեսակի ենթակառուցվածք: Տեխնոլոգիան հանրությանը ավելի մոտեցնելու համար Espressif Systems-ն աշխատում է այն տեսլականի համար, որ կյանքի բոլոր խավերի մշակողները կարող են օգտագործել IoT՝ լուծելու մեր ժամանակների ամենահրատապ խնդիրներից մի քանիսը: «Բոլոր բաների խելացի ցանցի» աշխարհն այն է, ինչ մենք ակնկալում ենք ապագայից:
Մեր սեփական չիպերի նախագծումը կազմում է այդ տեսլականի կարևոր բաղադրիչը: Այն պետք է լինի մարաթոն, որը պահանջում է մշտական ​​բեկումներ՝ ընդդեմ տեխնոլոգիական սահմանների: «Game Changer» ESP8266-ից մինչև ESP32 սերիա, որն ինտեգրում է Wi-Fi և Bluetoothr (LE) միացում, որին հաջորդում է ESP32-S3-ը, որը հագեցած է AI արագացմամբ, Espressif-ը երբեք չի դադարում ուսումնասիրել և մշակել AIoT լուծումների համար արտադրանք: Մեր բաց կոդով ծրագրաշարով, ինչպիսիք են IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF և Device Connectivity Platform ESP RainMaker, մենք ստեղծել ենք անկախ շրջանակ AIoT հավելվածներ ստեղծելու համար:
2022 թվականի հուլիսի դրությամբ Espressif-ի IoT չիպսեթների կուտակային առաքումները գերազանցել են 800 միլիոնը՝ առաջատար լինելով Wi-Fi MCU շուկայում և հզորացնելով մեծ թվով միացված սարքեր ամբողջ աշխարհում: Գերազանցության ձգտումը Espressif-ի յուրաքանչյուր արտադրանքը մեծ հաջողություն է դարձնում իր ինտեգրման բարձր մակարդակի և ծախսերի արդյունավետության համար: ESP32-C3-ի թողարկումը նշանավորում է Espressif-ի ինքնուրույն զարգացած տեխնոլոգիայի զգալի հանգուցալուծումը: Այն մեկ միջուկով, 32-բիթանոց, RISC-V-ի վրա հիմնված MCU է 400 ԿԲ SRAM-ով, որը կարող է աշխատել 160 ՄՀց հաճախականությամբ: Այն ինտեգրված է 2.4 ԳՀց Wi-Fi և Bluetooth 5 (LE) հեռահար աջակցությամբ: Այն ապահովում է հզորության, I/O հնարավորությունների և անվտանգության լավ հավասարակշռություն՝ այդպիսով առաջարկելով օպտիմալ ծախսարդյունավետ լուծում միացված սարքերի համար: Նման հզոր ESP32-C3-ի հիման վրա այս գիրքը նպատակ ունի օգնելու ընթերցողներին հասկանալ IoT-ի հետ կապված գիտելիքները մանրամասն նկարազարդման և գործնական օրինակի միջոցով:amples.
Ինչու՞ մենք գրեցինք այս գիրքը:
Espressif Systems-ը ավելին է, քան կիսահաղորդչային ընկերություն: Այն նաև IoT հարթակային ընկերություն է, որը միշտ ձգտում է բեկումների և նորարարությունների տեխնոլոգիաների ոլորտում։ Միևնույն ժամանակ, Espressif-ը բաց կոդով և համայնքի հետ կիսել է իր սեփական մշակած օպերացիոն համակարգը և ծրագրային շրջանակը՝ ձևավորելով յուրահատուկ էկոհամակարգ: Ինժեներները, արտադրողները և տեխնոլոգիայի սիրահարները ակտիվորեն մշակում են նոր ծրագրային հավելվածներ՝ հիմնված Espressif-ի արտադրանքի վրա, ազատորեն շփվում են և կիսվում իրենց փորձով: Դուք կարող եք անընդհատ տեսնել մշակողների հետաքրքրաշարժ գաղափարները տարբեր հարթակներում, ինչպիսիք են YouTube-ը և GitHub-ը: Espressif-ի արտադրանքի հանրաճանաչությունը խթանել է ավելի ու ավելի շատ հեղինակների, ովքեր արտադրել են ավելի քան 100 գիրք Espressif չիպսեթների հիման վրա՝ ավելի քան տասը լեզուներով, այդ թվում՝ անգլերեն, չինարեն, գերմաներեն, ֆրանսերեն և ճապոներեն:

Հենց համայնքային գործընկերների աջակցությունն ու վստահությունն է խրախուսում Espressif-ի շարունակական նորարարությունը: «Մենք ձգտում ենք մեր չիպերը, օպերացիոն համակարգերը, շրջանակները, լուծումները, Cloud-ը, բիզնես պրակտիկան, գործիքները, փաստաթղթերը, գրությունները, գաղափարները և այլն, ավելի համապատասխան դարձնել ժամանակակից կյանքի ամենահրատապ խնդիրներում մարդկանց անհրաժեշտ պատասխաններին: Սա Espressif-ի ամենաբարձր հավակնությունն ու բարոյական կողմնացույցն է»։ ասել է Espressif-ի հիմնադիր և գործադիր տնօրեն պարոն Թեո Սվի Էննը:
Էսպրեսիֆը կարևորում է ընթերցանությունը և գաղափարները: Քանի որ IoT տեխնոլոգիայի շարունակական արդիականացումը ինժեներների համար ավելի բարձր պահանջներ է ներկայացնում, ինչպե՞ս կարող ենք օգնել ավելի շատ մարդկանց արագ տիրապետել IoT չիպերին, օպերացիոն համակարգերին, ծրագրային շրջանակներին, հավելվածների սխեմաներին և ամպային ծառայության արտադրանքներին: Ինչպես ասում են, ավելի լավ է մարդուն ձուկ սովորեցնել, քան ձուկ տալ: Ուղեղային փոթորիկի նիստում մեզ մտքով անցավ, որ մենք կարող ենք գիրք գրել՝ համակարգված կերպով դասավորելու IoT-ի զարգացման հիմնական գիտելիքները: Մենք հաջողության հասանք, արագ հավաքեցինք մի խումբ ավագ ինժեներներ և միավորեցինք տեխնիկական թիմի փորձը ներկառուցված ծրագրավորման, IoT ապարատային և ծրագրային ապահովման մշակման մեջ, որոնք բոլորն էլ նպաստեցին այս գրքի հրատարակմանը: Գրելու գործընթացում մենք ամեն կերպ փորձել ենք լինել օբյեկտիվ և արդար, կոկոնից զրկված և հակիրճ արտահայտություններով պատմել իրերի ինտերնետի բարդությունն ու հմայքը: Մենք ուշադիր ամփոփեցինք ընդհանուր հարցերը, անդրադարձանք համայնքի արձագանքներին և առաջարկություններին, որպեսզի հստակ պատասխանենք զարգացման գործընթացում առաջացած հարցերին և համապատասխան տեխնիկների և որոշում կայացնողների համար տրամադրենք IoT զարգացման գործնական ուղեցույցներ:
Գրքի կառուցվածքը
Այս գիրքը վերցնում է ինժեներակենտրոն հեռանկար և քայլ առ քայլ բացահայտում է անհրաժեշտ գիտելիքները IoT նախագծերի զարգացման համար: Այն բաղկացած է չորս մասից՝ հետևյալ կերպ.
· Նախապատրաստում (Գլուխ 1). Այս մասը ներկայացնում է IoT-ի ճարտարապետությունը, տիպիկ IoT նախագծի շրջանակը, ESP RainMakerr ամպային հարթակը և զարգացման միջավայրը ESP-IDF, որպեսզի ամուր հիմք դնեն IoT նախագծի զարգացման համար:
· Սարքավորումների և վարորդների մշակում (Գլուխ 5). Հիմնվելով ESP6-C32 չիպսեթի վրա՝ այս մասը մշակում է նվազագույն ապարատային համակարգի և վարորդների մշակումը և իրականացնում է մթության, գույների դասակարգման և անլար կապի կառավարումը:
· Անլար հաղորդակցություն և կառավարում (Գլուխ 7). Այս մասը բացատրում է Wi-Fi-ի խելացի կազմաձևման սխեման, որը հիմնված է ESP11-C32 չիպի, տեղական և ամպային կառավարման արձանագրությունների և սարքերի տեղական և հեռակառավարման վրա: Այն նաև տրամադրում է սմարթֆոնների հավելվածների մշակման, որոնվածի արդիականացման և տարբերակների կառավարման սխեմաներ:
· Օպտիմալացում և զանգվածային արտադրություն (Գլուխ 12-15). Այս մասը նախատեսված է առաջադեմ IoT հավելվածների համար՝ կենտրոնանալով էներգիայի կառավարման ոլորտում արտադրանքի օպտիմալացման, ցածր էներգիայի օպտիմիզացման և ուժեղացված անվտանգության վրա: Այն նաև ներկայացնում է որոնվածի այրումը և փորձարկումը զանգվածային արտադրության մեջ, և ինչպես ախտորոշել սարքի որոնվածի գործարկման կարգավիճակը և գրանցամատյանները ESP Insights հեռակառավարման պլատֆորմի միջոցով:

Աղբյուրի կոդի մասին
Ընթերցողները կարող են վարել նախկինampայս գրքում առկա ծրագրերը, կամ մուտքագրելով կոդը ձեռքով, կամ օգտագործելով գրքին ուղեկցող սկզբնական կոդը: Մենք ընդգծում ենք տեսության և պրակտիկայի համադրությունը և, հետևաբար, գրեթե յուրաքանչյուր գլխում սահմանում ենք Պրակտիկա բաժին՝ հիմնված Smart Light նախագծի վրա: Բոլոր կոդերը բաց կոդով են: Ընթերցողները կարող են ներբեռնել աղբյուրի կոդը և քննարկել այն GitHub-ի և մեր պաշտոնական ֆորումի esp32.com-ի այս գրքի հետ կապված բաժիններում: Այս գրքի բաց կոդով ծածկագիրը ենթակա է Apache License 2.0-ի պայմաններին:
Հեղինակի նշում
Այս գիրքը պաշտոնապես արտադրվել է Espressif Systems-ի կողմից և գրված է ընկերության ավագ ինժեներների կողմից: Այն հարմար է IoT-ի հետ կապված արդյունաբերության մենեջերների և R&D անձնակազմի, հարակից մասնագիտությունների ուսուցիչների և ուսանողների, ինչպես նաև իրերի ինտերնետի ոլորտում էնտուզիաստների համար: Հուսով ենք, որ այս գիրքը կարող է ծառայել որպես աշխատանքային ձեռնարկ, տեղեկանք և անկողնային գիրք՝ լավ դաստիարակի և ընկերոջ նման լինելու համար:
Այս գիրքը կազմելիս մենք անդրադարձել ենք փորձագետների, գիտնականների և տեխնիկների մի քանի համապատասխան հետազոտությունների արդյունքներին տանը և արտերկրում, և արել ենք հնարավորը, որպեսզի դրանք մեջբերվեն ակադեմիական նորմերին համապատասխան: Այնուամենայնիվ, անխուսափելի է, որ որոշ բացթողումներ լինեն, ուստի այստեղ ցանկանում ենք մեր խորին հարգանքն ու երախտագիտությունը հայտնել բոլոր համապատասխան հեղինակներին։ Բացի այդ, մենք մեջբերել ենք տեղեկատվություն համացանցից, ուստի ցանկանում ենք շնորհակալություն հայտնել բնօրինակ հեղինակներին և հրատարակիչներին և ներողություն խնդրել, որ չենք կարող նշել յուրաքանչյուր տեղեկատվության աղբյուրը:
Բարձր որակի գիրք ստեղծելու համար մենք կազմակերպել ենք ներքին քննարկումների փուլեր և սովորել փորձնական ընթերցողների և հրատարակիչների խմբագիրների առաջարկներից ու արձագանքներից: Այստեղ մենք ցանկանում ենք կրկին շնորհակալություն հայտնել ձեր օգնության համար, որը բոլորը նպաստեցին այս հաջող աշխատանքին:
Վերջին, բայց ամենակարևորը, շնորհակալություն բոլորին Espressif-ում, ովքեր այդքան քրտնաջան աշխատել են մեր արտադրանքի ծննդյան և հանրահռչակման համար:
IoT նախագծերի զարգացումը ներառում է գիտելիքների լայն շրջանակ: Սահմանափակվելով գրքի երկարությամբ, ինչպես նաև հեղինակի մակարդակով ու փորձառությամբ՝ բացթողումներն անխուսափելի են։ Ուստի, խնդրում ենք, որ փորձագետներն ու ընթերցողները քննադատեն և ուղղեն մեր սխալները։ Եթե ​​ունեք առաջարկներ այս գրքի համար, խնդրում ենք կապվել մեզ հետ book@espressif.com հասցեով: Մենք անհամբեր սպասում ենք ձեր կարծիքին:

Ինչպե՞ս օգտագործել այս գիրքը:
Այս գրքի նախագծերի կոդը բաց կոդով է: Դուք կարող եք ներբեռնել այն մեր GitHub շտեմարանից և կիսվել ձեր մտքերով և հարցերով մեր պաշտոնական ֆորումում: GitHub՝ https://github.com/espressif/book-esp32c3-iot-projects Ֆորում՝ https://www.esp32.com/bookc3 Գրքի ողջ ընթացքում կլինեն հատվածներ, որոնք ընդգծված կլինեն, ինչպես ցույց է տրված ստորև:
Աղբյուրի կոդը Այս գրքում մենք ընդգծում ենք տեսության և պրակտիկայի համադրությունը և, հետևաբար, գրեթե յուրաքանչյուր գլխում սահմանում ենք Smart Light նախագծի մասին Պրակտիկա բաժինը: Համապատասխան քայլերը և սկզբնաղբյուր էջը կնշվեն երկու տողերի միջև, որոնք սկսվում են տողով tag Աղբյուրի կոդը.
ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ/ԽՈՐՀՈՒՐԴՆԵՐ Այստեղ դուք կարող եք գտնել որոշ կարևոր տեղեկություններ և հիշեցումներ՝ ձեր ծրագիրը հաջողությամբ վրիպազերծելու համար: Դրանք կնշվեն երկու հաստ գծերի միջև, որոնք սկսվում են tag ԾԱՆՈԹՈՒԹՅՈՒՆ կամ ԽՈՐՀՈՒՐԴՆԵՐ:
Այս գրքի հրամանների մեծ մասը կատարվում է Linux-ի տակ՝ հուշում է «$» նիշը: Եթե ​​հրամանը գործարկելու համար պահանջում է գերօգտագործողի արտոնություններ, հուշումը կփոխարինվի «#»-ով: Mac համակարգերում հրամանի տողը «%» է, ինչպես օգտագործվում է Բաժին 4.2.3-ում ESP-IDF-ի տեղադրումը Mac-ում:
Այս գրքի հիմնական տեքստը կտպագրվի Կանոնադրության մեջ, իսկ ծածկագիրը՝ նախկինamples, բաղադրիչներ, ֆունկցիաներ, փոփոխականներ, կոդ file անունները, կոդերի գրացուցակները և տողերը կլինեն Courier New-ում:
Հրամանները կամ տեքստերը, որոնք պետք է մուտքագրվեն օգտագործողի կողմից, և հրամանները, որոնք կարող են մուտքագրվել՝ սեղմելով «Enter» ստեղնը, կտպվեն Courier New թավով: Տեղեկամատյանները և ծածկագրերի բլոկները կներկայացվեն բաց կապույտ վանդակներով:
Exampլե:
Երկրորդ, օգտագործեք esp-idf/components/nvs flash/nvs միջնորմների գեներատոր/nvs միջնորմ gen.py՝ NVS բաժանման երկուականը ստեղծելու համար։ file զարգացման հոսթի վրա հետևյալ հրամանով.
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –size NVS PARTITION SIZE

Գլուխ 1

Ներածություն

դեպի

IoT

20-րդ դարի վերջին, համակարգչային ցանցերի և կապի տեխնոլոգիաների աճով, ինտերնետը արագորեն ինտեգրվեց մարդկանց կյանքում: Քանի որ ինտերնետ տեխնոլոգիաները շարունակում են հասունանալ, ծնվեց իրերի ինտերնետի (IoT) գաղափարը: Բառացիորեն IoT նշանակում է ինտերնետ, որտեղ իրերը միացված են: Մինչ օրիգինալ ինտերնետը խախտում է տարածության և ժամանակի սահմանները և նեղացնում է «անձի և մարդու» միջև հեռավորությունը, IoT-ն «իրերը» դարձնում է կարևոր մասնակից՝ «մարդկանց» և «իրերը» ավելի մոտեցնելով միմյանց: Տեսանելի ապագայում IoT-ը կդառնա տեղեկատվական արդյունաբերության շարժիչ ուժը:
Այսպիսով, ինչ է իրերի ինտերնետը:
Դժվար է ճշգրիտ սահմանել իրերի ինտերնետը, քանի որ դրա իմաստն ու շրջանակը մշտապես զարգանում են: 1995 թվականին Բիլ Գեյթսն առաջին անգամ առաջ քաշեց IoT գաղափարը իր «Ճանապարհ առաջ» գրքում: Պարզ ասած, IoT-ն օբյեկտներին հնարավորություն է տալիս փոխանակել տեղեկատվություն միմյանց հետ ինտերնետի միջոցով: Նրա վերջնական նպատակն է ստեղծել «Ամեն ինչի ինտերնետ»: Սա IoT-ի վաղ մեկնաբանություն է, ինչպես նաև ապագա տեխնոլոգիայի ֆանտազիա: Երեսուն տարի անց, տնտեսության և տեխնոլոգիաների արագ զարգացմամբ, ֆանտազիան իրականություն է դառնում: Սկսած խելացի սարքերից, խելացի տներից, խելացի քաղաքներից, տրանսպորտային միջոցների ինտերնետից և կրելի սարքերից մինչև IoT տեխնոլոգիաներով աջակցվող «մետավերսիան», անընդհատ նոր հայեցակարգեր են առաջանում: Այս գլխում մենք կսկսենք իրերի ինտերնետի ճարտարապետության բացատրությամբ, այնուհետև կներկայացնենք IoT-ի ամենատարածված հավելվածը՝ խելացի տունը, որպեսզի օգնենք ձեզ հստակ պատկերացում կազմել IoT-ի մասին:
1.1 IoT-ի ճարտարապետություն
Իրերի ինտերնետը ներառում է բազմաթիվ տեխնոլոգիաներ, որոնք ունեն տարբեր կիրառական կարիքներ և ձևեր տարբեր ոլորտներում: IoT-ի կառուցվածքը, հիմնական տեխնոլոգիաները և կիրառական բնութագրերը դասավորելու համար անհրաժեշտ է ստեղծել միասնական ճարտարապետություն և ստանդարտ տեխնիկական համակարգ: Այս գրքում IoT-ի ճարտարապետությունը պարզապես բաժանված է չորս շերտերի՝ ընկալման և կառավարման շերտ, ցանցային շերտ, հարթակի շերտ և կիրառական շերտ:
Ընկալման և վերահսկման շերտը Որպես IoT ճարտարապետության ամենահիմնական տարրը, ընկալման և վերահսկման շերտը հանդիսանում է IoT-ի համապարփակ զգայությունը իրականացնելու առանցքը: Նրա հիմնական գործառույթն է հավաքել, բացահայտել և վերահսկել տեղեկատվություն: Այն բաղկացած է տարբեր սարքերից՝ ընկալման ունակությամբ,
3

նույնականացում, վերահսկում և կատարում և պատասխանատու է տվյալների առբերման և վերլուծության համար, ինչպիսիք են նյութի հատկությունները, վարքային միտումները և սարքի կարգավիճակը: Այս կերպ IoT-ն ճանաչում է իրական ֆիզիկական աշխարհը: Բացի այդ, շերտը կարող է նաև վերահսկել սարքի կարգավիճակը։
Այս շերտի ամենատարածված սարքերը տարբեր սենսորներն են, որոնք կարևոր դեր են խաղում տեղեկատվության հավաքագրման և նույնականացման գործում: Սենսորները նման են մարդու զգայական օրգանների, ինչպիսիք են տեսողությանը հավասար լուսազգայուն սենսորները, լսողությանը՝ ակուստիկ տվիչները, հոտառության համար գազի տվիչները և հպման համար զգայուն՝ ճնշման և ջերմաստիճանի տվիչները: Այս բոլոր «զգայական օրգաններով» առարկաները դառնում են «կենդանի» և ունակ են խելացի ընկալելու, ճանաչելու և ֆիզիկական աշխարհի մանիպուլյացիայի:
Ցանցային շերտ Ցանցային շերտի հիմնական գործառույթը տեղեկատվություն փոխանցելն է, ներառյալ ընկալման և կառավարման շերտից ստացված տվյալները նշված թիրախին, ինչպես նաև կիրառական շերտից թողարկված հրամանները ետ դեպի ընկալման և կառավարման շերտ: Այն ծառայում է որպես IoT համակարգի տարբեր շերտերը կապող կարևոր կապի կամուրջ: Իրերի ինտերնետի հիմնական մոդել ստեղծելու համար այն ներառում է երկու քայլ՝ օբյեկտները ցանցում ինտեգրելու համար՝ մուտք դեպի ինտերնետ և փոխանցում ինտերնետի միջոցով:
Ինտերնետ ինտերնետ հասանելիությունը հնարավորություն է տալիս փոխկապակցվել մարդու և մարդու միջև, սակայն չի կարողանում իրերը ներառել մեծ ընտանիքում: Մինչև IoT-ի գալուստը, իրերի մեծ մասը «ցանցային ունակ չէր»: Տեխնոլոգիաների շարունակական զարգացման շնորհիվ IoT-ին հաջողվում է իրերը միացնել ինտերնետին՝ այդպիսով իրականացնելով փոխկապակցվածություն «մարդկանց և իրերի» և «իրերի և իրերի» միջև։ Ինտերնետ կապի իրականացման երկու ընդհանուր եղանակ կա՝ լարային ցանց և անլար ցանց մուտք:
Լարային ցանցի հասանելիության մեթոդները ներառում են Ethernet, սերիական հաղորդակցություն (օրինակ, RS-232, RS-485) և USB, մինչդեռ անլար ցանցի հասանելիությունը կախված է անլար կապից, որը կարող է հետագայում բաժանվել կարճաժամկետ անլար կապի և հեռահար անլար կապի:
Կարճ հեռահար անլար կապը ներառում է ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) և Radio Frequency Identification (RFID): Հեռավոր անլար կապը ներառում է ընդլայնված մեքենայի տիպի հաղորդակցություն (eMTC), LoRa, Նեղ շղթայի ինտերնետ իրերի (NB-IoT), 2G, 3G, 4G, 5G և այլն:
Փոխանցում ինտերնետի միջոցով Ինտերնետ հասանելիության տարբեր մեթոդներ հանգեցնում են տվյալների փոխանցման համապատասխան ֆիզիկական կապի: Հաջորդը պետք է որոշել, թե որ կապի արձանագրությունն օգտագործել տվյալների փոխանցման համար: Համեմատած ինտերնետ տերմինալների հետ՝ IoT տերմինալների մեծ մասը ներկայումս ավելի քիչ է
4 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

հասանելի ռեսուրսներ, ինչպիսիք են մշակման կատարումը, պահեստավորման հզորությունը, ցանցի արագությունը և այլն, ուստի անհրաժեշտ է ընտրել հաղորդակցման արձանագրություն, որը ավելի քիչ ռեսուրսներ է զբաղեցնում IoT հավելվածներում: Գոյություն ունեն երկու հաղորդակցության արձանագրություններ, որոնք լայնորեն կիրառվում են այսօր՝ Հաղորդագրությունների հերթի հեռաչափական տրանսպորտ (MQTT) և սահմանափակ կիրառման արձանագրություն (CoAP):
Պլատֆորմի շերտ Պլատֆորմի շերտը հիմնականում վերաբերում է IoT ամպային հարթակներին: Երբ բոլոր IoT տերմինալները միացված են ցանցին, դրանց տվյալները պետք է համախմբվեն IoT ամպային հարթակի վրա՝ հաշվարկելու և պահելու համար: Պլատֆորմի շերտը հիմնականում աջակցում է IoT հավելվածներին զանգվածային սարքերի մուտքն ու կառավարումը հեշտացնելու համար: Այն միացնում է IoT տերմինալները ամպային հարթակին, հավաքում է տերմինալի տվյալները և հրամաններ է թողարկում տերմինալներին, որպեսզի կիրառի հեռակառավարումը: Որպես միջանկյալ ծառայություն՝ սարքավորումները արդյունաբերական հավելվածներին հատկացնելու համար, պլատֆորմի շերտը կապող դեր է խաղում ամբողջ IoT ճարտարապետության մեջ՝ կրելով վերացական բիզնես տրամաբանություն և ստանդարտացված հիմնական տվյալների մոդել, որը կարող է ոչ միայն իրականացնել սարքերի արագ հասանելիություն, այլ նաև ապահովել հզոր մոդուլային հնարավորություններ։ արդյունաբերության կիրառման սցենարների տարբեր կարիքները բավարարելու համար: Պլատֆորմի շերտը հիմնականում ներառում է ֆունկցիոնալ մոդուլներ, ինչպիսիք են սարքի հասանելիությունը, սարքի կառավարումը, անվտանգության կառավարումը, հաղորդագրությունների հաղորդակցությունը, մոնիտորինգի շահագործումը և սպասարկումը և տվյալների հավելվածները:
· Սարքի հասանելիություն՝ իրականացնելով կապը և հաղորդակցությունը տերմինալների և IoT ամպային հարթակների միջև:
· Սարքի կառավարում, ներառյալ այնպիսի գործառույթներ, ինչպիսիք են սարքի ստեղծումը, սարքի սպասարկումը, տվյալների փոխակերպումը, տվյալների համաժամացումը և սարքի բաշխումը:
· Անվտանգության կառավարում, ապահովելով IoT տվյալների փոխանցման անվտանգությունը անվտանգության իսկորոշման և հաղորդակցության անվտանգության տեսանկյունից:
· Հաղորդագրության հաղորդակցությունը, ներառյալ փոխանցման երեք ուղղությունները, այսինքն՝ տերմինալը տվյալներ է ուղարկում IoT ամպային հարթակ, IoT ամպային հարթակը տվյալներ է ուղարկում սերվերի կողմ կամ այլ IoT ամպային հարթակներ, իսկ սերվերի կողմը հեռակա կարգով կառավարում է IoT սարքերը:
· Մոնիտորինգ O&M, որը ներառում է մոնիտորինգ և ախտորոշում, որոնվածի արդիականացում, առցանց կարգաբերում, գրանցամատյանների ծառայություններ և այլն:
· Տվյալների հավելվածներ, որոնք ներառում են տվյալների պահպանում, վերլուծություն և կիրառում:
Հավելվածի շերտ Հավելվածի շերտը օգտագործում է պլատֆորմի շերտի տվյալները՝ հավելվածը կառավարելու համար՝ զտելով և մշակելով դրանք այնպիսի գործիքներով, ինչպիսիք են տվյալների բազաները և վերլուծության ծրագրերը: Ստացված տվյալները կարող են օգտագործվել իրական աշխարհի IoT հավելվածների համար, ինչպիսիք են խելացի առողջապահությունը, խելացի գյուղատնտեսությունը, խելացի տները և խելացի քաղաքները:
Իհարկե, IoT-ի ճարտարապետությունը կարելի է բաժանել ավելի շատ շերտերի, բայց անկախ նրանից, թե քանի շերտերից է այն բաղկացած, հիմքում ընկած սկզբունքը, ըստ էության, մնում է նույնը: Ուսուցում
Գլուխ 1. Ներածություն IoT 5

IoT-ի ճարտարապետության մասին օգնում է խորացնել IoT տեխնոլոգիաների մեր ըմբռնումը և կառուցել լիարժեք ֆունկցիոնալ IoT նախագծեր:
1.2 IoT հավելված խելացի տներում
IoT-ը ներթափանցել է կյանքի բոլոր ոլորտները, և IoT հավելվածը մեզ ամենասերտ առնչվող խելացի տունն է: Շատ ավանդական սարքեր այժմ հագեցած են մեկ կամ մի քանի IoT սարքերով, և շատ նորակառույց տներ ի սկզբանե նախագծված են IoT տեխնոլոգիաներով: Նկար 1.1-ում ներկայացված են խելացի տան որոշ սովորական սարքեր:
Նկար 1.1. Ընդհանուր խելացի տան սարքեր Խելացի տան զարգացումը կարելի է պարզապես բաժանել խելացի արտադրանքիtagե, տեսարանի փոխկապակցում սtagե և խելացի սtage, ինչպես ցույց է տրված Նկար 1.2-ում:
Նկար 1.2. Զարգացման սtage of smart home 6 ESP32-C3 Wireless Adventure. Համապարփակ ուղեցույց IoT-ի համար

Առաջին սtage-ը խելացի արտադրանքի մասին է: Ի տարբերություն ավանդական տներից՝ խելացի տներում, IoT սարքերը ազդանշաններ են ստանում սենսորներով և միացված են ցանցին անլար կապի տեխնոլոգիաների միջոցով, ինչպիսիք են Wi-Fi, Bluetooth LE և ZigBee: Օգտագործողները կարող են կառավարել խելացի արտադրանքները տարբեր ձևերով, ինչպիսիք են սմարթֆոնների հավելվածները, ձայնային օգնականները, խելացի բարձրախոսների կառավարումը և այլն: Երկրորդըtage-ն կենտրոնանում է տեսարանի փոխկապակցման վրա: Այս սtagե, մշակողները այլևս չեն մտածում մեկ խելացի արտադրանքի վերահսկման մասին, այլ երկու կամ ավելի խելացի արտադրանքի փոխկապակցման, որոշակի չափով ավտոմատացման և վերջապես ձևավորելու հատուկ տեսարանի ռեժիմ: ՆախampԵրբ օգտատերը սեղմում է տեսարանի ռեժիմի որևէ կոճակ, լույսերը, վարագույրները և օդորակիչները ավտոմատ կերպով կհարմարեցվեն նախադրվածներին: Իհարկե, կա նախապայման, որ կապի տրամաբանությունը հեշտությամբ ստեղծվի, ներառյալ գործարկման պայմանները և կատարման գործողությունները: Պատկերացրեք, որ օդորակման ջեռուցման ռեժիմը գործարկվում է, երբ ներսի ջերմաստիճանը իջնում ​​է 10°C-ից ցածր; որ առավոտյան ժամը 7-ին երաժշտություն է հնչում օգտատիրոջը արթնացնելու համար, խելացի վարագույրները բացվում են, և բրնձի կաթսան կամ հացի թոստերը միանում է խելացի վարդակից; քանի որ օգտատերը վեր է կենում և ավարտում լվացումը, նախաճաշն արդեն մատուցվում է, որպեսզի աշխատանքի գնալը չուշանա: Որքան հարմար է դարձել մեր կյանքը։ Երրորդ սtagե գնում է հետախուզական սtagե. Քանի որ ավելի շատ խելացի տնային սարքեր են հասանելի, այնպես էլ ստեղծվող տվյալների տեսակները: Ամպային հաշվարկների, մեծ տվյալների և արհեստական ​​ինտելեկտի օգնությամբ այն կարծես «խելացի ուղեղ» է ներդրվել խելացի տներում, որոնք այլևս չեն պահանջում հաճախակի հրամաններ օգտատերից: Նրանք հավաքում են տվյալներ նախորդ փոխազդեցություններից և սովորում են օգտատիրոջ վարքագծի ձևերն ու նախասիրությունները, որպեսզի ավտոմատացնեն գործողությունները, ներառյալ՝ որոշումներ կայացնելու վերաբերյալ առաջարկություններ: Ներկայումս խելացի տների մեծ մասը դեպքի վայրում է փոխկապակցման stagե. Քանի որ խելացի արտադրանքի ներթափանցման մակարդակը և խելացիությունը մեծանում են, հաղորդակցության արձանագրությունների միջև խոչընդոտները վերացվում են: Ապագայում խելացի տներն իսկապես «խելացի» կդառնան, ինչպես Jarvis in Iron Man AI համակարգը, որը ոչ միայն կարող է օգնել օգտատիրոջը կառավարել տարբեր սարքեր, կարգավորել առօրյա գործերը, այլ նաև ունենալ սուպեր հաշվողական ուժ և մտածելու ունակություն: Խելացի սtagե, մարդիկ ավելի լավ ծառայություններ կստանան թե՛ քանակով, թե՛ որակով։
Գլուխ 1. Ներածություն IoT 7

8 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

2 IoT նախագծերի ներածություն և պրակտիկա
Գլուխ 1-ում մենք ներկայացրեցինք IoT-ի ճարտարապետությունը և ընկալման և կառավարման շերտի, ցանցային շերտի, հարթակի շերտի և կիրառական շերտի դերերն ու փոխհարաբերությունները, ինչպես նաև խելացի տան զարգացումը: Այնուամենայնիվ, ինչպես նկարել սովորելիս, տեսական գիտելիքներն իմանալը հեռու է բավարար լինելուց։ Մենք պետք է «կեղտոտենք մեր ձեռքերը»՝ IoT նախագծերը գործնականում կիրառելու համար, որպեսզի իսկապես տիրապետենք տեխնոլոգիային: Բացի այդ, երբ նախագիծը տեղափոխվում է զանգվածային արտադրության stagե, անհրաժեշտ է հաշվի առնել ավելի շատ գործոններ, ինչպիսիք են ցանցային կապը, կոնֆիգուրացիան, IoT ամպային հարթակի փոխազդեցությունը, որոնվածի կառավարումը և թարմացումները, զանգվածային արտադրության կառավարումը և անվտանգության կազմաձևումը: Այսպիսով, ինչի՞ վրա պետք է ուշադրություն դարձնենք ամբողջական IoT նախագիծ մշակելիս: Գլուխ 1-ում մենք նշեցինք, որ խելացի տունը IoT կիրառման ամենատարածված սցենարներից մեկն է, իսկ խելացի լույսերը ամենահիմնական և գործնական սարքերից են, որոնք կարող են օգտագործվել տներում, հյուրանոցներում, մարզասրահներում, հիվանդանոցներում և այլն: Այս գրքում մենք կվերցնենք խելացի լույսի նախագծի կառուցումը որպես մեկնարկային կետ, կբացատրենք դրա բաղադրիչներն ու առանձնահատկությունները և կցուցադրենք ծրագրի մշակման ուղեցույց: Հուսով ենք, որ դուք կարող եք հետևություններ անել այս դեպքից՝ ավելի շատ IoT հավելվածներ ստեղծելու համար:
2.1 Տիպիկ IoT նախագծերի ներածություն
Մշակման առումով IoT նախագծերի հիմնական ֆունկցիոնալ մոդուլները կարելի է դասակարգել IoT սարքերի ծրագրային ապահովման և ապարատային մշակման, հաճախորդի հավելվածների մշակման և IoT ամպային հարթակի մշակման մեջ: Կարևոր է պարզաբանել հիմնական ֆունկցիոնալ մոդուլները, որոնք հետագայում կքննարկվեն այս բաժնում:
2.1.1 Հիմնական մոդուլներ ընդհանուր IoT սարքերի համար
IoT սարքերի ծրագրային ապահովման և ապարատային մշակումը ներառում է հետևյալ հիմնական մոդուլները. Տվյալների հավաքագրում
Որպես IoT ճարտարապետության ստորին շերտ, ընկալման և կառավարման շերտի IoT սարքերը միացնում են սենսորներն ու սարքերը իրենց չիպերի և ծայրամասային սարքերի միջոցով՝ հասնելու տվյալների հավաքագրման և շահագործման վերահսկման:
9

Հաշվի կապում և նախնական կազմաձևում IoT սարքերի մեծամասնության համար հաշվի կապումը և նախնական կազմաձևումը ավարտվում են մեկ գործառնական գործընթացում, օրինակ.ample, սարքերը միացնելով օգտատերերի հետ՝ կարգավորելով Wi-Fi ցանցը:
Փոխազդեցություն IoT ամպային հարթակների հետ IoT սարքերը մշտադիտարկելու և վերահսկելու համար անհրաժեշտ է նաև դրանք միացնել IoT ամպային հարթակներին՝ միմյանց միջև փոխազդեցության միջոցով հրամաններ տալու և կարգավիճակը հաղորդելու համար:
Սարքի կառավարում IoT ամպային հարթակների հետ կապված սարքերը կարող են շփվել ամպի հետ և գրանցվել, կապվել կամ կառավարվել: Օգտագործողները կարող են հարցնել արտադրանքի կարգավիճակը և կատարել այլ գործողություններ սմարթֆոնի հավելվածում IoT ամպային հարթակների կամ տեղական հաղորդակցման արձանագրությունների միջոցով:
Ներկառուցված ծրագրակազմի արդիականացման IoT սարքերը կարող են նաև հասնել որոնվածի արդիականացման՝ ելնելով արտադրողների կարիքներից: Ամպից ուղարկված հրամաններ ստանալով՝ կիրականացվի որոնվածի թարմացում և տարբերակի կառավարում։ Ծրագրաշարի արդիականացման այս հատկանիշով դուք կարող եք շարունակաբար բարելավել IoT սարքերի գործառույթները, շտկել թերությունները և բարելավել օգտվողի փորձը:
2.1.2 Հաճախորդների հայտերի հիմնական մոդուլները
Հաճախորդի հավելվածները (օրինակ՝ սմարթֆոնների հավելվածները) հիմնականում ներառում են հետևյալ հիմնական մոդուլները.
Հաշվի համակարգ և թույլտվություն Այն աջակցում է հաշվի և սարքի թույլտվությանը:
Սարքի կառավարում Սմարթֆոնի հավելվածները սովորաբար հագեցած են վերահսկիչ գործառույթներով: Օգտագործողները կարող են հեշտությամբ միանալ IoT սարքերին և կառավարել դրանք ցանկացած պահի, ցանկացած վայրում սմարթֆոնների հավելվածների միջոցով: Իրական աշխարհի խելացի տանը սարքերը հիմնականում կառավարվում են սմարթֆոնների հավելվածների միջոցով, ինչը ոչ միայն թույլ է տալիս խելացի կառավարել սարքերը, այլև խնայում է աշխատուժի արժեքը: Հետևաբար, սարքի կառավարումը պարտադիր է հաճախորդի հավելվածների համար, ինչպիսիք են՝ սարքի գործառույթի ատրիբուտի կառավարումը, տեսարանի կառավարումը, պլանավորումը, հեռակառավարման վահանակը, սարքի միացումը և այլն: Խելացի տան օգտագործողները կարող են նաև հարմարեցնել տեսարանները՝ ըստ անձնական կարիքների, լուսավորության վերահսկման, կենցաղային տեխնիկայի, մուտքի: և այլն, տնային կյանքն ավելի հարմարավետ և հարմարավետ դարձնելու համար: Նրանք կարող են ժամանակավորել օդորակումը, անջատել այն հեռակա կարգով, ավտոմատ կերպով միացնել միջանցքի լույսը, երբ դուռը բացվի, կամ մեկ կոճակով անցնել «թատրոն» ռեժիմին:
Ծանուցում Հաճախորդի հավելվածները թարմացնում են IoT սարքերի իրական ժամանակի կարգավիճակը և ծանուցումներ են ուղարկում, երբ սարքերն աննորմալ են դառնում:
10 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Վաճառքից հետո հաճախորդների սպասարկում Սմարթֆոնների հավելվածները կարող են ապրանքների հետ վաճառքի ծառայություններ մատուցել՝ ժամանակին լուծելու IoT սարքերի խափանումների և տեխնիկական գործառնությունների հետ կապված խնդիրները:
Հատուկ գործառույթներ Տարբեր օգտատերերի կարիքները բավարարելու համար կարող են ավելացվել այլ գործառույթներ, ինչպիսիք են Shake, NFC, GPS և այլն: GPS-ը կարող է օգնել սահմանել տեսարանի գործողությունների ճշգրտությունը՝ ըստ գտնվելու վայրի և հեռավորության, մինչդեռ Shake ֆունկցիան թույլ է տալիս օգտվողներին սահմանել հրամաններ, որոնք պետք է կատարվեն կոնկրետ սարքի կամ տեսարանի համար՝ թափահարելով:
2.1.3 Ներածություն ընդհանուր IoT Cloud հարթակներում
IoT ամպային հարթակը բոլորը մեկում հարթակ է, որն ինտեգրում է այնպիսի գործառույթներ, ինչպիսիք են սարքի կառավարումը, տվյալների անվտանգության հաղորդակցությունը և ծանուցումների կառավարումը: Ըստ թիրախային խմբի և հասանելիության՝ IoT ամպային հարթակները կարելի է բաժանել հանրային IoT ամպային հարթակների (այսուհետ՝ «հանրային ամպ») և մասնավոր IoT ամպային հարթակների (այսուհետ՝ «մասնավոր ամպ»):
Հանրային ամպը սովորաբար ցույց է տալիս ձեռնարկությունների կամ անհատների համար ընդհանուր IoT ամպային հարթակներ, որոնք շահագործվում և պահպանվում են հարթակի մատակարարների կողմից և համօգտագործվում են ինտերնետի միջոցով: Այն կարող է լինել անվճար կամ էժան և ծառայություններ է մատուցում բաց հանրային ցանցի ողջ ընթացքում, ինչպիսիք են՝ Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT և այլն: Որպես օժանդակ հարթակ, հանրային ամպը կարող է ինտեգրել վերին հոսքի ծառայություններ մատուցողներին և ներքևում գտնվող վերջնական օգտագործողները՝ ստեղծելու նոր արժեքային շղթա և էկոհամակարգ:
Մասնավոր ամպը ստեղծվել է միայն ձեռնարկությունների օգտագործման համար՝ այդպիսով երաշխավորելով տվյալների, անվտանգության և ծառայության որակի լավագույն վերահսկողությունը: Նրա ծառայություններն ու ենթակառուցվածքը պահպանվում են առանձին ձեռնարկությունների կողմից, իսկ օժանդակ սարքավորումներն ու ծրագրային ապահովումը նույնպես նվիրված են հատուկ օգտագործողներին: Ձեռնարկությունները կարող են հարմարեցնել ամպային ծառայությունները՝ իրենց բիզնեսի կարիքները բավարարելու համար: Ներկայումս խելացի տների որոշ արտադրողներ արդեն ստացել են մասնավոր IoT ամպային հարթակներ և դրանց հիման վրա մշակել են խելացի տան հավելվածներ։
Հանրային ամպը և մասնավոր ամպն ունեն իրենց սեփական առավելությունըtages, որը կբացատրվի ավելի ուշ:
Հաղորդակցման միացմանը հասնելու համար անհրաժեշտ է սարքի կողմից առնվազն ներկառուցված զարգացում կատարել՝ բիզնես սերվերների, IoT ամպային հարթակների և սմարթֆոնների հավելվածների հետ մեկտեղ: Հանդիպելով նման հսկայական նախագծի՝ հանրային ամպը սովորաբար ապահովում է ծրագրային ապահովման մշակման փաթեթներ սարքի և սմարթֆոնների հավելվածների համար՝ գործընթացը արագացնելու համար: Թե՛ հանրային, թե՛ մասնավոր ամպը ծառայություններ է մատուցում, ներառյալ սարքի հասանելիությունը, սարքի կառավարումը, սարքի ստվերը և շահագործումն ու սպասարկումը:
Սարքի հասանելիություն IoT ամպային հարթակները պետք է ապահովեն ոչ միայն ինտերֆեյսներ սարքի մուտքի համար՝ օգտագործելով արձանագրությունները
Գլուխ 2. IoT նախագծերի ներածություն և պրակտիկա 11

ինչպիսիք են MQTT, CoAP, HTTPS և WebSocket-ը, այլև սարքի անվտանգության նույնականացման գործառույթը՝ կեղծ և անօրինական սարքերը արգելափակելու համար՝ արդյունավետորեն նվազեցնելով վտանգի ենթարկվելու վտանգը: Նման նույնականացումը սովորաբար աջակցում է տարբեր մեխանիզմների, ուստի երբ սարքերը զանգվածաբար արտադրվում են, անհրաժեշտ է նախապես նշանակել սարքի վկայագիրը՝ ըստ ընտրված նույնականացման մեխանիզմի և այրել այն սարքերում:
Սարքի կառավարում Սարքի կառավարման գործառույթը, որը տրամադրվում է IoT ամպային հարթակների կողմից, կարող է ոչ միայն օգնել արտադրողներին իրական ժամանակում վերահսկել իրենց սարքերի ակտիվացման կարգավիճակը և առցանց կարգավիճակը, այլև թույլ է տալիս տարբերակներ, ինչպիսիք են սարքերի ավելացումը/հեռացումը, առբերումը, խմբերի ավելացումը/ջնջումը, որոնվածը թարմացնելը: և տարբերակի կառավարում:
Սարքի ստվերային IoT ամպային հարթակները կարող են ստեղծել մշտական ​​վիրտուալ տարբերակ (սարքի ստվեր) յուրաքանչյուր սարքի համար, իսկ սարքի ստվերի կարգավիճակը կարելի է համաժամացնել և ստանալ սմարթֆոնի հավելվածի կամ այլ սարքերի միջոցով՝ ինտերնետ փոխանցման արձանագրությունների միջոցով: Սարքի ստվերը պահում է յուրաքանչյուր սարքի վերջին հաղորդված կարգավիճակը և ակնկալվող կարգավիճակը, և նույնիսկ եթե սարքը անցանց է, այն դեռ կարող է կարգավիճակ ստանալ՝ զանգահարելով API-ներ: Device shadow-ն ապահովում է միշտ միացված API-ներ, ինչը հեշտացնում է սմարթֆոնների հետ փոխազդող հավելվածների ստեղծումը:
Շահագործում և սպասարկում O&M ֆունկցիան ներառում է երեք ասպեկտ. · IoT սարքերի և ծանուցումների մասին վիճակագրական տեղեկատվության ցուցադրում: · Մատյանների կառավարումը թույլ է տալիս տեղեկատվություն գտնել սարքի վարքագծի, վերև/ներքև հաղորդագրությունների հոսքի և հաղորդագրությունների բովանդակության մասին: · Սարքի վրիպազերծումն աջակցում է հրամանների առաքմանը, կազմաձևման թարմացմանը և IoT ամպային հարթակների և սարքի հաղորդագրությունների միջև փոխգործակցության ստուգմանը:
2.2 Պրակտիկա. Smart Light նախագիծ
Յուրաքանչյուր գլխի տեսական ներածությունից հետո դուք կգտնեք պրակտիկ բաժին՝ կապված Smart Light նախագծի հետ, որը կօգնի ձեզ գործնական փորձ ձեռք բերել: Նախագիծը հիմնված է Espressif-ի ESP32-C3 չիպի և ESP RainMaker IoT Cloud պլատֆորմի վրա և ընդգրկում է անլար մոդուլի ապարատը խելացի լույսի արտադրանքներում, ներկառուցված ծրագրակազմը խելացի սարքերի համար՝ հիմնված ESP32C3-ի, սմարթֆոնների հավելվածների և ESP RainMaker փոխազդեցության վրա:
Աղբյուրի կոդը Ավելի լավ սովորելու և փորձը զարգացնելու համար այս գրքի նախագիծը բաց է: Դուք կարող եք ներբեռնել աղբյուրի կոդը մեր GitHub պահոցից՝ https://github: com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

2.2.1 Ծրագրի կառուցվածքը
Smart Light նախագիծը բաղկացած է երեք մասից. i. Խելացի լուսային սարքեր՝ հիմնված ESP32-C3-ի վրա, որոնք պատասխանատու են IoT ամպային հարթակների հետ փոխազդելու և LED l-ի անջատիչի, պայծառության և գունային ջերմաստիճանի վերահսկման համար։amp ուլունքներ. ii. Սմարթֆոնների հավելվածներ (ներառյալ պլանշետային ծրագրերը, որոնք աշխատում են Android-ով և iOS-ով), որոնք պատասխանատու են խելացի լույսի արտադրանքների ցանցային կազմաձևման, ինչպես նաև դրանց կարգավիճակի հարցումների և վերահսկման համար:
iii. IoT ամպային հարթակ, որը հիմնված է ESP RainMaker-ի վրա: Պարզեցնելու համար այս գրքում մենք դիտարկում ենք IoT ամպային հարթակը և բիզնես սերվերը որպես ամբողջություն: ESP RainMaker-ի մասին մանրամասները կտրամադրվեն Գլուխ 3-ում:
Smart Light նախագծի կառուցվածքի և IoT-ի ճարտարապետության միջև համապատասխանությունը ներկայացված է Նկար 2.1-ում:
Նկար 2.1. Խելացի լույսի նախագծի կառուցվածքը
2.2.2 Ծրագրի գործառույթները
Բաժանված ըստ կառուցվածքի՝ յուրաքանչյուր մասի գործառույթները հետևյալն են. Խելացի լուսային սարքեր
· Ցանցի կազմաձևում և միացում: · LED PWM կառավարում, ինչպիսիք են անջատիչը, պայծառությունը, գունային ջերմաստիճանը և այլն: · Ավտոմատացում կամ տեսարանի կառավարում, օրինակ՝ ժամանակի անջատիչ: · Flash-ի գաղտնագրում և անվտանգ բեռնում: · Որոնվածի արդիականացում և տարբերակի կառավարում:
Գլուխ 2. IoT նախագծերի ներածություն և պրակտիկա 13

Սմարթֆոնների հավելվածներ · Ցանցի կազմաձևում և սարքի կապում: · Խելացի լույսի արտադրանքի կառավարում, օրինակ՝ անջատիչ, պայծառություն, գունային ջերմաստիճան և այլն: · Ավտոմատացում կամ տեսարանի կարգավորումներ, օրինակ՝ ժամանակի անջատիչ: · Տեղական/հեռակառավարում: · Օգտատիրոջ գրանցում, մուտք և այլն:
ESP RainMaker IoT ամպային հարթակ · Միացնելով IoT սարքի մուտքը: · Սարքի շահագործման API-ների տրամադրում, որոնք հասանելի են սմարթֆոնների հավելվածներին: · Որոնվածի արդիականացում և տարբերակի կառավարում:
2.2.3 Սարքավորումների պատրաստում
Եթե ​​հետաքրքրված եք նախագիծը գործնականում կիրառելով, ձեզ նաև անհրաժեշտ կլինի հետևյալ սարքաշարը՝ խելացի լույսեր, սմարթֆոններ, Wi-Fi երթուղիչներ և համակարգիչ, որը համապատասխանում է զարգացման միջավայրի տեղադրման պահանջներին: Խելացի լույսեր
Խելացի լույսերը լամպերի նոր տեսակ են, որոնց ձևը նույնն է, ինչ ընդհանուր շիկացած լամպը: Խելացի լույսը կազմված է կոնդենսատորի նվազեցման կարգավորվող սնուցման աղբյուրից, անլար մոդուլից (ներկառուցված ESP32-C3-ով), LED կարգավորիչից և RGB LED մատրիցից: Երբ միացված է հոսանքին, 15 V DC voltagԿոնդենսատորի իջեցումից, դիոդի ուղղումից և կարգավորումից հետո ելքը էներգիա է ապահովում LED կարգավորիչին և LED մատրիցին: LED կարգավորիչը կարող է ավտոմատ կերպով ուղարկել բարձր և ցածր մակարդակներ որոշակի ընդմիջումներով՝ միացնելով RGB LED մատրիցը փակ (լույսերը միացված) և բաց (լույսերը անջատված) միջև, այնպես որ այն կարող է արձակել կապույտ, դեղին, կանաչ, մանուշակագույն, կապույտ, կարմիր և սպիտակ լույս. Անլար մոդուլը պատասխանատու է Wi-Fi երթուղիչին միանալու, խելացի լույսերի կարգավիճակի ստացման և հաղորդման, ինչպես նաև LED-ը կառավարելու հրամաններ ուղարկելու համար:
Նկար 2.2. Մոդելացված խելացի լույս
Վաղ զարգացման մեջ սtagե, դուք կարող եք մոդելավորել խելացի լույս՝ օգտագործելով ESP32-C3DevKitM-1 տախտակը, որը միացված է RGB LED l-ովamp ուլունքներ (տես Նկար 2.2): Բայց դուք պետք է
14 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

նշեք, որ սա խելացի լույս հավաքելու միակ միջոցը չէ: Այս գրքում նախագծի ապարատային դիզայնը պարունակում է միայն անլար մոդուլ (ներկառուցված ESP32-C3-ով), բայց ոչ ամբողջական խելացի լույսի ապարատային դիզայն: Բացի այդ, Espressif-ը նաև արտադրում է ESP32-C3-ի վրա հիմնված աուդիո մշակման տախտակ ESP32C3-Lyra՝ լույսերը ձայնով կառավարելու համար: Տախտակն ունի ինտերֆեյսեր միկրոֆոնների և բարձրախոսների համար և կարող է կառավարել LED շերտերը: Այն կարող է օգտագործվել ծայրահեղ ցածր գնով, բարձր արդյունավետությամբ աուդիո հեռարձակողների և ռիթմային լուսային ժապավենների մշակման համար: Նկար 2.3-ը ցույց է տալիս ESP32-C3Lyra տախտակը, որը կապված է 40 LED լույսերի շերտով:
Նկար 2.3. ESP32-C3-Lyra-ն միացված է 40 LED լույսերի շերտով
Սմարթֆոններ (Android/iOS) Smart Light նախագիծը ներառում է սմարթֆոնի հավելվածի մշակում խելացի լույսի արտադրանքները կարգավորելու և կառավարելու համար:
Wi-Fi երթուղիչներ Wi-Fi երթուղիչները փոխակերպում են լարային ցանցի ազդանշանները և շարժական ցանցի ազդանշանները անլար ցանցի ազդանշանների՝ համակարգիչների, սմարթֆոնների, պլանշետների և այլ անլար սարքերի համար ցանցին միանալու համար: ՆախampԼայնաշերտ տնային պայմաններում միայն պետք է միացված լինի Wi-Fi երթուղիչին՝ Wi-Fi սարքերի անլար ցանցին հասնելու համար: Wi-Fi երթուղիչների կողմից աջակցվող հիմնական արձանագրության ստանդարտը IEEE 802.11n է, միջին TxRate 300 Մբիթ/վրկ կամ առավելագույնը 600 Մբիթ/վրկ: Դրանք հետընթաց համատեղելի են IEEE 802.11b-ի և IEEE 802.11g-ի հետ: Espressif-ի ESP32-C3 չիպն աջակցում է IEEE 802.11b/g/n, այնպես որ կարող եք ընտրել միաշերտ (2.4 ԳՀց) կամ երկշերտ (2.4 ԳՀց և 5 ԳՀց) Wi-Fi երթուղիչ:
Համակարգչի (Linux/macOS/Windows) մշակման միջավայրը կներկայացվի Գլուխ 4-ում: Գլուխ 2. IoT նախագծերի ներածություն և պրակտիկա 15

2.2.4 Զարգացման գործընթաց
Նկար 2.4. Smart Light նախագծի մշակման քայլերը
Սարքավորումների ձևավորում IoT սարքերի ապարատային դիզայնը կարևոր է IoT նախագծի համար: Խելացի լույսի ամբողջական նախագիծը նախատեսվում է արտադրել ալamp աշխատել էլեկտրական ցանցի տակ. Տարբեր արտադրողներ արտադրում են լampտարբեր ոճերի և վարորդների տեսակների, բայց դրանց անլար մոդուլները սովորաբար ունեն նույն գործառույթը: Smart Ligh նախագծի մշակման գործընթացը պարզեցնելու համար այս գիրքն ընդգրկում է միայն անլար մոդուլների ապարատային դիզայնը և ծրագրային ապահովման մշակումը:
IoT ամպային հարթակի կոնֆիգուրացիա IoT ամպային հարթակներ օգտագործելու համար դուք պետք է կարգավորեք նախագծերը հետնամասում, ինչպիսիք են արտադրանքի ստեղծումը, սարքերի ստեղծումը, սարքի հատկությունների կարգավորումը և այլն:
Ներկառուցված ծրագրային ապահովման մշակում IoT սարքերի համար Իրականացրեք ակնկալվող գործառույթները ESP-IDF-ի, Espressif-ի սարքի SDK-ի հետ, ներառյալ միացումը IoT ամպային հարթակներին, մշակելով LED դրայվերներ և արդիականացրեք որոնվածը:
Սմարթֆոնների հավելվածների մշակում Մշակեք սմարթֆոնների հավելվածներ Android և iOS համակարգերի համար՝ օգտատերերի գրանցման և մուտքի, սարքի կառավարման և այլ գործառույթների իրականացման համար:
IoT սարքի օպտիմիզացում IoT սարքի գործառույթների հիմնական մշակումն ավարտվելուն պես, դուք կարող եք դիմել օպտիմալացման խնդիրներին, ինչպիսիք են էներգիայի օպտիմիզացումը:
Զանգվածային արտադրության փորձարկում Կատարեք զանգվածային արտադրության թեստեր՝ համաձայն համապատասխան ստանդարտների, ինչպիսիք են սարքավորումների ֆունկցիայի թեստը, ծերացման թեստը, ՌԴ թեստը և այլն:
Չնայած վերը թվարկված քայլերին, Smart Light նախագիծը պարտադիր չէ, որ ենթակա լինի նման ընթացակարգի, քանի որ տարբեր առաջադրանքներ կարող են իրականացվել նաև միաժամանակ: Նախample, ներդրված ծրագրակազմը և սմարթֆոնների հավելվածները կարող են զուգահեռաբար մշակվել: Որոշ քայլեր կարող են նաև կրկնվել, ինչպիսիք են IoT սարքերի օպտիմալացումը և զանգվածային արտադրության փորձարկումը:
16 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

2.3 Ամփոփում
Այս գլխում մենք նախ բացատրեցինք IoT նախագծի հիմնական բաղադրիչներն ու ֆունկցիոնալ մոդուլները, այնուհետև գործնականում ներկայացրեցինք Smart Light գործը՝ անդրադառնալով դրա կառուցվածքին, գործառույթներին, սարքաշարի պատրաստմանը և զարգացման գործընթացին: Ընթերցողները կարող են հետևություններ անել պրակտիկայից և վստահ լինել ապագայում նվազագույն սխալներով IoT նախագծեր իրականացնելու հարցում:
Գլուխ 2. IoT նախագծերի ներածություն և պրակտիկա 17

18 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Գլուխ 3

Ներածություն

դեպի

ESP

RainMaker

Իրերի ինտերնետը (IoT) առաջարկում է մարդկանց ապրելակերպը փոխելու անսահման հնարավորություններ, սակայն IoT ճարտարագիտության զարգացումը լի է մարտահրավերներով: Հանրային ամպերի միջոցով տերմինալների արտադրողները կարող են իրականացնել արտադրանքի ֆունկցիոնալությունը հետևյալ լուծումների միջոցով.
Հիմնվելով լուծումների մատակարարների ամպային հարթակների վրա Այս կերպ, տերմինալների արտադրողները պետք է միայն նախագծեն արտադրանքի սարքավորումը, այնուհետև սարքաշարը միացնեն ամպին՝ օգտագործելով տրամադրված հաղորդակցման մոդուլը և կարգավորեն արտադրանքի գործառույթները՝ հետևելով ուղեցույցներին: Սա արդյունավետ մոտեցում է, քանի որ այն վերացնում է սերվերի և հավելվածի կողմից մշակման և գործառնությունների և սպասարկման անհրաժեշտությունը (O&M): Այն թույլ է տալիս տերմինալների արտադրողներին կենտրոնանալ ապարատային դիզայնի վրա՝ առանց հաշվի առնելու ամպի ներդրումը: Այնուամենայնիվ, նման լուծումները (օրինակ՝ սարքի որոնվածը և հավելվածը) սովորաբար բաց կոդով չեն, ուստի արտադրանքի գործառույթները կսահմանափակվեն մատակարարի ամպային հարթակով, որը հնարավոր չէ հարմարեցնել: Մինչդեռ օգտագործողի և սարքի տվյալները նույնպես պատկանում են ամպային հարթակին։
Ելնելով ամպային արտադրանքներից Այս լուծումում, ապարատային դիզայնն ավարտելուց հետո, տերմինալների արտադրողները ոչ միայն պետք է իրականացնեն ամպային գործառույթներ՝ օգտագործելով հանրային ամպի կողմից տրամադրված մեկ կամ մի քանի ամպային արտադրանք, այլ նաև պետք է սարքավորումը կապեն ամպի հետ: Նախample, Amazon-ին միանալու համար Web Ծառայություններ (AWS), տերմինալների արտադրողները պետք է օգտագործեն AWS արտադրանքները, ինչպիսիք են Amazon API Gateway-ը, AWS IoT Core-ը և AWS Lambda-ն՝ սարքի հասանելիությունը, հեռակառավարումը, տվյալների պահպանումը, օգտվողների կառավարումը և այլ հիմնական գործառույթները միացնելու համար: Այն ոչ միայն խնդրում է տերմինալների արտադրողներին ճկուն կերպով օգտագործել և կարգավորել ամպային արտադրանքները՝ խորը ըմբռնումով և հարուստ փորձով, այլ նաև պահանջում է, որ նրանք հաշվի առնեն շինարարության և պահպանման ծախսերը սկզբնական և հետագա ծառայությունների համար:tages Սա մեծ մարտահրավերներ է ստեղծում ընկերության էներգիայի և ռեսուրսների համար:
Համեմատած հանրային ամպերի հետ՝ մասնավոր ամպերը սովորաբար կառուցվում են կոնկրետ նախագծերի և ապրանքների համար: Անձնական ամպային մշակողներին տրվում է ամենաբարձր ազատության մակարդակը արձանագրության ձևավորման և բիզնես տրամաբանության իրականացման գործում: Տերմինալների արտադրողները կարող են ապրանքներ և դիզայնի սխեմաներ պատրաստել ըստ ցանկության և հեշտությամբ ինտեգրել և հզորացնել օգտվողի տվյալները: Համատեղելով հանրային ամպի բարձր անվտանգությունը, մասշտաբայնությունը և հուսալիությունը advan-ի հետtagմասնավոր ամպի համար Espressif-ը գործարկեց ESP-ն
19

RainMaker, խորապես ինտեգրված մասնավոր ամպային լուծում, որը հիմնված է Amazon ամպի վրա: Օգտագործողները կարող են տեղակայել ESP RainMaker-ը և ստեղծել անձնական ամպ պարզապես AWS հաշվի միջոցով:
3.1 Ի՞նչ է ESP RainMaker-ը:
ESP RainMaker-ը ամբողջական AIoT հարթակ է, որը կառուցված է բազմաթիվ հասուն AWS արտադրանքներով: Այն տրամադրում է զանգվածային արտադրության համար անհրաժեշտ տարբեր ծառայություններ, ինչպիսիք են սարքի ամպային հասանելիությունը, սարքի արդիականացումը, հետին պլանի կառավարումը, երրորդ կողմի մուտքը, ձայնային ինտեգրումը և օգտվողների կառավարումը: Օգտագործելով AWS-ի կողմից տրամադրված առանց սերվերի հավելվածների պահոցը (SAR), տերմինալների արտադրողները կարող են արագ տեղակայել ESP RainMaker-ը իրենց AWS հաշիվներում, ինչը ժամանակի համար արդյունավետ է և հեշտ է գործել: Espressif-ի կողմից կառավարվող և սպասարկվող SAR-ը, որն օգտագործվում է ESP RainMaker-ի կողմից, օգնում է մշակողներին նվազեցնել ամպի պահպանման ծախսերը և արագացնել AIoT արտադրանքի զարգացումը, այդպիսով ստեղծելով անվտանգ, կայուն և հարմարեցված AIoT լուծումներ: Նկար 3.1-ը ցույց է տալիս ESP RainMaker-ի ճարտարապետությունը:
Նկար 3.1. ESP RainMaker-ի ճարտարապետությունը
Espressif-ի ESP RainMaker հանրային սերվերը անվճար է բոլոր ESP էնտուզիաստների, ստեղծողների և ուսուցիչների համար՝ լուծումների գնահատման համար: Մշակողները կարող են մուտք գործել Apple-ի, Google-ի կամ GitHub-ի հաշիվներով և արագ կառուցել IoT հավելվածի իրենց նախատիպերը: Հանրային սերվերը միավորում է Alexa-ն և Google Home-ը և տրամադրում է ձայնային կառավարման ծառայություններ, որոնք աջակցվում են Alexa Skill-ի և Google Actions-ի կողմից: Դրա իմաստային ճանաչման գործառույթը սնուցվում է նաև երրորդ անձանց կողմից: RainMaker IoT սարքերն արձագանքում են միայն կոնկրետ գործողությունների: Աջակցվող ձայնային հրամանների սպառիչ ցանկի համար խնդրում ենք ստուգել երրորդ կողմի հարթակները: Բացի այդ, Espressif-ը օգտատերերի համար առաջարկում է հանրային RainMaker հավելված՝ ապրանքները սմարթֆոնների միջոցով կառավարելու համար: 20 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

3.2 ESP RainMaker-ի իրականացումը
Ինչպես ցույց է տրված Նկար 3.2-ում, ESP RainMaker-ը բաղկացած է չորս մասից. · RainMaker Cloud-ը (հայտնի է նաև որպես ամպային հետնամաս), որն ապահովում է այնպիսի ծառայություններ, ինչպիսիք են հաղորդագրությունների զտումը, օգտվողների կառավարումը, տվյալների պահպանումը և երրորդ կողմի ինտեգրումը: · RainMaker Agent, որը հնարավորություն է տալիս RainMaker սարքերին միանալ RainMaker Cloud-ին: · RainMaker Client (RainMaker հավելված կամ CLI սկրիպտներ), տրամադրման, օգտատերերի ստեղծման, սարքի միավորման և վերահսկման համար և այլն:
Նկար 3.2. ESP RainMaker-ի կառուցվածքը
ESP RainMaker-ը ապահովում է արտադրանքի մշակման և զանգվածային արտադրության գործիքների ամբողջական փաթեթ, ներառյալ՝ RainMaker SDK
RainMaker SDK-ն հիմնված է ESP-IDF-ի վրա և տրամադրում է սարքի կողմի գործակալի և հարակից C API-ների սկզբնական կոդը որոնվածը մշակելու համար: Մշակողները պետք է գրեն միայն հավելվածի տրամաբանությունը, իսկ մնացածը թողնեն RainMaker շրջանակին: C API-ների մասին լրացուցիչ տեղեկությունների համար այցելեք https://bookc3.espressif.com/rm/c-api-reference: RainMaker հավելված RainMaker հավելվածի հանրային տարբերակը ծրագրավորողներին թույլ է տալիս ավարտին հասցնել սարքի ապահովումը և վերահսկել և հարցումներ կատարել սարքերի կարգավիճակի վրա (օրինակ՝ խելացի լուսավորության արտադրանք): Այն հասանելի է ինչպես iOS, այնպես էլ Android հավելվածների խանութներում: Լրացուցիչ մանրամասների համար տե՛ս Գլուխ 10-ը: REST API-ներ REST API-ներն օգնում են օգտվողներին ստեղծել իրենց սեփական հավելվածները, որոնք նման են RainMaker հավելվածին: Լրացուցիչ տեղեկությունների համար այցելեք https://swaggerapis.rainmaker.espressif.com/:
Գլուխ 3. ESP RainMaker 21-ի ներածություն

Python API-ներ Python-ի վրա հիմնված CLI-ն, որը գալիս է RainMaker SDK-ով, տրամադրվում է սմարթֆոնի գործառույթներին նման բոլոր գործառույթներն իրականացնելու համար: Python API-ների մասին լրացուցիչ տեղեկությունների համար այցելեք https://bookc3.espressif.com/rm/python-api-reference:
Admin CLI Admin CLI-ն, ավելի բարձր հասանելիության մակարդակով, տրամադրվում է ESP RainMaker-ի մասնավոր տեղակայման համար՝ սարքի սերտիֆիկատներ զանգվածաբար ստեղծելու համար:
3.2.1 Հայցադիմումի ծառայություն
RainMaker սարքերի և ամպային հետնամասի միջև ամբողջ հաղորդակցությունն իրականացվում է MQTT+TLS-ի միջոցով: ESP RainMaker-ի համատեքստում «Claiming»-ն այն գործընթացն է, որի ընթացքում սարքերը հավաստագրեր են ստանում Claiming Service-ից՝ ամպային հետին պլանին միանալու համար: Նկատի ունեցեք, որ Claiming Service-ը կիրառելի է միայն RainMaker-ի հանրային ծառայության համար, մինչդեռ մասնավոր տեղակայման համար սարքի վկայագրերը պետք է զանգվածաբար ստեղծվեն Admin CLI-ի միջոցով: ESP RainMaker-ն աջակցում է երեք տեսակի Հայցադիմումի Ծառայություն՝ Self Claiming
Սարքն ինքն է ստանում վկայականները eFuse-ում նախապես ծրագրավորված գաղտնի բանալիով ինտերնետին միանալուց հետո: Հոսթի վրա հիմնված պահանջներ Հավաստագրերը ստացվում են մշակման հոսթից՝ RainMaker հաշվի միջոցով: Աջակցված պահանջներ Վկայականները ձեռք են բերվում տրամադրման ընթացքում սմարթֆոնների հավելվածների միջոցով:
3.2.2 RainMaker գործակալ
Նկար 3.3. RainMaker SDK-ի կառուցվածքը RainMaker Agent-ի առաջնային գործառույթն է կապի ապահովումը և հավելվածի շերտին աջակցելը վերահղման/ներքև ամպային տվյալների մշակման համար: Այն կառուցված է RainMaker SDK 22 ESP32-C3 Wireless Adventure-ի միջոցով. IoT-ի համապարփակ ուղեցույց

և մշակվել է ապացուցված ESP-IDF շրջանակի հիման վրա՝ օգտագործելով ESP-IDF բաղադրիչներ, ինչպիսիք են RTOS, NVS և MQTT: Նկար 3.3-ը ցույց է տալիս RainMaker SDK-ի կառուցվածքը:
RainMaker SDK-ն ներառում է երկու հիմնական առանձնահատկություն.
Միացում
ես. Համագործակցություն Claiming Service-ի հետ՝ սարքի վկայագրեր ստանալու համար:
ii. Միացում ամպային հետնամասին՝ օգտագործելով անվտանգ MQTT արձանագրություն՝ հեռակա կապ ապահովելու և հեռակառավարման, հաղորդագրությունների հաշվետվությունների, օգտատերերի կառավարում, սարքի կառավարում և այլն իրականացնելու համար: Այն օգտագործում է MQTT բաղադրիչը ESP-IDF-ում լռելյայնորեն և ապահովում է աբստրակցիոն շերտ՝ այլ մարդկանց հետ ինտերֆեյսի համար: արձանագրության կույտեր:
iii. Wi-Fi-ի տրամադրման բաղադրիչի տրամադրում Wi-Fi կապի և ապահովման համար, esp https ota բաղադրիչ OTA-ի թարմացումների համար և esp տեղական ctrl բաղադրիչ՝ տեղական սարքի հայտնաբերման և միացման համար: Այս բոլոր նպատակներին կարելի է հասնել պարզ կոնֆիգուրացիայի միջոցով:
Տվյալների մշակում
ես. Claiming Service-ի կողմից տրված սարքի վկայագրերի և RainMaker-ի գործարկման ժամանակ անհրաժեշտ տվյալների պահպանում, լռելյայն օգտագործելով nvs ֆլեշ բաղադրիչի կողմից տրամադրված ինտերֆեյսը և ծրագրավորողների համար տրամադրելով API-ներ ուղղակի օգտագործման համար:
ii. Օգտագործելով հետադարձ կապի մեխանիզմը՝ վերահղման/ներքև ամպային տվյալների մշակման համար և ավտոմատ կերպով ապաշրջափակելով տվյալները հավելվածի շերտում՝ մշակողների կողմից հեշտ մշակման համար: ՆախampԲացի այդ, RainMaker SDK-ն ապահովում է հարուստ ինտերֆեյսներ՝ TSL (Thing Specification Language) տվյալներ ստեղծելու համար, որոնք անհրաժեշտ են՝ սահմանելու TSL մոդելներ՝ IoT սարքերը նկարագրելու և այնպիսի գործառույթներ իրականացնելու համար, ինչպիսիք են ժամանակը, հետհաշվարկը և ձայնային կառավարումը: Հիմնական ինտերակտիվ գործառույթների համար, ինչպիսիք են ժամանակացույցը, RainMaker SDK-ն ապահովում է առանց մշակման լուծում, որը կարող է պարզապես միացվել, երբ անհրաժեշտ է: Այնուհետև RainMaker Agent-ը ուղղակիորեն կմշակի տվյալները, կուղարկի դրանք ամպին համապատասխան MQTT թեմայի միջոցով և հետադարձ կապի մեխանիզմի միջոցով կփոխանցի տվյալների փոփոխությունները ամպի հետին մասում:
3.2.3 Cloud Backend
Cloud backend-ը կառուցված է AWS Serverless Computing-ի վրա և ձեռք է բերվել AWS Cognito-ի (ինքնության կառավարման համակարգ), Amazon API Gateway-ի, AWS Lambda-ի (անսերվերի հաշվողական ծառայություն), Amazon DynamoDB-ի (NoSQL տվյալների բազա), AWS IoT Core-ի (IoT մուտքի միջուկի միջոցով, որն ապահովում է MQTT մուտք: և կանոնների զտում), Amazon Simple Email Service (SES պարզ փոստային ծառայություն), Amazon CloudFront (արագ առաքման ցանց), Amazon Simple Queue Service (SQS հաղորդագրությունների հերթում) և Amazon S3 (դույլային պահեստավորման ծառայություն): Այն ուղղված է լայնածավալության և անվտանգության օպտիմալացմանը: ESP RainMaker-ի միջոցով ծրագրավորողները կարող են կառավարել սարքերը՝ առանց ամպում կոդ գրելու: Սարքերի կողմից հաղորդված հաղորդագրությունները թափանցիկ կերպով փոխանցվում են
Գլուխ 3. ESP RainMaker 23-ի ներածություն

հավելվածի հաճախորդներ կամ երրորդ կողմի այլ ծառայություններ: Աղյուսակ 3.1-ը ցույց է տալիս AWS ամպային արտադրանքներն ու գործառույթները, որոնք օգտագործվում են ամպային հետին պլանում, մշակման փուլում գտնվող ավելի շատ արտադրանքներով և գործառույթներով:
Աղյուսակ 3.1. AWS ամպային արտադրանքներ և գործառույթներ, որոնք օգտագործվում են ամպային հետին պլանի կողմից

AWS Cloud Product, որն օգտագործվում է RainMaker-ի կողմից

Գործառույթ

AWS Cognito

Օգտագործողի հավատարմագրերի կառավարում և երրորդ կողմի մուտքերի աջակցություն

AWS Lambda

Ամպային հետին պլանի հիմնական բիզնես տրամաբանության իրականացում

Amazon Timestream-ի ժամանակային շարքերի տվյալների պահպանում

Amazon DynamoDB Պահպանելով հաճախորդների անձնական տվյալները

AWS IoT Core

Աջակցում է MQTT հաղորդակցությանը

Amazon SES

Էլփոստի ուղարկման ծառայությունների տրամադրում

Amazon CloudFront Արագացնում է backend-ի կառավարումը webկայքի մուտք

Amazon SQS

Հաղորդագրությունների վերահասցեավորում AWS IoT Core-ից

3.2.4 RainMaker հաճախորդ
RainMaker-ի հաճախորդները, ինչպիսիք են App-ը և CLI-ը, շփվում են ամպային հետին պլանի հետ REST API-ների միջոցով: REST API-ների մասին մանրամասն տեղեկություններ և հրահանգներ կարելի է գտնել Espressif-ի կողմից տրամադրված Swagger փաստաթղթերում: RainMaker-ի բջջային հավելվածի հաճախորդը հասանելի է ինչպես iOS, այնպես էլ Android համակարգերի համար: Այն թույլ է տալիս սարքի տրամադրում, կառավարում և համօգտագործում, ինչպես նաև ստեղծում և հնարավորություն է տալիս հետհաշվարկի առաջադրանքներ և միանալ երրորդ կողմի պլատֆորմներին: Այն կարող է ավտոմատ կերպով բեռնել միջերեսը և պատկերակները՝ համաձայն սարքերի կողմից հաղորդված կազմաձևերի և ամբողջությամբ ցուցադրել սարքի TSL-ը:
Նախampեթե խելացի լույսը կառուցված է RainMaker SDK-ի վրա, որը տրամադրվում է նախկինումamples, լամպի լույսի պատկերակը և միջերեսը ավտոմատ կերպով կբեռնվեն, երբ ապահովումն ավարտվի: Օգտատերերը կարող են փոխել լույսի գույնն ու պայծառությունը ինտերֆեյսի միջոցով և հասնել երրորդ կողմի վերահսկողության՝ Alexa Smart Home Skill-ը կամ Google Smart Home Actions-ը կապելով իրենց ESP RainMaker հաշիվներին: Նկար 3.4-ը ցույց է տալիս պատկերակը և միջերեսը նախկինումampլամպի լույսը համապատասխանաբար Alexa-ի, Google Home-ի և ESP RainMaker հավելվածի վրա:

24 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

(ա) Օրինակample – Alexa

(բ) Օրինակample – Google Home

(գ) Օրինակample – ESP RainMaker
Նկար 3.4. ՆախampAlexa-ի, Google Home-ի և ESP RainMaker հավելվածի պատկերակները և լամպի միջերեսը
3.3 Պրակտիկա. ESP RainMaker-ի հետ մշակման հիմնական կետերը
Սարքի դրայվերի շերտը ավարտելուց հետո մշակողները կարող են սկսել ստեղծել TSL մոդելներ և մշակել ներքևի կապի տվյալները՝ օգտագործելով RainMaker SDK-ի կողմից տրամադրված API-ները և միացնել ESP RainMaker-ի հիմնական ծառայությունները՝ հիմնված արտադրանքի սահմանման և պահանջների վրա:
Գլուխ 3. ESP RainMaker 25-ի ներածություն

Այս գրքի 9.4 բաժինը կբացատրի RainMaker-ում LED խելացի լույսի ներդրումը: Վրիպազերծման ժամանակ մշակողները կարող են օգտագործել RainMaker SDK-ի CLI գործիքները՝ խելացի լույսի հետ հաղորդակցվելու համար (կամ զանգահարել Swagger-ից REST API-ներ):
Գլուխ 10-ը կմշակի REST API-ների օգտագործումը սմարթֆոնների հավելվածների մշակման մեջ: LED խելացի լույսերի OTA թարմացումները կքննարկվեն 11-րդ գլխում: Եթե մշակողները միացրել են ESP Insights-ի հեռակառավարման մոնիտորինգը, ESP RainMaker-ի կառավարման հետնամասը կցուցադրի ESP Insights-ի տվյալները: Մանրամասները կներկայացվեն 15-րդ գլխում:
ESP RainMaker-ն աջակցում է մասնավոր տեղակայմանը, որը տարբերվում է հանրային RainMaker սերվերից հետևյալ կերպ.
Հայցադիմումի ծառայություն Մասնավոր տեղակայման մեջ վկայագրեր ստեղծելու համար պահանջվում է օգտագործել RainMaker Admin CLI-ն՝ Հայցելու փոխարեն: Հանրային սերվերի դեպքում ծրագրավորողներին պետք է տրվեն ադմինիստրատորի իրավունքներ՝ որոնվածի արդիականացում իրականացնելու համար, բայց դա անցանկալի է առևտրային տեղակայման ժամանակ: Հետևաբար, ոչ առանձին նույնականացման ծառայություն կարող է տրամադրվել ինքնաբացարկի համար, ոչ էլ ադմինիստրատորի իրավունքներ հոսթինգի կամ օժանդակվող պահանջի համար:
Հեռախոսային հավելվածներ Մասնավոր տեղակայման դեպքում հավելվածները պետք է կազմաձևվեն և կազմվեն առանձին՝ համոզվելու համար, որ հաշվի համակարգերը փոխգործունակ չեն:
Երրորդ կողմի մուտքերը և ձայնային ինտեգրումը Մշակողները պետք է առանձին կազմաձևեն Google-ի և Apple-ի մշակողների հաշիվների միջոցով, որպեսզի միացնեն երրորդ կողմի մուտքերը, ինչպես նաև Alexa Skill-ի և Google Voice Assistant-ի ինտեգրումը:
ԽՈՐՀՈՒՐԴՆԵՐ Ամպի տեղակայման մասին մանրամասների համար այցելեք https://customer.rainmaker.espressif: com. Ինչ վերաբերում է որոնվածին, ապա հանրային սերվերից մասնավոր սերվեր տեղափոխումը պահանջում է միայն սարքի վկայագրերի փոխարինում, ինչը մեծապես բարելավում է միգրացիայի արդյունավետությունը և նվազեցնում միգրացիայի և երկրորդական վրիպազերծման ծախսերը:
3.4 ESP RainMaker-ի առանձնահատկությունները
ESP RainMaker-ի առանձնահատկությունները հիմնականում ուղղված են երեք ասպեկտների վրա՝ օգտատերերի կառավարում, վերջնական օգտատերեր և ադմիններ: Բոլոր հնարավորություններն ապահովված են ինչպես հանրային, այնպես էլ մասնավոր սերվերներում, եթե այլ բան նշված չէ:
3.4.1 Օգտագործողի կառավարում
Օգտագործողի կառավարման առանձնահատկությունները վերջնական օգտագործողներին թույլ են տալիս գրանցվել, մուտք գործել, փոխել գաղտնաբառերը, առբերել գաղտնաբառերը և այլն:
26 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Գրանցվել և մուտք գործել RainMaker-ի կողմից աջակցվող գրանցման և մուտքի մեթոդները ներառում են.
ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ Գրանցվեք՝ օգտագործելով Google/Amazon-ը RainMaker-ի հետ կիսում է օգտատիրոջ էլփոստի հասցեն: Գրանցվեք՝ օգտագործելով Apple-ը կիսում է կեղծ հասցե, որը Apple-ը հատկացնում է օգտատիրոջը հատուկ RainMaker ծառայության համար: RainMaker հաշիվը ավտոմատ կերպով կստեղծվի այն օգտատերերի համար, ովքեր առաջին անգամ մուտք են գործում Google, Apple կամ Amazon հաշիվ:
Փոխել գաղտնաբառը Վավերական է միայն էլփոստի ID/Հեռախոսահամարի վրա հիմնված մուտքերի համար: Բոլոր մյուս ակտիվ նիստերը դուրս կգրվեն գաղտնաբառի փոփոխությունից հետո: Համաձայն AWS Cognito-ի վարքագծի՝ դուրս եկած աշխատաշրջանները կարող են ակտիվ մնալ մինչև 1 ժամ:
Գաղտնաբառի առբերում Վավեր է միայն էլփոստի id/հեռախոսահամարի վրա հիմնված մուտքերի համար:
3.4.2 Վերջնական օգտագործողի առանձնահատկությունները
Գործառույթները, որոնք բաց են վերջնական օգտատերերի համար, ներառում են տեղական և հեռակառավարման և մոնիտորինգ, պլանավորում, սարքերի խմբավորում, սարքերի համօգտագործում, push ծանուցումներ և երրորդ կողմի ինտեգրում:
Հեռակառավարում և մոնիտորինգ · Հարցման կազմաձևում, պարամետրերի արժեքներ և կապի կարգավիճակ մեկ կամ բոլոր սարքերի համար: · Սահմանեք պարամետրեր մեկ կամ մի քանի սարքերի համար:
Տեղական հսկողություն և մոնիտորինգ Բջջային հեռախոսը և սարքը պետք է միացված լինեն նույն ցանցին՝ լոկալ հսկողության համար:
Ժամանակացույց · Օգտատերերը նախապես սահմանել են որոշակի գործողություններ որոշակի ժամանակ: · Ինտերնետ կապ չի պահանջվում սարքի համար ժամանակացույցը կատարելիս: · Մեկ անգամ կամ կրկնել (նշելով օրեր) մեկ կամ մի քանի սարքերի համար:
Սարքերի խմբավորում Աջակցում է բազմամակարդակ վերացական խմբավորում Խմբի մետատվյալները կարող են օգտագործվել Տնային սենյակի կառուցվածք ստեղծելու համար:
Գլուխ 3. ESP RainMaker 27-ի ներածություն

Սարքի համօգտագործում Մեկ կամ մի քանի սարքեր կարելի է համօգտագործել մեկ կամ մի քանի օգտատերերի հետ:
Push ծանուցումներ Վերջնական օգտվողները կստանան push ծանուցումներ այնպիսի իրադարձությունների համար, ինչպիսիք են · Նոր սարք(ներ) ավելացվել/հեռացվել են · Սարքը միացված է ամպին · Սարքը անջատված է ամպից · Սարքի համօգտագործման հարցումներ ստեղծվել/ընդունվել են/մերժվել · Սարքերի կողմից հաղորդված ազդանշանային հաղորդագրություններ
Երրորդ կողմի ինտեգրումները Alexa-ն և Google Voice Assistant-ն աջակցվում են RainMaker սարքերը, ներառյալ լույսերը, անջատիչները, վարդակները, օդափոխիչները և ջերմաստիճանի տվիչները կառավարելու համար:
3.4.3 Ադմինիստրատորի առանձնահատկությունները
Ադմինիստրատորի առանձնահատկությունները թույլ են տալիս ադմինիստրատորներին իրականացնել սարքի գրանցում, սարքերի խմբավորում և OTA թարմացումներ և կատարել view վիճակագրություն և ESP Insights տվյալները:
Սարքի գրանցում Ստեղծեք սարքի վկայագրեր և գրանցվեք Admin CLI-ում (միայն մասնավոր սերվեր):
Սարքերի խմբավորում Ստեղծեք վերացական կամ կառուցվածքային խմբեր՝ հիմնված սարքի տեղեկատվության վրա (միայն մասնավոր սերվեր):
Օդային (OTA) թարմացումներ Վերբեռնեք որոնվածը` հիմնված տարբերակի և մոդելի վրա, մեկ կամ մի քանի սարքերի կամ խմբային Մոնիտորինգի, չեղարկելու կամ արխիվացնելու OTA աշխատանքները:
View վիճակագրություն ViewՀնարավոր վիճակագրությունը ներառում է.
View ESP Insights-ի տվյալները ViewESP Insights-ի հնարավոր տվյալները ներառում են.
28 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

3.5 Ամփոփում
Այս գլխում մենք ներկայացրեցինք որոշ հիմնական տարբերություններ հանրային RainMaker-ի և մասնավոր տեղակայման միջև: Espressif-ի կողմից թողարկված մասնավոր ESP RainMaker լուծումը շատ հուսալի և ընդարձակելի է: ESP32 սերիայի բոլոր չիպերը միացվել և հարմարեցվել են AWS-ին, ինչը զգալիորեն նվազեցնում է արժեքը: Մշակողները կարող են կենտրոնանալ նախատիպի ստուգման վրա՝ առանց AWS ամպային արտադրանքի մասին սովորելու: Մենք նաև բացատրեցինք ESP RainMaker-ի ներդրումն ու առանձնահատկությունները, ինչպես նաև պլատֆորմի միջոցով մշակման որոշ հիմնական կետեր:
Սկանավորել՝ ներբեռնելու ESP RainMaker-ը Android-ի համար Սկանավորել՝ ներբեռնելու ESP RainMaker-ը iOS-ի համար
Գլուխ 3. ESP RainMaker 29-ի ներածություն

30 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Գլուխ Ստեղծում 4 Զարգացման միջավայր
Այս գլուխը կենտրոնանում է ESP-IDF-ի՝ ESP32-C3-ի ծրագրային ապահովման մշակման պաշտոնական շրջանակի վրա: Մենք կբացատրենք, թե ինչպես կարգավորել միջավայրը տարբեր օպերացիոն համակարգերի վրա, և կներկայացնենք ESP-IDF-ի նախագծի կառուցվածքը և կառուցման համակարգը, ինչպես նաև հարակից զարգացման գործիքների օգտագործումը: Այնուհետև կներկայացնենք նախկինի կազմման և գործարկման գործընթացըample նախագիծը, միաժամանակ առաջարկելով ելքային մատյանի մանրամասն բացատրություն յուրաքանչյուր stage.
4.1 ESP-IDF Ավարտվածview
ESP-IDF-ը (Espressif IoT Development Framework) IoT զարգացման միակողմանի շրջանակ է, որը տրամադրվում է Espressif Technology-ի կողմից: Այն օգտագործում է C/C++ որպես զարգացման հիմնական լեզու և աջակցում է խաչաձև կոմպիլյացիան հիմնական օպերացիոն համակարգերում, ինչպիսիք են Linux-ը, Mac-ը և Windows-ը: ՆախկինampԱյս գրքում ներառված ծրագրերը մշակվել են ESP-IDF-ի միջոցով, որն առաջարկում է հետևյալ հնարավորությունները. · SoC համակարգի մակարդակի դրայվերներ: ESP-IDF-ն ներառում է վարորդներ ESP32, ESP32-S2, ESP32-C3,
և այլ չիպսեր: Այս դրայվերները ներառում են ծայրամասային ցածր մակարդակի (LL) գրադարանը, ապարատային աբստրակցիոն շերտի (HAL) գրադարանը, RTOS-ի աջակցությունը և վերին շերտի դրայվերի ծրագրակազմը և այլն: · Հիմնական բաղադրիչներ: ESP-IDF-ն ներառում է IoT-ի զարգացման համար անհրաժեշտ հիմնարար բաղադրիչներ: Սա ներառում է բազմաթիվ ցանցային արձանագրությունների կույտեր, ինչպիսիք են HTTP-ը և MQTT-ը, էներգիայի կառավարման շրջանակը դինամիկ հաճախականության մոդուլյացիայով, և գործառույթներ, ինչպիսիք են Flash ծածկագրումը և անվտանգ բեռնումը և այլն: · Մշակման և արտադրության գործիքներ: ESP-IDF-ն ապահովում է մշակման և զանգվածային արտադրության ժամանակ սովորաբար օգտագործվող գործիքներ կառուցելու, ֆլեշ և վրիպազերծման համար (տես Նկար 4.1), ինչպիսիք են CMake-ի վրա հիմնված շինարարական համակարգը, GCC-ի վրա հիմնված խաչաձև կոմպիլյացիայի գործիքների շղթան և J.TAG Վրիպազերծման գործիք՝ հիմնված OpenOCD-ի և այլնի վրա: Հարկ է նշել, որ ESP-IDF կոդը հիմնականում հավատարիմ է Apache 2.0 բաց կոդով լիցենզիային: Օգտագործողները կարող են մշակել անհատական ​​կամ առևտրային ծրագրակազմ՝ առանց սահմանափակումների՝ պահպանելով բաց կոդով լիցենզիայի պայմանները: Բացի այդ, օգտատերերին տրվում են մշտական ​​արտոնագրեր անվճար՝ առանց սկզբնաղբյուրի կոդում կատարված փոփոխությունները բաց կոդով բացելու պարտավորության:
31

Նկար 4.1.

Կառուցում, թարթում և վրիպազերծում-

ging գործիքներ զարգացման և զանգվածային արտադրության համար

4.1.1 ESP-IDF տարբերակներ
ESP-IDF կոդը տեղակայված է GitHub-ում որպես բաց կոդով նախագիծ: Ներկայումս առկա են երեք հիմնական տարբերակներ՝ v3, v4 և v5: Յուրաքանչյուր հիմնական տարբերակ սովորաբար պարունակում է տարբեր դիվերսիաներ, ինչպիսիք են v4.2, v4.3 և այլն: Espressif Systems-ն ապահովում է 30-ամսյա աջակցություն վրիպակների շտկման և անվտանգության պատչերի համար յուրաքանչյուր թողարկված ենթատարբերակի համար: Հետևաբար, դիվերսիաների վերանայումները նույնպես պարբերաբար թողարկվում են, ինչպիսիք են v4.3.1, v4.2.2 և այլն: Աղյուսակ 4.1-ը ցույց է տալիս ESP-IDF տարբեր տարբերակների աջակցության կարգավիճակը Espressif չիպերի համար՝ նշելով, թե արդյոք դրանք գտնվում են նախնական փուլում:view stage (առաջարկելով աջակցություն նախview տարբերակները, որոնք կարող են զուրկ լինել որոշակի հնարավորություններից կամ փաստաթղթերից) կամ պաշտոնապես աջակցվում են:

Աղյուսակ 4.1. ESP-IDF տարբեր տարբերակների աջակցության կարգավիճակը Espressif չիպերի համար

Սերիա ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

v4.1-ն ապահովված է

v4.2-ն աջակցվում է

v4.3-ն աջակցում է աջակցվում է

v4.4-ը աջակցում է աջակցվում է աջակցվում
նախview

v5.0-ն աջակցում է աջակցում է աջակցում աջակցում է աջակցում նախընտրականview

32 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Հիմնական տարբերակների կրկնությունը հաճախ ներառում է շրջանակային կառուցվածքի ճշգրտումներ և կոմպիլյացիոն համակարգի թարմացումներ: Նախample, v3.*-ից v4.* հիմնական փոփոխությունը build համակարգի աստիճանական տեղափոխումն էր Make-ից CMake: Մյուս կողմից, փոքր տարբերակների կրկնությունը սովորաբար ենթադրում է նոր հնարավորությունների ավելացում կամ նոր չիպերի աջակցություն:
Կարևոր է տարբերակել և հասկանալ կայուն տարբերակների և GitHub մասնաճյուղերի միջև կապը: V*.* կամ v*.*.* պիտակավորված տարբերակները ներկայացնում են կայուն տարբերակներ, որոնք անցել են ամբողջական ներքին փորձարկում Espressif-ի կողմից: Ուղղվելուց հետո նույն տարբերակի կոդը, գործիքների շղթան և թողարկման փաստաթղթերը մնում են անփոփոխ: Այնուամենայնիվ, GitHub-ի մասնաճյուղերը (օրինակ՝ թողարկումը/v4.3 մասնաճյուղը) ենթարկվում են հաճախակի ծածկագրերի, հաճախ ամեն օր: Հետևաբար, նույն ճյուղի տակ գտնվող երկու կոդի հատվածները կարող են տարբերվել, ինչը ծրագրավորողներին պետք է համապատասխանաբար անհապաղ թարմացնել իրենց կոդը:
4.1.2 ESP-IDF Git Աշխատանքային հոսք
Էսպրեսիֆը հետևում է ESP-IDF-ի հատուկ Git աշխատանքային հոսքին, որը ուրվագծվում է հետևյալ կերպ.
· Նոր փոփոխություններ են կատարվում գլխավոր մասնաճյուղի վրա, որը ծառայում է որպես զարգացման հիմնական ճյուղ։ Հիմնական մասնաճյուղի ESP-IDF տարբերակը միշտ կրում է -dev tag նշելու, որ այն ներկայումս մշակման փուլում է, օրինակ՝ v4.3-dev: Փոփոխությունները գլխավոր մասնաճյուղում նախ կվերագրվենviewխմբագրվել և փորձարկվել է Espressif-ի ներքին պահոցում, այնուհետև ավտոմատացված փորձարկման ավարտից հետո այն տեղափոխել GitHub:
· Երբ նոր տարբերակն ավարտում է հիմնական ճյուղի առանձնահատկությունների մշակումը և բավարարում է բետա թեստավորման չափանիշներին, այն անցնում է նոր մասնաճյուղի, օրինակ՝ թողարկում/ v4.3: Բացի այդ, այս նոր մասնաճյուղն է tagged որպես նախնական թողարկման տարբերակ, օրինակ՝ v4.3-beta1: Մշակողները կարող են դիմել GitHub հարթակ՝ մուտք գործելու մասնաճյուղերի ամբողջական ցանկը և tags ESP-IDF-ի համար: Կարևոր է նշել, որ բետա տարբերակը (նախնական թողարկումը) դեռ կարող է ունենալ զգալի թվով հայտնի խնդիրներ: Քանի որ բետա տարբերակը ենթարկվում է շարունակական փորձարկման, վրիպակների շտկումները միաժամանակ ավելացվում են և՛ այս տարբերակին, և՛ հիմնական մասնաճյուղին: Միևնույն ժամանակ, գլխավոր մասնաճյուղը կարող է արդեն սկսել զարգացնել նոր հնարավորություններ հաջորդ տարբերակի համար: Երբ փորձարկումը գրեթե ավարտված է, ճյուղին ավելացվում է թողարկման թեկնածու (rc) պիտակ՝ նշելով, որ այն պաշտոնական թողարկման հավանական թեկնածու է, օրինակ՝ v4.3-rc1: Այս սtagե, մասնաճյուղը մնում է նախնական թողարկման տարբերակ:
· Եթե հիմնական սխալներ չեն հայտնաբերվել կամ զեկուցվել, նախնական թողարկման տարբերակը ի վերջո ստանում է հիմնական տարբերակի պիտակ (օրինակ՝ v5.0) կամ փոքր տարբերակի պիտակ (օրինակ՝ v4.3) և դառնում պաշտոնական թողարկման տարբերակ, որը փաստաթղթավորված է։ թողարկման նշումների էջում: Հետագայում, այս տարբերակում հայտնաբերված բոլոր սխալները ամրագրվում են թողարկման ճյուղում: Ձեռքով փորձարկումն ավարտելուց հետո մասնաճյուղին հատկացվում է սխալների շտկման տարբերակի պիտակ (օրինակ՝ v4.3.2), որը նույնպես արտացոլվում է թողարկման նշումների էջում:
Գլուխ 4. Զարգացման միջավայրի ստեղծում 33

4.1.3 Հարմար տարբերակի ընտրություն
Քանի որ ESP-IDF-ը պաշտոնապես սկսեց աջակցել ESP32-C3-ին v4.3 տարբերակից, և v4.4-ը դեռ պաշտոնապես չի թողարկվել այս գիրքը գրելու պահին, այս գրքում օգտագործված տարբերակը v4.3.2 է, որը վերանայված տարբերակ է: v4.3-ից Այնուամենայնիվ, կարևոր է նշել, որ մինչ այս գիրքը կարդաք, v4.4 կամ ավելի նոր տարբերակները կարող են արդեն հասանելի լինել: Տարբերակ ընտրելիս խորհուրդ ենք տալիս հետևյալը.
· Մուտքի մակարդակի մշակողների համար խորհուրդ է տրվում ընտրել կայուն v4.3 տարբերակը կամ դրա վերանայված տարբերակը, որը համապատասխանում է նախկինին:ampայս գրքում օգտագործված տարբերակը:
· Զանգվածային արտադրության նպատակներով, խորհուրդ է տրվում օգտագործել վերջին կայուն տարբերակը՝ օգտվելու ամենաարդի տեխնիկական աջակցությունից:
· Եթե դուք մտադիր եք փորձարկել նոր չիպսեր կամ ուսումնասիրել նոր արտադրանքի առանձնահատկությունները, խնդրում ենք օգտագործել հիմնական մասնաճյուղը: Վերջին տարբերակը պարունակում է բոլոր վերջին հնարավորությունները, բայց հիշեք, որ կարող են առկա լինել հայտնի կամ անհայտ սխալներ:
· Եթե օգտագործվող կայուն տարբերակը չի ներառում ցանկալի նոր հնարավորությունները, և դուք ցանկանում եք նվազագույնի հասցնել հիմնական մասնաճյուղի հետ կապված ռիսկերը, օգտագործեք համապատասխան թողարկման ճյուղը, ինչպիսին է թողարկումը/v4.4 մասնաճյուղը: Espressif-ի GitHub պահոցը սկզբում կստեղծի թողարկում/v4.4 մասնաճյուղը և այնուհետև կթողարկի կայուն v4.4 տարբերակը՝ հիմնված այս ճյուղի կոնկրետ պատմական պատկերի վրա՝ բոլոր գործառույթների մշակումն ու փորձարկումն ավարտելուց հետո:
4.1.4 Ավարտview ESP-IDF SDK գրացուցակի
ESP-IDF SDK-ն բաղկացած է երկու հիմնական գրացուցակներից՝ esp-idf և .espressif: Առաջինը պարունակում է ESP-IDF պահոցի աղբյուրի կոդը files և կոմպիլյացիոն սցենարներ, մինչդեռ վերջիններս հիմնականում պահում են կոմպիլյացիոն գործիքների շղթաներ և այլ ծրագրեր։ Այս երկու գրացուցակների հետ ծանոթությունը կօգնի մշակողներին ավելի լավ օգտագործել առկա ռեսուրսները և արագացնել զարգացման գործընթացը: ESP-IDF-ի գրացուցակի կառուցվածքը նկարագրված է ստորև.
(1) ESP-IDF պահոցի ծածկագրի գրացուցակը (/esp/esp-idf), ինչպես ցույց է տրված Նկար 4.2-ում:
ա. Բաղադրիչների գրացուցակի բաղադրիչներ
Այս հիմնական գրացուցակը միավորում է ESP-IDF-ի բազմաթիվ հիմնական ծրագրային բաղադրիչներ: Ծրագրի ոչ մի ծածկագիր չի կարող կազմվել առանց այս գրացուցակի բաղադրիչների վրա հենվելու: Այն ներառում է վարորդների աջակցություն տարբեր Espressif չիպերի համար: LL գրադարանից և HAL գրադարանի միջերեսներից ծայրամասային սարքերի համար մինչև վերին մակարդակի Driver և Virtual File Համակարգի (VFS) շերտի աջակցություն, մշակողները կարող են ընտրել համապատասխան բաղադրիչներ տարբեր մակարդակներում իրենց զարգացման կարիքների համար: ESP-IDF-ն նաև աջակցում է բազմաթիվ ստանդարտ ցանցային արձանագրությունների կույտեր, ինչպիսիք են TCP/IP, HTTP, MQTT, WebSocket և այլն: Ծրագրավորողները կարող են օգտագործել ծանոթ ինտերֆեյսեր, ինչպիսին է Socket-ը, ցանցային հավելվածներ ստեղծելու համար: Բաղադրիչները ապահովում են հասկանալու
34 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Նկար 4.2. ESP-IDF պահոցի ծածկագրի գրացուցակը
sive ֆունկցիոնալությունը և կարող է հեշտությամբ ինտեգրվել հավելվածներին՝ թույլ տալով ծրագրավորողներին կենտրոնանալ բացառապես բիզնես տրամաբանության վրա: Որոշ ընդհանուր բաղադրիչներ ներառում են
չիպերի շարքեր, ինչպիսիք են GPIO, I2C, SPI, UART, LEDC (PWM) և այլն: Այս բաղադրիչի ծայրամասային վարորդական ծրագրերն առաջարկում են չիպերից անկախ վերացական միջերեսներ: Յուրաքանչյուր ծայրամասային սարք ունի ընդհանուր վերնագիր file (օրինակ՝ gpio.h), վերացնելով չիպային հատուկ աջակցության տարբեր հարցերով զբաղվելու անհրաժեշտությունը: · esp_wifi. Wi-Fi-ը, որպես հատուկ ծայրամասային սարք, դիտարկվում է որպես առանձին բաղադրիչ: Այն ներառում է բազմաթիվ API-ներ, ինչպիսիք են Wi-Fi-ի վարորդի տարբեր ռեժիմների սկզբնավորումը, պարամետրերի կազմաձևումը և իրադարձությունների մշակումը: Այս բաղադրիչի որոշ գործառույթներ տրամադրվում են ստատիկ հղումների գրադարանների տեսքով: ESP-IDF-ը նաև տրամադրում է վարորդի համապարփակ փաստաթղթեր՝ օգտագործման հարմարավետության համար:
Գլուխ 4. Զարգացման միջավայրի ստեղծում 35

· freertos. Այս բաղադրիչը պարունակում է ամբողջական FreeRTOS կոդը: Բացի այս օպերացիոն համակարգին համապարփակ աջակցություն տրամադրելուց, Espressif-ն իր աջակցությունն ընդլայնել է նաև երկմիջուկ չիպերի վրա: Երկմիջուկային չիպերի համար, ինչպիսիք են ESP32-ը և ESP32-S3-ը, օգտվողները կարող են առաջադրանքներ ստեղծել հատուկ միջուկների վրա:
բ. Փաստաթղթերի գրացուցակի փաստաթղթեր
Այս գրացուցակը պարունակում է ESP-IDF-ի հետ կապված զարգացման փաստաթղթեր, ներառյալ «Սկսել» ուղեցույցը, API-ի տեղեկատու ձեռնարկը, զարգացման ուղեցույցը և այլն:
Նշում Ավտոմատացված գործիքներով կազմվելուց հետո այս գրացուցակի բովանդակությունը տեղադրվում է https://docs.espressif.com/projects/esp-idf կայքում: Համոզվեք, որ փաստաթղթի թիրախը փոխեք ESP32-C3-ի և ընտրեք նշված ESP-IDF տարբերակը:
գ. Սցենարի գործիքների գործիքներ
Այս գրացուցակը պարունակում է սովորաբար օգտագործվող կոմպիլյացիաների ճակատային գործիքներ, ինչպիսիք են idf.py-ը և մոնիտորի տերմինալային գործիքը idf_monitor.py և այլն: Ենթատեղեկատու cmake-ը պարունակում է նաև հիմնական սկրիպտ: fileկոմպիլյացիոն համակարգի ներ՝ ծառայելով որպես ESP-IDF կազմման կանոնների ներդրման հիմք: Շրջակա միջավայրի փոփոխականներ ավելացնելիս գործիքների գրացուցակի բովանդակությունը ավելացվում է համակարգի միջավայրի փոփոխականին՝ թույլ տալով, որ idf.py-ը կատարվի անմիջապես նախագծի ուղու տակ:
դ. Օրինակ՝ample ծրագրի գրացուցակը նախկինamples
Այս գրացուցակը ներառում է ESP-IDF նախկինի հսկայական հավաքածուampծրագրեր, որոնք ցույց են տալիս բաղադրիչի API-ների օգտագործումը: Նախկինamples-երը կազմակերպվում են տարբեր ենթացանցերի՝ իրենց կատեգորիաների հիման վրա.
· Սկսել. Այս ենթագրատուն ներառում է մուտքի մակարդակի օրինակampայնպիսի օրինակներ, ինչպիսիք են «բարև աշխարհ» և «թարթել»՝ օգնելու օգտատերերին հասկանալ հիմունքները:
· bluetooth. Դուք կարող եք գտնել Bluetooth-ի հետ կապված նախկինampայստեղ, ներառյալ Bluetooth LE Mesh, Bluetooth LE HID, BluFi և այլն:
· wifi. Այս ենթատեղեկատուը կենտրոնանում է Wi-Fi-ի վրա նախկինումamples, ներառյալ հիմնական ծրագրերը, ինչպիսիք են Wi-Fi SoftAP-ը, Wi-Fi Station-ը, espnow-ը, ինչպես նաև սեփական կապի արձանագրությունը նախկինում:amples Espressif-ից. Այն ներառում է նաև մի քանի կիրառական շերտ, օրինակampWi-Fi-ի վրա հիմնված սարքեր, ինչպիսիք են Iperf-ը, Sniffer-ը և Smart Config-ը:
· ծայրամասային սարքեր. Այն հիմնականում պարունակում է ծայրամասային վարորդ նախկինamples Espressif չիպսերի համար, յուրաքանչյուր նախկինի հետample հատկանշվում է մի քանի ենթաօրենսդրական նախկինamples. Օրինակ, gpio ենթատեղեկատուը ներառում է երկու նախկինamples: GPIO և GPIO մատրիցային ստեղնաշար: Կարևոր է նշել, որ ոչ բոլոր նախկինampԱյս գրացուցակի տառերը կիրառելի են ESP32-C3-ի համար:
36 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Նախample, նախկինampUSB/host-ում տեղադրված սարքերը կիրառելի են միայն USB Host սարքաշար ունեցող ծայրամասային սարքերի համար (օրինակ՝ ESP32-S3), իսկ ESP32-C3-ը չունի այս ծայրամասային սարքը: Կազմման համակարգը սովորաբար տալիս է հուշումներ թիրախը սահմանելիս: The README file յուրաքանչյուր նախկինample թվարկում է աջակցվող չիպերը: · Արձանագրություններ. Այս ենթագրատուն պարունակում է օրինակampտարբեր կապի արձանագրությունների համար, ներառյալ MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, որոնք ընդգրկում են կապի արձանագրությունների լայն շրջանակ, օրինակ.ampIoT-ի զարգացման համար պահանջվող պակասը: · Ապահովումampտարբեր մեթոդների համար, ինչպիսիք են Wi-Fi-ի ապահովումը և Bluetooth LE-ի ապահովումը: · Համակարգ. Այս ենթատեղեկատուը ներառում է համակարգի վրիպազերծում, օրինակamples (օրինակ՝ stack tracing, runtime tracking, task monitoring), էներգիայի կառավարում, օրինակamples (օրինակ՝ տարբեր քնի ռեժիմներ, համապրոցեսորներ) և օրինակampԱյն կապված է ընդհանուր համակարգի բաղադրիչների հետ, ինչպիսիք են վահանակի տերմինալը, իրադարձությունների հանգույցը և համակարգի ժամանակաչափը: · Պահեստավորում. այս ենթատեղեկատուի շրջանակներում դուք կհայտնաբերեք նախկինampբոլորից քիչ file համակարգեր և պահեստավորման մեխանիզմներ, որոնք աջակցվում են ESP-IDF-ի կողմից (օրինակ՝ Flash-ի, SD քարտի և այլ պահեստային կրիչների ընթերցումն ու գրելը), ինչպես նաև նախկինampոչ անկայուն պահեստավորման (NVS), FatFS, SPIFFS և այլն file համակարգի գործառնություններ. · Անվտանգություն. Այս ենթատեղեկատուը պարունակում է օրինակamples կապված ֆլեշ կոդավորման. (2) ESP-IDF կոմպիլյացիոն գործիքների շղթայական գրացուցակ (/.espressif), ինչպես ցույց է տրված Նկար 4.3-ում:
Նկար 4.3. ESP-IDF կոմպիլյացիոն գործիքների շղթայական գրացուցակ
Գլուխ 4. Զարգացման միջավայրի ստեղծում 37

ա. Ծրագրային ապահովման բաշխման գրացուցակ թաղ
ESP-IDF գործիքների շղթան և այլ ծրագրեր բաշխվում են սեղմված փաթեթների տեսքով: Տեղադրման գործընթացում տեղադրման գործիքը նախ ներբեռնում է սեղմված փաթեթը հեռավոր գրացուցակ, այնուհետև այն հանում է նշված գրացուցակում: Տեղադրումն ավարտվելուց հետո այս գրացուցակի բովանդակությունը կարող է ապահով կերպով հեռացվել:
բ. Python վիրտուալ միջավայրի գրացուցակ python env
ESP-IDF-ի տարբեր տարբերակները հիմնված են Python փաթեթների հատուկ տարբերակների վրա: Այս փաթեթները անմիջապես նույն հոսթի վրա տեղադրելը կարող է հանգեցնել փաթեթի տարբերակների միջև հակասությունների: Այս խնդիրը լուծելու համար ESP-IDF-ն օգտագործում է Python վիրտուալ միջավայրեր՝ փաթեթի տարբեր տարբերակները մեկուսացնելու համար: Այս մեխանիզմի միջոցով մշակողները կարող են տեղադրել ESP-IDF-ի մի քանի տարբերակներ նույն հոսթի վրա և հեշտությամբ անցնել դրանց միջև՝ ներմուծելով տարբեր միջավայրի փոփոխականներ:
գ. ESP-IDF կոմպիլյացիոն գործիքների շղթայական գրացուցակի գործիքներ
Այս գրացուցակը հիմնականում պարունակում է խաչաձև կոմպիլյացիայի գործիքներ, որոնք անհրաժեշտ են ESP-IDF նախագծերը կազմելու համար, ինչպիսիք են CMake գործիքները, Ninja build գործիքները և gcc գործիքների շղթան, որը ստեղծում է վերջնական գործարկվող ծրագիրը: Բացի այդ, այս գրացուցակը պարունակում է C/C++ լեզվի ստանդարտ գրադարանը՝ համապատասխան վերնագրի հետ միասին fileս. Եթե ​​ծրագիրը հղում է անում համակարգի վերնագրին file ինչպես #ներառել , կոմպիլացիոն գործիքների շղթան կգտնի stdio.h file այս գրացուցակում:
4.2 ESP-IDF զարգացման միջավայրի ստեղծում
ESP-IDF մշակման միջավայրն աջակցում է հիմնական օպերացիոն համակարգերին, ինչպիսիք են Windows-ը, Linux-ը և macOS-ը: Այս բաժինը կներկայացնի, թե ինչպես ստեղծել զարգացման միջավայր յուրաքանչյուր համակարգի վրա: Առաջարկվում է ESP32-C3 մշակել Linux համակարգում, որը մանրամասն կներկայացվի այստեղ։ Շատ հրահանգներ կիրառելի են տարբեր հարթակներում՝ զարգացման գործիքների նմանության պատճառով: Ուստի խորհուրդ է տրվում ուշադիր կարդալ այս բաժնի բովանդակությունը:
ԾԱՆՈԹՈՒԹՅՈՒՆ Դուք կարող եք դիմել առցանց փաստաթղթերին, որոնք հասանելի են https://bookc3.espressif.com/esp32c3 հասցեով, որոնք տրամադրում են այս բաժնում նշված հրամանները:
4.2.1 ESP-IDF զարգացման միջավայրի կարգավորում Linux-ում
GNU-ի մշակման և վրիպազերծման գործիքները, որոնք անհրաժեշտ են ESP-IDF մշակման միջավայրի համար, պատկանում են Linux համակարգին: Բացի այդ, Linux-ի հրամանի տող տերմինալը հզոր է և օգտագործողի համար հարմար, ինչը այն դարձնում է իդեալական ընտրություն ESP32-C3 մշակման համար: Դուք կարող եք
38 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

ընտրեք ձեր նախընտրած Linux բաշխումը, սակայն խորհուրդ ենք տալիս օգտագործել Ubuntu կամ այլ Debianbased համակարգեր: Այս բաժինը ուղեցույց է տալիս Ubuntu 20.04-ում ESP-IDF մշակման միջավայրը կարգավորելու վերաբերյալ:
1. Տեղադրեք անհրաժեշտ փաթեթները
Բացեք նոր տերմինալ և կատարեք հետևյալ հրամանը՝ բոլոր անհրաժեշտ փաթեթները տեղադրելու համար։ Հրամանը ավտոմատ կերպով բաց կթողնի արդեն տեղադրված փաթեթները:
$ sudo apt-get տեղադրել git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
ԽՈՐՀՈՒՐԴՆԵՐ Վերը նշված հրամանի համար անհրաժեշտ է օգտագործել ադմինիստրատորի հաշիվը և գաղտնաբառը: Լռելյայնորեն, գաղտնաբառը մուտքագրելիս ոչ մի տեղեկություն չի ցուցադրվի: Գործընթացը շարունակելու համար պարզապես սեղմեք «Enter» ստեղնը:
Git-ը ESP-IDF-ում կոդերի կառավարման հիմնական գործիքն է: Զարգացման միջավայրը հաջողությամբ կարգավորելուց հետո կարող եք օգտագործել git log հրամանը view ESP-IDF-ի ստեղծումից ի վեր կատարված կոդի բոլոր փոփոխությունները: Բացի այդ, Git-ն օգտագործվում է նաև ESP-IDF-ում՝ տարբերակի տեղեկատվությունը հաստատելու համար, որն անհրաժեշտ է հատուկ տարբերակներին համապատասխան գործիքների ճիշտ շղթա տեղադրելու համար։ Git-ի հետ մեկտեղ այլ կարևոր համակարգի գործիքները ներառում են Python-ը: ESP-IDF-ն ներառում է բազմաթիվ ավտոմատացման սցենարներ՝ գրված Python-ով: Գործիքներ, ինչպիսիք են CMake-ը, Ninja-build-ը և Ccache-ը, լայնորեն օգտագործվում են C/C++ նախագծերում և ծառայում են որպես ESP-IDF-ի լռելյայն կոդերի հավաքման և կառուցման գործիքներ: libusb-1.0-0 և dfu-util հիմնական դրայվերներն են, որոնք օգտագործվում են USB սերիական կապի և որոնվածը այրելու համար: Ծրագրային փաթեթները տեղադրվելուց հետո կարող եք օգտագործել apt show-ը հրաման՝ յուրաքանչյուր փաթեթի մանրամասն նկարագրությունը ստանալու համար: Նախample, օգտագործեք apt show git՝ Git գործիքի նկարագրության տեղեկատվությունը տպելու համար:
Հարց: Ի՞նչ անել, եթե Python-ի տարբերակը չի ապահովվում: A: ESP-IDF v4.3-ը պահանջում է Python-ի տարբերակ, որը ցածր չէ v3.6-ից: Ubuntu-ի ավելի հին տարբերակների համար խնդրում ենք ձեռքով ներբեռնել և տեղադրել Python-ի ավելի բարձր տարբերակը և սահմանել Python3-ը որպես լռելյայն Python միջավայր: Դուք կարող եք գտնել մանրամասն հրահանգներ՝ փնտրելով հիմնաբառի թարմացում-այլընտրանքները python:
2. Ներբեռնեք ESP-IDF պահեստի կոդը
Բացեք տերմինալ և ստեղծեք esp անունով թղթապանակ ձեր տնային գրացուցակում՝ օգտագործելով mkdir հրամանը: Դուք կարող եք ընտրել այլ անուն թղթապանակի համար, եթե ցանկանում եք: Պանակ մուտքագրելու համար օգտագործեք cd հրամանը:
Գլուխ 4. Զարգացման միջավայրի ստեղծում 39

$ mkdir -p /esp $ cd /esp
Օգտագործեք git clone հրամանը՝ ESP-IDF պահոցի կոդը ներբեռնելու համար, ինչպես ցույց է տրված ստորև.
$ git clone -b v4.3.2 – ռեկուրսիվ https://github.com/espressif/esp-idf.git
Վերևի հրամանում -b v4.3.2 պարամետրը նշում է ներբեռնման տարբերակը (այս դեպքում՝ 4.3.2 տարբերակը): -Ռեկուրսիվ պարամետրը ապահովում է, որ ESP-IDF-ի բոլոր ենթապահոցները ներբեռնվեն ռեկուրսիվ: Ենթապահոցների մասին տեղեկությունները կարելի է գտնել .gitmodules-ում file.
3. Տեղադրեք ESP-IDF մշակման գործիքների շղթան
Espressif-ը տրամադրում է install.sh ավտոմատ սկրիպտ՝ գործիքների շղթան ներբեռնելու և տեղադրելու համար: Այս սցենարը ստուգում է ընթացիկ ESP-IDF տարբերակը և օպերացիոն համակարգի միջավայրը, այնուհետև ներբեռնում և տեղադրում է Python գործիքների փաթեթների և կոմպիլյացիոն գործիքների շղթաների համապատասխան տարբերակը: Գործիքների շղթայի լռելյայն տեղադրման ուղին /.espressif է: Ձեզ անհրաժեշտ է միայն անցնել esp-idf գրացուցակ և գործարկել install.sh-ը:
$ cd /esp/esp-idf $ ./install.sh
Եթե ​​դուք հաջողությամբ տեղադրեք գործիքների շղթան, տերմինալը կցուցադրի.
Ամեն ինչ արված է:
Այս պահին դուք հաջողությամբ ստեղծեցիք ESP-IDF զարգացման միջավայրը:
4.2.2 Windows-ում ESP-IDF զարգացման միջավայրի կարգավորում
1. Ներբեռնեք ESP-IDF գործիքների տեղադրիչը
ԽՈՐՀՈՒՐԴՆԵՐ Խորհուրդ է տրվում կարգավորել ESP-IDF մշակման միջավայրը Windows 10 կամ ավելի նոր օպերացիոն համակարգերում: Դուք կարող եք ներբեռնել տեղադրիչը https://dl.espressif.com/dl/esp-idf/ կայքից: Տեղադրիչը նաև բաց կոդով ծրագրաշար է, և դրա սկզբնական կոդը կարող է լինել viewխմբագրել https://github.com/espressif/idf-installer-ում:
· Առցանց ESP-IDF գործիքների տեղադրող
Այս տեղադրիչը համեմատաբար փոքր է, չափը մոտ 4 ՄԲ է, և տեղադրման գործընթացում կներբեռնվեն այլ փաթեթներ և կոդ: ԱդվանtagԱռցանց տեղադրիչի e-ն այն է, որ ոչ միայն ծրագրային փաթեթները և կոդը կարող են ներբեռնվել ըստ պահանջի տեղադրման գործընթացում, այլ նաև թույլ է տալիս տեղադրել ESP-IDF-ի բոլոր հասանելի թողարկումները և GitHub կոդի վերջին մասնաճյուղը (օրինակ՝ հիմնական մասնաճյուղը): . Թերությունըtage-ն այն է, որ տեղադրման գործընթացում պահանջվում է ցանցային միացում, ինչը կարող է առաջացնել տեղադրման ձախողում ցանցի խնդիրների պատճառով:
40 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

· Անցանց ESP-IDF գործիքների տեղադրող Այս տեղադրիչն ավելի մեծ է, մոտ 1 ԳԲ չափով և պարունակում է բոլոր ծրագրային փաթեթներն ու կոդերը, որոնք անհրաժեշտ են միջավայրի ստեղծման համար: Հիմնական առավելությունըtagՕֆլայն տեղադրիչի ե-ն այն է, որ այն կարող է օգտագործվել համակարգիչներում՝ առանց ինտերնետ հասանելիության, և, ընդհանուր առմամբ, ունի տեղադրման հաջողության ավելի բարձր մակարդակ: Հարկ է նշել, որ անցանց տեղադրողը կարող է տեղադրել միայն ESP-IDF-ի կայուն թողարկումները, որոնք նույնականացված են v*.* կամ v*.*.*-ով:
2. Գործարկեք ESP-IDF գործիքների տեղադրիչը Տեղադրողի համապատասխան տարբերակը ներբեռնելուց հետո (նախկինում վերցրեք ESP-IDF Tools Offline 4.3.2-ըample այստեղ), կրկնակի սեղմեք exe-ի վրա file ESP-IDF տեղադրման միջերեսը գործարկելու համար: Հետևյալը ցույց է տալիս, թե ինչպես տեղադրել ESP-IDF կայուն տարբերակը v4.3.2՝ օգտագործելով անցանց տեղադրիչը:
(1) Նկար 4.4-ում ցուցադրված «Ընտրեք տեղադրման լեզուն» ինտերֆեյսում բացվող ցանկից ընտրեք օգտագործվող լեզուն:
Նկար 4.4. «Ընտրեք տեղադրման լեզուն» ինտերֆեյսը (2) Լեզուն ընտրելուց հետո սեղմեք «OK»՝ «Լիցենզային պայմանագիր» ինտերֆեյսը բացելու համար։
(տես Նկար 4.5): Տեղադրման լիցենզիայի պայմանագիրը ուշադիր կարդալուց հետո ընտրեք «Ես ընդունում եմ համաձայնագիրը» և սեղմեք «Հաջորդ»:
Նկար 4.5. «Լիցենզային պայմանագիր» ինտերֆեյս Գլուխ 4. Զարգացման միջավայրի ստեղծում 41

(3) Review համակարգի կոնֆիգուրացիան «Նախ տեղադրման համակարգի ստուգում» ինտերֆեյսում (տես Նկար 4.6): Ստուգեք Windows-ի տարբերակը և տեղադրված հակավիրուսային ծրագրի տվյալները: Կտտացրեք «Հաջորդ», եթե բոլոր կազմաձևման տարրերը նորմալ են: Հակառակ դեպքում, դուք կարող եք սեղմել «Ամբողջ մատյան»՝ հիմնական կետերի վրա հիմնված լուծումների համար:
Նկար 4.6. «Համակարգի ստուգում նախքան տեղադրումը» միջերեսի ԽՈՐՀՈՒՐԴՆԵՐ
Օգնության համար կարող եք տեղեկամատյաններ ուղարկել https://github.com/espressif/idf-installer/issues հասցեին: (4) Ընտրեք ESP-IDF տեղադրման գրացուցակը: Այստեղ ընտրեք D:/.espressif, ինչպես ցույց է տրված
Նկար 4.7 և սեղմեք «Հաջորդ»: Խնդրում ենք նկատի ունենալ, որ .espressif այստեղ թաքնված գրացուցակ է: Տեղադրումն ավարտելուց հետո կարող եք view այս գրացուցակի հատուկ բովանդակությունը՝ բացելով file կառավարիչ և թաքնված տարրերի ցուցադրում:
Նկար 4.7. Ընտրեք ESP-IDF տեղադրման գրացուցակը 42 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

(5) Ստուգեք այն բաղադրիչները, որոնք պետք է տեղադրվեն, ինչպես ցույց է տրված Նկար 4.8-ում: Առաջարկվում է օգտագործել լռելյայն տարբերակը, այսինքն՝ ավարտել տեղադրումը, այնուհետև սեղմել «Հաջորդ»:
Նկար 4.8. Ընտրեք տեղադրման ենթակա բաղադրիչները (6) Հաստատեք տեղադրվող բաղադրիչները և կտտացրեք «Տեղադրել»՝ ավտոմատացված մուտքը սկսելու համար
տեղադրման գործընթացը, ինչպես ցույց է տրված Նկար 4.9-ում: Տեղադրման գործընթացը կարող է տևել տասնյակ րոպեներ, և տեղադրման գործընթացի առաջընթացի սանդղակը ներկայացված է Նկար 4.10-ում: Խնդրում ենք համբերատար սպասել:
Նկար 4.9. Նախապատրաստում տեղադրմանը (7) Տեղադրման ավարտից հետո խորհուրդ է տրվում ստուգել «Գրանցեք ESP-IDF-ը
Գործարկվող գործիքներ՝ որպես Windows Defender-ի բացառում…» հակավիրուսային ծրագրերի ջնջումը կանխելու համար fileս. Բացառման տարրերի ավելացումը կարող է նաև բաց թողնել հակավիրուսային հաճախակի սկանավորումները
Գլուխ 4. Զարգացման միջավայրի ստեղծում 43

Նկար 4.10. Տեղադրման առաջընթացի սանդղակի ծրագրակազմը, որը մեծապես բարելավում է Windows համակարգի կոդի կազմման արդյունավետությունը: Սեղմեք «Ավարտել»՝ մշակման միջավայրի տեղադրումն ավարտելու համար, ինչպես ցույց է տրված Նկար 4.11-ում: Կարող եք ընտրել «Գործարկել ESP-IDF PowerShell միջավայրը» կամ «Գործարկել ESP-IDF հրամանի տողը»: Գործարկեք կազմման պատուհանը անմիջապես տեղադրումից հետո, որպեսզի համոզվեք, որ մշակման միջավայրը նորմալ է գործում:
Նկար 4.11. Տեղադրումն ավարտված է (8) Բացեք տեղադրված զարգացման միջավայրը ծրագրերի ցանկում (կամ ESP-IDF 4.3
CMD կամ ESP-IDF 4.3 PowerShell տերմինալը, ինչպես ցույց է տրված Նկար 4.12-ում), և ESP-IDF միջավայրի փոփոխականը ավտոմատ կերպով կավելացվեն տերմինալում աշխատելիս: Դրանից հետո դուք կարող եք օգտագործել idf.py հրամանը գործողությունների համար: Բացված ESP-IDF 4.3 CMD-ը ներկայացված է Նկար 4.13-ում: 44 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Նկար 4.12. Տեղադրված է զարգացման միջավայր
Նկար 4.13. ESP-IDF 4.3 CMD
4.2.3 ESP-IDF զարգացման միջավայրի կարգավորում Mac-ում
Mac համակարգում ESP-IDF մշակման միջավայրի տեղադրման գործընթացը նույնն է, ինչ Linux համակարգում: Պահեստի կոդը ներբեռնելու և գործիքների շղթան տեղադրելու հրամանները միանգամայն նույնն են: Միայն կախվածության փաթեթների տեղադրման հրամանները մի փոքր տարբեր են: 1. Տեղադրեք կախվածության փաթեթներ Բացեք տերմինալ և տեղադրեք pip՝ Python փաթեթների կառավարման գործիքը՝ գործարկելով հետևյալ հրամանը.
% sudo easy install pip
Տեղադրեք Homebrew-ը՝ macOS-ի փաթեթների կառավարման գործիքը՝ գործարկելով հետևյալ հրամանը.
% /bin/bash -c «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
Տեղադրեք անհրաժեշտ կախվածության փաթեթները՝ գործարկելով հետևյալ հրամանը.
% brew python3 տեղադրել cmake ninja ccache dfu-util
2. Ներբեռնեք ESP-IDF պահեստի կոդը Հետևեք 4.2.1 բաժնում տրված հրահանգներին՝ ESP-IDF պահոցի կոդը ներբեռնելու համար: Քայլերը նույնն են, ինչ Linux համակարգում ներբեռնելու համար:
Գլուխ 4. Զարգացման միջավայրի ստեղծում 45

3. Տեղադրեք ESP-IDF մշակման գործիքների շղթան
ESP-IDF մշակման գործիքների շղթան տեղադրելու համար հետևեք 4.2.1 բաժնում տրված հրահանգներին: Քայլերը նույնն են, ինչ Linux համակարգում տեղադրելու համար:
4.2.4 VS կոդի տեղադրում
Լռելյայնորեն, ESP-IDF SDK-ն չի ներառում կոդերի խմբագրման գործիք (չնայած Windows-ի համար վերջին ESP-IDF տեղադրիչը առաջարկում է ESP-IDF Eclipse-ը տեղադրելու տարբերակը): Դուք կարող եք օգտագործել ձեր ընտրած տեքստի խմբագրման ցանկացած գործիք՝ կոդը խմբագրելու և այնուհետև այն կազմելու համար՝ օգտագործելով տերմինալի հրամանները:
Կոդի խմբագրման հանրաճանաչ գործիք է VS Code-ը (Visual Studio Code), որն անվճար և հարուստ կոդերի խմբագրիչ է՝ օգտագործողի համար հարմար ինտերֆեյսով: Այն առաջարկում է բազմազան plugins որոնք ապահովում են այնպիսի գործառույթներ, ինչպիսիք են կոդի նավարկությունը, շարահյուսության ընդգծումը, Git տարբերակի կառավարումը և տերմինալի ինտեգրումը: Բացի այդ, Espressif-ը մշակել է հատուկ պլագին, որը կոչվում է Espressif IDF VS Code-ի համար, որը հեշտացնում է նախագծի կազմաձևումը և վրիպազերծումը:
Դուք կարող եք օգտագործել կոդի հրամանը տերմինալում՝ արագ բացելու ընթացիկ թղթապանակը VS Code-ում: Որպես այլընտրանք, կարող եք օգտագործել Ctrl+ դյուրանցումը VS Code-ում համակարգի լռելյայն տերմինալային վահանակը բացելու համար:
ԽՈՐՀՈՒՐԴՆԵՐ ESP32-C3 կոդի մշակման համար խորհուրդ է տրվում օգտագործել VS Code: Ներբեռնեք և տեղադրեք VS Code-ի վերջին տարբերակը https://code.visualstudio.com/ կայքում:
4.2.5 Ներածություն երրորդ կողմի զարգացման միջավայրին
Ի լրումն պաշտոնական ESP-IDF-ի մշակման միջավայրին, որը հիմնականում օգտագործում է C լեզուն, ESP32-C3-ն աջակցում է նաև այլ հիմնական ծրագրավորման լեզուներին և երրորդ կողմի զարգացման միջավայրերի լայն շրջանակին: Որոշ ուշագրավ տարբերակներ ներառում են.
Arduino՝ բաց կոդով հարթակ ինչպես ապարատային, այնպես էլ ծրագրային ապահովման համար, որն աջակցում է տարբեր միկրովերահսկիչների, այդ թվում՝ ESP32-C3-ի:
Այն օգտագործում է C++ լեզուն և առաջարկում է պարզեցված և ստանդարտացված API, որը սովորաբար կոչվում է Arduino լեզու: Arduino-ն լայնորեն օգտագործվում է նախատիպի մշակման և կրթական համատեքստերում: Այն ապահովում է ընդարձակվող ծրագրային փաթեթ և IDE, որը թույլ է տալիս հեշտ հավաքել և թարթել:
MicroPython. Python 3 լեզվի թարգմանիչ, որը նախատեսված է ներկառուցված միկրոկառավարիչների հարթակներում աշխատելու համար:
Պարզ սցենարի լեզվով այն կարող է ուղղակիորեն մուտք գործել ESP32-C3-ի ծայրամասային ռեսուրսներ (օրինակ՝ UART, SPI և I2C) և հաղորդակցման գործառույթներ (օրինակ՝ Wi-Fi և Bluetooth LE):
46 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

Սա հեշտացնում է ապարատային փոխազդեցությունը: MicroPython-ը, զուգակցված Python-ի լայնածավալ մաթեմատիկական օպերացիոն գրադարանի հետ, հնարավորություն է տալիս ESP32-C3-ի վրա բարդ ալգորիթմներ իրականացնել՝ հեշտացնելով AI-ի հետ կապված հավելվածների մշակումը: Որպես սցենարի լեզու՝ կրկնակի կազմման կարիք չկա. փոփոխությունները կարող են կատարվել, և սցենարները կարող են ուղղակիորեն իրականացվել:
NodeMCU՝ LUA լեզվի թարգմանիչ, որը մշակվել է ESP սերիայի չիպերի համար:
Այն աջակցում է ESP չիպերի գրեթե բոլոր ծայրամասային գործառույթներին և ավելի թեթև է, քան MicroPython-ը: MicroPython-ի նման, NodeMCU-ն օգտագործում է սցենարի լեզու՝ վերացնելով կրկնվող կոմպիլյացիայի անհրաժեշտությունը:
Ավելին, ESP32-C3-ն աջակցում է նաև NuttX և Zephyr օպերացիոն համակարգերին: NuttX-ը իրական ժամանակի օպերացիոն համակարգ է, որն ապահովում է POSIX-ի հետ համատեղելի ինտերֆեյսներ՝ բարձրացնելով հավելվածների շարժունակությունը: Zephyr-ը իրական ժամանակի փոքր օպերացիոն համակարգ է, որը հատուկ նախագծված է IoT հավելվածների համար: Այն ներառում է բազմաթիվ ծրագրային գրադարաններ, որոնք անհրաժեշտ են IoT-ի մշակման համար՝ աստիճանաբար վերածվելով համապարփակ ծրագրային էկոհամակարգի:
Այս գիրքը չի տրամադրում վերը նշված զարգացման միջավայրերի տեղադրման մանրամասն հրահանգներ: Դուք կարող եք տեղադրել զարգացման միջավայր՝ հիմնվելով ձեր պահանջների վրա՝ հետևելով համապատասխան փաստաթղթերին և հրահանգներին:
4.3 ESP-IDF կոմպիլացիոն համակարգ
4.3.1 Կոմպիլացիոն համակարգի հիմնական հասկացությունները
ESP-IDF նախագիծը հիմնական ծրագրի հավաքածու է մուտքի ֆունկցիայով և բազմաթիվ անկախ ֆունկցիոնալ բաղադրիչներով: Նախample, նախագիծը, որը վերահսկում է LED անջատիչները, հիմնականում բաղկացած է մուտքային ծրագրի հիմնական և վարորդի բաղադրիչից, որը վերահսկում է GPIO-ն: Եթե ​​ցանկանում եք իրականացնել LED հեռակառավարման վահանակը, ապա պետք է նաև ավելացնել Wi-Fi, TCP/IP արձանագրության փաթեթ և այլն:
Կոմպիլացիոն համակարգը կարող է կազմել, կապել և ստեղծել գործարկվող files (.bin) կոդի համար՝ մի շարք շինարարական կանոնների միջոցով: ESP-IDF v4.0 և ավելի բարձր տարբերակների կոմպիլյացիոն համակարգը լռելյայն հիմնված է CMake-ի վրա, և CMakeLists.txt կոմպիլյացիոն սկրիպտը կարող է օգտագործվել կոդի կոմպիլյացիոն վարքագիծը վերահսկելու համար: Բացի CMake-ի հիմնական շարահյուսությանն աջակցելուց, ESP-IDF կոմպիլյատորային համակարգը նաև սահմանում է լռելյայն կոմպիլյացիայի կանոնների և CMake ֆունկցիաների մի շարք, և դուք կարող եք գրել կոմպիլյացիայի սցենարը պարզ հայտարարություններով:
4.3.2 Նախագիծ File Կառուցվածք
Նախագիծը թղթապանակ է, որը պարունակում է մուտքային ծրագրի հիմնական, օգտագործողի կողմից սահմանված բաղադրիչներ և fileՊահանջվում է գործարկվող հավելվածներ ստեղծելու համար, ինչպիսիք են կոմպիլյացիոն սկրիպտները, կոնֆիգուրացիան
Գլուխ 4. Զարգացման միջավայրի ստեղծում 47

files, բաժանման աղյուսակներ և այլն: Նախագծերը կարող են պատճենվել և փոխանցվել, և նույն գործարկվող file կարող է կազմվել և ստեղծվել ESP-IDF մշակման միջավայրի նույն տարբերակով մեքենաներում: Տիպիկ ESP-IDF նախագիծ file կառուցվածքը ներկայացված է Նկար 4.14-ում:
Նկար 4.14. Տիպիկ ESP-IDF նախագիծ file կառուցվածքը Քանի որ ESP-IDF-ն աջակցում է Espressif-ից մի քանի IoT չիպեր, ներառյալ ESP32, ESP32-S սերիաները, ESP32-C շարքերը, ESP32-H շարքերը և այլն, նախքան կոդը կազմելը պետք է որոշվի թիրախը: Թիրախը և՛ ապարատային սարքն է, որը գործարկում է կիրառական ծրագիրը, և՛ կոմպիլացիոն համակարգի կառուցման թիրախը: Կախված ձեր կարիքներից, դուք կարող եք նշել մեկ կամ մի քանի թիրախ ձեր նախագծի համար: Նախample, idf.py set-target esp32c3 հրամանի միջոցով կարող եք կոմպիլյացիայի թիրախը սահմանել ESP32-C3, որի ընթացքում բեռնվելու են ESP32C3-ի համար լռելյայն պարամետրերը և կոմպիլացիոն գործիքի շղթայի ուղին: Կազմելուց հետո ESP32C3-ի համար կարող է ստեղծվել գործարկվող ծրագիր: Կարող եք նաև նորից գործարկել set-target հրամանը՝ այլ թիրախ սահմանելու համար, և կոմպիլացիոն համակարգը ինքնաբերաբար կմաքրվի և կվերակազմավորվի: Բաղադրիչներ
ESP-IDF-ի բաղադրիչները մոդուլային և անկախ կոդային միավորներ են, որոնք կառավարվում են կոմպիլացիոն համակարգում: Դրանք կազմակերպված են որպես թղթապանակներ, որոնց թղթապանակի անունը լռելյայն ներկայացնում է բաղադրիչի անվանումը: Յուրաքանչյուր բաղադրիչ ունի իր կոմպիլյացիոն սցենարը, որը 48 ESP32-C3 Wireless Adventure. Համապարփակ ուղեցույց IoT-ի համար

նշում է իր կազմման պարամետրերը և կախվածությունները: Կազմման գործընթացում բաղադրիչները կազմվում են առանձին ստատիկ գրադարանների մեջ (.a fileժ) և, ի վերջո, համակցված այլ բաղադրիչների հետ՝ ձևավորելով կիրառական ծրագիրը:
ESP-IDF-ն ապահովում է էական գործառույթներ, ինչպիսիք են օպերացիոն համակարգը, ծայրամասային դրայվերները և ցանցային արձանագրությունների փաթեթը՝ բաղադրիչների տեսքով: Այս բաղադրիչները պահվում են բաղադրիչների գրացուցակում, որը գտնվում է ESP-IDF արմատային գրացուցակում: Մշակողները կարիք չունեն պատճենելու այս բաղադրիչները myProject-ի բաղադրիչների գրացուցակում: Փոխարենը, նրանք միայն պետք է նշեն այս բաղադրիչների կախվածության հարաբերությունները նախագծի CMakeLists.txt-ում: file օգտագործելով REQUIRES կամ PRIV_REQUIRES հրահանգները: Կազմման համակարգը ավտոմատ կերպով կգտնի և կկազմի պահանջվող բաղադրիչները:
Հետևաբար, myProject-ի տակ գտնվող բաղադրիչների գրացուցակը անհրաժեշտ չէ: Այն օգտագործվում է միայն նախագծի որոշ հատուկ բաղադրիչներ ներառելու համար, որոնք կարող են լինել երրորդ կողմի գրադարաններ կամ օգտագործողի կողմից սահմանված կոդ: Բացի այդ, բաղադրիչները կարող են ստացվել ցանկացած գրացուցակից, բացի ESP-IDF-ից կամ ընթացիկ նախագծից, օրինակ՝ մեկ այլ գրացուցակում պահված բաց կոդով նախագծից: Այս դեպքում անհրաժեշտ է միայն բաղադրիչի ուղին ավելացնել՝ արմատային գրացուցակի տակ CMakeLists.txt-ում սահմանելով EXTRA_COMPONENT_DIRS փոփոխականը: Այս գրացուցակը կչեղարկի նույն անունով ցանկացած ESP-IDF բաղադրիչ՝ ապահովելով ճիշտ բաղադրիչի օգտագործումը:
Մուտքային ծրագրի հիմնական Ծրագրի հիմնական գրացուցակը նույնն է file կառուցվածքը որպես այլ բաղադրիչներ (օրինակ՝ բաղադրիչ 1): Այնուամենայնիվ, այն առանձնահատուկ նշանակություն ունի, քանի որ այն պարտադիր բաղադրիչ է, որը պետք է լինի յուրաքանչյուր նախագծում: Հիմնական գրացուցակը պարունակում է նախագծի սկզբնական կոդը և օգտագործողի ծրագրի մուտքի կետը, որը սովորաբար կոչվում է app_main: Լռելյայնորեն, օգտագործողի ծրագրի կատարումը սկսվում է այս մուտքի կետից: Հիմնական բաղադրիչը նաև տարբերվում է նրանով, որ այն ավտոմատ կերպով կախված է որոնման ուղու բոլոր բաղադրիչներից: Հետևաբար, կարիք չկա հստակորեն նշել կախվածությունները՝ օգտագործելով REQUIRES կամ PRIV_REQUIRES հրահանգները CMakeLists.txt-ում: file.
Կոնֆիգուրացիա file Ծրագրի արմատային գրացուցակը պարունակում է կոնֆիգուրացիա file կոչվում է sdkconfig, որը պարունակում է նախագծի բոլոր բաղադրիչների կազմաձևման պարամետրերը: sdkconfig file ինքնաբերաբար ստեղծվում է կոմպիլացիոն համակարգի կողմից և կարող է փոփոխվել և վերականգնվել idf.py menuconfig հրամանով: Menuconfig ընտրանքները հիմնականում ծագում են նախագծի Kconfig.projbuild-ից և բաղադրիչների Kconfig-ից: Բաղադրիչների մշակողները սովորաբար ավելացնում են կազմաձևման տարրեր Kconfig-ում՝ բաղադրիչը ճկուն և կարգավորելի դարձնելու համար:
Կառուցել գրացուցակը Լռելյայնորեն, ծրագրի կառուցման գրացուցակը պահպանում է միջանկյալը files և fi-
Գլուխ 4. Զարգացման միջավայրի ստեղծում 49

nal գործարկվող ծրագրեր, որոնք ստեղծվել են idf.py build հրամանով: Ընդհանուր առմամբ, անհրաժեշտ չէ ուղղակիորեն մուտք գործել build գրացուցակի բովանդակություն: ESP-IDF-ը տրամադրում է նախապես սահմանված հրամաններ գրացուցակի հետ փոխազդելու համար, օրինակ՝ օգտագործելով idf.py ֆլեշ հրամանը՝ կոմպիլացված երկուականը ավտոմատ կերպով գտնելու համար: file և սայթաքեք այն նշված ֆլեշ հասցեում կամ օգտագործելով idf.py fullclean հրամանը՝ մաքրելու ամբողջ build գրացուցակը:
Բաժանման աղյուսակ (partitions.csv) Յուրաքանչյուր նախագիծ պահանջում է բաժանման աղյուսակ՝ ֆլեշի տարածությունը բաժանելու և գործարկվող ծրագրի չափն ու մեկնարկային հասցեն և օգտվողի տվյալների տարածքը նշելու համար: Command idf.py flash կամ OTA արդիականացման ծրագիրը կթարմացնի որոնվածը համապատասխան հասցեին՝ համաձայն այս աղյուսակի: ESP-IDF-ն ապահովում է մի քանի լռելյայն բաժանման աղյուսակներ բաղադրիչներում/partition_table-ում, ինչպիսիք են partitions_singleapp.csv և partitions_two_ ota.csv, որոնք կարող են ընտրվել menuconfig-ում:
Եթե ​​համակարգի լռելյայն բաժանման աղյուսակը չի կարող բավարարել նախագծի պահանջները, ապա հատուկ partitions.csv-ը կարող է ավելացվել ծրագրի գրացուցակում և ընտրվել menuconfig-ում:
4.3.3 Կոմպիլացիոն համակարգի լռելյայն կառուցման կանոններ
Նույն անունով բաղադրիչները գերակայելու կանոններ Բաղադրիչների որոնման գործընթացում կոմպիլյացիայի համակարգը հետևում է որոշակի կարգի: Այն սկզբում որոնում է ESP-IDF-ի ներքին բաղադրիչները, այնուհետև փնտրում է օգտվողի նախագծի բաղադրիչները և վերջում որոնում է բաղադրիչներ EXTRA_COMPONENT_DIRS-ում: Այն դեպքերում, երբ մի քանի դիրեկտորիաներ պարունակում են նույն անունով բաղադրիչներ, վերջին գրացուցակում հայտնաբերված բաղադրիչը կշրջանցի նույն անունով նախորդ բաղադրիչները: Այս կանոնը թույլ է տալիս հարմարեցնել ESP-IDF բաղադրիչները օգտվողի նախագծի շրջանակներում՝ միաժամանակ պահպանելով բնօրինակ ESP-IDF կոդը:
Ընդհանուր բաղադրիչները լռելյայն ներառելու կանոններ Ինչպես նշվեց 4.3.2 բաժնում, բաղադրիչները պետք է հստակորեն նշեն իրենց կախվածությունը CMakeLists.txt-ում այլ բաղադրիչներից: Այնուամենայնիվ, սովորական բաղադրիչները, ինչպիսիք են freertos-ը, ավտոմատ կերպով ներառվում են build համակարգում լռելյայն, նույնիսկ եթե դրանց կախվածության հարաբերությունները հստակորեն սահմանված չեն կոմպիլյատորի սցենարում: ESP-IDF ընդհանուր բաղադրիչները ներառում են freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv և cxx: Այս ընդհանուր բաղադրիչների օգտագործումը խուսափում է CMakeLists.txt-ը գրելիս կրկնվող աշխատանքից և դարձնում այն ​​ավելի հակիրճ:
Կազմաձևման տարրերի գերակայման կանոններ Մշակողները կարող են ավելացնել կանխադրված կազմաձևման պարամետրեր՝ ավելացնելով լռելյայն կազմաձևում file անունը sdkconfig.defaults է նախագծին: Նախample՝ ավելացնելով CONFIG_LOG_
50 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

DEFAULT_LEVEL_NONE = y-ը կարող է կարգավորել UART ինտերֆեյսը, որպեսզի լռելյայնորեն չտպվեն մատյանների տվյալները: Ավելին, եթե որոշակի թիրախի համար պետք է սահմանվեն հատուկ պարամետրեր, ապա կոնֆիգուրացիա file կարող է ավելացվել sdkconfig.defaults.TARGET_NAME, որտեղ TARGET_NAME-ը կարող է լինել esp32s2, esp32c3 և այլն: Այս կոնֆիգուրացիան files-ն ներմուծվում է sdkconfig կոմպիլյացիայի ժամանակ՝ ընդհանուր լռելյայն կազմաձևով file sdkconfig.defaults-ը նախ ներմուծվում է, որին հաջորդում է թիրախային կոնֆիգուրացիան file, օրինակ՝ sdkconfig.defaults.esp32c3: Այն դեպքերում, երբ կան նույն անունով կոնֆիգուրացիայի տարրեր, վերջինս կոնֆիգուրացիա file կհաղթահարի նախկինը.
4.3.4 Կազմման սցենարի ներածություն
ESP-IDF-ի միջոցով նախագիծ մշակելիս մշակողները ոչ միայն պետք է գրեն սկզբնական կոդը, այլև պետք է գրեն CMakeLists.txt նախագծի և բաղադրիչների համար: CMakeLists.txt-ը տեքստ է file, որը նաև հայտնի է որպես կոմպիլյացիոն սցենար, որը սահմանում է մի շարք կոմպիլացիոն օբյեկտներ, կոմպիլյացիայի կազմաձևման տարրեր և հրամաններ՝ սկզբնաղբյուրի կազմման գործընթացը առաջնորդելու համար։ ESP-IDF v4.3.2-ի կոմպիլյացիոն համակարգը հիմնված է CMake-ի վրա: Ի հավելումն բնիկ CMake գործառույթների և հրամանների աջակցմանը, այն նաև սահմանում է մի շարք հատուկ գործառույթներ, ինչը շատ ավելի դյուրին է դարձնում կոմպիլացիոն սցենարներ գրելը:
ESP-IDF-ի կոմպիլյացիոն սկրիպտները հիմնականում ներառում են նախագծի կոմպիլյացիայի սցենարը և բաղադրիչի կոմպիլյացիայի սցենարները: Նախագծի արմատական ​​գրացուցակում CMakeLists.txt-ը կոչվում է նախագծի կոմպիլյացիայի սցենար, որն ուղղորդում է ամբողջ նախագծի կազմման գործընթացը: Հիմնական նախագծի կազմման սցենարը սովորաբար ներառում է հետևյալ երեք տողերը.
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. նախագիծ(myProject)
Դրանցից առաջին տողում պետք է տեղադրվի cmake_minimum_required (VERSION 3.5), որն օգտագործվում է նախագծի կողմից պահանջվող նվազագույն CMake տարբերակի համարը նշելու համար։ CMake-ի ավելի նոր տարբերակները, ընդհանուր առմամբ, հետամնացորեն համատեղելի են հին տարբերակների հետ, ուստի համապատասխանաբար կարգավորեք տարբերակի համարը, երբ օգտագործում եք ավելի նոր CMake հրամաններ՝ ապահովելու համատեղելիությունը:
ներառում է ($ENV {IDF_PATH}/tools/cmake/project.cmake) ներմուծում է ESP-IDF կոմպիլացիոն համակարգի նախապես սահմանված կազմաձևման տարրեր և հրամաններ, ներառյալ 4.3.3-ում նկարագրված կոմպիլացիոն համակարգի լռելյայն կառուցման կանոնները: project(myProject)-ն ինքն է ստեղծում նախագիծը և նշում դրա անունը: Այս անունը կօգտագործվի որպես վերջնական ելքային երկուական տարբերակ file անունը, այսինքն՝ myProject.elf և myProject.bin:
Նախագիծը կարող է ունենալ մի քանի բաղադրիչ, ներառյալ հիմնական բաղադրիչը: Յուրաքանչյուր բաղադրիչի վերին մակարդակի գրացուցակը պարունակում է CMakeLists.txt file, որը կոչվում է բաղադրիչի կազմման սցենար։ Բաղադրիչների կոմպիլյացիայի սկրիպտները հիմնականում օգտագործվում են բաղադրիչի կախվածությունը, կազմաձևման պարամետրերը, սկզբնական կոդը նշելու համար files, և ներառված վերնագիր files համար
Գլուխ 4. Զարգացման միջավայրի ստեղծում 51

կազմում. ESP-IDF-ի idf_component_register մաքսային ֆունկցիայի դեպքում բաղադրիչի կազմման սցենարի համար պահանջվող նվազագույն կոդը հետևյալն է.

1. idf_component_register (SRCS «src1.c»

2.

INCLUDE_DIRS «ներառում»

3.

ՊԱՀԱՆՋՈՒՄ Է բաղադրիչ 1)

SRCS պարամետրը ապահովում է աղբյուրի ցանկը files բաղադրիչում, բաժանված բացատներով, եթե կան բազմաթիվ fileս. INCLUDE_DIRS պարամետրը տրամադրում է հանրային վերնագրի ցուցակ file դիրեկտորիաներ բաղադրիչի համար, որոնք կավելացվեն ներառող որոնման ճանապարհին այլ բաղադրիչների համար, որոնք կախված են ընթացիկ բաղադրիչից: REQUIRES պարամետրը նույնացնում է ընթացիկ բաղադրիչի հանրային բաղադրիչի կախվածությունը: Անհրաժեշտ է, որ բաղադրիչները հստակորեն նշեն, թե որ բաղադրիչներից են կախված, օրինակ բաղադրիչ 2-ը կախված բաղադրիչ 1-ից: Այնուամենայնիվ, հիմնական բաղադրիչի համար, որը լռելյայնորեն կախված է բոլոր բաղադրիչներից, REQUIRES պարամետրը կարող է բաց թողնել:

Բացի այդ, բնիկ CMake հրամանները կարող են օգտագործվել նաև կոմպիլյացիայի սցենարում: Նախample, օգտագործեք set հրամանը փոփոխականներ սահմանելու համար, օրինակ՝ set (փոփոխական «VALUE»):

4.3.5 Ներածություն ընդհանուր հրամաններին
ESP-IDF-ն օգտագործում է CMake (նախագծի կազմաձևման գործիք), Ninja (նախագծի կառուցման գործիք) և esptool (ֆլեշ գործիք) կոդի կազմման գործընթացում։ Յուրաքանչյուր գործիք տարբեր դեր է խաղում կոմպիլյացիայի, կառուցման և ֆլեշ գործընթացում, ինչպես նաև աջակցում է տարբեր գործառնական հրամաններ: Օգտատիրոջ աշխատանքը հեշտացնելու համար ESP-IDF-ն ավելացնում է միացյալ idf.py ճակատային հատված, որը թույլ է տալիս արագ կանչել վերը նշված հրամանները:
Նախքան idf.py-ն օգտագործելը, համոզվեք, որ.
· ESP-IDF-ի IDF_PATH միջավայրի փոփոխականն ավելացվել է ընթացիկ տերմինալին: · Հրամանի կատարման գրացուցակը նախագծի արմատական ​​գրացուցակն է, որը ներառում է
նախագծի կազմման սցենար CMakeLists.txt:
idf.py-ի ընդհանուր հրամանները հետևյալն են.
· idf.py –help. ցուցադրում է հրամանների ցանկը և դրանց օգտագործման հրահանգները: · idf.py սահմանել-թիրախ կարգավորելը taidf.py fullcleanrget, ինչպիսիք են
որպես փոխարինող esp32c3-ով: · idf.py menuconfig. menuconfig-ի գործարկում, տերմինալային գրաֆիկական կոնֆիգուրացիա
գործիք, որը կարող է ընտրել կամ փոփոխել կազմաձևման տարբերակները, և կազմաձևման արդյունքները պահվում են sdkconfig-ում file. · idf.py build. կոդի կազմման մեկնարկ: Միջանկյալը files-ը և կոմպիլյացիայի արդյունքում ստեղծված վերջնական գործարկվող ծրագիրը կպահվի նախագծի build գրացուցակում լռելյայնորեն: Կազմման գործընթացը աստիճանական է, ինչը նշանակում է, որ եթե միայն մեկ աղբյուր file փոփոխված է, միայն փոփոխվածը file կկազմվի հաջորդ անգամ:

52 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

· idf.py մաքրում. միջանկյալ նյութի մաքրում fileԾրագրի կազմման արդյունքում առաջացած s. Ամբողջ նախագիծը հարկադրված կլինի կազմել հաջորդ կազմում։ Նկատի ունեցեք, որ CMake կոնֆիգուրացիան և menuconfig-ի կողմից կատարված կազմաձևման փոփոխությունները չեն ջնջվի մաքրման ընթացքում:
· idf.py fullclean. ջնջել ամբողջ build գրացուցակը, ներառյալ CMake կազմաձևման բոլոր ելքերը fileս. Նախագիծը նորից կառուցելիս CMake-ը նախագիծը զրոյից կկարգավորի: Խնդրում ենք նկատի ունենալ, որ այս հրամանը ռեկուրսիվ կերպով կջնջի բոլորը files build գրացուցակում, այնպես որ օգտագործեք այն զգուշությամբ և նախագծի կազմաձևումով file չի ջնջվի։
· idf.py ֆլեշ. գործարկվող ծրագրի երկուական թարթում file ստեղծվել է ESP32-C3 թիրախին կառուցելու միջոցով: Ընտրանքներ - p և -բ օգտագործվում են համապատասխանաբար սերիական միացքի սարքի անվանումը և թարթման արագությունը սահմանելու համար: Եթե ​​նշված երկու տարբերակները նշված չեն, սերիական միացքը ավտոմատ կերպով կհայտնաբերվի և կօգտագործվի լռելյայն baud արագությունը:
· idf.py մոնիտոր. ցուցադրում է թիրախային ESP32-C3-ի սերիական պորտի ելքը: -p տարբերակը կարող է օգտագործվել հյուրընկալող կողմի սերիական պորտի սարքի անունը նշելու համար: Սերիական նավահանգիստ տպելու ժամանակ սեղմեք ստեղների համակցությունը Ctrl+] մոնիտորից դուրս գալու համար:
Անհրաժեշտության դեպքում վերը նշված հրամանները նույնպես կարող են համակցվել: Նախample, idf.py build flash monitor հրամանը կկատարի կոդի հավաքում, ֆլեշ և հաջորդաբար կբացի սերիական պորտի մոնիտորը:
ESP-IDF կոմպիլացիոն համակարգի մասին ավելին իմանալու համար կարող եք այցելել https://bookc3.espressif.com/build-system:
4.4 Պրակտիկա. Կազմել էamp«Blink» ծրագիրը
4.4.1 ՆախկինampՎերլուծություն
Այս բաժինը կվերցնի Blink ծրագիրը որպես նախկինampվերլուծելու համար file Մանրամասն իրական նախագծի կառուցվածքը և կոդավորման կանոնները: Blink ծրագիրն իրականացնում է LED թարթման էֆեկտը, և նախագիծը գտնվում է գրացուցակում նախկինումamples/get-started/blink, որը պարունակում է աղբյուր file, կոնֆիգուրացիա files, և մի քանի կոմպիլյացիոն սցենարներ:
Այս գրքում ներկայացված խելացի լույսի նախագիծը հիմնված է այս նախկինի վրաample ծրագիրը։ Գործառույթները աստիճանաբար կավելացվեն հետագա գլուխներում՝ այն վերջնականապես ավարտելու համար:
Աղբյուրի կոդը Մշակման ողջ գործընթացը ցուցադրելու համար Blink ծրագիրը պատճենվել է esp32c3-iot-projects/device firmware/1 blink-ում:
Թարթել նախագծի գրացուցակի կառուցվածքը files-ը ներկայացված է Նկար 4.15-ում:
Թարթել նախագիծը պարունակում է միայն մեկ հիմնական գրացուցակ, որը հատուկ բաղադրիչ է, որը
Գլուխ 4. Զարգացման միջավայրի ստեղծում 53

Նկար 4.15. File blink նախագծի գրացուցակի կառուցվածքը

պետք է ներառվի, ինչպես նկարագրված է 4.3.2 բաժնում: Հիմնական գրացուցակը հիմնականում օգտագործվում է app_main() ֆունկցիայի իրականացումը պահելու համար, որը մուտքի կետն է օգտագործողի ծրագրին: Թարթել նախագիծը չի ներառում բաղադրիչների գրացուցակը, քանի որ սա նախկինample-ին անհրաժեշտ է օգտագործել միայն այն բաղադրիչները, որոնք գալիս են ESP-IDF-ի հետ և չի պահանջում լրացուցիչ բաղադրիչներ: Blink նախագծում ներառված CMakeLists.txt-ն օգտագործվում է կոմպիլյացիայի գործընթացն ուղղորդելու համար, մինչդեռ Kconfig.projbuild-ն օգտագործվում է այս նախկինի համար կազմաձևման տարրեր ավելացնելու համար:ample ծրագիրը menuconfig-ում: Այլ ավելորդ files-ը չի ազդի օրենսգրքի կազմման վրա, ուստի դրանք այստեղ չեն քննարկվի: Blink նախագծի մանրամասն ներածություն files-ն հետևյալն է.

1. /*blink.c-ը ներառում է հետևյալ վերնագիրը files*/

2. #ներառել

//Ստանդարտ C գրադարանի վերնագիր file

3. #include «freertos/freeRTOS.h» //FreeRTOS հիմնական վերնագիր file

4. #include «freertos/task.h»

//FreeRTOS առաջադրանքի վերնագիր file

5. #include «sdkconfig.h»

//Կազմաձևման վերնագիր file գեներացվել է kconfig-ով

6. #include «driver/gpio.h»

//GPIO վարորդի վերնագիր file

Աղբյուրը file blink.c-ը պարունակում է վերնագրերի շարք files-ը համապատասխանում է հայտարարագրված ֆունկցիային

ներ. ESP-IDF-ը սովորաբար հետևում է գրադարանի ստանդարտ վերնագրի ընդգրկման կարգին files, FreeR-

TOS վերնագիր files, վարորդի վերնագիր files, այլ բաղադրիչի վերնագիր files և նախագծի վերնագիր files.

Վերնագրի հերթականությունը fileներառվածները կարող են ազդել կազմման վերջնական արդյունքի վրա, ուստի փորձեք դա անել

հետևեք լռելյայն կանոններին. Պետք է նշել, որ sdkconfig.h-ն ավտոմատ կերպով ստեղծվում է

kconfig-ով և կարող է կազմաձևվել միայն idf.py menuconfig հրամանի միջոցով:

Այս վերնագրի ուղղակի փոփոխությունը file կվերագրվի:

1. /*Դուք կարող եք ընտրել LED-ին համապատասխանող GPIO idf.py menuconfig-ում, և menuconfig-ի փոփոխման արդյունքն այն է, որ CONFIG_BLINK արժեքը

_GPIO-ն կփոխվի: Կարող եք նաև ուղղակիորեն փոփոխել մակրո սահմանումը

այստեղ և փոխեք CONFIG_BLINK_GPIO-ը հաստատուն արժեքի:*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main (անվավեր)

4. {

5.

/*Կարգավորեք IO-ն որպես GPIO լռելյայն ֆունկցիա, միացրեք pull-up ռեժիմը և

6.

անջատել մուտքային և ելքային ռեժիմները*/

7.

gpio_reset_pin (BLINK_GPIO);

54 ESP32-C3 Wireless Adventure. IoT-ի համապարփակ ուղեցույց

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

/*Սահմանել GPIO-ն ելքային ռեժիմի*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); մինչդեռ (1) {
/*Տպել մատյան*/ printf(«Անջատում է LEDn-ը»); /*Անջատեք լուսադիոդը (ելքի ցածր մակարդակ)*/ gpio_set_level(BLINK_GPIO, 0); /*Հապաղում (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf («Միացնել LEDn»); /*Միացնել լուսադիոդը (ելքային բարձր մակարդակ)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay (1000 / portTICK_PERIOD_MS); }

App_main() ֆունկցիան Blink ex-ումample ծրագիրը ծառայում է որպես օգտագործողի ծրագրերի մուտքի կետ: Դա պարզ գործառույթ է, առանց պարամետրերի և վերադարձի արժեքի: Այս գործառույթը կանչվում է այն բանից հետո, երբ համակարգը ավարտում է սկզբնավորումը, որը ներառում է այնպիսի առաջադրանքներ, ինչպիսիք են մատյան սերիական պորտի սկզբնավորումը, մեկ/երկակի միջուկի կարգավորումը և պահակախմբի կազմաձևումը:

app_main() ֆունկցիան աշխատում է main անունով առաջադրանքի համատեքստում: Այս առաջադրանքի կույտի չափը և առաջնահերթությունը կարող են ճշգրտվել ընտրացանկից Config Componentconfig Common ESP-ի հետ կապված:

Պարզ առաջադրանքների համար, ինչպիսին է LED-ի թարթումը, բոլոր անհրաժեշտ կոդը կարող է իրականացվել անմիջապես app_main() ֆունկցիայի մեջ: Սա սովորաբար ներառում է LED-ին համապատասխանող GPIO-ի սկզբնավորումը և ժամանակի (1) օղակի օգտագործումը լուսադիոդը միացնելու և անջատելու համար: Որպես այլընտրանք, դուք կարող եք օգտագործել FreeRTOS API-ն՝ նոր առաջադրանք ստեղծելու համար, որը կարգավորում է LED-ի թարթումը: Երբ նոր առաջադրանքը հաջողությամբ ստեղծվի, կարող եք դուրս գալ app_main() ֆունկցիայից:

main/CMakeLists.txt-ի բովանդակությունը file, որն ուղղորդում է հիմնական բաղադրիչի կազմման գործընթացը, հետևյալն է.

1. idf_component_register (SRCS «blink.c» INCLUDE_DIRS «»:)

Դրանցից main/CMakeLists.txt-ը կանչում է միայն մեկ կոմպիլացիոն համակարգի ֆունկցիա, այն է՝ idf_component_register: Ինչպես CMakeLists.txt-ին այլ բաղադրիչների համար, blink.c-ն ավելացվել է SRCS-ին և աղբյուրը fileSRCS-ին ավելացված s-ը կկազմվի: Միևնույն ժամանակ, «.»-ը, որը ներկայացնում է այն ուղին, որտեղ գտնվում է CMakeLists.txt-ը, պետք է ավելացվի INCLUDE_DIRS-ում՝ որպես վերնագրի որոնման գրացուցակներ: fileս. CMakeLists.txt-ի բովանդակությունը հետևյալն է.
1. #Նշեք v3.5-ը որպես CMake-ի հնագույն տարբերակը, որն աջակցվում է ընթացիկ նախագծի կողմից 2. #V3.5-ից ցածր տարբերակները պետք է թարմացվեն մինչև կոմպիլյացիան շարունակվի: - IDF-ի կազմման համակարգ

Գլուխ 4. Զարգացման միջավայրի ստեղծում 55

5. ներառել ($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Ստեղծել «blink» անունով նախագիծ 7. նախագիծ (myProject)
Դրանցից CMakeLists.txt-ը արմատային գրացուցակում հիմնականում ներառում է $ENV{IDF_ PATH}/tools/cmake/project.cmake, որը CMake-ի հիմնական կոնֆիգուրացիան է: file տրամադրված ESP-IDF-ի կողմից: Այն օգտագործվում է կոն

Փաստաթղթեր / ռեսուրսներ

Espressif Systems ESP32-C3 Wireless Adventure [pdf] Օգտագործողի ուղեցույց
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *