Περιεχόμενα κρύβω
2 ESP32-C3 Wireless Adventure
2.1 Ένας ολοκληρωμένος οδηγός για το IoT

ESP32-C3 Wireless Adventure

ESP32-C3 Wireless Adventure

Ένας ολοκληρωμένος οδηγός για το IoT

Espressif Systems 12 Ιουνίου 2023

Προδιαγραφές

  • Προϊόν: ESP32-C3 Wireless Adventure
  • Κατασκευαστής: Espressif Systems
  • Ημερομηνία: 12 Ιουνίου 2023

Οδηγίες χρήσης προϊόντος

Παρασκευή

Πριν χρησιμοποιήσετε το ESP32-C3 Wireless Adventure, βεβαιωθείτε ότι είστε
εξοικειωμένοι με τις έννοιες και την αρχιτεκτονική του IoT. Αυτό θα βοηθήσει
καταλαβαίνετε πώς η συσκευή ταιριάζει στο μεγαλύτερο οικοσύστημα IoT
και τις πιθανές εφαρμογές του σε έξυπνα σπίτια.

Εισαγωγή και Εξάσκηση Έργων IoT

Σε αυτήν την ενότητα, θα μάθετε για τυπικά έργα IoT,
συμπεριλαμβανομένων των βασικών ενοτήτων για κοινές συσκευές IoT, βασικές ενότητες
εφαρμογών πελατών και κοινών πλατφορμών cloud IoT. Αυτό θα
σας παρέχει τα θεμέλια για την κατανόηση και τη δημιουργία σας
δικά του έργα IoT.

Εξάσκηση: Έργο Smart Light

Σε αυτό το έργο πρακτικής, θα μάθετε πώς να δημιουργείτε ένα smart
φως χρησιμοποιώντας το ESP32-C3 Wireless Adventure. Η δομή του έργου,
λειτουργίες, προετοιμασία υλικού και διαδικασία ανάπτυξης θα είναι
εξηγείται αναλυτικά.

Δομή Έργου

Το έργο αποτελείται από πολλά στοιχεία, συμπεριλαμβανομένων των
ESP32-C3 Wireless Adventure, LED, αισθητήρες και ένα σύννεφο
backend.

Λειτουργίες Έργου

Το έργο έξυπνου φωτός σάς επιτρέπει να ελέγχετε τη φωτεινότητα και
χρώμα των LED από απόσταση μέσω μιας εφαρμογής για κινητά ή web
διεπαφή.

Προετοιμασία υλικού

Για να προετοιμαστείτε για το έργο, θα χρειαστεί να συγκεντρώσετε το
απαραίτητα στοιχεία υλικού, όπως το ESP32-C3 Wireless
Adventure board, LED, αντιστάσεις και τροφοδοτικό.

Διαδικασία Ανάπτυξης

Η διαδικασία ανάπτυξης περιλαμβάνει τη ρύθμιση της ανάπτυξης
περιβάλλον, εγγραφή κώδικα για τον έλεγχο των LED, σύνδεση με το
cloud backend και δοκιμή της λειτουργικότητας του smart
φως.

Εισαγωγή στο 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 προσφέρει διάφορες δυνατότητες για διαχείριση χρηστών, τέλος
χρήστες και διαχειριστές. Αυτά τα χαρακτηριστικά επιτρέπουν την εύκολη συσκευή
εγκατάσταση, τηλεχειριστήριο και παρακολούθηση.

Διαμόρφωση Αναπτυξιακού Περιβάλλοντος

Αυτή η ενότητα παρέχει ένα overview του ESP-IDF (Espressif IoT
Πλαίσιο Ανάπτυξης), που είναι το επίσημο αναπτυξιακό πλαίσιο
για συσκευές που βασίζονται σε ESP32. Εξηγεί τις διαφορετικές εκδόσεις του
ESP-IDF και πώς να ρυθμίσετε το περιβάλλον ανάπτυξης.

Ανάπτυξη υλικού και προγραμμάτων οδήγησης

Σχεδιασμός υλικού Smart Light προϊόντων με βάση το ESP32-C3

Αυτή η ενότητα εστιάζει στη σχεδίαση υλικού του έξυπνου φωτός
προϊόντα βασισμένα στο ESP32-C3 Wireless Adventure. Καλύπτει το
χαρακτηριστικά και σύνθεση προϊόντων smart light, καθώς και το
σχεδιασμός υλικού του συστήματος πυρήνα ESP32-C3.

Χαρακτηριστικά και σύνθεση προϊόντων Smart Light

Αυτή η υποενότητα εξηγεί τα χαρακτηριστικά και τα εξαρτήματα που δημιουργούν
up προϊόντα έξυπνου φωτός. Συζητά τις διαφορετικές λειτουργίες
και σχεδιαστικές εκτιμήσεις για τη δημιουργία έξυπνων φώτων.

Σχεδίαση υλικού συστήματος πυρήνα ESP32-C3

Η σχεδίαση υλικού του συστήματος πυρήνα ESP32-C3 περιλαμβάνει ισχύ
τροφοδοσία, ακολουθία ενεργοποίησης, επαναφορά συστήματος, φλας SPI, πηγή ρολογιού,
και ζητήματα RF και κεραίας. Αυτή η υποενότητα παρέχει
λεπτομερείς πληροφορίες για αυτές τις πτυχές.

FAQ

Ε: Τι είναι το ESP RainMaker;

Α: Το ESP RainMaker είναι μια πλατφόρμα που βασίζεται σε σύννεφο που παρέχει εργαλεία
και υπηρεσίες για την κατασκευή και τη διαχείριση συσκευών IoT. Απλοποιεί
τη διαδικασία ανάπτυξης και επιτρέπει την εύκολη εγκατάσταση της συσκευής, απομακρυσμένη
έλεγχο και παρακολούθηση.

Ε: Πώς μπορώ να ρυθμίσω το περιβάλλον ανάπτυξης
ESP32-C3;

Α: Για να ρυθμίσετε το περιβάλλον ανάπτυξης για το ESP32-C3, χρειάζεστε
για να εγκαταστήσετε το ESP-IDF (Espressif IoT Development Framework) και
ρυθμίστε το σύμφωνα με τις παρεχόμενες οδηγίες. Το ESP-IDF είναι το
επίσημο πλαίσιο ανάπτυξης για συσκευές που βασίζονται σε ESP32.

Ε: Ποια είναι τα χαρακτηριστικά του ESP RainMaker;

Α: Το ESP RainMaker προσφέρει διάφορες δυνατότητες, συμπεριλαμβανομένου του χρήστη
διαχείριση, χαρακτηριστικά τελικού χρήστη και χαρακτηριστικά διαχειριστή. Διαχείριση χρηστών
επιτρέπει την εύκολη αξίωση συσκευής και συγχρονισμό δεδομένων. Τελικός χρήστης
λειτουργίες επιτρέπουν τον απομακρυσμένο έλεγχο συσκευών μέσω μιας εφαρμογής για κινητά ή
web διεπαφή. Οι λειτουργίες διαχειριστή παρέχουν εργαλεία για την παρακολούθηση συσκευών
και διαχείριση.

ESP32-C3 Wireless Adventure
Ένας ολοκληρωμένος οδηγός για το 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Ροή εργασίας Git ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Επιλογή κατάλληλης έκδοσης . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Πάνωview του καταλόγου ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 Ρύθμιση περιβάλλοντος ανάπτυξης ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Ρύθμιση περιβάλλοντος ανάπτυξης ESP-IDF σε Linux . . . . . . . . 38 4.2.2 Ρύθμιση περιβάλλοντος ανάπτυξης ESP-IDF στα Windows . . . . . . 40 4.2.3 Ρύθμιση περιβάλλοντος ανάπτυξης ESP-IDF σε Mac . . . . . . . . . 45 4.2.4 Εγκατάσταση κωδικού VS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Εισαγωγή σε περιβάλλοντα ανάπτυξης τρίτων . . . . . . . . 46 4.3 Σύστημα μεταγλώττισης ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Βασικές έννοιες του συστήματος μεταγλώττισης . . . . . . . . . . . . . . . . . . 47 4.3.2 Έργο File Δομή . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Προεπιλεγμένοι κανόνες κατασκευής του συστήματος μεταγλώττισης. . . . . . . . . . . . . 50 4.3.4 Εισαγωγή στο Σενάριο Σύνταξης. . . . . . . . . . . . . . . . . . 51 4.3.5 Εισαγωγή στις κοινές εντολές . . . . . . . . . . . . . . . . . . . 52 4.4 Εξάσκηση: Σύνταξη Εξample Πρόγραμμα “Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Π.χample Ανάλυση . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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. . . . . . . . . . . . . . . . . . . 70

5.2.1 Τροφοδοτικό . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Ακολουθία ενεργοποίησης και επαναφορά συστήματος . . . . . . . . . . . . . . . . . . 74

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

5.2.4 Πηγή ρολογιού . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 RF και κεραία . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Καρφίτσες ιμάντων . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 Ελεγκτής GPIO και PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Εξάσκηση: Κατασκευή ενός συστήματος έξυπνου φωτισμού με ESP32-C3 . . . . . . . . . . . . . 80

5.3.1 Επιλογή Ενοτήτων . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 Διαμόρφωση GPIO σημάτων PWM . . . . . . . . . . . . . . . . . . . . 82

5.3.3 Λήψη υλικολογισμικού και διεπαφής εντοπισμού σφαλμάτων . . . . . . . . . . . . 82

5.3.4 Οδηγίες για Σχεδιασμό RF . . . . . . . . . . . . . . . . . . . . . . . . . . 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. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Μη πτητική αποθήκευση (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 Ελεγκτής LED PWM (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 Προγραμματισμός LED PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Εξάσκηση: Προσθήκη προγραμμάτων οδήγησης στο Smart Light Project . . . . . . . . . . . . . . . . . 103

6.5.1 Πρόγραμμα οδήγησης κουμπιού . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 Πρόγραμμα οδήγησης LED Dimming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Advantages του Τοπικού Ελέγχου . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Ανακάλυψη ελεγχόμενων συσκευών μέσω smartphone . . . . . . . . . . 161

8.1.4 Επικοινωνία δεδομένων μεταξύ smartphone και συσκευών . . . . . . . . 162

8.2 Κοινές μέθοδοι τοπικής ανακάλυψης. . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Εκπομπή . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

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

8.2.3 Σύγκριση μεταξύ Broadcast και Multicast. . . . . . . . . . . . . . 176

8.2.4 Πρωτόκολλο Multicast Application Protocol mDNS for Local Discovery . . . . . . . . 176

8.3 Κοινά Πρωτόκολλα Επικοινωνίας για Τοπικά Δεδομένα . . . . . . . . . . . . . . . 179

8.3.1 Πρωτόκολλο Ελέγχου Μετάδοσης (TCP) . . . . . . . . . . . . . . . . . . . 179

8.3.2 Πρωτόκολλο μεταφοράς υπερκειμένου (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Χρήστης ΔtagΠρωτόκολλο ram (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 . . . . . . . . . . . . . . . . . . 217

8.5.1 Δημιουργία ενός διακομιστή τοπικού ελέγχου που βασίζεται σε Wi-Fi . . . . . . . . . . . . . . . 217

8.5.2 Επαλήθευση της λειτουργίας τοπικού ελέγχου με χρήση δέσμης ενεργειών. . . . . . . . . . . 221

8.5.3 Δημιουργία ενός διακομιστή τοπικού ελέγχου που βασίζεται σε Bluetooth . . . . . . . . . . . . 222

8.6 Περίληψη . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Έλεγχος Cloud

225

9.1 Εισαγωγή στο τηλεχειριστήριο . . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Πρωτόκολλα επικοινωνίας δεδομένων Cloud . . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 MQTT Εισαγωγή . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Αρχές MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Μορφή μηνύματος MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Σύγκριση πρωτοκόλλου . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Ρύθμιση του MQTT Broker σε 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 Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Διαμόρφωση προγράμματος-πελάτη MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Εξάσκηση: Τηλεχειρισμός μέσω ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Βασικά στοιχεία του ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Πρωτόκολλο επικοινωνίας κόμβου και υποβάθρου cloud . . . . . . . . . . . 244 9.4.3 Επικοινωνία μεταξύ Client και Cloud Backend . . . . . . . . . . . 249 9.4.4 Ρόλοι χρήστη . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Βασικές Υπηρεσίες . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Εξample . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Εφαρμογή RainMaker και ενσωματώσεις τρίτων . . . . . . . . . . . . . . . 262 9.5 Περίληψη . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Ανάπτυξη εφαρμογών για smartphone

269

10.1 Εισαγωγή στην ανάπτυξη εφαρμογών για smartphone . . . . . . . . . . . . . . . . . . 269

10.1.1 Πάνωview Ανάπτυξης Εφαρμογών Smartphone. . . . . . . . . . . . . . . 270

10.1.2 Δομή του Έργου Android . . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 Δομή του έργου iOS . . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Κύκλος ζωής μιας δραστηριότητας Android . . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 Κύκλος ζωής του iOS ViewΕλεγκτής . . . . . . . . . . . . . . . . . . . . . . 273

10.2 Δημιουργία νέου έργου εφαρμογής Smartphone . . . . . . . . . . . . . . . . . . . . . 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 Εισαγωγή στα API του RainMaker. . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Έναρξη επικοινωνίας μέσω Smartphone . . . . . . . . . . . . . . . . 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 Λήψη αναγνωριστικού κόμβου . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Συσκευές Προμήθειας . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Ανάπτυξη Ελέγχου Συσκευών . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Σύνδεση συσκευών σε λογαριασμούς Cloud . . . . . . . . . . . . . . . . . . . . 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 του Μηχανισμού ΟΤΑ . . . . . . . . . . . . . . . . . . . . . 326

11.2 Διαχείριση έκδοσης υλικολογισμικού . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Σήμανση υλικολογισμικού . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Επαναφορά και κατά της επαναφοράς . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Εξάσκηση: Υπερ-αέρα (ΟΤΑ) Εξample . . . . . . . . . . . . . . . . . . . . . . . 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 Πρample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Πρamples of Flash Encryption και NVS Encryption . . . . . . . . . . . 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 Ενεργοποίηση κρυπτογράφησης Flash και Ασφαλούς εκκίνησης με Μαζικά Εργαλεία Flash. . 397 13.5.3 Ενεργοποίηση κρυπτογράφησης Flash και ασφαλούς εκκίνησης στο Έργο 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 . . . . . . . . . . . . . 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-insights . . . . . . 409

15.2.2 Τρέξιμο Π.χample στο έργο esp-insights . . . . . . . . . . . . . . . 411

15.2.3 Αναφορά Πληροφοριών Συνοδευτικής Έκθεσης. . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Προσαρμογή αρχείων καταγραφής ενδιαφέροντος . . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Αναφορά Αιτίας επανεκκίνησης . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Αναφορά προσαρμοσμένων μετρήσεων . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Εξάσκηση: Χρήση ESP Insights στο Έργο Smart Light . . . . . . . . . . . . . . . 416

15.4 Περίληψη . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Εισαγωγή
Το ESP32-C3 είναι ένα SoC μικροελεγκτή ενός πυρήνα Wi-Fi και Bluetooth 5 (LE), που βασίζεται στην αρχιτεκτονική RISC-V ανοιχτού κώδικα. Επιτυγχάνει τη σωστή ισορροπία ισχύος, δυνατότητες I/O και ασφάλεια, προσφέροντας έτσι τη βέλτιστη οικονομικά αποδοτική λύση για συνδεδεμένες συσκευές. Για να δείξετε διάφορες εφαρμογές της οικογένειας ESP32-C3, αυτό το βιβλίο της Espressif θα σας ταξιδέψει σε ένα ενδιαφέρον ταξίδι στο AIoT, ξεκινώντας από τα βασικά της ανάπτυξης έργων IoT και της ρύθμισης περιβάλλοντος μέχρι την πρακτική εξάσκησηamples. Τα πρώτα τέσσερα κεφάλαια μιλούν για το IoT, το ESP RainMaker και το ESP-IDF. Κεφάλαια 5 και 6 σύντομη για το σχεδιασμό υλικού και την ανάπτυξη προγραμμάτων οδήγησης. Καθώς προχωράτε, θα ανακαλύψετε πώς να διαμορφώσετε το έργο σας μέσω δικτύων Wi-Fi και εφαρμογών για κινητά. Τέλος, θα μάθετε να βελτιστοποιείτε το έργο σας και να το βάζετε σε μαζική παραγωγή.
Εάν είστε μηχανικός σε συναφείς τομείς, αρχιτέκτονας λογισμικού, δάσκαλος, φοιτητής ή οποιοσδήποτε ενδιαφέρεται για το IoT, αυτό το βιβλίο είναι για εσάς.
Μπορείτε να κατεβάσετε τον κωδικό π.χampΧρησιμοποιήθηκε σε αυτό το βιβλίο από τον ιστότοπο της Espressif στο GitHub. Για πιο πρόσφατες πληροφορίες σχετικά με την ανάπτυξη του IoT, ακολουθήστε τον επίσημο λογαριασμό μας.

Πρόλογος
Ένας κόσμος που ενημερώνει
Καθοδηγώντας το κύμα του Διαδικτύου, το Internet of Things (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, οι σωρευτικές αποστολές των chipset IoT της Espressif έχουν ξεπεράσει τα 800 εκατομμύρια, οδηγώντας στην αγορά Wi-Fi MCU και τροφοδοτώντας έναν τεράστιο αριθμό συνδεδεμένων συσκευών παγκοσμίως. Η αναζήτηση της αριστείας κάνει κάθε προϊόν Espressif μεγάλη επιτυχία για το υψηλό επίπεδο ενσωμάτωσής του και την αποδοτικότητα κόστους. Η κυκλοφορία του ESP32-C3 σηματοδοτεί ένα σημαντικό ορόσημο της αυτο-αναπτυγμένης τεχνολογίας της Espressif. Είναι ένα MCU ενός πυρήνα, 32-bit, βασισμένο σε RISC-V με 400 KB SRAM, το οποίο μπορεί να τρέξει στα 160 MHz. Διαθέτει ενσωματωμένο Wi-Fi 2.4 GHz και Bluetooth 5 (LE) με υποστήριξη μεγάλης εμβέλειας. Επιτυγχάνει εξαιρετική ισορροπία ισχύος, δυνατοτήτων εισόδου/εξόδου και ασφάλειας, προσφέροντας έτσι τη βέλτιστη οικονομικά αποδοτική λύση για συνδεδεμένες συσκευές. Βασισμένο σε ένα τόσο ισχυρό ESP32-C3, αυτό το βιβλίο προορίζεται να βοηθήσει τους αναγνώστες να κατανοήσουν τις γνώσεις που σχετίζονται με το IoT με λεπτομερή απεικόνιση και πρακτική εξ.amples.
Γιατί γράψαμε αυτό το βιβλίο;
Η Espressif Systems είναι κάτι περισσότερο από μια εταιρεία ημιαγωγών. Είναι επίσης μια εταιρεία πλατφόρμας IoT, η οποία προσπαθεί πάντα για ανακαλύψεις και καινοτομίες στον τομέα της τεχνολογίας. Ταυτόχρονα, η Espressif έχει ανοιχτού κώδικα και μοιράζεται το λειτουργικό της σύστημα και το πλαίσιο λογισμικού που έχει αναπτύξει μόνος του με την κοινότητα, διαμορφώνοντας ένα μοναδικό οικοσύστημα. Μηχανικοί, κατασκευαστές και λάτρεις της τεχνολογίας αναπτύσσουν ενεργά νέες εφαρμογές λογισμικού που βασίζονται στα προϊόντα της Espressif, επικοινωνούν ελεύθερα και μοιράζονται την εμπειρία τους. Μπορείτε να βλέπετε συνεχώς συναρπαστικές ιδέες προγραμματιστών σε διάφορες πλατφόρμες, όπως το YouTube και το GitHub. Η δημοτικότητα των προϊόντων της Espressif έχει τονώσει έναν αυξανόμενο αριθμό συγγραφέων που έχουν δημιουργήσει πάνω από 100 βιβλία βασισμένα σε chipsets Espressif, σε περισσότερες από δέκα γλώσσες, όπως αγγλικά, κινέζικα, γερμανικά, γαλλικά και ιαπωνικά.

Είναι η υποστήριξη και η εμπιστοσύνη των κοινοτικών εταίρων που ενθαρρύνει τη συνεχή καινοτομία της Espressif. «Προσπαθούμε να κάνουμε τα τσιπ, τα λειτουργικά συστήματα, τα πλαίσια, τις λύσεις, το Cloud, τις επιχειρηματικές πρακτικές, τα εργαλεία, την τεκμηρίωση, τα γραπτά, τις ιδέες κ.λπ., ολοένα και πιο σχετικά με τις απαντήσεις που χρειάζονται οι άνθρωποι στα πιο πιεστικά προβλήματα της σύγχρονης ζωής. Αυτή είναι η υψηλότερη φιλοδοξία και ηθική πυξίδα της Espressif». είπε ο κ. Teo Swee Ann, Ιδρυτής και Διευθύνων Σύμβουλος της Espressif.
Το Espressif εκτιμά την ανάγνωση και τις ιδέες. Καθώς η συνεχής αναβάθμιση της τεχνολογίας IoT θέτει υψηλότερες απαιτήσεις στους μηχανικούς, πώς μπορούμε να βοηθήσουμε περισσότερους ανθρώπους να κατακτήσουν γρήγορα τα τσιπ IoT, τα λειτουργικά συστήματα, τα πλαίσια λογισμικού, τα σχήματα εφαρμογών και τα προϊόντα υπηρεσιών cloud; Όπως λέει και η παροιμία, είναι καλύτερο να διδάξεις έναν άνθρωπο πώς να ψαρεύει παρά να του δώσεις ψάρι. Σε μια συνεδρία καταιγισμού ιδεών, σκεφτήκαμε ότι μπορούσαμε να γράψουμε ένα βιβλίο για να διευθετήσουμε συστηματικά τις βασικές γνώσεις της ανάπτυξης του IoT. Το πετύχαμε, συγκεντρώσαμε γρήγορα μια ομάδα ανώτερων μηχανικών και συνδυάσαμε την εμπειρία της τεχνικής ομάδας στον ενσωματωμένο προγραμματισμό, την ανάπτυξη υλικού και λογισμικού IoT, συμβάλλοντας όλα στη δημοσίευση αυτού του βιβλίου. Στη διαδικασία της συγγραφής, προσπαθήσαμε να είμαστε αντικειμενικοί και δίκαιοι, απογυμνωμένοι από το κουκούλι και χρησιμοποιούμε συνοπτικές εκφράσεις για να πούμε την πολυπλοκότητα και τη γοητεία του Διαδικτύου των Πραγμάτων. Συνοψίσαμε προσεκτικά τις κοινές ερωτήσεις, αναφερθήκαμε στα σχόλια και τις προτάσεις της κοινότητας, προκειμένου να απαντήσουμε με σαφήνεια στις ερωτήσεις που προέκυψαν κατά τη διαδικασία ανάπτυξης και να παρέχουμε πρακτικές οδηγίες ανάπτυξης IoT για τους σχετικούς τεχνικούς και τους υπεύθυνους λήψης αποφάσεων.
Δομή βιβλίου
Αυτό το βιβλίο έχει μια προοπτική με επίκεντρο τον μηχανικό και εκθέτει την απαραίτητη γνώση για την ανάπτυξη έργων IoT βήμα προς βήμα. Αποτελείται από τέσσερα μέρη, ως εξής:
· Προετοιμασία (Κεφάλαιο 1): Αυτό το μέρος εισάγει την αρχιτεκτονική του IoT, το τυπικό πλαίσιο έργου IoT, την πλατφόρμα cloud ESP RainMakerr και το περιβάλλον ανάπτυξης ESP-IDF, έτσι ώστε να τεθούν στέρεες βάσεις για την ανάπτυξη έργων IoT.
· Ανάπτυξη υλικού και προγραμμάτων οδήγησης (Κεφάλαιο 5): Βασισμένο στο chipset ESP6-C32, αυτό το μέρος επεξεργάζεται το ελάχιστο σύστημα υλικού και την ανάπτυξη προγραμμάτων οδήγησης και εφαρμόζει τον έλεγχο της μείωσης της φωτεινότητας, της ταξινόμησης χρωμάτων και της ασύρματης επικοινωνίας.
· Ασύρματη επικοινωνία και έλεγχος (Κεφάλαιο 7): Αυτό το μέρος εξηγεί το έξυπνο σχήμα διαμόρφωσης Wi-Fi που βασίζεται σε τσιπ ESP11-C32, πρωτόκολλα τοπικού ελέγχου και ελέγχου cloud και τοπικό και απομακρυσμένο έλεγχο συσκευών. Παρέχει επίσης σχήματα για την ανάπτυξη εφαρμογών smartphone, αναβάθμιση υλικολογισμικού και διαχείριση εκδόσεων.
· Βελτιστοποίηση και μαζική παραγωγή (Κεφάλαιο 12-15): Αυτό το μέρος προορίζεται για προηγμένες εφαρμογές IoT, εστιάζοντας στη βελτιστοποίηση προϊόντων στη διαχείριση ενέργειας, στη βελτιστοποίηση χαμηλής κατανάλωσης ενέργειας και στη βελτιωμένη ασφάλεια. Εισάγει επίσης την καύση υλικολογισμικού και τη δοκιμή στη μαζική παραγωγή και πώς να διαγνώσετε την κατάσταση λειτουργίας και τα αρχεία καταγραφής του υλικολογισμικού της συσκευής μέσω της πλατφόρμας απομακρυσμένης παρακολούθησης ESP Insights.

Σχετικά με τον Πηγαίο Κώδικα
Οι αναγνώστες μπορούν να τρέξουν το πρώηνample προγράμματα σε αυτό το βιβλίο, είτε εισάγοντας τον κώδικα με μη αυτόματο τρόπο είτε χρησιμοποιώντας τον πηγαίο κώδικα που συνοδεύει το βιβλίο. Δίνουμε έμφαση στον συνδυασμό θεωρίας και πράξης και, ως εκ τούτου, ορίζουμε μια ενότητα Εξάσκησης που βασίζεται στο έργο Smart Light σχεδόν σε κάθε κεφάλαιο. Όλοι οι κωδικοί είναι ανοιχτού κώδικα. Οι αναγνώστες είναι ευπρόσδεκτοι να κατεβάσουν τον πηγαίο κώδικα και να τον συζητήσουν στις ενότητες που σχετίζονται με αυτό το βιβλίο στο GitHub και στο επίσημο φόρουμ μας esp32.com. Ο κώδικας ανοιχτού κώδικα αυτού του βιβλίου υπόκειται στους όρους της Άδειας χρήσης Apache 2.0.
Σημείωση του συγγραφέα
Αυτό το βιβλίο παράγεται επίσημα από την Espressif Systems και είναι γραμμένο από ανώτερους μηχανικούς της εταιρείας. Είναι κατάλληλο για διευθυντές και προσωπικό Ε&Α σε βιομηχανίες που σχετίζονται με το IoT, καθηγητές και φοιτητές συναφών ειδικοτήτων και λάτρεις στον τομέα του Διαδικτύου των Πραγμάτων. Ελπίζουμε ότι αυτό το βιβλίο μπορεί να χρησιμεύσει ως ένα εγχειρίδιο εργασίας, μια αναφορά και ένα βιβλίο δίπλα στο κρεβάτι, για να είναι σαν ένας καλός δάσκαλος και φίλος.
Κατά τη σύνταξη αυτού του βιβλίου, αναφερθήκαμε σε ορισμένα σχετικά ερευνητικά αποτελέσματα ειδικών, μελετητών και τεχνικών στο εσωτερικό και στο εξωτερικό και κάναμε ό,τι μπορούσαμε για να τα παραθέσουμε σύμφωνα με ακαδημαϊκούς κανόνες. Ωστόσο, είναι αναπόφευκτο να υπάρξουν κάποιες παραλείψεις, επομένως εδώ θα θέλαμε να εκφράσουμε τον βαθύ σεβασμό και την ευγνωμοσύνη μας σε όλους τους σχετικούς συγγραφείς. Επιπλέον, παραθέσαμε πληροφορίες από το Διαδίκτυο, επομένως θα θέλαμε να ευχαριστήσουμε τους αρχικούς συγγραφείς και εκδότες και να ζητήσουμε συγγνώμη που δεν μπορούμε να αναφέρουμε την πηγή κάθε πληροφορίας.
Προκειμένου να δημιουργήσουμε ένα βιβλίο υψηλής ποιότητας, έχουμε οργανώσει γύρους εσωτερικών συζητήσεων και μάθαμε από τις προτάσεις και τα σχόλια των δοκιμαστικών αναγνωστών και των εκδοτών. Εδώ, θα θέλαμε να σας ευχαριστήσουμε και πάλι για τη βοήθειά σας που όλοι συνέβαλαν σε αυτή την επιτυχημένη εργασία.
Τελευταίο, αλλά το πιο σημαντικό, ευχαριστώ όλους στην 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. Τα αρχεία καταγραφής και τα μπλοκ κωδικών θα παρουσιάζονται σε γαλάζια πλαίσια.
Example:
Δεύτερον, χρησιμοποιήστε το esp-idf/components/nvs flash/nvs partition generator/nvs partition 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, ο Bill Gates έφερε για πρώτη φορά την ιδέα του IoT στο βιβλίο του The Road Ahead. Με απλά λόγια, το 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, Επικοινωνία κοντινού πεδίου (NFC) και Αναγνώριση ραδιοσυχνοτήτων (RFID). Η ασύρματη επικοινωνία μεγάλης εμβέλειας περιλαμβάνει Enhanced Machine Type Communication (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, κ.λπ.
Μετάδοση μέσω Διαδικτύου Διαφορετικές μέθοδοι πρόσβασης στο Διαδίκτυο οδηγούν σε αντίστοιχο φυσικό σύνδεσμο μετάδοσης δεδομένων. Το επόμενο πράγμα είναι να αποφασίσετε ποιο πρωτόκολλο επικοινωνίας θα χρησιμοποιήσετε για τη μετάδοση των δεδομένων. Σε σύγκριση με τα τερματικά Διαδικτύου, τα περισσότερα τερματικά IoT έχουν αυτήν τη στιγμή λιγότερα
4 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

διαθέσιμοι πόροι, όπως απόδοση επεξεργασίας, χωρητικότητα αποθήκευσης, ρυθμός δικτύου κ.λπ., επομένως είναι απαραίτητο να επιλέξετε ένα πρωτόκολλο επικοινωνίας που καταλαμβάνει λιγότερους πόρους σε εφαρμογές IoT. Υπάρχουν δύο πρωτόκολλα επικοινωνίας που χρησιμοποιούνται ευρέως σήμερα: Μεταφορά τηλεμετρίας σε ουρά μηνυμάτων (MQTT) και Πρωτόκολλο περιορισμένης εφαρμογής (CoAP).
Επίπεδο πλατφόρμας Το επίπεδο πλατφόρμας αναφέρεται κυρίως σε πλατφόρμες cloud IoT. Όταν όλα τα τερματικά IoT είναι δικτυωμένα, τα δεδομένα τους πρέπει να συγκεντρωθούν σε μια πλατφόρμα cloud IoT για να υπολογιστούν και να αποθηκευτούν. Το επίπεδο πλατφόρμας υποστηρίζει κυρίως εφαρμογές IoT για τη διευκόλυνση της πρόσβασης και διαχείρισης μαζικών συσκευών. Συνδέει τερματικά IoT με την πλατφόρμα cloud, συλλέγει δεδομένα τερματικών και εκδίδει εντολές σε τερματικά, έτσι ώστε να εφαρμοστεί ο τηλεχειρισμός. Ως ενδιάμεση υπηρεσία για την ανάθεση εξοπλισμού σε βιομηχανικές εφαρμογές, το επίπεδο πλατφόρμας διαδραματίζει συνδετικό ρόλο σε ολόκληρη την αρχιτεκτονική του IoT, φέρνοντας αφηρημένη επιχειρηματική λογική και τυποποιημένο μοντέλο βασικών δεδομένων, το οποίο μπορεί όχι μόνο να πραγματοποιήσει γρήγορη πρόσβαση στις συσκευές, αλλά και να παρέχει ισχυρές αρθρωτές δυνατότητες για την κάλυψη διαφόρων αναγκών σε σενάρια εφαρμογών βιομηχανίας. Το επίπεδο πλατφόρμας περιλαμβάνει κυρίως λειτουργικές ενότητες όπως πρόσβαση συσκευών, διαχείριση συσκευών, διαχείριση ασφάλειας, επικοινωνία μηνυμάτων, παρακολούθηση λειτουργίας και συντήρηση και εφαρμογές δεδομένων.
· Πρόσβαση σε συσκευές, πραγματοποίηση της σύνδεσης και της επικοινωνίας μεταξύ τερματικών και πλατφορμών cloud IoT.
· Διαχείριση συσκευών, συμπεριλαμβανομένων λειτουργιών όπως η δημιουργία συσκευών, η συντήρηση της συσκευής, η μετατροπή δεδομένων, ο συγχρονισμός δεδομένων και η διανομή συσκευών.
· Διαχείριση ασφάλειας, διασφάλιση της ασφάλειας της μετάδοσης δεδομένων IoT από τη σκοπιά του ελέγχου ταυτότητας ασφαλείας και της ασφάλειας επικοινωνίας.
· Επικοινωνία μηνυμάτων, συμπεριλαμβανομένων τριών κατευθύνσεων μετάδοσης, δηλαδή, το τερματικό στέλνει δεδομένα στην πλατφόρμα cloud IoT, η πλατφόρμα cloud IoT στέλνει δεδομένα στην πλευρά του διακομιστή ή σε άλλες πλατφόρμες cloud IoT και η πλευρά του διακομιστή ελέγχει εξ αποστάσεως συσκευές IoT.
· Παρακολούθηση O&M, που περιλαμβάνει παρακολούθηση και διάγνωση, αναβάθμιση υλικολογισμικού, online εντοπισμό σφαλμάτων, υπηρεσίες καταγραφής κ.λπ.
· Εφαρμογές δεδομένων, που περιλαμβάνουν αποθήκευση, ανάλυση και εφαρμογή δεδομένων.
Επίπεδο Εφαρμογής Το επίπεδο εφαρμογής χρησιμοποιεί τα δεδομένα από το επίπεδο της πλατφόρμας για τη διαχείριση της εφαρμογής, φιλτράροντας και επεξεργάζοντάς τα με εργαλεία όπως βάσεις δεδομένων και λογισμικό ανάλυσης. Τα δεδομένα που προκύπτουν μπορούν να χρησιμοποιηθούν για εφαρμογές IoT πραγματικού κόσμου, όπως έξυπνη υγειονομική περίθαλψη, έξυπνη γεωργία, έξυπνα σπίτια και έξυπνες πόλεις.
Φυσικά, η αρχιτεκτονική του IoT μπορεί να υποδιαιρεθεί σε περισσότερα επίπεδα, αλλά ανεξάρτητα από το πόσα επίπεδα αποτελείται, η βασική αρχή παραμένει ουσιαστικά η ίδια. Μάθηση
Κεφάλαιο 1. Εισαγωγή στο IoT 5

σχετικά με την αρχιτεκτονική του IoT βοηθά στην εμβάθυνση της κατανόησής μας για τις τεχνολογίες IoT και στη δημιουργία πλήρως λειτουργικών έργων IoT.
1.2 Εφαρμογή IoT σε Έξυπνα Σπίτια
Το IoT έχει διεισδύσει σε όλα τα κοινωνικά στρώματα και η πιο στενά συνδεδεμένη με εμάς εφαρμογή IoT είναι το έξυπνο σπίτι. Πολλές παραδοσιακές συσκευές είναι πλέον εξοπλισμένες με μία ή περισσότερες συσκευές IoT και πολλά νεόκτιστα σπίτια έχουν σχεδιαστεί με τεχνολογίες IoT από την αρχή. Το σχήμα 1.1 δείχνει μερικές κοινές έξυπνες οικιακές συσκευές.
Εικόνα 1.1. Κοινές έξυπνες οικιακές συσκευές Η ανάπτυξη του έξυπνου σπιτιού μπορεί απλά να χωριστεί σε έξυπνα προϊόνταtagε, διασύνδεση σκηνής stage και ευφυής stagε, όπως φαίνεται στο σχήμα 1.2.
Εικόνα 1.2. Ανάπτυξη stage of smart home 6 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Το πρώτο stage αφορά έξυπνα προϊόντα. Διαφορετικά από τα παραδοσιακά σπίτια, στα έξυπνα σπίτια, οι συσκευές IoT λαμβάνουν σήματα με αισθητήρες και δικτυώνονται μέσω τεχνολογιών ασύρματης επικοινωνίας όπως Wi-Fi, Bluetooth LE και ZigBee. Οι χρήστες μπορούν να ελέγχουν έξυπνα προϊόντα με διάφορους τρόπους, όπως εφαρμογές για smartphone, βοηθούς φωνής, έξυπνο έλεγχο ηχείων κ.λπ. Το δεύτερο stagΤο ε εστιάζει στη διασύνδεση σκηνής. Σε αυτό το stagε, οι προγραμματιστές δεν εξετάζουν πλέον το ενδεχόμενο να ελέγξουν ένα έξυπνο προϊόν, αλλά να διασυνδέσουν δύο ή περισσότερα έξυπνα προϊόντα, να αυτοματοποιήσουν σε κάποιο βαθμό και τελικά να διαμορφώσουν μια προσαρμοσμένη λειτουργία σκηνής. Για π.χampΈτσι, όταν ο χρήστης πατήσει οποιοδήποτε κουμπί λειτουργίας σκηνής, τα φώτα, οι κουρτίνες και τα κλιματιστικά θα προσαρμοστούν αυτόματα στις προεπιλογές. Φυσικά, υπάρχει η προϋπόθεση ότι η λογική σύνδεσης έχει ρυθμιστεί εύκολα, συμπεριλαμβανομένων των συνθηκών ενεργοποίησης και των ενεργειών εκτέλεσης. Φανταστείτε ότι η λειτουργία θέρμανσης του κλιματισμού ενεργοποιείται όταν η εσωτερική θερμοκρασία πέσει κάτω από τους 10°C. ότι στις 7 η ώρα το πρωί, ακούγεται μουσική για να ξυπνήσει ο χρήστης, ανοίγουν οι έξυπνες κουρτίνες και η κουζίνα ρυζιού ή η τοστιέρα ψωμιού ξεκινά από μια έξυπνη πρίζα. καθώς ο χρήστης σηκώνεται και τελειώνει το πλύσιμο, το πρωινό σερβίρεται ήδη, ώστε να μην καθυστερήσει να πάει στη δουλειά του. Πόσο βολική έχει γίνει η ζωή μας! Το τρίτο stage πηγαίνει στη νοημοσύνη stagμι. Καθώς γίνεται πρόσβαση σε περισσότερες έξυπνες οικιακές συσκευές, τόσο θα γίνονται και οι τύποι δεδομένων που δημιουργούνται. Με τη βοήθεια του cloud computing, των μεγάλων δεδομένων και της τεχνητής νοημοσύνης, είναι σαν να έχει φυτευτεί ένας «εξυπνότερος εγκέφαλος» σε έξυπνα σπίτια, τα οποία δεν απαιτούν πλέον συχνές εντολές από τον χρήστη. Συλλέγουν δεδομένα από προηγούμενες αλληλεπιδράσεις και μαθαίνουν τα πρότυπα συμπεριφοράς και τις προτιμήσεις του χρήστη, έτσι ώστε να αυτοματοποιούν τις δραστηριότητες, συμπεριλαμβανομένης της παροχής συστάσεων για τη λήψη αποφάσεων. Επί του παρόντος, τα περισσότερα έξυπνα σπίτια βρίσκονται στη σκηνή διασύνδεσης stagμι. Καθώς ο ρυθμός διείσδυσης και η ευφυΐα των έξυπνων προϊόντων αυξάνονται, τα εμπόδια μεταξύ των πρωτοκόλλων επικοινωνίας καταργούνται. Στο μέλλον, τα έξυπνα σπίτια είναι βέβαιο ότι θα γίνουν πραγματικά «έξυπνα», όπως το σύστημα AI Jarvis in Iron Man, το οποίο όχι μόνο μπορεί να βοηθήσει τον χρήστη να ελέγξει διάφορες συσκευές, να χειριστεί καθημερινές υποθέσεις, αλλά και να έχει σούπερ υπολογιστική ισχύ και ικανότητα σκέψης. Στο ευφυές stagε, οι άνθρωποι θα λάβουν καλύτερες υπηρεσίες τόσο σε ποσότητα όσο και σε ποιότητα.
Κεφάλαιο 1. Εισαγωγή στο IoT 7

8 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Εισαγωγή κεφαλαίου και πρακτική εξάσκηση 2 έργων IoT
Στο Κεφάλαιο 1, εισαγάγαμε την αρχιτεκτονική του IoT και τους ρόλους και τις αλληλεπιδράσεις του επιπέδου αντίληψης και ελέγχου, του επιπέδου δικτύου, του επιπέδου πλατφόρμας και του επιπέδου εφαρμογής, καθώς και της ανάπτυξης του έξυπνου σπιτιού. Ωστόσο, όπως και όταν μαθαίνουμε να ζωγραφίζουμε, η γνώση της θεωρητικής γνώσης δεν είναι καθόλου αρκετή. Πρέπει να "λερώσουμε τα χέρια μας" για να κάνουμε πράξη τα έργα IoT προκειμένου να κατακτήσουμε πραγματικά την τεχνολογία. Επιπλέον, όταν ένα έργο περνά στη μαζική παραγωγή stagε, είναι απαραίτητο να ληφθούν υπόψη περισσότεροι παράγοντες όπως η σύνδεση δικτύου, η διαμόρφωση, η αλληλεπίδραση της πλατφόρμας cloud IoT, η διαχείριση και ενημερώσεις υλικολογισμικού, η διαχείριση μαζικής παραγωγής και η διαμόρφωση ασφαλείας. Λοιπόν, τι πρέπει να προσέχουμε κατά την ανάπτυξη ενός ολοκληρωμένου έργου IoT; Στο Κεφάλαιο 1, αναφέραμε ότι το έξυπνο σπίτι είναι ένα από τα πιο κοινά σενάρια εφαρμογών IoT και τα έξυπνα φώτα είναι μια από τις πιο βασικές και πρακτικές συσκευές που μπορούν να χρησιμοποιηθούν σε σπίτια, ξενοδοχεία, γυμναστήρια, νοσοκομεία κ.λπ. Σε αυτό το βιβλίο, θα πάρουμε την κατασκευή ενός έργου έξυπνου φωτός ως σημείο εκκίνησης, θα εξηγήσουμε τα στοιχεία και τα χαρακτηριστικά του και θα παρέχουμε καθοδήγηση για την ανάπτυξη του έργου. Ελπίζουμε ότι μπορείτε να αντλήσετε συμπεράσματα από αυτήν την περίπτωση για να δημιουργήσετε περισσότερες εφαρμογές IoT.
2.1 Εισαγωγή στα τυπικά έργα IoT
Όσον αφορά την ανάπτυξη, οι βασικές λειτουργικές ενότητες των έργων IoT μπορούν να ταξινομηθούν σε ανάπτυξη λογισμικού και υλικού συσκευών IoT, ανάπτυξη εφαρμογών πελάτη και ανάπτυξη πλατφόρμας cloud IoT. Είναι σημαντικό να διευκρινιστούν οι βασικές λειτουργικές μονάδες, οι οποίες θα περιγραφούν περαιτέρω σε αυτήν την ενότητα.
2.1.1 Βασικές ενότητες για κοινές συσκευές IoT
Η ανάπτυξη λογισμικού και υλικού συσκευών IoT περιλαμβάνει τις ακόλουθες βασικές ενότητες: Συλλογή δεδομένων
Ως το κατώτερο επίπεδο της αρχιτεκτονικής του IoT, οι συσκευές IoT του επιπέδου αντίληψης και ελέγχου συνδέουν αισθητήρες και συσκευές μέσω των τσιπ και των περιφερειακών τους για να επιτύχουν τη συλλογή δεδομένων και τον έλεγχο λειτουργίας.
9

Σύνδεση λογαριασμού και αρχική διαμόρφωση Για τις περισσότερες συσκευές IoT, η δέσμευση λογαριασμού και η αρχική διαμόρφωση ολοκληρώνονται σε μία λειτουργική διαδικασία, π.χ.ample, συνδέοντας συσκευές με χρήστες διαμορφώνοντας το δίκτυο Wi-Fi.
Αλληλεπίδραση με πλατφόρμες cloud IoT Για την παρακολούθηση και τον έλεγχο συσκευών IoT, είναι επίσης απαραίτητο να τις συνδέσετε με πλατφόρμες cloud IoT, προκειμένου να δίνετε εντολές και να αναφέρετε την κατάσταση μέσω αλληλεπίδρασης μεταξύ τους.
Έλεγχος συσκευής Όταν συνδέονται με πλατφόρμες cloud IoT, οι συσκευές μπορούν να επικοινωνούν με το cloud και να καταχωρούνται, να συνδέονται ή να ελέγχονται. Οι χρήστες μπορούν να ρωτήσουν την κατάσταση του προϊόντος και να πραγματοποιήσουν άλλες λειτουργίες στην εφαρμογή smartphone μέσω πλατφορμών cloud IoT ή τοπικών πρωτοκόλλων επικοινωνίας.
Οι συσκευές IoT για αναβάθμιση υλικολογισμικού μπορούν επίσης να επιτύχουν αναβάθμιση υλικολογισμικού με βάση τις ανάγκες των κατασκευαστών. Με τη λήψη εντολών που αποστέλλονται από το cloud, θα πραγματοποιηθεί η αναβάθμιση υλικολογισμικού και η διαχείριση της έκδοσης. Με αυτήν τη δυνατότητα αναβάθμισης υλικολογισμικού, μπορείτε να βελτιώνετε συνεχώς τις λειτουργίες των συσκευών IoT, να διορθώνετε ελαττώματα και να βελτιώνετε την εμπειρία χρήστη.
2.1.2 Βασικές Ενότητες Εφαρμογών Πελατών
Οι εφαρμογές πελάτη (π.χ. εφαρμογές smartphone) περιλαμβάνουν κυρίως τις ακόλουθες βασικές ενότητες:
Σύστημα λογαριασμού και εξουσιοδότηση Υποστηρίζει εξουσιοδότηση λογαριασμού και συσκευής.
Έλεγχος συσκευής Οι εφαρμογές smartphone είναι συνήθως εξοπλισμένες με λειτουργίες ελέγχου. Οι χρήστες μπορούν εύκολα να συνδεθούν με συσκευές IoT και να τις διαχειριστούν ανά πάσα στιγμή, οπουδήποτε μέσω εφαρμογών smartphone. Σε ένα πραγματικό έξυπνο σπίτι, οι συσκευές ελέγχονται κυρίως μέσω εφαρμογών smartphone, οι οποίες όχι μόνο επιτρέπουν την έξυπνη διαχείριση των συσκευών, αλλά εξοικονομούν και το κόστος του ανθρώπινου δυναμικού. Επομένως, ο έλεγχος συσκευών είναι απαραίτητος για εφαρμογές πελατών, όπως έλεγχος χαρακτηριστικών λειτουργιών συσκευής, έλεγχος σκηνής, προγραμματισμός, τηλεχειριστήριο, σύνδεση συσκευών κ.λπ. , κ.λπ., για να κάνουν τη ζωή στο σπίτι πιο άνετη και βολική. Μπορούν να χρονομετρήσουν τον κλιματισμό, να τον απενεργοποιήσουν από απόσταση, να ανάψουν αυτόματα το φως του διαδρόμου μόλις ξεκλειδώσει η πόρτα ή να μεταβούν στη λειτουργία «θέατρο» με ένα μόνο κουμπί.
Οι εφαρμογές πελάτη ειδοποιήσεων ενημερώνουν την κατάσταση των συσκευών IoT σε πραγματικό χρόνο και στέλνουν ειδοποιήσεις όταν οι συσκευές δεν είναι φυσιολογικές.
10 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Εξυπηρέτηση πελατών μετά την πώληση Οι εφαρμογές smartphone μπορούν να παρέχουν υπηρεσίες μετά την πώληση για προϊόντα, για την έγκαιρη επίλυση προβλημάτων που σχετίζονται με αστοχίες συσκευών IoT και τεχνικές λειτουργίες.
Προτεινόμενες λειτουργίες Για την κάλυψη των αναγκών διαφορετικών χρηστών, ενδέχεται να προστεθούν άλλες λειτουργίες, όπως Shake, NFC, GPS κ.λπ. εντολές που πρέπει να εκτελεστούν για συγκεκριμένη συσκευή ή σκηνή με ανακίνηση.
2.1.3 Εισαγωγή στις κοινές πλατφόρμες IoT Cloud
Η πλατφόρμα cloud IoT είναι μια πλατφόρμα all-in-one που ενσωματώνει λειτουργίες όπως διαχείριση συσκευών, επικοινωνία ασφάλειας δεδομένων και διαχείριση ειδοποιήσεων. Ανάλογα με την ομάδα-στόχο και την προσβασιμότητά τους, οι πλατφόρμες cloud IoT μπορούν να χωριστούν σε δημόσιες πλατφόρμες cloud IoT (εφεξής «δημόσιο σύννεφο») και ιδιωτικές πλατφόρμες cloud IoT (εφεξής «ιδιωτικό νέφος»).
Το δημόσιο σύννεφο συνήθως υποδεικνύει κοινόχρηστες πλατφόρμες cloud IoT για επιχειρήσεις ή ιδιώτες, που λειτουργούν και συντηρούνται από παρόχους πλατφόρμας και μοιράζονται μέσω του Διαδικτύου. Μπορεί να είναι δωρεάν ή χαμηλού κόστους και παρέχει υπηρεσίες σε όλο το ανοιχτό δημόσιο δίκτυο, όπως Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT κ.λπ. Ως πλατφόρμα υποστήριξης, το δημόσιο cloud μπορεί να ενσωματώσει παρόχους υπηρεσιών ανάντη και μεταγενέστεροι τελικοί χρήστες για να δημιουργήσουν μια νέα αλυσίδα αξίας και ένα νέο οικοσύστημα.
Το ιδιωτικό cloud έχει δημιουργηθεί μόνο για εταιρική χρήση, εξασφαλίζοντας έτσι τον καλύτερο έλεγχο των δεδομένων, της ασφάλειας και της ποιότητας των υπηρεσιών. Οι υπηρεσίες και η υποδομή του διατηρούνται ξεχωριστά από τις επιχειρήσεις, ενώ το υποστηρικτικό υλικό και λογισμικό είναι επίσης αφιερωμένα σε συγκεκριμένους χρήστες. Οι επιχειρήσεις μπορούν να προσαρμόσουν τις υπηρεσίες cloud για να καλύψουν τις ανάγκες της επιχείρησής τους. Προς το παρόν, ορισμένοι κατασκευαστές έξυπνων κατοικιών έχουν ήδη αποκτήσει ιδιωτικές πλατφόρμες cloud IoT και έχουν αναπτύξει εφαρμογές έξυπνων κατοικιών που βασίζονται σε αυτές.
Το δημόσιο σύννεφο και το ιδιωτικό σύννεφο έχουν το δικό τους πλεονέκτημαtages, το οποίο θα εξηγηθεί αργότερα.
Για να επιτευχθεί συνδεσιμότητα επικοινωνίας, είναι απαραίτητο να ολοκληρωθεί τουλάχιστον η ενσωματωμένη ανάπτυξη στην πλευρά της συσκευής, μαζί με διακομιστές επιχειρήσεων, πλατφόρμες cloud IoT και εφαρμογές smartphone. Αντιμετωπίζοντας ένα τόσο τεράστιο έργο, το δημόσιο cloud παρέχει συνήθως κιτ ανάπτυξης λογισμικού για εφαρμογές από τη συσκευή και για smartphone για να επιταχύνει τη διαδικασία. Τόσο το δημόσιο όσο και το ιδιωτικό cloud παρέχουν υπηρεσίες όπως πρόσβαση σε συσκευές, διαχείριση συσκευών, σκίαση συσκευών και λειτουργία και συντήρηση.
Πρόσβαση σε συσκευές Οι πλατφόρμες cloud IoT πρέπει να παρέχουν όχι μόνο διεπαφές για πρόσβαση συσκευών χρησιμοποιώντας πρωτόκολλα
Κεφάλαιο 2. Εισαγωγή και Πρακτική των Έργων IoT 11

όπως MQTT, CoAP, HTTPS και WebΥποδοχή, αλλά και η λειτουργία του ελέγχου ταυτότητας ασφαλείας της συσκευής για τον αποκλεισμό πλαστών και παράνομων συσκευών, μειώνοντας ουσιαστικά τον κίνδυνο παραβίασης. Αυτός ο έλεγχος ταυτότητας συνήθως υποστηρίζει διαφορετικούς μηχανισμούς, επομένως όταν οι συσκευές παράγονται μαζικά, είναι απαραίτητο να εκχωρήσετε εκ των προτέρων το πιστοποιητικό της συσκευής σύμφωνα με τον επιλεγμένο μηχανισμό ελέγχου ταυτότητας και να το εγγράψετε στις συσκευές.
Διαχείριση συσκευής Η λειτουργία διαχείρισης συσκευών που παρέχεται από πλατφόρμες cloud IoT μπορεί όχι μόνο να βοηθήσει τους κατασκευαστές να παρακολουθούν την κατάσταση ενεργοποίησης και την online κατάσταση των συσκευών τους σε πραγματικό χρόνο, αλλά επιτρέπει επίσης επιλογές όπως προσθήκη/αφαίρεση συσκευών, ανάκτηση, προσθήκη/διαγραφή ομάδων, αναβάθμιση υλικολογισμικού και διαχείριση έκδοσης.
Οι πλατφόρμες cloud σκιάς συσκευής IoT μπορούν να δημιουργήσουν μια μόνιμη εικονική έκδοση (σκιά συσκευής) για κάθε συσκευή και η κατάσταση της σκιάς συσκευής μπορεί να συγχρονιστεί και να ληφθεί από την εφαρμογή smartphone ή άλλες συσκευές μέσω πρωτοκόλλων μετάδοσης Διαδικτύου. Η σκιά συσκευής αποθηκεύει την πιο πρόσφατη αναφερόμενη κατάσταση και την αναμενόμενη κατάσταση κάθε συσκευής, και ακόμη και αν η συσκευή είναι εκτός σύνδεσης, μπορεί να λάβει την κατάσταση καλώντας API. Το Device shadow παρέχει πάντα ενεργά API, τα οποία διευκολύνουν τη δημιουργία εφαρμογών smartphone που αλληλεπιδρούν με συσκευές.
Λειτουργία και συντήρηση Η λειτουργία O&M περιλαμβάνει τρεις πτυχές: · Επίδειξη στατιστικών πληροφοριών σχετικά με συσκευές IoT και ειδοποιήσεις. · Η διαχείριση αρχείων καταγραφής επιτρέπει την ανάκτηση πληροφοριών σχετικά με τη συμπεριφορά της συσκευής, τη ροή μηνυμάτων πάνω/κάτω και το περιεχόμενο μηνυμάτων. · Ο εντοπισμός σφαλμάτων συσκευής υποστηρίζει την παράδοση εντολών, την ενημέρωση διαμόρφωσης και τον έλεγχο της αλληλεπίδρασης μεταξύ πλατφορμών cloud IoT και μηνυμάτων συσκευής.
2.2 Εξάσκηση: Έργο Smart Light
Μετά τη θεωρητική εισαγωγή σε κάθε κεφάλαιο, θα βρείτε μια ενότητα πρακτικής που σχετίζεται με το έργο Smart Light για να σας βοηθήσει να αποκτήσετε πρακτική εμπειρία. Το έργο βασίζεται στο τσιπ ESP32-C3 της Espressif και την πλατφόρμα ESP RainMaker IoT Cloud και καλύπτει το υλικό ασύρματης μονάδας σε προϊόντα smart light, ενσωματωμένο λογισμικό για έξυπνες συσκευές που βασίζονται στο ESP32C3, εφαρμογές smartphone και αλληλεπίδραση 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, υπεύθυνες για την αλληλεπίδραση με πλατφόρμες cloud IoT και τον έλεγχο του διακόπτη, της φωτεινότητας και της θερμοκρασίας χρώματος του LED lamp περιδέραιο. ii. Εφαρμογές για smartphone (συμπεριλαμβανομένων εφαρμογών για tablet που εκτελούνται σε Android και iOS), υπεύθυνες για τη διαμόρφωση δικτύου προϊόντων smart light, καθώς και για την αναζήτηση και τον έλεγχο της κατάστασής τους.
iii. Μια πλατφόρμα cloud IoT που βασίζεται στο ESP RainMaker. Για απλοποίηση, εξετάζουμε την πλατφόρμα cloud IoT και τον επιχειρηματικό διακομιστή ως σύνολο σε αυτό το βιβλίο. Λεπτομέρειες για το ESP RainMaker θα παρέχονται στο Κεφάλαιο 3.
Η αντιστοιχία μεταξύ της δομής του έργου Smart Light και της αρχιτεκτονικής του IoT φαίνεται στο Σχήμα 2.1.
Εικόνα 2.1. Δομή του έργου έξυπνου φωτός
2.2.2 Λειτουργίες Έργου
Χωρισμένες ανάλογα με τη δομή, οι λειτουργίες κάθε τμήματος είναι οι εξής. Έξυπνες συσκευές φωτός
· Διαμόρφωση δικτύου και σύνδεση. · Έλεγχος LED PWM, όπως διακόπτης, φωτεινότητα, θερμοκρασία χρώματος κ.λπ. · Αυτοματισμός ή έλεγχος σκηνής, π.χ. χρονοδιακόπτης. · Κρυπτογράφηση και ασφαλής εκκίνηση του Flash. · Αναβάθμιση υλικολογισμικού και διαχείριση εκδόσεων.
Κεφάλαιο 2. Εισαγωγή και Πρακτική των Έργων IoT 13

Εφαρμογές smartphone · Διαμόρφωση δικτύου και σύνδεση συσκευών. · Έλεγχος προϊόντος έξυπνου φωτός, όπως διακόπτης, φωτεινότητα, θερμοκρασία χρώματος κ.λπ. · Ρυθμίσεις αυτοματισμού ή σκηνής, π.χ. χρονοδιακόπτης. · Τοπικό/τηλεχειριστήριο. · Εγγραφή χρήστη, σύνδεση κ.λπ.
ESP RainMaker IoT πλατφόρμα cloud · Ενεργοποίηση πρόσβασης συσκευών IoT. · Παροχή API λειτουργίας συσκευής προσβάσιμα σε εφαρμογές smartphone. · Αναβάθμιση υλικολογισμικού και διαχείριση εκδόσεων.
2.2.3 Προετοιμασία υλικού
Εάν ενδιαφέρεστε να εφαρμόσετε το έργο στην πράξη, θα χρειαστείτε επίσης το ακόλουθο υλικό: έξυπνα φώτα, smartphone, δρομολογητές Wi-Fi και έναν υπολογιστή που πληροί τις απαιτήσεις εγκατάστασης του περιβάλλοντος ανάπτυξης. Έξυπνα φώτα
Τα έξυπνα φώτα είναι ένας νέος τύπος λαμπτήρων, του οποίου το σχήμα είναι ίδιο με τον γενικό λαμπτήρα πυρακτώσεως. Ένα έξυπνο φως αποτελείται από ρυθμιζόμενο τροφοδοτικό με ρυθμιζόμενο πυκνωτή, ασύρματη μονάδα (με ενσωματωμένο ESP32-C3), ελεγκτή LED και μήτρα LED RGB. Όταν είναι συνδεδεμένο στο ρεύμα, το 15 V DC voltagΗ έξοδος μετά την υποβάθμιση του πυκνωτή, τη διόρθωση διόδου και τη ρύθμιση παρέχει ενέργεια στον ελεγκτή LED και στη μήτρα LED. Ο ελεγκτής LED μπορεί να στέλνει αυτόματα υψηλά και χαμηλά επίπεδα σε συγκεκριμένα χρονικά διαστήματα, εναλλάσσοντας τη μήτρα LED RGB μεταξύ κλειστού (φώτα αναμμένα) και ανοιχτά (φώτα σβηστά), έτσι ώστε να εκπέμπει κυανό, κίτρινο, πράσινο, μοβ, μπλε, κόκκινο και λευκό φως. Η ασύρματη μονάδα είναι υπεύθυνη για τη σύνδεση στο δρομολογητή Wi-Fi, τη λήψη και την αναφορά της κατάστασης των έξυπνων φώτων και την αποστολή εντολών για τον έλεγχο του LED.
Εικόνα 2.2. Ένα προσομοιωμένο έξυπνο φως
Στην πρώιμη ανάπτυξη stagε, μπορείτε να προσομοιώσετε ένα έξυπνο φως χρησιμοποιώντας την πλακέτα ESP32-C3DevKitM-1 που είναι συνδεδεμένη με RGB LED lamp χάντρες (βλ. Εικόνα 2.2). Αλλά θα έπρεπε
14 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

σημειώστε ότι αυτός δεν είναι ο μόνος τρόπος για να συναρμολογήσετε ένα έξυπνο φως. Ο σχεδιασμός υλικού του έργου σε αυτό το βιβλίο περιέχει μόνο μια ασύρματη μονάδα (με ενσωματωμένο ESP32-C3), αλλά όχι μια πλήρη σχεδίαση έξυπνου υλικού φωτός. Επιπλέον, η Espressif παράγει επίσης μια πλακέτα ανάπτυξης ήχου ESP32C3-Lyra με βάση το ESP32-C3 για τον έλεγχο των φώτων με ήχο. Η πλακέτα διαθέτει διεπαφές για μικρόφωνα και ηχεία και μπορεί να ελέγξει τις λωρίδες LED. Μπορεί να χρησιμοποιηθεί για την ανάπτυξη εξαιρετικά χαμηλού κόστους, υψηλής απόδοσης εκπομπών ήχου και λωρίδων ρυθμού φωτός. Το σχήμα 2.3 δείχνει μια πλακέτα ESP32-C3Lyra συνδεδεμένη με μια λωρίδα 40 λυχνιών LED.
Εικόνα 2.3. ESP32-C3-Lyra συνδεδεμένο με λωρίδα 40 λυχνιών LED
Smartphones (Android/iOS) Το έργο Smart Light περιλαμβάνει την ανάπτυξη μιας εφαρμογής smartphone για τη ρύθμιση και τον έλεγχο προϊόντων έξυπνου φωτός.
Δρομολογητές Wi-Fi Οι δρομολογητές Wi-Fi μετατρέπουν σήματα ενσύρματου δικτύου και σήματα δικτύου κινητής τηλεφωνίας σε σήματα ασύρματου δικτύου, για σύνδεση υπολογιστών, smartphone, tablet και άλλων ασύρματων συσκευών στο δίκτυο. Για π.χampLe, η ευρυζωνική σύνδεση στο σπίτι χρειάζεται μόνο να συνδεθεί σε δρομολογητή Wi-Fi για να επιτευχθεί ασύρματη δικτύωση συσκευών Wi-Fi. Το βασικό πρότυπο πρωτοκόλλου που υποστηρίζεται από δρομολογητές Wi-Fi είναι το IEEE 802.11n, με μέσο TxRate 300 Mbps ή 600 Mbps το μέγιστο. Είναι συμβατά με το IEEE 802.11b και το IEEE 802.11g. Το τσιπ ESP32-C3 της Espressif υποστηρίζει IEEE 802.11b/g/n, ώστε να μπορείτε να επιλέξετε έναν δρομολογητή Wi-Fi μονής ζώνης (2.4 GHz) ή διπλής ζώνης (2.4 GHz και 5 GHz).
Ένα περιβάλλον ανάπτυξης υπολογιστή (Linux/macOS/Windows) θα εισαχθεί στο Κεφάλαιο 4. Κεφάλαιο 2. Εισαγωγή και πρακτική των έργων IoT 15

2.2.4 Διαδικασία Ανάπτυξης
Εικόνα 2.4. Βήματα ανάπτυξης του έργου Smart Light
Σχεδιασμός υλικού Ο σχεδιασμός υλικού συσκευών IoT είναι απαραίτητος για ένα έργο IoT. Ένα πλήρες έργο έξυπνου φωτός προορίζεται για την παραγωγή αλamp λειτουργεί υπό την παροχή ρεύματος. Διαφορετικοί κατασκευαστές παράγουν lamps διαφορετικών στυλ και τύπων προγραμμάτων οδήγησης, αλλά οι ασύρματες μονάδες τους έχουν συνήθως την ίδια λειτουργία. Για να απλοποιηθεί η διαδικασία ανάπτυξης του έργου Smart Ligh, αυτό το βιβλίο καλύπτει μόνο τη σχεδίαση υλικού και την ανάπτυξη λογισμικού ασύρματων μονάδων.
Διαμόρφωση πλατφόρμας cloud IoT Για να χρησιμοποιήσετε πλατφόρμες cloud IoT, πρέπει να διαμορφώσετε έργα στο backend, όπως δημιουργία προϊόντων, δημιουργία συσκευών, ρύθμιση ιδιοτήτων συσκευής κ.λπ.
Ανάπτυξη ενσωματωμένου λογισμικού για συσκευές IoT Εφαρμόστε τις αναμενόμενες λειτουργίες με το ESP-IDF, το SDK της Espressif στην πλευρά της συσκευής, συμπεριλαμβανομένης της σύνδεσης σε πλατφόρμες cloud IoT, της ανάπτυξης προγραμμάτων οδήγησης LED και της αναβάθμισης υλικολογισμικού.
Ανάπτυξη εφαρμογών για smartphone Αναπτύξτε εφαρμογές smartphone για συστήματα Android και iOS για να πραγματοποιήσετε εγγραφή και σύνδεση χρήστη, έλεγχο συσκευής και άλλες λειτουργίες.
Βελτιστοποίηση συσκευών IoT Μόλις ολοκληρωθεί η βασική ανάπτυξη των λειτουργιών της συσκευής IoT, μπορείτε να στραφείτε σε εργασίες βελτιστοποίησης, όπως η βελτιστοποίηση ισχύος.
Δοκιμές μαζικής παραγωγής Πραγματοποιήστε δοκιμές μαζικής παραγωγής σύμφωνα με τα σχετικά πρότυπα, όπως δοκιμή λειτουργίας εξοπλισμού, δοκιμή γήρανσης, δοκιμή ραδιοσυχνοτήτων κ.λπ.
Παρά τα βήματα που αναφέρονται παραπάνω, ένα έργο Smart Light δεν υπόκειται απαραίτητα σε τέτοια διαδικασία, καθώς διαφορετικές εργασίες μπορούν επίσης να εκτελεστούν ταυτόχρονα. Για π.χample, ενσωματωμένο λογισμικό και εφαρμογές smartphone μπορούν να αναπτυχθούν παράλληλα. Ορισμένα βήματα μπορεί επίσης να χρειαστεί να επαναληφθούν, όπως η βελτιστοποίηση συσκευών 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 είναι γεμάτη προκλήσεις. Με τα δημόσια σύννεφα, οι κατασκευαστές τερματικών μπορούν να εφαρμόσουν τη λειτουργικότητα του προϊόντος μέσω των ακόλουθων λύσεων:
Με βάση τις πλατφόρμες cloud των παρόχων λύσεων Με αυτόν τον τρόπο, οι κατασκευαστές τερματικών χρειάζεται μόνο να σχεδιάσουν το υλικό του προϊόντος, στη συνέχεια να συνδέσουν το υλικό στο cloud χρησιμοποιώντας την παρεχόμενη μονάδα επικοινωνίας και να διαμορφώσουν τις λειτουργίες του προϊόντος ακολουθώντας τις οδηγίες. Αυτή είναι μια αποτελεσματική προσέγγιση, καθώς εξαλείφει την ανάγκη για ανάπτυξη και λειτουργία και συντήρηση (O&M) από την πλευρά του διακομιστή και της εφαρμογής. Επιτρέπει στους κατασκευαστές τερματικών να επικεντρωθούν στη σχεδίαση υλικού χωρίς να χρειάζεται να εξετάσουν την εφαρμογή του cloud. Ωστόσο, τέτοιες λύσεις (π.χ. υλικολογισμικό συσκευής και εφαρμογή) γενικά δεν είναι ανοιχτού κώδικα, επομένως οι λειτουργίες του προϊόντος θα περιορίζονται από την πλατφόρμα cloud του παρόχου που δεν μπορεί να προσαρμοστεί. Εν τω μεταξύ, τα δεδομένα χρήστη και συσκευής ανήκουν επίσης στην πλατφόρμα cloud.
Βασισμένο σε προϊόντα cloud Σε αυτήν τη λύση, μετά την ολοκλήρωση του σχεδιασμού υλικού, οι κατασκευαστές τερματικών όχι μόνο χρειάζεται να εφαρμόσουν λειτουργίες cloud χρησιμοποιώντας ένα ή περισσότερα προϊόντα cloud που παρέχονται από το δημόσιο cloud, αλλά πρέπει επίσης να συνδέσουν το υλικό με το cloud. Για π.χample, για να συνδεθείτε στο Amazon Web Υπηρεσίες (AWS), οι κατασκευαστές τερματικών πρέπει να χρησιμοποιούν προϊόντα AWS όπως το Amazon API Gateway, το AWS IoT Core και το AWS Lambda για να ενεργοποιήσουν την πρόσβαση στη συσκευή, τον τηλεχειρισμό, την αποθήκευση δεδομένων, τη διαχείριση χρηστών και άλλες βασικές λειτουργίες. Όχι μόνο ζητά από τους κατασκευαστές τερματικών να χρησιμοποιούν και να διαμορφώνουν με ευελιξία προϊόντα cloud με εις βάθος κατανόηση και πλούσια εμπειρία, αλλά απαιτεί επίσης από αυτούς να λαμβάνουν υπόψη το κόστος κατασκευής και συντήρησης για τα αρχικά και τα μεταγενέστεραtages Αυτό θέτει μεγάλες προκλήσεις για την ενέργεια και τους πόρους της εταιρείας.
Σε σύγκριση με τα δημόσια σύννεφα, τα ιδιωτικά σύννεφα συνήθως κατασκευάζονται για συγκεκριμένα έργα και προϊόντα. Οι ιδιωτικοί προγραμματιστές cloud έχουν το υψηλότερο επίπεδο ελευθερίας στον σχεδιασμό πρωτοκόλλου και στην εφαρμογή επιχειρηματικής λογικής. Οι κατασκευαστές τερματικών μπορούν να κατασκευάζουν προϊόντα και σχέδια κατά βούληση και να ενσωματώνουν και να ενισχύουν εύκολα τα δεδομένα των χρηστών. Συνδυάζοντας την υψηλή ασφάλεια, την επεκτασιμότητα και την αξιοπιστία του δημόσιου cloud με το advantagγια το ιδιωτικό cloud, η Espressif κυκλοφόρησε το ESP
19

RainMaker, μια βαθιά ενσωματωμένη λύση ιδιωτικού cloud που βασίζεται στο Amazon cloud. Οι χρήστες μπορούν να αναπτύξουν το ESP RainMaker και να δημιουργήσουν ιδιωτικό cloud απλά με έναν λογαριασμό AWS.
3.1 Τι είναι το ESP RainMaker;
Το ESP RainMaker είναι μια ολοκληρωμένη πλατφόρμα AIoT που έχει κατασκευαστεί με πολλά ώριμα προϊόντα AWS. Παρέχει διάφορες υπηρεσίες που απαιτούνται για τη μαζική παραγωγή, όπως πρόσβαση στο σύννεφο συσκευών, αναβάθμιση συσκευής, διαχείριση backend, σύνδεση τρίτων, ενσωμάτωση φωνής και διαχείριση χρηστών. Χρησιμοποιώντας το Αποθετήριο εφαρμογών χωρίς διακομιστή (SAR) που παρέχεται από την AWS, οι κατασκευαστές τερματικών μπορούν να αναπτύξουν γρήγορα το ESP RainMaker στους λογαριασμούς τους AWS, το οποίο είναι χρονικά αποδοτικό και εύκολο στη χρήση. Με διαχείριση και συντήρηση από την Espressif, το SAR που χρησιμοποιείται από το ESP RainMaker βοηθά τους προγραμματιστές να μειώσουν το κόστος συντήρησης του cloud και να επιταχύνουν την ανάπτυξη προϊόντων AIoT, δημιουργώντας έτσι ασφαλείς, σταθερές και προσαρμόσιμες λύσεις AIoT. Το σχήμα 3.1 δείχνει την αρχιτεκτονική του ESP RainMaker.
Εικόνα 3.1. Αρχιτεκτονική του ESP RainMaker
Ο δημόσιος διακομιστής ESP RainMaker από την Espressif είναι δωρεάν για όλους τους λάτρεις του ESP, κατασκευαστές και εκπαιδευτικούς για αξιολόγηση λύσεων. Οι προγραμματιστές μπορούν να συνδεθούν με λογαριασμούς Apple, Google ή GitHub και να δημιουργήσουν γρήγορα τα δικά τους πρωτότυπα εφαρμογών IoT. Ο δημόσιος διακομιστής ενσωματώνει την Alexa και το Google Home και παρέχει υπηρεσίες φωνητικού ελέγχου, οι οποίες υποστηρίζονται από το Alexa Skill και το Google Actions. Η λειτουργία σημασιολογικής αναγνώρισης τροφοδοτείται επίσης από τρίτους. Οι συσκευές RainMaker IoT ανταποκρίνονται μόνο σε συγκεκριμένες ενέργειες. Για μια εξαντλητική λίστα με τις υποστηριζόμενες φωνητικές εντολές, ελέγξτε τις πλατφόρμες τρίτων. Επιπλέον, η Espressif προσφέρει μια δημόσια εφαρμογή RainMaker για τους χρήστες να ελέγχουν τα προϊόντα μέσω smartphone. 20 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

3.2 Η εφαρμογή του ESP RainMaker
Όπως φαίνεται στην Εικόνα 3.2, το ESP RainMaker αποτελείται από τέσσερα μέρη: · Υπηρεσία αξίωσης, που επιτρέπει στις συσκευές RainMaker να αποκτούν δυναμικά πιστοποιητικά. · RainMaker Cloud (γνωστό και ως backend 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 Ένα CLI που βασίζεται σε Python, το οποίο συνοδεύεται από το RainMaker SDK, παρέχεται για την υλοποίηση όλων των λειτουργιών παρόμοιες με τις λειτουργίες smartphone. Για περισσότερες πληροφορίες σχετικά με τα Python API, επισκεφθείτε τη διεύθυνση https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Το Admin CLI, με υψηλότερο επίπεδο πρόσβασης, παρέχεται για ιδιωτική ανάπτυξη του ESP RainMaker για τη μαζική δημιουργία πιστοποιητικών συσκευών.
3.2.1 Υπηρεσία διεκδίκησης
Όλη η επικοινωνία μεταξύ των συσκευών RainMaker και του cloud backend πραγματοποιείται μέσω MQTT+TLS. Στο πλαίσιο του ESP RainMaker, η "Αξίωση" είναι η διαδικασία κατά την οποία οι συσκευές λαμβάνουν πιστοποιητικά από την Υπηρεσία Αξιώσεων για να συνδεθούν στο backend του cloud. Λάβετε υπόψη ότι η Υπηρεσία αξίωσης ισχύει μόνο για τη δημόσια υπηρεσία RainMaker, ενώ για ιδιωτική ανάπτυξη, τα πιστοποιητικά συσκευής πρέπει να δημιουργηθούν μαζικά μέσω του Admin CLI. Το ESP RainMaker υποστηρίζει τρεις τύπους Υπηρεσίας αξίωσης: Αυτοαξιώσεις
Η ίδια η συσκευή ανακτά τα πιστοποιητικά μέσω ενός μυστικού κλειδιού προ-προγραμματισμένου στο eFuse μετά τη σύνδεση στο Internet. Αξίωση βάσει κεντρικού υπολογιστή Τα πιστοποιητικά λαμβάνονται από τον κεντρικό υπολογιστή ανάπτυξης με τον λογαριασμό RainMaker. Υποβοηθούμενη αξίωση Τα πιστοποιητικά αποκτώνται μέσω εφαρμογών smartphone κατά την παροχή.
3.2.2 RainMaker Agent
Εικόνα 3.3. Δομή του RainMaker SDK Η κύρια λειτουργία του RainMaker Agent είναι να παρέχει συνδεσιμότητα και να βοηθά το επίπεδο εφαρμογής να επεξεργάζεται δεδομένα cloud uplink/downlink. Είναι χτισμένο μέσω του RainMaker SDK 22 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT

και αναπτύχθηκε με βάση το αποδεδειγμένο πλαίσιο ESP-IDF, χρησιμοποιώντας στοιχεία ESP-IDF όπως RTOS, NVS και MQTT. Το σχήμα 3.3 δείχνει τη δομή του RainMaker SDK.
Το RainMaker SDK περιλαμβάνει δύο βασικά χαρακτηριστικά.
Σύνδεση
εγώ. Συνεργασία με την Υπηρεσία Αξιώσεων για την απόκτηση πιστοποιητικών συσκευών.
ii. Σύνδεση στο backend του cloud χρησιμοποιώντας το ασφαλές πρωτόκολλο MQTT για παροχή απομακρυσμένης συνδεσιμότητας και εφαρμογή τηλεχειρισμού, αναφορά μηνυμάτων, διαχείριση χρηστών, διαχείριση συσκευών κ.λπ. Χρησιμοποιεί το στοιχείο MQTT στο ESP-IDF από προεπιλογή και παρέχει ένα επίπεδο αφαίρεσης για διασύνδεση με άλλα στοίβες πρωτοκόλλων.
iii. Παροχή στοιχείου παροχής Wi-Fi για σύνδεση και παροχή Wi-Fi, στοιχείο esp https ota για αναβαθμίσεις OTA και ειδικό στοιχείο τοπικού ctrl για εντοπισμό και σύνδεση τοπικής συσκευής. Όλοι αυτοί οι στόχοι μπορούν να επιτευχθούν μέσω απλής διαμόρφωσης.
Επεξεργασία δεδομένων
εγώ. Αποθήκευση των πιστοποιητικών συσκευής που εκδίδονται από την Υπηρεσία αξίωσης και των δεδομένων που απαιτούνται κατά την εκτέλεση του RainMaker, από προεπιλογή χρησιμοποιώντας τη διεπαφή που παρέχεται από το στοιχείο flash nvs και παροχή API για προγραμματιστές για άμεση χρήση.
ii. Χρήση του μηχανισμού επανάκλησης για την επεξεργασία δεδομένων cloud uplink/downlink και αυτόματη κατάργηση αποκλεισμού των δεδομένων στο επίπεδο εφαρμογής για εύκολη επεξεργασία από τους προγραμματιστές. Για π.χampΈτσι, το RainMaker SDK παρέχει πλούσιες διεπαφές για τη δημιουργία δεδομένων TSL (Thing Specification Language), τα οποία απαιτούνται για τον καθορισμό μοντέλων TSL για την περιγραφή συσκευών IoT και την υλοποίηση λειτουργιών όπως ο χρονισμός, η αντίστροφη μέτρηση και ο φωνητικός έλεγχος. Για βασικές διαδραστικές λειτουργίες, όπως ο χρονισμός, το RainMaker SDK παρέχει μια λύση χωρίς ανάπτυξη, η οποία μπορεί απλά να ενεργοποιηθεί όταν χρειάζεται. Στη συνέχεια, ο RainMaker Agent θα επεξεργαστεί απευθείας τα δεδομένα, θα τα στείλει στο cloud μέσω του σχετικού θέματος MQTT και θα ανατροφοδοτήσει τις αλλαγές δεδομένων στο backend του cloud μέσω του μηχανισμού επανάκλησης.
3.2.3 Cloud Backend
Το backend του cloud είναι χτισμένο σε 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, οι προγραμματιστές μπορούν να διαχειρίζονται συσκευές χωρίς να χρειάζεται να γράφουν κώδικα στο cloud. Τα μηνύματα που αναφέρονται από συσκευές μεταδίδονται με διαφάνεια
Κεφάλαιο 3. Εισαγωγή στο ESP RainMaker 23

πελάτες εφαρμογών ή άλλες υπηρεσίες τρίτων. Ο Πίνακας 3.1 δείχνει τα προϊόντα και τις λειτουργίες cloud AWS που χρησιμοποιούνται στο backend του cloud, με περισσότερα προϊόντα και δυνατότητες υπό ανάπτυξη.
Πίνακας 3.1. Προϊόντα και λειτουργίες cloud AWS που χρησιμοποιούνται από το backend του cloud

Προϊόν AWS Cloud που χρησιμοποιείται από τη RainMaker

Λειτουργία

AWS Cognito

Διαχείριση διαπιστευτηρίων χρήστη και υποστήριξη συνδέσεων τρίτων

AWS Λάμδα

Εφαρμογή της βασικής επιχειρηματικής λογικής του backend του cloud

Amazon Timestream Αποθήκευση δεδομένων χρονοσειρών

Amazon DynamoDB Αποθήκευση προσωπικών πληροφοριών πελατών

AWS IoT Core

Υποστήριξη επικοινωνίας MQTT

Amazon SES

Παροχή υπηρεσιών αποστολής email

Amazon CloudFront Επιτάχυνση της διαχείρισης του backend webπρόσβαση στον ιστότοπο

Amazon SQS

Προώθηση μηνυμάτων από το AWS IoT Core

3.2.4 Πελάτης RainMaker
Οι πελάτες RainMaker, όπως το App και το CLI, επικοινωνούν με το backend του cloud μέσω των API REST. Λεπτομερείς πληροφορίες και οδηγίες σχετικά με τα API REST μπορείτε να βρείτε στην τεκμηρίωση του Swagger που παρέχεται από την Espressif. Ο πελάτης εφαρμογών για κινητά του RainMaker είναι διαθέσιμος τόσο για συστήματα iOS όσο και για Android. Επιτρέπει την παροχή, τον έλεγχο και την κοινή χρήση συσκευών, καθώς και τη δημιουργία και την ενεργοποίηση εργασιών αντίστροφης μέτρησης και τη σύνδεση σε πλατφόρμες τρίτων. Μπορεί να φορτώσει αυτόματα το περιβάλλον χρήστη και τα εικονίδια σύμφωνα με τη διαμόρφωση που αναφέρουν οι συσκευές και να εμφανίσει πλήρως το TSL της συσκευής.
Για π.χample, εάν ένα έξυπνο φως είναι χτισμένο στο RainMaker SDK που παρέχεται π.χampΈτσι, το εικονίδιο και η διεπαφή χρήστη του λαμπτήρα θα φορτωθούν αυτόματα όταν ολοκληρωθεί η παροχή. Οι χρήστες μπορούν να αλλάξουν το χρώμα και τη φωτεινότητα του φωτός μέσω της διεπαφής και να επιτύχουν έλεγχο από τρίτους συνδέοντας το Alexa Smart Home Skill ή το Google Smart Home Actions με τους λογαριασμούς τους ESP RainMaker. Το σχήμα 3.4 δείχνει το εικονίδιο και το UI exampλιγότερο από το φως της λάμπας αντίστοιχα στην εφαρμογή Alexa, Google Home και ESP RainMaker.

24 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

(α) Π.χample – Alexa

(β) Π.χample – Google Home

(γ) Π.χample – ESP RainMaker
Εικόνα 3.4. ΠρampΕικονίδιο και διεπαφή χρήστη του λαμπτήρα στο Alexa, το Google Home και την εφαρμογή ESP RainMaker
3.3 Εξάσκηση: Βασικά σημεία για την ανάπτυξη με το ESP RainMaker
Μόλις ολοκληρωθεί το επίπεδο προγράμματος οδήγησης συσκευής, οι προγραμματιστές μπορούν να αρχίσουν να δημιουργούν μοντέλα TSL και να επεξεργάζονται δεδομένα κατερχόμενης ζεύξης χρησιμοποιώντας τα API που παρέχονται από το RainMaker SDK και να ενεργοποιήσουν τις βασικές υπηρεσίες ESP RainMaker με βάση τον ορισμό του προϊόντος και τις απαιτήσεις.
Κεφάλαιο 3. Εισαγωγή στο ESP RainMaker 25

Η ενότητα 9.4 αυτού του βιβλίου θα εξηγήσει την εφαρμογή του έξυπνου φωτός LED στο RainMaker. Κατά τον εντοπισμό σφαλμάτων, οι προγραμματιστές μπορούν να χρησιμοποιήσουν τα εργαλεία CLI στο RainMaker SDK για να επικοινωνήσουν με το έξυπνο φως (ή να καλέσουν REST API από το Swagger).
Το Κεφάλαιο 10 θα επεξεργαστεί τη χρήση των API REST στην ανάπτυξη εφαρμογών smartphone. Οι αναβαθμίσεις OTA των έξυπνων φώτων LED θα καλυφθούν στο Κεφάλαιο 11. Εάν οι προγραμματιστές έχουν ενεργοποιήσει την απομακρυσμένη παρακολούθηση του ESP Insights, το backend διαχείρισης ESP RainMaker θα εμφανίσει τα δεδομένα του ESP Insights. Λεπτομέρειες θα παρουσιαστούν στο Κεφάλαιο 15.
Το ESP RainMaker υποστηρίζει ιδιωτική ανάπτυξη, η οποία διαφέρει από τον δημόσιο διακομιστή RainMaker με τους εξής τρόπους:
Υπηρεσία αξίωσης Για τη δημιουργία πιστοποιητικών σε ιδιωτικές αναπτύξεις, απαιτείται η χρήση του RainMaker Admin CLI αντί του Claiming. Με τον δημόσιο διακομιστή, οι προγραμματιστές πρέπει να έχουν δικαιώματα διαχειριστή για την υλοποίηση αναβάθμισης υλικολογισμικού, αλλά είναι ανεπιθύμητη σε εμπορικές αναπτύξεις. Επομένως, δεν μπορεί να παρασχεθεί χωριστή υπηρεσία ελέγχου ταυτότητας για αυτο-αξίωση, ούτε δικαιώματα διαχειριστή για αξίωση κεντρικού υπολογιστή ή υποβοηθούμενη αξίωση.
Εφαρμογές τηλεφώνου Σε ιδιωτικές αναπτύξεις, οι εφαρμογές πρέπει να διαμορφωθούν και να μεταγλωττιστούν ξεχωριστά για να διασφαλιστεί ότι τα συστήματα λογαριασμών δεν είναι διαλειτουργικά.
Συνδέσεις τρίτου μέρους και ενσωμάτωση φωνής Οι προγραμματιστές πρέπει να ρυθμίσουν τις παραμέτρους ξεχωριστά μέσω των λογαριασμών προγραμματιστή Google και Apple για να ενεργοποιήσουν τις συνδέσεις τρίτων, καθώς και την ενσωμάτωση Alexa Skill και Google Voice Assistant.
ΣΥΜΒΟΥΛΕΣ Για λεπτομέρειες σχετικά με την ανάπτυξη του cloud, επισκεφθείτε τη διεύθυνση https://customer.rainmaker.espressif. com. Όσον αφορά το υλικολογισμικό, η μετεγκατάσταση από δημόσιο διακομιστή σε ιδιωτικό διακομιστή απαιτεί μόνο την αντικατάσταση των πιστοποιητικών συσκευών, γεγονός που βελτιώνει σημαντικά την αποτελεσματικότητα της μετεγκατάστασης και μειώνει το κόστος της μετεγκατάστασης και του δευτερεύοντος εντοπισμού σφαλμάτων.
3.4 Χαρακτηριστικά του ESP RainMaker
Οι δυνατότητες του ESP RainMaker στοχεύουν κυρίως σε τρεις πτυχές – διαχείριση χρηστών, τελικοί χρήστες και διαχειριστές. Όλες οι δυνατότητες υποστηρίζονται τόσο σε δημόσιους όσο και σε ιδιωτικούς διακομιστές, εκτός εάν αναφέρεται διαφορετικά.
3.4.1 Διαχείριση χρηστών
Οι δυνατότητες διαχείρισης χρηστών επιτρέπουν στους τελικούς χρήστες να εγγραφούν, να συνδεθούν, να αλλάξουν κωδικούς πρόσβασης, να ανακτήσουν κωδικούς πρόσβασης κ.λπ.
26 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Εγγραφή και σύνδεση Οι μέθοδοι εγγραφής και σύνδεσης που υποστηρίζονται από το RainMaker περιλαμβάνουν: · Αναγνωριστικό email + Κωδικός πρόσβασης · ​​Αριθμός τηλεφώνου + Κωδικός πρόσβασης · ​​Λογαριασμός Google · Λογαριασμός Apple · Λογαριασμός GitHub (μόνο δημόσιος διακομιστής) · Λογαριασμός Amazon (μόνο ιδιωτικός διακομιστής)
ΣΗΜΕΙΩΣΗ Εγγραφείτε χρησιμοποιώντας το Google/Amazon κοινοποιεί τη διεύθυνση ηλεκτρονικού ταχυδρομείου του χρήστη με το RainMaker. Εγγραφείτε χρησιμοποιώντας την Apple μοιράζεται μια ψευδή διεύθυνση που η Apple εκχωρεί στον χρήστη ειδικά για την υπηρεσία RainMaker. Ένας λογαριασμός RainMaker θα δημιουργηθεί αυτόματα για χρήστες που συνδέονται με λογαριασμό Google, Apple ή Amazon για πρώτη φορά.
Αλλαγή κωδικού πρόσβασης Ισχύει μόνο για συνδέσεις με αναγνωριστικό email/τηλέφωνο. Όλες οι άλλες ενεργές συνεδρίες θα αποσυνδεθούν μετά την αλλαγή του κωδικού πρόσβασης. Σύμφωνα με τη συμπεριφορά του AWS Cognito, οι αποσυνδεθείσες συνεδρίες μπορούν να παραμείνουν ενεργές έως και 1 ώρα.
Ανάκτηση κωδικού πρόσβασης Ισχύει μόνο για συνδέσεις βάσει αναγνωριστικού email/τηλεφώνου.
3.4.2 Λειτουργίες τελικού χρήστη
Οι δυνατότητες που είναι ανοιχτές στους τελικούς χρήστες περιλαμβάνουν τοπικό και απομακρυσμένο έλεγχο και παρακολούθηση, προγραμματισμό, ομαδοποίηση συσκευών, κοινή χρήση συσκευών, ειδοποιήσεις push και ενσωματώσεις τρίτων.
Τηλεχειριστήριο και παρακολούθηση · Διαμόρφωση ερωτήματος, τιμές παραμέτρων και κατάσταση σύνδεσης για μία ή όλες τις συσκευές. · Ορίστε παραμέτρους για μεμονωμένες ή πολλαπλές συσκευές.
Τοπικός έλεγχος και παρακολούθηση Το κινητό τηλέφωνο και η συσκευή πρέπει να είναι συνδεδεμένα στο ίδιο δίκτυο για τοπικό έλεγχο.
Προγραμματισμός · Οι χρήστες προκαθορίζουν ορισμένες ενέργειες σε μια συγκεκριμένη ώρα. · Δεν απαιτείται σύνδεση στο Διαδίκτυο για τη συσκευή κατά την εκτέλεση του προγράμματος. · Μία φορά ή επανάληψη (καθορίζοντας ημέρες) για μεμονωμένες ή πολλαπλές συσκευές.
Ομαδοποίηση συσκευών Υποστηρίζει αφηρημένη ομαδοποίηση πολλών επιπέδων Τα μεταδεδομένα ομάδας μπορούν να χρησιμοποιηθούν για τη δημιουργία μιας δομής Home Room.
Κεφάλαιο 3. Εισαγωγή στο ESP RainMaker 27

Κοινή χρήση συσκευής Μία ή περισσότερες συσκευές μπορούν να κοινοποιηθούν με έναν ή περισσότερους χρήστες.
Ειδοποιήσεις push Οι τελικοί χρήστες θα λαμβάνουν ειδοποιήσεις push για συμβάντα όπως · Προστέθηκαν/αφαιρήθηκαν νέες συσκευές · Συσκευή συνδεδεμένη στο cloud · Η συσκευή αποσυνδέθηκε από το cloud · Δημιουργήθηκαν/αποδέχθηκαν/απορρίφθηκαν αιτήματα κοινής χρήσης συσκευής · Μηνύματα ειδοποίησης που αναφέρθηκαν από συσκευές
Οι ενσωματώσεις τρίτων μερών Alexa και Google Voice Assistant υποστηρίζονται για τον έλεγχο συσκευών RainMaker, συμπεριλαμβανομένων των φώτων, των διακοπτών, των υποδοχών, των ανεμιστήρων και των αισθητήρων θερμοκρασίας.
3.4.3 Λειτουργίες διαχειριστή
Οι δυνατότητες διαχειριστή επιτρέπουν στους διαχειριστές να εφαρμόζουν εγγραφή συσκευών, ομαδοποίηση συσκευών και αναβαθμίσεις OTA και σε view στατιστικά και δεδομένα ESP Insights.
Εγγραφή συσκευής Δημιουργήστε πιστοποιητικά συσκευής και εγγραφείτε στο Admin CLI (μόνο ιδιωτικός διακομιστής).
Ομαδοποίηση συσκευών Δημιουργήστε αφηρημένες ή δομημένες ομάδες βάσει πληροφοριών συσκευής (μόνο ιδιωτικός διακομιστής).
Αναβαθμίσεις Over-the-Air (OTA) Μεταφόρτωση υλικολογισμικού βάσει έκδοσης και μοντέλου, σε μία ή περισσότερες συσκευές ή ομαδική παρακολούθηση, ακύρωση ή αρχειοθέτηση εργασιών OTA.
View στατιστική ViewΤα δυνατά στατιστικά στοιχεία περιλαμβάνουν: · Εγγραφές συσκευής (πιστοποιητικά καταχωρισμένα από τον διαχειριστή) · Ενεργοποιήσεις συσκευής (συσκευή συνδεδεμένη για πρώτη φορά) · Λογαριασμοί χρηστών · Συσχέτιση χρήστη-συσκευής
View Δεδομένα ESP Insights ViewΤα ικανά δεδομένα ESP Insights περιλαμβάνουν: · Σφάλματα, προειδοποιήσεις και προσαρμοσμένα αρχεία καταγραφής · Αναφορές και ανάλυση σφαλμάτων · Λόγοι επανεκκίνησης · ​​Μετρήσεις όπως χρήση μνήμης, RSSI κ.λπ. · Προσαρμοσμένες μετρήσεις και μεταβλητές
28 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

3.5 Περίληψη
Σε αυτό το κεφάλαιο, εισαγάγαμε ορισμένες βασικές διαφορές μεταξύ της δημόσιας ανάπτυξης RainMaker και της ιδιωτικής ανάπτυξης. Η ιδιωτική λύση ESP RainMaker που λανσαρίστηκε από την Espressif είναι εξαιρετικά αξιόπιστη και επεκτάσιμη. Όλα τα τσιπ της σειράς ESP32 έχουν συνδεθεί και προσαρμοστεί στο AWS, γεγονός που μειώνει σημαντικά το κόστος. Οι προγραμματιστές μπορούν να επικεντρωθούν στην επαλήθευση πρωτοτύπων χωρίς να χρειάζεται να μάθουν για τα προϊόντα cloud 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 project, ενώ προσφέρει μια λεπτομερή εξήγηση του αρχείου καταγραφής εξόδου σε κάθε 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 παρέχει εργαλεία που χρησιμοποιούνται συνήθως για κατασκευή, flash και εντοπισμό σφαλμάτων κατά την ανάπτυξη και τη μαζική παραγωγή (βλ. Εικόνα 4.1), όπως το σύστημα δόμησης που βασίζεται στο CMake, η αλυσίδα εργαλείων πολλαπλής μεταγλώττισης που βασίζεται στο GCC και το JTAG εργαλείο εντοπισμού σφαλμάτων που βασίζεται σε 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

υποστηρίζεται η έκδοση 4.1

Υποστηρίζεται η έκδοση 4.2

v4.3 υποστηρίζεται υποστηρίζεται υποστηρίζεται

v4.4 υποστηρίζεται υποστηρίζεται υποστηρίζεται υποστηρίζεται
προview

v5.0 υποστηριζόμενη υποστηριζόμενη υποστηριζόμενη υποστήριξη υποστηριζόμενη προview

32 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Η επανάληψη των κύριων εκδόσεων συχνά περιλαμβάνει προσαρμογές στη δομή του πλαισίου και ενημερώσεις στο σύστημα μεταγλώττισης. Για π.χample, η κύρια αλλαγή από το v3.* στο v4.* ήταν η σταδιακή μετεγκατάσταση του συστήματος κατασκευής από το Make στο CMake. Από την άλλη πλευρά, η επανάληψη δευτερευουσών εκδόσεων συνήθως συνεπάγεται την προσθήκη νέων χαρακτηριστικών ή υποστήριξη για νέα τσιπ.
Είναι σημαντικό να διακρίνουμε και να κατανοήσουμε τη σχέση μεταξύ σταθερών εκδόσεων και κλάδων GitHub. Οι εκδόσεις με την ένδειξη v*.* ή v*.*.* αντιπροσωπεύουν σταθερές εκδόσεις που έχουν περάσει από την πλήρη εσωτερική δοκιμή από την Espressif. Αφού διορθωθεί, ο κώδικας, η αλυσίδα εργαλείων και τα έγγραφα έκδοσης για την ίδια έκδοση παραμένουν αμετάβλητα. Ωστόσο, οι κλάδοι του GitHub (π.χ. ο κλάδος έκδοσης/v4.3) υφίστανται συχνές δεσμεύσεις κώδικα, συχνά σε καθημερινή βάση. Επομένως, δύο αποσπάσματα κώδικα στον ίδιο κλάδο μπορεί να διαφέρουν, γεγονός που απαιτεί από τους προγραμματιστές να ενημερώσουν αμέσως τον κώδικά τους ανάλογα.
4.1.2 Ροή εργασίας Git ESP-IDF
Το Espressif ακολουθεί μια συγκεκριμένη ροή εργασίας Git για το ESP-IDF, που περιγράφεται ως εξής:
· Γίνονται νέες αλλαγές στον κύριο κλάδο, ο οποίος λειτουργεί ως ο κύριος κλάδος ανάπτυξης. Η έκδοση ESP-IDF στον κύριο κλάδο φέρει πάντα ένα -dev tag για να υποδείξει ότι αυτή τη στιγμή βρίσκεται υπό ανάπτυξη, όπως το v4.3-dev. Οι αλλαγές στον κύριο κλάδο θα γίνουν πρώταviewεκδόθηκε και δοκιμάστηκε στο εσωτερικό αποθετήριο της Espressif και στη συνέχεια προωθήθηκε στο GitHub μετά την ολοκλήρωση της αυτοματοποιημένης δοκιμής.
· Μόλις μια νέα έκδοση ολοκληρώσει την ανάπτυξη δυνατοτήτων στον κύριο κλάδο και πληροί τα κριτήρια για την είσοδο σε δοκιμές beta, μεταβαίνει σε έναν νέο κλάδο, όπως η έκδοση/ v4.3. Επιπλέον, ο νέος αυτός κλάδος είναι tagged ως έκδοση προέκδοσης, όπως η έκδοση 4.3-beta1. Οι προγραμματιστές μπορούν να ανατρέξουν στην πλατφόρμα GitHub για πρόσβαση στην πλήρη λίστα των υποκαταστημάτων και tags για το ESP-IDF. Είναι σημαντικό να σημειωθεί ότι η έκδοση beta (έκδοση πριν από την κυκλοφορία) ενδέχεται να εξακολουθεί να έχει σημαντικό αριθμό γνωστών προβλημάτων. Καθώς η έκδοση beta υποβάλλεται σε συνεχείς δοκιμές, διορθώσεις σφαλμάτων προστίθενται ταυτόχρονα σε αυτήν την έκδοση και στον κύριο κλάδο. Εν τω μεταξύ, ο κύριος κλάδος μπορεί να έχει ήδη αρχίσει να αναπτύσσει νέες δυνατότητες για την επόμενη έκδοση. Όταν η δοκιμή έχει σχεδόν ολοκληρωθεί, μια ετικέτα υποψήφια έκδοση (rc) προστίθεται στον κλάδο, υποδεικνύοντας ότι είναι πιθανός υποψήφιος για την επίσημη κυκλοφορία, όπως το v4.3-rc1. Σε αυτό το stagε, το υποκατάστημα παραμένει μια έκδοση πριν από την κυκλοφορία.
· Εάν δεν εντοπιστούν ή αναφερθούν σημαντικά σφάλματα, η έκδοση πριν από την κυκλοφορία λαμβάνει τελικά μια ετικέτα κύριας έκδοσης (π.χ., v5.0) ή μια ετικέτα δευτερεύουσας έκδοσης (π.χ., v4.3) και γίνεται επίσημη έκδοση έκδοσης, η οποία τεκμηριώνεται στη σελίδα σημειώσεων έκδοσης. Στη συνέχεια, τυχόν σφάλματα που εντοπίστηκαν σε αυτήν την έκδοση διορθώνονται στον κλάδο έκδοσης. Μετά την ολοκλήρωση της μη αυτόματης δοκιμής, ο κλάδος λαμβάνει μια ετικέτα έκδοσης επιδιόρθωσης σφαλμάτων (π.χ. έκδοση 4.3.2), η οποία αντικατοπτρίζεται επίσης στη σελίδα σημειώσεων έκδοσης.
Κεφάλαιο 4. Διαμόρφωση Αναπτυξιακού Περιβάλλοντος 33

4.1.3 Επιλογή κατάλληλης έκδοσης
Δεδομένου ότι το ESP-IDF άρχισε επίσημα να υποστηρίζει το ESP32-C3 από την έκδοση v4.3 και η έκδοση 4.4 δεν έχει ακόμη κυκλοφορήσει επίσημα τη στιγμή της συγγραφής αυτού του βιβλίου, η έκδοση που χρησιμοποιείται σε αυτό το βιβλίο είναι η έκδοση 4.3.2, η οποία είναι μια αναθεωρημένη έκδοση του v4.3. Ωστόσο, είναι σημαντικό να σημειωθεί ότι από τη στιγμή που θα διαβάσετε αυτό το βιβλίο, η έκδοση 4.4 ή νεότερες εκδόσεις μπορεί να είναι ήδη διαθέσιμες. Όταν επιλέγετε μια έκδοση, συνιστούμε τα εξής:
· Για προγραμματιστές αρχικού επιπέδου, συνιστάται να επιλέξετε τη σταθερή έκδοση v4.3 ή την αναθεωρημένη έκδοση, η οποία ευθυγραμμίζεται με την προηγούμενηampη έκδοση που χρησιμοποιείται σε αυτό το βιβλίο.
· Για σκοπούς μαζικής παραγωγής, συνιστάται η χρήση της πιο πρόσφατης σταθερής έκδοσης για να επωφεληθείτε από την πιο ενημερωμένη τεχνική υποστήριξη.
· Εάν σκοπεύετε να πειραματιστείτε με νέες μάρκες ή να εξερευνήσετε νέες δυνατότητες προϊόντος, χρησιμοποιήστε τον κύριο κλάδο. Η πιο πρόσφατη έκδοση περιέχει όλες τις πιο πρόσφατες δυνατότητες, αλλά έχετε κατά νου ότι ενδέχεται να υπάρχουν γνωστά ή άγνωστα σφάλματα.
· Εάν η σταθερή έκδοση που χρησιμοποιείται δεν περιλαμβάνει τις επιθυμητές νέες δυνατότητες και θέλετε να ελαχιστοποιήσετε τους κινδύνους που σχετίζονται με τον κύριο κλάδο, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε τον αντίστοιχο κλάδο έκδοσης, όπως τον κλάδο έκδοσης/v4.4. Το αποθετήριο GitHub της Espressif θα δημιουργήσει πρώτα τον κλάδο έκδοσης/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 για περιφερειακά μέχρι το πρόγραμμα οδήγησης ανώτερου επιπέδου και το εικονικό File Υποστήριξη επιπέδου συστήματος (VFS), οι προγραμματιστές μπορούν να επιλέξουν τα κατάλληλα στοιχεία σε διαφορετικά επίπεδα για τις ανάγκες ανάπτυξής τους. Το ESP-IDF υποστηρίζει επίσης πολλαπλές τυπικές στοίβες πρωτοκόλλων δικτύου όπως TCP/IP, HTTP, MQTT, WebSocket, κ.λπ. Οι προγραμματιστές μπορούν να χρησιμοποιήσουν γνωστές διεπαφές όπως το Socket για τη δημιουργία εφαρμογών δικτύου. Τα εξαρτήματα παρέχουν κατανόηση
34 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Εικόνα 4.2. Κατάλογος κωδικών αποθετηρίου ESP-IDF
sive λειτουργικότητα και μπορεί εύκολα να ενσωματωθεί σε εφαρμογές, επιτρέποντας στους προγραμματιστές να επικεντρωθούν αποκλειστικά στην επιχειρηματική λογική. Μερικά κοινά στοιχεία περιλαμβάνουν: · πρόγραμμα οδήγησης: Αυτό το στοιχείο περιέχει προγράμματα οδήγησης περιφερειακών για διάφορα Espressif
Σειρές τσιπ, όπως GPIO, I2C, SPI, UART, LEDC (PWM), κ.λπ. Τα προγράμματα οδήγησης περιφερειακών σε αυτό το στοιχείο προσφέρουν αφηρημένες διεπαφές ανεξάρτητες από τσιπ. Κάθε περιφερειακό έχει μια κοινή κεφαλίδα file (όπως το gpio.h), εξαλείφοντας την ανάγκη αντιμετώπισης διαφορετικών ερωτήσεων υποστήριξης για συγκεκριμένα chip. · 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 περιέχει επίσης βασικό σενάριο files του συστήματος μεταγλώττισης, που χρησιμεύει ως βάση για την εφαρμογή κανόνων συλλογής ESP-IDF. Κατά την προσθήκη των μεταβλητών περιβάλλοντος, τα περιεχόμενα στον κατάλογο εργαλείων προστίθενται στη μεταβλητή περιβάλλοντος συστήματος, επιτρέποντας την εκτέλεση του idf.py απευθείας κάτω από τη διαδρομή του έργου.
ρε. Πρώηνample κατάλογος προγράμματος π.χamples
Αυτός ο κατάλογος περιλαμβάνει μια τεράστια συλλογή από ESP-IDF example προγράμματα που επιδεικνύουν τη χρήση συστατικών API. Ο πρώηνampΤα les οργανώνονται σε διάφορους υποκαταλόγους με βάση τις κατηγορίες τους:
· ξεκίνημα: Αυτός ο υποκατάλογος περιλαμβάνει π.χampόπως "γεια σας κόσμο" και "ανοιγοκλείνετε" για να βοηθήσετε τους χρήστες να κατανοήσουν τα βασικά.
· bluetooth: Μπορείτε να βρείτε π.χamples εδώ, συμπεριλαμβανομένων Bluetooth LE Mesh, Bluetooth LE HID, BluFi και άλλων.
· wifi: Αυτός ο υποκατάλογος εστιάζει στο Wi-Fi π.χamples, συμπεριλαμβανομένων βασικών προγραμμάτων όπως Wi-Fi SoftAP, Wi-Fi Station, espnow, καθώς και ιδιόκτητο πρωτόκολλο επικοινωνίας π.χ.amples από το Espressif. Περιλαμβάνει επίσης πολλαπλά επίπεδα εφαρμογής π.χampβασίζονται σε Wi-Fi, όπως Iperf, Sniffer και Smart Config.
· περιφερειακά: Αυτός ο εκτενής υποκατάλογος χωρίζεται περαιτέρω σε πολλούς υποφακέλους με βάση τα ονόματα των περιφερειακών. Περιέχει κυρίως περιφερειακό πρόγραμμα οδήγησης π.χamples για τσιπς Espressif, με κάθε πρώηνample που διαθέτει πολλά υπο-π.χamples. Για παράδειγμα, ο υποκατάλογος gpio περιλαμβάνει δύο π.χamples: GPIO και GPIO matrix πληκτρολόγιο. Είναι σημαντικό να σημειωθεί ότι δεν είναι όλοι οι πρώηνampΤα στοιχεία σε αυτόν τον κατάλογο ισχύουν για το ESP32-C3.
36 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

Για π.χample, ο πρampΤα les in usb/host ισχύουν μόνο για περιφερειακά με υλικό USB Host (όπως το ESP32-S3) και το ESP32-C3 δεν διαθέτει αυτό το περιφερειακό. Το σύστημα μεταγλώττισης παρέχει συνήθως προτροπές κατά τον ορισμό του στόχου. Το README file κάθε πρώηνampΤο le παραθέτει τα υποστηριζόμενα τσιπ. · πρωτόκολλα: Αυτός ο υποκατάλογος περιέχει π.χamples για διάφορα πρωτόκολλα επικοινωνίας, συμπεριλαμβανομένων των MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, που καλύπτουν ένα ευρύ φάσμα πρωτοκόλλων επικοινωνίας π.χ.ampλιγότερα που απαιτούνται για την ανάπτυξη του IoT. · Προμήθεια: Εδώ, θα βρείτε την παροχή π.χamples για διαφορετικές μεθόδους, όπως η παροχή Wi-Fi και η παροχή Bluetooth LE. · σύστημα: Αυτός ο υποκατάλογος περιλαμβάνει τον εντοπισμό σφαλμάτων συστήματος π.χamples (π.χ. ανίχνευση στοίβας, ανίχνευση χρόνου εκτέλεσης, παρακολούθηση εργασιών), διαχείριση ενέργειας π.χamples (π.χ. διάφορες καταστάσεις ύπνου, συν-επεξεργαστές) και π.χampΣχετίζονται με κοινά στοιχεία συστήματος όπως τερματικό κονσόλας, βρόχος συμβάντων και χρονοδιακόπτης συστήματος. · αποθήκευση: Σε αυτόν τον υποκατάλογο, θα ανακαλύψετε πampλιγότερο από όλα file συστήματα και μηχανισμοί αποθήκευσης που υποστηρίζονται από το ESP-IDF (όπως ανάγνωση και εγγραφή Flash, κάρτας SD και άλλων μέσων αποθήκευσης), καθώς και π.χ.amples of non-volatile storage (NVS), FatFS, SPIFFS και άλλα file λειτουργίες του συστήματος. · ασφάλεια: Αυτός ο υποκατάλογος περιέχει π.χampπου σχετίζονται με την κρυπτογράφηση flash. (2) Κατάλογος αλυσίδας εργαλείων μεταγλώττισης ESP-IDF (/.espressif), όπως φαίνεται στην Εικόνα 4.3.
Εικόνα 4.3. Κατάλογος αλυσίδας εργαλείων μεταγλώττισης ESP-IDF
Κεφάλαιο 4. Διαμόρφωση Αναπτυξιακού Περιβάλλοντος 37

ένα. Κατάλογος διανομής λογισμικού περιστ
Η αλυσίδα εργαλείων ESP-IDF και άλλο λογισμικό διανέμονται με τη μορφή συμπιεσμένων πακέτων. Κατά τη διάρκεια της διαδικασίας εγκατάστασης, το εργαλείο εγκατάστασης κατεβάζει πρώτα το συμπιεσμένο πακέτο στον κατάλογο dist και, στη συνέχεια, το εξάγει στον καθορισμένο κατάλογο. Μόλις ολοκληρωθεί η εγκατάσταση, τα περιεχόμενα σε αυτόν τον κατάλογο μπορούν να αφαιρεθούν με ασφάλεια.
σι. Κατάλογος εικονικού περιβάλλοντος Python python env
Διαφορετικές εκδόσεις του ESP-IDF βασίζονται σε συγκεκριμένες εκδόσεις πακέτων Python. Η εγκατάσταση αυτών των πακέτων απευθείας στον ίδιο κεντρικό υπολογιστή μπορεί να οδηγήσει σε διενέξεις μεταξύ των εκδόσεων πακέτων. Για να το αντιμετωπίσει αυτό, το ESP-IDF χρησιμοποιεί εικονικά περιβάλλοντα Python για να απομονώσει διαφορετικές εκδόσεις πακέτων. Με αυτόν τον μηχανισμό, οι προγραμματιστές μπορούν να εγκαταστήσουν πολλές εκδόσεις του ESP-IDF στον ίδιο κεντρικό υπολογιστή και να εναλλάσσονται εύκολα μεταξύ τους εισάγοντας διαφορετικές μεταβλητές περιβάλλοντος.
ντο. Εργαλεία καταλόγου αλυσίδας εργαλείων μεταγλώττισης ESP-IDF
Αυτός ο κατάλογος περιέχει κυρίως εργαλεία πολλαπλής μεταγλώττισης που απαιτούνται για τη μεταγλώττιση έργων ESP-IDF, όπως εργαλεία CMake, εργαλεία δημιουργίας Ninja και την αλυσίδα εργαλείων gcc που δημιουργεί το τελικό εκτελέσιμο πρόγραμμα. Επιπλέον, αυτός ο κατάλογος φιλοξενεί την τυπική βιβλιοθήκη της γλώσσας C/C++ μαζί με την αντίστοιχη κεφαλίδα fileμικρό. Εάν ένα πρόγραμμα αναφέρεται σε μια κεφαλίδα συστήματος file όπως #include , η αλυσίδα εργαλείων μεταγλώττισης θα εντοπίσει το 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 ή άλλα συστήματα που βασίζονται στο Debian. Αυτή η ενότητα παρέχει οδηγίες για τη ρύθμιση του περιβάλλοντος ανάπτυξης ESP-IDF στο Ubuntu 20.04.
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 to 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 δεν υποστηρίζεται; Α: Το ESP-IDF v4.3 απαιτεί έκδοση Python που δεν είναι χαμηλότερη από την έκδοση 3.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 –recursive https://github.com/espressif/esp-idf.git
Στην παραπάνω εντολή, η παράμετρος -b v4.3.2 καθορίζει την έκδοση προς λήψη (σε αυτήν την περίπτωση, έκδοση 4.3.2). Η παράμετρος –recursive διασφαλίζει ότι όλα τα υποαποθετήρια του 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 Ρύθμιση περιβάλλοντος ανάπτυξης ESP-IDF στα Windows
1. Κατεβάστε το πρόγραμμα εγκατάστασης εργαλείων ESP-IDF
ΣΥΜΒΟΥΛΕΣ Συνιστάται η ρύθμιση του περιβάλλοντος ανάπτυξης ESP-IDF σε Windows 10 ή νεότερη έκδοση. Μπορείτε να κάνετε λήψη του προγράμματος εγκατάστασης από τη διεύθυνση https://dl.espressif.com/dl/esp-idf/. Το πρόγραμμα εγκατάστασης είναι επίσης ένα λογισμικό ανοιχτού κώδικα και ο πηγαίος κώδικας του μπορεί να είναι viewέκδοση στη διεύθυνση https: //github.com/espressif/idf-installer.
· Διαδικτυακό πρόγραμμα εγκατάστασης εργαλείων ESP-IDF
Αυτό το πρόγραμμα εγκατάστασης είναι σχετικά μικρό, περίπου 4 MB σε μέγεθος και άλλα πακέτα και κώδικας θα ληφθούν κατά τη διαδικασία εγκατάστασης. Το advantage του διαδικτυακού προγράμματος εγκατάστασης είναι ότι όχι μόνο μπορούν να ληφθούν πακέτα λογισμικού και κώδικας κατά απαίτηση κατά τη διαδικασία εγκατάστασης, αλλά επιτρέπει επίσης την εγκατάσταση όλων των διαθέσιμων εκδόσεων του ESP-IDF και του πιο πρόσφατου κλάδου του κώδικα GitHub (όπως ο κύριος κλάδος). . Το μειονέκτημαtage είναι ότι απαιτεί σύνδεση δικτύου κατά τη διαδικασία εγκατάστασης, η οποία μπορεί να προκαλέσει αποτυχία εγκατάστασης λόγω προβλημάτων δικτύου.
40 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

· Πρόγραμμα εγκατάστασης εργαλείων ESP-IDF εκτός σύνδεσης Αυτό το πρόγραμμα εγκατάστασης είναι μεγαλύτερο, περίπου 1 GB σε μέγεθος και περιέχει όλα τα πακέτα λογισμικού και τον κώδικα που απαιτούνται για τη ρύθμιση του περιβάλλοντος. Το κύριο πλεονέκτημαtage του προγράμματος εγκατάστασης εκτός σύνδεσης είναι ότι μπορεί να χρησιμοποιηθεί σε υπολογιστές χωρίς πρόσβαση στο Διαδίκτυο και γενικά έχει υψηλότερο ποσοστό επιτυχίας εγκατάστασης. Θα πρέπει να σημειωθεί ότι το πρόγραμμα εγκατάστασης εκτός σύνδεσης μπορεί να εγκαταστήσει μόνο σταθερές εκδόσεις 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: A Comprehensive Guide to 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
Η διαδικασία εγκατάστασης του περιβάλλοντος ανάπτυξης ESP-IDF σε ένα σύστημα Mac είναι η ίδια με αυτή σε ένα σύστημα 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
Ακολουθήστε τις οδηγίες που παρέχονται στην ενότητα 4.2.1 για να εγκαταστήσετε την αλυσίδα εργαλείων ανάπτυξης ESP-IDF. Τα βήματα είναι τα ίδια όπως για την εγκατάσταση σε σύστημα Linux.
4.2.4 Εγκατάσταση κωδικού VS
Από προεπιλογή, το ESP-IDF SDK δεν περιλαμβάνει εργαλείο επεξεργασίας κώδικα (αν και το πιο πρόσφατο πρόγραμμα εγκατάστασης ESP-IDF για Windows προσφέρει την επιλογή εγκατάστασης του ESP-IDF Eclipse). Μπορείτε να χρησιμοποιήσετε οποιοδήποτε εργαλείο επεξεργασίας κειμένου της επιλογής σας για να επεξεργαστείτε τον κώδικα και στη συνέχεια να τον μεταγλωττίσετε χρησιμοποιώντας εντολές τερματικού.
Ένα δημοφιλές εργαλείο επεξεργασίας κώδικα είναι το VS Code (Visual Studio Code), το οποίο είναι ένας δωρεάν και πλούσιος επεξεργαστής κώδικα με φιλική προς το χρήστη διεπαφή. Προσφέρει διάφορα plugins που παρέχουν λειτουργίες όπως πλοήγηση κώδικα, επισήμανση σύνταξης, έλεγχος έκδοσης Git και ενσωμάτωση τερματικού. Επιπλέον, η Espressif έχει αναπτύξει μια ειδική προσθήκη που ονομάζεται Espressif IDF για VS Code, η οποία απλοποιεί τη διαμόρφωση και τον εντοπισμό σφαλμάτων του έργου.
Μπορείτε να χρησιμοποιήσετε την εντολή κώδικα στο τερματικό για να ανοίξετε γρήγορα τον τρέχοντα φάκελο στο VS Code. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε τη συντόμευση Ctrl+ για να ανοίξετε την προεπιλεγμένη κονσόλα τερματικού του συστήματος στο VS Code.
ΣΥΜΒΟΥΛΕΣ Συνιστάται η χρήση του VS Code για την ανάπτυξη κώδικα ESP32-C3. Κατεβάστε και εγκαταστήστε την πιο πρόσφατη έκδοση του 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, διευκολύνοντας την ανάπτυξη εφαρμογών που σχετίζονται με την τεχνητή νοημοσύνη. Ως γλώσσα σεναρίου, δεν υπάρχει ανάγκη για επαναλαμβανόμενη μεταγλώττιση. μπορούν να γίνουν τροποποιήσεις και τα σενάρια μπορούν να εκτελεστούν απευθείας.
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 υποστηρίζει πολλαπλά τσιπ IoT από την Espressif, συμπεριλαμβανομένων των σειρών 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: A Comprehensive Guide to IoT

καθορίζει τις παραμέτρους και τις εξαρτήσεις μεταγλώττισης του. Κατά τη διαδικασία μεταγλώττισης, τα στοιχεία μεταγλωττίζονται σε ξεχωριστές στατικές βιβλιοθήκες (.a files) και τελικά σε συνδυασμό με άλλα στοιχεία για να σχηματίσουν το πρόγραμμα εφαρμογής.
Το ESP-IDF παρέχει βασικές λειτουργίες, όπως το λειτουργικό σύστημα, τα προγράμματα οδήγησης περιφερειακών και η στοίβα πρωτοκόλλου δικτύου, με τη μορφή στοιχείων. Αυτά τα στοιχεία αποθηκεύονται στον κατάλογο στοιχείων που βρίσκεται στον ριζικό κατάλογο ESP-IDF. Οι προγραμματιστές δεν χρειάζεται να αντιγράψουν αυτά τα στοιχεία στον κατάλογο στοιχείων του myProject. Αντίθετα, χρειάζεται μόνο να καθορίσουν τις σχέσεις εξάρτησης αυτών των στοιχείων στο CMakeLists.txt του έργου file χρησιμοποιώντας τις οδηγίες REQUIRES ή PRIV_REQUIRES. Το σύστημα μεταγλώττισης θα εντοπίσει και θα μεταγλωττίσει αυτόματα τα απαιτούμενα στοιχεία.
Επομένως, ο κατάλογος στοιχείων στο myProject δεν είναι απαραίτητος. Χρησιμοποιείται μόνο για να συμπεριλάβει ορισμένα προσαρμοσμένα στοιχεία του έργου, τα οποία μπορεί να είναι βιβλιοθήκες τρίτων ή κώδικας που καθορίζεται από το χρήστη. Επιπλέον, τα στοιχεία μπορούν να προέρχονται από οποιονδήποτε κατάλογο εκτός από το ESP-IDF ή το τρέχον έργο, όπως από ένα έργο ανοιχτού κώδικα που είναι αποθηκευμένο σε άλλο κατάλογο. Σε αυτήν την περίπτωση, χρειάζεται μόνο να προσθέσετε τη διαδρομή του στοιχείου ορίζοντας τη μεταβλητή EXTRA_COMPONENT_DIRS στο CMakeLists.txt κάτω από τον ριζικό κατάλογο. Αυτός ο κατάλογος θα αντικαταστήσει οποιοδήποτε στοιχείο 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. Γενικά, δεν είναι απαραίτητο να έχετε απευθείας πρόσβαση στα περιεχόμενα του καταλόγου κατασκευής. Το ESP-IDF παρέχει προκαθορισμένες εντολές για αλληλεπίδραση με τον κατάλογο, όπως η χρήση της εντολής flash idf.py για τον αυτόματο εντοπισμό του μεταγλωττισμένου δυαδικού αρχείου file και αναβοσβήστε το στην καθορισμένη διεύθυνση flash ή χρησιμοποιώντας την εντολή idf.py fullclean για να καθαρίσετε ολόκληρο τον κατάλογο κατασκευής.
Πίνακας διαμερισμάτων (partitions.csv) Κάθε έργο απαιτεί έναν πίνακα διαμερισμάτων για να διαιρέσει το χώρο του flash και να καθορίσει το μέγεθος και τη διεύθυνση έναρξης του εκτελέσιμου προγράμματος και του χώρου δεδομένων χρήστη. Η εντολή idf.py flash ή το πρόγραμμα αναβάθμισης OTA θα αναβοσβήνει το υλικολογισμικό στην αντίστοιχη διεύθυνση σύμφωνα με αυτόν τον πίνακα. Το ESP-IDF παρέχει αρκετούς προεπιλεγμένους πίνακες κατατμήσεων σε components/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 περιλαμβάνονται αυτόματα στο σύστημα κατασκευής από προεπιλογή, ακόμα κι αν οι σχέσεις εξάρτησής τους δεν ορίζονται ρητά στο σενάριο μεταγλώττισης. Τα κοινά στοιχεία 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 και ούτω καθεξής. Αυτές οι ρυθμίσεις fileΤα s εισάγονται στο 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. project(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

συλλογή. Με την προσαρμοσμένη συνάρτηση idf_component_register του ESP-IDF, ο ελάχιστος απαιτούμενος κωδικός για μια δέσμη ενεργειών μεταγλώττισης στοιχείων είναι ο εξής:

1. idf_component_register(SRCS "src1.c"

2.

INCLUDE_DIRS "συμπεριλαμβάνονται"

3.

ΑΠΑΙΤΕΙ συστατικό 1)

Η παράμετρος SRCS παρέχει μια λίστα προέλευσης files στο στοιχείο, χωρίζονται με κενά αν υπάρχουν πολλαπλάσια fileμικρό. Η παράμετρος INCLUDE_DIRS παρέχει μια λίστα με δημόσια κεφαλίδα file καταλόγους για το στοιχείο, οι οποίοι θα προστεθούν στη διαδρομή αναζήτησης συμπερίληψης για άλλα στοιχεία που εξαρτώνται από το τρέχον στοιχείο. Η παράμετρος REQUIRES προσδιορίζει τις εξαρτήσεις του δημόσιου στοιχείου για το τρέχον στοιχείο. Είναι απαραίτητο τα στοιχεία να δηλώνουν ρητά από ποια στοιχεία εξαρτώνται, όπως το component2 ανάλογα με το στοιχείο1. Ωστόσο, για το κύριο στοιχείο, το οποίο εξαρτάται από όλα τα στοιχεία από προεπιλογή, η παράμετρος REQUIRES μπορεί να παραλειφθεί.

Επιπλέον, οι εγγενείς εντολές CMake μπορούν επίσης να χρησιμοποιηθούν στο σενάριο μεταγλώττισης. Για π.χample, χρησιμοποιήστε την εντολή set για να ορίσετε μεταβλητές, όπως set(VARIABLE “VALUE”).

4.3.5 Εισαγωγή στις κοινές εντολές
Το ESP-IDF χρησιμοποιεί το CMake (εργαλείο διαμόρφωσης έργου), το Ninja (εργαλείο δημιουργίας έργου) και το esptool (εργαλείο flash) στη διαδικασία μεταγλώττισης κώδικα. Κάθε εργαλείο παίζει διαφορετικό ρόλο στη διαδικασία μεταγλώττισης, δημιουργίας και φλας και υποστηρίζει επίσης διαφορετικές εντολές λειτουργίας. Για να διευκολυνθεί η λειτουργία του χρήστη, το ESP-IDF προσθέτει μια ενοποιημένη διεπαφή idf.py που επιτρέπει τη γρήγορη κλήση των παραπάνω εντολών.
Πριν χρησιμοποιήσετε το idf.py, βεβαιωθείτε ότι:
· Η μεταβλητή περιβάλλοντος IDF_PATH του ESP-IDF έχει προστεθεί στο τρέχον τερματικό. · Ο κατάλογος εκτέλεσης εντολών είναι ο ριζικός κατάλογος του έργου, ο οποίος περιλαμβάνει το
σενάριο μεταγλώττισης έργου CMakeLists.txt.
Οι κοινές εντολές του idf.py είναι οι εξής:
· idf.py –help: εμφάνιση λίστας εντολών και οδηγιών χρήσης τους. · idf.py καθορισμός-στόχος : ρύθμιση της μεταγλώττισης taidf.py fullcleanrget, όπως
ως αντικατάσταση με esp32c3. · idf.py menuconfig: εκκίνηση menuconfig, μια γραφική διαμόρφωση τερματικού
εργαλείο, το οποίο μπορεί να επιλέξει ή να τροποποιήσει τις επιλογές διαμόρφωσης και τα αποτελέσματα διαμόρφωσης αποθηκεύονται στο sdkconfig file. · Δημιουργία idf.py: εκκίνηση μεταγλώττισης κώδικα. Το ενδιάμεσο files και το τελικό εκτελέσιμο πρόγραμμα που δημιουργείται από τη μεταγλώττιση θα αποθηκευτεί στον κατάλογο κατασκευής του έργου από προεπιλογή. Η διαδικασία μεταγλώττισης είναι σταδιακή, πράγμα που σημαίνει ότι εάν μόνο μία πηγή file τροποποιείται, μόνο το τροποποιημένο file θα συνταχθεί την επόμενη φορά.

52 ESP32-C3 Wireless Adventure: Ένας ολοκληρωμένος οδηγός για το IoT

· idf.py clean: καθαρισμός του ενδιάμεσου files που δημιουργούνται από τη συλλογή του έργου. Ολόκληρο το έργο θα αναγκαστεί να μεταγλωττιστεί στην επόμενη συλλογή. Σημειώστε ότι η διαμόρφωση CMake και οι τροποποιήσεις διαμόρφωσης που έγιναν από το menuconfig δεν θα διαγραφούν κατά τη διάρκεια της εκκαθάρισης.
· idf.py fullclean: διαγραφή ολόκληρου του καταλόγου κατασκευής, συμπεριλαμβανομένων όλων των εξόδων διαμόρφωσης CMake fileμικρό. Κατά την εκ νέου κατασκευή του έργου, το CMake θα διαμορφώσει το έργο από την αρχή. Λάβετε υπόψη ότι αυτή η εντολή θα διαγράψει όλα αναδρομικά files στον κατάλογο κατασκευής, γι' αυτό χρησιμοποιήστε το με προσοχή και τη διαμόρφωση του έργου file δεν θα διαγραφεί.
· idf.py flash: αναβοσβήνει το εκτελέσιμο πρόγραμμα δυαδικό file που δημιουργείται από την κατασκευή στο στόχο ESP32-C3. Οι επιλογές -σελ και -β χρησιμοποιούνται για τον ορισμό του ονόματος συσκευής της σειριακής θύρας και του ρυθμού baud για να αναβοσβήνει, αντίστοιχα. Εάν αυτές οι δύο επιλογές δεν καθορίζονται, η σειριακή θύρα θα εντοπιστεί αυτόματα και θα χρησιμοποιηθεί ο προεπιλεγμένος ρυθμός baud.
· Οθόνη idf.py: εμφανίζει την έξοδο σειριακής θύρας του στόχου ESP32-C3. Η επιλογή -p μπορεί να χρησιμοποιηθεί για να καθορίσετε το όνομα της συσκευής της σειριακής θύρας από την πλευρά του κεντρικού υπολογιστή. Κατά τη διάρκεια της εκτύπωσης σε σειριακή θύρα, πατήστε το συνδυασμό πλήκτρων Ctrl+] για έξοδο από την οθόνη.
Οι παραπάνω εντολές μπορούν επίσης να συνδυαστούν ανάλογα με τις ανάγκες. Για π.χample, η εντολή idf.py build flash monitor θα εκτελέσει τη συλλογή κώδικα, θα αναβοσβήσει και θα ανοίξει την οθόνη σειριακής θύρας με τη σειρά.
Μπορείτε να επισκεφτείτε τη διεύθυνση https://bookc3.espressif.com/build-system για να μάθετε περισσότερα σχετικά με το σύστημα συλλογής ESP-IDF.
4.4 Εξάσκηση: Σύνταξη Εξample Πρόγραμμα "Blink"
4.4.1 Πρample Ανάλυση
Αυτή η ενότητα θα λάβει το πρόγραμμα Blink ως πρώηνample να αναλύσουμε το file τη δομή και τους κανόνες κωδικοποίησης ενός πραγματικού έργου λεπτομερώς. Το πρόγραμμα Blink υλοποιεί το εφέ LED που αναβοσβήνει και το έργο βρίσκεται στον κατάλογο π.χamples/get-started/blink, που περιέχει μια πηγή file, διαμόρφωση files, και πολλά σενάρια μεταγλώττισης.
Το έργο έξυπνου φωτός που παρουσιάζεται σε αυτό το βιβλίο βασίζεται σε αυτό το πample πρόγραμμα. Οι λειτουργίες θα προστεθούν σταδιακά σε επόμενα κεφάλαια για να ολοκληρωθεί τελικά.
Πηγαίος κώδικας Για να επιδειχθεί ολόκληρη η διαδικασία ανάπτυξης, το πρόγραμμα Blink έχει αντιγραφεί στο esp32c3-iot-projects/υλικολογισμικό συσκευής/1 αναβοσβήνει.
Η δομή καταλόγου του έργου αναλαμπής fileΤο s φαίνεται στο Σχήμα 4.15.
Το έργο αναβοσβήνει περιέχει μόνο έναν κύριο κατάλογο, ο οποίος είναι ένα ειδικό στοιχείο που
Κεφάλαιο 4. Διαμόρφωση Αναπτυξιακού Περιβάλλοντος 53

Εικόνα 4.15. File δομή καταλόγου του έργου blink

πρέπει να περιλαμβάνεται όπως περιγράφεται στην ενότητα 4.3.2. Ο κύριος κατάλογος χρησιμοποιείται κυρίως για την αποθήκευση της υλοποίησης της συνάρτησης app_main(), η οποία είναι το σημείο εισόδου στο πρόγραμμα χρήστη. Το έργο αναλαμπής δεν περιλαμβάνει τον κατάλογο στοιχείων, επειδή αυτό το π.χ.ampΧρειάζεται μόνο να χρησιμοποιεί τα εξαρτήματα που συνοδεύουν το ESP-IDF και δεν απαιτεί πρόσθετα εξαρτήματα. Το CMakeLists.txt που περιλαμβάνεται στο έργο αναλαμπής χρησιμοποιείται για την καθοδήγηση της διαδικασίας μεταγλώττισης, ενώ το Kconfig.projbuild χρησιμοποιείται για την προσθήκη στοιχείων διαμόρφωσης για αυτό το example πρόγραμμα στο μενούconfig. Άλλα περιττά fileΤο s δεν θα επηρεάσει τη σύνταξη του κώδικα, επομένως δεν θα συζητηθούν εδώ. Μια λεπτομερής εισαγωγή στο έργο blink files έχει ως εξής.

1. /*blink.c περιλαμβάνει την ακόλουθη κεφαλίδα fileμικρό*/

2. #περιλαμβάνω

//Κεφαλίδα βιβλιοθήκης Standard 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Τα s που περιλαμβάνονται ενδέχεται να επηρεάσουν το τελικό αποτέλεσμα της συλλογής, οπότε προσπαθήστε να το κάνετε

ακολουθήστε τους προεπιλεγμένους κανόνες. Θα πρέπει να σημειωθεί ότι το sdkconfig.h δημιουργείται αυτόματα

από το kconfig και μπορεί να ρυθμιστεί μόνο μέσω της εντολής idf.py menuconfig.

Άμεση τροποποίηση αυτής της κεφαλίδας file θα αντικατασταθεί.

1. /*Μπορείτε να επιλέξετε το GPIO που αντιστοιχεί στο LED στο μενού idf.py config και το αποτέλεσμα τροποποίησης του menuconfig είναι ότι η τιμή του CONFIG_BLINK

_Το GPIO θα αλλάξει. Μπορείτε επίσης να τροποποιήσετε απευθείας τον ορισμό της μακροεντολής

εδώ και αλλάξτε το CONFIG_BLINK_GPIO σε μια σταθερή τιμή.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main(void)

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) {
/*Print log*/ printf("Turning the LEDn"); /*Σβήστε το LED (χαμηλό επίπεδο εξόδου)*/ gpio_set_level(BLINK_GPIO, 0); /*Καθυστέρηση (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("Ενεργοποίηση της λυχνίας LED"); /*Ενεργοποιήστε το LED (υψηλό επίπεδο εξόδου)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

Η συνάρτηση app_main() στο Blink exampΤο πρόγραμμα le χρησιμεύει ως το σημείο εισόδου για τα προγράμματα χρηστών. Είναι μια απλή συνάρτηση χωρίς παραμέτρους και χωρίς τιμή επιστροφής. Αυτή η λειτουργία καλείται μετά την ολοκλήρωση της προετοιμασίας του συστήματος, η οποία περιλαμβάνει εργασίες όπως η προετοιμασία της σειριακής θύρας καταγραφής, η διαμόρφωση ενός/διπλού πυρήνα και η διαμόρφωση του φύλακα.

Η συνάρτηση app_main() εκτελείται στο πλαίσιο μιας εργασίας που ονομάζεται main. Το μέγεθος στοίβας και η προτεραιότητα αυτής της εργασίας μπορούν να ρυθμιστούν στο μενούconfig Componentconfig Common ESP που σχετίζεται με.

Για απλές εργασίες όπως το να αναβοσβήνει ένα LED, όλος ο απαραίτητος κώδικας μπορεί να εφαρμοστεί απευθείας στη συνάρτηση app_main(). Αυτό συνήθως περιλαμβάνει την προετοιμασία του GPIO που αντιστοιχεί στο LED και τη χρήση βρόχου while(1) για την ενεργοποίηση και απενεργοποίηση του LED. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το 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 και η πηγή files που προστέθηκαν στο SRCS θα μεταγλωττιστούν. Ταυτόχρονα, το "."", το οποίο αντιπροσωπεύει τη διαδρομή όπου βρίσκεται το CMakeLists.txt, θα πρέπει να προστεθεί στο INCLUDE_DIRS ως οι κατάλογοι αναζήτησης για την κεφαλίδα fileμικρό. Το περιεχόμενο του CMakeLists.txt έχει ως εξής:
1. #Specify v3.5 ως η παλαιότερη έκδοση CMake που υποστηρίζεται από το τρέχον έργο 2. #Εκδόσεις χαμηλότερες από v3.5 πρέπει να αναβαθμιστούν πριν συνεχιστεί η μεταγλώττιση 3. cmake_minimum_required(VERSION 3.5) 4. #Include the default CMake configuration of the ESP -Σύστημα συλλογής IDF

Κεφάλαιο 4. Διαμόρφωση Αναπτυξιακού Περιβάλλοντος 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Δημιουργία έργου με όνομα "blink" 7. project(myProject)
Μεταξύ αυτών, το CMakeLists.txt στον ριζικό κατάλογο περιλαμβάνει κυρίως το $ENV{IDF_ PATH}/tools/cmake/project.cmake, το οποίο είναι η κύρια διαμόρφωση του CMake file παρέχεται από το ESP-IDF. Χρησιμοποιείται για τη συν

Έγγραφα / Πόροι

Συστήματα Espressif ESP32-C3 Wireless Adventure [pdf] Οδηγός χρήστη
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

Αναφορές

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευτεί. Τα υποχρεωτικά πεδία επισημαίνονται *