ESP32 pagrindinis starteris
rinkinys
Pakavimo sąrašas
ESP32 Įvadas
Naujas ESP32? Pradėkite čia! ESP32 yra nebrangių ir mažai energijos naudojančių „System on a Chip“ (SoC) mikrovaldiklių, kuriuos sukūrė „Espressif“, serija, apimanti „Wi-Fi“ ir „Bluetooth“ belaidžio ryšio galimybes ir dviejų branduolių procesorių. Jei esate susipažinę su ESP8266, ESP32 yra jo įpėdinis, kuriame yra daug naujų funkcijų.ESP32 specifikacijos
Jei norite gauti šiek tiek techniškesnių ir konkretesnių, galite pažvelgti į šias išsamias ESP32 specifikacijas (šaltinis: http://esp32.net/) – jei reikia daugiau informacijos, patikrinkite duomenų lapą):
- Belaidis ryšys WiFi: 150.0 Mbps duomenų perdavimo sparta su HT40
- „Bluetooth“: BLE („Bluetooth Low Energy“) ir „Bluetooth Classic“.
- Procesorius: Tensilica Xtensa dviejų branduolių 32 bitų LX6 mikroprocesorius, veikiantis 160 arba 240 MHz
- Atmintis:
- ROM: 448 KB (pakrovimui ir pagrindinėms funkcijoms)
- SRAM: 520 KB (duomenims ir instrukcijoms)
- RTC fas SRAM: 8 KB (duomenims saugoti ir pagrindiniam procesoriui RTC įkrovos metu iš gilaus miego režimo)
- RTC lėta SRAM: 8 KB (prieigai prie bendro procesoriaus gilaus miego režimu) eFuse: 1 Kbit (iš kurių 256 bitai naudojami sistemai (MAC adresas ir lusto konfigūracija), o likę 768 bitai yra rezervuoti klientų programoms, įskaitant Flash šifravimą ir lusto ID)
Integruota blykstė: blykstė viduje prijungta per IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 ir SD_DATA_1 ESP32-D2WD ir ESP32-PICO-D4.
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD ir ESP32-S0WD lustai)
- 2 MiB (ESP32-D2WD lustas)
- 4 MiB (ESP32-PICO-D4 SiP modulis)
Maža galia: užtikrina, kad vis tiek galėsite naudoti ADC konversijas, pvzample, gilaus miego metu.
Periferinė įvestis / išvestis:
- periferinė sąsaja su DMA, kuri apima talpinį prisilietimą
- ADC (analoginis į skaitmeninį keitiklis)
- DAC (skaitmeninio į analoginį keitiklis)
- I²C (integruota grandinė)
- UART (universalus asinchroninis imtuvas / siųstuvas)
- SPI (nuoseklioji periferinė sąsaja)
- I²S (integruotas interchip garsas)
- RMII (sumažinta nuo medijos nepriklausoma sąsaja)
- PWM (impulso pločio moduliacija)
Saugumas: aparatinės įrangos greitintuvai, skirti AES ir SSL/TLS
ESP32 plėtros lentos
ESP32 reiškia pliką ESP32 lustą. Tačiau „ESP32“ terminas taip pat vartojamas ESP32 kūrimo plokštėms apibūdinti. ESP32 lustų naudojimas nėra lengvas ar praktiškas, ypač mokantis, testuojant ir kuriant prototipus. Dažniausiai norėsite naudoti ESP32 kūrimo plokštę.
Kaip nuorodą naudosime ESP32 DEVKIT V1 plokštę. Toliau pateiktame paveikslėlyje parodyta ESP32 DEVKIT V1 plokštė, versija su 30 GPIO kaiščių.Specifikacijos – ESP32 DEVKIT V1
Šioje lentelėje pateikiama ESP32 DEVKIT V1 DOIT plokštės funkcijų ir specifikacijų santrauka:
Šerdžių skaičius | 2 (dviejų branduolių) |
Wi-Fi | 2.4 GHz iki 150 Mbit/s |
Bluetooth | BLE („Bluetooth Low Energy“) ir senasis „Bluetooth“. |
Architektūra | 32 bitai |
Laikrodžio dažnis | Iki 240 MHz |
RAM | 512 KB |
Smeigtukai | 30 (priklauso nuo modelio) |
Periferiniai įrenginiai | Talpinis jutiklinis, ADC (analoginis į skaitmeninį keitiklis), DAC (skaitmeninis į analoginį keitiklis), 12C (integruota grandinė), UART (universalus asinchroninis imtuvas / siųstuvas), CAN 2.0 (valdiklio srities tinklas), SPI (nuoseklioji periferinė sąsaja), 12S (integruota sąsaja) Garsas), RMII (reduced Media Independent Interface), PWM (impulso pločio moduliacija) ir kt. |
Integruoti mygtukai | RESET ir BOOT mygtukai |
Integruoti šviesos diodai | įmontuotas mėlynas LED, prijungtas prie GPIO2; įmontuotas raudonas šviesos diodas, rodantis, kad plokštė maitinama |
USB į UART tiltas |
CP2102 |
Jame yra „microUSB“ sąsaja, kurią galite naudoti norėdami prijungti plokštę prie kompiuterio, kad įkeltumėte kodą arba įjungtumėte maitinimą.
Jis naudoja CP2102 lustą (USB į UART), kad bendrautų su kompiuteriu per COM prievadą, naudojant nuosekliąją sąsają. Kitas populiarus lustas yra CH340. Patikrinkite, koks yra USB į UART mikroschemų keitiklis jūsų plokštėje, nes turėsite įdiegti reikiamas tvarkykles, kad kompiuteris galėtų susisiekti su plokšte (daugiau informacijos apie tai rasite vėliau šiame vadove).
Šioje plokštėje taip pat yra mygtukas RESET (gali būti pažymėtas EN), kad plokštė būtų paleista iš naujo, ir BOOT mygtukas, skirtas įjungti mirksėjimo režimą (galima gauti kodą). Atminkite, kad kai kuriose plokštėse gali nebūti BOOT mygtuko.
Jame taip pat yra įmontuotas mėlynas šviesos diodas, kuris yra viduje prijungtas prie GPIO 2. Šis šviesos diodas yra naudingas derinant, kad būtų pateikta tam tikra vaizdinė fizinė išvestis. Taip pat yra raudonas šviesos diodas, kuris užsidega, kai maitinate plokštę.ESP32 Pinout
ESP32 periferiniai įrenginiai apima:
- 18 analoginio į skaitmeninį konverterio (ADC) kanalų
- 3 SPI sąsajos
- 3 UART sąsajos
- 2 I2C sąsajos
- 16 PWM išvesties kanalai
- 2 keitikliai iš skaitmeninio į analogą (DAC)
- 2 I2S sąsajos
- 10 talpinių jutiklių GPIO
ADC (analoginio į skaitmeninį keitiklį) ir DAC (skaitmeninį į analoginį keitiklį) funkcijos priskiriamos konkretiems statiniams kaiščiams. Tačiau galite nuspręsti, kurie kaiščiai yra UART, I2C, SPI, PWM ir tt – tereikia juos priskirti kode. Tai įmanoma dėl ESP32 lusto tankinimo funkcijos.
Nors programinėje įrangoje galite nustatyti kaiščių ypatybes, pagal numatytuosius nustatymus yra priskirti kaiščiai, kaip parodyta toliau pateiktame paveikslėlyjeBe to, yra kaiščių su specifinėmis savybėmis, dėl kurių jie tinka arba netinka konkrečiam projektui. Šioje lentelėje parodyta, kokius kaiščius geriausia naudoti kaip įvestis, išvestis ir kuriuos reikia būti atsargiems.
Žalia spalva pažymėtus kaiščius galima naudoti. Geltona spalva paryškintus galima naudoti, bet reikia atkreipti dėmesį, nes jie gali netikėtai elgtis, daugiausia paleidžiant. Raudonai pažymėtų kaiščių nerekomenduojama naudoti kaip įvesties ar išvesties.
GP IO | Įvestis | Išvestis | Pastabos |
0 | patraukė aukštyn | OK | išveda PWM signalą paleidžiant, turi būti LOW, kad būtų įjungtas mirksintis režimas |
1 | TX kaištis | OK | derinimo išvestis įkrovos metu |
2 | OK | OK | prijungtas prie borto šviesos diodo, turi būti paliktas plūduriuojantis arba LOW, kad įjungtų mirksėjimo režimą |
3 | OK | RX kaištis | AUKŠTAS |
4 | OK | OK | |
5 | OK | OK | išveda PWM signalą įkrovos metu, surišimo kaištis |
12 | OK | OK | bagažinė sugenda, jei ištraukiama aukštai, surišimo kaištis |
13 | OK | OK | |
14 | OK | OK | išveda PWM signalą įkrovos metu |
15 | OK | OK | išveda PWM signalą įkrovos metu, surišimo kaištis |
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 | tik įvestis | |
35 | OK | tik įvestis | |
36 | OK | tik įvestis | |
39 | OK | tik įvestis |
Skaitykite toliau, kad gautumėte išsamesnės ir nuodugnesnės ESP32 GPIO ir jų funkcijų analizės.
Įveskite tik kaiščius
GPIO nuo 34 iki 39 yra GPI – tik įvesties kaiščiai. Šie kaiščiai neturi vidinių ištraukiamųjų arba ištraukiamųjų rezistorių. Jie negali būti naudojami kaip išėjimai, todėl šiuos kaiščius naudokite tik kaip įvestis:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
ESP-WROOM-32 integruota SPI blykstė
GPIO 6–GPIO 11 yra kai kuriose ESP32 kūrimo plokštėse. Tačiau šie kaiščiai yra prijungti prie ESP-WROOM-32 lusto integruotos SPI blykstės ir nerekomenduojami kitiems tikslams. Taigi savo projektuose nenaudokite šių kaiščių:
- GPIO 6 (SCK / CLK)
- GPIO 7 (SDO / SD0)
- GPIO 8 (SDI / SD1)
- GPIO 9 (SHD / SD2)
- GPIO 10 (SWP / SD3)
- GPIO 11 (CSC / CMD)
Talpiniai jutikliniai GPIO
ESP32 turi 10 vidinių talpinių jutiklinių jutiklių. Jie gali pajusti bet kokio, turinčio elektros krūvį, skirtumus, pavyzdžiui, žmogaus odoje. Taigi jie gali aptikti pokyčius, atsiradusius palietus GPIO pirštu. Šiuos kaiščius galima lengvai integruoti į talpines trinkeles ir pakeisti mechaninius mygtukus. Talpiniai jutikliniai kaiščiai taip pat gali būti naudojami ESP32 pažadinti iš gilaus miego. Tie vidiniai jutikliniai jutikliai yra prijungti prie šių GPIO:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Analoginis į skaitmeninį keitiklį (ADC)
ESP32 turi 18 x 12 bitų ADC įvesties kanalus (o ESP8266 turi tik 1 x 10 bitų ADC). Tai yra GPIO, kuriuos galima naudoti kaip ADC ir atitinkamus kanalus:
- 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)
Pastaba: ADC2 kaiščių negalima naudoti, kai naudojamas „Wi-Fi“. Taigi, jei naudojate „Wi-Fi“ ir kyla problemų gaunant vertę iš ADC2 GPIO, galite apsvarstyti galimybę naudoti ADC1 GPIO. Tai turėtų išspręsti jūsų problemą.
ADC įvesties kanalai turi 12 bitų skiriamąją gebą. Tai reiškia, kad galite gauti analoginius rodmenis nuo 0 iki 4095, kur 0 atitinka 0 V ir 4095 iki 3.3 V. Taip pat galite nustatyti savo kanalų skiriamąją gebą pagal kodą ir ADC diapazoną.
ESP32 ADC kaiščiai neturi tiesinės elgsenos. Tikriausiai negalėsite atskirti nuo 0 iki 0.1 V arba nuo 3.2 iki 3.3 V. Turite tai turėti omenyje, kai naudojate ADC kaiščius. Elgesys bus panašus į parodytą toliau pateiktame paveikslėlyje.Skaitmeninis į analoginį keitiklis (DAC)
ESP2 yra 8 x 32 bitų DAC kanalai, skirti skaitmeniniams signalams konvertuoti į analoginį tūrįtage signalo išėjimai. Tai yra DAC kanalai:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
ESP32 palaiko RTC GPIO. Į RTC mažos galios posistemį nukreiptus GPIO galima naudoti, kai ESP32 yra gilaus miego būsenoje. Šie RTC GPIO gali būti naudojami ESP32 pažadinti iš gilaus miego, kai yra ypač žemas
Veikia maitinimo (ULP) bendras procesorius. Šie GPIO gali būti naudojami kaip išorinis pažadinimo šaltinis.
- 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
ESP32 LED PWM valdiklis turi 16 nepriklausomų kanalų, kuriuos galima sukonfigūruoti generuoti skirtingų savybių PWM signalus. Visi kaiščiai, kurie gali veikti kaip išėjimai, gali būti naudojami kaip PWM kaiščiai (GPIO 34–39 negali generuoti PWM).
Norėdami nustatyti PWM signalą, kode turite apibrėžti šiuos parametrus:
- Signalo dažnis;
- Darbo ciklas;
- PWM kanalas;
- GPIO, kur norite išvesti signalą.
I2C
ESP32 turi du I2C kanalus ir bet kurį kaištį galima nustatyti kaip SDA arba SCL. Naudojant ESP32 su Arduino IDE, numatytieji I2C kaiščiai yra:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Jei naudodamiesi laidų biblioteka norite naudoti kitus kaiščius, tereikia paskambinti:
Wire.begin(SDA, SCL);
SPI
Pagal numatytuosius nustatymus SPI kaiščio atvaizdavimas yra:
SPI | DAWDLE | Sojų pasta | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Pertraukia
Visi GPIO gali būti sukonfigūruoti kaip pertraukimai.
Surišimo smeigtukai
ESP32 lustas turi šiuos tvirtinimo kaiščius:
- GPIO 0 (turi būti LOW, kad įjungtumėte įkrovos režimą)
- GPIO 2 (įkrovos metu turi būti plūduriuojantis arba LOW)
- GPIO 4
- GPIO 5 (įkrovos metu turi būti HIGH)
- GPIO 12 (įkrovos metu turi būti LOW)
- GPIO 15 (įkrovos metu turi būti HIGH)
Jie naudojami ESP32 įkelti į įkrovos arba mirksintį režimą. Daugumoje kūrimo plokščių su įmontuotu USB / serijiniu ryšiu jums nereikia jaudintis dėl šių kaiščių būklės. Plokštė perkelia kaiščius į tinkamą būseną, kad būtų galima mirksėti arba įkelti. Daugiau informacijos apie ESP32 įkrovos režimo pasirinkimą rasite čia.
Tačiau jei prie tų kaiščių prijungti išoriniai įrenginiai, gali kilti problemų bandant įkelti naują kodą, paleisti ESP32 su nauja programine įranga arba iš naujo nustatyti plokštę. Jei kai kurie išoriniai įrenginiai prijungti prie surišimo kaiščių ir kyla problemų įkeliant kodą arba mirksi ESP32, gali būti, kad šie išoriniai įrenginiai neleidžia ESP32 įjungti reikiamo režimo. Perskaitykite įkrovos režimo pasirinkimo dokumentaciją, kad nukreiptumėte jus teisinga kryptimi. Nustačius iš naujo, sumirksėjus ar paleidus, tie kaiščiai veikia taip, kaip tikėtasi.
Smeigtukai HIGH prie įkrovos
Kai kurie GPIO pakeičia savo būseną į HIGH arba išveda PWM signalus paleidžiant arba atkuriant.
Tai reiškia, kad jei prie šių GPIO yra prijungti išėjimai, galite gauti netikėtų rezultatų, kai ESP32 nustatomas iš naujo arba paleidžiamas.
- GPIO 1
- GPIO 3
- GPIO 5
- Nuo GPIO 6 iki GPIO 11 (prijungtas prie ESP32 integruotos SPI flash atminties – nerekomenduojama naudoti).
- GPIO 14
- GPIO 15
Įgalinti (EN)
Įjungti (EN) yra 3.3 V reguliatoriaus įjungimo kaištis. Jis ištrauktas, todėl prijunkite prie žemės, kad išjungtumėte 3.3 V reguliatorių. Tai reiškia, kad galite naudoti šį kaištį, prijungtą prie mygtuko, norėdami iš naujo paleisti ESP32, pvzample.
Ištraukta GPIO srovė
Absoliuti maksimali srovė, naudojama vienam GPIO, yra 40 mA pagal ESP32 duomenų lapo skyrių „Rekomenduojamos darbo sąlygos“.
ESP32 Integruotas Hall efekto jutiklis
ESP32 taip pat turi įmontuotą salės efekto jutiklį, kuris nustato magnetinio lauko pokyčius aplinkoje
ESP32 Arduino IDE
Yra Arduino IDE priedas, leidžiantis programuoti ESP32 naudojant Arduino IDE ir jos programavimo kalbą. Šioje pamokoje parodysime, kaip įdiegti ESP32 plokštę Arduino IDE, nesvarbu, ar naudojate Windows, Mac OS X ar Linux.
Būtinos sąlygos: Įdiegta Arduino IDE
Prieš pradedant šią diegimo procedūrą, kompiuteryje turi būti įdiegta Arduino IDE. Yra dvi Arduino IDE versijos, kurias galite įdiegti: 1 versija ir 2 versija.
Galite atsisiųsti ir įdiegti Arduino IDE spustelėję šią nuorodą: arduino.cc/en/Main/Software
Kurią Arduino IDE versiją rekomenduojame? Šiuo metu tokių yra plugins ESP32 (kaip SPIFFS Filesistemos įkėlimo įskiepis), kurie dar nepalaikomi Arduino 2. Taigi, jei ateityje ketinate naudoti SPIFFS papildinį, rekomenduojame įdiegti pasenusią 1.8.X versiją. Jums tereikia slinkti žemyn Arduino programinės įrangos puslapyje, kad jį rastumėte.
ESP32 priedo įdiegimas Arduino IDE
Norėdami įdiegti ESP32 plokštę savo Arduino IDE, vadovaukitės šiomis instrukcijomis:
- Savo Arduino IDE eikite į File> Nuostatos
- Įveskite toliau pateiktą lauką „Papildomos valdybos vadovas URLs“ laukas:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Tada spustelėkite mygtuką „Gerai“:Pastaba: jei jau turite ESP8266 plokštes URL, galite atskirti URLs su kableliu taip:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Atidarykite lentų tvarkyklę. Eikite į Tools > Board > Boards Manager...Ieškokite ESP32 and press install button for the “ESP32 by Espressif Systems“:
tiek. Jis turėtų būti įdiegtas po kelių sekundžių.
Įkelti testo kodą
Prijunkite ESP32 plokštę prie kompiuterio. Atidarę Arduino IDE, atlikite šiuos veiksmus:
- Pasirinkite savo lentą meniu Įrankiai> Plokštė (mano atveju tai ESP32 DEV modulis)
- Pasirinkite prievadą (jei savo Arduino IDE nematote COM prievado, turite įdiegti CP210x USB į UART Bridge VCP tvarkykles):
- Atidarykite šį example under File > Pvzamples > WiFi
(ESP32) > WiFiScan - Arduino IDE atidaromas naujas eskizas:
- Paspauskite mygtuką Įkelti Arduino IDE. Palaukite kelias sekundes, kol kodas bus kompiliuojamas ir įkeliamas į jūsų lentą.
- Jei viskas vyko taip, kaip tikėjotės, turėtumėte pamatyti pranešimą „Įkėlimas baigtas“. žinutę.
- Atidarykite Arduino IDE nuoseklųjį monitorių 115200 XNUMX sparta:
- Paspauskite integruotą ESP32 įjungimo mygtuką ir šalia ESP32 turėtumėte pamatyti galimus tinklus:
Trikčių šalinimas
Jei bandote įkelti naują eskizą į savo ESP32 ir gaunate šį klaidos pranešimą „Įvyko lemtinga klaida: nepavyko prisijungti prie ESP32: Baigėsi laikas... Prisijungiama...“. Tai reiškia, kad jūsų ESP32 neveikia mirksėjimo / įkėlimo režimu.
Pasirinkę tinkamą plokštės pavadinimą ir COM por, atlikite šiuos veiksmus:
ESP32 plokštėje laikykite nuspaudę mygtuką „BOOT“.
- Norėdami įkelti eskizą, Arduino IDE paspauskite mygtuką „Įkelti“:
- Pamatę „Prisijungimas…“. pranešimą savo Arduino IDE, atleiskite pirštą nuo mygtuko „BOOT“:
- Po to turėtumėte pamatyti pranešimą „Įkėlimas baigtas“.
tiek. Jūsų ESP32 turėtų būti paleistas naujas eskizas. Paspauskite mygtuką „Įjungti“, kad paleistumėte ESP32 iš naujo ir paleistumėte naują įkeltą eskizą.
Taip pat turėsite pakartoti tą mygtukų seką kiekvieną kartą, kai norite įkelti naują eskizą.
1 projektas ESP32 įvesties išėjimai
Šiame darbo pradžios vadove sužinosite, kaip skaityti skaitmenines įvestis, pvz., mygtukų jungiklį, ir valdyti skaitmeninius išėjimus, pvz., LED, naudodami ESP32 su Arduino IDE.
Būtinos sąlygos
ESP32 programuosime naudodami Arduino IDE. Taigi, prieš tęsdami įsitikinkite, kad įdiegėte ESP32 plokščių priedą:
- ESP32 priedo įdiegimas Arduino IDE
ESP32 valdymo skaitmeniniai išėjimai
Pirmiausia turite nustatyti GPIO, kurį norite valdyti kaip IŠVESTĮ. Naudokite pinMode() funkciją taip:
pinMode (GPIO, OUTPUT);
Norėdami valdyti skaitmeninę išvestį, tereikia naudoti funkciją digitalWrite(), kuri priima kaip argumentus, nurodytą GPIO (int number) ir būseną HIGH arba LOW.
digitalWrite (GPIO, STATE);
Visi GPIO gali būti naudojami kaip išėjimai, išskyrus GPIO nuo 6 iki 11 (prijungtus prie integruotos SPI blykstės) ir GPIO 34, 35, 36 ir 39 (įvesti tik GPIO);
Sužinokite daugiau apie ESP32 GPIO: ESP32 GPIO informacinis vadovas
ESP32 Skaitmeniniai įėjimai
Pirmiausia nustatykite norimą skaityti GPIO kaip INPUT, naudodami funkciją pinMode () taip:
pinMode (GPIO, INPUT);
Norėdami nuskaityti skaitmeninę įvestį, pavyzdžiui, mygtuką, naudokite funkciją digitalRead(), kuri priima kaip argumentą, jūsų nurodytą GPIO (int numerį).
skaitmeninis skaitymas (GPIO);
Visi ESP32 GPIO gali būti naudojami kaip įvestis, išskyrus GPIO nuo 6 iki 11 (prijungtus prie integruotos SPI blykstės).
Sužinokite daugiau apie ESP32 GPIO: ESP32 GPIO informacinis vadovas
Projektas Example
Norėdami parodyti, kaip naudoti skaitmeninius įėjimus ir skaitmeninius išėjimus, sukursime paprastą projektą, pvzample su mygtuku ir šviesos diodu. Perskaitysime mygtuko būseną ir atitinkamai užsidegsime šviesos diodą, kaip parodyta toliau pateiktame paveikslėlyje.
Reikalingos dalys
Štai sąrašas dalių, kurių reikia norint sukurti grandinę:
- ESP32 DEVKIT V1
- 5 mm LED
- 220 omų rezistorius
- Mygtukas
- 10k omų rezistorius
- Duonlentė
- Jumperių laidai
Scheminė diagrama
Prieš tęsdami, turite surinkti grandinę su šviesos diodu ir mygtuku.
Mes prijungsime šviesos diodą prie GPIO 5, o mygtuką - prie GPIO 4.Kodas
Atidarykite kodą Project_1_ESP32_Inputs_Outputs.ino arduino IDEKaip veikia kodas
Šiose dviejose eilutėse sukuriate kintamuosius, kad galėtumėte priskirti kaiščius:
Mygtukas prijungtas prie GPIO 4, o šviesos diodas – prie GPIO 5. Naudojant Arduino IDE su ESP32, 4 atitinka GPIO 4, o 5 – GPIO 5.
Tada sukuriate kintamąjį mygtuko būsenai palaikyti. Pagal numatytuosius nustatymus jis yra 0 (nepaspaustas).
int mygtukasBūsena = 0;
Sąrankoje () mygtuką inicijuojate kaip INPUT, o šviesos diodą - kaip IŠVESTĮ.
Tam naudojate funkciją pinMode (), kuri priima jūsų nurodytą kaištį ir režimą: INPUT arba OUTPUT.
pinMode(mygtukasPin, INPUT);
pinMode(ledPin, OUTPUT);
In the loop () yra vieta, kur perskaitote mygtuko būseną ir atitinkamai nustatote šviesos diodą.
Kitoje eilutėje perskaitykite mygtuko būseną ir išsaugokite ją kintamajame buttonState.
Kaip matėme anksčiau, naudojate funkciją digitalRead().
mygtuko būsena = skaitmeninis Skaitymas(mygtukoSmeigtukas);
Šis if teiginys patikrina, ar mygtuko būsena yra HIGH. Jei taip, jis įjungia šviesos diodą naudodamas funkciją digitalWrite(), kuri kaip argumentą priima ledPin ir būseną HIGH.
if (buttonState == HIGH)Jei mygtuko būsena nėra HIGH, išjungiate šviesos diodą. Tiesiog nustatykite LOW kaip antrą argumentą funkcijoje digitalWrite ().
Kodo įkėlimas
Prieš spustelėdami įkėlimo mygtuką, eikite į Įrankiai > Plokštė ir pasirinkite plokštę :DOIT ESP32 DEVKIT V1.
Eikite į Įrankiai > Prievadas ir pasirinkite COM prievadą, prie kurio prijungtas ESP32. Tada paspauskite įkėlimo mygtuką ir palaukite pranešimo „Įkėlimas baigtas“.Pastaba: jei derinimo lange matote daug taškų (jungiasi…__…__) ir pranešimą „Nepavyko prisijungti prie ESP32: baigėsi laukimo paketo antraštės laikas“, tai reiškia, kad po taškais turite paspausti ESP32 įkrovos mygtuką.
pradėti rodytis.Trikčių šalinimas
Demonstracija
Įkėlę kodą patikrinkite savo grandinę. Šviesos diodas turi užsidegti, kai paspausite mygtuką:Ir išjunkite, kai atleidžiate:
2 projektas ESP32 analoginiai įėjimai
Šis projektas parodo, kaip skaityti analogines įvestis naudojant ESP32 naudojant Arduino IDE.
Analoginis skaitymas yra naudingas norint nuskaityti kintamųjų rezistorių, pvz., potenciometrų ar analoginių jutiklių, vertes.
Analoginiai įėjimai (ADC)
Analoginės vertės skaitymas naudojant ESP32 reiškia, kad galite išmatuoti skirtingą tūrįtage lygiai nuo 0 V iki 3.3 V.
TtagTada išmatuota e priskiriama reikšmei nuo 0 iki 4095, kurioje 0 V atitinka 0, o 3.3 V atitinka 4095.tage nuo 0 V iki 3.3 V bus suteikta atitinkama vertė tarp jų.ADC yra nelinijinis
Idealiu atveju, naudojant ESP32 ADC kaiščius, tikitės linijinio elgesio.
Tačiau taip nebūna. Tai, ką gausite, yra elgesys, kaip parodyta šioje diagramoje:Toks elgesys reiškia, kad jūsų ESP32 negali atskirti 3.3 V nuo 3.2 V.
Gausite tą pačią abiejų tūrio vertętages: 4095.
Tas pats atsitinka su labai mažu tūriutage reikšmės: 0 V ir 0.1 V, gausite tą pačią reikšmę: 0. Turite tai turėti omenyje, kai naudojate ESP32 ADC kaiščius.
analogRead() funkcija
Analoginės įvesties skaitymas naudojant ESP32 naudojant Arduino IDE yra toks pat paprastas, kaip naudojant funkciją analogRead (). Kaip argumentą jis priima GPIO, kurį norite perskaityti:
analoginis skaitymas (GPIO);
DEVKIT V15 plokštėje (versijoje su 1 GPIO) yra tik 30.
Paimkite ESP32 plokštės kištuką ir suraskite ADC kaiščius. Toliau esančiame paveikslėlyje jie paryškinti raudonu rėmeliu.Šie analoginiai įvesties kontaktai turi 12 bitų skiriamąją gebą. Tai reiškia, kad kai skaitote analoginę įvestį, jos diapazonas gali skirtis nuo 0 iki 4095.
Pastaba: ADC2 kontaktų negalima naudoti, kai naudojamas „Wi-Fi“. Taigi, jei naudojate „Wi-Fi“ ir kyla problemų gaunant vertę iš ADC2 GPIO, galite apsvarstyti galimybę naudoti ADC1 GPIO, nes tai turėtų išspręsti jūsų problemą.
Norėdami pamatyti, kaip viskas susieja, sukursime paprastą buvample nuskaityti analoginę reikšmę iš potenciometro.
Reikalingos dalys
Šiam buvusiamample, jums reikia šių dalių:
- ESP32 DEVKIT V1 plokštė
- Potenciometras
- Duonlentė
- Jumperių laidai
schemiškas
Prijunkite potenciometrą prie ESP32. Potenciometro vidurinis kaištis turi būti prijungtas prie GPIO 4. Galite naudoti šią schemą kaip nuorodą.Kodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Atidarykite kodą Project_2_ESP32_Inputs_Outputs.ino arduino IDEŠis kodas tiesiog nuskaito reikšmes iš potenciometro ir išspausdina šias vertes serijiniame monitoriuje.
Kode pradedate apibrėždami GPIO, prie kurio prijungtas potenciometras. Šiame buvample, GPIO 4.Sąrankoje () inicijuokite nuoseklųjį ryšį, kurio perdavimo sparta yra 115200 XNUMX.
Ciklėje () naudokite funkciją analogRead(), kad nuskaitytumėte analoginę įvestį iš potPin.
Galiausiai išspausdinkite reikšmes, nuskaitytas iš potenciometro serijiniame monitoriuje.
Įkelkite pateiktą kodą į savo ESP32. Įsitikinkite, kad meniu Įrankiai pasirinkote tinkamą plokštę ir COM prievadą.
Išbandydami buvample
Įkėlę kodą ir paspaudę ESP32 atstatymo mygtuką, atidarykite Serial Monitor 115200 bodų sparta. Pasukite potenciometrą ir pamatysite, kaip keičiasi reikšmės.Didžiausia vertė, kurią gausite, yra 4095, o mažiausia – 0.
Apvyniojimas
Šiame straipsnyje sužinojote, kaip skaityti analogines įvestis naudojant ESP32 su Arduino IDE. Apibendrinant:
- ESP32 DEVKIT V1 DOIT plokštė (versija su 30 kontaktų) turi 15 ADC kontaktų, kuriuos galite naudoti analoginiams įėjimams skaityti.
- Šių kaiščių skiriamoji geba yra 12 bitų, o tai reiškia, kad galite gauti reikšmes nuo 0 iki 4095.
- Norėdami nuskaityti reikšmę Arduino IDE, tiesiog naudokite analogRead () funkciją.
- ESP32 ADC kaiščiai neturi tiesinės elgsenos. Tikriausiai negalėsite atskirti nuo 0 iki 0.1 V arba nuo 3.2 iki 3.3 V. Turite tai turėti omenyje, kai naudojate ADC kaiščius.
Project 3 ESP32 PWM (analoginė išvestis)
Šioje pamokoje parodysime, kaip generuoti PWM signalus naudojant ESP32 naudojant Arduino IDE. Kaip buvęsampMes sukursime paprastą grandinę, kuri pritemdo šviesos diodą, naudodami ESP32 LED PWM valdiklį.ESP32 LED PWM valdiklis
ESP32 turi LED PWM valdiklį su 16 nepriklausomų kanalų, kuriuos galima sukonfigūruoti generuoti skirtingų savybių PWM signalus.
Štai žingsniai, kuriuos turėsite atlikti norėdami pritemdyti šviesos diodą su PWM naudodami Arduino IDE:
- Pirmiausia turite pasirinkti PWM kanalą. Yra 16 kanalų nuo 0 iki 15.
- Tada turite nustatyti PWM signalo dažnį. Šviesos diodams tinka 5000 Hz dažnis.
- Taip pat turite nustatyti signalo darbo ciklo skiriamąją gebą: turite skiriamąją gebą nuo 1 iki 16 bitų. Naudosime 8 bitų skiriamąją gebą, o tai reiškia, kad galėsite valdyti LED ryškumą naudodami reikšmę nuo 0 iki 255.
- Tada turite nurodyti, kuriems GPIO ar GPIO bus rodomas signalas. Tam naudosite šią funkciją:
ledcAttachPin (GPIO, kanalas)
Ši funkcija priima du argumentus. Pirmasis yra GPIO, kuris išves signalą, o antrasis yra kanalas, kuris generuos signalą. - Galiausiai, norėdami valdyti LED ryškumą naudodami PWM, naudokite šią funkciją:
ledcWrite(kanalas, darbo ciklas)
Ši funkcija kaip argumentus priima kanalą, kuris generuoja PWM signalą, ir darbo ciklą.
Reikalingos dalys
Norėdami sekti šią mokymo programą, jums reikia šių dalių:
- ESP32 DEVKIT V1 plokštė
- 5mm lemputė
- 220 omų rezistorius
- Duonlentė
- Jumperių laidai
schemiškas
Prijunkite šviesos diodą prie ESP32, kaip parodyta šioje schemoje. Šviesos diodas turi būti prijungtas prie GPIO 4.Pastaba: galite naudoti bet kurį norimą kaištį, jei jis gali veikti kaip išvestis. Visi kaiščiai, kurie gali veikti kaip išėjimai, gali būti naudojami kaip PWM kaiščiai. Norėdami gauti daugiau informacijos apie ESP32 GPIO, skaitykite: ESP32 Pinout nuoroda: Kokius GPIO kaiščius turėtumėte naudoti?
Kodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Atidarykite kodą Project_3_ESP32_PWM.ino arduino IDEPradėsite apibrėždami kaištį, prie kurio pritvirtintas šviesos diodas. Šiuo atveju šviesos diodas yra prijungtas prie GPIO 4.
Tada nustatote PWM signalo savybes. Jūs nustatote 5000 Hz dažnį, pasirenkate 0 kanalą signalui generuoti ir nustatote 8 bitų skiriamąją gebą. Norėdami generuoti skirtingus PWM signalus, galite pasirinkti kitas savybes, kurios skiriasi nuo šių.
Setup() turite sukonfigūruoti LED PWM su anksčiau apibrėžtomis savybėmis naudodami funkciją ledcSetup(), kuri priima kaip argumentus, ledChannel, dažnį ir skiriamąją gebą, kaip nurodyta toliau:
Tada turite pasirinkti GPIO, iš kurio gausite signalą. Tam naudokite funkciją ledcAttachPin(), kuri kaip argumentus priima GPIO, kuriame norite gauti signalą, ir kanalą, kuris generuoja signalą. Šiame buvample, gausime signalą ledPin GPIO, kuris atitinka GPIO 4. Signalą generuojantis kanalas yra ledChannel, kuris atitinka 0 kanalą.
Kad padidintumėte LED ryškumą, darbo ciklą pakeisite nuo 0 iki 255.
Ir tada nuo 255 iki 0, kad sumažintumėte ryškumą.
Norėdami nustatyti šviesos diodo ryškumą, tereikia naudoti funkciją ledcWrite(), kuri kaip argumentus priima signalą generuojantį kanalą ir darbo ciklą.
Kadangi naudojame 8 bitų skiriamąją gebą, darbo ciklas bus valdomas naudojant reikšmę nuo 0 iki 255. Atminkite, kad funkcijoje ledcWrite() naudojame kanalą, kuris generuoja signalą, o ne GPIO.
Išbandydami buvample
Įkelkite kodą į savo ESP32. Įsitikinkite, kad pasirinkote tinkamą plokštę ir COM prievadą. Pažiūrėkite į savo grandinę. Turėtumėte turėti šviesos diodą, kuris padidina ir sumažina ryškumą.
4 projektas ESP32 PIR judesio jutiklis
Šiame projekte parodyta, kaip aptikti judesį naudojant ESP32 naudojant PIR judesio jutiklį. Aptikus judesį, garsinis signalas skambės ir sustabdys signalą, kai iš anksto nustatytą laiką (pvz., 4 sekundes) neaptinkamas judesys.
Kaip veikia HC-SR501 judesio jutiklis
.Jutiklio HC-SR501 veikimo principas pagrįstas judančio objekto infraraudonosios spinduliuotės pasikeitimu. Kad HC-SR501 jutiklis būtų aptiktas, objektas turi atitikti du reikalavimus:
- Objektas skleidžia infraraudonuosius spindulius.
- Objektas juda arba dreba
Taigi:
Jei objektas skleidžia infraraudonuosius spindulius, bet nejuda (pvz., žmogus stovi nejudėdamas), jutiklis jo neaptinka.
Jei objektas juda, bet neskleidžia infraraudonųjų spindulių (pvz., robotas ar transporto priemonė), jutiklis jo NEaptinka.
Pristatome laikmačius
Šiame buvampTaip pat pristatysime laikmačius. Norime, kad šviesos diodas liktų įjungtas iš anksto nustatytą sekundžių skaičių po to, kai aptinkamas judesys. Užuot naudoję delsos () funkciją, kuri blokuoja kodą ir neleidžia daryti nieko kito tam tikrą sekundžių skaičių, turėtume naudoti laikmatį.Uždelsimo () funkcija
Turėtumėte būti susipažinę su uždelsimo () funkcija, nes ji plačiai naudojama. Šią funkciją naudoti gana paprasta. Jis priima vieną int skaičių kaip argumentą.
Šis skaičius rodo laiką milisekundėmis, kurią programa turi laukti, kol pereis prie kitos kodo eilutės.Kai atidedate (1000), jūsų programa sustoja toje eilutėje 1 sekundei.
delay() yra blokavimo funkcija. Blokavimo funkcijos neleidžia programai daryti nieko kito, kol nebus atlikta ta konkreti užduotis. Jei vienu metu reikia atlikti kelias užduotis, negalite naudoti delay().
Daugumoje projektų neturėtumėte naudoti vėlavimų ir vietoj to naudokite laikmačius.
Funkcija millis().
Naudodami funkciją, vadinamą millis(), galite grąžinti milisekundžių skaičių, praėjusį nuo programos pradžios.Kodėl ši funkcija naudinga? Nes naudodami tam tikrą matematiką galite lengvai patikrinti, kiek laiko praėjo neužblokuodami kodo.
Reikalingos dalys
Norėdami sekti šią pamoką, jums reikia šių dalių
- ESP32 DEVKIT V1 plokštė
- PIR judesio jutiklis (HC-SR501)
- Aktyvus zuzeris
- Jumperių laidai
- Duonlentė
schemiškasPastaba: Darbo ttagHC-SR501 e yra 5 V. Norėdami jį maitinti, naudokite Vin kaištį.
Kodas
Prieš tęsdami šią pamoką, savo Arduino IDE turite įdiegti ESP32 priedą. Vykdykite vieną iš šių vadovėlių, kad įdiegtumėte ESP32 Arduino IDE, jei dar to nepadarėte. (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Atidarykite kodą Project_4_ESP32_PIR_Motion_Sensor.ino arduino IDE.
Demonstracija
Įkelkite kodą į savo ESP32 plokštę. Įsitikinkite, kad pasirinkote tinkamą plokštę ir COM prievadą. Įkelkite kodo nuorodos veiksmus.
Atidarykite nuoseklųjį monitorių 115200 XNUMX sparta.Pakelkite ranką priešais PIR jutiklį. Garso signalas turi įsijungti, o serijiniame monitoriuje išspausdinamas pranešimas „Motion detected!Buzzer alarm“.
Po 4 sekundžių garsinis signalas turi išsijungti.
Projektas 5 ESP32 jungiklis Web Serveris
Šiame projekte sukursite atskirą web serveris su ESP32, kuris valdo išėjimus (du šviesos diodus) naudojant Arduino IDE programavimo aplinką. The web serveris reaguoja į mobilųjį telefoną ir jį galima pasiekti naudojant bet kurį įrenginį, kuris yra vietinio tinklo naršyklė. Parodysime, kaip sukurti web serveris ir kaip kodas veikia žingsnis po žingsnio.
Projektas baigtasview
Prieš pereinant tiesiai prie projekto, svarbu apibūdinti, kas yra mūsų web serveris tiks, kad vėliau būtų lengviau atlikti veiksmus.
- The web serveris, kurį sukursite, valdo du šviesos diodus, prijungtus prie ESP32 GPIO 26 ir GPIO 27;
- Galite pasiekti ESP32 web serverį įvesdami ESP32 IP adresą vietinio tinklo naršyklėje;
- Spustelėdami savo web serveryje galite akimirksniu pakeisti kiekvieno LED būseną.
Reikalingos dalys
Šiam mokymui jums reikės šių dalių:
- ESP32 DEVKIT V1 plokštė
- 2x 5mm LED
- 2x 200 omų rezistorius
- Duonlentė
- Jumperių laidai
schemiškas
Pradėkite nuo grandinės kūrimo. Prijunkite du šviesos diodus prie ESP32, kaip parodyta šioje schemoje – vienas šviesos diodas prijungtas prie GPIO 26, o kitas prie GPIO 27.
Pastaba: Naudojame ESP32 DEVKIT DOIT plokštę su 36 kontaktais. Prieš surenkant grandinę, būtinai patikrinkite naudojamos plokštės kištuką.Kodas
Čia pateikiame kodą, kuris sukuria ESP32 web serveris. Atidarykite kodą Project_5_ESP32_Switch _Web_Server.ino arduino IDE, bet dar neįkelkite. Turite atlikti kai kuriuos pakeitimus, kad jis veiktų jums.
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Tinklo kredencialų nustatymas
Turite pakeisti šias eilutes naudodami tinklo kredencialus: SSID ir slaptažodį. Kodas yra gerai pakomentuotas, kur turėtumėte atlikti pakeitimus.Kodo įkėlimas
Dabar galite įkelti kodą ir web serveris veiks iš karto.
Norėdami įkelti kodą į ESP32, atlikite šiuos veiksmus:
- Prijunkite ESP32 plokštę prie kompiuterio;
- Arduino IDE pasirinkite savo plokštę skiltyje Įrankiai > Plokštė (mūsų atveju mes naudojame ESP32 DEVKIT DOIT plokštę);
- Pasirinkite COM prievadą skiltyje Įrankiai > Prievadas.
- Paspauskite mygtuką Įkelti Arduino IDE ir palaukite kelias sekundes, kol kodas bus kompiliuojamas ir įkeliamas į jūsų plokštę.
- Palaukite pranešimo „Įkėlimas baigtas“.
Raskite ESP IP adresą
Įkėlę kodą atidarykite nuoseklųjį monitorių 115200 XNUMX sparta.Paspauskite ESP32 EN mygtuką (nustatyti iš naujo). ESP32 prisijungia prie Wi-Fi ir išveda ESP IP adresą serijiniame monitoriuje. Nukopijuokite tą IP adresą, nes jo reikia norint pasiekti ESP32 web serveris.
Prieiga prie Web Serveris
Norėdami pasiekti web serveryje, atidarykite naršyklę, įklijuokite ESP32 IP adresą ir pamatysite kitą puslapį.
Pastaba: Jūsų naršyklė ir ESP32 turi būti prijungti prie to paties LAN.Jei pažvelgsite į serijinį monitorių, pamatysite, kas vyksta fone. ESP gauna HTTP užklausą iš naujo kliento (šiuo atveju jūsų naršyklės).
Taip pat galite pamatyti kitą informaciją apie HTTP užklausą.
Demonstracija
Dabar galite išbandyti, ar jūsų web serveris veikia tinkamai. Spustelėkite mygtukus, kad valdytumėte šviesos diodus.Tuo pačiu metu galite pažvelgti į serijinį monitorių, kad pamatytumėte, kas vyksta fone. Pavyzdžiui,ampkai spustelėsite mygtuką, kad įjungtumėte GPIO 26, ESP32 gauna užklausą /26/on URL.
Kai ESP32 gauna tą užklausą, jis įjungia prie GPIO 26 prijungtą šviesos diodą ir atnaujina savo būseną web puslapį.
GPIO 27 mygtukas veikia panašiai. Patikrinkite, ar jis veikia tinkamai.
Kaip veikia kodas
Šiame skyriuje atidžiau pažvelgsime į kodą, kad pamatytumėte, kaip jis veikia.
Pirmas dalykas, kurį turite padaryti, yra įtraukti „WiFi“ biblioteką.Kaip minėta anksčiau, šiose eilutėse dvigubose kabutėse turite įterpti savo ssid ir slaptažodį.
Tada jūs nustatote savo web serveris į 80 prievadą.
Šioje eilutėje sukuriamas kintamasis, skirtas saugoti HTTP užklausos antraštę:
Tada sukuriate pagalbinius kintamuosius, kad išsaugotumėte esamą išėjimų būseną. Jei norite pridėti daugiau išėjimų ir išsaugoti jo būseną, turite sukurti daugiau kintamųjų.
Taip pat kiekvienam išėjimui turite priskirti GPIO. Čia mes naudojame GPIO 26 ir GPIO 27. Galite naudoti bet kokius kitus tinkamus GPIO.
setup ()
Dabar pereikime prie sąrankos (). Pirmiausia derinimo tikslais pradedame nuoseklųjį ryšį 115200 XNUMX duomenų perdavimo sparta.Taip pat apibrėžiate savo GPIO kaip IŠVESTIS ir nustatote juos į LOW.
Šios eilutės pradeda Wi-Fi ryšį su WiFi.begin(ssid, slaptažodis), palaukite sėkmingo prisijungimo ir išspausdinkite ESP IP adresą serijiniame monitoriuje.
kilpa ()
Loop() programuojame, kas atsitinka, kai naujas klientas užmezga ryšį su web serveris.
ESP32 visada klausosi ateinančių klientų su šia linija:Gavus užklausą iš kliento, gaunamus duomenis išsaugome. Tolesnė while kilpa veiks tol, kol klientas išliks prisijungęs. Nerekomenduojame keisti šios kodo dalies, nebent tiksliai žinote, ką darote.
Kitame if ir else teiginių skyriuje patikrinama, kuris mygtukas buvo paspaustas jūsų web puslapyje ir atitinkamai valdo išvestis. Kaip matėme anksčiau, pateikiame užklausą dėl įvairių URLs priklausomai nuo paspausto mygtuko.
Pavyzdžiui,ampJei paspausite GPIO 26 ON mygtuką, ESP32 gaus užklausą /26/ON URL (Matome, kad ši informacija yra HTTP antraštėje Serial Monitor). Taigi, galime patikrinti, ar antraštėje yra išraiška GET /26/on. Jei jame yra, kintamąjį output26state pakeičiame į ON, o ESP32 įjungia šviesos diodą.
Panašiai veikia ir kiti mygtukai. Taigi, jei norite pridėti daugiau išėjimų, turėtumėte pakeisti šią kodo dalį, kad įtrauktumėte juos.
HTML rodymas web puslapį
Kitas dalykas, kurį turite padaryti, yra sukurti web puslapį. ESP32 atsiųs atsakymą į jūsų naršyklę su tam tikru HTML kodu, kad sukurtų web puslapį.
The web puslapis siunčiamas klientui naudojant šią išraišką client.println(). Kaip argumentą turėtumėte įvesti tai, ką norite nusiųsti klientui.
Pirmas dalykas, kurį turėtume siųsti, visada yra sekanti eilutė, kuri rodo, kad siunčiame HTML.Tada sekanti eilutė sudaro web puslapis reaguoja bet kuriuo web naršyklė.
Toliau pateikiami veiksmai naudojami siekiant užkirsti kelią užklausoms favicon. – Jums nereikia jaudintis dėl šios linijos.
Stilizavimas Web Puslapis
Be to, turime šiek tiek CSS teksto, skirto mygtukų ir stilių stiliui web puslapio išvaizda.
Mes pasirenkame Helvetica šriftą, apibrėžiame turinį, kuris turi būti rodomas kaip blokas ir sulygiuotas centre.Mygtukus formuojame #4CAF50 spalva, be rėmelio, balto teksto ir su šiuo užpildu: 16 pikselių 40 pikselių. Taip pat nustatome teksto dekoravimą į None, nustatome šrifto dydį, paraštę ir žymeklį į žymeklį.
Taip pat nustatome antrojo mygtuko stilių su visomis mygtuko savybėmis, kurias apibrėžėme anksčiau, bet su kita spalva. Tai bus išjungimo mygtuko stilius.
Nustatant Web Puslapio pirmoji antraštė
Kitoje eilutėje galite nustatyti pirmąją savo antraštę web puslapį. Čia mes turime „ESP32 Web Serveris“, bet jūs galite pakeisti šį tekstą į tai, kas jums patinka.Rodomi mygtukai ir atitinkama būsena
Tada parašykite pastraipą, kad būtų rodoma dabartinė GPIO 26 būsena. Kaip matote, naudojame kintamąjį output26State, kad būsena atnaujinama akimirksniu, kai šis kintamasis pasikeičia.Tada rodome įjungimo arba išjungimo mygtuką, atsižvelgiant į dabartinę GPIO būseną. Jei dabartinė GPIO būsena yra išjungta, rodome mygtuką ON, jei ne, rodome mygtuką OFF.
Tą pačią procedūrą naudojame GPIO 27.
Ryšio uždarymas
Galiausiai, kai atsakymas baigiasi, išvalome antraštės kintamąjį ir sustabdome ryšį su klientu su client.stop().
Apvyniojimas
Šioje pamokoje parodėme, kaip sukurti a web serveris su ESP32. Mes parodėme jums paprastą buvample, kuris valdo du šviesos diodus, bet idėja yra pakeisti tuos šviesos diodus rele arba bet kokiu kitu išėjimu, kurį norite valdyti.
Projektas 6 RGB LED Web Serveris
Šiame projekte parodysime, kaip nuotoliniu būdu valdyti RGB LED su ESP32 plokšte, naudojant a web serveris su spalvų rinkikliu.
Projektas baigtasview
Prieš pradėdami, pažiūrėkime, kaip veikia šis projektas:
- ESP32 web serveris rodo spalvų parinkiklį.
- Kai pasirenkate spalvą, jūsų naršyklė pateikia užklausą a URL kuriame yra pasirinktos spalvos R, G ir B parametrai.
- Jūsų ESP32 gauna užklausą ir padalija kiekvieno spalvos parametro reikšmę.
- Tada jis siunčia PWM signalą su atitinkama reikšme į GPIO, kurie valdo RGB LED.
Kaip veikia RGB šviesos diodai?
Bendro katodo RGB šviesos dioduose visi trys šviesos diodai turi neigiamą jungtį (katodą). Visi komplekte yra bendro katodo RGB.Kaip sukurti skirtingas spalvas?
Su RGB šviesos diodu, žinoma, galite gaminti raudoną, žalią ir mėlyną šviesą, o sukonfigūruodami kiekvieno šviesos diodo intensyvumą, galite gaminti ir kitas spalvas.
Pavyzdžiui,ample, kad gautumėte grynai mėlyną šviesą, mėlyną šviesos diodą nustatykite į didžiausią, o žalią ir raudoną šviesos diodus – mažiausią. Jei norite, kad šviesa būtų balta, nustatykite didžiausią visų trijų šviesos diodų intensyvumą.
Spalvų maišymas
Norėdami sukurti kitas spalvas, galite derinti tris skirtingo intensyvumo spalvas. Norėdami reguliuoti kiekvieno šviesos diodo intensyvumą, galite naudoti PWM signalą.
Kadangi šviesos diodai yra labai arti vienas kito, mūsų akys mato spalvų derinio rezultatą, o ne tris spalvas atskirai.
Norėdami sužinoti, kaip derinti spalvas, pažiūrėkite į šią lentelę.
Tai paprasčiausia spalvų maišymo lentelė, tačiau ji leidžia suprasti, kaip tai veikia ir kaip išgauti skirtingas spalvas.Reikalingos dalys
Šiam projektui jums reikia šių dalių:
- ESP32 DEVKIT V1 plokštė
- RGB LED
- 3x 220 omų rezistoriai
- Jumperių laidai
- Duonlentė
schemiškasKodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
- ESP32 priedo įdiegimas Arduino IDE
Surinkę grandinę, atidarykite kodą
Projektas_6_RGB_LED_Web_Server.ino arduino IDE.
Prieš įkeldami kodą, nepamirškite įterpti tinklo kredencialų, kad ESP galėtų prisijungti prie vietinio tinklo.Kaip veikia kodas
ESP32 eskizas naudoja WiFi.h biblioteką.Šiose eilutėse apibrėžiami eilutės kintamieji, kad būtų saugomi užklausos parametrai R, G ir B.
Kiti keturi kintamieji naudojami HTTP užklausai iššifruoti vėliau.
Sukurkite tris GPIO kintamuosius, kurie valdys juostos R, G ir B parametrus. Šiuo atveju naudojame GPIO 13, GPIO 12 ir GPIO 14.
Šie GPIO turi išvesti PWM signalus, todėl pirmiausia turime sukonfigūruoti PWM ypatybes. Nustatykite PWM signalo dažnį į 5000 Hz. Tada kiekvienai spalvai susiekite PWM kanalą
Ir galiausiai nustatykite PWM kanalų skiriamąją gebą į 8 bitų
Sąrankoje () priskirkite PWM ypatybes PWM kanalams
Prijunkite PWM kanalus prie atitinkamų GPIO
Tolesnėje kodo skiltyje rodomas jūsų spalvų parinkiklis web puslapį ir pateikia užklausą pagal jūsų pasirinktą spalvą.
Kai pasirenkate spalvą, gaunate užklausą tokiu formatu.
Taigi, turime padalinti šią eilutę, kad gautume R, G ir B parametrus. Parametrai išsaugomi redString, greenString ir blueString kintamuosiuose ir gali turėti reikšmes nuo 0 iki 255.Norėdami valdyti juostą ESP32, naudokite funkciją ledcWrite(), kad generuotumėte PWM signalus su reikšmėmis, dekoduotomis iš HTTP. prašymas.
Pastaba: Sužinokite daugiau apie PWM su ESP32: Project 3 ESP32 PWM (analoginė išvestis)
Norėdami valdyti juostelę naudodami ESP8266, tereikia naudoti
funkcija analogWrite() generuoti PWM signalus su reikšmėmis, dekoduotomis iš HTPP užklausos.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Kadangi reikšmes gauname eilutės kintamajame, turime jas konvertuoti į sveikuosius skaičius naudojant toInt() metodą.
Demonstracija
Įdėję tinklo kredencialus, pasirinkite tinkamą plokštę ir COM prievadą ir įkelkite kodą į savo ESP32. Įkelkite kodo nuorodos veiksmus.
Įkėlę atidarykite nuoseklųjį monitorių 115200 XNUMX sparta ir paspauskite ESP įjungimo/atstatymo mygtuką. Turėtumėte gauti plokštės IP adresą.Atidarykite naršyklę ir įveskite ESP IP adresą. Dabar naudokite spalvų parinkiklį, kad pasirinktumėte RGB LED spalvą.
Tada turite paspausti mygtuką „Keisti spalvą“, kad spalva įsigaliotų.Norėdami išjungti RGB šviesos diodą, pasirinkite juodą spalvą.
Stipriausios spalvos (spalvų rinkiklio viršuje) yra tos, kurios duos geresnių rezultatų.
Projektas 7 ESP32 relė Web Serveris
Relės naudojimas su ESP32 yra puikus būdas nuotoliniu būdu valdyti kintamosios srovės buitinius prietaisus. Šiame vadove paaiškinama, kaip valdyti relės modulį naudojant ESP32.
Pažiūrėsime, kaip veikia relės modulis, kaip prijungti relę prie ESP32 ir sukurti web serveris, skirtas nuotoliniu būdu valdyti relę.
Pristatome reles
Relė yra elektra valdomas jungiklis ir, kaip ir bet kuris kitas jungiklis, jį galima įjungti arba išjungti, leidžiant srovei eiti ar ne. Jį galima valdyti mažu tūriutagtaip, kaip 3.3 V, kurį teikia ESP32 GPIO, ir leidžia valdyti aukštą garsumątagpvz., 12V, 24V arba tinklo tūriotage (230 V Europoje ir 120 V JAV).Kairėje pusėje yra du trijų lizdų rinkiniai, skirti didelio tūrio prijungimuitages, ir kaiščiai dešinėje pusėje (mažo tūriotage) prisijungti prie ESP32 GPIO.
Mains Voltage RyšiaiAnkstesnėje nuotraukoje parodytas relės modulis turi dvi jungtis, kurių kiekvienoje yra trys lizdai: bendras (COM), normaliai uždarytas (NC) ir normaliai atidarytas (NO).
- COM: prijunkite srovę, kurią norite valdyti (tinklo ttagir).
- NC (normaliai uždaryta): įprastai uždaryta konfigūracija naudojama, kai norite, kad relė būtų uždaryta pagal numatytuosius nustatymus. NC yra prijungti COM kontaktai, tai reiškia, kad srovė teka, nebent iš ESP32 siunčiate signalą į relės modulį, kad atidarytumėte grandinę ir sustabdytumėte srovės tekėjimą.
- NO (normaliai atvira): įprastai atvira konfigūracija veikia atvirkščiai: nėra ryšio tarp NO ir COM kaiščių, todėl grandinė nutrūksta, nebent iš ESP32 siunčiate signalą, kad uždarytumėte grandinę.
Valdymo kaiščiaiŽemo tūriotage pusėje yra keturių kaiščių rinkinys ir trijų kaiščių rinkinys. Pirmąjį rinkinį sudaro VCC ir GND moduliui įjungti, o 1 įėjimas (IN1) ir 2 įėjimas (IN2) atitinkamai valdo apatinę ir viršutinę reles.
Jei jūsų relės modulis turi tik vieną kanalą, turėsite tik vieną IN kaištį. Jei turite keturis kanalus, turėsite keturis IN kaiščius ir pan.
Signalas, kurį siunčiate į IN kaiščius, nustato, ar relė yra aktyvi, ar ne. Relė suveikia, kai įvesties įtampa nukrenta žemiau maždaug 2 V. Tai reiškia, kad turėsite šiuos scenarijus:
- Paprastai uždara konfigūracija (NC):
- HIGH signalas – teka srovė
- LOW signalas – srovė neteka
- Paprastai atidaryta konfigūracija (NE):
- HIGH signalas – srovė neteka
- LOW signalas – teka srovė
Turėtumėte naudoti įprastai uždarą konfigūraciją, kai srovė turėtų tekėti dažniausiai, o ją sustabdyti norite tik retkarčiais.
Naudokite įprastai atvirą konfigūraciją, kai norite, kad srovė retkarčiais tekėtų (pvz.,ample, įjunkite alamp retkarčiais).
Maitinimo šaltinio pasirinkimasAntrasis kaiščių rinkinys susideda iš GND, VCC ir JD-VCC kaiščių.
JD-VCC kaištis maitina relės elektromagnetą. Atkreipkite dėmesį, kad modulis turi trumpiklio dangtelį, jungiantį VCC ir JD-VCC kaiščius; čia parodyta geltona, bet jūsų spalva gali būti kitokia.
Uždėjus trumpiklio dangtelį, sujungiami VCC ir JD-VCC kaiščiai. Tai reiškia, kad relės elektromagnetas yra tiesiogiai maitinamas iš ESP32 maitinimo kaiščio, todėl relės modulis ir ESP32 grandinės nėra fiziškai atskirtos viena nuo kitos.
Be trumpiklio dangtelio turite pateikti nepriklausomą maitinimo šaltinį, kad įjungtumėte relės elektromagnetą per JD-VCC kaištį. Ši konfigūracija fiziškai izoliuoja reles nuo ESP32 su modulyje įmontuotu optronu, kuris apsaugo nuo ESP32 pažeidimo atsiradus elektros spygliams.
schemiškasĮspėjimas: Didelio tūrio naudojimastage maitinimo šaltiniai gali rimtai susižaloti.
Todėl vietoj didelio maitinimo tūrio naudojami 5 mm šviesos diodaitage lemputes eksperimente. Jei nesate susipažinę su elektros tinklo ttage paprašykite ko nors, kas jums padės. Programuodami ESP arba sujungdami grandinę įsitikinkite, kad viskas yra atjungta nuo elektros tinklotage.ESP32 bibliotekos įdiegimas
Norėdami tai sukurti web serveryje, naudojame ESPAsyncWebServerio biblioteka ir AsyncTCP biblioteka.
ESPAsync diegimasWebServerio biblioteka
Atlikite kitus veiksmus, kad įdiegtumėte ESPAsyncWebServeris biblioteka:
- Spustelėkite čia, kad atsisiųstumėte ESPAsyncWebServerio biblioteka. Turėtum
.zip aplanką atsisiuntimų aplanke - Išpakuokite .zip aplanką ir turėtumėte gauti ESPAsyncWebServeris-master aplankas
- Pervardykite aplanką iš ESPAsyncWebServeris-master į ESPAsyncWebServeris
- Perkelkite ESPAsyncWebServerio aplankas į jūsų Arduino IDE diegimo bibliotekų aplanką
Arba savo Arduino IDE galite eiti į Sketch> Include
Biblioteka > Pridėti .ZIP biblioteką... ir pasirinkite ką tik atsisiųstą biblioteką.
AsyncTCP bibliotekos, skirtos ESP32, diegimas
The ESPAsyncWebServeris biblioteka reikalauja AsyncTCP biblioteka dirbti. Sekite
sekantys šios bibliotekos diegimo veiksmai:
- Spustelėkite čia, kad atsisiųstumėte AsyncTCP biblioteką. Atsisiuntimų aplanke turėtų būti .zip aplankas
- Išpakuokite .zip aplanką ir turėtumėte gauti AsyncTCP pagrindinį aplanką
1. Pervardykite aplanką iš AsyncTCP-master į AsyncTCP
3. Perkelkite AsyncTCP aplanką į Arduino IDE diegimo bibliotekų aplanką
4. Galiausiai iš naujo atidarykite Arduino IDE
Arba savo Arduino IDE galite eiti į Sketch> Include
Biblioteka > Pridėti .ZIP biblioteką... ir pasirinkite ką tik atsisiųstą biblioteką.
Kodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Įdiegę reikiamas bibliotekas, atidarykite kodą Project_7_ESP32_Relay_Web_Server.ino arduino IDE.
Prieš įkeldami kodą, nepamirškite įterpti tinklo kredencialų, kad ESP galėtų prisijungti prie vietinio tinklo.Demonstracija
Atlikę reikiamus pakeitimus, įkelkite kodą į savo ESP32.Įkelkite kodo nuorodos veiksmus.
Atidarykite nuoseklųjį monitorių 115200 32 sparta ir paspauskite mygtuką ESP32 EN, kad gautumėte jo IP adresą. Tada atidarykite naršyklę vietiniame tinkle ir įveskite ESPXNUMX IP adresą, kad gautumėte prieigą prie web serveris.
Atidarykite nuoseklųjį monitorių 115200 32 sparta ir paspauskite mygtuką ESP32 EN, kad gautumėte jo IP adresą. Tada atidarykite naršyklę vietiniame tinkle ir įveskite ESPXNUMX IP adresą, kad gautumėte prieigą prie web serveris.Pastaba: Jūsų naršyklė ir ESP32 turi būti prijungti prie to paties LAN.
Turėtumėte gauti kažką, kaip nurodyta toliau, naudodami du mygtukus kaip relių skaičių, kurį nustatėte savo kode.Dabar galite naudoti mygtukus norėdami valdyti savo reles naudodami išmanųjį telefoną.
Project_8_Output_State_Synchronization_ Web_Serveris
Šis projektas parodo, kaip valdyti ESP32 arba ESP8266 išėjimus naudojant a web serverį ir fizinį mygtuką vienu metu. Išvesties būsena atnaujinama web puslapyje, ar jis pakeistas fiziniu mygtuku arba web serveris.
Projektas baigtasview
Trumpai pažvelkime, kaip veikia projektas.ESP32 arba ESP8266 talpina a web serveris, leidžiantis valdyti išvesties būseną;
- Dabartinė išvesties būsena rodoma web serveris;
- ESP taip pat prijungtas prie fizinio mygtuko, kuris valdo tą patį išėjimą;
- Jei pakeisite išvesties būseną naudodami fizinį puhsmygtuką, dabartinė jos būsena taip pat atnaujinama web serveris.
Apibendrinant, šis projektas leidžia valdyti tą pačią išvestį naudojant a web serveris ir mygtukas vienu metu. Kai pasikeičia išvesties būsena, web serveris atnaujintas.
Reikalingos dalys
Štai sąrašas dalių, kurių reikia norint sukurti grandinę:
- ESP32 DEVKIT V1 plokštė
- 5 mm LED
- 220 omų rezistorius
- Mygtukas
- 10k omų rezistorius
- Duonlentė
- Jumperių laidai
schemiškasESP32 bibliotekos įdiegimas
Norėdami tai sukurti web serveryje, naudojame ESPAsyncWebServerio biblioteka ir AsyncTCP biblioteka. (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESPAsync diegimasWebServerio biblioteka
Atlikite kitus veiksmus, kad įdiegtumėte ESPAsyncWebServerio biblioteka:
- Spustelėkite čia, kad atsisiųstumėte ESPAsyncWebServerio biblioteka. Turėtum
.zip aplanką atsisiuntimų aplanke - Išpakuokite .zip aplanką ir turėtumėte gauti ESPAsyncWebServeris-master aplankas
- Pervardykite aplanką iš ESPAsyncWebServeris-master į ESPAsyncWebServeris
- Perkelkite ESPAsyncWebServerio aplankas į jūsų Arduino IDE diegimo bibliotekų aplanką
Arba savo Arduino IDE galite eiti į Sketch> Include
Biblioteka > Pridėti .ZIP biblioteką... ir pasirinkite ką tik atsisiųstą biblioteką.
AsyncTCP bibliotekos, skirtos ESP32, diegimas
ESPAsyncWebKad veiktų serverio biblioteka, reikalinga AsyncTCP biblioteka. Norėdami įdiegti biblioteką, atlikite šiuos veiksmus:
- Spustelėkite čia, kad atsisiųstumėte AsyncTCP biblioteką. Atsisiuntimų aplanke turėtų būti .zip aplankas
- Išpakuokite .zip aplanką ir turėtumėte gauti AsyncTCP pagrindinį aplanką
- Pervardykite aplanką iš AsyncTCP-master į AsyncTCP
- Perkelkite AsyncTCP aplanką į Arduino IDE diegimo bibliotekų aplanką
- Galiausiai iš naujo atidarykite savo Arduino IDE
Arba savo Arduino IDE galite eiti į Sketch> Include
Biblioteka > Pridėti .ZIP biblioteką... ir pasirinkite ką tik atsisiųstą biblioteką.
Kodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Įdiegę reikiamas bibliotekas, atidarykite kodą
Project_8_Output_State_Synchronization_Web_Server.ino arduino IDE.
Prieš įkeldami kodą, nepamirškite įterpti tinklo kredencialų, kad ESP galėtų prisijungti prie vietinio tinklo.
Kaip veikia kodas
Mygtuko būsena ir išvesties būsena
LedState kintamasis palaiko LED išvesties būseną. Pagal numatytuosius nustatymus, kai web serveris paleidžiamas, jis yra LOW.
ButtonState ir lastButtonState naudojami norint nustatyti, ar mygtukas buvo paspaustas, ar ne.Mygtukas (web serveris)
Neįtraukėme HTML, kad sukurtume mygtuką kintamajame index_html.
Taip yra todėl, kad norime, kad būtų galima jį pakeisti priklausomai nuo esamos LED būsenos, kurią taip pat galima pakeisti mygtuku.
Taigi, mes sukūrėme mygtuko %BUTTONPLACEHOLDER% rezervuotąją vietą, kuri bus pakeista HTML tekstu, kad vėliau kode būtų sukurtas mygtukas (tai atliekama procesoriaus () funkcijoje).procesorius ()
Funkcija Procesor() pakeičia visas HTML teksto vietos rezervavimo reikšmes tikrosiomis reikšmėmis. Pirmiausia patikrinama, ar HTML tekstuose yra
rezervuotos vietos %BUTTONPLACEHOLDER%.Tada iškvieskite funkciją theoutputState(), kuri grąžina dabartinę išvesties būseną. Išsaugome jį kintamajame outputStateValue.
Po to naudokite šią reikšmę, kad sukurtumėte HTML tekstą, kad būtų rodomas mygtukas su tinkama būsena:
HTTP GET užklausa pakeisti išvesties būseną (JavaScript)
Kai paspausite mygtuką, iškviečiama toggleCheckbox() funkcija. Ši funkcija pateiks užklausą dėl skirtingų URLs, kad įjungtumėte arba išjungtumėte šviesos diodą.Kad įjungtų šviesos diodą, jis pateikia užklausą /update?state=1 URL:
Kitu atveju jis pateikia užklausą /update?state=0 URL.
HTTP GET užklausa atnaujinti būseną (JavaScript)
Kad išvesties būsena būtų atnaujinta web serveryje, mes iškviečiame šią funkciją, kuri pateikia naują užklausą /state URL kas sekundę.Tvarkyti užklausas
Tada turime tvarkyti, kas nutinka, kai ESP32 arba ESP8266 gauna užklausas dėl URLs.
Kai užklausa gaunama šaknyje /URL, siunčiame HTML puslapį ir procesorių.Šiose eilutėse patikrinama, ar gavote užklausą /update?state=1 arba /update?state=0 URL ir atitinkamai pakeičia ledState.
Gavus užklausą /stat URL, siunčiame dabartinę išvesties būseną:
kilpa ()
Ciklėje () atmušame mygtuką ir įjungiame arba išjungiame šviesos diodą, priklausomai nuo LED būsenos reikšmės kintamasis.Demonstracija
Įkelkite kodą į savo ESP32 plokštę. Įkelkite kodo nuorodos veiksmus.
Tada atidarykite nuoseklųjį monitorių 115200 XNUMX sparta. Paspauskite EN/RST mygtuką, kad gautumėte IP adresą.Atidarykite naršyklę vietiniame tinkle ir įveskite ESP IP adresą. Turėtumėte turėti prieigą prie web serverį, kaip parodyta žemiau.
Pastaba: Jūsų naršyklė ir ESP32 turi būti prijungti prie to paties LAN.Galite perjungti mygtuką ant web serverį, kad įjungtumėte šviesos diodą.
Tą patį šviesos diodą taip pat galite valdyti fiziniu mygtuku. Jo būsena visada bus atnaujinta automatiškai web serveris.
9 projektas ESP32 DHT11 Web Serveris
Šiame projekte sužinosite, kaip sukurti asinchroninį ESP32 web serveris su DHT11, kuris rodo temperatūrą ir drėgmę naudojant Arduino IDE.
Būtinos sąlygos
The web serveryje mes automatiškai atnaujinsime rodmenis, nereikės atnaujinti web puslapį.
Su šiuo projektu išmoksite:
- Kaip nuskaityti temperatūrą ir drėgmę iš DHT jutiklių;
- Sukurkite asinchroninį web serveris naudojant ESPAsyncWebServerio biblioteka;
- Automatiškai atnaujinkite jutiklio rodmenis, nereikia atnaujinti web puslapį.
Asinchroninis Web Serveris
Norėdami pastatyti web serverį naudosime ESPAsyncWebServerio biblioteka kuris suteikia paprastą būdą sukurti asinchroninį web serveris. Asinchroninio kūrimas web serveris turi keletą advantagkaip minėta bibliotekos „GitHub“ puslapyje, pavyzdžiui:
- „Tvarkyti daugiau nei vieną ryšį vienu metu“;
- „Kai siunčiate atsakymą, esate iš karto pasirengę tvarkyti kitus ryšius, o serveris rūpinasi atsakymo siuntimu fone“;
- „Paprastas šablonų apdorojimo variklis šablonams tvarkyti“;
Reikalingos dalys
Norėdami užbaigti šią mokymo programą, jums reikia šių dalių:
- ESP32 kūrimo plokštė
- DHT11 modulis
- Duonlentė
- Jumperių laidai
schemiškasBibliotekų diegimas
Šiam projektui reikia įdiegti keletą bibliotekų:
- The DHT ir Adafruit vieningas jutiklis Tvarkyklės bibliotekos, skirtos skaityti iš DHT jutiklio.
- ESPAsyncWebServeris ir Asinchroninis TCP bibliotekas, kad sukurtų asinchroninį web serveris.
Vykdykite toliau pateiktas instrukcijas, kad įdiegtumėte tas bibliotekas:
DHT jutiklių bibliotekos įdiegimas
Norėdami skaityti iš DHT jutiklio naudodami Arduino IDE, turite įdiegti DHT jutiklių biblioteka. Norėdami įdiegti biblioteką, atlikite kitus veiksmus.
- Spustelėkite čia norėdami atsisiųsti DHT jutiklio biblioteką. Atsisiuntimų aplanke turėtų būti .zip aplankas
- Išpakuokite .zip aplanką ir turėtumėte gauti DHT-sensor-library-master aplanką
- Pervardykite aplanką iš DHT-sensor-library-master į DHT_sensor
- Perkelkite aplanką DHT_sensor į Arduino IDE diegimo bibliotekų aplanką
- Galiausiai iš naujo atidarykite savo Arduino IDE
„Adafruit Unified Sensor“ tvarkyklės įdiegimas
Taip pat turite įdiegti „Adafruit Unified Sensor Driver“ biblioteka dirbti su DHT jutikliu. Norėdami įdiegti biblioteką, atlikite kitus veiksmus.
- Spustelėkite čia, kad atsisiųstumėte „Adafruit Unified Sensor“ biblioteką. Atsisiuntimų aplanke turėtų būti .zip aplankas
- Išpakuokite .zip aplanką ir turėtumėte gauti aplanką Adafruit_sensor-master
- Pervardykite aplanką iš Adafruit_sensor-master į Adafruit_sensor
- Perkelkite aplanką Adafruit_sensor į Arduino IDE diegimo bibliotekų aplanką
- Galiausiai iš naujo atidarykite savo Arduino IDE
ESPAsync diegimasWebServerio biblioteka
Atlikite kitus veiksmus, kad įdiegtumėte ESPAsyncWebServeris biblioteka:
- Spustelėkite čia, kad atsisiųstumėte ESPAsyncWebServerio biblioteka. Turėtum
.zip aplanką atsisiuntimų aplanke - Išpakuokite .zip aplanką ir turėtumėte
gauti ESPAsyncWebServeris-master aplankas - Pervardykite aplanką iš ESPAsyncWebServeris-master į ESPAsyncWebServeris
- Perkelkite ESPAsyncWebServerio aplankas į jūsų Arduino IDE diegimo bibliotekų aplanką
Async TCP bibliotekos, skirtos ESP32, diegimas
The ESPAsyncWebServeris biblioteka reikalauja AsyncTCP biblioteka dirbti. Norėdami įdiegti biblioteką, atlikite šiuos veiksmus:
- Spustelėkite čia, kad atsisiųstumėte AsyncTCP biblioteką. Atsisiuntimų aplanke turėtų būti .zip aplankas
- Išpakuokite .zip aplanką ir turėtumėte gauti AsyncTCP pagrindinį aplanką
- Pervardykite aplanką iš AsyncTCP-master į AsyncTCP
- Perkelkite AsyncTCP aplanką į Arduino IDE diegimo bibliotekų aplanką
- Galiausiai iš naujo atidarykite savo Arduino IDE
Kodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDE
Įdiegę reikiamas bibliotekas, atidarykite kodą
Project_9_ESP32_DHT11_Web_Server.ino arduino IDE.
Prieš įkeldami kodą, nepamirškite įterpti tinklo kredencialų, kad ESP galėtų prisijungti prie vietinio tinklo.Kaip veikia kodas
Tolesnėse pastraipose paaiškinsime, kaip veikia kodas. Skaitykite toliau, jei norite sužinoti daugiau arba pereikite prie demonstravimo skyriaus, kad pamatytumėte galutinį rezultatą.
Bibliotekų importavimas
Pirmiausia importuokite reikiamas bibliotekas. „WiFi“, ESPAsyncWebNorint sukurti, reikia serverio ir ESPAsyncTCP web serveris. Adafruit_Sensor ir DHT bibliotekos reikalingos norint nuskaityti iš DHT11 arba DHT22 jutiklių.Kintamųjų apibrėžimas
Apibrėžkite GPIO, prie kurio prijungtas DHT duomenų kaištis. Šiuo atveju jis prijungtas prie GPIO 4.Tada pasirinkite naudojamo DHT jutiklio tipą. Mūsų buvusiameampmes naudojame DHT22. Jei naudojate kitą tipą, tereikia atšaukti jutiklio komentarą ir pakomentuoti visus kitus.
Sukurkite DHT objektą naudodami anksčiau apibrėžtą tipą ir kaištį.Sukurkite asinchronizacijąWebServerio objektas 80 prievade.
Skaitykite Temperatūros ir drėgmės funkcijas
Sukūrėme dvi funkcijas: vieną temperatūrai nuskaityti Sukūrėme dvi funkcijas: vieną temperatūrai skaityti (readDHTTemperature()) ir kitą drėgmei (readDHTHumidity()).Gauti jutiklio rodmenis taip pat paprasta, kaip naudoti. Gauti jutiklio rodmenis taip pat paprasta, kaip naudoti dht objekto readTemperature() ir readHumidity() metodus.
Taip pat turime sąlygą, kuri pateikia du brūkšnelius (–), jei jutikliui nepavyktų gauti rodmenų.
Rodmenys grąžinami kaip eilutės tipas. Norėdami konvertuoti plūdę į eilutę, naudokite funkciją String().
Pagal numatytuosius nustatymus mes skaitome temperatūrą Celsijaus laipsniais. Norėdami gauti temperatūrą Farenheito laipsniais, komentuokite temperatūrą Celsijaus ir panaikinkite temperatūros Farenheito laipsniais, kad turėtumėte:
Įkelkite kodą
Dabar įkelkite kodą į savo ESP32. Įsitikinkite, kad pasirinkote tinkamą plokštę ir COM prievadą. Įkelkite kodo nuorodos veiksmus.
Įkėlę atidarykite nuoseklųjį monitorių 115200 32 sparta. Paspauskite ESP32 nustatymo iš naujo mygtuką. ESPXNUMX IP adresas turi būti atspausdintas serijoje stebėti.Demonstracija
Atidarykite naršyklę ir įveskite ESP32 IP adresą. Jūsų web serveris turi rodyti naujausius jutiklio rodmenis.
Pastaba: Jūsų naršyklė ir ESP32 turi būti prijungti prie to paties LAN.
Atkreipkite dėmesį, kad temperatūros ir drėgmės rodmenys atnaujinami automatiškai, nereikia atnaujinti web puslapį.
Project_10_ESP32_OLED_Display
Šiame projekte parodyta, kaip naudoti 0.96 colio SSD1306 OLED ekraną su ESP32 naudojant Arduino IDE.
Pristatome 0.96 colio OLED ekraną
The OLED ekranas Šiame vadove naudosime SSD1306 modelį: vienspalvį, 0.96 colio ekraną su 128 × 64 pikselių, kaip parodyta toliau pateiktame paveikslėlyje.OLED ekranui nereikia foninio apšvietimo, todėl tamsioje aplinkoje gaunamas labai gražus kontrastas. Be to, jo pikseliai sunaudoja energiją tik tada, kai jie yra įjungti, todėl OLED ekranas sunaudoja mažiau energijos, palyginti su kitais ekranais.
Kadangi OLED ekranas naudoja I2C ryšio protokolą, laidai yra labai paprasti. Toliau pateiktą lentelę galite naudoti kaip nuorodą.
OLED kaištis | ESP32 |
Vin | 3.3 V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
schemiškasSSD1306 OLED bibliotekos diegimas – ESP32
Yra keletas bibliotekų, skirtų valdyti OLED ekraną naudojant ESP32.
Šioje pamokoje naudosime dvi Adafruit bibliotekas: Adafruit_SSD1306 biblioteka ir Adafruit_GFX biblioteka.
Atlikite kitus veiksmus, kad įdiegtumėte tas bibliotekas.
- Atidarykite savo Arduino IDE ir eikite į Sketch > Include Library > Manage Libraries. Bibliotekos vadovas turėtų atsidaryti.
- Paieškos laukelyje įveskite „SSD1306“ ir įdiekite SSD1306 biblioteką iš „Adafruit“.
- Įdiegę SSD1306 biblioteką iš Adafruit, paieškos laukelyje įveskite „GFX“ ir įdiekite biblioteką.
- Įdiegę bibliotekas, iš naujo paleiskite Arduino IDE.
Kodas
Įdiegę reikiamas bibliotekas, atidarykite Project_10_ESP32_OLED_Display.ino arduino IDE. kodas
ESP32 programuosime naudodami Arduino IDE, todėl prieš tęsdami įsitikinkite, kad įdiegėte ESP32 priedą: (Jei jau atlikote šį veiksmą, galite pereiti prie kito veiksmo.)
ESP32 priedo įdiegimas Arduino IDEKaip veikia kodas
Bibliotekų importavimas
Pirmiausia turite importuoti reikiamas bibliotekas. „Wire“ biblioteka, skirta naudoti I2C, ir „Adafruit“ bibliotekos, skirtos rašyti į ekraną: Adafruit_GFX ir Adafruit_SSD1306.Inicijuokite OLED ekraną
Tada apibrėžiate savo OLED plotį ir aukštį. Šiame buvample, mes naudojame 128 × 64 OLED ekraną. Jei naudojate kitus dydžius, galite juos pakeisti kintamuosiuose SCREEN_WIDTH ir SCREEN_HEIGHT.Tada inicijuokite ekrano objektą, kurio plotis ir aukštis buvo apibrėžti anksčiau naudojant I2C ryšio protokolą (&Wire).
Parametras (-1) reiškia, kad jūsų OLED ekrane nėra RESET kaiščio. Jei jūsų OLED ekrane yra RESET kaištis, jis turi būti prijungtas prie GPIO. Tokiu atveju kaip parametrą turėtumėte perduoti GPIO numerį.
Sąrankoje () inicijuokite nuoseklųjį monitorių 115200 XNUMX bodų greičiu derinimo tikslais.OLED ekraną inicijuokite naudodami start() metodą taip:
Šis fragmentas taip pat atspausdina pranešimą serijiniame monitoriuje, jei negalėtume prisijungti prie ekrano.
Jei naudojate kitą OLED ekraną, gali tekti pakeisti OLED adresą. Mūsų atveju adresas yra 0x3C.
Pradėję ekraną, pridėkite dviejų sekundžių delsą, kad OLED turėtų pakankamai laiko inicijuoti prieš rašant tekstą:
Aiškus ekranas, nustatykite šrifto dydį, spalvą ir rašykite tekstą
Pradėję ekraną, išvalykite ekrano buferį naudodami clearDisplay() metodą:
Prieš rašydami tekstą, turite nustatyti teksto dydį, spalvą ir vietą, kurioje tekstas bus rodomas OLED.
Nustatykite šrifto dydį naudodami setTextSize() metodą:Nustatykite šrifto spalvą naudodami setTextColor() metodą:
WHITE nustato baltą šriftą ir juodą foną.
Nustatykite vietą, kurioje tekstas prasideda, naudodami setCursor(x,y) metodą. Šiuo atveju nustatome, kad tekstas prasidėtų nuo (0,0) koordinačių – viršutiniame kairiajame kampe.Galiausiai galite nusiųsti tekstą į ekraną naudodami println() metodą, kaip nurodyta toliau
Tada turite iškviesti display() metodą, kad tekstas būtų rodomas ekrane.
Adafruit OLED biblioteka suteikia naudingų būdų, kaip lengvai slinkti tekstą.
- startscrollright(0x00, 0x0F): slinkite tekstą iš kairės į dešinę
- startscrollleft(0x00, 0x0F): slinkite tekstą iš dešinės į kairę
- startscrolldiagright(0x00, 0x07): slinkite tekstą iš kairiojo apatinio kampo į dešinįjį viršutinį kampą startscrolldiagleft(0x00, 0x07): slinkite tekstą iš dešiniojo apatinio kampo į kairįjį viršutinį kampą
Įkelkite kodą
Dabar įkelkite kodą į savo ESP32. Įkelkite kodo nuorodos veiksmus.
Įkėlus kodą, OLED ekrane bus rodomas slenkantis tekstas.
Dokumentai / Ištekliai
![]() |
LAFVIN ESP32 pagrindinis pradinis rinkinys [pdfNaudojimo instrukcija ESP32 pagrindinis pradinis rinkinys, ESP32, pagrindinis pradinis rinkinys, pradinis rinkinys |