ESP32 Basiese Voorgereg
Kit
Paklys
ESP32 Inleiding
Nuut by ESP32? Begin hier! Die ESP32 is 'n reeks laekoste- en laekrag-stelsel op 'n chip (SoC) mikrobeheerders wat deur Espressif ontwikkel is, wat Wi-Fi en Bluetooth-draadlose vermoëns en dubbelkernverwerker insluit. As jy vertroud is met die ESP8266, is die ESP32 sy opvolger, gelaai met baie nuwe funksies.ESP32 spesifikasies
As jy 'n bietjie meer tegnies en spesifiek wil raak, kan jy kyk na die volgende gedetailleerde spesifikasies van die ESP32 (bron: http://esp32.net/)—vir meer besonderhede, gaan die datablad na):
- Draadlose konneksie WiFi: 150.0 Mbps datasnelheid met HT40
- Bluetooth: BLE (Bluetooth Low Energy) en Bluetooth Classic
- Verwerker: Tensilica Xtensa Dual-Core 32-bis LX6 mikroverwerker, loop op 160 of 240 MHz
- Geheue:
- ROM: 448 KB (vir opstart en kernfunksies)
- SRAM: 520 KB (vir data en instruksies)
- RTC fas SRAM: 8 KB (vir databerging en hoof-SVE tydens RTC Boot vanaf die diepslaapmodus)
- RTC stadige SRAM: 8KB (vir medeverwerkertoegang tydens diepslaapmodus) eFuse: 1 Kbit (waarvan 256 bisse vir die stelsel gebruik word (MAC-adres en skyfiekonfigurasie) en die oorblywende 768 bisse is gereserveer vir klanttoepassings, insluitend Flash-enkripsie en chip-ID)
Ingeboude flits: flits intern verbind via 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 skyfies)
- 2 MiB (ESP32-D2WD-skyfie)
- 4 MiB (ESP32-PICO-D4 SiP-module)
Lae krag: verseker dat jy steeds ADC-omskakelings kan gebruik, bvample, tydens diep slaap.
Perifere toevoer/uitvoer:
- perifere koppelvlak met DMA wat kapasitiewe aanraking insluit
- ADC's (analoog-na-digitaal-omskakelaar)
- DAC's (Digitaal-na-analoog-omskakelaar)
- I²C (Inter-geïntegreerde stroombaan)
- UART (universele asynchrone ontvanger/sender)
- SPI (Serial Peripheral Interface)
- I²S (Geïntegreerde Interchip Sound)
- RMII (Verminderde media-onafhanklike koppelvlak)
- PWM (Pulse-Width Modulation)
Sekuriteit: hardewareversnellers vir AES en SSL/TLS
ESP32 Ontwikkelingsrade
ESP32 verwys na die kaal ESP32-skyfie. Die "ESP32"-term word egter ook gebruik om na ESP32-ontwikkelingsborde te verwys. Die gebruik van ESP32 kaal skyfies is nie maklik of prakties nie, veral wanneer jy leer, toets en prototipering. Meeste van die tyd sal jy 'n ESP32-ontwikkelingsbord wil gebruik.
Ons sal die ESP32 DEVKIT V1-bord as 'n verwysing gebruik. Die prent hieronder wys die ESP32 DEVKIT V1-bord, weergawe met 30 GPIO-penne.Spesifikasies – ESP32 DEVKIT V1
Die volgende tabel toon 'n opsomming van die ESP32 DEVKIT V1 DOIT-bordkenmerke en -spesifikasies:
Aantal kerne | 2 (dubbelkern) |
Wi-Fi | 2.4 GHz tot 150 Mbits/s |
Bluetooth | BLE (Bluetooth Low Energy) en erfenis Bluetooth |
Argitektuur | 32 stukkies |
Klokfrekwensie | Tot 240 MHz |
RAM | 512 KB |
Spelde | 30 (afhangende van die model) |
Randapparatuur | Kapasitiewe aanraking, ADC (analoog-na-digitaal-omsetter), DAC (digitaal na analoog-omsetter), 12C (inter-geïntegreerde stroombaan), UART (universele asynchrone ontvanger/sender), CAN 2.0 (Beheerarea Netwokr), SPI (Seriële Perifere Interface) , 12S (Geïntegreerde Inter-IC Klank), RMII (Verminderde media-onafhanklike koppelvlak), PWM (pulswydtemodulasie), en meer. |
Ingeboude knoppies | RESET en BOOT-knoppies |
Ingeboude LED's | ingeboude blou LED gekoppel aan GPIO2; ingeboude rooi LED wat wys die bord word aangedryf |
USB na UART brug |
CP2102 |
Dit kom met 'n microUSB-koppelvlak wat jy kan gebruik om die bord aan jou rekenaar te koppel om kode op te laai of krag toe te pas.
Dit gebruik die CP2102-skyfie (USB na UART) om met jou rekenaar te kommunikeer via 'n COM-poort deur 'n seriële koppelvlak te gebruik. Nog 'n gewilde skyfie is die CH340. Kyk wat die USB na UART-skyfie-omskakelaar op jou bord is, want jy sal die vereiste drywers moet installeer sodat jou rekenaar met die bord kan kommunikeer (meer inligting hieroor later in hierdie gids).
Hierdie bord kom ook met 'n RESET-knoppie (kan gemerk word EN) om die bord te herbegin en 'n BOOT-knoppie om die bord in flikkermodus te plaas (beskikbaar om kode te ontvang). Let daarop dat sommige borde dalk nie 'n BOOT-knoppie het nie.
Dit kom ook met 'n ingeboude blou LED wat intern aan GPIO 2 gekoppel is. Hierdie LED is nuttig vir ontfouting om 'n soort visuele fisiese uitset te gee. Daar is ook 'n rooi LED wat brand wanneer jy krag aan die bord verskaf.ESP32 Pinout
Die ESP32 randapparatuur sluit in:
- 18 Analoog-na-Digitaal-omskakelaar (ADC) kanale
- 3 SPI-koppelvlakke
- 3 UART-koppelvlakke
- 2 I2C-koppelvlakke
- 16 PWM-uitsetkanale
- 2 digitaal-na-analoog-omskakelaars (DAC)
- 2 I2S-koppelvlakke
- 10 Kapasitiewe waarneming GPIO's
Die ADC (analoog na digitaal omsetter) en DAC (digitaal na analoog omsetter) kenmerke word aan spesifieke statiese penne toegeken. U kan egter besluit watter penne UART, I2C, SPI, PWM, ens is - u hoef dit net in die kode toe te ken. Dit is moontlik as gevolg van die ESP32-skyfie se multipleksing-funksie.
Alhoewel jy die penne-eienskappe op die sagteware kan definieer, is daar by verstek penne toegewys soos in die volgende figuurDaarbenewens is daar penne met spesifieke kenmerke wat hulle geskik maak of nie vir 'n spesifieke projek nie. Die volgende tabel wys watter penne die beste is om as insette, uitsette te gebruik en watter jy moet versigtig wees.
Die penne wat in groen gemerk is, is goed om te gebruik. Die wat in geel uitgelig is, is goed om te gebruik, maar jy moet aandag gee omdat hulle 'n onverwagte gedrag kan hê, hoofsaaklik tydens die opstart. Die penne wat in rooi gemerk is, word nie aanbeveel om as insette of uitsette te gebruik nie.
GP IO | Invoer | Uitset | Notas |
0 | opgetrek | OK | voer PWM-sein uit by opstart, moet LAAG wees om flikkermodus te betree |
1 | TX pen | OK | ontfout uitvoer by opstart |
2 | OK | OK | gekoppel aan boord-LED, moet swaai of LAAG gelaat word om die flikkermodus te betree |
3 | OK | RX pen | HIGH by boot |
4 | OK | OK | |
5 | OK | OK | voer PWM-sein uit by opstart, riempen |
12 | OK | OK | stewel misluk as dit hoog getrek word, gordelpen |
13 | OK | OK | |
14 | OK | OK | voer PWM-sein uit tydens opstart |
15 | OK | OK | voer PWM-sein uit by opstart, riempen |
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 | slegs insette | |
35 | OK | slegs insette | |
36 | OK | slegs insette | |
39 | OK | slegs insette |
Lees verder vir 'n meer detail en in-diepte ontleding van die ESP32 GPIO's en sy funksies.
Voer slegs penne in
GPIO's 34 tot 39 is GPI's - slegs invoerpenne. Hierdie penne het nie interne optrek- of aftrekweerstande nie. Hulle kan nie as uitsette gebruik word nie, so gebruik hierdie penne slegs as insette:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI-flits geïntegreer op die ESP-WROOM-32
GPIO 6 tot GPIO 11 word in sommige ESP32-ontwikkelingsborde blootgestel. Hierdie penne is egter aan die geïntegreerde SPI-flits op die ESP-WROOM-32-skyfie gekoppel en word nie vir ander gebruike aanbeveel nie. Moet dus nie hierdie penne in jou projekte gebruik nie:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapasitiewe aanraking GPIO's
Die ESP32 het 10 interne kapasitiewe aanraaksensors. Hulle kan variasies aanvoel in enigiets wat 'n elektriese lading bevat, soos die menslike vel. Hulle kan dus variasies opspoor wat veroorsaak word wanneer die GPIO's met 'n vinger aangeraak word. Hierdie penne kan maklik in kapasitiewe kussings geïntegreer word en meganiese knoppies vervang. Die kapasitiewe raakpennetjies kan ook gebruik word om die ESP32 uit diep slaap wakker te maak. Daardie interne raaksensors is aan hierdie GPIO's gekoppel:
- 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)
Analoog na digitaal omskakelaar (ADC)
Die ESP32 het 18 x 12 bisse ADC-invoerkanale (terwyl die ESP8266 slegs 1x 10 bisse ADC het). Dit is die GPIO's wat as ADC en onderskeie kanale gebruik kan word:
- 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)
Let wel: ADC2-penne kan nie gebruik word wanneer Wi-Fi gebruik word nie. Dus, as jy Wi-Fi gebruik en jy sukkel om die waarde van 'n ADC2 GPIO te kry, kan jy dit oorweeg om eerder 'n ADC1 GPIO te gebruik. Dit behoort jou probleem op te los.
Die ADC-invoerkanale het 'n 12-bis-resolusie. Dit beteken dat jy analoog lesings kan kry wat wissel van 0 tot 4095, waarin 0 ooreenstem met 0V en 4095 tot 3.3V. Jy kan ook die resolusie van jou kanale op die kode en die ADC-reeks stel.
Die ESP32 ADC-penne het nie 'n lineêre gedrag nie. Jy sal waarskynlik nie tussen 0 en 0.1V, of tussen 3.2 en 3.3V kan onderskei nie. Jy moet dit in gedagte hou wanneer jy die ADC-penne gebruik. Jy sal 'n gedrag kry wat soortgelyk is aan die een wat in die volgende figuur getoon word.Digitaal na analoog-omskakelaar (DAC)
Daar is 2 x 8 bisse DAC-kanale op die ESP32 om digitale seine na analoog voltage sein uitsette. Dit is die DAC-kanale:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO's
Daar is RTC GPIO-ondersteuning op die ESP32. Die GPIO's wat na die RTC-laekrag-substelsel gelei word, kan gebruik word wanneer die ESP32 in diep slaap is. Hierdie RTC GPIO's kan gebruik word om die ESP32 wakker te maak uit diep slaap wanneer die Ultra Low
Krag (ULP) medeverwerker loop. Die volgende GPIO's kan as 'n eksterne wekbron gebruik word.
- 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
Die ESP32 LED PWM-beheerder het 16 onafhanklike kanale wat gekonfigureer kan word om PWM-seine met verskillende eienskappe te genereer. Alle penne wat as uitsette kan optree, kan as PWM-penne gebruik word (GPIO's 34 tot 39 kan nie PWM genereer nie).
Om 'n PWM sein te stel, moet jy hierdie parameters in die kode definieer:
- Sein se frekwensie;
- Pligsiklus;
- PWM-kanaal;
- GPIO waar jy die sein wil uitstuur.
I2C
Die ESP32 het twee I2C-kanale en enige pen kan as SDA of SCL gestel word. Wanneer die ESP32 met die Arduino IDE gebruik word, is die standaard I2C-penne:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
As jy ander penne wil gebruik wanneer jy die draadbiblioteek gebruik, hoef jy net te skakel:
Wire.begin(SDA, SCL);
SPI
By verstek is die pen-kartering vir SPI:
SPI | MOSI | miso | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
onderbrekings
Alle GPIO's kan as onderbrekings gekonfigureer word.
Bandspelde
Die ESP32-skyfie het die volgende riempenne:
- GPIO 0 (moet LAAG wees om selflaaimodus te betree)
- GPIO 2 (moet swewend of LAAG wees tydens selflaai)
- GPIO 4
- GPIO 5 (moet HOOG wees tydens selflaai)
- GPIO 12 (moet LAAG wees tydens selflaai)
- GPIO 15 (moet HOOG wees tydens selflaai)
Dit word gebruik om die ESP32 in selflaai- of flitsmodus te plaas. Op die meeste ontwikkelingsborde met ingeboude USB/Seriaal hoef jy nie bekommerd te wees oor die toestand van hierdie penne nie. Die bord plaas die penne in die regte toestand vir flikker- of selflaaimodus. Meer inligting oor die ESP32-selflaaimodusseleksie kan hier gevind word.
As jy egter randapparatuur aan daardie penne gekoppel het, kan jy dalk probleme ondervind om nuwe kode op te laai, die ESP32 met nuwe firmware te flits of die bord terug te stel. As jy 'n paar randapparatuur het wat aan die bandpenne gekoppel is en jy sukkel om kode op te laai of die ESP32 te flits, kan dit wees omdat daardie randapparatuur die ESP32 verhoed om die regte modus te betree. Lees die opstartmodusseleksie-dokumentasie om jou in die regte rigting te lei. Na terugstelling, flits of selflaai werk daardie penne soos verwag.
Speld HOOG by Boot vas
Sommige GPIO's verander hul toestand na HIGH of voer PWM-seine uit tydens selflaai of herstel.
Dit beteken dat as u uitsette aan hierdie GPIO's gekoppel het, u onverwagte resultate kan kry wanneer die ESP32 terugstel of selflaai.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 tot GPIO 11 (gekoppel aan die ESP32 geïntegreerde SPI-flitsgeheue – word nie aanbeveel om te gebruik nie).
- GPIO 14
- GPIO 15
Aktiveer (EN)
Aktiveer (EN) is die 3.3V-reguleerder se aktiveerpen. Dit is opgetrek, so koppel aan grond om die 3.3V-reguleerder uit te skakel. Dit beteken dat jy hierdie pen wat aan 'n drukknoppie gekoppel is, kan gebruik om jou ESP32 te herbegin, bvample.
GPIO stroom getrek
Die absolute maksimum stroom getrek per GPIO is 40mA volgens die "Aanbevole bedryfstoestande" afdeling in die ESP32 datablad.
ESP32 Ingeboude Hall Effect Sensor
Die ESP32 beskik ook oor 'n ingeboude saaleffeksensor wat veranderinge in die magnetiese veld in sy omgewing opspoor
ESP32 Arduino IDE
Daar is 'n byvoeging vir die Arduino IDE wat jou toelaat om die ESP32 te programmeer deur die Arduino IDE en sy programmeertaal te gebruik. In hierdie tutoriaal sal ons jou wys hoe om die ESP32-bord in Arduino IDE te installeer, of jy nou Windows, Mac OS X of Linux gebruik.
Voorvereistes: Arduino IDE geïnstalleer
Voordat u hierdie installasieprosedure begin, moet u Arduino IDE op u rekenaar laat installeer. Daar is twee weergawes van die Arduino IDE wat jy kan installeer: weergawe 1 en weergawe 2.
U kan Arduino IDE aflaai en installeer deur op die volgende skakel te klik: arduino.cc/en/Main/Software
Watter Arduino IDE-weergawe beveel ons aan? Op die oomblik is daar 'n paar plugins vir die ESP32 (soos die SPIFFS FileSystem Uploader Plugin) wat nog nie op Arduino 2 ondersteun word nie. Dus, as jy van plan is om die SPIFFS-inprop in die toekoms te gebruik, beveel ons aan om die ou weergawe 1.8.X te installeer. U hoef net op die Arduino-sagtewarebladsy af te blaai om dit te vind.
Installeer ESP32-byvoeging in Arduino IDE
Om die ESP32-bord in jou Arduino IDE te installeer, volg hierdie volgende instruksies:
- Gaan in jou Arduino IDE na File> Voorkeure
- Tik die volgende in die “Additional Board Manager URLs" veld:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Klik dan op die "OK" knoppie:Let wel: as jy reeds die ESP8266-borde het URL, jy kan die skei URLs met 'n komma soos volg:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Maak die Boards Manager oop. Gaan na Tools > Board > Boards Manager...Soek vir ESP32 and press install button for the “ESP32 by Espressif Systems“:
Dit is dit. Dit moet na 'n paar sekondes geïnstalleer word.
Laai toetskode op
Koppel die ESP32-bord aan jou rekenaar. Met jou Arduino IDE oop, volg hierdie stappe:
- Kies jou bord in Tools > Board-kieslys (in my geval is dit die ESP32 DEV Module)
- Kies die poort (as jy nie die COM-poort in jou Arduino IDE sien nie, moet jy die CP210x USB na UART Bridge VCP-bestuurders installeer):
- Maak die volgende bvample onder File > Bvamples > WiFi
(ESP32) > WiFiScan - 'n Nuwe skets maak oop in jou Arduino IDE:
- Druk die Laai op-knoppie in die Arduino IDE. Wag 'n paar sekondes terwyl die kode saamstel en na jou bord oplaai.
- As alles verloop het soos verwag is, behoort jy 'n "Klaar opgelaai" te sien. boodskap.
- Maak die Arduino IDE Serial Monitor oop teen 'n baudsnelheid van 115200:
- Druk die ESP32 aan boord Aktiveer-knoppie en jy behoort die netwerke wat naby jou ESP32 beskikbaar is te sien:
Probleemoplossing
As jy probeer om 'n nuwe skets na jou ESP32 op te laai en jy kry hierdie foutboodskap "A Fatal error occurred: Failed to connect to ESP32: Time out... Connecting...". Dit beteken dat jou ESP32 nie in flikker-/oplaaimodus is nie.
As u die regte bordnaam en COM gekies het, volg hierdie stappe:
Hou die "BOOT"-knoppie in jou ESP32-bord ingedruk
- Druk die "Laai op" knoppie in die Arduino IDE om jou skets op te laai:
- Nadat jy die "Verbind ...." boodskap in jou Arduino IDE, laat die vinger van die "BOOT"-knoppie los:
- Daarna behoort jy die boodskap "Klaar opgelaai" te sien
Dit is dit. Jou ESP32 behoort die nuwe skets aan die gang te hê. Druk die "AKTIVEER"-knoppie om die ESP32 te herbegin en die nuwe opgelaaide skets uit te voer.
Jy sal ook daardie knoppievolgorde moet herhaal elke keer as jy 'n nuwe skets wil oplaai.
Projek 1 ESP32 Insette Uitsette
In hierdie begingids sal jy leer hoe om digitale insette soos 'n knoppieskakelaar te lees en digitale uitsette soos 'n LED te beheer deur die ESP32 met Arduino IDE te gebruik.
Voorvereistes
Ons sal die ESP32 programmeer met Arduino IDE. Maak dus seker dat u die ESP32-borde-byvoeging geïnstalleer het voordat u verder gaan:
- Installeer ESP32-byvoeging in Arduino IDE
ESP32 Beheer digitale uitsette
Eerstens moet jy die GPIO wat jy wil beheer as 'n UITVOER stel. Gebruik die pinMode() funksie soos volg:
pinMode (GPIO, UITSET);
Om 'n digitale uitset te beheer, moet jy net die digitalWrite() funksie gebruik, wat as argumente aanvaar, die GPIO (int number) waarna jy verwys, en die toestand, óf HOOG of LAAG.
digitalWrite(GPIO, STATE);
Alle GPIO's kan as uitsette gebruik word behalwe GPIO's 6 tot 11 (gekoppel aan die geïntegreerde SPI-flits) en GPIO's 34, 35, 36 en 39 (slegs insette GPIO's);
Kom meer te wete oor die ESP32 GPIO's: ESP32 GPIO Verwysingsgids
ESP32 Lees digitale insette
Stel eers die GPIO wat jy wil lees as INPUT, met behulp van die pinMode() funksie soos volg:
pinMode(GPIO, INPUT);
Om 'n digitale invoer, soos 'n knoppie, te lees, gebruik jy die digitalRead() funksie, wat as argument aanvaar, die GPIO (int number) waarna jy verwys.
digitalRead(GPIO);
Alle ESP32 GPIO's kan as insette gebruik word, behalwe GPIO's 6 tot 11 (gekoppel aan die geïntegreerde SPI-flits).
Kom meer te wete oor die ESP32 GPIO's: ESP32 GPIO Verwysingsgids
Projek Bvample
Om jou te wys hoe om digitale insette en digitale uitsette te gebruik, bou ons 'n eenvoudige projek bvample met 'n drukknop en 'n LED. Ons sal die toestand van die drukknop lees en die LED dienooreenkomstig verlig soos in die volgende figuur geïllustreer.
Onderdele benodig
Hier is 'n lys van die dele wat jy nodig het om die stroombaan te bou:
- ESP32 DEVKIT V1
- 5 mm LED
- 220 Ohm weerstand
- Druk knoppie
- 10k Ohm weerstand
- Broodbord
- Jumper drade
Skematiese diagram
Voordat u verder gaan, moet u 'n stroombaan met 'n LED en 'n drukknop saamstel.
Ons sal die LED aan GPIO 5 koppel en die drukknoppie aan GPIO 4.Kode
Maak die kode Project_1_ESP32_Inputs_Outputs.ino in arduino IDE oopHoe die kode werk
In die volgende twee reëls skep jy veranderlikes om penne toe te ken:
Die knoppie is gekoppel aan GPIO 4 en die LED is gekoppel aan GPIO 5. Wanneer die Arduino IDE met die ESP32 gebruik word, stem 4 ooreen met GPIO 4 en 5 stem ooreen met GPIO 5.
Vervolgens skep u 'n veranderlike om die knoppiestatus te hou. By verstek is dit 0 (nie gedruk nie).
int buttonState = 0;
In die opstelling(), inisialiseer jy die knoppie as 'n INGANG, en die LED as 'n UITVOER.
Daarvoor gebruik jy die pinMode()-funksie wat die pen waarna jy verwys, aanvaar en die modus: INPUT of OUTPUT.
pinMode(buttonPin, INPUT);
pinMode(ledPin, UITSET);
In die lus() is waar jy die knoppie se toestand lees en die LED dienooreenkomstig stel.
In die volgende reël lees jy die knoppiestatus en stoor dit in die buttonState-veranderlike.
Soos ons voorheen gesien het, gebruik jy die digitalRead() funksie.
buttonState = digitalRead(buttonPin);
Die volgende if-stelling, kontroleer of die knoppiestatus HOOG is. As dit is, skakel dit die LED aan deur die digitalWrite()-funksie te gebruik wat die ledPin en die toestand HIGH as argument aanvaar.
if (knoppieState == HOOG)As die knoppiestatus nie HOOG is nie, sit jy die LED af. Stel net LOW as 'n tweede argument op in die digitalWrite() funksie.
Laai die kode op
Voordat jy op die oplaai-knoppie klik, gaan na Tools > Board, en kies die bord :DOIT ESP32 DEVKIT V1-bord.
Gaan na Tools > Poort en kies die COM-poort waaraan die ESP32 gekoppel is. Druk dan die oplaai-knoppie en wag vir die "Klaar opgelaai"-boodskap.Let wel: As jy baie kolletjies (koppel...__...__) op die ontfoutingsvenster sien en die boodskap "Kon nie aan ESP32 koppel: Uitgetel wag vir pakkiekopskrif nie", beteken dit dat jy die ESP32-boord-BOOT moet druk knoppie na die kolletjies
begin verskyn. Probleemoplossing
Demonstrasie
Nadat u die kode opgelaai het, toets u stroombaan. Jou LED moet brand wanneer jy die drukknoppie druk:En skakel af wanneer jy dit los:
Projek 2 ESP32 Analoog Insette
Hierdie projek wys hoe om analoog insette met die ESP32 te lees met behulp van Arduino IDE.
Analooglesing is nuttig om waardes van veranderlike weerstande soos potensiometers of analoogsensors te lees.
Analoog insette (ADC)
Om 'n analoogwaarde met die ESP32 te lees, beteken dat jy wisselende volume kan meettage vlakke tussen 0 V en 3.3 V.
Die voltage gemeet word dan toegeken aan 'n waarde tussen 0 en 4095, waarin 0 V ooreenstem met 0, en 3.3 V ooreenstem met 4095. Enige vol.tage tussen 0 V en 3.3 V sal die ooreenstemmende waarde tussenin kry.ADC is nie-lineêr
Ideaal gesproke sou u 'n lineêre gedrag verwag wanneer u die ESP32 ADC-penne gebruik.
Dit gebeur egter nie. Wat jy sal kry, is 'n gedrag soos getoon in die volgende grafiek:Hierdie gedrag beteken dat jou ESP32 nie 3.3 V van 3.2 V kan onderskei nie.
Jy sal dieselfde waarde kry vir beide voltages: 4095.
Dieselfde gebeur vir baie lae voltage waardes: vir 0 V en 0.1 V sal jy dieselfde waarde kry: 0. Jy moet dit in gedagte hou wanneer jy die ESP32 ADC penne gebruik.
analogRead() Funksie
Om 'n analoog invoer met die ESP32 te lees deur die Arduino IDE te gebruik, is so eenvoudig soos om die analogRead() funksie te gebruik. Dit aanvaar as argument, die GPIO wat jy wil lees:
analogRead(GPIO);
Slegs 15 is beskikbaar in die DEVKIT V1board (weergawe met 30 GPIO's).
Gryp jou ESP32-bordpennetjie en vind die ADC-pennetjies. Dit word met 'n rooi rand in die figuur hieronder uitgelig.Hierdie analoog insetpenne het 12-bis resolusie. Dit beteken dat wanneer jy 'n analoog invoer lees, die omvang daarvan kan wissel van 0 tot 4095.
Let wel: ADC2-penne kan nie gebruik word wanneer Wi-Fi gebruik word nie. Dus, as jy Wi-Fi gebruik en jy sukkel om die waarde van 'n ADC2 GPIO te kry, kan jy dit oorweeg om eerder 'n ADC1 GPIO te gebruik, dit behoort jou probleem op te los.
Om te sien hoe alles saamhang, maak ons 'n eenvoudige eksample om 'n analoogwaarde vanaf 'n potensiometer te lees.
Onderdele benodig
Vir hierdie example, jy benodig die volgende dele:
- ESP32 DEVKIT V1-bord
- Potensiometer
- Broodbord
- Jumper drade
Skematiese
Bedraad 'n potensiometer aan jou ESP32. Die potensiometer middelste pen moet aan GPIO 4 gekoppel word. Jy kan die volgende skematiese diagram as verwysing gebruik.Kode
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
Installeer ESP32-byvoeging in Arduino IDE
Maak die kode Project_2_ESP32_Inputs_Outputs.ino in arduino IDE oopHierdie kode lees eenvoudig die waardes vanaf die potensiometer en druk daardie waardes in die Serial Monitor.
In die kode begin jy deur die GPIO te definieer waaraan die potensiometer gekoppel is. In hierdie example, GPIO 4.In die setup(), inisialiseer 'n seriële kommunikasie teen 'n baudsnelheid van 115200.
In die lus(), gebruik die analogRead() funksie om die analoog insette van die potPin te lees.
Laastens, druk die waardes wat vanaf die potensiometer in die reeksmonitor gelees is.
Laai die kode wat verskaf word op jou ESP32 op. Maak seker jy het die regte bord en COM-poort gekies in die Tools-kieslys.
Toets die Example
Nadat jy die kode opgelaai het en die ESP32-terugstelknoppie gedruk het, maak die Serial Monitor oop teen 'n baudtempo van 115200. Draai die potensiometer en sien hoe die waardes verander.Die maksimum waarde wat jy sal kry is 4095 en die minimum waarde is 0.
Afronding
In hierdie artikel het jy geleer hoe om analoog insette te lees met die ESP32 met die Arduino IDE. Opsommend:
- Die ESP32 DEVKIT V1 DOIT-bord (weergawe met 30 penne) het 15 ADC-penne wat jy kan gebruik om analoog insette te lees.
- Hierdie penne het 'n resolusie van 12 bisse, wat beteken dat jy waardes van 0 tot 4095 kan kry.
- Om 'n waarde in die Arduino IDE te lees, gebruik jy eenvoudig die analogRead() funksie.
- Die ESP32 ADC-penne het nie 'n lineêre gedrag nie. Jy sal waarskynlik nie tussen 0 en 0.1V, of tussen 3.2 en 3.3V kan onderskei nie. Jy moet dit in gedagte hou wanneer jy die ADC-penne gebruik.
Projek 3 ESP32 PWM (analoog afvoer)
In hierdie handleiding sal ons jou wys hoe om PWM-seine te genereer met die ESP32 met behulp van Arduino IDE. As eksample ons sal 'n eenvoudige stroombaan bou wat 'n LED verdof deur die LED PWM-beheerder van die ESP32 te gebruik.ESP32 LED PWM-beheerder
Die ESP32 het 'n LED PWM-beheerder met 16 onafhanklike kanale wat gekonfigureer kan word om PWM-seine met verskillende eienskappe te genereer.
Hier is die stappe wat u moet volg om 'n LED met PWM te verdof met die Arduino IDE:
- Eerstens moet u 'n PWM-kanaal kies. Daar is 16 kanale van 0 tot 15.
- Dan moet jy die PWM sein frekwensie stel. Vir 'n LED is 'n frekwensie van 5000 Hz goed om te gebruik.
- Jy moet ook die sein se dienssiklusresolusie instel: jy het resolusies van 1 tot 16 bisse. Ons sal 8-bis-resolusie gebruik, wat beteken dat jy die LED-helderheid kan beheer deur 'n waarde van 0 tot 255 te gebruik.
- Vervolgens moet jy spesifiseer na watter GPIO of GPIO's die sein sal verskyn. Daarvoor sal jy die volgende funksie gebruik:
ledcAttachPin(GPIO, kanaal)
Hierdie funksie aanvaar twee argumente. Die eerste is die GPIO wat die sein sal uitvoer, en die tweede is die kanaal wat die sein sal genereer. - Ten slotte, om die LED-helderheid met PWM te beheer, gebruik jy die volgende funksie:
ledcWrite(kanaal, dienssiklus)
Hierdie funksie aanvaar as argumente die kanaal wat die PWM-sein genereer, en die dienssiklus.
Onderdele benodig
Om hierdie tutoriaal te volg, benodig jy hierdie dele:
- ESP32 DEVKIT V1-bord
- 5mm LED
- 220 Ohm weerstand
- Broodbord
- Jumper drade
Skematiese
Bedraad 'n LED aan jou ESP32 soos in die volgende skematiese diagram. Die LED moet aan GPIO gekoppel wees 4.Let wel: jy kan enige pen gebruik wat jy wil, solank dit as 'n uitset kan dien. Alle penne wat as uitsette kan optree, kan as PWM-penne gebruik word. Vir meer inligting oor die ESP32 GPIO's, lees: ESP32 Pinout Reference: Watter GPIO penne moet jy gebruik?
Kode
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
Installeer ESP32-byvoeging in Arduino IDE
Maak die kode Project_3_ESP32_PWM.ino in arduino IDE oopJy begin deur die pen te definieer waaraan die LED geheg is. In hierdie geval is die LED aan GPIO 4 gekoppel.
Dan stel jy die PWM sein eienskappe in. Jy definieer 'n frekwensie van 5000 Hz, kies kanaal 0 om die sein te genereer, en stel 'n resolusie van 8 bisse. Jy kan ander eienskappe kies, anders as hierdie, om verskillende PWM-seine te genereer.
In die setup(), moet jy LED PWM konfigureer met die eienskappe wat jy vroeër gedefinieer het deur die ledcSetup() funksie te gebruik wat as argumente, die ledChannel, die frekwensie en die resolusie aanvaar, soos volg:
Vervolgens moet jy die GPIO kies waaruit jy die sein sal kry. Gebruik daarvoor die ledcAttachPin()-funksie wat die GPIO waar jy die sein wil kry, en die kanaal wat die sein genereer as argumente aanvaar. In hierdie example, ons sal die sein in die ledPin GPIO kry, wat ooreenstem met GPIO 4. Die kanaal wat die sein genereer is die ledChannel, wat ooreenstem met kanaal 0.
In die lus sal jy die dienssiklus tussen 0 en 255 verander om die LED-helderheid te verhoog.
En dan, tussen 255 en 0 om die helderheid te verminder.
Om die helderheid van die LED te stel, moet jy net die ledcWrite()-funksie gebruik wat die kanaal wat die sein genereer, en die dienssiklus as argumente aanvaar.
Aangesien ons 8-bis resolusie gebruik, sal die dienssiklus beheer word deur 'n waarde van 0 tot 255 te gebruik. Let daarop dat ons in die ledcWrite() funksie die kanaal gebruik wat die sein genereer, en nie die GPIO nie.
Toets die Example
Laai die kode op na jou ESP32. Maak seker dat jy die regte bord en COM-poort gekies het. Kyk na jou kring. Jy moet 'n dowwer LED hê wat die helderheid verhoog en verlaag.
Projek 4 ESP32 PIR-bewegingsensor
Hierdie projek wys hoe om beweging met die ESP32 op te spoor deur 'n PIR-bewegingsensor te gebruik. Die gonser sal 'n alarm maak wanneer beweging bespeur word, en die alarm stop wanneer geen beweging bespeur word vir 'n voorafbepaalde tyd (soos 4 sekondes)
Hoe HC-SR501 bewegingsensor werk
.Die werkingsbeginsel van HC-SR501-sensor is gebaseer op die verandering van die infrarooi straling op die bewegende voorwerp. Om deur die HC-SR501-sensor opgespoor te word, moet die voorwerp aan twee vereistes voldoen:
- Die voorwerp straal die infrarooi manier uit.
- Die voorwerp beweeg of skud
Dus:
As 'n voorwerp die infrarooi straal uitstraal, maar NIE beweeg nie (bv. 'n persoon staan stil sonder om te beweeg), word dit NIE deur die sensor bespeur nie.
As 'n voorwerp beweeg maar NIE die infrarooi straal uitstraal nie (bv. robot of voertuig), word dit NIE deur die sensor bespeur nie.
Stel timers bekend
In hierdie example ons sal ook timers bekendstel. Ons wil hê die LED moet aan bly vir 'n voorafbepaalde aantal sekondes nadat beweging bespeur is. In plaas daarvan om 'n delay() funksie te gebruik wat jou kode blokkeer en jou nie toelaat om iets anders te doen vir 'n bepaalde aantal sekondes nie, moet ons 'n timer gebruik.Die delay() funksie
U moet vertroud wees met die delay()-funksie aangesien dit wyd gebruik word. Hierdie funksie is redelik eenvoudig om te gebruik. Dit aanvaar 'n enkele int-getal as 'n argument.
Hierdie getal verteenwoordig die tyd in millisekondes wat die program moet wag totdat dit na die volgende reël kode beweeg.Wanneer jy vertraging (1000) doen, stop jou program op daardie lyn vir 1 sekonde.
delay() is 'n blokkeerfunksie. Blokkeerfunksies verhoed dat 'n program enigiets anders doen totdat daardie spesifieke taak voltooi is. As jy nodig het om verskeie take tegelykertyd uit te voer, kan jy nie delay() gebruik nie.
Vir die meeste projekte moet jy die gebruik van vertragings vermy en eerder timers gebruik.
Die millis() funksie
Deur 'n funksie genaamd millis() te gebruik, kan jy die aantal millisekondes terugstuur wat verby is sedert die program die eerste keer begin het.Hoekom is daardie funksie nuttig? Want deur 'n bietjie wiskunde te gebruik, kan jy maklik verifieer hoeveel tyd verby is sonder om jou kode te blokkeer.
Onderdele benodig
Om hierdie tutoriaal te volg het jy die volgende dele nodig
- ESP32 DEVKIT V1-bord
- PIR-bewegingsensor (HC-SR501)
- Aktiewe gonser
- Jumper drade
- Broodbord
SkematieseLet wel: Die werkende voltage van HC-SR501 is 5V. Gebruik die Vin-pen om dit aan te dryf.
Kode
Voordat u met hierdie tutoriaal voortgaan, moet u die ESP32-byvoeging in u Arduino IDE geïnstalleer hê. Volg een van die volgende tutoriale om die ESP32 op die Arduino IDE te installeer, as jy dit nog nie gedoen het nie.(As jy reeds hierdie stap gedoen het, kan jy oorslaan na die volgende stap.)
Installeer ESP32-byvoeging in Arduino IDE
Maak die kode Project_4_ESP32_PIR_Motion_Sensor.ino in arduino IDE oop.
Demonstrasie
Laai die kode op jou ESP32-bord op. Maak seker jy het die regte bord en COM-poort gekies. Laai kodeverwysingstappe op.
Maak die Serial Monitor oop teen 'n baudsnelheid van 115200.Beweeg jou hand voor die PIR-sensor. Die gonser behoort aan te skakel, en die boodskap word in die reeksmonitor gedruk en sê "Beweging bespeur! Zoemeralarm".
Na 4 sekondes behoort die gonser af te skakel.
Projek 5 ESP32 Switch Web Bediener
In hierdie projek sal jy 'n selfstandige web bediener met 'n ESP32 wat uitsette (twee LED's) beheer deur die Arduino IDE-programmeringsomgewing te gebruik. Die web bediener reageer op mobiele toestelle en kan verkry word met enige toestel wat as 'n blaaier op die plaaslike netwerk is. Ons sal jou wys hoe om die web bediener en hoe die kode stap-vir-stap werk.
Projek verbyview
Voordat jy reguit na die projek gaan, is dit belangrik om te skets wat ons web bediener sal doen, sodat dit makliker is om die stappe later te volg.
- Die web bediener wat jy sal bou kontroles twee LED's gekoppel aan die ESP32 GPIO 26 en GPIO 27;
- Jy het toegang tot die ESP32 web bediener deur die ESP32 IP-adres op 'n blaaier in die plaaslike netwerk in te tik;
- Deur op die knoppies op jou web bediener kan jy die toestand van elke LED onmiddellik verander.
Onderdele benodig
Vir hierdie tutoriaal het jy die volgende dele nodig:
- ESP32 DEVKIT V1-bord
- 2x 5mm LED
- 2x 200 Ohm weerstand
- Broodbord
- Jumper drade
Skematiese
Begin deur die stroombaan te bou. Koppel twee LED's aan die ESP32 soos in die volgende skematiese diagram getoon – een LED gekoppel aan GPIO 26, en die ander aan GPIO 27.
Let wel: Ons gebruik die ESP32 DEVKIT DOIT-bord met 36 penne. Voordat jy die stroombaan saamstel, maak seker dat jy die uitsteeksel nagaan vir die bord wat jy gebruik.Kode
Hier verskaf ons die kode wat die ESP32 skep web bediener. Maak die kode Project_5_ESP32_Switch _ oopWeb_Server.ino in arduino IDE, maar moet dit nog nie oplaai nie. Jy moet 'n paar veranderinge maak om dit vir jou te laat werk.
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
Installeer ESP32-byvoeging in Arduino IDE
Stel jou netwerkbewyse op
Jy moet die volgende reëls met jou netwerkbewyse wysig: SSID en wagwoord. Die kode word goed gelewer oor waar jy die veranderinge moet maak.Laai die kode op
Nou kan jy die kode oplaai en en die web bediener sal dadelik werk.
Volg die volgende stappe om kode na die ESP32 op te laai:
- Prop jou ESP32 bord in jou rekenaar;
- In die Arduino IDE kies jou bord in Tools > Board (in ons geval gebruik ons die ESP32 DEVKIT DOIT bord);
- Kies die COM-poort in Tools > Port.
- Druk die Laai op-knoppie in die Arduino IDE en wag 'n paar sekondes terwyl die kode saamstel en na jou bord oplaai.
- Wag vir die "Klaar opgelaai"-boodskap.
Vind die ESP IP-adres
Nadat u die kode opgelaai het, maak die Serial Monitor oop teen 'n baudsnelheid van 115200.Druk die ESP32 EN-knoppie (terugstel). Die ESP32 koppel aan Wi-Fi en voer die ESP IP-adres op die Serial Monitor uit. Kopieer daardie IP-adres, want jy het dit nodig om toegang tot die ESP32 te kry web bediener.
Toegang tot die Web Bediener
Om toegang tot die web bediener, maak jou blaaier oop, plak die ESP32 IP-adres, en jy sal die volgende bladsy sien.
Let wel: Jou blaaier en ESP32 moet aan dieselfde LAN gekoppel wees.As jy na die Serial Monitor kyk, kan jy sien wat op die agtergrond gebeur. Die ESP ontvang 'n HTTP-versoek van 'n nuwe kliënt (in hierdie geval, jou blaaier).
U kan ook ander inligting oor die HTTP-versoek sien.
Demonstrasie
Nou kan jy toets of jou web bediener werk behoorlik. Klik op die knoppies om die LED's te beheer.Terselfdertyd kan jy na die Serial Monitor kyk om te sien wat in die agtergrond aangaan. Byvoorbeeldample, wanneer jy die knoppie klik om GPIO 26 AAN te skakel, ontvang ESP32 'n versoek op die /26/on URL.
Wanneer die ESP32 daardie versoek ontvang, skakel dit die LED wat aan GPIO 26 is AAN en dateer sy toestand op die web bladsy.
Die knoppie vir GPIO 27 werk op 'n soortgelyke manier. Toets dat dit reg werk.
Hoe die kode werk
In hierdie afdeling sal 'n nader kyk na die kode om te sien hoe dit werk.
Die eerste ding wat jy moet doen is om die WiFi-biblioteek in te sluit.Soos voorheen genoem, moet jy jou ssid en wagwoord in die volgende reëls binne die dubbele aanhalingstekens invoeg.
Dan stel jy jou web bediener na poort 80.
Die volgende reël skep 'n veranderlike om die kop van die HTTP-versoek te stoor:
Vervolgens skep jy hulpveranderlikes om die huidige toestand van jou uitsette te stoor. As jy meer uitsette wil byvoeg en die toestand daarvan wil stoor, moet jy meer veranderlikes skep.
Jy moet ook 'n GPIO aan elkeen van jou uitsette toewys. Hier gebruik ons GPIO 26 en GPIO 27. Jy kan enige ander geskikte GPIO's gebruik.
opstel()
Kom ons gaan nou na die opstelling(). Eerstens begin ons 'n seriële kommunikasie teen 'n baudsnelheid van 115200 vir ontfoutingsdoeleindes.Jy definieer ook jou GPIO's as UITSETTE en stel dit op LAAG.
Die volgende reëls begin die Wi-Fi-verbinding met WiFi.begin(ssid, wagwoord), wag vir 'n suksesvolle verbinding en druk die ESP IP-adres in die Serial Monitor.
lus()
In die lus() programmeer ons wat gebeur wanneer 'n nuwe kliënt 'n verbinding met die web bediener.
Die ESP32 luister altyd vir inkomende kliënte met die volgende lyn:Wanneer 'n versoek van 'n kliënt ontvang word, sal ons die inkomende data stoor. Die while-lus wat volg sal loop solank die kliënt verbind bly. Ons beveel nie aan om die volgende deel van die kode te verander nie, tensy jy presies weet wat jy doen.
Die volgende afdeling van if and else states kontroleer watter knoppie in jou gedruk is web bladsy, en beheer die uitsette dienooreenkomstig. Soos ons voorheen gesien het, rig ons 'n versoek op verskillende URLs afhangende van die knoppie wat gedruk word.
Byvoorbeeldample, as jy die GPIO 26 ON-knoppie gedruk het, ontvang die ESP32 'n versoek op die /26/ON URL (Ons kan sien dat daardie inligting op die HTTP-kopskrif op die Serial Monitor). So, ons kan kyk of die kopskrif die uitdrukking GET /26/on bevat. As dit bevat, verander ons die output26state-veranderlike na AAN, en die ESP32 skakel die LED aan.
Dit werk soortgelyk vir die ander knoppies. Dus, as jy meer uitsette wil byvoeg, moet jy hierdie deel van die kode verander om dit in te sluit.
Vertoon die HTML web bladsy
Die volgende ding wat jy moet doen, is die skep van die web bladsy. Die ESP32 sal 'n antwoord na jou blaaier stuur met 'n HTML-kode om die web bladsy.
Die web bladsy word na die kliënt gestuur met behulp van hierdie uitdrukking client.println(). Jy moet invoer wat jy aan die kliënt wil stuur as 'n argument.
Die eerste ding wat ons moet stuur is altyd die volgende reël, wat aandui dat ons HTML stuur.Dan maak die volgende reël die web bladsy reageer in enige web blaaier.
En die volgende word gebruik om versoeke op die favicon te voorkom. – Jy hoef nie bekommerd te wees oor hierdie lyn nie.
Stileer die Web Bladsy
Vervolgens het ons 'n paar CSS-teks om die knoppies en die web bladsy voorkoms.
Ons kies die Helvetica-lettertipe, definieer die inhoud wat as 'n blok vertoon moet word en in die middel belyn.Ons styl ons knoppies met die #4CAF50 kleur, sonder rand, teks in wit kleur, en met hierdie vulling: 16px 40px. Ons stel ook die teksversiering op geen, definieer die lettergrootte, die kantlyn en die wyser na 'n wyser.
Ons definieer ook die styl vir 'n tweede knoppie, met al die eienskappe van die knoppie wat ons vroeër gedefinieer het, maar met 'n ander kleur. Dit sal die styl vir die af-knoppie wees.
Stel die Web Bladsy Eerste Opskrif
In die volgende reël kan jy die eerste opskrif van jou stel web bladsy. Hier het ons "ESP32 Web Bediener", maar jy kan hierdie teks verander na wat jy wil.Vertoon die knoppies en ooreenstemmende toestand
Dan skryf jy 'n paragraaf om die GPIO 26 huidige toestand te vertoon. Soos u kan sien, gebruik ons die output26State-veranderlike, sodat die toestand onmiddellik opdateer wanneer hierdie veranderlike verander.Dan vertoon ons die aan- of af-knoppie, afhangende van die huidige toestand van die GPIO. As die huidige toestand van die GPIO af is, wys ons die AAN-knoppie, indien nie, vertoon ons die AF-knoppie.
Ons gebruik dieselfde prosedure vir GPIO 27.
Sluit die verbinding
Uiteindelik, wanneer die antwoord eindig, maak ons die kopveranderlike skoon, en stop die verbinding met die kliënt met client.stop().
Afronding
In hierdie tutoriaal het ons jou gewys hoe om 'n web bediener met die ESP32. Ons het jou 'n eenvoudige eks gewysample wat twee LED's beheer, maar die idee is om daardie LED's te vervang met 'n aflos, of enige ander uitset wat jy wil beheer.
Projek 6 RGB LED Web Bediener
In hierdie projek sal ons jou wys hoe om 'n RGB-LED met 'n ESP32-bord op afstand te beheer deur 'n web bediener met 'n kleurkieser.
Projek verbyview
Voordat ons begin, kom ons kyk hoe hierdie projek werk:
- Die ESP32 web bediener vertoon 'n kleurkieser.
- Wanneer jy 'n kleur kies, maak jou blaaier 'n versoek op 'n URL wat die R-, G- en B-parameters van die geselekteerde kleur bevat.
- Jou ESP32 ontvang die versoek en verdeel die waarde vir elke kleurparameter.
- Dan stuur dit 'n PWM-sein met die ooreenstemmende waarde na die GPIO's wat die RGB-LED beheer.
Hoe werk RGB LED's?
In 'n gemeenskaplike katode RGB LED, deel al drie LED's 'n negatiewe verbinding (katode). Almal wat in die kit ingesluit is, is gewone katode RGB.Hoe om verskillende kleure te skep?
Met 'n RGB LED kan jy natuurlik rooi, groen en blou lig produseer, en deur die intensiteit van elke LED te konfigureer, kan jy ook ander kleure produseer.
Byvoorbeeldample, om suiwer blou lig te produseer, stel jy die blou LED op die hoogste intensiteit en die groen en rooi LED's op die laagste intensiteit. Vir 'n wit lig, stel jy al drie LED's op die hoogste intensiteit.
Meng kleure
Om ander kleure te produseer, kan jy die drie kleure in verskillende intensiteite kombineer. Om die intensiteit van elke LED aan te pas, kan jy 'n PWM-sein gebruik.
Omdat die LED's baie naby aan mekaar is, sien ons oë die resultaat van die kombinasie van kleure, eerder as die drie kleure individueel.
Om 'n idee te hê oor hoe om die kleure te kombineer, kyk na die volgende grafiek.
Dit is die eenvoudigste kleurmengkaart, maar gee jou 'n idee hoe dit werk en hoe om verskillende kleure te produseer.Onderdele benodig
Vir hierdie projek benodig jy die volgende dele:
- ESP32 DEVKIT V1-bord
- RGB LED
- 3x 220 ohm weerstande
- Jumper drade
- Broodbord
SkematieseKode
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
- Installeer ESP32-byvoeging in Arduino IDE
Nadat u die stroombaan saamgestel het, maak die kode oop
Projek_6_RGB_LED_Web_Server.ino in arduino IDE.
Voordat jy die kode oplaai, moenie vergeet om jou netwerkbewyse in te voeg sodat die ESP aan jou plaaslike netwerk kan koppel nie.Hoe die kode werk
Die ESP32-skets gebruik die WiFi.h-biblioteek.Die volgende reëls definieer stringveranderlikes om die R-, G- en B-parameters van die versoek te hou.
Die volgende vier veranderlikes word gebruik om die HTTP-versoek later te dekodeer.
Skep drie veranderlikes vir die GPIO's wat die strook R, G en B parameters sal beheer. In hierdie geval gebruik ons GPIO 13, GPIO 12 en GPIO 14.
Hierdie GPIO's moet PWM-seine uitvoer, so ons moet eers die PWM-eienskappe konfigureer. Stel die PWM-seinfrekwensie op 5000 Hz. Assosieer dan 'n PWM-kanaal vir elke kleur
En laastens, stel die resolusie van die PWM-kanale op 8-bis
In die opstelling(), ken die PWM-eienskappe aan die PWM-kanale toe
Heg die PWM-kanale aan die ooreenstemmende GPIO's
Die volgende kode-afdeling vertoon die kleurkieser in jou web bladsy en maak 'n versoek gebaseer op die kleur wat jy gekies het.
Wanneer jy 'n kleur kies, ontvang jy 'n versoek met die volgende formaat.
Dus, ons moet hierdie string verdeel om die R-, G- en B-parameters te kry. Die parameters word gestoor in redString, greenString en blueString veranderlikes en kan waardes tussen 0 en 255 hê.Om die strook met die ESP32 te beheer, gebruik die ledcWrite() funksie om PWM seine te genereer met die waardes gedekodeer vanaf die HTTP versoek.
Let wel: kom meer te wete oor PWM met ESP32: Project 3 ESP32 PWM (analoog afvoer)
Om die strook met die ESP8266 te beheer, hoef ons net te gebruik
die analogWrite()-funksie om PWM-seine te genereer met die waardes wat van die HTPP-versoek gedekodeer is.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Omdat ons die waardes in 'n stringveranderlike kry, moet ons dit omskakel na heelgetalle deur die toInt()-metode te gebruik.
Demonstrasie
Nadat u u netwerkbewyse ingevoeg het, kies die regte bord en COM-poort en laai die kode op na u ESP32. Laai kodeverwysingstappe op.
Nadat u dit opgelaai het, maak die reeksmonitor oop teen 'n baudsnelheid van 115200 en druk die ESP Aktiveer/Herstel-knoppie. Jy moet die raad se IP-adres kry.Maak jou blaaier oop en voeg die ESP IP-adres in. Gebruik nou die kleurkieser om 'n kleur vir die RGB-LED te kies.
Dan moet jy die "Verander kleur"-knoppie druk om die kleur in werking te tree.Om die RGB-LED af te skakel, kies die swart kleur.
Die sterkste kleure (aan die bokant van die kleurkieser), is dié wat beter resultate sal lewer.
Projek 7 ESP32 Relay Web Bediener
Die gebruik van 'n aflos met die ESP32 is 'n goeie manier om AC huishoudelike toestelle op afstand te beheer. Hierdie handleiding verduidelik hoe om 'n aflosmodule met die ESP32 te beheer.
Ons sal kyk hoe 'n aflosmodule werk, hoe om die aflos aan die ESP32 te koppel en 'n web bediener om 'n aflos op afstand te beheer.
Bekendstelling van Relays
'n Relais is 'n elektries-aangedrewe skakelaar en soos enige ander skakelaar, kan dit aan- of afgeskakel word, wat die stroom laat deurgaan of nie. Dit kan beheer word met lae voltages, soos die 3.3V wat deur die ESP32 GPIO's verskaf word en stel ons in staat om hoë volume te beheertages soos 12V, 24V of hoofstroomvoltage (230V in Europa en 120V in die VSA).Aan die linkerkant is daar twee stelle van drie voetstukke om hoë volume aan te sluittages, en die penne aan die regterkant (lae-voltage) koppel aan die ESP32 GPIO's.
Hoofnetwerk Voltage VerbindingsDie aflosmodule wat in die vorige foto getoon word, het twee verbindings, elk met drie voetstukke: algemeen (COM), normaalweg geslote (NC) en normaalweg oop (NEE).
- COM: verbind die stroom wat jy wil beheer (netvoltagen).
- NC (normaal gesluit): die normaal geslote konfigurasie word gebruik wanneer jy wil hê dat die aflos by verstek gesluit moet wees. Die NC is COM-penne is gekoppel, wat beteken dat die stroom vloei tensy jy 'n sein van die ESP32 na die aflosmodule stuur om die stroombaan oop te maak en die stroomvloei te stop.
- NEE (normaal oop): die normaalweg oop konfigurasie werk andersom: daar is geen verband tussen die NO- en COM-penne nie, so die stroombaan is gebreek tensy jy 'n sein vanaf die ESP32 stuur om die stroombaan toe te maak.
BeheerspeldeDie lae-voltagDie kant het 'n stel van vier penne en 'n stel van drie penne. Die eerste stel bestaan uit VCC en GND om die module aan te skakel, en inset 1 (IN1) en inset 2 (IN2) om onderskeidelik die onderste en boonste relais te beheer.
As jou aflosmodule net een kanaal het, sal jy net een IN-pen hê. As jy vier kanale het, sal jy vier IN-penne hê, ensovoorts.
Die sein wat jy na die IN-penne stuur, bepaal of die aflos aktief is of nie. Die aflos word geaktiveer wanneer die inset onder ongeveer 2V gaan. Dit beteken dat jy die volgende scenario's sal hê:
- Normaalweg geslote konfigurasie (NC):
- HOË sein – stroom vloei
- LAE sein – stroom vloei nie
- Normaalweg oop konfigurasie (NEE):
- HOË sein – stroom vloei nie
- LAE sein – stroom in vloei
Jy moet 'n normaalweg geslote konfigurasie gebruik wanneer die stroom meeste van die tye moet vloei, en jy wil dit net af en toe stop.
Gebruik 'n normaalweg oop konfigurasie wanneer jy wil hê dat die stroom af en toe moet vloei (bvample, skakel alamp af en toe).
Kragtoevoer KeuseDie tweede stel penne bestaan uit GND-, VCC- en JD-VCC-penne.
Die JD-VCC-pen dryf die elektromagneet van die aflos aan. Let daarop dat die module 'n springdop het wat die VCC- en JD-VCC-penne verbind; die een wat hier gewys word, is geel, maar joune kan 'n ander kleur wees.
Met die jumper cap op, is die VCC en JD-VCC penne verbind. Dit beteken dat die aflos-elektromagneet direk van die ESP32-kragpen aangedryf word, dus is die aflosmodule en die ESP32-stroombane nie fisies van mekaar geïsoleer nie.
Sonder die springdop moet jy 'n onafhanklike kragbron verskaf om die aflos se elektromagneet deur die JD-VCC-pen aan te skakel. Daardie konfigurasie isoleer die relais fisies van die ESP32 met die module se ingeboude optokoppelaar, wat skade aan die ESP32 in die geval van elektriese spykers voorkom.
SkematieseWaarskuwing: Gebruik van hoë voltage kragtoevoer kan ernstige beserings veroorsaak.
Daarom word 5mm LED's gebruik in plaas van hoë toevoer voltage gloeilampe in die eksperiment. As jy nie vertroud is met hoofstroom voltage vra iemand wat jou moet help. Terwyl jy die ESP programmeer of jou stroombaan bedraad, maak seker dat alles van die hoofstroom voltage.Installeer die biblioteek vir ESP32
Om dit te bou web bediener, gebruik ons die ESPAsyncWebBedienerbiblioteek en AsyncTCP-biblioteek.
Die installering van die ESPAsyncWebBediener biblioteek
Volg die volgende stappe om die ESPAsyncWebBediener biblioteek:
- Klik hier om die ESPAsync af te laaiWebBediener biblioteek. Jy moes hê
'n .zip-lêergids in jou Downloads-lêergids - Pak die .zip-lêergids uit en jy behoort ESPAsync te kryWebBediener-meester gids
- Hernoem jou gids van ESPAsyncWebBediener-meester na ESPAsyncWebBediener
- Beweeg die ESPAsyncWebBedienergids na jou Arduino IDE-installasiebiblioteke-lêergids
Alternatiewelik, in jou Arduino IDE, kan jy gaan na Skets> Sluit in
Biblioteek > Voeg .ZIP-biblioteek by... en kies die biblioteek wat jy sopas afgelaai het.
Die installering van die AsyncTCP-biblioteek vir ESP32
Die ESPAsyncWebBediener biblioteek vereis die AsyncTCP biblioteek te werk. Volg
die volgende stappe om daardie biblioteek te installeer:
- Klik hier om die AsyncTCP-biblioteek af te laai. Jy behoort 'n .zip-lêergids in jou Downloads-lêergids te hê
- Pak die .zip-lêergids uit en jy behoort AsyncTCP-meester-lêergids te kry
1. Hernoem jou gids van AsyncTCP-master na AsyncTCP
3. Skuif die AsyncTCP-lêergids na jou Arduino IDE-installasiebiblioteke-lêergids
4. Laastens, heropen jou Arduino IDE
Alternatiewelik, in jou Arduino IDE, kan jy gaan na Skets> Sluit in
Biblioteek > Voeg .ZIP-biblioteek by... en kies die biblioteek wat jy sopas afgelaai het.
Kode
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
Installeer ESP32-byvoeging in Arduino IDE
Nadat u die vereiste biblioteke geïnstalleer het, maak die kode Project_7_ESP32_Relay_ oopWeb_Server.ino in arduino IDE.
Voordat jy die kode oplaai, moenie vergeet om jou netwerkbewyse in te voeg sodat die ESP aan jou plaaslike netwerk kan koppel nie.Demonstrasie
Nadat u die nodige veranderinge aangebring het, laai die kode op na u ESP32. Laai kodeverwysingstappe op.
Maak die Serial Monitor oop teen 'n baudsnelheid van 115200 en druk die ESP32 EN-knoppie om sy IP-adres te kry. Maak dan 'n blaaier in jou plaaslike netwerk oop en tik die ESP32 IP-adres in om toegang tot die web bediener.
Maak die Serial Monitor oop teen 'n baudsnelheid van 115200 en druk die ESP32 EN-knoppie om sy IP-adres te kry. Maak dan 'n blaaier in jou plaaslike netwerk oop en tik die ESP32 IP-adres in om toegang tot die web bediener.Let wel: Jou blaaier en ESP32 moet aan dieselfde LAN gekoppel wees.
Jy behoort iets soos volg te kry met so twee knoppies as die aantal relais wat jy in jou kode gedefinieer het.Nou kan jy die knoppies gebruik om jou relais met jou slimfoon te beheer.
Projek_8_Uitvoertoestand_sinchronisasie_ Web_Bediener
Hierdie projek wys hoe om die ESP32- of ESP8266-uitsette te beheer met behulp van 'n web bediener en 'n fisiese knoppie gelyktydig. Die uitsettoestand word bygewerk op die web bladsy of dit verander word via fisiese knoppie of web bediener.
Projek verbyview
Kom ons kyk vinnig na hoe die projek werk.Die ESP32 of ESP8266 huisves 'n web bediener wat jou toelaat om die toestand van 'n uitset te beheer;
- Die huidige uitsettoestand word op die vertoon web bediener;
- Die ESP is ook gekoppel aan 'n fisiese drukknoppie wat dieselfde uitset beheer;
- As jy die uitsettoestand verander met behulp van die fisiese drukknoppie, word die huidige toestand daarvan ook bygewerk op die web bediener.
Ter opsomming, hierdie projek laat jou toe om dieselfde uitset te beheer deur gebruik te maak van a web bediener en 'n drukknoppie gelyktydig. Wanneer die uitsettoestand verander, sal die web bediener is opgedateer.
Onderdele benodig
Hier is 'n lys van die dele wat jy nodig het om die stroombaan te bou:
- ESP32 DEVKIT V1-bord
- 5 mm LED
- 220 Ohm weerstand
- Druk knoppie
- 10k Ohm weerstand
- Broodbord
- Jumper drade
SkematieseInstalleer die biblioteek vir ESP32
Om dit te bou web bediener, gebruik ons die ESPAsyncWebBedienerbiblioteek en AsyncTCP-biblioteek.(As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorslaan.)
Die installering van die ESPAsyncWebBediener biblioteek
Volg die volgende stappe om die ESPAsync te installeerWebBedienerbiblioteek:
- Klik hier om die ESPAsync af te laaiWebBediener biblioteek. Jy moes hê
'n .zip-lêergids in jou Downloads-lêergids - Pak die .zip-lêergids uit en jy behoort ESPAsync te kryWebBediener-meester gids
- Hernoem jou gids van ESPAsyncWebBediener-meester na ESPAsyncWebBediener
- Beweeg die ESPAsyncWebBedienergids na jou Arduino IDE-installasiebiblioteke-lêergids
Alternatiewelik, in jou Arduino IDE, kan jy gaan na Skets> Sluit in
Biblioteek > Voeg .ZIP-biblioteek by... en kies die biblioteek wat jy sopas afgelaai het.
Die installering van die AsyncTCP-biblioteek vir ESP32
Die ESPAsyncWebBedienerbiblioteek vereis dat die AsyncTCP-biblioteek werk. Volg die volgende stappe om daardie biblioteek te installeer:
- Klik hier om die AsyncTCP-biblioteek af te laai. Jy behoort 'n .zip-lêergids in jou Downloads-lêergids te hê
- Pak die .zip-lêergids uit en jy behoort AsyncTCP-meester-lêergids te kry
- Hernoem jou gids van AsyncTCP-master na AsyncTCP
- Skuif die AsyncTCP-lêergids na jou Arduino IDE-installasiebiblioteke-lêergids
- Heropen uiteindelik jou Arduino IDE
Alternatiewelik, in jou Arduino IDE, kan jy gaan na Skets> Sluit in
Biblioteek > Voeg .ZIP-biblioteek by... en kies die biblioteek wat jy sopas afgelaai het.
Kode
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
Installeer ESP32-byvoeging in Arduino IDE
Nadat u die vereiste biblioteke geïnstalleer het, maak die kode oop
Projek_8_Uitvoertoestand_sinchronisasie_Web_Server.ino in arduino IDE.
Voordat jy die kode oplaai, moenie vergeet om jou netwerkbewyse in te voeg sodat die ESP aan jou plaaslike netwerk kan koppel nie.
Hoe die kode werk
Knoppiestaat en Uitsettoestand
Die ledState-veranderlike hou die LED-uitsettoestand. As verstek, wanneer die web bediener begin, dit is LAAG.
Die buttonState en lastButtonState word gebruik om vas te stel of die drukknoppie gedruk is of nie.Knoppie (web bediener)
Ons het nie die HTML ingesluit om die knoppie op die index_html veranderlike te skep nie.
Dit is omdat ons dit wil kan verander na gelang van die huidige LED-toestand wat ook met die drukknop verander kan word.
So, ons het 'n plekhouer vir die knoppie %BUTTONPLACEHOLDER% geskep wat met HTML-teks vervang sal word om die knoppie later op die kode te skep (dit word in die verwerker()-funksie gedoen).verwerker()
Die verwerker()-funksie vervang enige plekhouers op die HTML-teks met werklike waardes. Eerstens, dit kyk of die HTML-tekste enige bevat
plekhouers %BUTTONPLACEHOLDER%.Roep dan theoutputState()-funksie wat die huidige uitsettoestand terugstuur. Ons stoor dit in die outputStateValue-veranderlike.
Gebruik daarna daardie waarde om die HTML-teks te skep om die knoppie met die regte toestand te vertoon:
HTTP GET-versoek om uitsettoestand te verander (JavaScript)
Wanneer jy die knoppie druk, word die funksie thetoggleCheckbox() genoem. Hierdie funksie sal 'n versoek op verskillende URLs om die LED aan of af te skakel.Om die LED aan te skakel, doen dit 'n versoek op die /update?state=1 URL:
Andersins maak dit 'n versoek op die /update?state=0 URL.
HTTP KRY-versoek om staat op te dateer (JavaScript)
Om die uitsetstatus opgedateer te hou op die web bediener, roep ons die volgende funksie wat 'n nuwe versoek op die /staat maak URL elke sekonde.Hanteer versoeke
Dan moet ons hanteer wat gebeur wanneer die ESP32 of ESP8266 versoeke oor daardie URLs.
Wanneer 'n versoek op die wortel /URL, stuur ons die HTML-bladsy sowel as die verwerker.Die volgende reëls kyk of jy 'n versoek op die /update?state=1 of /update?state=0 ontvang het URL en verander die ledState dienooreenkomstig.
Wanneer 'n versoek op die /staat ontvang word URL, stuur ons die huidige uitsettoestand:
lus()
In die lus(), ontbloot ons die drukknoppie en skakel die LED aan of af, afhangende van die waarde van die ledState veranderlike.Demonstrasie
Laai die kode op na jou ESP32-bord. Laai kodeverwysingstappe op.
Maak dan die Serial Monitor oop teen 'n baudsnelheid van 115200. Druk die aan boord EN/RST-knoppie om die IP-adres te kry.Maak 'n blaaier op jou plaaslike netwerk oop en tik die ESP IP-adres in. Jy moet toegang hê tot die web bediener soos hieronder getoon.
Let wel: Jou blaaier en ESP32 moet aan dieselfde LAN gekoppel wees.Jy kan die knoppie op die web bediener om die LED aan te skakel.
Jy kan ook dieselfde LED met die fisiese drukknoppie beheer. Sy toestand sal altyd outomaties opgedateer word op die web bediener.
Projek 9 ESP32 DHT11 Web Bediener
In hierdie projek sal jy leer hoe om 'n asynchrone ESP32 te bou web bediener met die DHT11 wat temperatuur en humiditeit vertoon met behulp van Arduino IDE.
Voorvereistes
Die web bediener wat ons sal bou, werk die lesings outomaties op sonder dat dit nodig is om die te verfris web bladsy.
Met hierdie projek sal jy leer:
- Hoe om temperatuur en humiditeit van DHT-sensors te lees;
- Bou 'n asynchroniese web bediener wat die ESPAsyncWebBediener biblioteek;
- Dateer die sensorlesings outomaties op sonder dat dit nodig is om die te verfris web bladsy.
Asinchronies Web Bediener
Om die te bou web bediener sal ons die gebruik ESPAsyncWebBediener biblioteek wat 'n maklike manier bied om 'n asynchrone te bou web bediener. Die bou van 'n asynchroniese web bediener het verskeie advantages soos genoem in die biblioteek GitHub bladsy, soos:
- "Hanteer meer as een verbinding op dieselfde tyd";
- "Wanneer jy die antwoord stuur, is jy dadelik gereed om ander verbindings te hanteer terwyl die bediener sorg vir die stuur van die antwoord in die agtergrond";
- "Eenvoudige sjabloonverwerkingsenjin om sjablone te hanteer";
Onderdele benodig
Om hierdie tutoriaal te voltooi, benodig jy die volgende dele:
- ESP32-ontwikkelingsbord
- DHT11-module
- Broodbord
- Jumper drade
SkematieseInstalleer biblioteke
Jy moet 'n paar biblioteke vir hierdie projek installeer:
- Die DHT en die Adafruit Unified Sensor Bestuurderbiblioteke om vanaf die DHT-sensor te lees.
- ESPAsyncWebBediener en Async TCP biblioteke om die asynchrone te bou web bediener.
Volg die volgende instruksies om daardie biblioteke te installeer:
Die installering van die DHT-sensorbiblioteek
Om te lees vanaf die DHT-sensor met Arduino IDE, moet jy die DHT sensor biblioteek. Volg die volgende stappe om die biblioteek te installeer.
- Klik hier om die DHT Sensor-biblioteek af te laai. Jy behoort 'n .zip-lêergids in jou Downloads-lêergids te hê
- Pak die .zip-lêergids uit en jy behoort DHT-sensor-library-master-lêergids te kry
- Hernoem jou gids van DHT-sensor-biblioteek-meester na DHT_sensor
- Skuif die DHT_sensor-lêergids na jou Arduino IDE-installasiebiblioteke-lêergids
- Heropen uiteindelik jou Arduino IDE
Installeer die Adafruit Unified Sensor Driver
Jy moet ook die installeer Adafruit Unified Sensor Driver-biblioteek om met die DHT-sensor te werk. Volg die volgende stappe om die biblioteek te installeer.
- Klik hier om die Adafruit Unified Sensor-biblioteek af te laai. Jy behoort 'n .zip-lêergids in jou Downloads-lêergids te hê
- Pak die .zip-lêergids uit en jy behoort Adafruit_sensor-master-lêergids te kry
- Hernoem jou gids van Adafruit_sensor-master na Adafruit_sensor
- Skuif die Adafruit_sensor-lêergids na jou Arduino IDE-installasiebiblioteke-lêergids
- Heropen uiteindelik jou Arduino IDE
Die installering van die ESPAsyncWebBediener biblioteek
Volg die volgende stappe om die ESPAsyncWebBediener biblioteek:
- Klik hier om die ESPAsync af te laaiWebBediener biblioteek. Jy moes hê
'n .zip-lêergids in jou Downloads-lêergids - Pak die .zip-lêergids uit en jy moet
kry ESPAsyncWebBediener-meester gids - Hernoem jou gids van ESPAsyncWebBediener-meester na ESPAsyncWebBediener
- Beweeg die ESPAsyncWebBedienergids na jou Arduino IDE-installasiebiblioteke-lêergids
Die installering van die Async TCP-biblioteek vir ESP32
Die ESPAsyncWebBediener biblioteek vereis die AsyncTCP biblioteek te werk. Volg die volgende stappe om daardie biblioteek te installeer:
- Klik hier om die AsyncTCP-biblioteek af te laai. Jy behoort 'n .zip-lêergids in jou Downloads-lêergids te hê
- Pak die .zip-lêergids uit en jy behoort AsyncTCP-meester-lêergids te kry
- Hernoem jou gids van AsyncTCP-master na AsyncTCP
- Skuif die AsyncTCP-lêergids na jou Arduino IDE-installasiebiblioteke-lêergids
- Heropen uiteindelik jou Arduino IDE
Kode
Ons sal die ESP32 met Arduino IDE programmeer, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy na die volgende stap oorgaan.)
Installeer ESP32-byvoeging in Arduino IDE
Nadat u die vereiste biblioteke geïnstalleer het, maak die kode oop
Projek_9_ESP32_DHT11_Web_Server.ino in arduino IDE.
Voordat jy die kode oplaai, moenie vergeet om jou netwerkbewyse in te voeg sodat die ESP aan jou plaaslike netwerk kan koppel nie.Hoe die kode werk
In die volgende paragrawe sal ons verduidelik hoe die kode werk. Hou aan lees as jy meer wil leer of spring na die Demonstrasie-afdeling om die finale resultaat te sien.
Invoer van biblioteke
Voer eers die vereiste biblioteke in. Die WiFi, ESPAsyncWebBediener en die ESPAsyncTCP is nodig om die web bediener. Die Adafruit_Sensor- en die DHT-biblioteke is nodig om vanaf die DHT11- of DHT22-sensors te lees.Veranderlike definisie
Definieer die GPIO waaraan die DHT-datapen gekoppel is. In hierdie geval is dit aan GPIO 4 gekoppel.Kies dan die tipe DHT-sensor wat jy gebruik. In ons example, ons gebruik die DHT22. As jy 'n ander tipe gebruik, hoef jy net jou sensor te verwyder en al die ander kommentaar te lewer.
Instansieer 'n DHT-voorwerp met die tipe en pen wat ons vroeër gedefinieer het.Skep 'n AsyncWebBedienervoorwerp op poort 80.
Lees temperatuur- en humiditeitsfunksies
Ons het twee funksies geskep: een om die temperatuur te lees Ons het twee funksies geskep: een om die temperatuur te lees (readDHTTemperature()) en die ander om humiditeit te lees (readDHTHumidity()).Om sensorlesings te kry is so eenvoudig soos om te gebruik Om sensorlesings te kry is so eenvoudig soos om die readTemperature() en readHumidity()-metodes op die dht-voorwerp te gebruik.
Ons het ook 'n toestand wat twee strepies (–) terugstuur ingeval die sensor nie die lesings kry nie.
Die lesings word as stringtipe teruggestuur. Om 'n float na 'n string te omskep, gebruik die String() funksie
By verstek lees ons die temperatuur in Celsius-grade. Om die temperatuur in Fahrenheit-grade te kry, maak 'n opmerking oor die temperatuur in Celsius en verwyder die temperatuur in Fahrenheit, sodat jy die volgende het:
Laai die kode op
Laai nou die kode op na jou ESP32. Maak seker jy het die regte bord en COM-poort gekies. Laai kodeverwysingstappe op.
Nadat jy opgelaai het, maak die Serial Monitor oop teen 'n baudsnelheid van 115200. Druk die ESP32-terugstelknoppie. Die ESP32 IP-adres moet in die reeks gedruk word monitor.Demonstrasie
Maak 'n blaaier oop en tik die ESP32 IP-adres in. Jou web bediener moet die nuutste sensorlesings vertoon.
Let wel: Jou blaaier en ESP32 moet aan dieselfde LAN gekoppel wees.
Let daarop dat die temperatuur- en humiditeitlesings outomaties opgedateer word sonder dat dit nodig is om die te verfris web bladsy.
Projek_10_ESP32_OLED_Vertoon
Hierdie projek wys hoe om die 0.96 duim SSD1306 OLED-skerm met ESP32 te gebruik met behulp van Arduino IDE.
Bekendstelling van 0.96 duim OLED-skerm
Die OLED-skerm wat ons in hierdie tutoriaal sal gebruik, is die SSD1306-model: 'n monokleur, 0.96 duim-skerm met 128 × 64 pixels soos in die volgende figuur getoon.Die OLED-skerm benodig nie agtergrondbeligting nie, wat 'n baie mooi kontras in donker omgewings tot gevolg het. Boonop verbruik sy pixels net energie wanneer hulle aan is, so die OLED-skerm verbruik minder krag in vergelyking met ander skerms.
Omdat die OLED-skerm I2C-kommunikasieprotokol gebruik, is bedrading baie eenvoudig. Jy kan die volgende tabel as verwysing gebruik.
OLED-pen | ESP32 |
Vin | 3.3 V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
SkematieseInstalleer SSD1306 OLED-biblioteek – ESP32
Daar is verskeie biblioteke beskikbaar om die OLED-skerm met die ESP32 te beheer.
In hierdie handleiding sal ons twee Adafruit-biblioteke gebruik: Adafruit_SSD1306-biblioteek en Adafruit_GFX-biblioteek.
Volg die volgende stappe om daardie biblioteke te installeer.
- Maak jou Arduino IDE oop en gaan na Skets > Sluit biblioteek in > Bestuur biblioteke. Die Biblioteekbestuurder moet oopmaak.
- Tik "SSD1306" in die soekkassie en installeer die SSD1306-biblioteek van Adafruit.
- Nadat u die SSD1306-biblioteek vanaf Adafruit geïnstalleer het, tik "GFX" in die soekkassie en installeer die biblioteek.
- Nadat u die biblioteke geïnstalleer het, herbegin u Arduino IDE.
Kode
Nadat u die vereiste biblioteke geïnstalleer het, maak die Project_10_ESP32_OLED_Display.ino in arduino IDE oop. kode
Ons sal die ESP32 programmeer met Arduino IDE, dus maak seker dat jy die ESP32-byvoeging geïnstalleer het voordat jy voortgaan: (As jy reeds hierdie stap gedoen het, kan jy oorslaan na die volgende stap.)
Installeer ESP32-byvoeging in Arduino IDEHoe die kode werk
Invoer van biblioteke
Eerstens moet u die nodige biblioteke invoer. Die Wire-biblioteek om I2C te gebruik en die Adafruit-biblioteke om na die skerm te skryf: Adafruit_GFX en Adafruit_SSD1306.Inisialiseer die OLED-skerm
Dan definieer jy jou OLED breedte en hoogte. In hierdie example, ons gebruik 'n 128 × 64 OLED-skerm. As jy ander groottes gebruik, kan jy dit verander in die SCREEN_WIDTH en SCREEN_HEIGHT veranderlikes.Inisialiseer dan 'n vertoonvoorwerp met die breedte en hoogte wat vroeër met I2C-kommunikasieprotokol (&Wire) gedefinieer is.
Die (-1) parameter beteken dat jou OLED-skerm nie 'n RESET-pen het nie. As jou OLED-skerm wel 'n RESET-pen het, moet dit aan 'n GPIO gekoppel wees. In daardie geval moet jy die GPIO-nommer as 'n parameter deurgee.
In die setup(), inisialiseer die Serial Monitor teen 'n baud raute van 115200 vir ontfoutingsdoeleindes.Inisialiseer die OLED-skerm met die begin() metode soos volg:
Hierdie brokkie druk ook 'n boodskap op die Serial Monitor, ingeval ons nie aan die skerm kan koppel nie.
As jy 'n ander OLED-skerm gebruik, moet jy dalk die OLED-adres verander. In ons geval is die adres 0x3C.
Nadat die skerm geïnisialiseer is, voeg 'n vertraging van twee sekondes by, sodat die OLED genoeg tyd het om te inisialiseer voordat teks geskryf word:
Maak vertoning skoon, stel lettergrootte, kleur en skryf teks
Nadat die skerm geïnisialiseer is, maak die skermbuffer skoon met die clearDisplay() metode:
Voordat u teks skryf, moet u die teksgrootte, kleur en waar die teks in die OLED vertoon sal word, instel.
Stel die lettergrootte met behulp van die setTextSize() metode:Stel die lettertipe kleur met die setTextColor() metode:
WHITE stel wit lettertipe en swart agtergrond.
Definieer die posisie waar die teks begin deur die setCursor(x,y) metode te gebruik. In hierdie geval stel ons die teks om by die (0,0) koördinate te begin – in die boonste linkerhoek.Uiteindelik kan u die teks na die skerm stuur deur gebruik te maak van die println() metode, soos volg
Dan moet jy die display() metode oproep om die teks werklik op die skerm te vertoon.
Die Adafruit OLED-biblioteek bied nuttige metodes om teks maklik te blaai.
- startscrollright(0x00, 0x0F): blaai teks van links na regs
- startscrollleft(0x00, 0x0F): blaai teks van regs na links
- beginscrolldiagright(0x00, 0x07): blaai teks van linker onderste hoek na regter boonste hoek begin scrolldiagleft(0x00, 0x07): blaai teks van regter onderste hoek na linker boonste hoek
Laai die kode op
Laai nou die kode op na jou ESP32. Laai kodeverwysingstappe op.
Nadat die kode opgelaai is, sal die OLED rolteks vertoon.
Dokumente / Hulpbronne
![]() |
LAFVIN ESP32 Basic Starter Kit [pdf] Instruksiehandleiding ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |