ESP32 Basic Starter
Kit
Packing List
ESP32 Yntroduksje
Nij by ESP32? Begjin hjir! De ESP32 is in searje lege-kosten en leech-power System on a Chip (SoC) mikrocontrollers ûntwikkele troch Espressif dy't Wi-Fi en Bluetooth draadloze mooglikheden en dual-core processor omfetsje. As jo bekend binne mei de ESP8266, is de ESP32 syn opfolger, laden mei in protte nije funksjes.ESP32 Spesifikaasjes
As jo wat mear technysk en spesifyk wolle krije, kinne jo de folgjende detaillearre spesifikaasjes fan 'e ESP32 besjen (boarne: http://esp32.net/) - foar mear details, kontrolearje it gegevensblêd):
- Triedleaze ferbining WiFi: 150.0 Mbps gegevensrate mei HT40
- Bluetooth: BLE (Bluetooth Low Energy) en Bluetooth Classic
- Prosessor: Tensilica Xtensa Dual-Core 32-bit LX6 mikroprosessor, rint op 160 of 240 MHz
- Oantinken:
- ROM: 448 KB (foar opstarten en kearnfunksjes)
- SRAM: 520 KB (foar gegevens en ynstruksjes)
- RTC fas SRAM: 8 KB (foar gegevensopslach en haad-CPU by RTC-boot út 'e djippe sliepmodus)
- RTC trage SRAM: 8KB (foar ko-prosessor tagong by djippe sliepmodus) eFuse: 1 Kbit (wêrfan 256 bits wurde brûkt foar it systeem (MAC-adres en chipkonfiguraasje) en de oerbleaune 768 bits binne reservearre foar klantapplikaasjes, ynklusyf Flash-fersifering en Chip-ID)
Ynbêde flash: flash ferbûn yntern fia IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 en SD_DATA_1 op ESP32-D2WD en ESP32-PICO-D4.
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD, en ESP32-S0WD chips)
- 2 MiB (ESP32-D2WD-chip)
- 4 MiB (ESP32-PICO-D4 SiP-module)
Low Power: soarget derfoar dat jo noch ADC-konversaasjes kinne brûke, bygelyksample, ûnder djippe sliep.
Perifeare ynfier/útfier:
- perifeare ynterface mei DMA dy't capacitive touch omfettet
- ADC's (Analog-to-Digital Converter)
- DAC's (Digital-to-Analog Converter)
- I²C (Inter-Integrated Circuit)
- UART (universele asynchrone ûntfanger / stjoerder)
- SPI (Serial Peripheral Interface)
- I²S (Integrated Interchip Sound)
- RMII (Reduced Media-Independent Interface)
- PWM (Pulse-Width Modulation)
Feiligens: hardware accelerators foar AES en SSL / TLS
ESP32 Untwikkelingsboerden
ESP32 ferwiist nei de bleate ESP32-chip. De term "ESP32" wurdt lykwols ek brûkt om te ferwizen nei ESP32-ûntwikkelingsboerden. It brûken fan ESP32 bleate chips is net maklik as praktysk, foaral by it learen, testen en prototypjen. Meastentiids wolle jo in ESP32-ûntwikkelingsboerd brûke.
Wy sille it ESP32 DEVKIT V1-boerd brûke as referinsje. De ôfbylding hjirûnder lit it ESP32 DEVKIT V1-boerd sjen, ferzje mei 30 GPIO-pins.Spesifikaasjes - ESP32 DEVKIT V1
De folgjende tabel lit in gearfetting sjen fan de funksjes en spesifikaasjes fan 'e ESP32 DEVKIT V1 DOIT-board:
Oantal kearnen | 2 (dûbele kearn) |
Wi-Fi | 2.4 GHz oant 150 Mbits/s |
Bluetooth | BLE (Bluetooth Low Energy) en legacy Bluetooth |
Boukunde | 32 byks |
Klok frekwinsje | Oant 240 MHz |
RAAM | 512 kB |
Pins | 30 (ôfhinklik fan it model) |
Perifeare apparaten | Kapasitive touch, ADC (analog nei digitaal converter), DAC (digitaal nei analog converter), 12C (Inter-Integrated Circuit), UART (universele asynchrone ûntfanger / stjoerder), CAN 2.0 (Controller Area Netwokr), SPI (Serial Peripheral Interface), 12S (Integrated Inter-IC Lûd), RMII (Reduced Media-Independent Interface), PWM (pulsbreedtemodulaasje), en mear. |
Ynboude knoppen | RESET en BOOT knoppen |
Ynboude LED's | ynboude blauwe LED ferbûn oan GPIO2; ynboude reade LED dat lit sjen dat it bestjoer wurdt oandreaun |
USB nei UART brêge |
CP2102 |
It komt mei in microUSB-ynterface dy't jo kinne brûke om it boerd oan jo kompjûter te ferbinen om koade te uploaden of macht oan te passen.
It brûkt de CP2102-chip (USB nei UART) om te kommunisearjen mei jo kompjûter fia in COM-poarte mei in seriële ynterface. In oare populêre chip is de CH340. Kontrolearje wat is de USB nei UART chip converter op jo bestjoer omdat jo moatte ynstallearje de fereaske drivers sadat jo kompjûter kin kommunisearje mei it bestjoer (mear ynformaasje oer dit letter yn dizze gids).
Dit boerd komt ek mei in RESET-knop (mei it label EN) om it boerd opnij te begjinnen en in BOOT-knop om it boerd yn knipperjende modus te setten (beskikber om koade te ûntfangen). Tink derom dat guon boerden miskien gjin BOOT-knop hawwe.
It komt ek mei in ynboude blauwe LED dy't yntern ferbûn is mei GPIO 2. Dizze LED is nuttich foar debuggen om in soarte fan fisuele fysike útfier te jaan. D'r is ek in reade LED dy't opljochtet as jo krêft leverje oan it boerd.ESP32 Pinout
De ESP32 perifeare apparaten omfetsje:
- 18 Analog-to-Digital Converter (ADC) kanalen
- 3 SPI Schnittstellen
- 3 UART-ynterfaces
- 2 I2C ynterfaces
- 16 PWM útfier kanalen
- 2 digitaal-nei-analoge omrekkeners (DAC)
- 2 I2S ynterfaces
- 10 Kapasitive sensing GPIOs
De funksjes ADC (analoge nei digitale converter) en DAC (digitale nei analoge converter) wurde tawiisd oan spesifike statyske pinnen. Jo kinne lykwols beslute hokker pins UART, I2C, SPI, PWM, ensfh binne - jo moatte se gewoan yn 'e koade tawize. Dit is mooglik troch de multiplexingfunksje fan 'e ESP32-chip.
Hoewol jo de pinnen-eigenskippen op 'e software kinne definiearje, binne d'r standert pinnen tawiisd lykas werjûn yn' e folgjende figuerDerneist binne d'r pinnen mei spesifike funksjes dy't se gaadlik meitsje of net foar in bepaald projekt. De folgjende tabel lit sjen hokker pinnen it bêste binne om te brûken as yngongen, útgongen en hokker jo moatte foarsichtich wêze.
De pins markearre yn grien binne OK om te brûken. De yn giel markearre binne OK om te brûken, mar jo moatte omtinken jaan, om't se in ûnferwacht gedrach kinne hawwe benammen by it opstarten. De yn read markearre pins wurde net oanrikkemandearre om te brûken as yn- of útgongen.
GP IO | Ynfier | Utfier | Notysjes |
0 | oplutsen | OK | útfiert PWM-sinjaal by it opstarten, moat LOW wêze om de knipperjende modus yn te gean |
1 | TX pin | OK | debug útfier by boot |
2 | OK | OK | ferbûn oan on-board LED, moat wurde lofts driuwend of LOW te gean yn knipperjende modus |
3 | OK | RX pin | HIGH by boot |
4 | OK | OK | |
5 | OK | OK | útfier PWM sinjaal by boot, strapping pin |
12 | OK | OK | boot mislearret as lutsen heech, strapping pin |
13 | OK | OK | |
14 | OK | OK | útfiert PWM-sinjaal by it opstarten |
15 | OK | OK | útfier PWM sinjaal by boot, strapping pin |
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 | allinnich ynfier | |
35 | OK | allinnich ynfier | |
36 | OK | allinnich ynfier | |
39 | OK | allinnich ynfier |
Trochgean mei lêzen foar in mear detail en yngeande analyze fan de ESP32 GPIOs en syn funksjes.
Ynfier allinnich pins
GPIOs 34 oan 39 binne GPIs - input allinne pins. Dizze pinnen hawwe gjin ynterne pull-up of pull-down wjerstannen. Se kinne net brûkt wurde as útgongen, dus brûk dizze pinnen allinich as yngongen:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI-flitser yntegrearre op 'e ESP-WROOM-32
GPIO 6 nei GPIO 11 wurde bleatsteld yn guon ESP32 ûntwikkeling boards. Dizze pins binne lykwols ferbûn mei de yntegreare SPI-flitser op 'e ESP-WROOM-32-chip en wurde net oanrikkemandearre foar oare gebrûk. Dus, brûk dizze pinnen net yn jo projekten:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapasitive touch GPIOs
De ESP32 hat 10 ynterne kapasitive touchsensors. Dizze kinne fariaasjes fiele yn alles dat in elektryske lading hâldt, lykas de minsklike hûd. Sa kinne se fariaasjes ûntdekke dy't feroarsake wurde by it oanreitsje fan 'e GPIO's mei in finger. Dizze pinnen kinne maklik wurde yntegreare yn kapasitive pads en ferfange meganyske knoppen. De kapasitive touchpinnen kinne ek brûkt wurde om de ESP32 wekker te meitsjen út djippe sliep. Dy ynterne touchsensors binne ferbûn mei dizze GPIO's:
- 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)
Analooch nei digitale omrekkener (ADC)
De ESP32 hat 18 x 12 bits ADC-ynfierkanalen (wylst de ESP8266 allinich 1x 10 bits ADC hat). Dit binne de GPIO's dy't kinne wurde brûkt as ADC en respektivelike kanalen:
- 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)
Noat: ADC2-pins kinne net brûkt wurde as Wi-Fi wurdt brûkt. Dus, as jo Wi-Fi brûke en jo problemen hawwe om de wearde fan in ADC2 GPIO te krijen, kinne jo miskien beskôgje om ynstee in ADC1 GPIO te brûken. Dat soe jo probleem moatte oplosse.
De ADC-ynfierkanalen hawwe in 12-bit resolúsje. Dit betsjut dat jo analoge lêzingen kinne krije fariearjend fan 0 oant 4095, wêryn 0 oerienkomt mei 0V en 4095 oant 3.3V. Jo kinne ek de resolúsje fan jo kanalen ynstelle op 'e koade en it ADC-berik.
De ESP32 ADC-pinnen hawwe gjin lineêr gedrach. Jo sille wierskynlik net kinne ûnderskiede tusken 0 en 0.1V, of tusken 3.2 en 3.3V. Jo moatte dat yn gedachten hâlde as jo de ADC-pins brûke. Jo krije in gedrach fergelykber mei dat werjûn yn 'e folgjende figuer.Digital to Analog Converter (DAC)
D'r binne 2 x 8 bits DAC-kanalen op 'e ESP32 om digitale sinjalen te konvertearjen yn analoge voltage sinjaal útgongen. Dit binne de DAC-kanalen:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIOs
D'r is RTC GPIO-stipe op 'e ESP32. De GPIO's dy't trochstjoerd wurde nei it RTC-subsysteem mei leechmacht kinne wurde brûkt as de ESP32 yn djippe sliep is. Dizze RTC GPIO's kinne wurde brûkt om de ESP32 wekker te meitsjen fan djippe sliep as de Ultra Low
Power (ULP) co-prosessor rint. De folgjende GPIO's kinne brûkt wurde as in eksterne wekkerboarne.
- 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
De ESP32 LED PWM-controller hat 16 ûnôfhinklike kanalen dy't kinne wurde konfigureare om PWM-sinjalen te generearjen mei ferskate eigenskippen. Alle pins dy't kinne fungearje as útfier kin brûkt wurde as PWM pins (GPIOs 34 oan 39 kin net generearje PWM).
Om in PWM-sinjaal yn te stellen, moatte jo dizze parameters definiearje yn 'e koade:
- Frekwinsje fan sinjaal;
- Duty cycle;
- PWM kanaal;
- GPIO wêr't jo it sinjaal útfiere wolle.
I2C
De ESP32 hat twa I2C-kanalen en elke pin kin ynsteld wurde as SDA of SCL. By it brûken fan de ESP32 mei de Arduino IDE, binne de standert I2C-pins:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
As jo oare pinnen wolle brûke by it brûken fan de draadbibleteek, moatte jo gewoan skilje:
Wire.begin(SDA, SCL);
SPI
Standert is de pin-mapping foar SPI:
SPI | MOSI | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Underbrekt
Alle GPIO's kinne wurde konfigureare as interrupts.
Strapping Pins
De ESP32-chip hat de folgjende strapping-pins:
- GPIO 0 (moat LOW wêze om de bootmodus yn te gean)
- GPIO 2 (moat driuwend of LOW wêze by it opstarten)
- GPIO 4
- GPIO 5 (moat HIGH wêze by it opstarten)
- GPIO 12 (moat LOW wêze by it opstarten)
- GPIO 15 (moat HIGH wêze by it opstarten)
Dizze wurde brûkt om de ESP32 yn bootloader of flitsende modus te setten. Op de measte ûntwikkeling boards mei ynboude USB / Serial, jo hoege jo gjin soargen oer de steat fan dizze pinnen. It bestjoer set de pinnen yn 'e goede steat foar bliksem of bootmodus. Mear ynformaasje oer de ESP32 Boot Mode Seleksje is hjir te finen.
As jo lykwols perifeare apparaten hawwe ferbûn oan dy pinnen, kinne jo problemen hawwe om nije koade te uploaden, de ESP32 mei nije firmware te blêdzjen, of it boerd weromsette. As jo wat perifeare apparaten hawwe ferbûn oan 'e omsnoeringspinnen en jo krije problemen mei it opladen fan koade of it bliksemjen fan de ESP32, dan kin it wêze om't dy perifeare apparaten foarkomme dat de ESP32 de juste modus yngiet. Lês de dokumintaasje foar seleksje fan bootmodus om jo yn 'e goede rjochting te lieden. Nei it resetten, flitsen of booten, wurkje dy pinnen lykas ferwachte.
Pins HIGH at Boot
Guon GPIO's feroarje har steat nei HIGH of útfiere PWM-sinjalen by boot of reset.
Dit betsjut dat as jo útgongen hawwe ferbûn mei dizze GPIO's, jo miskien ûnferwachte resultaten krije as de ESP32 weromset of opstart.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 to GPIO 11 (ferbûn mei de ESP32 yntegrearre SPI flash ûnthâld - net oan te rieden om te brûken).
- GPIO 14
- GPIO 15
Aktivearje (EN)
Ynskeakelje (EN) is de ynskeakeljepin fan 'e 3.3V-regulator. It is omheech lutsen, dus ferbine mei de grûn om de 3.3V-regulator út te skeakeljen. Dit betsjut dat jo dizze pin brûke kinne ferbûn mei in drukknop om jo ESP32 opnij te starten, bygelyksample.
GPIO hjoeddeistige lutsen
De absolute maksimale stroom lutsen per GPIO is 40mA neffens de seksje "Recommended Operating Conditions" yn it ESP32-datablêd.
ESP32 Ynboude Hall Effect Sensor
De ESP32 hat ek in ynboude hall-effektsensor dy't feroaringen yn it magnetyske fjild yn syn omjouwing detektearret
ESP32 Arduino IDE
D'r is in tafoeging foar de Arduino IDE wêrmei jo de ESP32 kinne programmearje mei de Arduino IDE en syn programmeartaal. Yn dizze tutorial sille wy jo sjen litte hoe't jo it ESP32-boerd yn Arduino IDE kinne ynstallearje, of jo Windows, Mac OS X of Linux brûke.
Betingsten: Arduino IDE ynstallearre
Foardat jo dizze ynstallaasjeproseduere begjinne, moatte jo Arduino IDE hawwe ynstalleare op jo kompjûter. D'r binne twa ferzjes fan 'e Arduino IDE dy't jo kinne ynstallearje: ferzje 1 en ferzje 2.
Jo kinne Arduino IDE downloade en ynstallearje troch te klikken op de folgjende keppeling: arduino.cc/en/Main/Software
Hokker Arduino IDE-ferzje riede wy oan? Op it stuit binne der guon plugins foar de ESP32 (lykas de SPIFFS Filesysteem Uploader Plugin) dy't noch net stipe wurde op Arduino 2. Dus, as jo fan doel binne de SPIFFS-plugin yn 'e takomst te brûken, riede wy oan om de legacy ferzje 1.8.X te ynstallearjen. Jo moatte gewoan nei ûnderen rôlje op 'e Arduino-softwarepagina om it te finen.
Ynstallearje ESP32 Add-on yn Arduino IDE
Om it ESP32-boerd yn jo Arduino IDE te ynstallearjen, folgje dizze folgjende ynstruksjes:
- Gean yn jo Arduino IDE nei File> Foarkarren
- Fier it folgjende yn yn 'e "Additional Board Manager URLs" fjild:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Klikje dan op de knop "OK":Noat: as jo al hawwe de ESP8266 boards URL, kinne jo skiede de URLs mei in komma as folget:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Iepenje de Boards Manager. Gean nei Tools > Board > Boards Manager ...Sykje nei ESP32 and press install button for the “ESP32 by Espressif Systems“:
Dat is it. It moat wurde ynstallearre nei in pear sekonden.
Upload Test Code
Stek it ESP32 board oan jo kompjûter. Mei jo Arduino IDE iepen, folgje dizze stappen:
- Selektearje jo Board yn Tools> Board menu (yn myn gefal is it de ESP32 DEV Module)
- Selektearje de poarte (as jo de COM-poarte net yn jo Arduino IDE sjogge, moatte jo de CP210x USB nei UART Bridge VCP-bestjoerders ynstallearje):
- Iepenje de folgjende eksample ûnder File > Eksamples > WiFi
(ESP32) > WiFiScan - In nije skets iepenet yn jo Arduino IDE:
- Druk op de knop Upload yn 'e Arduino IDE. Wachtsje in pear sekonden wylst de koade kompilearret en uploadt nei jo boerd.
- As alles gie lykas ferwachte, soene jo in "Done uploading" moatte sjen. berjocht.
- Iepenje de Arduino IDE Serial Monitor mei in baudrate fan 115200:
- Druk op de knop ESP32 oan board ynskeakelje en jo soene de beskikbere netwurken yn 'e buert fan jo ESP32 moatte sjen:
Troubleshooting
As jo besykje in nije skets te uploaden nei jo ESP32 en jo krije dit flaterberjocht "Der is in fatale flater bard: Ferbining mei ESP32 mislearre: Time-out ... Ferbine ...". It betsjut dat jo ESP32 net yn bliksem / uploadmodus is.
As jo de juste boerdnamme en COM hawwe selektearre, folgje dizze stappen:
Hâld de "BOOT" knop yn jo ESP32 board
- Druk op de knop "Upload" yn 'e Arduino IDE om jo skets te uploaden:
- Neidat jo de "Ferbine ...." berjocht yn jo Arduino IDE, lit de finger los fan 'e "BOOT" knop:
- Dêrnei moatte jo it berjocht "Klear uploaden" sjen
Dat is it. Jo ESP32 moat de nije skets rinnen hawwe. Druk op de knop "ENABLE" om de ESP32 opnij te starten en de nije upload skets út te fieren.
Jo moatte dizze knopsekwinsje ek werhelje elke kear as jo in nije skets wolle uploade.
Projekt 1 ESP32 Inputs Utfier
Yn dizze hantlieding om te begjinnen sille jo leare hoe't jo digitale ynputen lêze lykas in knopskeakelje en digitale útgongen kontrolearje lykas in LED mei de ESP32 mei Arduino IDE.
Betingsten
Wy sille de ESP32 programmearje mei Arduino IDE. Soargje derfoar dat jo de add-on ESP32 boards ynstalleare hawwe foardat jo trochgean:
- Ynstallearje ESP32 Add-on yn Arduino IDE
ESP32 Control Digital Outputs
Earst moatte jo de GPIO ynstelle dy't jo wolle kontrolearje as OUTPUT. Brûk de pinMode() funksje as folget:
pinMode(GPIO, OUTPUT);
Foar in kontrôle in digitale útfier jo gewoan moatte brûke de digitalWrite () funksje, dat akseptearret as arguminten, de GPIO (int number) jo ferwize nei, en de steat, itsij HIGH of LOW.
digitalWrite(GPIO, STATE);
Alle GPIOs kinne brûkt wurde as útgongen útsein GPIOs 6 oan 11 (ferbûn mei de yntegrearre SPI flash) en GPIOs 34, 35, 36 en 39 (ynput allinne GPIOs);
Learje mear oer de ESP32 GPIO's: ESP32 GPIO Reference Guide
ESP32 Lês digitale yngongen
Stel earst de GPIO yn dy't jo lêze wolle as INPUT, mei de pinMode() funksje as folget:
pinMode(GPIO, INPUT);
Foar in lêzen in digitale ynfier, as in knop, Jo brûke de digitalRead () funksje, dat akseptearret as argumint, de GPIO (int number) jo ferwize nei.
digitalRead(GPIO);
Alle ESP32 GPIOs kinne brûkt wurde as yngongen, útsein GPIOs 6 oan 11 (ferbûn mei de yntegrearre SPI flash).
Learje mear oer de ESP32 GPIO's: ESP32 GPIO Reference Guide
Projekt Example
Om jo sjen te litten hoe't jo digitale ynputs en digitale útgongen kinne brûke, sille wy in ienfâldich projekt bouwe bglample mei in drukknop en in LED. Wy sille de tastân fan 'e drukknop lêze en de LED sa ferljochtsje lykas yllustrearre yn' e folgjende figuer.
Dielen nedich
Hjir is in list mei de dielen dy't jo nedich binne om it circuit te bouwen:
- ESP32 DEVKIT V1
- 5 mm LED
- 220 Ohm wjerstân
- Drukknop
- 10k Ohm wjerstân
- Breadboard
- Jumper triedden
Skematyske diagram
Foardat jo trochgean, moatte jo in circuit mei in LED en in drukknop gearstalle.
Wy ferbine de LED oan GPIO 5 en de drukknop oan GPIO 4.Koade
Iepenje de koade Project_1_ESP32_Inputs_Outputs.ino yn arduino IDEHoe't de koade wurket
Yn 'e folgjende twa rigels meitsje jo fariabelen om pins ta te jaan:
De knop is ferbûn mei GPIO 4 en de LED is ferbûn mei GPIO 5. By it brûken fan de Arduino IDE mei de ESP32, komt 4 oerien mei GPIO 4 en 5 komt oerien mei GPIO 5.
Dêrnei meitsje jo in fariabele om de knopstatus te hâlden. Standert is it 0 (net yndrukt).
int buttonState = 0;
Yn de opset (), jo inisjalisearje de knop as in INPUT, en de LED as in OUTPUT.
Dêrfoar brûke jo de pinMode () funksje dy't de pin dy't jo ferwize nei akseptearret, en de modus: INPUT of OUTPUT.
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Yn de loop () is wêr jo lêze de knop tastân en set de LED neffens.
Yn 'e folgjende rigel lêze jo de knopstatus en bewarje it yn' e buttonState fariabele.
Lykas wy earder sjoen hawwe, brûke jo de funksje digitalRead ().
buttonState = digitalRead(buttonPin);
De folgjende if statement, kontrolearret oft de knop steat is HIGH. As it is, it draait de LED op mei help fan de digitalWrite () funksje dy't akseptearret as argumint de ledPin, en de steat HIGH.
if (buttonState == HIGH)As de knopstatus net HIGH is, sette jo de LED út. Stel gewoan LOW as twadde argumint yn 'e digitalWrite () -funksje.
It opladen fan de koade
Foardat jo op de uploadknop klikke, gean nei Tools> Board, en selektearje it boerd: DOIT ESP32 DEVKIT V1 board.
Gean nei Tools> Poarte en selektearje de COM-poarte wêrmei de ESP32 is ferbûn. Druk dan op de uploadknop en wachtsje op it berjocht "Done uploading".Opmerking: As jo in protte stippen sjogge (ferbine…__…__) op it debuggenfinster en it berjocht "Failed to connect to ESP32: Timeout waiting for packet header"
begjinne te ferskinen. Troubleshooting
Demonstraasje
Nei it opladen fan de koade, test jo circuit. Jo LED moat opljochtsje as jo op de drukknop drukke:En útsette as jo it loslitte:
Projekt 2 ESP32 Analoge yngongen
Dit projekt lit sjen hoe't jo analoge ynputen lêze mei de ESP32 mei Arduino IDE.
Analoge lêzing is nuttich om wearden te lêzen fan fariabele wjerstannen lykas potentiometers, as analoge sensors.
Analoge yngongen (ADC)
It lêzen fan in analoge wearde mei de ESP32 betsjut dat jo wikseljend fol kinne mjittetage nivo's tusken 0 V en 3.3 V.
De voltage mjitten wurdt dan tawiisd oan in wearde tusken 0 en 4095, wêryn 0 V oerienkomt mei 0, en 3.3 V oerienkomt mei 4095. Any voltage tusken 0 V en 3.3 V wurdt jûn de oerienkommende wearde tusken.ADC is net-lineêr
Ideaallik soene jo in lineêr gedrach ferwachtsje by it brûken fan de ESP32 ADC-pins.
Dat bart lykwols net. Wat jo krije is in gedrach lykas werjûn yn it folgjende diagram:Dit gedrach betsjut dat jo ESP32 net yn steat is om 3.3 V fan 3.2 V te ûnderskieden.
Jo krije deselde wearde foar beide voltagyts: 4095.
Itselde bart foar hiel leech voltage-wearden: foar 0 V en 0.1 V krije jo deselde wearde: 0. Jo moatte dit yn gedachten hâlde by it brûken fan de ESP32 ADC-pins.
analogRead() Funksje
It lêzen fan in analoge ynfier mei de ESP32 mei de Arduino IDE is sa ienfâldich as it brûken fan de analogRead () -funksje. It akseptearret as argumint de GPIO dy't jo wolle lêze:
analogRead(GPIO);
Allinich 15 binne beskikber yn it DEVKIT V1board (ferzje mei 30 GPIO's).
Pake jo ESP32 board pinout en sykje de ADC-pins. Dizze wurde markearre mei in reade râne yn 'e figuer hjirûnder.Dizze analoge ynfierpinnen hawwe 12-bit resolúsje. Dit betsjut dat as jo in analoge ynfier lêze, it berik kin fariearje fan 0 oant 4095.
Opmerking: ADC2-pins kinne net brûkt wurde as Wi-Fi wurdt brûkt. Dus, as jo Wi-Fi brûke en jo hawwe problemen mei it krijen fan de wearde fan in ADC2 GPIO, kinne jo beskôgje om ynstee in ADC1 GPIO te brûken, dat soe jo probleem moatte oplosse.
Om te sjen hoe't alles gearhinget, sille wy in ienfâldige eks meitsjeample om in analoge wearde te lêzen fan in potensiometer.
Dielen nedich
Foar dizze eksample, jo hawwe de folgjende dielen nedich:
- ESP32 DEVKIT V1 Board
- Potentiometer
- Breadboard
- Jumper triedden
Skematysk
Draad in potensiometer oan jo ESP32. De potensiometer middelste pin moat wurde ferbûn oan GPIO 4. Jo kinne brûk meitsje fan de folgjende skematyske diagram as referinsje.Koade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
Iepenje de koade Project_2_ESP32_Inputs_Outputs.ino yn arduino IDEDizze koade lêst gewoan de wearden fan 'e potentiometer en printet dy wearden yn' e Serial Monitor.
Yn 'e koade begjinne jo mei it definiearjen fan de GPIO wêrmei't de potentiometer ferbûn is. Yn dizze eksample, GPIO 4.Yn de opset (), inisjalisearje in seriële kommunikaasje mei in baud rate fan 115200.
Yn de loop (), brûk de analogRead () funksje foar in lêzen de analoge ynfier fan de potPin.
As lêste, printsje de wearden lêzen fan de potentiometer yn de seriële monitor.
Upload de levere koade nei jo ESP32. Soargje derfoar dat jo it juste boerd en COM-poarte hawwe selektearre yn it menu Tools.
Testje de eksample
Nei it opladen fan de koade en drukke op de ESP32-resetknop, iepenje de Serial Monitor op in baudrate fan 115200. Rotearje de potentiometer en sjoch de wearden feroarje.De maksimale wearde dy't jo krije is 4095 en de minimale wearde is 0.
Ynpakke
Yn dit artikel hawwe jo leard hoe't jo analoge yngongen lêze mei de ESP32 mei de Arduino IDE. Gearfetsjend:
- It ESP32 DEVKIT V1 DOIT-board (ferzje mei 30 pins) hat 15 ADC-pins dy't jo kinne brûke om analoge yngongen te lêzen.
- Dizze pinnen hawwe in resolúsje fan 12 bits, wat betsjut dat jo wearden kinne krije fan 0 oant 4095.
- Om in wearde te lêzen yn 'e Arduino IDE, brûke jo gewoan de funksje analogRead ().
- De ESP32 ADC-pinnen hawwe gjin lineêr gedrach. Jo sille wierskynlik net kinne ûnderskiede tusken 0 en 0.1V, of tusken 3.2 en 3.3V. Jo moatte dat yn gedachten hâlde as jo de ADC-pins brûke.
Project 3 ESP32 PWM (analoge útfier)
Yn dizze tutorial sille wy jo sjen litte hoe't jo PWM-sinjalen kinne generearje mei de ESP32 mei Arduino IDE. As eksample sille wy in ienfâldige sirkwy bouwe dy't in LED dimt mei de LED PWM-controller fan 'e ESP32.ESP32 LED PWM Controller
De ESP32 hat in LED PWM-controller mei 16 ûnôfhinklike kanalen dy't kinne wurde konfigureare om PWM-sinjalen te generearjen mei ferskate eigenskippen.
Hjir binne de stappen dy't jo moatte folgje om in LED mei PWM te dimmen mei de Arduino IDE:
- Earst moatte jo in PWM-kanaal kieze. D'r binne 16 kanalen fan 0 oant 15.
- Dan moatte jo de PWM-sinjaalfrekwinsje ynstelle. Foar in LED is in frekwinsje fan 5000 Hz prima te brûken.
- Jo moatte ek de plichtsyklusresolúsje fan it sinjaal ynstelle: jo hawwe resolúsjes fan 1 oant 16 bits. Wy sille 8-bit resolúsje brûke, wat betsjut dat jo de LED-helderheid kinne kontrolearje mei in wearde fan 0 oant 255.
- Folgjende moatte jo opjaan oan hokker GPIO of GPIO's it sinjaal sil ferskine op. Dêrfoar sille jo de folgjende funksje brûke:
ledcAttachPin(GPIO, kanaal)
Dizze funksje akseptearret twa arguminten. De earste is de GPIO dy't it sinjaal sil útfiere, en de twadde is it kanaal dat it sinjaal sil generearje. - As lêste, om de LED-helderheid te kontrolearjen mei PWM, brûke jo de folgjende funksje:
ledcWrite(kanaal, dutycycle)
Dizze funksje akseptearret as arguminten it kanaal dat it PWM-sinjaal genereart, en de plichtsyklus.
Dielen nedich
Om dizze tutorial te folgjen hawwe jo dizze dielen nedich:
- ESP32 DEVKIT V1 Board
- 5 mm LED
- 220 Ohm wjerstân
- Breadboard
- Jumper triedden
Skematysk
Wire in LED oan jo ESP32 lykas yn it folgjende skematyske diagram. De LED moat ferbûn wêze mei GPIO 4.Noat: jo kinne elke pin brûke dy't jo wolle, salang't it kin fungearje as in útfier. Alle pins dy't kinne fungearje as útgongen kinne brûkt wurde as PWM pins. Foar mear ynformaasje oer de ESP32 GPIO's, lês: ESP32 Pinout Reference: Hokker GPIO-pins moatte jo brûke?
Koade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
Iepenje de koade Project_3_ESP32_PWM.ino yn arduino IDEJo begjinne mei it definiearjen fan de pin wêrop de LED is hechte. Yn dit gefal is de LED ferbûn oan GPIO 4.
Dan sette jo de PWM-sinjaaleigenskippen yn. Jo definiearje in frekwinsje fan 5000 Hz, kieze kanaal 0 om it sinjaal te generearjen, en set in resolúsje fan 8 bits yn. Jo kinne oare eigenskippen kieze, oars as dizze, om ferskate PWM-sinjalen te generearjen.
Yn 'e opset (), moatte jo LED PWM konfigurearje mei de eigenskippen dy't jo earder definieare hawwe troch de funksje ledcSetup () te brûken dy't as arguminten akseptearret, de ledChannel, de frekwinsje en de resolúsje, as folget:
Folgjende moatte jo de GPIO kieze wêrfan jo it sinjaal krije. Foar dat brûke de ledcAttachPin () funksje dy't akseptearret as arguminten de GPIO wêr jo wolle krije it sinjaal, en it kanaal dat generearret it sinjaal. Yn dizze eksample, wy krije it sinjaal yn 'e ledPin GPIO, dat oerienkomt mei GPIO 4. It kanaal dat it sinjaal genereart is it ledChannel, dat oerienkomt mei kanaal 0.
Yn 'e lus sille jo de plichtsyklus fariearje tusken 0 en 255 om de LED-helderheid te ferheegjen.
En dan, tusken 255 en 0 om de helderheid te ferminderjen.
Foar in set de helderheid fan de LED, Jo moatte gewoan brûke de ledcWrite () funksje dy't akseptearret as arguminten it kanaal dat generearret it sinjaal, en de plicht syklus.
As wy brûke 8-bit resolúsje, sil de plicht syklus wurde regele mei in wearde út 0 oan 255. Tink derom dat yn de ledcWrite () funksje wy brûke it kanaal dat generearret it sinjaal, en net de GPIO.
Testje de eksample
Upload de koade nei jo ESP32. Soargje derfoar dat jo it juste board en COM-poarte hawwe selektearre. Sjoch op jo circuit. Jo moatte in dimmer LED hawwe dy't de helderheid fergruttet en ferminderet.
Projekt 4 ESP32 PIR Motion Sensor
Dit projekt lit sjen hoe't jo beweging detektearje kinne mei de ESP32 mei in PIR-bewegingssensor.
Hoe HC-SR501 Motion Sensor wurket
.It wurkprinsipe fan HC-SR501-sensor is basearre op 'e feroaring fan' e ynfrareade strieling op it bewegende objekt. Om te ûntdekken troch de HC-SR501-sensor, moat it objekt oan twa easken foldwaan:
- It objekt emittearret de ynfraread manier.
- It objekt beweecht of skoddet
Sa:
As in foarwerp de ynfrareade ray útstjit, mar NET beweecht (bgl. in persoan stiet stil sûnder te bewegen), wurdt it NET ûntdutsen troch de sensor.
As in foarwerp beweecht, mar de ynfrareade striel NET útstjit (bgl. robot of auto), wurdt it NET ûntdutsen troch de sensor.
Yntroduksje fan Timers
Yn dizze eksample wy sille ek yntrodusearje timers. Wy wolle dat de LED in foarbeskaaide oantal sekonden oan bliuwt neidat beweging is ûntdutsen. Yn stee fan in gebrûk in fertraging () -funksje dy't blokkearret jo koade en net tastean jo in dwaan wat oars foar in bepaald oantal sekonden, wy moatte brûke in timer.De delay() funksje
Jo moatte wêze bekend mei de fertraging () funksje sa't it wurdt in soad brûkt. Dizze funksje is frij ienfâldich om te brûken. It akseptearret in inkele int nûmer as argumint.
Dit nûmer stiet foar de tiid yn millisekonden dat it programma moat wachtsje oant it ferpleatst nei de folgjende rigel fan koade.As jo fertrage (1000) stopje jo programma op dy line foar 1 sekonde.
delay () is in blokkearjende funksje. Blokkearjende funksjes foarkomme dat in programma wat oars docht oant dy bepaalde taak foltôge is. As jo nedich hawwe meardere taken dy't foarkomme tagelyk, do kinst net brûke fertraging ().
Foar de measte projekten moatte jo foarkomme dat jo fertragingen brûke en ynstee timers brûke.
De funksje millis().
Mei help fan in funksje neamd millis () kinne jo weromjaan it oantal millisekonden dat is foarby sûnt it programma earst begûn.Wêrom is dy funksje nuttich? Want troch wat wiskunde te brûken, kinne jo maklik ferifiearje hoefolle tiid is ferrûn sûnder jo koade te blokkearjen.
Dielen nedich
Om dizze tutorial te folgjen hawwe jo de folgjende dielen nedich
- ESP32 DEVKIT V1 Board
- PIR-bewegingssensor (HC-SR501)
- Aktive zoemer
- Jumper triedden
- Breadboard
SkematyskNoat: It wurk voltage fan HC-SR501 is 5V. Brûk de Vin-pin om it te machtigjen.
Koade
Foardat jo trochgean mei dit tutorial moatte jo de ESP32-tafoeging hawwe ynstalleare yn jo Arduino IDE. Folgje ien fan 'e folgjende tutorials om de ESP32 op' e Arduino IDE te ynstallearjen, as jo dat net al hawwe.(As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
Iepenje de koade Project_4_ESP32_PIR_Motion_Sensor.ino yn arduino IDE.
Demonstraasje
Upload de koade nei jo ESP32 board. Soargje derfoar dat jo it rjocht board en COM-poarte selektearre hawwe. Upload koade referinsjestappen.
Iepenje de Serial Monitor mei in baudrate fan 115200.Ferpleats jo hân foar de PIR-sensor. De buzzer moat ynskeakelje, en it berjocht wurdt printe yn de Serial Monitor sizzende "Motion detected! Buzzer alarm".
Nei 4 sekonden moat de buzzer útsette.
Projekt 5 ESP32 Switch Web Tsjinner
Yn dit projekt meitsje jo in standalone web server mei in ESP32 dy't útgongen (twa LED's) kontrolearret mei de Arduino IDE-programmearring omjouwing. De web tsjinner is mobyl responsyf en kin tagonklik wurde mei elk apparaat dat as browser op it lokale netwurk. Wy sille jo sjen litte hoe't jo de web server en hoe't de koade stap foar stap wurket.
Projekt oerview
Foardat jo direkt nei it projekt gean, is it wichtich om te sketsen wat ús web server sil dwaan, sadat it makliker is om de stappen letter te folgjen.
- De web tsjinner jo bouwe kontrôles twa LED's ferbûn oan de ESP32 GPIO 26 en GPIO 27;
- Jo kinne tagong krije ta de ESP32 web tsjinner troch it ESP32 IP-adres yn te typen op in browser yn it lokale netwurk;
- Troch te klikken op de knoppen op jo web tsjinner kinne jo direkt feroarje de steat fan eltse LED.
Dielen nedich
Foar dizze tutorial hawwe jo de folgjende dielen nedich:
- ESP32 DEVKIT V1 Board
- 2x 5mm LED
- 2x 200 Ohm wjerstân
- Breadboard
- Jumper triedden
Skematysk
Begjin by it bouwen fan it circuit. Ferbine twa LED's mei de ESP32 lykas werjûn yn it folgjende skematyske diagram - ien LED ferbûn mei GPIO 26, en de oare oan GPIO 27.
Noat: Wy brûke it ESP32 DEVKIT DOIT-board mei 36 pinnen. Foardat jo it circuit gearstalle, soargje derfoar dat jo de pinout kontrolearje foar it boerd dat jo brûke.Koade
Hjir jouwe wy de koade dy't de ESP32 makket web tsjinner. Iepenje de koade Project_5_ESP32_Switch _Web_Server.ino yn arduino IDE, mar upload it noch net. Jo moatte wat feroaringen meitsje om it foar jo te wurkjen.
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
It ynstellen fan jo netwurkgegevens
Jo moatte de folgjende rigels wizigje mei jo netwurkgegevens: SSID en wachtwurd. De koade is goed kommentearre oer wêr't jo de wizigingen moatte meitsje.It opladen fan de koade
No, kinne jo uploade de koade en en de web tsjinner sil wurkje direkt.
Folgje de folgjende stappen om koade te uploaden nei de ESP32:
- Plug jo ESP32 board yn jo kompjûter;
- Selektearje yn 'e Arduino IDE jo boerd yn Tools> Board (yn ús gefal brûke wy it ESP32 DEVKIT DOIT boerd);
- Selektearje de COM-poarte yn Tools> Poarte.
- Druk op de knop Upload yn 'e Arduino IDE en wachtsje in pear sekonden wylst de koade kompilearret en uploadt nei jo boerd.
- Wachtsje op it berjocht "Done uploading".
It ESP IP-adres fine
Nei it opladen fan de koade, iepenje de Serial Monitor mei in baudrate fan 115200.Druk op de ESP32 EN knop (reset). De ESP32 ferbynt mei Wi-Fi, en jout it ESP IP-adres út op 'e Serial Monitor. Kopiearje dat IP-adres, om't jo it nedich hawwe om tagong te krijen ta de ESP32 web tsjinner.
Tagong ta de Web Tsjinner
Om tagong te krijen ta de web server, iepenje jo blêder, plak it ESP32 IP-adres, en jo sille de folgjende side sjen.
Noat: Jo browser en ESP32 moatte ferbûn wêze mei itselde LAN.As jo nei de Serial Monitor sjogge, kinne jo sjen wat der op 'e eftergrûn bart. De ESP ûntfangt in HTTP-fersyk fan in nije kliïnt (yn dit gefal, jo browser).
Jo kinne ek oare ynformaasje sjen oer it HTTP-fersyk.
Demonstraasje
No kinne jo testen as jo web tsjinner wurket goed. Klikje op de knoppen om de LED's te kontrolearjen.Tagelyk kinne jo de Serial Monitor besjen om te sjen wat der op 'e eftergrûn bart. Bygelyksample, as jo op de knop klikke om GPIO 26 yn te skeakeljen, ûntfangt ESP32 in fersyk op de /26/on URL.
As de ESP32 dat fersyk ûntfangt, skeakelt it de LED taheakke oan GPIO 26 ON en fernijt syn steat op 'e web side.
De knop foar GPIO 27 wurket op in fergelykbere manier. Testje dat it goed wurket.
Hoe't de koade wurket
Yn dizze seksje sil de koade in tichterby besjen om te sjen hoe't it wurket.
It earste ding dat jo moatte dwaan is de WiFi-bibleteek op te nimmen.Lykas earder neamd, moatte jo jo ssid en wachtwurd ynfoegje yn 'e folgjende rigels binnen de dûbele quotes.
Dan, jo set dyn web tsjinner nei poarte 80.
De folgjende rigel makket in fariabele oan om de koptekst fan it HTTP-fersyk op te slaan:
Dêrnei meitsje jo helpfariabelen om de hjoeddeistige steat fan jo útgongen op te slaan. As jo mear útgongen taheakje wolle en syn tastân bewarje wolle, moatte jo mear fariabelen oanmeitsje.
Jo moatte ek in GPIO tawize oan elk fan jo útgongen. Hjir brûke wy GPIO 26 en GPIO 27. Jo kinne alle oare geskikte GPIO's brûke.
opsette()
No, litte wy yn 'e opset (). Earst begjinne wy in seriële kommunikaasje mei in baudrate fan 115200 foar debuggen.Jo definiearje jo GPIO's ek as OUTPUT's en set se op LOW.
De folgjende rigels begjinne de Wi-Fi-ferbining mei WiFi.begin(ssid, wachtwurd), wachtsje op in suksesfolle ferbining en print it ESP IP-adres yn 'e Serial Monitor.
loop()
Yn de loop () wy programmearje wat der bart as in nije klant stelt in ferbining mei de web tsjinner.
De ESP32 harket altyd nei ynkommende kliïnten mei de folgjende line:As in fersyk wurdt ûntfongen fan in klant, bewarje wy de ynkommende gegevens. De while-lus dy't folget sil rinne sa lang as de klant ferbûn bliuwt. Wy riede net oan om it folgjende diel fan 'e koade te feroarjen, útsein as jo krekt witte wat jo dogge.
De folgjende seksje fan as en else-útspraken kontrolearret hokker knop is yndrukt yn jo web side, en kontrolearret de útgongen neffens. Lykas wy earder hawwe sjoen, meitsje wy in fersyk op ferskillende URLs ôfhinklik fan de knop yndrukt.
Bygelyksample, as jo op de GPIO 26 ON knop hawwe drukke, ûntfangt de ESP32 in fersyk op de /26/ON URL (wy kinne sjen dat dizze ynformaasje op 'e HTTP-koptekst op' e Serial Monitor). Dat, wy kinne kontrolearje as de koptekst de útdrukking GET /26/on befettet. As it befettet, feroarje wy de output26state fariabele nei ON, en de ESP32 set de LED oan.
Dit wurket op deselde manier foar de oare knoppen. Dus, as jo mear útgongen taheakje wolle, moatte jo dit diel fan 'e koade oanpasse om se op te nimmen.
HTML werjaan web side
De folgjende ding jo moatte dwaan, is it meitsjen fan de web side. De ESP32 sil in antwurd stjoere nei jo browser mei wat HTML-koade om de web side.
De web side wurdt stjoerd nei de klant mei help fan dizze útdrukking client.println (). Jo moatte ynfiere wat jo wolle stjoere nei de klant as argumint.
It earste dat wy moatte stjoere is altyd de folgjende rigel, dat oanjout dat wy HTML ferstjoere.Dan, de folgjende rigel makket de web side responsive yn eltse web browser.
En it folgjende wurdt brûkt om oanfragen op it favicon te foarkommen. - Jo hoege jo gjin soargen te meitsjen oer dizze line.
Styling de Web Side
Folgjende, wy hawwe wat CSS tekst te styl de knoppen en de web side uterlik.
Wy kieze it Helvetica-lettertype, definiearje de ynhâld dy't wurdt werjûn as in blok en ôfstimd yn it sintrum.Wy stylje ús knoppen mei de kleur #4CAF50, sûnder râne, tekst yn wite kleur, en mei dizze padding: 16px 40px. Wy sette de tekstdekoraasje ek op gjinien, definiearje de lettertypegrutte, de marzje, en de rinnerke nei in oanwizer.
Wy definiearje ek de styl foar in twadde knop, mei alle eigenskippen fan de knop dy't wy earder definieare, mar mei in oare kleur. Dit sil de styl wêze foar de útknop.
It ynstellen fan Web Page First Heading
Yn 'e folgjende rigel kinne jo de earste koptekst fan jo web side. Hjir hawwe wy "ESP32 Web Server", mar jo kinne dizze tekst feroarje nei wat jo wolle.It werjaan fan de knoppen en oerienkommende steat
Dan skriuwe jo in alinea om de GPIO 26 hjoeddeistige steat wer te jaan. As jo sjogge, brûke wy de fariabele output26State, sadat de steat daliks bywurket as dizze fariabele feroaret.Dan litte wy de knop oan of út sjen, ôfhinklik fan 'e hjoeddeistige tastân fan' e GPIO. As de hjoeddeistige steat fan 'e GPIO út is, litte wy de ON knop sjen, as net, litte wy de OFF knop sjen.
Wy brûke deselde proseduere foar GPIO 27.
It sluten fan de ferbining
Ta beslút, as it antwurd einiget, wy wiskje de koptekst fariabele, en stopje de ferbining mei de klant mei client.stop ().
Ynpakke
Yn dizze tutorial hawwe wy jo sjen litten hoe't jo in web tsjinner mei de ESP32. Wy hawwe jo in ienfâldige eks sjen littenample dat kontrolearret twa LEDs, mar it idee is te ferfangen dy LEDs mei in estafette, of in oare útfier jo wolle kontrolearje.
Projekt 6 RGB LED Web Tsjinner
Yn dit projekt sille wy jo sjen litte hoe't jo in RGB LED op ôfstân kinne kontrolearje mei in ESP32-boerd mei in web tsjinner mei in kleur picker.
Projekt oerview
Foardat jo begjinne, litte wy sjen hoe't dit projekt wurket:
- ESP 32 web tsjinner toant in kleur picker.
- As jo kieze in kleur, jo blêder makket in fersyk op in URL dat de parameters R, G en B fan de selektearre kleur befettet.
- Jo ESP32 ûntfangt it fersyk en splitst de wearde foar elke kleurparameter.
- Dan stjoert it in PWM-sinjaal mei de oerienkommende wearde nei de GPIO's dy't de RGB LED kontrolearje.
Hoe wurkje RGB LED's?
Yn in mienskiplike kathode RGB LED diele alle trije LEDs in negative ferbining (kathode). Alle opnommen yn 'e kit binne mienskiplik-cathode RGB.Hoe kinne jo ferskate kleuren meitsje?
Mei in RGB LED kinne jo fansels read, grien en blau ljocht produsearje, en troch de yntinsiteit fan elke LED te konfigurearjen, kinne jo ek oare kleuren produsearje.
Bygelyksample, om suver blau ljocht te produsearjen, soene jo de blauwe LED op 'e heechste yntensiteit ynstelle en de griene en reade LED's op' e leechste yntinsiteit. Foar in wyt ljocht soene jo alle trije LED's op de heechste yntensiteit ynstelle.
Mixing kleuren
Om oare kleuren te produsearjen, kinne jo de trije kleuren kombinearje yn ferskate yntensiteiten. Om de yntensiteit fan elke LED oan te passen kinne jo in PWM-sinjaal brûke.
Om't de LED's tige ticht by elkoar binne, sjogge ús eagen it resultaat fan 'e kombinaasje fan kleuren, ynstee fan de trije kleuren yndividueel.
Om in idee te hawwen oer hoe't jo de kleuren kinne kombinearje, besjoch de folgjende diagram.
Dit is de ienfâldichste kleurmixkaart, mar jout jo in idee hoe't it wurket en hoe't jo ferskate kleuren kinne produsearje.Dielen nedich
Foar dit projekt hawwe jo de folgjende dielen nedich:
- ESP32 DEVKIT V1 Board
- RGB LED
- 3x 220 ohm wjerstannen
- Jumper triedden
- Breadboard
SkematyskKoade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
- Ynstallearje ESP32 Add-on yn Arduino IDE
Nei it gearstallen fan it circuit, Iepenje de koade
Project_6_RGB_LED_Web_Server.ino yn arduino IDE.
Foardat jo de koade uploade, ferjit net jo netwurkbewizen yn te foegjen sadat de ESP kin ferbine mei jo lokale netwurk.Hoe't de koade wurket
De ESP32-skets brûkt de WiFi.h-bibleteek.De folgjende rigels definiearje stringfariabelen om de R-, G- en B-parameters fan it fersyk te hâlden.
De folgjende fjouwer fariabelen wurde brûkt om it HTTP-fersyk letter te dekodearjen.
Meitsje trije fariabelen foar de GPIO's dy't de strip R, G en B parameters sille kontrolearje. Yn dit gefal brûke wy GPIO 13, GPIO 12 en GPIO 14.
Dizze GPIO's moatte PWM-sinjalen útfiere, dus wy moatte earst de PWM-eigenskippen konfigurearje. Stel de PWM-sinjaalfrekwinsje yn op 5000 Hz. Assosiearje dan in PWM-kanaal foar elke kleur
En as lêste, set de resolúsje fan 'e PWM-kanalen op 8-bit
Yn de opset (), tawize de PWM eigenskippen oan de PWM kanalen
Befestigje de PWM-kanalen oan 'e oerienkommende GPIO's
De folgjende koade seksje toant de kleur picker yn jo web side en makket in fersyk basearre op de kleur dy't jo hawwe keazen.
As jo in kleur kieze, krije jo in fersyk mei it folgjende formaat.
Dat, wy moatte dizze tekenrige splitse om de parameters R, G en B te krijen. De parameters wurde bewarre yn redString, greenString, en blueString fariabelen en kinne wearden hawwe tusken 0 en 255.Om de strip te kontrolearjen mei de ESP32, brûk de ledcWrite() funksje om PWM-sinjalen te generearjen mei de wearden dy't dekodearre binne fan 'e HTTP fersyk.
Noat: Learje mear oer PWM mei ESP32: Project 3 ESP32 PWM (analoge útfier)
Om de strip te kontrolearjen mei de ESP8266, moatte wy gewoan brûke
de funksje analogWrite () foar it generearjen fan PWM-sinjalen mei de wearden dy't dekodearre binne fan it HTPP-fersyk.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Om't wy de wearden krije yn in tekenrige fariabele, moatte wy se konvertearje nei heule getallen mei de metoade toInt ().
Demonstraasje
Nei it ynfoegjen fan jo netwurk bewiisbrieven, selektearje it rjocht board en COM haven en upload de koade nei jo ESP32.Upload koade referinsje stappen.
Nei it uploaden, iepenje de Serial Monitor mei in baudrate fan 115200 en druk op de ESP-ynskeakelje / weromsette knop. Jo moatte it boerd IP-adres krije.Iepenje jo browser en foegje it ESP IP-adres yn. Brûk no de kleurkiezer om in kleur te kiezen foar de RGB LED.
Dan moatte jo op de knop "Kleur feroarje" drukke om de kleur effekt te nimmen.Om de RGB LED út te skeakeljen, selektearje de swarte kleur.
De sterkste kleuren (oan de boppekant fan de kleur picker), binne dejingen dy't sille produsearje bettere resultaten.
Projekt 7 ESP32 Relay Web Tsjinner
It brûken fan in estafette mei de ESP32 is in geweldige manier om AC húshâldlike apparaten op ôfstân te kontrolearjen. Dizze tutorial ferklearret hoe't jo in estafettemodule kinne kontrolearje mei de ESP32.
Wy sille sjen hoe't in estafettemodule wurket, hoe't jo it estafette ferbine mei de ESP32 en in bouwe in web tsjinner om in estafette op ôfstân te kontrolearjen.
Yntroduksje fan Relays
In estafette is in elektrysk oandreaune switch en lykas alle oare switch, it kin oan- of útskeakele wurde, lit de stroom trochgean of net. It kin wurde regele mei lege voltages, lykas de 3.3V levere troch de ESP32 GPIO's en lit ús hege volum kontrolearjetages lykas 12V, 24V of netspanningsvoltage (230V yn Jeropa en 120V yn 'e FS).Oan 'e linkerkant binne d'r twa sets fan trije sockets om hege volum te ferbinentages, en de pinnen oan 'e rjochterkant (low-voltage) ferbine mei de ESP32 GPIOs.
Mains Voltage FerbiningsDe estafette module werjûn yn de foarige foto hat twa Anschlüsse, elk mei trije sockets: mienskiplik (COM), Normaal sluten (NC), en Normaal Iepen (NO).
- COM: ferbine de stroom dy't jo wolle kontrolearje (netvoltagen).
- NC (Normaal sletten): de normaal sletten konfiguraasje wurdt brûkt as jo wolle dat it estafette standert sletten wurdt. De NC binne COM-pins binne ferbûn, wat betsjuttet dat de stroom streamt, útsein as jo in sinjaal fan 'e ESP32 nei de estafettemodule stjoere om it circuit te iepenjen en de hjoeddeistige stream te stopjen.
- NO (Normaal Iepen): de normaal iepen konfiguraasje wurket oarsom: der is gjin ferbining tusken de NO- en COM-pins, dus it circuit is brutsen, útsein as jo in sinjaal stjoere fan 'e ESP32 om it circuit te sluten.
Control PinsDe low-voltage kant hat in set fan fjouwer pins en in set fan trije pins. De earste set bestiet út VCC en GND foar in macht up de module, en input 1 (IN1) en input 2 (IN2) foar in kontrôle de ûnderste en boppeste relais, respektivelik.
As jo estafettemodule mar ien kanaal hat, hawwe jo mar ien IN-pin. As jo fjouwer kanalen hawwe, hawwe jo fjouwer IN-pins, ensfh.
It sinjaal dat jo stjoere nei de IN pins, bepaalt oft it estafette aktyf is of net. It estafette wurdt oanlutsen as de ynfier ûnder sawat 2V giet. Dit betsjut dat jo de folgjende senario's hawwe:
- Normaal sletten konfiguraasje (NC):
- HIGH sinjaal - stroom streamt
- LOW sinjaal - strom streamt net
- Normaal iepen konfiguraasje (NO):
- HIGH sinjaal - stroom streamt net
- LOW sinjaal - stroom yn streamend
Jo moatte in normaal sletten konfiguraasje brûke as de stroom it measte fan 'e tiden moat streame, en jo wolle it mar sa no en dan stopje.
Brûk in normaal iepen konfiguraasje as jo wolle dat de stroom sa no en dan streamt (bglample, oansette alamp ynsidinteel).
Power Supply SeleksjeDe twadde set fan pins bestiet út GND, VCC, en JD-VCC pins.
De JD-VCC-pin betsjinnet de elektromagneet fan it estafette. Merken dat de module hat in jumper cap ferbinen de VCC en JD-VCC pins; de hjir werjûn is giel, mar dy kin in oare kleur wêze.
Mei de jumperkap op binne de VCC- en JD-VCC-pins ferbûn. Dat betsjut dat de estafette-elektromagnet direkt oandreaun wurdt fan 'e ESP32-power pin, sadat de estafettemodule en de ESP32-sirkels net fysyk fan elkoar isolearre binne.
Sûnder de jumperkap moatte jo in ûnôfhinklike krêftboarne leverje om de elektromagneet fan 'e estafette te bemachtigjen fia de JD-VCC-pin. Dy konfiguraasje isolearret fysyk de relais fan de ESP32 mei de module syn ynboude optocoupler, dy't foarkomt skea oan de ESP32 yn gefal fan elektryske spikes.
SkematyskWarskôging: Gebrûk fan hege voltage macht foarrieden kinne feroarsaakje serieuze blessuere.
Dêrom wurde 5mm LEDs brûkt ynstee fan hege oanbod voltage bollen yn it eksperimint. As jo net bekend binne mei mains voltage freegje ien dy't jo helpe sil. Wylst it programmearjen fan de ESP of bedrading jo circuit soargje derfoar dat alles is loskeppele fan netspanning voltage.Ynstallearje de bibleteek foar ESP32
Om dit te bouwen web tsjinner, brûke wy de ESPAsyncWebServer bibleteek en AsyncTCP Library.
It ynstallearjen fan de ESPAsyncWebTsjinner bibleteek
Folgje de folgjende stappen te ynstallearjen de ESPAsyncWebTsjinner biblioteek:
- Klik hjir om de ESPAsync te downloadenWebTsjinner bibleteek. Jo moatte hawwe
in .zip map yn jo Downloads map - Unzip de .zip-map en jo moatte ESPAsync krijeWebServer-master map
- Omneame jo map fan ESPAsyncWebTsjinner-master nei ESPAsyncWebTsjinner
- Ferpleats de ESPAsyncWebServer map nei jo Arduino IDE ynstallaasje biblioteken map
As alternatyf kinne jo yn jo Arduino IDE gean nei Sketch> Ynklusyf
Bibleteek > .ZIP-bibleteek taheakje ... en selektearje de bibleteek dy't jo krekt ynladen hawwe.
De AsyncTCP-bibleteek foar ESP32 ynstallearje
De ESPAsyncWebTsjinner bibleteek fereasket de AsyncTCP bibleteek oan it wurk. Folgje
de folgjende stappen om dizze bibleteek te ynstallearjen:
- Klik hjir om de AsyncTCP-bibleteek te downloaden. Jo moatte in .zip-map hawwe yn jo Downloads-map
- Unzip de .zip-map en jo moatte AsyncTCP-master-map krije
1. Omneame jo map fan AsyncTCP-master nei AsyncTCP
3. Ferpleats de map AsyncTCP nei jo Arduino IDE ynstallaasje biblioteken map
4. As lêste, opnij iepenje jo Arduino IDE
As alternatyf kinne jo yn jo Arduino IDE gean nei Sketch> Ynklusyf
Bibleteek > .ZIP-bibleteek taheakje ... en selektearje de bibleteek dy't jo krekt ynladen hawwe.
Koade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
Nei it ynstallearjen fan de fereaske biblioteken, Iepenje de koade Project_7_ESP32_Relay_Web_Server.ino yn arduino IDE.
Foardat jo de koade uploade, ferjit net jo netwurkbewizen yn te foegjen sadat de ESP kin ferbine mei jo lokale netwurk.Demonstraasje
Nei it meitsjen fan de nedige feroarings, upload de koade nei jo ESP32.Upload koade referinsjestappen.
Iepenje de Serial Monitor mei in baudrate fan 115200 en druk op de ESP32 EN-knop om it IP-adres te krijen. Iepenje dan in browser yn jo lokale netwurk en typ it ESP32 IP-adres om tagong te krijen ta it web tsjinner.
Iepenje de Serial Monitor mei in baudrate fan 115200 en druk op de ESP32 EN-knop om it IP-adres te krijen. Iepenje dan in browser yn jo lokale netwurk en typ it ESP32 IP-adres om tagong te krijen ta it web tsjinner.Noat: Jo browser en ESP32 moatte ferbûn wêze mei itselde LAN.
Jo moatte wat as folgjend krije mei as twa knoppen as it oantal relais dat jo hawwe definieare yn jo koade.No kinne jo de knoppen brûke om jo relais te kontrolearjen mei jo smartphone.
Project_8_Output_State_Syngronisaasje_ Web_Tsjinner
Dit projekt lit sjen hoe't jo de ESP32- as ESP8266-útgongen kinne kontrolearje mei in web tsjinner en in fysike knop tagelyk. De útfier steat wurdt fernijd op de web side oft it wurdt feroare fia fysike knop of web tsjinner.
Projekt oerview
Litte wy efkes sjen hoe't it projekt wurket.De ESP32 of ESP8266 hosts in web tsjinner wêrmei jo te kontrolearjen de steat fan in útfier;
- De hjoeddeiske útfier steat wurdt werjûn op de web tsjinner;
- De ESP is ek ferbûn mei in fysike drukknop dy't deselde útfier kontrolearret;
- As jo feroarje de útfier steat mei help fan de fysike puhsbutton, syn hjoeddeistige steat wurdt ek fernijd op de web tsjinner.
Gearfetsjend lit dit projekt jo deselde útfier kontrolearje mei in web tsjinner en in druk knop tagelyk. Wannear't de útfier steat feroaret, de web tsjinner wurdt fernijd.
Dielen nedich
Hjir is in list mei de dielen dy't jo nedich binne om it circuit te bouwen:
- ESP32 DEVKIT V1 Board
- 5 mm LED
- 220 Ohm wjerstân
- Drukknop
- 10k Ohm wjerstân
- Breadboard
- Jumper triedden
SkematyskYnstallearje de bibleteek foar ESP32
Om dit te bouwen web tsjinner, brûke wy de ESPAsyncWebServerbibleteek en AsyncTCP-bibleteek.(As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
It ynstallearjen fan de ESPAsyncWebTsjinner bibleteek
Folgje de folgjende stappen om de ESPAsync te ynstallearjenWebTsjinner bibleteek:
- Klik hjir om de ESPAsync te downloadenWebTsjinner bibleteek. Jo moatte hawwe
in .zip map yn jo Downloads map - Unzip de .zip-map en jo moatte ESPAsync krijeWebServer-master map
- Omneame jo map fan ESPAsyncWebTsjinner-master nei ESPAsyncWebTsjinner
- Ferpleats de ESPAsyncWebServer map nei jo Arduino IDE ynstallaasje biblioteken map
As alternatyf kinne jo yn jo Arduino IDE gean nei Sketch> Ynklusyf
Bibleteek > .ZIP-bibleteek taheakje ... en selektearje de bibleteek dy't jo krekt ynladen hawwe.
De AsyncTCP-bibleteek foar ESP32 ynstallearje
De ESPAsyncWebTsjinnerbibleteek fereasket dat de AsyncTCP-bibleteek wurket. Folgje de folgjende stappen om dy bibleteek te ynstallearjen:
- Klik hjir om de AsyncTCP-bibleteek te downloaden. Jo moatte in .zip-map hawwe yn jo Downloads-map
- Unzip de .zip-map en jo moatte AsyncTCP-master-map krije
- Omneame jo map fan AsyncTCP-master nei AsyncTCP
- Ferpleats de AsyncTCP map nei jo Arduino IDE ynstallaasje biblioteken map
- As lêste, iepenje jo Arduino IDE opnij
As alternatyf kinne jo yn jo Arduino IDE gean nei Sketch> Ynklusyf
Bibleteek > .ZIP-bibleteek taheakje ... en selektearje de bibleteek dy't jo krekt ynladen hawwe.
Koade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
Nei it ynstallearjen fan de fereaske biblioteken, Iepenje de koade
Project_8_Output_State_Syngronisaasje_Web_Server.ino yn arduino IDE.
Foardat jo de koade uploade, ferjit net jo netwurkbewizen yn te foegjen sadat de ESP kin ferbine mei jo lokale netwurk.
Hoe't de koade wurket
Knop steat en útfier steat
De ledState fariabele hâldt de LED útfier steat. Foar standert, doe't de web tsjinner begjint, it is LOW.
De buttonState en lastButtonState wurde brûkt om te detektearjen oft de drukknop yndrukt is of net.Knop (web tsjinner)
Wy hawwe de HTML net opnommen om de knop te meitsjen op 'e index_html fariabele.
Dat komt om't wy wolle kinne feroarje it ôfhinklik fan de hjoeddeiske LED steat dat kin ek feroare wurde mei de drukknop.
Dat, wy hawwe in plakhâlder makke foar de knop %BUTTONPLACEHOLDER% dy't ferfongen wurdt troch HTML-tekst om de knop letter op 'e koade te meitsjen (dit wurdt dien yn' e prosessor()-funksje).prosessor()
De funksje prosessor () ferfangt alle plakhâlders op 'e HTML-tekst mei werklike wearden. Earst kontrolearret it oft de HTML-teksten wat befetsje
plakhâlders %BUTTONPLACEHOLDER%.Dan, rop theoutputState () funksje dy't jout de hjoeddeiske útfier steat. Wy bewarje it yn 'e outputStateValue fariabele.
Brûk dêrnei dizze wearde om de HTML-tekst te meitsjen om de knop mei de juste steat wer te jaan:
HTTP GET-fersyk om útfierstatus te feroarjen (JavaScript)
As jo op de knop drukke, wurdt thetoggleCheckbox () funksje neamd. Dizze funksje sil meitsje in fersyk op ferskillende URLs om de LED oan of út te setten.Om de LED yn te skeakeljen, docht it in fersyk op de /update?state=1 URL:
Oars makket it in fersyk op de /update?state=0 URL.
HTTP GET-fersyk om steat te aktualisearjen (JavaScript)
Om te hâlden de útfier steat fernijd op de web tsjinner, neame wy de folgjende funksje dy't in nij fersyk op 'e / state makket URL elke sekonde.Behannelje fersiken
Dan moatte wy omgean wat der bart as de ESP32 of ESP8266 oanfragen ûntfangt oer dy URLs.
As in fersyk wurdt ûntfongen op 'e root /URL, wy stjoere de HTML side likegoed as de prosessor.De folgjende rigels kontrolearje oft jo in fersyk krigen hawwe op de /update?state=1 of /update?state=0 URL en feroaret de ledState neffens.
As in fersyk wurdt ûntfongen op 'e / steat URL, stjoere wy de hjoeddeistige útfierstatus:
loop()
Yn 'e lus (), wy debounce de drukknop en skeakelje de LED oan of út ôfhinklik fan de wearde fan de ledState fariabele.Demonstraasje
Upload de koade nei jo ESP32 board.Upload koade referinsjestappen.
Dan, Iepenje de Serial Monitor op in baud rate fan 115200. Druk op de on-board EN/RST knop te krijen is IP adres.Iepenje in browser op jo lokale netwurk, en typ it ESP IP-adres. Jo moatte hawwe tagong ta de web tsjinner lykas werjûn hjirûnder.
Noat: Jo browser en ESP32 moatte ferbûn wêze mei itselde LAN.Jo kinne wikselje de knop op 'e web tsjinner om de LED yn te skeakeljen.
Jo kinne deselde LED ek kontrolearje mei de fysike drukknop. Syn steat sil altyd wurde bywurke automatysk op 'e web tsjinner.
Projekt 9 ESP32 DHT11 Web Tsjinner
Yn dit projekt sille jo leare hoe't jo in asynchrone ESP32 bouwe web tsjinner mei de DHT11 dy't temperatuer en fochtigens werjaan mei Arduino IDE.
Betingsten
De web tsjinner wy bouwe updates de lêzingen automatysk sûnder de needsaak om te ferfarskjen de web side.
Mei dit projekt sille jo leare:
- Hoe te lêzen temperatuer en vochtigheid fan DHT sensors;
- Bouwe in asynchrone web tsjinner mei help fan de ESPAsyncWebTsjinner bibleteek;
- Update de sensor lêzingen automatysk sûnder de needsaak om te ferfarskjen de web side.
Asynchronous Web Tsjinner
Om te bouwen de web tsjinner wy sille brûke de ESPAsyncWebTsjinner bibleteek dat soarget foar in maklike manier te bouwen in asynchronous web tsjinner. It bouwen fan in asynchrone web tsjinner hat ferskate advantages lykas neamd yn 'e bibleteek GitHub side, lykas:
- "Behannelje mear as ien ferbining tagelyk";
- "As jo it antwurd stjoere, binne jo daliks ree om oare ferbiningen te behanneljen, wylst de tsjinner soarget foar it ferstjoeren fan it antwurd op 'e eftergrûn";
- "Ienfâldige sjabloanferwurkingsmotor om sjabloanen te behanneljen";
Dielen nedich
Om dizze tutorial te foltôgjen hawwe jo de folgjende dielen nedich:
- ESP32 ûntwikkeling board
- DHT11 Module
- Breadboard
- Jumper triedden
SkematyskYnstallaasje fan biblioteken
Jo moatte in pear biblioteken ynstallearje foar dit projekt:
- De DHT en de Adafruit Unified Sensor Driverbiblioteken om te lêzen fan 'e DHT-sensor.
- ESPAsyncWebTsjinner en Async TCP bibleteken te bouwen de asynchronous web tsjinner.
Folgje de folgjende ynstruksjes om dizze biblioteken te ynstallearjen:
Ynstallaasje fan de DHT Sensor Library
Foar in lêzen út de DHT sensor mei help fan Arduino IDE, Jo moatte ynstallearje de DHT sensor bibleteek. Folgje de folgjende stappen om de bibleteek te ynstallearjen.
- Klikje hjir om de DHT-sensorbibleteek te downloaden. Jo moatte in .zip-map hawwe yn jo Downloads-map
- Unzip de .zip-map en jo moatte DHT-sensor-library-master-map krije
- Omneame jo map fan DHT-sensor-library-master nei DHT_sensor
- Ferpleats de DHT_sensor map nei jo Arduino IDE ynstallaasje biblioteken map
- As lêste, iepenje jo Arduino IDE opnij
Ynstallaasje fan de Adafruit Unified Sensor Driver
Jo moatte ek ynstallearje de Adafruit Unified Sensor Driver bibleteek om te wurkjen mei de DHT-sensor. Folgje de folgjende stappen om de bibleteek te ynstallearjen.
- Klik hjir om de Adafruit Unified Sensor-bibleteek te downloaden. Jo moatte in .zip-map hawwe yn jo Downloads-map
- Unzip de .zip-map en jo moatte Adafruit_sensor-master-map krije
- Omneame jo map fan Adafruit_sensor-master nei Adafruit_sensor
- Ferpleats de Adafruit_sensor map nei jo Arduino IDE ynstallaasje biblioteken map
- As lêste, iepenje jo Arduino IDE opnij
It ynstallearjen fan de ESPAsyncWebTsjinner bibleteek
Folgje de folgjende stappen te ynstallearjen de ESPAsyncWebTsjinner biblioteek:
- Klik hjir om de ESPAsync te downloadenWebTsjinner bibleteek. Jo moatte hawwe
in .zip map yn jo Downloads map - Unzip de .zip-map en jo moatte
krije ESPAsyncWebServer-master map - Omneame jo map fan ESPAsyncWebTsjinner-master nei ESPAsyncWebTsjinner
- Ferpleats de ESPAsyncWebServer map nei jo Arduino IDE ynstallaasje biblioteken map
Ynstallearje fan de Async TCP-bibleteek foar ESP32
De ESPAsyncWebTsjinner bibleteek fereasket de AsyncTCP bibleteek oan it wurk. Folgje de folgjende stappen om dy bibleteek te ynstallearjen:
- Klik hjir om de AsyncTCP-bibleteek te downloaden. Jo moatte in .zip-map hawwe yn jo Downloads-map
- Unzip de .zip-map en jo moatte AsyncTCP-master-map krije
- Omneame jo map fan AsyncTCP-master nei AsyncTCP
- Ferpleats de AsyncTCP map nei jo Arduino IDE ynstallaasje biblioteken map
- As lêste, iepenje jo Arduino IDE opnij
Koade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDE
Nei it ynstallearjen fan de fereaske biblioteken, Iepenje de koade
Project_9_ESP32_DHT11_Web_Server.ino yn arduino IDE.
Foardat jo de koade uploade, ferjit net jo netwurkbewizen yn te foegjen sadat de ESP kin ferbine mei jo lokale netwurk.Hoe't de koade wurket
Yn 'e folgjende paragrafen sille wy útlizze hoe't de koade wurket. Bliuw lêze as jo mear wolle leare of springe nei de seksje Demonstraasje om it definitive resultaat te sjen.
It ymportearjen fan biblioteken
Earst ymportearje de fereaske biblioteken. De WiFi, ESPAsyncWebTsjinner en de ESPAsyncTCP binne nedich om de web tsjinner. De Adafruit_Sensor en de DHT-biblioteken binne nedich om te lêzen fan 'e DHT11- of DHT22-sensors.Definysje fan fariabelen
Definiearje de GPIO wêrmei de DHT-gegevenspin is ferbûn. Yn dit gefal is it ferbûn mei GPIO 4.Selektearje dan it type DHT-sensor dat jo brûke. Yn ús eksample, wy brûke de DHT22. As jo in oar type brûke, moatte jo jo sensor gewoan unkommentearje en alle oaren kommentaar jaan.
Instantiearje in DHT-objekt mei it type en pin dat wy earder hawwe definieare.Meitsje in AsyncWebTsjinnerobjekt op poarte 80.
Lês temperatuer- en humiliteitsfunksjes
Wy hawwe twa funksjes oanmakke: ien om de temperatuer te lêzen Wy hawwe twa funksjes makke: ien om de temperatuer te lêzen (readDHTTemperature()) en de oare foar it lêzen fan humidity (readDHTHumidity()).It krijen fan sensorlêzingen is sa ienfâldich as it brûken.
Wy hawwe ek in betingst dy't twa streepkes (–) werombringt yn gefal de sensor net slagget om de lêzingen te krijen.
De lêzingen wurde weromjûn as stringtype. Om in float te konvertearjen nei in tekenrige, brûk de String() funksje
Standert lêze wy de temperatuer yn Celsius graden. Om de temperatuer yn Fahrenheit-graden te krijen, kommintaar de temperatuer yn Celsius en decommentearje de temperatuer yn Fahrenheit, sadat jo it folgjende hawwe:
Upload de koade
No, upload de koade nei jo ESP32. Soargje derfoar dat jo it rjocht board en COM-poarte selektearre hawwe. Upload koade referinsjestappen.
Nei it opladen iepenje de Serial Monitor op in baudrate fan 115200. Druk op de ESP32-resetknop. It ESP32 IP-adres moat yn 'e serial printe wurde monitor.Demonstraasje
Iepenje in browser en typ it ESP32 IP-adres. Dyn web tsjinner moat de lêste sensorlêzingen werjaan.
Noat: Jo browser en ESP32 moatte ferbûn wêze mei itselde LAN.
Merken dat de temperatuer- en vochtigheid lezingen wurde bywurke automatysk sûnder de needsaak om te ferfarskjen de web side.
Project_10_ESP32_OLED_Display
Dit projekt lit sjen hoe't jo it 0.96 inch SSD1306 OLED-display brûke mei ESP32 mei Arduino IDE.
Yntroduksje fan 0.96 inch OLED Display
De OLED display dat wy sille brûke yn dizze tutorial is it SSD1306 model: in monocolor, 0.96 inch display mei 128 × 64 piksels lykas werjûn yn de folgjende figuer.It OLED-display hat gjin efterljochting nedich, wat resulteart yn in heul moai kontrast yn tsjustere omjouwings. Derneist konsumearje har piksels allinich enerzjy as se oan binne, sadat it OLED-display minder macht konsumearret yn ferliking mei oare byldskermen.
Om't it OLED-display I2C-kommunikaasjeprotokol brûkt, is bedrading heul ienfâldich. Jo kinne de folgjende tabel brûke as referinsje.
OLED pin | ESP32 |
Vin | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
SkematyskYnstallaasje fan SSD1306 OLED Library - ESP32
D'r binne ferskate biblioteken beskikber om it OLED-display te kontrolearjen mei de ESP32.
Yn dizze tutorial sille wy twa Adafruit-biblioteken brûke: Adafruit_SSD1306 bibleteek en Adafruit_GFX bibleteek.
Folgje de folgjende stappen om dy bibleteken te ynstallearjen.
- Iepenje jo Arduino IDE en gean nei Sketch> Biblioteek opnimme> Biblioteken beheare. De Library Manager moat iepenje.
- Typ "SSD1306" yn it sykfak en ynstallearje de SSD1306-bibleteek fan Adafruit.
- Nei it ynstallearjen fan de SSD1306-bibleteek fan Adafruit, typ "GFX" yn it sykfak en ynstallearje de bibleteek.
- Nei it ynstallearjen fan de biblioteken, start jo Arduino IDE opnij.
Koade
Nei it ynstallearjen fan de fereaske biblioteken, Iepenje de Project_10_ESP32_OLED_Display.ino yn arduino IDE. koade
Wy sille de ESP32 programmearje mei Arduino IDE, dus soargje derfoar dat jo de ESP32-add-on ynstalleare hawwe foardat jo trochgean: (As jo dizze stap al dien hawwe, kinne jo nei de folgjende stap oerslaan.)
Ynstallearje ESP32 Add-on yn Arduino IDEHoe't de koade wurket
It ymportearjen fan biblioteken
Earst moatte jo de nedige biblioteken ymportearje. De Wire-bibleteek om I2C te brûken en de Adafruit-biblioteken om te skriuwen nei it display: Adafruit_GFX en Adafruit_SSD1306.Inisjalisearje it OLED-display
Dan definiearje jo jo OLED-breedte en -hichte. Yn dizze eksample, wy brûke in 128 × 64 OLED display. As jo oare maten brûke, kinne jo dat feroarje yn 'e SCREEN_WIDTH, en SCREEN_HEIGHT fariabelen.Dan inisjalisearje in display foarwerp mei de breedte en hichte definiearre earder mei I2C kommunikaasje protokol (& Wire).
De (-1) parameter betsjut dat jo OLED-display gjin RESET-pin hat. As jo OLED-display in RESET-pin hat, moat it ferbûn wêze mei in GPIO. Yn dat gefal moatte jo it GPIO-nûmer as parameter trochjaan.
Yn de opset (), inisjalisearje de Serial Monitor op in baud raute fan 115200 foar debuggen doelen.Inisjalisearje it OLED-display mei de start() metoade as folget:
Dit snippet printet ek in berjocht op 'e Serial Monitor, yn gefal dat wy net kinne ferbine mei it display.
As jo in oare OLED-display brûke, moatte jo miskien it OLED-adres feroarje. Yn ús gefal is it adres 0x3C.
Nei it inisjalisearjen fan it display, foegje in fertraging fan twa sekonden ta, sadat de OLED genôch tiid hat om te inisjalisearjen foardat jo tekst skriuwe:
Dúdlik display, set lettertypegrutte, kleur en skriuw tekst
Nei it inisjalisearjen fan it display, wiskje de displaybuffer mei de metoade clearDisplay():
Foardat jo tekst skriuwe, moatte jo de tekstgrutte, kleur en wêr't de tekst yn 'e OLED sil wurde werjûn.
Stel de lettertypegrutte yn mei de metoade setTextSize():Stel de lettertypekleur yn mei de metoade setTextColor():
WHITE stelt wyt lettertype en swarte eftergrûn yn.
Definiearje de posysje wêr't de tekst begjint mei de metoade setCursor(x,y). Yn dit gefal sette wy de tekst yn om te begjinnen by de (0,0) koördinaten - yn 'e linker boppeste hoeke.As lêste, kinne jo stjoere de tekst nei it display mei help fan de println () metoade, as folget
Dan moatte jo de metoade werjaan () neame om de tekst werklik op it skerm te werjaan.
De Adafruit OLED-bibleteek biedt nuttige metoaden om tekst maklik te rôljen.
- startscrollright(0x00, 0x0F): rôlje tekst fan lofts nei rjochts
- startscrollleft(0x00, 0x0F): rôlje tekst fan rjochts nei lofts
- startscrolldiagleft(0x00, 0x07): rôlje tekst fan lofts ûnderste hoeke nei rjochts boppehoeke startscrolldiagleft(0x00, 0x07): rôlje tekst fan rjochts ûnderhoeke nei lofts boppehoeke
Upload de koade
No, upload de koade nei jo ESP32.Upload koade referinsjestappen.
Nei it opladen fan de koade sil de OLED rôljende tekst werjaan.
Dokuminten / Resources
![]() |
LAFVIN ESP32 Basic Starter Kit [pdf] Ynstruksjehânlieding ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |