ESP32 Basic Starter
Εργαλειοθήκη
Λίστα συσκευασίας
ESP32 Εισαγωγή
Νέος στο ESP32; Ξεκινήστε εδώ! Το ESP32 είναι μια σειρά μικροελεγκτών χαμηλού κόστους και χαμηλής κατανάλωσης System on a Chip (SoC) που αναπτύχθηκε από την Espressif που περιλαμβάνει ασύρματες δυνατότητες Wi-Fi και Bluetooth και επεξεργαστή διπλού πυρήνα. Εάν είστε εξοικειωμένοι με το ESP8266, το ESP32 είναι ο διάδοχός του, γεμάτο με πολλές νέες δυνατότητες.Προδιαγραφές ESP32
Εάν θέλετε να γίνετε λίγο πιο τεχνικοί και συγκεκριμένοι, μπορείτε να ρίξετε μια ματιά στις παρακάτω λεπτομερείς προδιαγραφές του ESP32 (πηγή: http://esp32.net/)—για περισσότερες λεπτομέρειες, ελέγξτε το φύλλο δεδομένων):
- Ασύρματη συνδεσιμότητα WiFi: Ρυθμός δεδομένων 150.0 Mbps με HT40
- Bluetooth: BLE (Bluetooth Low Energy) και Bluetooth Classic
- Επεξεργαστής: Μικροεπεξεργαστής Tensilica Xtensa Dual-Core 32-bit LX6, που λειτουργεί στα 160 ή 240 MHz
- Μνήμη:
- ROM: 448 KB (για εκκίνηση και βασικές λειτουργίες)
- SRAM: 520 KB (για δεδομένα και οδηγίες)
- RTC fas SRAM: 8 KB (για αποθήκευση δεδομένων και κύρια CPU κατά την εκκίνηση RTC από τη λειτουργία βαθιάς αναστολής)
- RTC αργή SRAM: 8 KB (για πρόσβαση με συν-επεξεργαστή κατά τη λειτουργία βαθιάς αναστολής λειτουργίας) eFuse: 1 Kbit (εκ των οποίων 256 bit χρησιμοποιούνται για το σύστημα (διεύθυνση MAC και διαμόρφωση τσιπ) και τα υπόλοιπα 768 bit δεσμεύονται για εφαρμογές πελατών, συμπεριλαμβανομένων Flash-Κρυπτογράφηση και Chip-ID)
Ενσωματωμένο φλας: φλας συνδεδεμένο εσωτερικά μέσω IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 και SD_DATA_1 σε ESP32-D2WD και ESP32-PICO-D4.
- 0 MiB (τσιπ ESP32-D0WDQ6, ESP32-D0WD και ESP32-S0WD)
- 2 MiB (τσιπ ESP32-D2WD)
- 4 MiB (μονάδα ESP32-PICO-D4 SiP)
Χαμηλή ισχύς: διασφαλίζει ότι μπορείτε ακόμα να χρησιμοποιείτε μετατροπές ADC, π.χample, κατά τον βαθύ ύπνο.
Περιφερειακή Είσοδος/Έξοδος:
- περιφερειακή διασύνδεση με DMA που περιλαμβάνει χωρητική αφή
- ADC (Μετατροπέας αναλογικού σε ψηφιακό)
- DAC (μετατροπέας ψηφιακού σε αναλογικό)
- I²C (Inter-Integrated Circuit)
- UART (Καθολικός ασύγχρονος δέκτης/πομπός)
- SPI (σειριακή περιφερειακή διεπαφή)
- I²S (Integrated Interchip Sound)
- RMII (Μειωμένη διεπαφή ανεξάρτητη από τα μέσα)
- PWM (Διαμόρφωση πλάτους παλμού)
Ασφάλεια: επιταχυντές υλικού για AES και SSL/TLS
Πίνακες ανάπτυξης ESP32
Το ESP32 αναφέρεται στο γυμνό τσιπ ESP32. Ωστόσο, ο όρος "ESP32" χρησιμοποιείται επίσης για να αναφέρεται σε πλακέτες ανάπτυξης ESP32. Η χρήση γυμνών τσιπ ESP32 δεν είναι εύκολη ή πρακτική, ειδικά κατά την εκμάθηση, τη δοκιμή και τη δημιουργία πρωτοτύπων. Τις περισσότερες φορές, θα θέλετε να χρησιμοποιήσετε μια πλακέτα ανάπτυξης ESP32.
Θα χρησιμοποιήσουμε την πλακέτα ESP32 DEVKIT V1 ως αναφορά. Η παρακάτω εικόνα δείχνει την πλακέτα ESP32 DEVKIT V1, έκδοση με 30 ακίδες GPIO.Προδιαγραφές – ESP32 DEVKIT V1
Ο παρακάτω πίνακας δείχνει μια περίληψη των χαρακτηριστικών και των προδιαγραφών της πλακέτας ESP32 DEVKIT V1 DOIT:
Αριθμός πυρήνων | 2 (διπύρηνος) |
Wi-Fi | 2.4 GHz έως 150 Mbit/s |
Bluetooth | BLE (Bluetooth Low Energy) και παλαιού τύπου Bluetooth |
Αρχιτεκτονική | 32 bit |
Συχνότητα ρολογιού | Έως 240 MHz |
ΕΜΒΟΛΟ | 512 KB |
Καρφίτσες | 30 (ανάλογα με το μοντέλο) |
Περιφερειακά | Capacitive touch, ADC (μετατροπέας αναλογικού σε ψηφιακό), DAC (μετατροπέας ψηφιακού σε αναλογικό), 12C (Inter-Integrated Circuit), UART (καθολικός ασύγχρονος δέκτης/πομπός), CAN 2.0 (Netwokr Περιοχής Ελεγκτή), SPI (Σειριακή περιφερειακή διεπαφή) , 12S (Integrated Inter-IC Ήχος), RMII (Μειωμένη διεπαφή ανεξάρτητη από τα μέσα), PWM (διαμόρφωση πλάτους παλμού) και άλλα. |
Ενσωματωμένα κουμπιά | Κουμπιά RESET και BOOT |
Ενσωματωμένα LED | ενσωματωμένο μπλε LED συνδεδεμένο στο GPIO2. ενσωματωμένο κόκκινο LED που δείχνει ότι η πλακέτα τροφοδοτείται |
USB σε UART γέφυρα |
CP2102 |
Έρχεται με μια διεπαφή microUSB που μπορείτε να χρησιμοποιήσετε για να συνδέσετε την πλακέτα στον υπολογιστή σας για να ανεβάσετε κώδικα ή να χρησιμοποιήσετε τροφοδοσία.
Χρησιμοποιεί το τσιπ CP2102 (USB σε UART) για να επικοινωνεί με τον υπολογιστή σας μέσω μιας θύρας COM χρησιμοποιώντας μια σειριακή διεπαφή. Ένα άλλο δημοφιλές τσιπ είναι το CH340. Ελέγξτε τι είναι ο μετατροπέας τσιπ USB σε UART στην πλακέτα σας, επειδή θα χρειαστεί να εγκαταστήσετε τα απαιτούμενα προγράμματα οδήγησης, ώστε ο υπολογιστής σας να μπορεί να επικοινωνεί με την πλακέτα (περισσότερες πληροφορίες σχετικά αργότερα σε αυτόν τον οδηγό).
Αυτή η πλακέτα διαθέτει επίσης ένα κουμπί RESET (μπορεί να φέρει την ένδειξη EN) για επανεκκίνηση της πλακέτας και ένα κουμπί BOOT για να τεθεί η πλακέτα σε λειτουργία αναβοσβήνει (διατίθεται για λήψη κωδικού). Σημειώστε ότι ορισμένες πλακέτες ενδέχεται να μην έχουν κουμπί BOOT.
Έρχεται επίσης με ένα ενσωματωμένο μπλε LED που είναι εσωτερικά συνδεδεμένο στο GPIO 2. Αυτό το LED είναι χρήσιμο για εντοπισμό σφαλμάτων για να δώσει κάποιο είδος οπτικής φυσικής εξόδου. Υπάρχει επίσης ένα κόκκινο LED που ανάβει όταν παρέχετε ρεύμα στην πλακέτα.ESP32 Pinout
Τα περιφερειακά ESP32 περιλαμβάνουν:
- 18 κανάλια μετατροπέα αναλογικού σε ψηφιακό (ADC).
- 3 διεπαφές SPI
- 3 διεπαφές UART
- 2 διεπαφές I2C
- 16 κανάλια εξόδου PWM
- 2 μετατροπείς ψηφιακού σε αναλογικό (DAC)
- 2 διεπαφές I2S
- 10 GPIO χωρητικής ανίχνευσης
Οι δυνατότητες ADC (μετατροπέας αναλογικού σε ψηφιακό) και DAC (μετατροπέας ψηφιακού σε αναλογικό) αντιστοιχίζονται σε συγκεκριμένες στατικές ακίδες. Ωστόσο, μπορείτε να αποφασίσετε ποιες ακίδες είναι UART, I2C, SPI, PWM κ.λπ. – απλά πρέπει να τις αντιστοιχίσετε στον κωδικό. Αυτό είναι δυνατό λόγω της δυνατότητας πολυπλεξίας του τσιπ ESP32.
Παρόλο που μπορείτε να ορίσετε τις ιδιότητες των ακίδων στο λογισμικό, υπάρχουν καρφίτσες που έχουν εκχωρηθεί από προεπιλογή όπως φαίνεται στην παρακάτω εικόναΕπιπλέον, υπάρχουν καρφίτσες με συγκεκριμένα χαρακτηριστικά που τα καθιστούν κατάλληλα ή όχι για ένα συγκεκριμένο έργο. Ο παρακάτω πίνακας δείχνει ποιες ακίδες είναι καλύτερο να χρησιμοποιηθούν ως είσοδοι, έξοδοι και ποιες πρέπει να είστε προσεκτικοί.
Οι πινέζες που επισημαίνονται με πράσινο είναι ΟΚ για χρήση. Αυτά που επισημαίνονται με κίτρινο χρώμα είναι εντάξει για χρήση, αλλά πρέπει να δώσετε προσοχή γιατί μπορεί να έχουν μια απροσδόκητη συμπεριφορά κυρίως κατά την εκκίνηση. Οι ακίδες που επισημαίνονται με κόκκινο δεν συνιστάται να χρησιμοποιούνται ως είσοδοι ή έξοδοι.
GP IO | Εισαγωγή | Παραγωγή | Σημειώσεις |
0 | τράβηξε επάνω | OK | εξάγει σήμα PWM κατά την εκκίνηση, πρέπει να είναι LOW για να μπει σε λειτουργία αναβοσβήνει |
1 | TX pin | OK | έξοδος εντοπισμού σφαλμάτων κατά την εκκίνηση |
2 | OK | OK | συνδεδεμένο σε ενσωματωμένη λυχνία LED, πρέπει να παραμείνει αιωρούμενη ή LOW για να μπει στη λειτουργία αναβοσβήνει |
3 | OK | Καρφίτσα RX | ΨΗΛΑ στην εκκίνηση |
4 | OK | OK | |
5 | OK | OK | εξάγει σήμα PWM στην εκκίνηση, καρφίτσα ιμάντα |
12 | OK | OK | Η μπότα αποτυγχάνει αν τραβήξει ψηλά, καρφίτσα ιμάντων |
13 | OK | OK | |
14 | OK | OK | εξάγει σήμα PWM κατά την εκκίνηση |
15 | OK | OK | εξάγει σήμα PWM στην εκκίνηση, καρφίτσα ιμάντα |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | μόνο εισαγωγή | |
35 | OK | μόνο εισαγωγή | |
36 | OK | μόνο εισαγωγή | |
39 | OK | μόνο εισαγωγή |
Συνεχίστε την ανάγνωση για μια πιο λεπτομερή και σε βάθος ανάλυση των GPIO του ESP32 και των λειτουργιών του.
Εισαγάγετε μόνο καρφίτσες
Τα GPIO 34 έως 39 είναι GPI - μόνο ακίδες εισόδου. Αυτές οι ακίδες δεν έχουν εσωτερικές αντιστάσεις έλξης ή έλξης. Δεν μπορούν να χρησιμοποιηθούν ως έξοδοι, επομένως χρησιμοποιήστε αυτές τις ακίδες μόνο ως εισόδους:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI flash ενσωματωμένο στο ESP-WROOM-32
Τα GPIO 6 έως GPIO 11 εκτίθενται σε ορισμένες πλακέτες ανάπτυξης ESP32. Ωστόσο, αυτές οι ακίδες συνδέονται με το ενσωματωμένο φλας SPI στο τσιπ ESP-WROOM-32 και δεν συνιστώνται για άλλες χρήσεις. Επομένως, μην χρησιμοποιείτε αυτές τις καρφίτσες στα έργα σας:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Χωρητικά GPIO αφής
Το ESP32 διαθέτει 10 εσωτερικούς χωρητικούς αισθητήρες αφής. Αυτά μπορούν να αισθανθούν διακυμάνσεις σε οτιδήποτε έχει ηλεκτρικό φορτίο, όπως το ανθρώπινο δέρμα. Έτσι, μπορούν να ανιχνεύουν παραλλαγές που προκαλούνται όταν αγγίζετε τα GPIO με ένα δάχτυλο. Αυτές οι ακίδες μπορούν εύκολα να ενσωματωθούν σε χωρητικά μαξιλαράκια και να αντικαταστήσουν τα μηχανικά κουμπιά. Οι χωρητικές ακίδες αφής μπορούν επίσης να χρησιμοποιηθούν για την αφύπνιση του ESP32 από βαθύ ύπνο. Αυτοί οι εσωτερικοί αισθητήρες αφής συνδέονται με αυτά τα GPIO:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Αναλογικός σε ψηφιακός μετατροπέας (ADC)
Το ESP32 έχει κανάλια εισόδου ADC 18 x 12 bit (ενώ το ESP8266 έχει μόνο 1x 10 bit ADC). Αυτά είναι τα GPIO που μπορούν να χρησιμοποιηθούν ως ADC και αντίστοιχα κανάλια:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
Σημείωμα: Οι ακίδες ADC2 δεν μπορούν να χρησιμοποιηθούν όταν χρησιμοποιείται Wi-Fi. Επομένως, εάν χρησιμοποιείτε Wi-Fi και αντιμετωπίζετε πρόβλημα με τη λήψη της τιμής από ένα ADC2 GPIO, μπορείτε να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε ένα ADC1 GPIO. Αυτό θα πρέπει να λύσει το πρόβλημά σας.
Τα κανάλια εισόδου ADC έχουν ανάλυση 12 bit. Αυτό σημαίνει ότι μπορείτε να λάβετε αναλογικές μετρήσεις από 0 έως 4095, στις οποίες το 0 αντιστοιχεί σε 0V και 4095 έως 3.3V. Μπορείτε επίσης να ορίσετε την ανάλυση των καναλιών σας στον κώδικα και την περιοχή ADC.
Οι ακίδες ADC ESP32 δεν έχουν γραμμική συμπεριφορά. Πιθανότατα δεν θα μπορείτε να διακρίνετε μεταξύ 0 και 0.1 V ή μεταξύ 3.2 και 3.3 V. Πρέπει να το έχετε υπόψη σας όταν χρησιμοποιείτε τις ακίδες ADC. Θα έχετε μια συμπεριφορά παρόμοια με αυτή που φαίνεται στο παρακάτω σχήμα.Μετατροπέας ψηφιακού σε αναλογικό (DAC)
Υπάρχουν κανάλια DAC 2 x 8 bit στο ESP32 για μετατροπή ψηφιακών σημάτων σε αναλογική έντασηtage έξοδοι σήματος. Αυτά είναι τα κανάλια DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
Υπάρχει υποστήριξη RTC GPIO στο ESP32. Τα GPIO που δρομολογούνται στο υποσύστημα χαμηλής κατανάλωσης RTC μπορούν να χρησιμοποιηθούν όταν το ESP32 βρίσκεται σε βαθύ ύπνο. Αυτά τα RTC GPIO μπορούν να χρησιμοποιηθούν για την αφύπνιση του ESP32 από βαθύ ύπνο όταν το Ultra Low
Ο συν-επεξεργαστής Power (ULP) εκτελείται. Τα ακόλουθα GPIO μπορούν να χρησιμοποιηθούν ως εξωτερική πηγή αφύπνισης.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
PWM
Ο ελεγκτής PWM LED ESP32 έχει 16 ανεξάρτητα κανάλια που μπορούν να ρυθμιστούν ώστε να παράγουν σήματα PWM με διαφορετικές ιδιότητες. Όλες οι ακίδες που μπορούν να λειτουργήσουν ως έξοδοι μπορούν να χρησιμοποιηθούν ως ακίδες PWM (τα GPIO 34 έως 39 δεν μπορούν να δημιουργήσουν PWM).
Για να ορίσετε ένα σήμα PWM, πρέπει να ορίσετε αυτές τις παραμέτρους στον κώδικα:
- Συχνότητα σήματος.
- Κύκλος εργασίας;
- Κανάλι PWM;
- GPIO όπου θέλετε να εξάγετε το σήμα.
I2C
Το ESP32 έχει δύο κανάλια I2C και κάθε pin μπορεί να οριστεί ως SDA ή SCL. Όταν χρησιμοποιείτε το ESP32 με το Arduino IDE, οι προεπιλεγμένες ακίδες I2C είναι:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Εάν θέλετε να χρησιμοποιήσετε άλλες ακίδες όταν χρησιμοποιείτε τη βιβλιοθήκη καλωδίων, πρέπει απλώς να καλέσετε:
Wire.begin(SDA, SCL);
SPI
Από προεπιλογή, η αντιστοίχιση pin για το SPI είναι:
SPI | MOSI | ΜΙΣΟ | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Διακοπές
Όλα τα GPIO μπορούν να διαμορφωθούν ως διακοπές.
Καρφίτσες ιμάντων
Το τσιπ ESP32 έχει τις ακόλουθες καρφίτσες:
- GPIO 0 (πρέπει να είναι LOW για να μπείτε σε λειτουργία εκκίνησης)
- GPIO 2 (πρέπει να είναι αιωρούμενο ή LOW κατά την εκκίνηση)
- GPIO 4
- GPIO 5 (πρέπει να είναι HIGH κατά την εκκίνηση)
- GPIO 12 (πρέπει να είναι ΧΑΜΗΛΟ κατά την εκκίνηση)
- GPIO 15 (πρέπει να είναι HIGH κατά την εκκίνηση)
Αυτά χρησιμοποιούνται για τη θέση του ESP32 σε λειτουργία bootloader ή flashing. Στις περισσότερες πλακέτες ανάπτυξης με ενσωματωμένο USB/Serial, δεν χρειάζεται να ανησυχείτε για την κατάσταση αυτών των ακίδων. Η πλακέτα τοποθετεί τις ακίδες στη σωστή κατάσταση για αναβοσβήνει ή λειτουργία εκκίνησης. Περισσότερες πληροφορίες σχετικά με την επιλογή λειτουργίας εκκίνησης ESP32 μπορείτε να βρείτε εδώ.
Ωστόσο, εάν έχετε περιφερειακά συνδεδεμένα σε αυτές τις ακίδες, μπορεί να έχετε πρόβλημα να προσπαθήσετε να ανεβάσετε νέο κώδικα, να αναβοσβήσετε το ESP32 με νέο υλικολογισμικό ή να επαναφέρετε την πλακέτα. Εάν έχετε κάποια περιφερειακά συνδεδεμένα στις ακίδες στερέωσης και αντιμετωπίζετε προβλήματα με τη μεταφόρτωση του κώδικα ή το αναβοσβήσιμο του ESP32, μπορεί να οφείλεται στο ότι αυτά τα περιφερειακά εμποδίζουν το ESP32 να εισέλθει στη σωστή λειτουργία. Διαβάστε την τεκμηρίωση της επιλογής λειτουργίας εκκίνησης για να σας καθοδηγήσει στη σωστή κατεύθυνση. Μετά την επαναφορά, το φλας ή την εκκίνηση, αυτές οι ακίδες λειτουργούν όπως αναμένεται.
Καρφίτσες HIGH στο Boot
Ορισμένα GPIO αλλάζουν την κατάστασή τους σε HIGH ή εξάγουν σήματα PWM κατά την εκκίνηση ή την επαναφορά.
Αυτό σημαίνει ότι εάν έχετε συνδεδεμένες εξόδους σε αυτά τα GPIO, ενδέχεται να λάβετε απροσδόκητα αποτελέσματα κατά την επαναφορά ή την εκκίνηση του ESP32.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 έως GPIO 11 (συνδεδεμένο με την ενσωματωμένη μνήμη flash SPI ESP32 – δεν συνιστάται η χρήση).
- GPIO 14
- GPIO 15
Ενεργοποίηση (EN)
Το Enable (EN) είναι η ακίδα ενεργοποίησης του ρυθμιστή 3.3 V. Είναι τραβηγμένο προς τα πάνω, οπότε συνδέστε το στη γείωση για να απενεργοποιήσετε τον ρυθμιστή 3.3 V. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε αυτήν την καρφίτσα συνδεδεμένη με ένα κουμπί για να επανεκκινήσετε το ESP32 σας, π.χample.
Το ρεύμα GPIO σύρθηκε
Το απόλυτο μέγιστο ρεύμα που αντλείται ανά GPIO είναι 40 mA σύμφωνα με την ενότητα "Συνιστώμενες συνθήκες λειτουργίας" στο φύλλο δεδομένων ESP32.
Ενσωματωμένος αισθητήρας εφέ Hall ESP32
Το ESP32 διαθέτει επίσης έναν ενσωματωμένο αισθητήρα εφέ αίθουσας που ανιχνεύει αλλαγές στο μαγνητικό πεδίο στο περιβάλλον του
ESP32 Arduino IDE
Υπάρχει ένα πρόσθετο για το Arduino IDE που σας επιτρέπει να προγραμματίσετε το ESP32 χρησιμοποιώντας το Arduino IDE και τη γλώσσα προγραμματισμού του. Σε αυτό το σεμινάριο θα σας δείξουμε πώς να εγκαταστήσετε την πλακέτα ESP32 στο Arduino IDE είτε χρησιμοποιείτε Windows, Mac OS X ή Linux.
Προϋποθέσεις: Εγκατεστημένο Arduino IDE
Πριν ξεκινήσετε αυτήν τη διαδικασία εγκατάστασης, πρέπει να έχετε εγκατεστημένο το Arduino IDE στον υπολογιστή σας. Υπάρχουν δύο εκδόσεις του Arduino IDE που μπορείτε να εγκαταστήσετε: έκδοση 1 και έκδοση 2.
Μπορείτε να κατεβάσετε και να εγκαταστήσετε το Arduino IDE κάνοντας κλικ στον παρακάτω σύνδεσμο: arduino.cc/en/Main/Software
Ποια έκδοση Arduino IDE προτείνουμε; Αυτή τη στιγμή υπάρχουν μερικά plugins για το ESP32 (όπως το SPIFFS FileSystem Uploader Plugin) που δεν υποστηρίζονται ακόμη στο Arduino 2. Επομένως, εάν σκοπεύετε να χρησιμοποιήσετε την προσθήκη SPIFFS στο μέλλον, συνιστούμε να εγκαταστήσετε την παλαιού τύπου έκδοση 1.8.X. Απλώς πρέπει να κάνετε κύλιση προς τα κάτω στη σελίδα λογισμικού Arduino για να το βρείτε.
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Για να εγκαταστήσετε την πλακέτα ESP32 στο Arduino IDE, ακολουθήστε τις παρακάτω οδηγίες:
- Στο Arduino IDE, μεταβείτε στο File> Προτιμήσεις
- Εισαγάγετε τα ακόλουθα στο «Πρόσθετος Διευθυντής Διοικητικού Συμβουλίου URLπεδίο s”:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Στη συνέχεια, κάντε κλικ στο κουμπί "OK":Σημείωμα: εάν έχετε ήδη τις πλακέτες ESP8266 URL, μπορείτε να διαχωρίσετε το URLs με κόμμα ως εξής:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Ανοίξτε το Boards Manager. Μεταβείτε στα Εργαλεία > Πίνακας > Διαχειριστής πινάκων…Αναζήτηση για ESP32 and press install button for the “ESP32 by Espressif Systems“:
Αυτό είναι όλο. Θα πρέπει να εγκατασταθεί μετά από λίγα δευτερόλεπτα.
Μεταφορτώστε τον κωδικό δοκιμής
Συνδέστε την πλακέτα ESP32 στον υπολογιστή σας. Με ανοιχτό το Arduino IDE, ακολουθήστε τα παρακάτω βήματα:
- Επιλέξτε την πλακέτα σας στο μενού Εργαλεία > Πίνακας (στην περίπτωσή μου είναι η μονάδα DEV ESP32)
- Επιλέξτε τη Θύρα (αν δεν βλέπετε τη Θύρα COM στο Arduino IDE, πρέπει να εγκαταστήσετε τα προγράμματα οδήγησης CP210x USB σε UART Bridge VCP):
- Ανοίξτε το παρακάτω π.χample under File > Π.χamples > WiFi
(ESP32) > WiFiScan - Ανοίγει ένα νέο σκίτσο στο Arduino IDE σας:
- Πατήστε το κουμπί Upload στο Arduino IDE. Περιμένετε μερικά δευτερόλεπτα μέχρι να μεταγλωττιστεί και να ανέβει ο κώδικας στον πίνακα σας.
- Εάν όλα πήγαν όπως αναμενόταν, θα πρέπει να δείτε την ένδειξη "Ολοκληρώθηκε η μεταφόρτωση". μήνυμα.
- Ανοίξτε τη σειριακή οθόνη Arduino IDE με ρυθμό baud 115200:
- Πατήστε το ενσωματωμένο κουμπί ESP32 Enable και θα δείτε τα διαθέσιμα δίκτυα κοντά στο ESP32 σας:
Αντιμετώπιση προβλημάτων
Εάν προσπαθήσετε να ανεβάσετε ένα νέο σκίτσο στο ESP32 σας και λάβετε αυτό το μήνυμα λάθους "Παρουσιάστηκε μοιραίο σφάλμα: Απέτυχε η σύνδεση στο ESP32: Λήγει το χρονικό όριο... Σύνδεση...". Σημαίνει ότι το ESP32 σας δεν βρίσκεται σε λειτουργία αναβοσβήνει/ανεβάζοντας.
Έχοντας επιλέξει το σωστό όνομα πλακέτας και COM por, ακολουθήστε τα εξής βήματα:
Κρατήστε πατημένο το κουμπί «BOOT» στην πλακέτα ESP32
- Πατήστε το κουμπί "Μεταφόρτωση" στο Arduino IDE για να ανεβάσετε το σκίτσο σας:
- Αφού δείτε το «Σύνδεση…». μήνυμα στο Arduino IDE σας, αφήστε το δάχτυλο από το κουμπί "BOOT":
- Μετά από αυτό, θα πρέπει να δείτε το μήνυμα "Ολοκληρώθηκε η μεταφόρτωση".
Αυτό είναι όλο. Το ESP32 θα πρέπει να έχει το νέο σκίτσο σε λειτουργία. Πατήστε το κουμπί "ENABLE" για να επανεκκινήσετε το ESP32 και να εκτελέσετε το νέο σκίτσο που ανεβάσατε.
Θα πρέπει επίσης να επαναλαμβάνετε αυτή τη σειρά κουμπιών κάθε φορά που θέλετε να ανεβάσετε ένα νέο σκίτσο.
Έργο 1 ESP32 Είσοδοι Έξοδοι
Σε αυτόν τον οδηγό εκκίνησης θα μάθετε πώς να διαβάζετε ψηφιακές εισόδους όπως διακόπτη κουμπιού και να ελέγχετε τις ψηφιακές εξόδους όπως ένα LED χρησιμοποιώντας το ESP32 με Arduino IDE.
Προαπαιτούμενα
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE. Επομένως, βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο των πλακών ESP32 πριν συνεχίσετε:
- Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Ψηφιακές έξοδοι ελέγχου ESP32
Αρχικά, πρέπει να ορίσετε το GPIO που θέλετε να ελέγξετε ως OUTPUT. Χρησιμοποιήστε τη συνάρτηση pinMode() ως εξής:
pinMode(GPIO, OUTPUT);
Για να ελέγξετε μια ψηφιακή έξοδο, χρειάζεται απλώς να χρησιμοποιήσετε τη συνάρτηση digitalWrite(), η οποία δέχεται ως ορίσματα, το GPIO (αριθμός int) στο οποίο αναφέρεστε και την κατάσταση, είτε HIGH είτε LOW.
digitalWrite (GPIO, STATE);
Όλα τα GPIO μπορούν να χρησιμοποιηθούν ως έξοδοι εκτός από τα GPIO 6 έως 11 (συνδεδεμένα με το ενσωματωμένο φλας SPI) και τα GPIO 34, 35, 36 και 39 (εισαγωγή μόνο GPIO).
Μάθετε περισσότερα για τα ESP32 GPIO: ESP32 GPIO Reference Guide
Ψηφιακές εισόδους ανάγνωσης ESP32
Αρχικά, ορίστε το GPIO που θέλετε να διαβάσετε ως INPUT, χρησιμοποιώντας τη συνάρτηση pinMode() ως εξής:
pinMode(GPIO, INPUT);
Για να διαβάσετε μια ψηφιακή είσοδο, όπως ένα κουμπί, χρησιμοποιείτε τη συνάρτηση digitalRead(), η οποία δέχεται ως όρισμα το GPIO (αριθμός int) στο οποίο αναφέρεστε.
digitalRead(GPIO);
Όλα τα GPIO ESP32 μπορούν να χρησιμοποιηθούν ως είσοδοι, εκτός από τα GPIO 6 έως 11 (συνδεδεμένα με το ενσωματωμένο φλας SPI).
Μάθετε περισσότερα για τα ESP32 GPIO: ESP32 GPIO Reference Guide
Έργο Example
Για να σας δείξουμε πώς να χρησιμοποιείτε ψηφιακές εισόδους και ψηφιακές εξόδους, θα δημιουργήσουμε ένα απλό έργο π.χampμε ένα κουμπί και ένα LED. Θα διαβάσουμε την κατάσταση του κουμπιού και θα ανάψουμε το LED ανάλογα όπως φαίνεται στο παρακάτω σχήμα.
Απαιτούμενα εξαρτήματα
Ακολουθεί μια λίστα με τα εξαρτήματα που χρειάζεστε για να φτιάξετε το κύκλωμα:
- ESP32 DEVKIT V1
- LED 5 mm
- Αντίσταση 220 Ohm
- Κουμπί
- Αντίσταση 10k Ohm
- Breadboard
- Καλώδια βραχυκυκλωτήρα
Σχηματικό Διάγραμμα
Πριν προχωρήσετε, πρέπει να συναρμολογήσετε ένα κύκλωμα με ένα LED και ένα κουμπί.
Θα συνδέσουμε το LED στο GPIO 5 και το κουμπί στο GPIO 4.Κώδικας
Ανοίξτε τον κωδικό Project_1_ESP32_Inputs_Outputs.ino στο arduino IDEΠώς λειτουργεί ο Κώδικας
Στις ακόλουθες δύο γραμμές, δημιουργείτε μεταβλητές για να εκχωρήσετε καρφίτσες:
Το κουμπί είναι συνδεδεμένο στο GPIO 4 και το LED είναι συνδεδεμένο στο GPIO 5. Όταν χρησιμοποιείτε το Arduino IDE με το ESP32, το 4 αντιστοιχεί στο GPIO 4 και το 5 αντιστοιχεί στο GPIO 5.
Στη συνέχεια, δημιουργείτε μια μεταβλητή για να κρατήσετε την κατάσταση του κουμπιού. Από προεπιλογή, είναι 0 (δεν πατιέται).
int buttonState = 0;
Στο setup(), αρχικοποιείτε το κουμπί ως INPUT και το LED ως OUTPUT.
Για αυτό, χρησιμοποιείτε τη συνάρτηση pinMode() που δέχεται την καρφίτσα στην οποία αναφέρεστε και τη λειτουργία: INPUT ή OUTPUT.
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Στο loop() είναι όπου διαβάζετε την κατάσταση του κουμπιού και ρυθμίζετε ανάλογα το LED.
Στην επόμενη γραμμή, διαβάζετε την κατάσταση του κουμπιού και την αποθηκεύετε στη μεταβλητή buttonState.
Όπως είδαμε προηγουμένως, χρησιμοποιείτε τη συνάρτηση digitalRead().
buttonState = digitalRead(buttonPin);
Η ακόλουθη δήλωση if, ελέγχει εάν η κατάσταση του κουμπιού είναι ΥΨΗΛΗ. Εάν είναι, ανάβει το LED χρησιμοποιώντας τη συνάρτηση digitalWrite() που δέχεται ως όρισμα το ledPin και την κατάσταση HIGH.
εάν (buttonState == HIGH)Εάν η κατάσταση του κουμπιού δεν είναι ΥΨΗΛΗ, απενεργοποιείτε το LED. Απλώς ορίστε το LOW ως δεύτερο όρισμα στη συνάρτηση digitalWrite().
Ανέβασμα του Κώδικα
Πριν κάνετε κλικ στο κουμπί αποστολής, μεταβείτε στα Εργαλεία > Πίνακας και επιλέξτε την πλακέτα :DOIT ESP32 DEVKIT V1.
Μεταβείτε στα Εργαλεία > Θύρα και επιλέξτε τη θύρα COM στην οποία είναι συνδεδεμένο το ESP32. Στη συνέχεια, πατήστε το κουμπί μεταφόρτωσης και περιμένετε για το μήνυμα "Ολοκληρώθηκε η μεταφόρτωση".Σημείωση: Εάν δείτε πολλές κουκκίδες (σύνδεση…__…__) στο παράθυρο εντοπισμού σφαλμάτων και το μήνυμα "Αποτυχία σύνδεσης στο ESP32: Λήξη χρόνου αναμονής για κεφαλίδα πακέτου", αυτό σημαίνει ότι πρέπει να πατήσετε το ESP32 on-board BOOT κουμπί μετά τις τελείες
αρχίστε να εμφανίζονται.Αντιμετώπιση προβλημάτων
Επίδειξη
Αφού ανεβάσετε τον κωδικό, δοκιμάστε το κύκλωμά σας. Το LED σας θα πρέπει να ανάβει όταν πατάτε το κουμπί:Και απενεργοποιήστε όταν το αφήσετε:
Project 2 Αναλογικές είσοδοι ESP32
Αυτό το έργο δείχνει πώς να διαβάζετε αναλογικές εισόδους με το ESP32 χρησιμοποιώντας το Arduino IDE.
Η αναλογική ανάγνωση είναι χρήσιμη για την ανάγνωση τιμών από μεταβλητές αντιστάσεις όπως ποτενσιόμετρα ή αναλογικούς αισθητήρες.
Αναλογικές είσοδοι (ADC)
Η ανάγνωση μιας αναλογικής τιμής με το ESP32 σημαίνει ότι μπορείτε να μετρήσετε μεταβαλλόμενο όγκοtagεπίπεδα e μεταξύ 0 V και 3.3 V.
Ο τόμοςtagΤο e που μετράται εκχωρείται στη συνέχεια σε μια τιμή μεταξύ 0 και 4095, στην οποία το 0 V αντιστοιχεί σε 0 και το 3.3 V αντιστοιχεί σε 4095. Οποιαδήποτε voltage μεταξύ 0 V και 3.3 V θα δοθεί η αντίστοιχη τιμή στο ενδιάμεσο.Το ADC είναι μη γραμμικό
Στην ιδανική περίπτωση, θα περιμένατε μια γραμμική συμπεριφορά όταν χρησιμοποιείτε τους ακροδέκτες ADC ESP32.
Ωστόσο, αυτό δεν συμβαίνει. Αυτό που θα λάβετε είναι μια συμπεριφορά όπως φαίνεται στο παρακάτω διάγραμμα:Αυτή η συμπεριφορά σημαίνει ότι το ESP32 δεν μπορεί να διακρίνει τα 3.3 V από τα 3.2 V.
Θα λάβετε την ίδια τιμή και για τους δύο τόμουςtages: 4095.
Το ίδιο συμβαίνει και για πολύ χαμηλό όγκοtagΤιμές e: για 0 V και 0.1 V θα λάβετε την ίδια τιμή: 0. Πρέπει να το έχετε υπόψη όταν χρησιμοποιείτε τους ακροδέκτες ADC ESP32.
Λειτουργία analogRead().
Η ανάγνωση μιας αναλογικής εισόδου με το ESP32 χρησιμοποιώντας το Arduino IDE είναι τόσο απλή όσο η χρήση της συνάρτησης analogRead(). Δέχεται ως όρισμα το GPIO που θέλετε να διαβάσετε:
analogRead(GPIO);
Μόνο 15 είναι διαθέσιμα στον πίνακα DEVKIT V1 (έκδοση με 30 GPIO).
Πιάστε το pinout της πλακέτας ESP32 και εντοπίστε τις ακίδες ADC. Αυτά επισημαίνονται με κόκκινο περίγραμμα στο παρακάτω σχήμα.Αυτές οι αναλογικές ακίδες εισόδου έχουν ανάλυση 12 bit. Αυτό σημαίνει ότι όταν διαβάζετε μια αναλογική είσοδο, το εύρος της μπορεί να κυμαίνεται από 0 έως 4095.
Σημείωση: Οι ακίδες ADC2 δεν μπορούν να χρησιμοποιηθούν όταν χρησιμοποιείται Wi-Fi. Επομένως, εάν χρησιμοποιείτε Wi-Fi και αντιμετωπίζετε πρόβλημα με τη λήψη της τιμής από ένα ADC2 GPIO, μπορείτε να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε ένα ADC1 GPIO αντ' αυτού, αυτό θα πρέπει να λύσει το πρόβλημά σας.
Για να δούμε πώς δένουν όλα μαζί, θα κάνουμε έναν απλό πρώηνample για να διαβάσετε μια αναλογική τιμή από ένα ποτενσιόμετρο.
Απαιτούμενα εξαρτήματα
Για αυτό το πρώηνample, χρειάζεστε τα ακόλουθα εξαρτήματα:
- Πλακέτα ESP32 DEVKIT V1
- Ποτενσιόμετρο
- Breadboard
- Καλώδια βραχυκυκλωτήρα
Σχηματικό
Συνδέστε ένα ποτενσιόμετρο στο ESP32 σας. Η μεσαία ακίδα του ποτενσιόμετρου πρέπει να συνδεθεί στο GPIO 4. Μπορείτε να χρησιμοποιήσετε το παρακάτω σχηματικό διάγραμμα ως αναφορά.Κώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Ανοίξτε τον κωδικό Project_2_ESP32_Inputs_Outputs.ino στο arduino IDEΑυτός ο κωδικός απλώς διαβάζει τις τιμές από το ποτενσιόμετρο και εκτυπώνει αυτές τις τιμές στη Σειριακή οθόνη.
Στον κώδικα, ξεκινάτε ορίζοντας το GPIO στο οποίο είναι συνδεδεμένο το ποτενσιόμετρο. Σε αυτό το πρώηνample, GPIO 4.Στο setup(), αρχικοποιήστε μια σειριακή επικοινωνία με ρυθμό baud 115200.
Στο loop(), χρησιμοποιήστε τη συνάρτηση analogRead() για να διαβάσετε την αναλογική είσοδο από το potPin.
Τέλος, εκτυπώστε τις τιμές που διαβάζονται από το ποτενσιόμετρο στη σειριακή οθόνη.
Ανεβάστε τον κωδικό που παρέχεται στο ESP32 σας. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή πλακέτα και τη σωστή θύρα COM στο μενού Εργαλεία.
Δοκιμάζοντας το Example
Αφού ανεβάσετε τον κωδικό και πατήσετε το κουμπί επαναφοράς ESP32, ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200. Περιστρέψτε το ποτενσιόμετρο και δείτε τις τιμές να αλλάζουν.Η μέγιστη τιμή που θα λάβετε είναι 4095 και η ελάχιστη τιμή είναι 0.
Αναδίπλωση
Σε αυτό το άρθρο μάθατε πώς να διαβάζετε αναλογικές εισόδους χρησιμοποιώντας το ESP32 με το Arduino IDE. Συνοπτικά:
- Η πλακέτα ESP32 DEVKIT V1 DOIT (έκδοση με 30 ακίδες) έχει 15 ακίδες ADC που μπορείτε να χρησιμοποιήσετε για να διαβάσετε αναλογικές εισόδους.
- Αυτές οι ακίδες έχουν ανάλυση 12 bit, που σημαίνει ότι μπορείτε να λάβετε τιμές από 0 έως 4095.
- Για να διαβάσετε μια τιμή στο Arduino IDE, απλά χρησιμοποιείτε τη συνάρτηση analogRead().
- Οι ακίδες ADC ESP32 δεν έχουν γραμμική συμπεριφορά. Πιθανότατα δεν θα μπορείτε να διακρίνετε μεταξύ 0 και 0.1 V ή μεταξύ 3.2 και 3.3 V. Πρέπει να το έχετε υπόψη σας όταν χρησιμοποιείτε τις ακίδες ADC.
Project 3 ESP32 PWM (Αναλογική Έξοδος)
Σε αυτό το σεμινάριο θα σας δείξουμε πώς να δημιουργείτε σήματα PWM με το ESP32 χρησιμοποιώντας το Arduino IDE. Ως πρώηνampΘα κατασκευάσουμε ένα απλό κύκλωμα που μειώνει τη φωτεινότητα ενός LED χρησιμοποιώντας τον ελεγκτή LED PWM του ESP32.Ελεγκτής PWM LED ESP32
Το ESP32 διαθέτει έναν ελεγκτή LED PWM με 16 ανεξάρτητα κανάλια που μπορούν να ρυθμιστούν ώστε να παράγουν σήματα PWM με διαφορετικές ιδιότητες.
Ακολουθούν τα βήματα που θα πρέπει να ακολουθήσετε για να μειώσετε τη φωτεινότητα ενός LED με PWM χρησιμοποιώντας το Arduino IDE:
- Πρώτα, πρέπει να επιλέξετε ένα κανάλι PWM. Υπάρχουν 16 κανάλια από το 0 έως το 15.
- Στη συνέχεια, πρέπει να ρυθμίσετε τη συχνότητα σήματος PWM. Για ένα LED, μια συχνότητα 5000 Hz είναι καλή για χρήση.
- Πρέπει επίσης να ορίσετε την ανάλυση του κύκλου λειτουργίας του σήματος: έχετε αναλύσεις από 1 έως 16 bit. Θα χρησιμοποιήσουμε ανάλυση 8 bit, που σημαίνει ότι μπορείτε να ελέγξετε τη φωτεινότητα των LED χρησιμοποιώντας μια τιμή από 0 έως 255.
- Στη συνέχεια, πρέπει να καθορίσετε σε ποια GPIO ή GPIO θα εμφανίζεται το σήμα. Για αυτό θα χρησιμοποιήσετε την παρακάτω λειτουργία:
ledcAttachPin (GPIO, κανάλι)
Αυτή η συνάρτηση δέχεται δύο ορίσματα. Το πρώτο είναι το GPIO που θα εξάγει το σήμα και το δεύτερο είναι το κανάλι που θα παράγει το σήμα. - Τέλος, για να ελέγξετε τη φωτεινότητα των LED χρησιμοποιώντας PWM, χρησιμοποιείτε την ακόλουθη λειτουργία:
ledcWrite (κανάλι, dutycycle)
Αυτή η συνάρτηση δέχεται ως ορίσματα το κανάλι που παράγει το σήμα PWM και τον κύκλο λειτουργίας.
Απαιτούμενα εξαρτήματα
Για να ακολουθήσετε αυτό το σεμινάριο χρειάζεστε αυτά τα μέρη:
- Πλακέτα ESP32 DEVKIT V1
- 5mm LED
- Αντίσταση 220 Ohm
- Breadboard
- Καλώδια βραχυκυκλωτήρα
Σχηματικό
Συνδέστε ένα LED στο ESP32 όπως στο παρακάτω σχηματικό διάγραμμα. Το LED θα πρέπει να είναι συνδεδεμένο στο GPIO 4.Σημείωμα: μπορείτε να χρησιμοποιήσετε όποιο pin θέλετε, αρκεί να μπορεί να λειτουργήσει ως έξοδος. Όλες οι ακίδες που μπορούν να λειτουργήσουν ως έξοδοι μπορούν να χρησιμοποιηθούν ως ακίδες PWM. Για περισσότερες πληροφορίες σχετικά με τα ESP32 GPIO, διαβάστε: ESP32 Pinout Αναφορά: Ποιες ακίδες GPIO πρέπει να χρησιμοποιήσετε;
Κώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Ανοίξτε τον κωδικό Project_3_ESP32_PWM.ino στο arduino IDEΞεκινάτε ορίζοντας την ακίδα στην οποία είναι συνδεδεμένη η λυχνία LED. Σε αυτήν την περίπτωση το LED είναι συνδεδεμένο στο GPIO 4.
Στη συνέχεια, ορίζετε τις ιδιότητες σήματος PWM. Ορίζετε μια συχνότητα 5000 Hz, επιλέγετε το κανάλι 0 για να δημιουργήσετε το σήμα και ορίζετε ανάλυση 8 bit. Μπορείτε να επιλέξετε άλλες ιδιότητες, διαφορετικές από αυτές, για να δημιουργήσετε διαφορετικά σήματα PWM.
Στο setup(), πρέπει να διαμορφώσετε το LED PWM με τις ιδιότητες που έχετε ορίσει νωρίτερα, χρησιμοποιώντας τη συνάρτηση ledcSetup() που δέχεται ως ορίσματα, το ledChannel, τη συχνότητα και την ανάλυση, ως εξής:
Στη συνέχεια, πρέπει να επιλέξετε το GPIO από το οποίο θα λάβετε το σήμα. Για αυτό χρησιμοποιήστε τη συνάρτηση ledcAttachPin() που δέχεται ως ορίσματα το GPIO όπου θέλετε να λάβετε το σήμα και το κανάλι που παράγει το σήμα. Σε αυτό το πρώηνample, θα λάβουμε το σήμα στο ledPin GPIO, που αντιστοιχεί στο GPIO 4. Το κανάλι που δημιουργεί το σήμα είναι το ledChannel, που αντιστοιχεί στο κανάλι 0.
Στον βρόχο, θα μεταβάλλετε τον κύκλο λειτουργίας μεταξύ 0 και 255 για να αυξήσετε τη φωτεινότητα των LED.
Και μετά, μεταξύ 255 και 0 για μείωση της φωτεινότητας.
Για να ρυθμίσετε τη φωτεινότητα του LED, πρέπει απλώς να χρησιμοποιήσετε τη συνάρτηση ledcWrite() που δέχεται ως ορίσματα το κανάλι που παράγει το σήμα και τον κύκλο λειτουργίας.
Καθώς χρησιμοποιούμε ανάλυση 8 bit, ο κύκλος λειτουργίας θα ελέγχεται χρησιμοποιώντας μια τιμή από 0 έως 255. Σημειώστε ότι στη συνάρτηση ledcWrite() χρησιμοποιούμε το κανάλι που παράγει το σήμα και όχι το GPIO.
Δοκιμάζοντας το Example
Ανεβάστε τον κωδικό στο ESP32 σας. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή πλακέτα και τη σωστή θύρα COM. Κοιτάξτε το κύκλωμά σας. Θα πρέπει να έχετε ένα dimmer LED που αυξάνει και μειώνει τη φωτεινότητα.
Project 4 ESP32 PIR Motion Sensor
Αυτό το έργο δείχνει πώς να ανιχνεύσετε κίνηση με το ESP32 χρησιμοποιώντας έναν αισθητήρα κίνησης PIR. Ο βομβητής θα ηχήσει ξυπνητήρι όταν ανιχνευτεί κίνηση και θα σταματήσει τον συναγερμό όταν δεν ανιχνευτεί κίνηση για προκαθορισμένο χρόνο (όπως 4 δευτερόλεπτα)
Πώς λειτουργεί ο αισθητήρας κίνησης HC-SR501
.Η αρχή λειτουργίας του αισθητήρα HC-SR501 βασίζεται στην αλλαγή της υπέρυθρης ακτινοβολίας στο κινούμενο αντικείμενο. Για να ανιχνευθεί από τον αισθητήρα HC-SR501, το αντικείμενο πρέπει να πληροί δύο απαιτήσεις:
- Το αντικείμενο εκπέμπει με τον υπέρυθρο τρόπο.
- Το αντικείμενο κινείται ή τρέμει
Ετσι:
Αν ένα αντικείμενο εκπέμπει την υπέρυθρη ακτίνα αλλά δεν κινείται (π.χ. ένα άτομο στέκεται ακίνητο χωρίς να κινείται), δεν ανιχνεύεται από τον αισθητήρα.
Αν ένα αντικείμενο κινείται αλλά ΔΕΝ εκπέμπει την υπέρυθρη ακτίνα (π.χ. ρομπότ ή όχημα), ΔΕΝ ανιχνεύεται από τον αισθητήρα.
Παρουσιάζοντας τα χρονόμετρα
Σε αυτό το πρώηνampΘα παρουσιάσουμε επίσης χρονόμετρα. Θέλουμε το LED να παραμένει αναμμένο για προκαθορισμένο αριθμό δευτερολέπτων μετά την ανίχνευση κίνησης. Αντί να χρησιμοποιήσουμε μια συνάρτηση delay() που μπλοκάρει τον κώδικά σας και δεν σας επιτρέπει να κάνετε οτιδήποτε άλλο για καθορισμένο αριθμό δευτερολέπτων, θα πρέπει να χρησιμοποιήσουμε ένα χρονόμετρο.Η συνάρτηση delay().
Θα πρέπει να είστε εξοικειωμένοι με τη συνάρτηση delay() καθώς χρησιμοποιείται ευρέως. Αυτή η λειτουργία είναι αρκετά απλή στη χρήση. Δέχεται έναν ενιαίο αριθμό int ως όρισμα.
Αυτός ο αριθμός αντιπροσωπεύει το χρόνο σε χιλιοστά του δευτερολέπτου που πρέπει να περιμένει το πρόγραμμα μέχρι να προχωρήσει στην επόμενη γραμμή κώδικα.Όταν κάνετε delay(1000) το πρόγραμμά σας σταματά σε αυτή τη γραμμή για 1 δευτερόλεπτο.
Η καθυστέρηση() είναι μια συνάρτηση αποκλεισμού. Οι λειτουργίες αποκλεισμού εμποδίζουν ένα πρόγραμμα να κάνει οτιδήποτε άλλο μέχρι να ολοκληρωθεί η συγκεκριμένη εργασία. Εάν χρειάζεστε πολλές εργασίες να εκτελούνται ταυτόχρονα, δεν μπορείτε να χρησιμοποιήσετε το delay().
Για τα περισσότερα έργα, θα πρέπει να αποφεύγετε τη χρήση καθυστερήσεων και να χρησιμοποιείτε χρονοδιακόπτες.
Η συνάρτηση millis().
Χρησιμοποιώντας μια συνάρτηση που ονομάζεται millis() μπορείτε να επιστρέψετε τον αριθμό των χιλιοστών του δευτερολέπτου που έχουν περάσει από την πρώτη έναρξη του προγράμματος.Γιατί είναι χρήσιμη αυτή η λειτουργία; Επειδή χρησιμοποιώντας κάποια μαθηματικά, μπορείτε εύκολα να επαληθεύσετε πόσος χρόνος έχει περάσει χωρίς να μπλοκάρετε τον κωδικό σας.
Απαιτούμενα εξαρτήματα
Για να ακολουθήσετε αυτό το σεμινάριο χρειάζεστε τα ακόλουθα μέρη
- Πλακέτα ESP32 DEVKIT V1
- Αισθητήρας κίνησης PIR (HC-SR501)
- Ενεργός βομβητής
- Καλώδια βραχυκυκλωτήρα
- Breadboard
ΣχηματικόΣημείωμα: Ο εργασιακός τόμοςtagΤο e του HC-SR501 είναι 5V. Χρησιμοποιήστε την καρφίτσα Vin για να την τροφοδοτήσετε.
Κώδικας
Πριν συνεχίσετε με αυτό το σεμινάριο, θα πρέπει να έχετε εγκαταστήσει το πρόσθετο ESP32 στο Arduino IDE σας. Ακολουθήστε έναν από τους παρακάτω οδηγούς για να εγκαταστήσετε το ESP32 στο Arduino IDE, εάν δεν το έχετε κάνει ήδη. (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Ανοίξτε τον κωδικό Project_4_ESP32_PIR_Motion_Sensor.ino στο arduino IDE.
Επίδειξη
Ανεβάστε τον κωδικό στην πλακέτα ESP32. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή πλακέτα και τη σωστή θύρα COM. Βήματα αναφοράς κώδικα μεταφόρτωσης.
Ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200.Μετακινήστε το χέρι σας μπροστά από τον αισθητήρα PIR. Ο βομβητής θα πρέπει να ανάψει και το μήνυμα εκτυπώνεται στη Σειριακή οθόνη λέγοντας "Εντοπίστηκε κίνηση! Συναγερμός βομβητή".
Μετά από 4 δευτερόλεπτα ο βομβητής θα πρέπει να σβήσει.
Project 5 Διακόπτης ESP32 Web Υπηρέτης
Σε αυτό το έργο θα δημιουργήσετε ένα αυτόνομο web διακομιστής με ESP32 που ελέγχει τις εξόδους (δύο LED) χρησιμοποιώντας το περιβάλλον προγραμματισμού Arduino IDE. Ο web Ο διακομιστής ανταποκρίνεται σε κινητά και μπορεί να προσπελαστεί με οποιαδήποτε συσκευή ως πρόγραμμα περιήγησης στο τοπικό δίκτυο. Θα σας δείξουμε πώς να δημιουργήσετε το web διακομιστή και πώς λειτουργεί ο κώδικας βήμα προς βήμα.
Έργο τελείωσεview
Πριν πάτε κατευθείαν στο έργο, είναι σημαντικό να σκιαγραφήσουμε τι έχουμε web ο διακομιστής θα το κάνει, έτσι ώστε να είναι πιο εύκολο να ακολουθήσετε τα βήματα αργότερα.
- Ο web Ο διακομιστής που θα δημιουργήσετε ελέγχει δύο λυχνίες LED συνδεδεμένες στο ESP32 GPIO 26 και στο GPIO 27.
- Μπορείτε να αποκτήσετε πρόσβαση στο ESP32 web διακομιστή πληκτρολογώντας τη διεύθυνση IP ESP32 σε ένα πρόγραμμα περιήγησης στο τοπικό δίκτυο.
- Κάνοντας κλικ στα κουμπιά στο δικό σας web διακομιστή μπορείτε να αλλάξετε άμεσα την κατάσταση κάθε LED.
Απαιτούμενα εξαρτήματα
Για αυτό το σεμινάριο θα χρειαστείτε τα ακόλουθα μέρη:
- Πλακέτα ESP32 DEVKIT V1
- LED 2x 5mm
- 2 x 200 Ohm αντίσταση
- Breadboard
- Καλώδια βραχυκυκλωτήρα
Σχηματικό
Ξεκινήστε χτίζοντας το κύκλωμα. Συνδέστε δύο LED στο ESP32 όπως φαίνεται στο παρακάτω σχηματικό διάγραμμα – το ένα LED είναι συνδεδεμένο στο GPIO 26 και το άλλο στο GPIO 27.
Σημείωμα: Χρησιμοποιούμε την πλακέτα ESP32 DEVKIT DOIT με 36 ακίδες. Πριν συναρμολογήσετε το κύκλωμα, βεβαιωθείτε ότι έχετε ελέγξει το pinout για την πλακέτα που χρησιμοποιείτε.Κώδικας
Εδώ παρέχουμε τον κωδικό που δημιουργεί το ESP32 web υπηρέτης. Ανοίξτε τον κωδικό Project_5_ESP32_Switch _Web_Server.ino στο arduino IDE, αλλά μην το ανεβάσετε ακόμα. Πρέπει να κάνετε κάποιες αλλαγές για να λειτουργήσει για εσάς.
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Ρύθμιση των διαπιστευτηρίων του δικτύου σας
Πρέπει να τροποποιήσετε τις ακόλουθες γραμμές με τα διαπιστευτήρια του δικτύου σας: SSID και κωδικό πρόσβασης. Ο κώδικας είναι καλά σχολιασμένος σχετικά με το πού πρέπει να κάνετε τις αλλαγές.Ανέβασμα του Κώδικα
Τώρα, μπορείτε να ανεβάσετε τον κώδικα και και το web ο διακομιστής θα λειτουργήσει αμέσως.
Ακολουθήστε τα επόμενα βήματα για να ανεβάσετε κώδικα στο ESP32:
- Συνδέστε την πλακέτα ESP32 στον υπολογιστή σας.
- Στο Arduino IDE επιλέξτε την πλακέτα σας στο Εργαλεία > Πίνακας (στην περίπτωσή μας χρησιμοποιούμε την πλακέτα ESP32 DEVKIT DOIT).
- Επιλέξτε τη θύρα COM στα Εργαλεία > Θύρα.
- Πατήστε το κουμπί Μεταφόρτωση στο Arduino IDE και περιμένετε μερικά δευτερόλεπτα μέχρι ο κώδικας να μεταγλωττιστεί και να ανέβει στον πίνακα σας.
- Περιμένετε για το μήνυμα "Ολοκληρώθηκε η μεταφόρτωση".
Εύρεση της διεύθυνσης IP ESP
Αφού ανεβάσετε τον κωδικό, ανοίξτε τη Σειριακή οθόνη με ρυθμό baud 115200.Πατήστε το κουμπί ESP32 EN (επαναφορά). Το ESP32 συνδέεται σε Wi-Fi και εξάγει τη διεύθυνση IP του ESP στη σειριακή οθόνη. Αντιγράψτε αυτήν τη διεύθυνση IP, γιατί τη χρειάζεστε για πρόσβαση στο ESP32 web υπηρέτης.
Πρόσβαση στο Web Υπηρέτης
Για πρόσβαση στο web διακομιστή, ανοίξτε το πρόγραμμα περιήγησής σας, επικολλήστε τη διεύθυνση IP του ESP32 και θα δείτε την παρακάτω σελίδα.
Σημείωμα: Το πρόγραμμα περιήγησής σας και το ESP32 θα πρέπει να είναι συνδεδεμένα στο ίδιο LAN.Αν ρίξετε μια ματιά στη Σειριακή οθόνη, μπορείτε να δείτε τι συμβαίνει στο παρασκήνιο. Το ESP λαμβάνει ένα αίτημα HTTP από έναν νέο πελάτη (σε αυτήν την περίπτωση, το πρόγραμμα περιήγησής σας).
Μπορείτε επίσης να δείτε άλλες πληροφορίες σχετικά με το αίτημα HTTP.
Επίδειξη
Τώρα μπορείτε να δοκιμάσετε αν σας web ο διακομιστής λειτουργεί σωστά. Κάντε κλικ στα κουμπιά για να ελέγξετε τα LED.Ταυτόχρονα, μπορείτε να ρίξετε μια ματιά στη Σειριακή οθόνη για να δείτε τι συμβαίνει στο παρασκήνιο. Για π.χample, όταν κάνετε κλικ στο κουμπί για να ενεργοποιήσετε το GPIO 26, το ESP32 λαμβάνει ένα αίτημα στο /26/on URL.
Όταν το ESP32 λάβει αυτό το αίτημα, ανάβει το LED που είναι συνδεδεμένο στο GPIO 26 και ενημερώνει την κατάστασή του στο web σελίδα.
Το κουμπί για το GPIO 27 λειτουργεί με παρόμοιο τρόπο. Ελέγξτε ότι λειτουργεί σωστά.
Πώς λειτουργεί ο Κώδικας
Σε αυτή την ενότητα θα ρίξουμε μια πιο προσεκτική ματιά στον κώδικα για να δούμε πώς λειτουργεί.
Το πρώτο πράγμα που πρέπει να κάνετε είναι να συμπεριλάβετε τη βιβλιοθήκη WiFi.Όπως αναφέρθηκε προηγουμένως, πρέπει να εισαγάγετε το ssid και τον κωδικό πρόσβασής σας στις ακόλουθες γραμμές μέσα στα διπλά εισαγωγικά.
Στη συνέχεια, ορίζετε το δικό σας web διακομιστή στη θύρα 80.
Η ακόλουθη γραμμή δημιουργεί μια μεταβλητή για την αποθήκευση της κεφαλίδας του αιτήματος HTTP:
Στη συνέχεια, δημιουργείτε βοηθητικές μεταβλητές για να αποθηκεύσετε την τρέχουσα κατάσταση των εξόδων σας. Εάν θέλετε να προσθέσετε περισσότερες εξόδους και να αποθηκεύσετε την κατάστασή του, πρέπει να δημιουργήσετε περισσότερες μεταβλητές.
Πρέπει επίσης να αντιστοιχίσετε ένα GPIO σε κάθε έξοδο σας. Εδώ χρησιμοποιούμε το GPIO 26 και το GPIO 27. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο κατάλληλο GPIO.
εγκατάσταση ()
Τώρα, ας πάμε στο setup(). Αρχικά, ξεκινάμε μια σειριακή επικοινωνία με ρυθμό baud 115200 για σκοπούς εντοπισμού σφαλμάτων.Ορίζετε επίσης τα GPIO σας ως OUTPUT και τα ορίζετε σε LOW.
Οι ακόλουθες γραμμές ξεκινούν τη σύνδεση Wi-Fi με το WiFi.begin (ssid, κωδικός πρόσβασης), περιμένετε για μια επιτυχημένη σύνδεση και εκτυπώστε τη διεύθυνση IP του ESP στη Σειριακή οθόνη.
βρόχος()
Στο loop() προγραμματίζουμε τι συμβαίνει όταν ένας νέος πελάτης δημιουργεί μια σύνδεση με το web υπηρέτης.
Το ESP32 ακούει πάντα τους εισερχόμενους πελάτες με την ακόλουθη γραμμή:Όταν ληφθεί ένα αίτημα από έναν πελάτη, θα αποθηκεύσουμε τα εισερχόμενα δεδομένα. Ο βρόχος while που ακολουθεί θα λειτουργεί όσο ο πελάτης παραμένει συνδεδεμένος. Δεν συνιστούμε να αλλάξετε το ακόλουθο μέρος του κώδικα, εκτός εάν γνωρίζετε ακριβώς τι κάνετε.
Η επόμενη ενότητα των δηλώσεων if και else ελέγχει ποιο κουμπί πατήθηκε στο δικό σας web σελίδα και ελέγχει τις εξόδους ανάλογα. Όπως είδαμε προηγουμένως, κάνουμε ένα αίτημα για διαφορετικά URLs ανάλογα με το πατημένο κουμπί.
Για π.χample, αν έχετε πατήσει το κουμπί GPIO 26 ON, το ESP32 λαμβάνει ένα αίτημα στο /26/ON URL (μπορούμε να δούμε ότι αυτές οι πληροφορίες στην κεφαλίδα HTTP στη σειριακή οθόνη). Έτσι, μπορούμε να ελέγξουμε αν η κεφαλίδα περιέχει την έκφραση GET /26/on. Εάν περιέχει, αλλάζουμε τη μεταβλητή output26state σε ON και το ESP32 ανάβει το LED.
Αυτό λειτουργεί παρόμοια για τα άλλα κουμπιά. Επομένως, εάν θέλετε να προσθέσετε περισσότερες εξόδους, θα πρέπει να τροποποιήσετε αυτό το τμήμα του κώδικα για να τις συμπεριλάβετε.
Εμφάνιση του HTML web σελίδα
Το επόμενο πράγμα που πρέπει να κάνετε, είναι να δημιουργήσετε το web σελίδα. Το ESP32 θα στείλει μια απάντηση στο πρόγραμμα περιήγησής σας με κάποιο κώδικα HTML για τη δημιουργία του web σελίδα.
Ο web Η σελίδα αποστέλλεται στον πελάτη χρησιμοποιώντας αυτήν την έκφραση client.println(). Θα πρέπει να εισαγάγετε αυτό που θέλετε να στείλετε στον πελάτη ως όρισμα.
Το πρώτο πράγμα που πρέπει να στείλουμε είναι πάντα η ακόλουθη γραμμή, που δείχνει ότι στέλνουμε HTML.Στη συνέχεια, η ακόλουθη γραμμή κάνει το web σελίδα ανταποκρίνεται σε οποιαδήποτε web πρόγραμμα περιήγησης.
Και τα ακόλουθα χρησιμοποιούνται για την αποτροπή αιτημάτων στο favicon. – Δεν χρειάζεται να ανησυχείτε για αυτή τη γραμμή.
Styling το Web Σελίδα
Στη συνέχεια, έχουμε κάποιο κείμενο CSS για το στυλ των κουμπιών και του web εμφάνιση σελίδας.
Επιλέγουμε τη γραμματοσειρά Helvetica, ορίζουμε το περιεχόμενο που θα εμφανίζεται ως μπλοκ και το στοιχίζουμε στο κέντρο.Διαμορφώνουμε τα κουμπιά μας με το χρώμα #4CAF50, χωρίς περίγραμμα, κείμενο σε λευκό χρώμα και με αυτήν την επένδυση: 16px 40px. Ορίζουμε επίσης τη διακόσμηση κειμένου σε κανένα, ορίζουμε το μέγεθος της γραμματοσειράς, το περιθώριο και τον κέρσορα σε έναν δείκτη.
Ορίζουμε επίσης το στυλ για ένα δεύτερο κουμπί, με όλες τις ιδιότητες του κουμπιού που ορίσαμε νωρίτερα, αλλά με διαφορετικό χρώμα. Αυτό θα είναι το στυλ για το κουμπί απενεργοποίησης.
Ρύθμιση του Web Πρώτη επικεφαλίδα σελίδας
Στην επόμενη γραμμή μπορείτε να ορίσετε την πρώτη επικεφαλίδα σας web σελίδα. Εδώ έχουμε το “ESP32 Web Διακομιστής», αλλά μπορείτε να αλλάξετε αυτό το κείμενο σε ό,τι θέλετε.Εμφάνιση των κουμπιών και της αντίστοιχης κατάστασης
Στη συνέχεια, γράφετε μια παράγραφο για να εμφανίσετε την τρέχουσα κατάσταση του GPIO 26. Όπως μπορείτε να δείτε, χρησιμοποιούμε τη μεταβλητή output26State, έτσι ώστε η κατάσταση να ενημερώνεται αμέσως όταν αλλάζει αυτή η μεταβλητή.Στη συνέχεια, εμφανίζουμε το κουμπί ενεργοποίησης ή απενεργοποίησης, ανάλογα με την τρέχουσα κατάσταση του GPIO. Εάν η τρέχουσα κατάσταση του GPIO είναι απενεργοποιημένη, εμφανίζουμε το κουμπί ON, εάν όχι, εμφανίζουμε το κουμπί OFF.
Χρησιμοποιούμε την ίδια διαδικασία για το GPIO 27.
Κλείσιμο της σύνδεσης
Τέλος, όταν τελειώσει η απάντηση, διαγράφουμε τη μεταβλητή κεφαλίδας και διακόπτουμε τη σύνδεση με τον πελάτη με τον client.stop().
Αναδίπλωση
Σε αυτό το σεμινάριο σας δείξαμε πώς να δημιουργήσετε ένα web διακομιστή με το ESP32. Σας δείξαμε έναν απλό πρώηνample που ελέγχει δύο LED, αλλά η ιδέα είναι να αντικαταστήσετε αυτά τα LED με ένα ρελέ ή οποιαδήποτε άλλη έξοδο θέλετε να ελέγξετε.
Project 6 RGB LED Web Υπηρέτης
Σε αυτό το έργο θα σας δείξουμε πώς να ελέγχετε εξ αποστάσεως ένα RGB LED με μια πλακέτα ESP32 χρησιμοποιώντας ένα web διακομιστή με επιλογή χρώματος.
Έργο τελείωσεview
Πριν ξεκινήσουμε, ας δούμε πώς λειτουργεί αυτό το έργο:
- Το ESP32 web ο διακομιστής εμφανίζει έναν επιλογέα χρώματος.
- Όταν επιλέγετε ένα χρώμα, το πρόγραμμα περιήγησής σας κάνει ένα αίτημα σε ένα URL που περιέχει τις παραμέτρους R, G και B του επιλεγμένου χρώματος.
- Το ESP32 λαμβάνει το αίτημα και διαχωρίζει την τιμή για κάθε παράμετρο χρώματος.
- Στη συνέχεια, στέλνει ένα σήμα PWM με την αντίστοιχη τιμή στα GPIO που ελέγχουν το LED RGB.
Πώς λειτουργούν τα RGB LED;
Σε ένα LED RGB κοινής καθόδου, και τα τρία LED μοιράζονται μια αρνητική σύνδεση (κάθοδος). Όλα που περιλαμβάνονται στο κιτ είναι RGB κοινής καθόδου.Πώς να δημιουργήσετε διαφορετικά χρώματα;
Με ένα RGB LED μπορείτε, φυσικά, να παράγετε κόκκινο, πράσινο και μπλε φως και ρυθμίζοντας την ένταση κάθε LED, μπορείτε να παράγετε και άλλα χρώματα.
Για π.χampΓια να παράγετε καθαρά μπλε φως, θα ρυθμίσετε το μπλε LED στην υψηλότερη ένταση και το πράσινο και το κόκκινο LED στη χαμηλότερη ένταση. Για λευκό φως, θα ρυθμίσετε και τα τρία LED στην υψηλότερη ένταση.
Ανάμειξη χρωμάτων
Για να δημιουργήσετε άλλα χρώματα, μπορείτε να συνδυάσετε τα τρία χρώματα σε διαφορετικές εντάσεις. Για να ρυθμίσετε την ένταση κάθε LED μπορείτε να χρησιμοποιήσετε ένα σήμα PWM.
Επειδή τα LED είναι πολύ κοντά το ένα στο άλλο, τα μάτια μας βλέπουν το αποτέλεσμα του συνδυασμού των χρωμάτων, παρά τα τρία χρώματα ξεχωριστά.
Για να έχετε μια ιδέα για το πώς να συνδυάσετε τα χρώματα, ρίξτε μια ματιά στον παρακάτω πίνακα.
Αυτό είναι το απλούστερο διάγραμμα ανάμειξης χρωμάτων, αλλά σας δίνει μια ιδέα πώς λειτουργεί και πώς να παράγετε διαφορετικά χρώματα.Απαιτούμενα εξαρτήματα
Για αυτό το έργο χρειάζεστε τα ακόλουθα μέρη:
- Πλακέτα ESP32 DEVKIT V1
- RGB LED
- 3 x 220 ohm αντιστάσεις
- Καλώδια βραχυκυκλωτήρα
- Breadboard
ΣχηματικόΚώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
- Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Αφού συναρμολογήσετε το κύκλωμα, ανοίξτε τον κωδικό
Project_6_RGB_LED_Web_Server.ino στο arduino IDE.
Πριν ανεβάσετε τον κωδικό, μην ξεχάσετε να εισαγάγετε τα διαπιστευτήρια του δικτύου σας, ώστε το ESP να συνδεθεί στο τοπικό σας δίκτυο.Πώς λειτουργεί ο κώδικας
Το σκίτσο ESP32 χρησιμοποιεί τη βιβλιοθήκη WiFi.h.Οι ακόλουθες γραμμές ορίζουν μεταβλητές συμβολοσειράς για να συγκρατούν τις παραμέτρους R, G και B από το αίτημα.
Οι επόμενες τέσσερις μεταβλητές χρησιμοποιούνται για την αποκωδικοποίηση του αιτήματος HTTP αργότερα.
Δημιουργήστε τρεις μεταβλητές για τα GPIO που θα ελέγχουν τις παραμέτρους της λωρίδας R, G και B. Σε αυτήν την περίπτωση χρησιμοποιούμε GPIO 13, GPIO 12 και GPIO 14.
Αυτά τα GPIO πρέπει να εξάγουν σήματα PWM, επομένως πρέπει πρώτα να διαμορφώσουμε τις ιδιότητες PWM. Ρυθμίστε τη συχνότητα σήματος PWM στα 5000 Hz. Στη συνέχεια, συσχετίστε ένα κανάλι PWM για κάθε χρώμα
Και τέλος, ορίστε την ανάλυση των καναλιών PWM σε 8-bit
Στο setup(), εκχωρήστε τις ιδιότητες PWM στα κανάλια PWM
Συνδέστε τα κανάλια PWM στα αντίστοιχα GPIO
Η παρακάτω ενότητα κώδικα εμφανίζει τον επιλογέα χρώματος στο δικό σας web σελίδα και κάνει ένα αίτημα με βάση το χρώμα που έχετε επιλέξει.
Όταν επιλέγετε ένα χρώμα, λαμβάνετε ένα αίτημα με την ακόλουθη μορφή.
Επομένως, πρέπει να χωρίσουμε αυτή τη συμβολοσειρά για να λάβουμε τις παραμέτρους R, G και B. Οι παράμετροι αποθηκεύονται σε μεταβλητές redString, greenString και blueString και μπορούν να έχουν τιμές μεταξύ 0 και 255.Για να ελέγξετε τη λωρίδα με το ESP32, χρησιμοποιήστε τη συνάρτηση ledcWrite() για να δημιουργήσετε σήματα PWM με τις τιμές που αποκωδικοποιούνται από το HTTP αίτηση.
Σημείωμα: μάθετε περισσότερα για το PWM με ESP32: Project 3 ESP32 PWM (Αναλογική Έξοδος)
Για να ελέγξουμε την ταινία με το ESP8266, πρέπει απλώς να χρησιμοποιήσουμε
η συνάρτηση analogWrite() για τη δημιουργία σημάτων PWM με τις τιμές που αποκωδικοποιούνται από το αίτημα HTPP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Επειδή λαμβάνουμε τις τιμές σε μια μεταβλητή συμβολοσειράς, πρέπει να τις μετατρέψουμε σε ακέραιους χρησιμοποιώντας τη μέθοδο toInt().
Επίδειξη
Αφού εισαγάγετε τα διαπιστευτήρια του δικτύου σας, επιλέξτε τη σωστή πλακέτα και τη θύρα COM και μεταφορτώστε τον κωδικό στο ESP32. Βήματα αναφοράς κώδικα μεταφόρτωσης.
Μετά τη μεταφόρτωση, ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200 και πατήστε το κουμπί ESP Enable/Reset. Θα πρέπει να λάβετε τη διεύθυνση IP του πίνακα.Ανοίξτε το πρόγραμμα περιήγησής σας και εισαγάγετε τη διεύθυνση IP του ESP. Τώρα, χρησιμοποιήστε τον επιλογέα χρώματος για να επιλέξετε ένα χρώμα για το LED RGB.
Στη συνέχεια, πρέπει να πατήσετε το κουμπί "Αλλαγή χρώματος" για να εφαρμοστεί το χρώμα.Για να απενεργοποιήσετε το RGB LED, επιλέξτε το μαύρο χρώμα.
Τα πιο δυνατά χρώματα (στην κορυφή της επιλογής χρώματος), είναι αυτά που θα παράγουν καλύτερα αποτελέσματα.
Project 7 ESP32 Ρελέ Web Υπηρέτης
Η χρήση ενός ρελέ με το ESP32 είναι ένας πολύ καλός τρόπος για να ελέγχετε τις οικιακές συσκευές AC από απόσταση. Αυτό το σεμινάριο εξηγεί πώς να ελέγξετε μια μονάδα ρελέ με το ESP32.
Θα ρίξουμε μια ματιά στο πώς λειτουργεί μια μονάδα ρελέ, πώς να συνδέσετε το ρελέ στο ESP32 και να δημιουργήσετε ένα web διακομιστή για τον απομακρυσμένο έλεγχο ενός ρελέ.
Παρουσιάζοντας τα ρελέ
Το ρελέ είναι ένας διακόπτης που λειτουργεί ηλεκτρικά και όπως κάθε άλλος διακόπτης, μπορεί να ενεργοποιηθεί ή να απενεργοποιηθεί, αφήνοντας το ρεύμα να περάσει ή όχι. Μπορεί να ελεγχθεί με χαμηλό όγκοtages, όπως τα 3.3V που παρέχονται από τα GPIO ESP32 και μας επιτρέπουν να ελέγχουμε υψηλή έντασηtagόπως 12V, 24V ή τάση δικτύουtage (230V στην Ευρώπη και 120V στις ΗΠΑ).Στην αριστερή πλευρά, υπάρχουν δύο σετ από τρεις υποδοχές για σύνδεση υψηλής έντασηςtages, και οι ακίδες στη δεξιά πλευρά (χαμηλού όγκουtagε) συνδεθείτε στα GPIO του ESP32.
Mains Voltagε ΣυνδέσειςΗ μονάδα ρελέ που φαίνεται στην προηγούμενη φωτογραφία έχει δύο υποδοχές, η καθεμία με τρεις υποδοχές: κοινές (COM), Κανονικά κλειστές (NC) και Κανονικά ανοιχτές (NO).
- COM: συνδέστε το ρεύμα που θέλετε να ελέγξετε (ενός δικτύου voltagμι).
- NC (Normally Closed): η κανονικά κλειστή διαμόρφωση χρησιμοποιείται όταν θέλετε το ρελέ να είναι κλειστό από προεπιλογή. Οι ακίδες NC είναι συνδεδεμένες, που σημαίνει ότι το ρεύμα ρέει εκτός και αν στείλετε ένα σήμα από το ESP32 στη μονάδα ρελέ για να ανοίξει το κύκλωμα και να σταματήσει η ροή του ρεύματος.
- NO (Normally Open): η κανονικά ανοιχτή διαμόρφωση λειτουργεί αντίστροφα: δεν υπάρχει σύνδεση μεταξύ των ακροδεκτών NO και COM, επομένως το κύκλωμα έχει σπάσει εκτός εάν στείλετε ένα σήμα από το ESP32 για να κλείσει το κύκλωμα.
Καρφίτσες ελέγχουΤο low-voltagΗ πλευρά e έχει ένα σετ τεσσάρων ακίδων και ένα σετ τριών ακίδων. Το πρώτο σετ αποτελείται από VCC και GND για την τροφοδοσία της μονάδας και την είσοδο 1 (IN1) και την είσοδο 2 (IN2) για τον έλεγχο του κάτω και του επάνω ρελέ, αντίστοιχα.
Εάν η μονάδα ρελέ σας έχει μόνο ένα κανάλι, θα έχετε μόνο έναν ακροδέκτη IN. Εάν έχετε τέσσερα κανάλια, θα έχετε τέσσερις ακίδες IN και ούτω καθεξής.
Το σήμα που στέλνετε στις ακίδες IN, καθορίζει εάν το ρελέ είναι ενεργό ή όχι. Το ρελέ ενεργοποιείται όταν η είσοδος πέσει κάτω από περίπου 2 V. Αυτό σημαίνει ότι θα έχετε τα ακόλουθα σενάρια:
- Κανονικά κλειστή διαμόρφωση (NC):
- ΥΨΗΛΟ σήμα - ρέει ρεύμα
- Σήμα LOW - το ρεύμα δεν ρέει
- Κανονικά ανοιχτή διαμόρφωση (ΟΧΙ):
- Σήμα ΥΨΗΛΟ - δεν ρέει ρεύμα
- Σήμα LOW – ρεύμα σε ροή
Θα πρέπει να χρησιμοποιείτε μια κανονικά κλειστή διαμόρφωση όταν το ρεύμα θα πρέπει να ρέει τις περισσότερες φορές και θέλετε να το σταματήσετε μόνο περιστασιακά.
Χρησιμοποιήστε μια κανονικά ανοιχτή διαμόρφωση όταν θέλετε το ρεύμα να ρέει περιστασιακά (π.χample, ενεργοποιήστε το alamp ενίοτε).
Επιλογή τροφοδοτικούΤο δεύτερο σετ ακίδων αποτελείται από ακίδες GND, VCC και JD-VCC.
Ο πείρος JD-VCC τροφοδοτεί τον ηλεκτρομαγνήτη του ρελέ. Σημειώστε ότι η μονάδα έχει ένα κάλυμμα βραχυκυκλωτήρα που συνδέει τις ακίδες VCC και JD-VCC. αυτό που φαίνεται εδώ είναι κίτρινο, αλλά το δικό σας μπορεί να έχει διαφορετικό χρώμα.
Με το καπάκι του βραχυκυκλωτήρα επάνω, οι ακίδες VCC και JD-VCC συνδέονται. Αυτό σημαίνει ότι ο ηλεκτρομαγνήτης του ρελέ τροφοδοτείται απευθείας από τον ακροδέκτη τροφοδοσίας ESP32, επομένως η μονάδα ρελέ και τα κυκλώματα ESP32 δεν είναι φυσικά απομονωμένα μεταξύ τους.
Χωρίς το καπάκι του βραχυκυκλωτήρα, πρέπει να παρέχετε μια ανεξάρτητη πηγή τροφοδοσίας για την τροφοδοσία του ηλεκτρομαγνήτη του ρελέ μέσω της ακίδας JD-VCC. Αυτή η διαμόρφωση απομονώνει φυσικά τα ρελέ από το ESP32 με τον ενσωματωμένο οπτικό συζευκτήρα της μονάδας, ο οποίος αποτρέπει τη ζημιά στο ESP32 σε περίπτωση ηλεκτρικών αιχμών.
ΣχηματικόΠροειδοποίηση: Χρήση υψηλού όγκουtagΤα τροφοδοτικά ενδέχεται να προκαλέσουν σοβαρό τραυματισμό.
Ως εκ τούτου, χρησιμοποιούνται LED 5 mm αντί για υψηλή παροχήtage λαμπτήρες στο πείραμα. Εάν δεν είστε εξοικειωμένοι με το mains voltagρωτήστε κάποιον που είναι να σας βοηθήσει. Κατά τον προγραμματισμό του ESP ή την καλωδίωση του κυκλώματός σας, βεβαιωθείτε ότι όλα είναι αποσυνδεδεμένα από το δίκτυο voltage.Εγκατάσταση της βιβλιοθήκης για ESP32
Για να το φτιάξεις αυτό web διακομιστή, χρησιμοποιούμε το ESPAsyncWebΒιβλιοθήκη διακομιστή και βιβλιοθήκη AsyncTCP.
Εγκατάσταση του ESPAsyncWebΒιβλιοθήκη διακομιστή
Ακολουθήστε τα επόμενα βήματα για να εγκαταστήσετε το ESPAsyncWebΥπηρέτης βιβλιοθήκη:
- Κάντε κλικ εδώ για να κατεβάσετε το ESPAsyncWebΒιβλιοθήκη διακομιστή. Θα έπρεπε να έχετε
έναν φάκελο .zip στο φάκελο "Λήψεις". - Αποσυμπιέστε το φάκελο .zip και θα πρέπει να λάβετε το ESPAsyncWebΚύριος φάκελος διακομιστή
- Μετονομάστε το φάκελό σας από ESPAsyncWebServer-master στο ESPAsyncWebΥπηρέτης
- Μετακινήστε το ESPAsyncWebΦάκελος διακομιστή στον φάκελο βιβλιοθηκών εγκατάστασης Arduino IDE
Εναλλακτικά, στο Arduino IDE, μπορείτε να μεταβείτε στο Sketch > Include
Βιβλιοθήκη > Προσθήκη βιβλιοθήκης .ZIP… και επιλέξτε τη βιβλιοθήκη που μόλις κατεβάσατε.
Εγκατάσταση της βιβλιοθήκης AsyncTCP για ESP32
Ο ESPAsyncWebΥπηρέτης η βιβλιοθήκη απαιτεί το AsyncTCP βιβλιοθήκη στη δουλειά. Ακολουθώ
τα επόμενα βήματα για την εγκατάσταση αυτής της βιβλιοθήκης:
- Κάντε κλικ εδώ για λήψη της βιβλιοθήκης AsyncTCP. Θα πρέπει να έχετε έναν φάκελο .zip στο φάκελο "Λήψεις".
- Αποσυμπιέστε το φάκελο .zip και θα λάβετε τον φάκελο AsyncTCP-master
1. Μετονομάστε το φάκελό σας από AsyncTCP-master σε AsyncTCP
3. Μετακινήστε το φάκελο AsyncTCP στον φάκελο των βιβλιοθηκών εγκατάστασης του Arduino IDE
4. Τέλος, ανοίξτε ξανά το Arduino IDE
Εναλλακτικά, στο Arduino IDE, μπορείτε να μεταβείτε στο Sketch > Include
Βιβλιοθήκη > Προσθήκη βιβλιοθήκης .ZIP… και επιλέξτε τη βιβλιοθήκη που μόλις κατεβάσατε.
Κώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Αφού εγκαταστήσετε τις απαιτούμενες βιβλιοθήκες, ανοίξτε τον κωδικό Project_7_ESP32_Relay_Web_Server.ino στο arduino IDE.
Πριν ανεβάσετε τον κωδικό, μην ξεχάσετε να εισαγάγετε τα διαπιστευτήρια του δικτύου σας, ώστε το ESP να συνδεθεί στο τοπικό σας δίκτυο.Επίδειξη
Αφού κάνετε τις απαραίτητες αλλαγές, μεταφορτώστε τον κωδικό στο ESP32. Βήματα αναφοράς κώδικα μεταφόρτωσης.
Ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200 και πατήστε το κουμπί ESP32 EN για να λάβετε τη διεύθυνση IP της. Στη συνέχεια, ανοίξτε ένα πρόγραμμα περιήγησης στο τοπικό σας δίκτυο και πληκτρολογήστε τη διεύθυνση IP ESP32 για να αποκτήσετε πρόσβαση στο web υπηρέτης.
Ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200 και πατήστε το κουμπί ESP32 EN για να λάβετε τη διεύθυνση IP της. Στη συνέχεια, ανοίξτε ένα πρόγραμμα περιήγησης στο τοπικό σας δίκτυο και πληκτρολογήστε τη διεύθυνση IP ESP32 για να αποκτήσετε πρόσβαση στο web υπηρέτης.Σημείωμα: Το πρόγραμμα περιήγησής σας και το ESP32 θα πρέπει να είναι συνδεδεμένα στο ίδιο LAN.
Θα πρέπει να λάβετε κάτι ως εξής με δύο κουμπιά όπως ο αριθμός των ρελέ που έχετε ορίσει στον κώδικά σας.Τώρα, μπορείτε να χρησιμοποιήσετε τα κουμπιά για να ελέγξετε τα ρελέ σας χρησιμοποιώντας το smartphone σας.
Project_8_Output_State_Synchronization_ Web_Υπηρέτης
Αυτό το έργο δείχνει πώς να ελέγχετε τις εξόδους ESP32 ή ESP8266 χρησιμοποιώντας α web διακομιστή και ένα φυσικό κουμπί ταυτόχρονα. Η κατάσταση εξόδου ενημερώνεται στο web σελίδα είτε έχει αλλάξει μέσω φυσικού κουμπιού είτε web υπηρέτης.
Έργο τελείωσεview
Ας ρίξουμε μια γρήγορη ματιά στο πώς λειτουργεί το έργο.Το ESP32 ή το ESP8266 φιλοξενεί α web διακομιστή που σας επιτρέπει να ελέγχετε την κατάσταση μιας εξόδου.
- Η τρέχουσα κατάσταση εξόδου εμφανίζεται στο web υπηρέτης;
- Το ESP συνδέεται επίσης με ένα φυσικό κουμπί που ελέγχει την ίδια έξοδο.
- Εάν αλλάξετε την κατάσταση εξόδου χρησιμοποιώντας το φυσικό κουμπί puhs, η τρέχουσα κατάστασή του ενημερώνεται επίσης στο web υπηρέτης.
Συνοπτικά, αυτό το έργο σας επιτρέπει να ελέγχετε την ίδια έξοδο χρησιμοποιώντας a web διακομιστή και ένα κουμπί ταυτόχρονα. Κάθε φορά που αλλάζει η κατάσταση εξόδου, το web ο διακομιστής ενημερώνεται.
Απαιτούμενα εξαρτήματα
Ακολουθεί μια λίστα με τα εξαρτήματα που χρειάζεστε για να φτιάξετε το κύκλωμα:
- Πλακέτα ESP32 DEVKIT V1
- LED 5 mm
- Αντίσταση 220 Ohm
- Κουμπί
- Αντίσταση 10k Ohm
- Breadboard
- Καλώδια βραχυκυκλωτήρα
ΣχηματικόΕγκατάσταση της βιβλιοθήκης για ESP32
Για να το φτιάξεις αυτό web διακομιστή, χρησιμοποιούμε το ESPAsyncWebΒιβλιοθήκη διακομιστή και βιβλιοθήκη AsyncTCP. (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση του ESPAsyncWebΒιβλιοθήκη διακομιστή
Ακολουθήστε τα επόμενα βήματα για να εγκαταστήσετε το ESPAsyncWebΒιβλιοθήκη διακομιστή:
- Κάντε κλικ εδώ για να κατεβάσετε το ESPAsyncWebΒιβλιοθήκη διακομιστή. Θα έπρεπε να έχετε
έναν φάκελο .zip στο φάκελο "Λήψεις". - Αποσυμπιέστε το φάκελο .zip και θα πρέπει να λάβετε το ESPAsyncWebΚύριος φάκελος διακομιστή
- Μετονομάστε το φάκελό σας από ESPAsyncWebServer-master στο ESPAsyncWebΥπηρέτης
- Μετακινήστε το ESPAsyncWebΦάκελος διακομιστή στον φάκελο βιβλιοθηκών εγκατάστασης Arduino IDE
Εναλλακτικά, στο Arduino IDE, μπορείτε να μεταβείτε στο Sketch > Include
Βιβλιοθήκη > Προσθήκη βιβλιοθήκης .ZIP… και επιλέξτε τη βιβλιοθήκη που μόλις κατεβάσατε.
Εγκατάσταση της βιβλιοθήκης AsyncTCP για ESP32
Το ESPAsyncWebΗ βιβλιοθήκη διακομιστή απαιτεί τη λειτουργία της βιβλιοθήκης AsyncTCP. Ακολουθήστε τα ακόλουθα βήματα για να εγκαταστήσετε αυτήν τη βιβλιοθήκη:
- Κάντε κλικ εδώ για λήψη της βιβλιοθήκης AsyncTCP. Θα πρέπει να έχετε έναν φάκελο .zip στο φάκελο "Λήψεις".
- Αποσυμπιέστε το φάκελο .zip και θα λάβετε τον φάκελο AsyncTCP-master
- Μετονομάστε το φάκελό σας από AsyncTCP-master σε AsyncTCP
- Μετακινήστε το φάκελο AsyncTCP στον φάκελο των βιβλιοθηκών εγκατάστασης του Arduino IDE
- Τέλος, ανοίξτε ξανά το Arduino IDE σας
Εναλλακτικά, στο Arduino IDE, μπορείτε να μεταβείτε στο Sketch > Include
Βιβλιοθήκη > Προσθήκη βιβλιοθήκης .ZIP… και επιλέξτε τη βιβλιοθήκη που μόλις κατεβάσατε.
Κώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Αφού εγκαταστήσετε τις απαιτούμενες βιβλιοθήκες, ανοίξτε τον κωδικό
Project_8_Output_State_Synchronization_Web_Server.ino στο arduino IDE.
Πριν ανεβάσετε τον κωδικό, μην ξεχάσετε να εισαγάγετε τα διαπιστευτήρια του δικτύου σας, ώστε το ESP να συνδεθεί στο τοπικό σας δίκτυο.
Πώς λειτουργεί ο Κώδικας
Κατάσταση κουμπιού και κατάσταση εξόδου
Η μεταβλητή ledState διατηρεί την κατάσταση εξόδου LED. Για προεπιλογή, όταν το web ο διακομιστής ξεκινά, είναι ΧΑΜΗΛΟ.
Τα buttonState και lastButtonState χρησιμοποιούνται για να ανιχνεύσουν εάν το κουμπί πατήθηκε ή όχι.Κουμπί (web υπηρέτης)
Δεν συμπεριλάβαμε το HTML για να δημιουργήσουμε το κουμπί στη μεταβλητή index_html.
Αυτό συμβαίνει επειδή θέλουμε να μπορούμε να το αλλάξουμε ανάλογα με την τρέχουσα κατάσταση LED που μπορεί επίσης να αλλάξει με το κουμπί.
Έτσι, δημιουργήσαμε ένα σύμβολο κράτησης θέσης για το κουμπί %BUTTONPLACEHOLDER% που θα αντικατασταθεί με κείμενο HTML για να δημιουργήσουμε το κουμπί αργότερα στον κώδικα (αυτό γίνεται στη συνάρτηση επεξεργαστή()).επεξεργαστής ()
Η συνάρτηση processor() αντικαθιστά τυχόν σύμβολα θέσης στο κείμενο HTML με πραγματικές τιμές. Αρχικά, ελέγχει εάν τα κείμενα HTML περιέχουν κάποια
placeholders %BUTTONPLACEHOLDER%.Στη συνέχεια, καλέστε τη συνάρτηση theoutputState() που επιστρέφει την τρέχουσα κατάσταση εξόδου. Το αποθηκεύουμε στη μεταβλητή outputStateValue.
Μετά από αυτό, χρησιμοποιήστε αυτήν την τιμή για να δημιουργήσετε το κείμενο HTML για να εμφανίσετε το κουμπί με τη σωστή κατάσταση:
Αίτημα HTTP GET για αλλαγή κατάστασης εξόδου (JavaScript)
Όταν πατάτε το κουμπί, καλείται η λειτουργία thetoggleCheckbox(). Αυτή η λειτουργία θα κάνει ένα αίτημα σε διαφορετικά URLs για να ανάψετε ή να απενεργοποιήσετε το LED.Για να ενεργοποιήσετε το LED, κάνει ένα αίτημα στο /update?state=1 URL:
Διαφορετικά, κάνει ένα αίτημα στο /update?state=0 URL.
HTTP GET Αίτημα για ενημέρωση κατάστασης (JavaScript)
Για να διατηρείται ενημερωμένη η κατάσταση εξόδου στο web διακομιστή, καλούμε την ακόλουθη συνάρτηση που κάνει ένα νέο αίτημα στο /state URL κάθε δευτερόλεπτο.Χειρισμός αιτημάτων
Στη συνέχεια, πρέπει να χειριστούμε τι συμβαίνει όταν το ESP32 ή το ESP8266 λαμβάνει αιτήματα για αυτά URLs.
Όταν λαμβάνεται ένα αίτημα στο root /URL, στέλνουμε τη σελίδα HTML καθώς και τον επεξεργαστή.Οι ακόλουθες γραμμές ελέγχουν εάν λάβατε ένα αίτημα στο /update?state=1 ή /update?state=0 URL και αλλάζει ανάλογα το ledState.
Όταν λαμβάνεται ένα αίτημα στο /state URL, στέλνουμε την τρέχουσα κατάσταση εξόδου:
βρόχος()
Στο loop(), αναπηδάμε το κουμπί και ενεργοποιούμε ή απενεργοποιούμε το LED ανάλογα με την τιμή του ledState μεταβλητός.Επίδειξη
Μεταφορτώστε τον κωδικό στην πλακέτα ESP32. Μεταφορτώστε τα βήματα αναφοράς κώδικα.
Στη συνέχεια, ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200. Πατήστε το ενσωματωμένο κουμπί EN/RST για να λάβετε τη διεύθυνση IP.Ανοίξτε ένα πρόγραμμα περιήγησης στο τοπικό σας δίκτυο και πληκτρολογήστε τη διεύθυνση IP του ESP. Θα πρέπει να έχετε πρόσβαση στο web διακομιστή όπως φαίνεται παρακάτω.
Σημείωμα: Το πρόγραμμα περιήγησής σας και το ESP32 θα πρέπει να είναι συνδεδεμένα στο ίδιο LAN.Μπορείτε να αλλάξετε το κουμπί στο web διακομιστή για να ανάψει το LED.
Μπορείτε επίσης να ελέγξετε το ίδιο LED με το φυσικό κουμπί. Η κατάστασή του θα ενημερώνεται πάντα αυτόματα στο web υπηρέτης.
Έργο 9 ESP32 DHT11 Web Υπηρέτης
Σε αυτό το έργο, θα μάθετε πώς να δημιουργείτε ένα ασύγχρονο ESP32 web διακομιστή με το DHT11 που εμφανίζει τη θερμοκρασία και την υγρασία χρησιμοποιώντας το Arduino IDE.
Προαπαιτούμενα
Ο web ο διακομιστής που θα δημιουργήσουμε ενημερώνει τις ενδείξεις αυτόματα χωρίς να χρειάζεται να ανανεωθεί web σελίδα.
Με αυτό το έργο θα μάθετε:
- Πώς να διαβάσετε τη θερμοκρασία και την υγρασία από τους αισθητήρες DHT.
- Κατασκευάστε ένα ασύγχρονο web διακομιστή χρησιμοποιώντας το ESPAsyncWebΒιβλιοθήκη διακομιστή;
- Ενημερώστε τις ενδείξεις του αισθητήρα αυτόματα χωρίς να χρειάζεται ανανέωση web σελίδα.
Ασύγχρονη Web Υπηρέτης
Για την κατασκευή του web διακομιστή που θα χρησιμοποιήσουμε τον ESPAsyncWebΒιβλιοθήκη διακομιστή που παρέχει έναν εύκολο τρόπο δημιουργίας ασύγχρονου web υπηρέτης. Χτίζοντας ένα ασύγχρονο web ο διακομιστής έχει πολλά advantagόπως αναφέρεται στη σελίδα της βιβλιοθήκης GitHub, όπως:
- «Χειριστείτε περισσότερες από μία συνδέσεις ταυτόχρονα».
- "Όταν στέλνετε την απάντηση, είστε αμέσως έτοιμοι να χειριστείτε άλλες συνδέσεις ενώ ο διακομιστής φροντίζει να στείλει την απάντηση στο παρασκήνιο".
- "Απλή μηχανή επεξεργασίας προτύπων για χειρισμό προτύπων".
Απαιτούμενα εξαρτήματα
Για να ολοκληρώσετε αυτό το σεμινάριο χρειάζεστε τα ακόλουθα μέρη:
- Πλακέτα ανάπτυξης ESP32
- Μονάδα DHT11
- Breadboard
- Καλώδια βραχυκυκλωτήρα
ΣχηματικόΕγκατάσταση βιβλιοθηκών
Πρέπει να εγκαταστήσετε μερικές βιβλιοθήκες για αυτό το έργο:
- Ο DHT και το Ενοποιημένος αισθητήρας Adafruit Βιβλιοθήκες προγραμμάτων οδήγησης για ανάγνωση από τον αισθητήρα DHT.
- ESPAsyncWebΥπηρέτης και Ασύγχρονο TCP βιβλιοθήκες για τη δημιουργία του ασύγχρονου web υπηρέτης.
Ακολουθήστε τις παρακάτω οδηγίες για να εγκαταστήσετε αυτές τις βιβλιοθήκες:
Εγκατάσταση της βιβλιοθήκης αισθητήρων DHT
Για να διαβάσετε από τον αισθητήρα DHT χρησιμοποιώντας το Arduino IDE, πρέπει να εγκαταστήσετε το Βιβλιοθήκη αισθητήρων DHT. Ακολουθήστε τα επόμενα βήματα για να εγκαταστήσετε τη βιβλιοθήκη.
- Κάντε κλικ εδώ για να κατεβάσετε τη βιβλιοθήκη του αισθητήρα DHT. Θα πρέπει να έχετε έναν φάκελο .zip στο φάκελο "Λήψεις".
- Αποσυμπιέστε το φάκελο .zip και θα λάβετε τον φάκελο DHT-sensor-library-master
- Μετονομάστε το φάκελό σας από DHT-sensor-library-master σε DHT_sensor
- Μετακινήστε το φάκελο DHT_sensor στον φάκελο των βιβλιοθηκών εγκατάστασης του Arduino IDE
- Τέλος, ανοίξτε ξανά το Arduino IDE σας
Εγκατάσταση του προγράμματος οδήγησης Unified Sensor Adafruit
Πρέπει επίσης να εγκαταστήσετε το Βιβλιοθήκη Adafruit Unified Sensor Driver για εργασία με τον αισθητήρα DHT. Ακολουθήστε τα επόμενα βήματα για να εγκαταστήσετε τη βιβλιοθήκη.
- Κάντε κλικ εδώ για να κατεβάσετε τη βιβλιοθήκη Adafruit Unified Sensor. Θα πρέπει να έχετε έναν φάκελο .zip στο φάκελο "Λήψεις".
- Αποσυμπιέστε το φάκελο .zip και θα λάβετε τον φάκελο Adafruit_sensor-master
- Μετονομάστε το φάκελό σας από Adafruit_sensor-master σε Adafruit_sensor
- Μετακινήστε το φάκελο Adafruit_sensor στον φάκελο των βιβλιοθηκών εγκατάστασης του Arduino IDE
- Τέλος, ανοίξτε ξανά το Arduino IDE σας
Εγκατάσταση του ESPAsyncWebΒιβλιοθήκη διακομιστή
Ακολουθήστε τα επόμενα βήματα για να εγκαταστήσετε το ESPAsyncWebΥπηρέτης βιβλιοθήκη:
- Κάντε κλικ εδώ για να κατεβάσετε το ESPAsyncWebΒιβλιοθήκη διακομιστή. Θα έπρεπε να έχετε
έναν φάκελο .zip στο φάκελο "Λήψεις". - Αποσυμπιέστε το φάκελο .zip και πρέπει
λάβετε ESPAsyncWebΚύριος φάκελος διακομιστή - Μετονομάστε το φάκελό σας από ESPAsyncWebServer-master στο ESPAsyncWebΥπηρέτης
- Μετακινήστε το ESPAsyncWebΦάκελος διακομιστή στον φάκελο βιβλιοθηκών εγκατάστασης Arduino IDE
Εγκατάσταση της βιβλιοθήκης Async TCP για ESP32
Ο ESPAsyncWebΥπηρέτης η βιβλιοθήκη απαιτεί το AsyncTCP βιβλιοθήκη στη δουλειά. Ακολουθήστε τα ακόλουθα βήματα για να εγκαταστήσετε αυτήν τη βιβλιοθήκη:
- Κάντε κλικ εδώ για λήψη της βιβλιοθήκης AsyncTCP. Θα πρέπει να έχετε έναν φάκελο .zip στο φάκελο "Λήψεις".
- Αποσυμπιέστε το φάκελο .zip και θα λάβετε τον φάκελο AsyncTCP-master
- Μετονομάστε το φάκελό σας από AsyncTCP-master σε AsyncTCP
- Μετακινήστε το φάκελο AsyncTCP στον φάκελο των βιβλιοθηκών εγκατάστασης του Arduino IDE
- Τέλος, ανοίξτε ξανά το Arduino IDE σας
Κώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDE
Αφού εγκαταστήσετε τις απαιτούμενες βιβλιοθήκες, ανοίξτε τον κωδικό
Project_9_ESP32_DHT11_Web_Server.ino στο arduino IDE.
Πριν ανεβάσετε τον κωδικό, μην ξεχάσετε να εισαγάγετε τα διαπιστευτήρια του δικτύου σας, ώστε το ESP να συνδεθεί στο τοπικό σας δίκτυο.Πώς λειτουργεί ο Κώδικας
Στις επόμενες παραγράφους θα εξηγήσουμε πώς λειτουργεί ο κώδικας. Συνεχίστε να διαβάζετε εάν θέλετε να μάθετε περισσότερα ή μεταβείτε στην ενότητα Επίδειξη για να δείτε το τελικό αποτέλεσμα.
Εισαγωγή βιβλιοθηκών
Πρώτα, εισαγάγετε τις απαιτούμενες βιβλιοθήκες. Το WiFi, ESPAsyncWebΟ διακομιστής και το ESPAsyncTCP χρειάζονται για τη δημιουργία του web υπηρέτης. Οι βιβλιοθήκες Adafruit_Sensor και DHT χρειάζονται για ανάγνωση από τους αισθητήρες DHT11 ή DHT22.Ορισμός μεταβλητών
Καθορίστε το GPIO στο οποίο είναι συνδεδεμένη η ακίδα δεδομένων DHT. Σε αυτήν την περίπτωση, είναι συνδεδεμένο στο GPIO 4.Στη συνέχεια, επιλέξτε τον τύπο αισθητήρα DHT που χρησιμοποιείτε. Στην πρώην μαςample, χρησιμοποιούμε το DHT22. Εάν χρησιμοποιείτε άλλο τύπο, απλά πρέπει να αφαιρέσετε το σχόλιο του αισθητήρα σας και να σχολιάσετε όλους τους άλλους.
Δημιουργήστε ένα αντικείμενο DHT με τον τύπο και την καρφίτσα που ορίσαμε νωρίτερα.Δημιουργήστε ένα AsyncWebΑντικείμενο διακομιστή στη θύρα 80.
Διαβάστε τις Λειτουργίες θερμοκρασίας και υγρασίας
Δημιουργήσαμε δύο συναρτήσεις: μία για την ανάγνωση της θερμοκρασίας Δημιουργήσαμε δύο συναρτήσεις: μία για την ανάγνωση της θερμοκρασίας (readDHTTemperature()) και την άλλη για την ανάγνωση της υγρασίας (readDHTHumidity()).Η λήψη μετρήσεων αισθητήρα είναι τόσο απλή όσο η χρήση Η λήψη μετρήσεων αισθητήρα είναι τόσο απλή όσο η χρήση των μεθόδων readTemperature() και readHumidity() στο αντικείμενο dht.
Έχουμε επίσης μια συνθήκη που επιστρέφει δύο παύλες (–) σε περίπτωση που ο αισθητήρας δεν καταφέρει να λάβει τις ενδείξεις.
Οι ενδείξεις επιστρέφονται ως τύπος συμβολοσειράς. Για να μετατρέψετε ένα float σε συμβολοσειρά, χρησιμοποιήστε τη συνάρτηση String().
Από προεπιλογή, διαβάζουμε τη θερμοκρασία σε βαθμούς Κελσίου. Για να λάβετε τη θερμοκρασία σε βαθμούς Φαρενάιτ, σχολιάστε τη θερμοκρασία σε βαθμούς Κελσίου και αφαιρέστε τη θερμοκρασία σε Φαρενάιτ, ώστε να έχετε τα εξής:
Ανεβάστε τον Κώδικα
Τώρα, ανεβάστε τον κωδικό στο ESP32 σας. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή πλακέτα και τη σωστή θύρα COM. Βήματα αναφοράς κώδικα μεταφόρτωσης.
Μετά τη μεταφόρτωση, ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200. Πατήστε το κουμπί επαναφοράς ESP32. Η διεύθυνση IP του ESP32 θα πρέπει να εκτυπωθεί στη σειρά ελεγκτής εκπομπών.Επίδειξη
Ανοίξτε ένα πρόγραμμα περιήγησης και πληκτρολογήστε τη διεύθυνση IP του ESP32. Σας web ο διακομιστής θα πρέπει να εμφανίζει τις πιο πρόσφατες μετρήσεις του αισθητήρα.
Σημείωμα: Το πρόγραμμα περιήγησής σας και το ESP32 θα πρέπει να είναι συνδεδεμένα στο ίδιο LAN.
Σημειώστε ότι οι ενδείξεις θερμοκρασίας και υγρασίας ενημερώνονται αυτόματα χωρίς να χρειάζεται ανανέωση web σελίδα.
Project_10_ESP32_OLED_Display
Αυτό το έργο δείχνει πώς να χρησιμοποιήσετε την οθόνη OLED SSD0.96 1306 ιντσών με ESP32 χρησιμοποιώντας Arduino IDE.
Παρουσιάζουμε την οθόνη OLED 0.96 ιντσών
Ο Οθόνη OLED που θα χρησιμοποιήσουμε σε αυτό το σεμινάριο είναι το μοντέλο SSD1306: μια μονόχρωμη οθόνη 0.96 ιντσών με 128×64 pixels όπως φαίνεται στην παρακάτω εικόνα.Η οθόνη OLED δεν απαιτεί οπίσθιο φωτισμό, με αποτέλεσμα μια πολύ ωραία αντίθεση σε σκοτεινά περιβάλλοντα. Επιπλέον, τα pixel του καταναλώνουν ενέργεια μόνο όταν είναι ενεργοποιημένα, επομένως η οθόνη OLED καταναλώνει λιγότερη ενέργεια σε σύγκριση με άλλες οθόνες.
Επειδή η οθόνη OLED χρησιμοποιεί πρωτόκολλο επικοινωνίας I2C, η καλωδίωση είναι πολύ απλή. Μπορείτε να χρησιμοποιήσετε τον παρακάτω πίνακα ως αναφορά.
OLED Pin | ESP32 |
Vin | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
ΣχηματικόΕγκατάσταση SSD1306 OLED Library – ESP32
Υπάρχουν πολλές διαθέσιμες βιβλιοθήκες για τον έλεγχο της οθόνης OLED με το ESP32.
Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε δύο βιβλιοθήκες Adafruit: βιβλιοθήκη Adafruit_SSD1306 και Βιβλιοθήκη Adafruit_GFX.
Ακολουθήστε τα επόμενα βήματα για να εγκαταστήσετε αυτές τις βιβλιοθήκες.
- Ανοίξτε το Arduino IDE και μεταβείτε στο Sketch > Include Library > Manage Libraries. Ο διαχειριστής βιβλιοθήκης πρέπει να ανοίξει.
- Πληκτρολογήστε "SSD1306" στο πλαίσιο αναζήτησης και εγκαταστήστε τη βιβλιοθήκη SSD1306 από το Adafruit.
- Αφού εγκαταστήσετε τη βιβλιοθήκη SSD1306 από το Adafruit, πληκτρολογήστε "GFX" στο πλαίσιο αναζήτησης και εγκαταστήστε τη βιβλιοθήκη.
- Αφού εγκαταστήσετε τις βιβλιοθήκες, επανεκκινήστε το Arduino IDE.
Κώδικας
Αφού εγκαταστήσετε τις απαιτούμενες βιβλιοθήκες, ανοίξτε το Project_10_ESP32_OLED_Display.ino στο arduino IDE. κώδικας
Θα προγραμματίσουμε το ESP32 χρησιμοποιώντας το Arduino IDE, επομένως βεβαιωθείτε ότι έχετε εγκαταστήσει το πρόσθετο ESP32 πριν συνεχίσετε: (Εάν έχετε κάνει ήδη αυτό το βήμα, μπορείτε να μεταβείτε στο επόμενο βήμα.)
Εγκατάσταση πρόσθετου ESP32 στο Arduino IDEΠώς λειτουργεί ο Κώδικας
Εισαγωγή βιβλιοθηκών
Πρώτα, πρέπει να εισαγάγετε τις απαραίτητες βιβλιοθήκες. Η βιβλιοθήκη Wire για χρήση του I2C και οι βιβλιοθήκες Adafruit για εγγραφή στην οθόνη: Adafruit_GFX και Adafruit_SSD1306.Εκκινήστε την οθόνη OLED
Στη συνέχεια, ορίζετε το πλάτος και το ύψος της OLED σας. Σε αυτό το πρώηνampΓια παράδειγμα, χρησιμοποιούμε μια οθόνη OLED 128×64. Εάν χρησιμοποιείτε άλλα μεγέθη, μπορείτε να το αλλάξετε στις μεταβλητές SCREEN_WIDTH και SCREEN_HEIGHT.Στη συνέχεια, αρχικοποιήστε ένα αντικείμενο οθόνης με το πλάτος και το ύψος που καθορίστηκαν νωρίτερα με το πρωτόκολλο επικοινωνίας I2C (&Wire).
Η παράμετρος (-1) σημαίνει ότι η οθόνη OLED σας δεν έχει pin RESET. Εάν η οθόνη OLED σας έχει καρφίτσα RESET, θα πρέπει να συνδεθεί σε ένα GPIO. Σε αυτήν την περίπτωση, θα πρέπει να μεταβιβάσετε τον αριθμό GPIO ως παράμετρο.
Στο setup(), αρχικοποιήστε τη σειριακή οθόνη με ρυθμό baud 115200 για σκοπούς εντοπισμού σφαλμάτων.Εκκινήστε την οθόνη OLED με τη μέθοδο start() ως εξής:
Αυτό το απόσπασμα εκτυπώνει επίσης ένα μήνυμα στη σειριακή οθόνη, σε περίπτωση που δεν μπορούμε να συνδεθούμε στην οθόνη.
Σε περίπτωση που χρησιμοποιείτε διαφορετική οθόνη OLED, ίσως χρειαστεί να αλλάξετε τη διεύθυνση OLED. Στην περίπτωσή μας, η διεύθυνση είναι 0x3C.
Μετά την προετοιμασία της οθόνης, προσθέστε μια καθυστέρηση δύο δευτερολέπτων, έτσι ώστε η OLED να έχει αρκετό χρόνο για να προετοιμαστεί πριν γράψει κείμενο:
Καθαρίστε την οθόνη, ορίστε μέγεθος γραμματοσειράς, χρώμα και γράψτε κείμενο
Μετά την προετοιμασία της οθόνης, διαγράψτε το buffer της οθόνης με τη μέθοδο clearDisplay():
Πριν γράψετε κείμενο, πρέπει να ορίσετε το μέγεθος του κειμένου, το χρώμα και τη θέση που θα εμφανίζεται το κείμενο στο OLED.
Ορίστε το μέγεθος της γραμματοσειράς χρησιμοποιώντας τη μέθοδο setTextSize():Ορίστε το χρώμα της γραμματοσειράς με τη μέθοδο setTextColor():
Το WHITE ορίζει τη λευκή γραμματοσειρά και το μαύρο φόντο.
Καθορίστε τη θέση όπου ξεκινά το κείμενο χρησιμοποιώντας τη μέθοδο setCursor(x,y). Σε αυτήν την περίπτωση, ρυθμίζουμε το κείμενο να ξεκινά από τις συντεταγμένες (0,0) – στην επάνω αριστερή γωνία.Τέλος, μπορείτε να στείλετε το κείμενο στην οθόνη χρησιμοποιώντας τη μέθοδο println(), ως εξής
Στη συνέχεια, πρέπει να καλέσετε τη μέθοδο display() για να εμφανίσετε πραγματικά το κείμενο στην οθόνη.
Η βιβλιοθήκη Adafruit OLED παρέχει χρήσιμες μεθόδους για εύκολη κύλιση κειμένου.
- startscrollright(0x00, 0x0F): κύλιση κειμένου από αριστερά προς τα δεξιά
- startscrollleft(0x00, 0x0F): κύλιση κειμένου από δεξιά προς τα αριστερά
- startscrolldiagright(0x00, 0x07): κύλιση κειμένου από την κάτω αριστερή γωνία στην επάνω δεξιά γωνία startscrolldiagleft(0x00, 0x07): κύλιση κειμένου από την κάτω δεξιά γωνία στην επάνω αριστερή γωνία
Ανεβάστε τον Κώδικα
Τώρα, ανεβάστε τον κωδικό στο ESP32. Βήματα αναφοράς κωδικού μεταφόρτωσης.
Μετά τη μεταφόρτωση του κώδικα, το OLED θα εμφανίσει κυλιόμενο κείμενο.
Έγγραφα / Πόροι
![]() |
LAFVIN ESP32 Basic Starter Kit [pdf] Εγχειρίδιο οδηγιών ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |