Starter bazë ESP32
Kompleti
Lista e paketimit
ESP32 Hyrje
I ri në ESP32? Filloni këtu! ESP32 është një seri mikrokontrolluesish me kosto të ulët dhe me fuqi të ulët Sistem mbi një çip (SoC) të zhvilluar nga Espressif që përfshijnë aftësi Wi-Fi dhe Bluetooth wireless dhe procesor me dy bërthama. Nëse jeni njohur me ESP8266, ESP32 është pasardhësi i tij, i ngarkuar me shumë veçori të reja.Specifikimet ESP32
Nëse dëshironi të jeni pak më teknik dhe specifik, mund t'i hidhni një sy specifikimeve të hollësishme të mëposhtme të ESP32 (burimi: http://esp32.net/)—për më shumë detaje, kontrolloni fletën e të dhënave):
- Lidhja me valë WiFi: Shpejtësia e të dhënave 150.0 Mbps me HT40
- Bluetooth: BLE (Bluetooth Low Energy) dhe Bluetooth Classic
- Procesori: Mikroprocesor Tensilica Xtensa Dual-Core 32-bit LX6, që funksionon në 160 ose 240 MHz
- Kujtesa:
- ROM: 448 KB (për nisjen dhe funksionet kryesore)
- SRAM: 520 KB (për të dhëna dhe udhëzime)
- RTC fas SRAM: 8 KB (për ruajtjen e të dhënave dhe CPU kryesore gjatë RTC Boot nga modaliteti i gjumit të thellë)
- RTC SRAM i ngadaltë: 8 KB (për aksesin e bashkëprocesorit gjatë modalitetit të gjumit të thellë) eFuse: 1 Kbit (nga të cilat 256 bit përdoren për sistemin (adresa MAC dhe konfigurimi i çipit) dhe 768 bitët e mbetur rezervohen për aplikacionet e klientit, duke përfshirë Kriptimi me Flash dhe ID-ja e çipit)
Blic i integruar: blici i lidhur brenda me anë të IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 dhe SD_DATA_1 në ESP32-D2WD dhe ESP32-PICO-D4.
- 0 MiB (çipe ESP32-D0WDQ6, ESP32-D0WD dhe ESP32-S0WD)
- 2 MiB (çip ESP32-D2WD)
- 4 MiB (moduli ESP32-PICO-D4 SiP)
Fuqia e ulët: siguron që ju mund të përdorni ende konvertimet ADC, p.shample, gjatë gjumit të thellë.
Hyrja/dalja periferike:
- ndërfaqe periferike me DMA që përfshin prekjen kapacitore
- ADC (Konvertues analog në dixhital)
- DAC (Konvertues dixhital në analog)
- I²C (Qarku i integruar)
- UART (Marrës/Transmetues universal asinkron)
- SPI (Ndërfaqja periferike serike)
- I²S (Tingull i integruar ndërçip)
- RMII (ndërfaqe e reduktuar e pavarur nga media)
- PWM (Modulimi me gjerësi pulsi)
Siguria: përshpejtuesit harduerikë për AES dhe SSL/TLS
Bordet e zhvillimit të ESP32
ESP32 i referohet çipit të zhveshur ESP32. Sidoqoftë, termi "ESP32" përdoret gjithashtu për t'iu referuar tabelave të zhvillimit të ESP32. Përdorimi i çipave të zhveshur ESP32 nuk është i lehtë ose praktik, veçanërisht kur mësoni, testoni dhe bëni prototip. Shumicën e kohës, do të dëshironi të përdorni një tabelë zhvillimi ESP32.
Ne do të përdorim tabelën ESP32 DEVKIT V1 si referencë. Figura më poshtë tregon tabelën ESP32 DEVKIT V1, version me 30 kunja GPIO.Specifikimet – ESP32 DEVKIT V1
Tabela e mëposhtme tregon një përmbledhje të veçorive dhe specifikimeve të tabelës ESP32 DEVKIT V1 DOIT:
Numri i bërthamave | 2 (me dy bërthama) |
Wi-Fi | 2.4 GHz deri në 150 Mbit/s |
Bluetooth | BLE (Bluetooth Low Energy) dhe Bluetooth i vjetër |
Arkitekturë | 32 bit |
Frekuenca e orës | Deri në 240 MHz |
RAM | 512 KB |
Kunjat | 30 (në varësi të modelit) |
Pajisjet periferike | Prekje kapacitiv, ADC (konvertues analog në dixhital), DAC (konvertues dixhital në analog), 12C (qark i integruar), UART (marrës/transmetues asinkron universal), CAN 2.0 (Netwokr i zonës së kontrollit), SPI (Ndërfaqja periferike serike) , 12S (Integruar Inter-IC Tingulli), RMII (Ndërfaqja e reduktuar e pavarur nga media), PWM (modulimi i gjerësisë së pulsit) dhe më shumë. |
Butonat e integruar | Butonat RESET dhe BOOT |
LED të integruara | LED i integruar blu i lidhur me GPIO2; LED i kuq i integruar që tregon se bordi po ndizet |
USB në UART urë |
CP2102 |
Ajo vjen me një ndërfaqe microUSB që mund ta përdorni për të lidhur tabelën me kompjuterin tuaj për të ngarkuar kodin ose për të përdorur energjinë.
Ai përdor çipin CP2102 (USB në UART) për të komunikuar me kompjuterin tuaj nëpërmjet një porti COM duke përdorur një ndërfaqe serike. Një tjetër çip i njohur është CH340. Kontrolloni se cili është konverteri i çipit USB në UART në bordin tuaj sepse do t'ju duhet të instaloni drejtuesit e kërkuar në mënyrë që kompjuteri juaj të mund të komunikojë me bordin (më shumë informacion rreth kësaj më vonë në këtë udhëzues).
Kjo tabelë vjen gjithashtu me një buton RESET (mund të emërtohet EN) për të rifilluar tabelën dhe një buton BOOT për ta vendosur tabelën në modalitetin e ndezjes (i disponueshëm për të marrë kodin). Vini re se disa tabela mund të mos kenë një buton BOOT.
Ajo vjen gjithashtu me një LED blu të integruar që lidhet brenda me GPIO 2. Kjo LED është e dobishme për korrigjimin e gabimeve për të dhënë një lloj prodhimi fizik vizual. Ekziston edhe një LED i kuq që ndizet kur i jepni rrymë bordit.ESP32 Pinout
Pajisjet periferike ESP32 përfshijnë:
- 18 kanale të konvertuesit analog-në-dixhital (ADC).
- 3 ndërfaqe SPI
- 3 ndërfaqe UART
- 2 ndërfaqe I2C
- 16 kanale daljeje PWM
- 2 konvertues dixhital në analog (DAC)
- 2 ndërfaqe I2S
- 10 GPIO me sensorë kapacitiv
Karakteristikat ADC (konvertuesi analog në dixhital) dhe DAC (konvertuesi dixhital në analog) u caktohen kunjave specifike statike. Sidoqoftë, ju mund të vendosni se cilat kunja janë UART, I2C, SPI, PWM, etj - thjesht duhet t'i caktoni ato në kod. Kjo është e mundur për shkak të veçorisë së shumëfishimit të çipit ESP32.
Megjithëse ju mund të përcaktoni vetitë e kunjave në softuer, ka kunja të caktuara si parazgjedhje, siç tregohet në figurën e mëposhtmePër më tepër, ka kunja me karakteristika specifike që i bëjnë ato të përshtatshme ose jo për një projekt të caktuar. Tabela e mëposhtme tregon se cilat kunja janë më të mira për t'u përdorur si hyrje, dalje dhe cilat duhet të jeni të kujdesshëm.
Kunjat e theksuara me jeshile janë në rregull për t'u përdorur. Ato të theksuara me të verdhë janë në rregull për t'u përdorur, por duhet t'i kushtoni vëmendje sepse mund të kenë një sjellje të papritur kryesisht në momentin e nisjes. Kunjat e theksuara me të kuqe nuk rekomandohen të përdoren si hyrje ose dalje.
GP IO | Input | Prodhimi | Shënime |
0 | të tërhequr lart | OK | nxjerr sinjalin PWM në nisje, duhet të jetë LOW për të hyrë në modalitetin e ndezjes |
1 | Pin TX | OK | korrigjimi i daljes në nisje |
2 | OK | OK | i lidhur me LED në bord, duhet të lihet lundrues ose LOW për të hyrë në modalitetin e ndezjes |
3 | OK | Pin RX | LARTË në ngritje |
4 | OK | OK | |
5 | OK | OK | nxjerr sinjalin PWM në boot, pinin e rripit |
12 | OK | OK | çizma dështon nëse tërhiqet lart, kunja lidhëse |
13 | OK | OK | |
14 | OK | OK | nxjerr sinjalin PWM në nisje |
15 | OK | OK | nxjerr sinjalin PWM në boot, pinin e rripit |
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 | vetëm hyrje | |
35 | OK | vetëm hyrje | |
36 | OK | vetëm hyrje | |
39 | OK | vetëm hyrje |
Vazhdoni të lexoni për një analizë më të detajuar dhe të thellë të GPIO-ve ESP32 dhe funksioneve të tij.
Fut vetëm kunjat
GPIO 34 deri në 39 janë GPI - futni vetëm kunjat e hyrjes. Këto kunja nuk kanë rezistorë të brendshëm tërheqës ose zbritës. Ato nuk mund të përdoren si dalje, prandaj përdorni këto kunja vetëm si hyrje:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Blic SPI i integruar në ESP-WROOM-32
GPIO 6 deri në GPIO 11 janë të ekspozuara në disa borde zhvillimi ESP32. Megjithatë, këto kunja janë të lidhura me blicin e integruar SPI në çipin ESP-WROOM-32 dhe nuk rekomandohen për përdorime të tjera. Pra, mos përdorni këto kunja në projektet tuaja:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
GPIO me prekje kapacitive
ESP32 ka 10 sensorë të brendshëm kapacitiv të prekjes. Këto mund të ndjejnë ndryshime në çdo gjë që mban një ngarkesë elektrike, si lëkura e njeriut. Kështu që ata mund të zbulojnë variacionet e shkaktuara kur prekin GPIO me gisht. Këto kunja mund të integrohen lehtësisht në jastëkë kapacitiv dhe të zëvendësojnë butonat mekanikë. Kunjat me prekje kapacitive mund të përdoren gjithashtu për të zgjuar ESP32 nga gjumi i thellë. Ata sensorë të brendshëm të prekjes janë të lidhur me këto 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)
Konvertuesi analog në dixhital (ADC)
ESP32 ka kanale hyrëse ADC 18 x 12 bit (ndërsa ESP8266 ka vetëm ADC 1x 10 bit). Këto janë GPIO që mund të përdoren si ADC dhe kanalet përkatëse:
- 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)
Shënim: Kunjat ADC2 nuk mund të përdoren kur përdoret Wi-Fi. Pra, nëse jeni duke përdorur Wi-Fi dhe keni probleme për të marrë vlerën nga një ADC2 GPIO, mund të konsideroni përdorimin e një ADC1 GPIO në vend të kësaj. Kjo duhet të zgjidhë problemin tuaj.
Kanalet hyrëse ADC kanë një rezolucion 12-bit. Kjo do të thotë që ju mund të merrni lexime analoge që variojnë nga 0 në 4095, në të cilat 0 korrespondon me 0V dhe 4095 në 3.3V. Ju gjithashtu mund të vendosni rezolucionin e kanaleve tuaja në kod dhe në diapazonin ADC.
Kunjat ADC ESP32 nuk kanë një sjellje lineare. Ju ndoshta nuk do të jeni në gjendje të dalloni midis 0 dhe 0.1 V, ose midis 3.2 dhe 3.3 V. Duhet ta keni parasysh këtë kur përdorni kunjat ADC. Do të merrni një sjellje të ngjashme me atë të paraqitur në figurën e mëposhtme.Konvertuesi dixhital në analog (DAC)
Ka kanale DAC 2 x 8 bit në ESP32 për të kthyer sinjalet dixhitale në vëllim analogtage daljet e sinjalit. Këto janë kanalet DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
Ekziston mbështetje RTC GPIO në ESP32. GPIO-të e drejtuara në nënsistemin RTC me fuqi të ulët mund të përdoren kur ESP32 është në gjumë të thellë. Këto RTC GPIO mund të përdoren për të zgjuar ESP32 nga gjumi i thellë kur është Ultra Low
Bashkëprocesori i energjisë (ULP) po funksionon. GPIO-të e mëposhtme mund të përdoren si një burim i jashtëm zgjimi.
- 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
Kontrolluesi LED PWM ESP32 ka 16 kanale të pavarura që mund të konfigurohen për të gjeneruar sinjale PWM me veti të ndryshme. Të gjitha kunjat që mund të veprojnë si dalje mund të përdoren si kunja PWM (GPIO 34 deri në 39 nuk mund të gjenerojnë PWM).
Për të vendosur një sinjal PWM, duhet të përcaktoni këto parametra në kod:
- Frekuenca e sinjalit;
- Cikli i punës;
- kanal PWM;
- GPIO ku dëshironi të nxirrni sinjalin.
I2C
ESP32 ka dy kanale I2C dhe çdo pin mund të vendoset si SDA ose SCL. Kur përdorni ESP32 me Arduino IDE, kunjat e parazgjedhura të I2C janë:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Nëse dëshironi të përdorni kunja të tjera kur përdorni bibliotekën me tela, thjesht duhet të telefononi:
Wire.begin (SDA, SCL);
SPI
Si parazgjedhje, hartëzimi i pinit për SPI është:
SPI | DAWDLE | Miso | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Ndërpret
Të gjitha GPIO mund të konfigurohen si ndërprerje.
Kunjat e rripave
Çipi ESP32 ka kunjat e mëposhtme të rripit:
- GPIO 0 (duhet të jetë i ulët për të hyrë në modalitetin e nisjes)
- GPIO 2 (duhet të jetë lundrues ose i ulët gjatë nisjes)
- GPIO 4
- GPIO 5 (duhet të jetë LARTË gjatë nisjes)
- GPIO 12 (duhet të jetë i ulët gjatë nisjes)
- GPIO 15 (duhet të jetë LARTË gjatë nisjes)
Këto përdoren për të vendosur ESP32 në modalitetin e ngarkuesit ose ndezjes. Në shumicën e tabelave të zhvillimit me USB/Serial të integruar, nuk keni nevojë të shqetësoheni për gjendjen e këtyre kunjave. Bordi i vendos kunjat në gjendjen e duhur për ndezje ose modalitetin e nisjes. Më shumë informacion mbi zgjedhjen e modalitetit të nisjes ESP32 mund të gjeni këtu.
Megjithatë, nëse keni pajisje periferike të lidhura me ato kunja, mund të keni vështirësi në përpjekjen për të ngarkuar kodin e ri, ndezjen e ESP32 me firmware të ri ose rivendosjen e tabelës. Nëse keni disa pajisje periferike të lidhura me kunjat e rripit dhe keni probleme me ngarkimin e kodit ose ndezjen e ESP32, mund të jetë për shkak se ato pajisje periferike po e pengojnë ESP32 të hyjë në modalitetin e duhur. Lexoni dokumentacionin e përzgjedhjes së modalitetit të nisjes për t'ju udhëhequr në drejtimin e duhur. Pas rivendosjes, ndezjes ose nisjes, ato kunja funksionojnë siç pritej.
Kunjat LARTË në Boot
Disa GPIO e ndryshojnë gjendjen e tyre në LARTË ose nxjerrin sinjale PWM gjatë nisjes ose rivendosjes.
Kjo do të thotë që nëse keni dalje të lidhura me këto GPIO, mund të merrni rezultate të papritura kur ESP32 rivendoset ose niset.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 në GPIO 11 (i lidhur me memorien flash SPI të integruar ESP32 – nuk rekomandohet të përdoret).
- GPIO 14
- GPIO 15
Aktivizo (EN)
Enable (EN) është kunja e aktivizimit të rregullatorit 3.3V. Është tërhequr lart, ndaj lidheni me tokën për të çaktivizuar rregullatorin 3.3V. Kjo do të thotë që mund ta përdorni këtë kunj të lidhur me një buton për të rifilluar ESP32, p.shample.
Rryma e GPIO është tërhequr
Rryma maksimale absolute e tërhequr për GPIO është 40 mA sipas seksionit "Kushtet e rekomanduara të funksionimit" në fletën e të dhënave ESP32.
Sensori i integruar i efektit të sallës ESP32
ESP32 përmban gjithashtu një sensor të integruar të efektit të sallës që zbulon ndryshimet në fushën magnetike në rrethinën e tij
ESP32 Arduino IDE
Ekziston një shtesë për Arduino IDE që ju lejon të programoni ESP32 duke përdorur Arduino IDE dhe gjuhën e tij të programimit. Në këtë tutorial ne do t'ju tregojmë se si të instaloni tabelën ESP32 në Arduino IDE nëse jeni duke përdorur Windows, Mac OS X ose Linux.
Parakushtet: Arduino IDE i instaluar
Përpara se të filloni këtë procedurë instalimi, duhet të keni të instaluar Arduino IDE në kompjuterin tuaj. Ekzistojnë dy versione të Arduino IDE që mund të instaloni: versioni 1 dhe versioni 2.
Mund të shkarkoni dhe instaloni Arduino IDE duke klikuar në lidhjen e mëposhtme: arduino.cc/en/Main/Software
Cilin version Arduino IDE rekomandojmë? Për momentin ka disa plugins për ESP32 (si SPIFFS FileShtojca e ngarkuesit të sistemit) që nuk mbështeten ende në Arduino 2. Pra, nëse keni ndërmend të përdorni shtesën SPIFFS në të ardhmen, ju rekomandojmë të instaloni versionin e vjetër 1.8.X. Thjesht duhet të lëvizni poshtë në faqen e softuerit Arduino për ta gjetur atë.
Instalimi i shtesës ESP32 në Arduino IDE
Për të instaluar tabelën ESP32 në Arduino IDE, ndiqni këto udhëzime:
- Në Arduino IDE-në tuaj, shkoni te File> Preferencat
- Futni sa vijon në “Menaxherin Shtesë të Bordit URLfusha s”:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Pastaj, klikoni butonin "OK":Shënim: nëse i keni tashmë pllakat ESP8266 URL, ju mund të veçoni URLs me presje si më poshtë:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Hapni menaxherin e bordeve. Shkoni te Veglat > Bordi > Menaxheri i Bordeve…Kërko për ESP32 and press install button for the “ESP32 by Espressif Systems“:
Kjo është ajo. Duhet të instalohet pas disa sekondash.
Ngarko kodin e testit
Lidheni bordin ESP32 me kompjuterin tuaj. Me Arduino IDE të hapur, ndiqni këto hapa:
- Zgjidhni Bordin tuaj në menunë Tools > Board (në rastin tim është Moduli ESP32 DEV)
- Zgjidhni Portin (nëse nuk e shihni portën COM në Arduino IDE, duhet të instaloni drejtuesit e CP210x USB në UART Bridge VCP):
- Hapni shembullin e mëposhtëmample nën File > P.shamples > WiFi
(ESP32) > WiFiScan - Një skicë e re hapet në Arduino IDE tuaj:
- Shtypni butonin Ngarko në Arduino IDE. Prisni disa sekonda derisa kodi të përpilohet dhe të ngarkohet në bordin tuaj.
- Nëse gjithçka shkoi siç pritej, duhet të shihni një "Ngarkimi u krye". mesazh.
- Hapni Monitorin Serial Arduino IDE me një shpejtësi baud prej 115200:
- Shtypni butonin ESP32 në bord Aktivizo dhe do të shihni rrjetet e disponueshme pranë ESP32 tuaj:
Zgjidhja e problemeve
Nëse përpiqeni të ngarkoni një skicë të re në ESP32 tuaj dhe ju merrni këtë mesazh gabimi "Ndodhi një gabim fatal: Lidhja me ESP32 dështoi: Koha e kaluar... Po lidhet...". Do të thotë që ESP32 juaj nuk është në modalitetin ndezës/ngarkim.
Pasi të keni zgjedhur emrin e duhur të bordit dhe COM por, ndiqni këto hapa:
Mbani të shtypur butonin "BOOT" në bordin tuaj ESP32
- Shtypni butonin "Ngarko" në Arduino IDE për të ngarkuar skicën tuaj:
- Pasi të shihni "Lidhja ...". mesazh në Arduino IDE, lëshoni gishtin nga butoni "BOOT":
- Pas kësaj, duhet të shihni mesazhin "U krye ngarkimi".
Kjo është ajo. ESP32 juaj duhet të ketë skicën e re që po funksionon. Shtypni butonin "ENABLE" për të rifilluar ESP32 dhe për të ekzekutuar skicën e re të ngarkuar.
Ju gjithashtu do të duhet të përsërisni sekuencën e butonave sa herë që dëshironi të ngarkoni një skicë të re.
Projekti 1 ESP32 Inputet Outputet
Në këtë udhëzues për fillimin, do të mësoni se si të lexoni hyrjet dixhitale si çelësi i butonave dhe të kontrolloni daljet dixhitale si një LED duke përdorur ESP32 me Arduino IDE.
Parakushtet
Ne do të programojmë ESP32 duke përdorur Arduino IDE. Pra, sigurohuni që të keni të instaluar shtesën e bordeve ESP32 përpara se të vazhdoni:
- Instalimi i shtesës ESP32 në Arduino IDE
Daljet dixhitale të kontrollit ESP32
Së pari, ju duhet të vendosni GPIO që dëshironi të kontrolloni si një OUTPUT. Përdorni funksionin pinMode() si më poshtë:
pinMode (GPIO, OUTPUT);
Për të kontrolluar një dalje dixhitale, thjesht duhet të përdorni funksionin digitalWrite(), i cili pranon si argumente, GPIO (numrin int) të cilit i referoheni dhe gjendjen, LARTË ose LOW.
digitalWrite (GPIO, STATE);
Të gjithë GPIO-të mund të përdoren si dalje, përveç GPIO-ve 6 deri 11 (të lidhura me flashin e integruar SPI) dhe GPIO-të 34, 35, 36 dhe 39 (futen vetëm GPIO-të);
Mësoni më shumë rreth ESP32 GPIO: ESP32 GPIO Reference Guide
ESP32 Lexoni hyrjet dixhitale
Së pari, vendosni GPIO që dëshironi të lexoni si INPUT, duke përdorur funksionin pinMode() si më poshtë:
pinMode (GPIO, INPUT);
Për të lexuar një hyrje dixhitale, si një buton, përdorni funksionin digitalRead(), i cili pranon si argument, GPIO (numri int) të cilit i referoheni.
leximi dixhital (GPIO);
Të gjithë GPIO-të ESP32 mund të përdoren si hyrje, përveç GPIO-ve 6 deri në 11 (të lidhura me blicin e integruar SPI).
Mësoni më shumë rreth ESP32 GPIO: ESP32 GPIO Reference Guide
Projekti Shembample
Për t'ju treguar se si të përdorni hyrjet dhe daljet dixhitale, ne do të ndërtojmë një projekt të thjeshtë p.shample me një buton dhe një LED. Ne do të lexojmë gjendjen e butonit dhe do të ndezim LED-në në përputhje me rrethanat siç ilustrohet në figurën e mëposhtme.
Pjesët e nevojshme
Këtu është një listë e pjesëve që ju nevojiten për të ndërtuar qarkun:
- ESP32 DEVKIT V1
- LED 5 mm
- Rezistencë 220 Ohm
- pushbutton
- Rezistencë 10k Ohm
- Breadboard
- Telat kërcyes
Diagrami Skematik
Para se të vazhdoni, duhet të montoni një qark me një LED dhe një buton.
Ne do të lidhim LED-in me GPIO 5 dhe butonin me shtypje me GPIO 4.Kodi
Hapni kodin Project_1_ESP32_Inputs_Outputs.ino në arduino IDESi funksionon Kodi
Në dy rreshtat e mëposhtëm, ju krijoni variabla për të caktuar kunjat:
Butoni është i lidhur me GPIO 4 dhe LED është i lidhur me GPIO 5. Kur përdorni Arduino IDE me ESP32, 4 korrespondon me GPIO 4 dhe 5 korrespondon me GPIO 5.
Më pas, ju krijoni një variabël për të mbajtur gjendjen e butonit. Si parazgjedhje, është 0 (nuk shtypet).
butoni intState = 0;
Në setup(), ju inicializoni butonin si INPUT, dhe LED si OUTPUT.
Për këtë, ju përdorni funksionin pinMode() që pranon pinin të cilit i referoheni dhe modalitetin: INPUT ose OUTPUT.
pinMode (butonPin, INPUT);
pinMode (ledPin, OUTPUT);
Në loop() është vendi ku lexoni gjendjen e butonit dhe vendosni LED në përputhje me rrethanat.
Në rreshtin tjetër, ju lexoni gjendjen e butonit dhe e ruani atë në variablin buttonState.
Siç e kemi parë më parë, ju përdorni funksionin digitalRead().
buttonState = dixhitalLeximi (buttonPin);
Deklarata e mëposhtme if, kontrollon nëse gjendja e butonit është LARTË. Nëse është, ajo ndez LED duke përdorur funksionin digitalWrite() që pranon si argument ledPin-in dhe gjendjen LARTË.
nëse (buttonState == LARTË)Nëse gjendja e butonit nuk është e LARTË, ju fikni LED. Thjesht vendosni LOW si një argument të dytë në funksionin digitalWrite().
Ngarkimi i kodit
Përpara se të klikoni butonin e ngarkimit, shkoni te Tools > Board dhe zgjidhni tabelën :DOIT ESP32 DEVKIT V1.
Shkoni te Tools > Port dhe zgjidhni portën COM me të cilën është lidhur ESP32. Më pas, shtypni butonin e ngarkimit dhe prisni mesazhin "U krye ngarkimi".Shënim: Nëse shihni shumë pika (që lidhen…__…__) në dritaren e korrigjimit dhe mesazhin "Dështoi të lidhej me ESP32: Koha e pritjes për kokën e paketës mbaroi", kjo do të thotë që duhet të shtypni ESP32 në bord BOOT butonin pas pikave
fillojnë të shfaqen.Zgjidhja e problemeve
Demonstrimi
Pasi të keni ngarkuar kodin, provoni qarkun tuaj. LED juaj duhet të ndizet kur shtypni butonin:Dhe fikeni kur e lëshoni:
Projekti 2 Inputet analoge ESP32
Ky projekt tregon se si të lexoni hyrjet analoge me ESP32 duke përdorur Arduino IDE.
Leximi analog është i dobishëm për të lexuar vlerat nga rezistorët e ndryshueshëm si potenciometrat ose sensorët analogë.
Inputet analoge (ADC)
Leximi i një vlere analoge me ESP32 do të thotë që mund të matni vëllime të ndryshmetage niveleve ndërmjet 0 V dhe 3.3 V.
Vëllimitage matur më pas i caktohet një vlere ndërmjet 0 dhe 4095, në të cilën 0 V korrespondon me 0, dhe 3.3 V korrespondon me 4095. Çdo vëllimtage ndërmjet 0 V dhe 3.3 V do t'i jepet vlera përkatëse në mes.ADC është jolineare
Në mënyrë ideale, do të prisnit një sjellje lineare kur përdorni kunjat ADC ESP32.
Megjithatë, kjo nuk ndodh. Ajo që do të merrni është një sjellje siç tregohet në grafikun e mëposhtëm:Kjo sjellje do të thotë që ESP32 juaj nuk është në gjendje të dallojë 3.3 V nga 3.2 V.
Do të merrni të njëjtën vlerë për të dy vëllimettages: 4095.
E njëjta gjë ndodh për vëllim shumë të ulëttagvlerat e: për 0 V dhe 0.1 V do të merrni të njëjtën vlerë: 0. Duhet ta keni parasysh këtë kur përdorni kunjat ADC ESP32.
Funksioni analogRead().
Leximi i një hyrje analoge me ESP32 duke përdorur Arduino IDE është po aq i thjeshtë sa përdorimi i funksionit analogRead(). Ai pranon si argument, GPIO që dëshironi të lexoni:
analogLeximi (GPIO);
Vetëm 15 janë të disponueshëm në tabelën DEVKIT V1 (versioni me 30 GPIO).
Kapni majën e bordit tuaj ESP32 dhe gjeni kunjat ADC. Këto janë theksuar me një kufi të kuq në figurën më poshtë.Këto kunja hyrëse analoge kanë rezolucion 12-bit. Kjo do të thotë që kur lexoni një hyrje analoge, diapazoni i tij mund të ndryshojë nga 0 në 4095.
Shënim: kunjat ADC2 nuk mund të përdoren kur përdoret Wi-Fi. Pra, nëse jeni duke përdorur Wi-Fi dhe keni probleme për të marrë vlerën nga një ADC2 GPIO, mund të konsideroni përdorimin e një ADC1 GPIO në vend të kësaj, që duhet të zgjidhë problemin tuaj.
Për të parë se si gjithçka lidhet së bashku, do të bëjmë një ish të thjeshtëample për të lexuar një vlerë analoge nga një potenciometër.
Pjesët e nevojshme
Për këtë ishample, ju duhen pjesët e mëposhtme:
- Pllaka ESP32 DEVKIT V1
- Voltmetër
- Breadboard
- Telat kërcyes
Skematik
Lidhni një potenciometër në ESP32 tuaj. Kunja e mesme e potenciometrit duhet të lidhet me GPIO 4. Ju mund të përdorni diagramin skematik të mëposhtëm si referencë.Kodi
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Hapni kodin Project_2_ESP32_Inputs_Outputs.ino në arduino IDEKy kod thjesht lexon vlerat nga potenciometri dhe i printon ato vlera në Monitorin Serial.
Në kod, filloni duke përcaktuar GPIO me të cilin është lidhur potenciometri. Në këtë ishample, GPIO 4.Në setup(), inicializoni një komunikim serik me një shpejtësi baud prej 115200.
Në loop(), përdorni funksionin analogRead() për të lexuar hyrjen analoge nga potPin.
Në fund, printoni vlerat e lexuara nga potenciometri në monitorin serik.
Ngarkoni kodin e dhënë në ESP32 tuaj. Sigurohuni që të keni zgjedhur bordin e duhur dhe portën COM në menynë "Vegla".
Testimi i Example
Pas ngarkimit të kodit dhe shtypjes së butonit të rivendosjes së ESP32, hapni Monitorin Serial me një ritëm baud prej 115200. Rrotulloni potenciometrin dhe shikoni vlerat që ndryshojnë.Vlera maksimale që do të merrni është 4095 dhe vlera minimale është 0.
Përfundimi
Në këtë artikull ju keni mësuar se si të lexoni hyrjet analoge duke përdorur ESP32 me Arduino IDE. Në përmbledhje:
- Pllaka ESP32 DEVKIT V1 DOIT (versioni me 30 kunja) ka 15 kunja ADC që mund t'i përdorni për të lexuar hyrjet analoge.
- Këto kunja kanë një rezolucion prej 12 bit, që do të thotë se mund të merrni vlera nga 0 në 4095.
- Për të lexuar një vlerë në Arduino IDE, thjesht përdorni funksionin analogRead().
- Kunjat ADC ESP32 nuk kanë një sjellje lineare. Ju ndoshta nuk do të jeni në gjendje të dalloni midis 0 dhe 0.1 V, ose midis 3.2 dhe 3.3 V. Duhet ta keni parasysh këtë kur përdorni kunjat ADC.
Projekti 3 ESP32 PWM (Dalja analoge)
Në këtë tutorial do t'ju tregojmë se si të gjeneroni sinjale PWM me ESP32 duke përdorur Arduino IDE. Si një ishampLe të ndërtojmë një qark të thjeshtë që zbeh një LED duke përdorur kontrolluesin LED PWM të ESP32.Kontrollues PWM LED ESP32
ESP32 ka një kontrollues LED PWM me 16 kanale të pavarura që mund të konfigurohen për të gjeneruar sinjale PWM me veti të ndryshme.
Këtu janë hapat që duhet të ndiqni për të zbehur një LED me PWM duke përdorur Arduino IDE:
- Së pari, duhet të zgjidhni një kanal PWM. Ka 16 kanale nga 0 në 15.
- Pastaj, duhet të vendosni frekuencën e sinjalit PWM. Për një LED, një frekuencë prej 5000 Hz është e mirë për t'u përdorur.
- Ju gjithashtu duhet të vendosni rezolucionin e ciklit të funksionimit të sinjalit: keni rezolucion nga 1 në 16 bit. Ne do të përdorim rezolucionin 8-bit, që do të thotë se ju mund të kontrolloni ndriçimin LED duke përdorur një vlerë nga 0 në 255.
- Më pas, duhet të specifikoni se në cilat GPIO ose GPIO do të shfaqet sinjali. Për këtë ju do të përdorni funksionin e mëposhtëm:
ledcAttachPin (GPIO, kanal)
Ky funksion pranon dy argumente. E para është GPIO që do të nxjerrë sinjalin dhe e dyta është kanali që do të gjenerojë sinjalin. - Së fundi, për të kontrolluar ndriçimin LED duke përdorur PWM, përdorni funksionin e mëposhtëm:
ledcWrite (kanal, cikli i punës)
Ky funksion pranon si argument kanalin që gjeneron sinjalin PWM dhe ciklin e punës.
Pjesët e nevojshme
Për të ndjekur këtë tutorial ju nevojiten këto pjesë:
- Pllaka ESP32 DEVKIT V1
- LED 5 mm
- Rezistencë 220 Ohm
- Breadboard
- Telat kërcyes
Skematik
Lidhni një LED në ESP32 tuaj si në diagramin skematik të mëposhtëm. LED duhet të lidhet me GPIO 4.Shënim: ju mund të përdorni çdo pin që dëshironi, për sa kohë që mund të veprojë si një dalje. Të gjitha kunjat që mund të veprojnë si dalje mund të përdoren si kunja PWM. Për më shumë informacion rreth ESP32 GPIO, lexoni: ESP32 Pinout Referenca: Cilat kunja GPIO duhet të përdorni?
Kodi
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Hapni kodin Project_3_ESP32_PWM.ino në arduino IDEJu filloni duke përcaktuar pinin ku LED është ngjitur. Në këtë rast, LED është ngjitur në GPIO 4.
Pastaj, ju vendosni vetitë e sinjalit PWM. Ju përcaktoni një frekuencë prej 5000 Hz, zgjidhni kanalin 0 për të gjeneruar sinjalin dhe vendosni një rezolucion prej 8 bitësh. Ju mund të zgjidhni veçori të tjera, të ndryshme nga këto, për të gjeneruar sinjale të ndryshme PWM.
Në setup(), ju duhet të konfiguroni LED PWM me vetitë që keni përcaktuar më herët duke përdorur funksionin ledcSetup() që pranon si argumente, ledChannel, frekuencën dhe rezolucionin, si më poshtë:
Më pas, duhet të zgjidhni GPIO nga e cila do të merrni sinjalin. Për këtë përdorni funksionin ledcAttachPin() që pranon si argumente GPIO ku dëshironi të merrni sinjalin dhe kanalin që gjeneron sinjalin. Në këtë ishampLe, do të marrim sinjalin në ledPin GPIO, që korrespondon me GPIO 4. Kanali që gjeneron sinjalin është ledChannel, që korrespondon me kanalin 0.
Në ciklin, ju do të ndryshoni ciklin e punës midis 0 dhe 255 për të rritur ndriçimin LED.
Dhe pastaj, midis 255 dhe 0 për të ulur ndriçimin.
Për të vendosur ndriçimin e LED-it, thjesht duhet të përdorni funksionin ledcWrite() që pranon si argument kanalin që gjeneron sinjalin dhe ciklin e punës.
Duke qenë se ne përdorim rezolucionin 8-bit, cikli i punës do të kontrollohet duke përdorur një vlerë nga 0 në 255. Vini re se në funksionin ledcWrite() përdorim kanalin që gjeneron sinjalin dhe jo GPIO.
Testimi i Example
Ngarkoni kodin në ESP32 tuaj. Sigurohuni që keni zgjedhur bordin e duhur dhe portën COM. Shikoni qarkun tuaj. Duhet të keni një LED dimmer që rrit dhe ul ndriçimin.
Projekti 4 Sensori i lëvizjes PIR ESP32
Ky projekt tregon se si të zbulohet lëvizja me ESP32 duke përdorur një sensor lëvizjeje PIR. Zërmuesi do të lëshojë një alarm kur zbulohet lëvizja dhe do të ndalojë alarmin kur nuk zbulohet asnjë lëvizje për një kohë të paracaktuar (si p.sh. 4 sekonda)
Si funksionon sensori i lëvizjes HC-SR501
.Parimi i funksionimit të sensorit HC-SR501 bazohet në ndryshimin e rrezatimit infra të kuq në objektin lëvizës. Për t'u zbuluar nga sensori HC-SR501, objekti duhet të plotësojë dy kërkesa:
- Objekti po emeton në mënyrën infra të kuqe.
- Objekti lëviz ose dridhet
Pra:
Nëse një objekt lëshon rreze infra të kuqe por NUK lëviz (p.sh., një person qëndron pa lëvizur pa lëvizur), ai NUK zbulohet nga sensori.
Nëse një objekt lëviz, por NUK lëshon rreze infra të kuqe (p.sh. robot ose automjet), NUK zbulohet nga sensori.
Prezantimi i kohëmatësve
Në këtë ishample do të prezantojmë gjithashtu kohëmatës. Ne dëshirojmë që LED të qëndrojë ndezur për një numër të paracaktuar sekondash pasi të zbulohet lëvizja. Në vend që të përdorim një funksion delay() që bllokon kodin tuaj dhe nuk ju lejon të bëni asgjë tjetër për një numër të caktuar sekondash, ne duhet të përdorim një kohëmatës.Funksioni delay().
Ju duhet të njiheni me funksionin delay() pasi përdoret gjerësisht. Ky funksion është mjaft i thjeshtë për t'u përdorur. Ai pranon një numër të vetëm int si argument.
Ky numër përfaqëson kohën në milisekonda që programi duhet të presë derisa të kalojë në rreshtin tjetër të kodit.Kur bëni vonesë (1000) programi juaj ndalon në atë linjë për 1 sekondë.
Delay() është një funksion bllokues. Funksionet e bllokimit parandalojnë një program që të bëjë ndonjë gjë tjetër derisa të përfundojë ajo detyrë e veçantë. Nëse keni nevojë që disa detyra të kryhen në të njëjtën kohë, nuk mund të përdorni delay().
Për shumicën e projekteve, duhet të shmangni përdorimin e vonesave dhe të përdorni kohëmatës.
Funksioni millis().
Duke përdorur një funksion të quajtur millis() ju mund të ktheni numrin e milisekondave që kanë kaluar që nga fillimi i programit.Pse është i dobishëm ai funksion? Sepse duke përdorur disa matematikë, mund të verifikoni lehtësisht se sa kohë ka kaluar pa bllokuar kodin tuaj.
Pjesët e nevojshme
Për të ndjekur këtë tutorial ju nevojiten pjesët e mëposhtme
- Pllaka ESP32 DEVKIT V1
- Sensori i lëvizjes PIR (HC-SR501)
- Gumëzhitës aktiv
- Telat kërcyes
- Breadboard
SkematikShënim: Vëllimi i punëstage i HC-SR501 është 5V. Përdorni pinin Vin për ta fuqizuar atë.
Kodi
Përpara se të vazhdoni me këtë tutorial, duhet të keni të instaluar shtesën ESP32 në Arduino IDE. Ndiqni një nga udhëzimet e mëposhtme për të instaluar ESP32 në Arduino IDE, nëse nuk e keni bërë tashmë. (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Hapni kodin Project_4_ESP32_PIR_Motion_Sensor.ino në arduino IDE.
Demonstrimi
Ngarkoni kodin në bordin tuaj ESP32. Sigurohuni që keni zgjedhur bordin e duhur dhe portën COM. Ngarkoni hapat e referencës së kodit.
Hapni Monitorin Serial me një shpejtësi baud prej 115200.Lëvizni dorën përpara sensorit PIR. Sinjalizuesi duhet të ndizet dhe mesazhi printohet në Monitorin Serial duke thënë "U zbulua lëvizje! Alarmi sinjalizues".
Pas 4 sekondash, sinjalizuesi duhet të fiket.
Ndërprerësi i projektit 5 ESP32 Web Serveri
Në këtë projekt ju do të krijoni një të pavarur web server me një ESP32 që kontrollon daljet (dy LED) duke përdorur mjedisin e programimit Arduino IDE. Të web serveri është i përgjegjshëm për celularin dhe mund të aksesohet me çdo pajisje që si shfletues në rrjetin lokal. Ne do t'ju tregojmë se si të krijoni web server dhe si funksionon kodi hap pas hapi.
Projekti Përfundoiview
Para se të shkoni direkt në projekt, është e rëndësishme të përvijoni se çfarë kemi web serveri do ta bëjë, në mënyrë që të jetë më e lehtë të ndiqni hapat më vonë.
- Të web serveri që do të ndërtoni kontrollon dy LED të lidhura me ESP32 GPIO 26 dhe GPIO 27;
- Mund të përdorni ESP32 web server duke shtypur adresën IP ESP32 në një shfletues në rrjetin lokal;
- Duke klikuar butonat në tuaj web server ju mund të ndryshoni menjëherë gjendjen e çdo LED.
Pjesët e nevojshme
Për këtë tutorial do t'ju duhen pjesët e mëposhtme:
- Pllaka ESP32 DEVKIT V1
- LED 2 x 5 mm
- 2 x 200 Ohm rezistencë
- Breadboard
- Telat kërcyes
Skematik
Filloni duke ndërtuar qarkun. Lidhni dy LED me ESP32 siç tregohet në diagramin skematik të mëposhtëm - njëra LED e lidhur me GPIO 26 dhe tjetra me GPIO 27.
Shënim: Ne po përdorim tabelën ESP32 DEVKIT DOIT me 36 kunja. Përpara se të montoni qarkun, sigurohuni që të kontrolloni pinout për tabelën që po përdorni.Kodi
Këtu ne ofrojmë kodin që krijon ESP32 web server. Hap kodin Project_5_ESP32_Switch _Web_Server.ino në arduino IDE, por mos e ngarkoni akoma. Ju duhet të bëni disa ndryshime për ta bërë atë të funksionojë për ju.
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Vendosja e kredencialeve të rrjetit tuaj
Ju duhet të modifikoni linjat e mëposhtme me kredencialet e rrjetit tuaj: SSID dhe fjalëkalimin. Kodi është komentuar mirë se ku duhet të bëni ndryshimet.Ngarkimi i kodit
Tani, ju mund të ngarkoni kodin dhe dhe web serveri do të funksionojë menjëherë.
Ndiqni hapat e mëposhtëm për të ngarkuar kodin në ESP32:
- Lidheni bordin tuaj ESP32 në kompjuterin tuaj;
- Në Arduino IDE zgjidhni tabelën tuaj në Tools > Board (në rastin tonë ne përdorim tabelën ESP32 DEVKIT DOIT);
- Zgjidhni portën COM te Veglat > Porta.
- Shtypni butonin Upload në Arduino IDE dhe prisni disa sekonda derisa kodi të përpilohet dhe të ngarkohet në bordin tuaj.
- Prisni mesazhin "U krye ngarkimi".
Gjetja e adresës IP të ESP
Pasi të keni ngarkuar kodin, hapni Monitorin Serial me një shpejtësi baud prej 115200.Shtypni butonin ESP32 EN (rivendosje). ESP32 lidhet me Wi-Fi dhe nxjerr adresën IP të ESP në Monitorin Serial. Kopjojeni atë adresë IP, sepse ju nevojitet për të hyrë në ESP32 web server.
Duke hyrë në Web Serveri
Për të hyrë në web server, hapni shfletuesin tuaj, ngjitni adresën IP të ESP32 dhe do të shihni faqen e mëposhtme.
Shënim: Shfletuesi juaj dhe ESP32 duhet të lidhen me të njëjtin LAN.Nëse i hidhni një sy Monitorit Serial, mund të shihni se çfarë po ndodh në sfond. ESP merr një kërkesë HTTP nga një klient i ri (në këtë rast, shfletuesi juaj).
Ju gjithashtu mund të shihni informacione të tjera në lidhje me kërkesën HTTP.
Demonstrimi
Tani mund të provoni nëse jeni web serveri po punon si duhet. Klikoni butonat për të kontrolluar LED-të.Në të njëjtën kohë, mund t'i hidhni një sy Monitorit Serial për të parë se çfarë po ndodh në sfond. Për shembullampkështu, kur klikoni butonin për të aktivizuar GPIO 26, ESP32 merr një kërkesë në /26/on URL.
Kur ESP32 merr atë kërkesë, ai ndez LED-in e bashkangjitur me GPIO 26 dhe përditëson gjendjen e tij në web faqe.
Butoni për GPIO 27 funksionon në të njëjtën mënyrë. Provoni nëse funksionon siç duhet.
Si funksionon Kodi
Në këtë seksion do t'i hedhim një vështrim më të afërt kodit për të parë se si funksionon.
Gjëja e parë që duhet të bëni është të përfshini bibliotekën WiFi.Siç u përmend më parë, duhet të futni ssid-in dhe fjalëkalimin tuaj në rreshtat e mëposhtëm brenda thonjëzave të dyfishta.
Pastaj, ju vendosni tuajën web server në portin 80.
Rreshti i mëposhtëm krijon një variabël për të ruajtur kokën e kërkesës HTTP:
Më pas, ju krijoni variabla ndihmëse për të ruajtur gjendjen aktuale të rezultateve tuaja. Nëse dëshironi të shtoni më shumë rezultate dhe të ruani gjendjen e tij, duhet të krijoni më shumë variabla.
Ju gjithashtu duhet të caktoni një GPIO për secilin prej rezultateve tuaja. Këtu po përdorim GPIO 26 dhe GPIO 27. Ju mund të përdorni çdo GPIO tjetër të përshtatshëm.
konfigurimi ()
Tani, le të shkojmë në setup(). Së pari, ne fillojmë një komunikim serik me një shpejtësi baud prej 115200 për qëllime korrigjimi.Ju gjithashtu i përcaktoni GPIO-të tuaja si OUTPUT dhe i vendosni ato në LOW.
Rreshtat e mëposhtëm fillojnë lidhjen Wi-Fi me WiFi.begin (ssid, fjalëkalim), prisni për një lidhje të suksesshme dhe printoni adresën IP të ESP në Monitorin Serial.
lak ()
Në loop() ne programojmë se çfarë ndodh kur një klient i ri krijon një lidhje me web server.
ESP32 është gjithmonë duke dëgjuar për klientët në hyrje me linjën e mëposhtme:Kur të merret një kërkesë nga një klient, ne do t'i ruajmë të dhënat hyrëse. Cikli while që vijon do të funksionojë për sa kohë që klienti qëndron i lidhur. Ne nuk rekomandojmë ndryshimin e pjesës së mëposhtme të kodit nëse nuk e dini saktësisht se çfarë po bëni.
Seksioni tjetër i deklaratave if dhe else kontrollon se cili buton është shtypur në tuaj web faqe, dhe kontrollon rezultatet në përputhje me rrethanat. Siç e kemi parë më parë, ne bëjmë një kërkesë për të ndryshme URLs në varësi të butonit të shtypur.
Për shembullample, nëse keni shtypur butonin GPIO 26 ON, ESP32 merr një kërkesë në /26/ON URL (mund të shohim se ai informacion në kokën HTTP në Monitorin Serial). Pra, mund të kontrollojmë nëse titulli përmban shprehjen GET /26/on. Nëse përmban, ne ndryshojmë variablin output26state në ON, dhe ESP32 ndez LED.
Kjo funksionon në mënyrë të ngjashme për butonat e tjerë. Pra, nëse doni të shtoni më shumë rezultate, duhet të modifikoni këtë pjesë të kodit për t'i përfshirë ato.
Shfaqja e HTML web faqe
Gjëja tjetër që duhet të bëni, është krijimi i web faqe. ESP32 do t'i dërgojë një përgjigje shfletuesit tuaj me disa kode HTML për të ndërtuar web faqe.
Të web faqja i dërgohet klientit duke përdorur këtë shprehëse client.println(). Ju duhet të shkruani atë që dëshironi t'i dërgoni klientit si argument.
Gjëja e parë që duhet të dërgojmë është gjithmonë rreshti i mëposhtëm, që tregon se po dërgojmë HTML.Pastaj, rreshti i mëposhtëm bën web faqe e përgjegjshme në çdo web shfletuesi.
Dhe sa vijon përdoret për të parandaluar kërkesat në favicon. – Nuk duhet të shqetësoheni për këtë linjë.
Stilimi i Web Faqe
Më pas, ne kemi disa tekst CSS për të stiluar butonat dhe web pamja e faqes.
Ne zgjedhim fontin Helvetica, përcaktojmë përmbajtjen që do të shfaqet si një bllok dhe do të rreshtohet në qendër.Ne i stilojmë butonat tanë me ngjyrën #4CAF50, pa kufi, tekst në ngjyrë të bardhë dhe me këtë mbushje: 16px 40px. Ne gjithashtu vendosëm dekorimin e tekstit në asnjë, përcaktojmë madhësinë e shkronjave, margjinën dhe kursorin në një tregues.
Ne gjithashtu përcaktojmë stilin për një buton të dytë, me të gjitha vetitë e butonit që kemi përcaktuar më parë, por me një ngjyrë të ndryshme. Ky do të jetë stili për butonin e fikur.
Vendosja e Web Titulli i parë i faqes
Në rreshtin tjetër mund të vendosni titullin e parë të tuajën web faqe. Këtu kemi “ESP32 Web Server”, por ju mund ta ndryshoni këtë tekst në atë që dëshironi.Shfaqja e butonave dhe gjendjes përkatëse
Më pas, ju shkruani një paragraf për të shfaqur gjendjen aktuale të GPIO 26. Siç mund ta shihni, ne përdorim variablin output26State, në mënyrë që gjendja të përditësohet menjëherë kur kjo ndryshore ndryshon.Më pas, ne shfaqim butonin e ndezjes ose fikjes, në varësi të gjendjes aktuale të GPIO. Nëse gjendja aktuale e GPIO është e fikur, ne shfaqim butonin ON, nëse jo, ne shfaqim butonin OFF.
Ne përdorim të njëjtën procedurë për GPIO 27.
Mbyllja e Lidhjes
Së fundi, kur përgjigja përfundon, ne pastrojmë variablin header dhe ndalojmë lidhjen me klientin me client.stop().
Përfundimi
Në këtë tutorial ne ju kemi treguar se si të ndërtoni një web server me ESP32. Ne ju kemi treguar një ish të thjeshtëample që kontrollon dy LED, por ideja është që ato LED të zëvendësohen me një stafetë, ose ndonjë dalje tjetër që dëshironi të kontrolloni.
Projekti 6 RGB LED Web Serveri
Në këtë projekt do t'ju tregojmë se si të kontrolloni në distancë një LED RGB me një tabelë ESP32 duke përdorur një web server me një përzgjedhës ngjyrash.
Projekti Përfundoiview
Para se të fillojmë, le të shohim se si funksionon ky projekt:
- ESP32 web serveri shfaq një zgjedhës ngjyrash.
- Kur zgjidhni një ngjyrë, shfletuesi juaj bën një kërkesë në një URL që përmban parametrat R, G dhe B të ngjyrës së zgjedhur.
- ESP32 juaj merr kërkesën dhe ndan vlerën për çdo parametër të ngjyrës.
- Më pas, ai dërgon një sinjal PWM me vlerën përkatëse te GPIO që kontrollojnë LED RGB.
Si funksionojnë LED RGB?
Në një LED me katodë të përbashkët RGB, të tre LED-të ndajnë një lidhje negative (katodë). Të gjitha të përfshira në komplet janë RGB me katodë të zakonshme.Si të krijoni ngjyra të ndryshme?
Me një LED RGB, sigurisht që mund të prodhoni dritë të kuqe, jeshile dhe blu, dhe duke konfiguruar intensitetin e secilës LED, mund të prodhoni edhe ngjyra të tjera.
Për shembullampPër të prodhuar dritë thjesht blu, do të vendosni LED blu në intensitetin më të lartë dhe LED jeshile dhe të kuqe në intensitetin më të ulët. Për një dritë të bardhë, ju do të vendosni të tre LED në intensitetin më të lartë.
Përzierja e ngjyrave
Për të prodhuar ngjyra të tjera, mund t'i kombinoni tre ngjyrat në intensitete të ndryshme. Për të rregulluar intensitetin e çdo LED, mund të përdorni një sinjal PWM.
Për shkak se LED-et janë shumë afër njëra-tjetrës, sytë tanë shohin rezultatin e kombinimit të ngjyrave, në vend të tre ngjyrave individualisht.
Për të pasur një ide se si të kombinoni ngjyrat, hidhini një sy grafikut të mëposhtëm.
Kjo është grafiku më i thjeshtë i përzierjes së ngjyrave, por ju jep një ide se si funksionon dhe si të prodhoni ngjyra të ndryshme.Pjesët e nevojshme
Për këtë projekt ju nevojiten pjesët e mëposhtme:
- Pllaka ESP32 DEVKIT V1
- RGB LED
- 3 x rezistorë 220 ohm
- Telat kërcyes
- Breadboard
SkematikKodi
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
- Instalimi i shtesës ESP32 në Arduino IDE
Pas montimit të qarkut, hapni kodin
Projekti_6_RGB_LED_Web_Server.ino në arduino IDE.
Para se të ngarkoni kodin, mos harroni të futni kredencialet e rrjetit tuaj në mënyrë që ESP të mund të lidhet me rrjetin tuaj lokal.Si funksionon kodi
Skica ESP32 përdor bibliotekën WiFi.h.Rreshtat e mëposhtëm përcaktojnë variablat e vargut për të mbajtur parametrat R, G dhe B nga kërkesa.
Katër variablat e ardhshëm përdoren për të deshifruar kërkesën HTTP më vonë.
Krijoni tre variabla për GPIO që do të kontrollojnë parametrat e shiritit R, G dhe B. Në këtë rast ne përdorim GPIO 13, GPIO 12 dhe GPIO 14.
Këto GPIO duhet të nxjerrin sinjale PWM, kështu që ne fillimisht duhet të konfigurojmë vetitë PWM. Vendosni frekuencën e sinjalit PWM në 5000 Hz. Më pas, lidhni një kanal PWM për secilën ngjyrë
Dhe së fundi, vendosni rezolucionin e kanaleve PWM në 8-bit
Në setup(), caktoni vetitë PWM kanaleve PWM
Lidhni kanalet PWM në GPIO-të përkatëse
Seksioni i mëposhtëm i kodit shfaq zgjedhësin e ngjyrave në tuaj web faqe dhe bën një kërkesë bazuar në ngjyrën që keni zgjedhur.
Kur zgjidhni një ngjyrë, ju merrni një kërkesë me formatin e mëposhtëm.
Pra, ne duhet ta ndajmë këtë varg për të marrë parametrat R, G dhe B. Parametrat ruhen në variablat redString, greenString dhe blueString dhe mund të kenë vlera midis 0 dhe 255.Për të kontrolluar shiritin me ESP32, përdorni funksionin ledcWrite() për të gjeneruar sinjale PWM me vlerat e deshifruara nga HTTP kërkesë.
Shënim: mësoni më shumë rreth PWM me ESP32: Projekti 3 ESP32 PWM (Dalja analoge)
Për të kontrolluar shiritin me ESP8266, thjesht duhet të përdorim
funksioni analogWrite() për të gjeneruar sinjale PWM me vlerat e deshifruara nga kërkesa HTPP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Për shkak se i marrim vlerat në një variabël vargu, duhet t'i konvertojmë ato në numra të plotë duke përdorur metodën toInt().
Demonstrimi
Pasi të keni futur kredencialet e rrjetit tuaj, zgjidhni bordin e duhur dhe portën COM dhe ngarkoni kodin në ESP32. Hapat e referencës së kodit të ngarkimit.
Pas ngarkimit, hapni Monitorin Serial me një shpejtësi baud prej 115200 dhe shtypni butonin ESP Enable/Reset. Ju duhet të merrni adresën IP të bordit.Hapni shfletuesin tuaj dhe futni adresën IP të ESP. Tani, përdorni zgjedhësin e ngjyrave për të zgjedhur një ngjyrë për LED RGB.
Më pas, duhet të shtypni butonin "Ndrysho ngjyrën" që ngjyra të hyjë në fuqi.Për të fikur LED RGB, zgjidhni ngjyrën e zezë.
Ngjyrat më të forta (në krye të zgjedhësit të ngjyrave), janë ato që do të japin rezultate më të mira.
Projekti 7 Rele ESP32 Web Serveri
Përdorimi i një stafete me ESP32 është një mënyrë e shkëlqyeshme për të kontrolluar pajisjet shtëpiake me AC nga distanca. Ky tutorial shpjegon se si të kontrolloni një modul stafetë me ESP32.
Ne do të hedhim një vështrim se si funksionon një modul stafetë, si të lidhni stafetën me ESP32 dhe të ndërtojmë një web server për të kontrolluar një stafetë nga distanca.
Prezantimi i releve
Një stafetë është një ndërprerës që funksionon elektrike dhe si çdo çelës tjetër, ai mund të ndizet ose fiket, duke e lënë rrymën të kalojë ose jo. Mund të kontrollohet me volum të ulëttages, si 3.3V i ofruar nga ESP32 GPIO dhe na lejon të kontrollojmë volumin e lartëtagsi 12V, 24V ose voltage (230V në Evropë dhe 120V në SHBA).Në anën e majtë, ka dy grupe me tre priza për të lidhur volumin e lartëtages, dhe kunjat në anën e djathtë (volumi i ulëttage) lidheni me GPIO-të ESP32.
Rrjeti Voltage LidhjetModuli i stafetës i paraqitur në foton e mëparshme ka dy lidhëse, secila me tre priza: të zakonshme (COM), normalisht të mbyllura (NC) dhe normalisht të hapura (NO).
- COM: lidhni rrymën që dëshironi të kontrolloni (rrjeti voltage)
- NC (Normally Closed): konfigurimi normalisht i mbyllur përdoret kur dëshironi që stafeta të mbyllet si parazgjedhje. NC janë kunjat COM janë të lidhura, që do të thotë se rryma po rrjedh nëse nuk dërgoni një sinjal nga ESP32 në modulin e stafetës për të hapur qarkun dhe për të ndaluar rrjedhën e rrymës.
- NO (Normally Open): konfigurimi normalisht i hapur funksionon anasjelltas: nuk ka lidhje midis kunjave NO dhe COM, kështu që qarku prishet nëse nuk dërgoni një sinjal nga ESP32 për të mbyllur qarkun.
Kunjat e kontrollitVëllimi i ulëttagAna ka një grup prej katër kunjash dhe një grup prej tre kunjash. Kompleti i parë përbëhet nga VCC dhe GND për të fuqizuar modulin, dhe hyrja 1 (IN1) dhe hyrja 2 (IN2) për të kontrolluar përkatësisht reletë e poshtme dhe të sipërme.
Nëse moduli juaj i stafetës ka vetëm një kanal, do të keni vetëm një pin IN. Nëse keni katër kanale, do të keni katër kunja IN, e kështu me radhë.
Sinjali që dërgoni te kunjat IN, përcakton nëse stafeta është aktive apo jo. Rele aktivizohet kur hyrja shkon nën rreth 2V. Kjo do të thotë që ju do të keni skenarët e mëposhtëm:
- Konfigurimi normalisht i mbyllur (NC):
- Sinjali i LARTË - rryma po rrjedh
- Sinjali i ulët - rryma nuk rrjedh
- Konfigurimi normalisht i hapur (JO):
- Sinjali i LARTË - rryma nuk rrjedh
- Sinjali i ulët - rryma në rrjedhë
Ju duhet të përdorni një konfigurim normalisht të mbyllur kur rryma duhet të rrjedhë shumicën e rasteve dhe ju dëshironi ta ndaloni atë vetëm herë pas here.
Përdorni një konfigurim normalisht të hapur kur dëshironi që rryma të rrjedhë herë pas here (p.shample, ndize alamp herë pas here).
Zgjedhja e furnizimit me energji elektrikeGrupi i dytë i kunjave përbëhet nga kunjat GND, VCC dhe JD-VCC.
Pini JD-VCC fuqizon elektromagnetin e stafetës. Vini re se moduli ka një kapak kërcyes që lidh kunjat VCC dhe JD-VCC; ajo e paraqitur këtu është e verdhë, por e juaja mund të jetë me ngjyrë të ndryshme.
Me kapakun e kërcyesit të vendosur, kunjat VCC dhe JD-VCC janë të lidhura. Kjo do të thotë që elektromagneti i stafetës mundësohet drejtpërdrejt nga kunja e fuqisë ESP32, kështu që moduli i stafetës dhe qarqet ESP32 nuk janë fizikisht të izoluar nga njëri-tjetri.
Pa kapakun e kërcyesit, duhet të siguroni një burim të pavarur energjie për të fuqizuar elektromagnetin e stafetës përmes kunjit JD-VCC. Ky konfigurim izolon fizikisht reletë nga ESP32 me optobashkuesin e integruar të modulit, i cili parandalon dëmtimin e ESP32 në rast të thumbave elektrike.
SkematikParalajmërim: Përdorimi i vëllimit të lartëtagFurnizimet me energji elektrike mund të shkaktojnë lëndime serioze.
Prandaj, LED 5 mm përdoren në vend të vëllimit të furnizimit të lartëtage llamba në eksperiment. Nëse nuk jeni të njohur me voltagPyesni dikë që do t'ju ndihmojë. Gjatë programimit të ESP-së ose lidhjes së qarkut, sigurohuni që çdo gjë të jetë shkëputur nga voltage.Instalimi i Bibliotekës për ESP32
Për të ndërtuar këtë web server, ne përdorim ESPAsyncWebBiblioteka e serverit dhe Biblioteka AsyncTCP.
Instalimi i ESPAsyncWebBiblioteka e serverit
Ndiqni hapat e mëposhtëm për të instaluar ESPAsyncWebServeri biblioteka:
- Klikoni këtu për të shkarkuar ESPAsyncWebBiblioteka e serverit. Ju duhet të keni
një dosje .zip në dosjen tuaj Shkarkime - Hapni dosjen .zip dhe duhet të merrni ESPAsyncWebDosja server-master
- Riemërtoni dosjen tuaj nga ESPAsyncWebServer-master në ESPAsyncWebServeri
- Zhvendos ESPAsyncWebDosja e serverit në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
Përndryshe, në Arduino IDE-në tuaj, mund të shkoni te Sketch > Include
Biblioteka > Shto bibliotekën .ZIP… dhe zgjidhni bibliotekën që sapo keni shkarkuar.
Instalimi i Bibliotekës AsyncTCP për ESP32
Të ESPAsyncWebServeri Biblioteka kërkon AsyncTCP biblioteka për të punuar. Ndiqni
hapat e ardhshëm për të instaluar atë bibliotekë:
- Klikoni këtu për të shkarkuar bibliotekën AsyncTCP. Duhet të keni një dosje .zip në dosjen tuaj Shkarkime
- Hapni dosjen .zip dhe duhet të merrni dosjen AsyncTCP-master
1. Riemërtoni dosjen tuaj nga AsyncTCP-master në AsyncTCP
3. Zhvendosni dosjen AsyncTCP në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
4. Më në fund, rihapni Arduino IDE-në tuaj
Përndryshe, në Arduino IDE-në tuaj, mund të shkoni te Sketch > Include
Biblioteka > Shto bibliotekën .ZIP… dhe zgjidhni bibliotekën që sapo keni shkarkuar.
Kodi
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Pas instalimit të bibliotekave të kërkuara, hapni kodin Project_7_ESP32_Relay_Web_Server.ino në arduino IDE.
Para se të ngarkoni kodin, mos harroni të futni kredencialet e rrjetit tuaj në mënyrë që ESP të mund të lidhet me rrjetin tuaj lokal.Demonstrimi
Pasi të keni bërë ndryshimet e nevojshme, ngarkoni kodin në ESP32. Hapat e referencës së kodit të ngarkimit.
Hapni Monitorin Serial me një shpejtësi baud prej 115200 dhe shtypni butonin ESP32 EN për të marrë adresën e tij IP. Më pas, hapni një shfletues në rrjetin tuaj lokal dhe shkruani adresën IP të ESP32 për të hyrë në web server.
Hapni Monitorin Serial me një shpejtësi baud prej 115200 dhe shtypni butonin ESP32 EN për të marrë adresën e tij IP. Më pas, hapni një shfletues në rrjetin tuaj lokal dhe shkruani adresën IP të ESP32 për të hyrë në web server.Shënim: Shfletuesi juaj dhe ESP32 duhet të lidhen me të njëjtin LAN.
Ju duhet të merrni diçka si më poshtë me dy butona si numri i releve që keni përcaktuar në kodin tuaj.Tani, mund të përdorni butonat për të kontrolluar reletë tuaja duke përdorur telefonin inteligjent.
Project_8_Output_State_Synchronization_ Web_Serveri
Ky projekt tregon se si të kontrolloni daljet ESP32 ose ESP8266 duke përdorur a web server dhe një buton fizik njëkohësisht. Gjendja e daljes përditësohet në web faqe nëse është ndryshuar me butonin fizik ose web server.
Projekti Përfundoiview
Le të hedhim një vështrim të shpejtë se si funksionon projekti.ESP32 ose ESP8266 pret a web server që ju lejon të kontrolloni gjendjen e një daljeje;
- Gjendja aktuale e daljes shfaqet në web server;
- ESP është gjithashtu i lidhur me një buton fizik që kontrollon të njëjtën dalje;
- Nëse ndryshoni gjendjen e daljes duke përdorur butonin pushues fizik, gjendja e tij aktuale përditësohet gjithashtu në web server.
Në përmbledhje, ky projekt ju lejon të kontrolloni të njëjtin rezultat duke përdorur a web server dhe një buton shtypjeje njëkohësisht. Sa herë që ndryshon gjendja e daljes, web serveri është përditësuar.
Pjesët e nevojshme
Këtu është një listë e pjesëve që ju nevojiten për të ndërtuar qarkun:
- Pllaka ESP32 DEVKIT V1
- LED 5 mm
- Rezistenca 220 Ohm
- pushbutton
- Rezistencë 10k Ohm
- Breadboard
- Telat kërcyes
SkematikInstalimi i Bibliotekës për ESP32
Për të ndërtuar këtë web server, ne përdorim ESPAsyncWebBiblioteka e serverit dhe Biblioteka AsyncTCP. (Nëse e keni bërë tashmë këtë hap, mund të kaloni te hapi tjetër.)
Instalimi i ESPAsyncWebBiblioteka e serverit
Ndiqni hapat vijues për të instaluar ESPAsyncWebBiblioteka e serverit:
- Klikoni këtu për të shkarkuar ESPAsyncWebBiblioteka e serverit. Ju duhet të keni
një dosje .zip në dosjen tuaj Shkarkime - Hapni dosjen .zip dhe duhet të merrni ESPAsyncWebDosja server-master
- Riemërtoni dosjen tuaj nga ESPAsyncWebServer-master në ESPAsyncWebServeri
- Zhvendos ESPAsyncWebDosja e serverit në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
Përndryshe, në Arduino IDE-në tuaj, mund të shkoni te Sketch > Include
Biblioteka > Shto bibliotekën .ZIP… dhe zgjidhni bibliotekën që sapo keni shkarkuar.
Instalimi i Bibliotekës AsyncTCP për ESP32
ESPAsyncWebBiblioteka e serverit kërkon që biblioteka AsyncTCP të funksionojë. Ndiqni hapat e mëposhtëm për të instaluar atë bibliotekë:
- Klikoni këtu për të shkarkuar bibliotekën AsyncTCP. Duhet të keni një dosje .zip në dosjen tuaj Shkarkime
- Hapni dosjen .zip dhe duhet të merrni dosjen AsyncTCP-master
- Riemërtoni dosjen tuaj nga AsyncTCP-master në AsyncTCP
- Zhvendosni dosjen AsyncTCP në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
- Më në fund, rihapni Arduino IDE-në tuaj
Përndryshe, në Arduino IDE-në tuaj, mund të shkoni te Sketch > Include
Biblioteka > Shto bibliotekën .ZIP… dhe zgjidhni bibliotekën që sapo keni shkarkuar.
Kodi
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Pas instalimit të bibliotekave të kërkuara, hapni kodin
Project_8_Output_State_Synchronization_Web_Server.ino në arduino IDE.
Para se të ngarkoni kodin, mos harroni të futni kredencialet e rrjetit tuaj në mënyrë që ESP të mund të lidhet me rrjetin tuaj lokal.
Si funksionon Kodi
Gjendja e butonit dhe gjendja e daljes
Variabli ledState mban gjendjen e daljes LED. Për parazgjedhje, kur web serveri fillon, është i ulët.
ButoniState dhe lastButtonState përdoren për të zbuluar nëse butoni i shtypjes është shtypur apo jo.Butoni (web server)
Ne nuk kemi përfshirë HTML për të krijuar butonin në variablin index_html.
Kjo për shkak se ne duam të jemi në gjendje ta ndryshojmë atë në varësi të gjendjes aktuale LED që mund të ndryshohet gjithashtu me butonin.
Pra, ne kemi krijuar një vendmbajtes për butonin %BUTTONPLACEHOLDER% që do të zëvendësohet me tekst HTML për të krijuar butonin më vonë në kod (kjo bëhet në funksionin procesor()).procesor ()
Funksioni i procesorit() zëvendëson çdo mbajtës të vendit në tekstin HTML me vlerat aktuale. Së pari, kontrollon nëse tekstet HTML përmbajnë ndonjë
mbajtësit e vendeve %BUTTONPLACEHOLDER%.Pastaj, thirrni funksionin theoutputState() që kthen gjendjen aktuale të daljes. E ruajmë atë në variablin outputStateValue.
Pas kësaj, përdorni atë vlerë për të krijuar tekstin HTML për të shfaqur butonin me gjendjen e duhur:
Kërkesë HTTP GET për të ndryshuar gjendjen e daljes (JavaScript)
Kur shtypni butonin, thirret funksioni thetoggleCheckbox(). Ky funksion do të bëjë një kërkesë për të ndryshme URLs për të ndezur ose fikur LED.Për të ndezur LED, ajo bën një kërkesë në /update?state=1 URL:
Përndryshe, ai bën një kërkesë në /update?state=0 URL.
Kërkesë HTTP GET për të përditësuar gjendjen (JavaScript)
Për të mbajtur të përditësuar gjendjen e daljes në web server, ne thërrasim funksionin e mëposhtëm që bën një kërkesë të re në /state URL çdo sekondë.Trajtoni kërkesat
Pastaj, ne duhet të trajtojmë se çfarë ndodh kur ESP32 ose ESP8266 marrin kërkesa për ato URLs.
Kur merret një kërkesë në rrënjë /URL, ne dërgojmë faqen HTML si dhe procesorin.Rreshtat e mëposhtëm kontrollojnë nëse keni marrë një kërkesë në /update?state=1 ose /update?state=0 URL dhe ndryshon shtetin e udhëhequr në përputhje me rrethanat.
Kur merret një kërkesë në /state URL, ne dërgojmë gjendjen aktuale të daljes:
lak ()
Në loop(), ne heqim butonin me shtypje dhe ndezim ose fikim LED-në në varësi të vlerës së ledState e ndryshueshme.Demonstrimi
Ngarko kodin në bordin tuaj ESP32. Ngarko hapat e referencës së kodit.
Më pas, hapni Monitorin Serial me një shpejtësi baud prej 115200. Shtypni butonin EN/RST në bord për të marrë adresën IP.Hapni një shfletues në rrjetin tuaj lokal dhe shkruani adresën IP të ESP. Ju duhet të keni akses në web server siç tregohet më poshtë.
Shënim: Shfletuesi juaj dhe ESP32 duhet të lidhen me të njëjtin LAN.Ju mund të ndërroni butonin në web server për të ndezur LED.
Ju gjithashtu mund të kontrolloni të njëjtën LED me butonin fizik. Gjendja e tij do të përditësohet gjithmonë automatikisht në web server.
Projekti 9 ESP32 DHT11 Web Serveri
Në këtë projekt, do të mësoni se si të ndërtoni një ESP32 asinkron web server me DHT11 që shfaq temperaturën dhe lagështinë duke përdorur Arduino IDE.
Parakushtet
Të web server ne do të ndërtojmë përditësime leximet automatikisht pa nevojën për të rifreskuar web faqe.
Me këtë projekt do të mësoni:
- Si të lexoni temperaturën dhe lagështinë nga sensorët DHT;
- Ndërtoni një asinkron web server duke përdorur ESPAsyncWebBiblioteka e serverit;
- Përditësoni automatikisht leximet e sensorit pa pasur nevojë të rifreskoni web faqe.
Asinkron Web Serveri
Për të ndërtuar web serverin që do të përdorim ESPAsyncWebBiblioteka e serverit që ofron një mënyrë të thjeshtë për të ndërtuar një asinkron web server. Ndërtimi i një asinkroni web serveri ka disa advantagsiç përmendet në faqen e bibliotekës GitHub, si p.sh.
- "Trajtoni më shumë se një lidhje në të njëjtën kohë";
- "Kur dërgoni përgjigjen, jeni menjëherë gati për të trajtuar lidhje të tjera ndërsa serveri po kujdeset për dërgimin e përgjigjes në sfond";
- "Motor i thjeshtë i përpunimit të shablloneve për të trajtuar shabllonet";
Pjesët e nevojshme
Për të përfunduar këtë tutorial ju nevojiten pjesët e mëposhtme:
- Pllaka e zhvillimit ESP32
- Moduli DHT11
- Breadboard
- Telat kërcyes
SkematikInstalimi i bibliotekave
Ju duhet të instaloni disa biblioteka për këtë projekt:
- Të DHT dhe Sensori i unifikuar Adafruit Bibliotekat e drejtuesve për të lexuar nga sensori DHT.
- ESPAsyncWebServeri dhe TCP asinkron bibliotekat për të ndërtuar asinkronin web server.
Ndiqni udhëzimet e mëposhtme për të instaluar ato biblioteka:
Instalimi i bibliotekës së sensorëve DHT
Për të lexuar nga sensori DHT duke përdorur Arduino IDE, duhet të instaloni Biblioteka e sensorëve DHT. Ndiqni hapat e mëposhtëm për të instaluar bibliotekën.
- Klikoni këtu për të shkarkuar bibliotekën e sensorëve DHT. Duhet të keni një dosje .zip në dosjen tuaj Shkarkime
- Shkëputni dosjen .zip dhe duhet të merrni dosjen DHT-sensor-library-master
- Riemërtoni dosjen tuaj nga DHT-sensor-library-master në DHT_sensor
- Zhvendosni dosjen DHT_sensor në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
- Më në fund, rihapni Arduino IDE-në tuaj
Instalimi i drejtuesit të sensorit të unifikuar Adafruit
Ju gjithashtu duhet të instaloni Biblioteka e drejtuesit të sensorit të unifikuar Adafruit për të punuar me sensorin DHT. Ndiqni hapat e mëposhtëm për të instaluar bibliotekën.
- Klikoni këtu për të shkarkuar bibliotekën Adafruit Unified Sensor. Duhet të keni një dosje .zip në dosjen tuaj Shkarkime
- Hapni dosjen .zip dhe duhet të merrni dosjen Adafruit_sensor-master
- Riemërtoni dosjen tuaj nga Adafruit_sensor-master në Adafruit_sensor
- Zhvendosni dosjen Adafruit_sensor në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
- Më në fund, rihapni Arduino IDE-në tuaj
Instalimi i ESPAsyncWebBiblioteka e serverit
Ndiqni hapat e mëposhtëm për të instaluar ESPAsyncWebServeri biblioteka:
- Klikoni këtu për të shkarkuar ESPAsyncWebBiblioteka e serverit. Ju duhet të keni
një dosje .zip në dosjen tuaj Shkarkime - Zhzipni dosjen .zip dhe duhet
merrni ESPAsyncWebDosja server-master - Riemërtoni dosjen tuaj nga ESPAsyncWebServer-master në ESPAsyncWebServeri
- Zhvendos ESPAsyncWebDosja e serverit në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
Instalimi i Bibliotekës Async TCP për ESP32
Të ESPAsyncWebServeri Biblioteka kërkon AsyncTCP biblioteka për të punuar. Ndiqni hapat e mëposhtëm për të instaluar atë bibliotekë:
- Klikoni këtu për të shkarkuar bibliotekën AsyncTCP. Duhet të keni një dosje .zip në dosjen tuaj Shkarkime
- Hapni dosjen .zip dhe duhet të merrni dosjen AsyncTCP-master
- Riemërtoni dosjen tuaj nga AsyncTCP-master në AsyncTCP
- Zhvendosni dosjen AsyncTCP në dosjen tuaj të bibliotekave të instalimit të Arduino IDE
- Më në fund, rihapni Arduino IDE-në tuaj
Kodi
Ne do të programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni të instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDE
Pas instalimit të bibliotekave të kërkuara, hapni kodin
Projekt_9_ESP32_DHT11_Web_Server.ino në arduino IDE.
Para se të ngarkoni kodin, mos harroni të futni kredencialet e rrjetit tuaj në mënyrë që ESP të mund të lidhet me rrjetin tuaj lokal.Si funksionon Kodi
Në paragrafët e mëposhtëm do të shpjegojmë se si funksionon kodi. Vazhdoni të lexoni nëse doni të mësoni më shumë ose shkoni te seksioni Demonstrimi për të parë rezultatin përfundimtar.
Importimi i bibliotekave
Së pari, importoni bibliotekat e kërkuara. WiFi, ESPAsyncWebServeri dhe ESPAsyncTCP nevojiten për të ndërtuar web server. Bibliotekat Adafruit_Sensor dhe DHT nevojiten për të lexuar nga sensorët DHT11 ose DHT22.Përkufizimi i variablave
Përcaktoni GPIO me të cilin lidhet kunja e të dhënave DHT. Në këtë rast, është i lidhur me GPIO 4.Më pas, zgjidhni llojin e sensorit DHT që po përdorni. Në ish-in tonëample, ne jemi duke përdorur DHT22. Nëse jeni duke përdorur një lloj tjetër, thjesht duhet të hiqni komentin nga sensori dhe të komentoni të gjithë të tjerët.
Instantoni një objekt DHT me llojin dhe pinin që kemi përcaktuar më parë.Krijo një AsinkronWebObjekti i serverit në portën 80.
Lexoni funksionet e temperaturës dhe lagështisë
Ne kemi krijuar dy funksione: një për të lexuar temperaturën Ne kemi krijuar dy funksione: një për të lexuar temperaturën (readDHTTemperature()) dhe tjetri për të lexuar lagështinë (readDHTHhumidity()).Marrja e leximeve të sensorit është po aq e thjeshtë sa përdorimi Marrja e leximeve të sensorit është po aq e thjeshtë sa përdorimi i metodave readTemperature() dhe readHumidity() në objektin dht.
Ne kemi gjithashtu një kusht që kthen dy pika (–) në rast se sensori nuk arrin të marrë leximet.
Leximet kthehen si lloj vargu. Për të kthyer një float në një varg, përdorni funksionin String().
Si parazgjedhje, ne po lexojmë temperaturën në gradë Celsius. Për të marrë temperaturën në gradë Fahrenheit, komentoni temperaturën në Celsius dhe anuloni temperaturën në Fahrenheit, në mënyrë që të keni sa vijon:
Ngarko kodin
Tani, ngarkoni kodin në ESP32 tuaj. Sigurohuni që keni zgjedhur bordin e duhur dhe portën COM. Ngarkoni hapat e referencës së kodit.
Pas ngarkimit, hapni Monitorin Serial me një shpejtësi baud prej 115200. Shtypni butonin e rivendosjes ESP32. Adresa IP ESP32 duhet të printohet në serial monitoruar.Demonstrimi
Hapni një shfletues dhe shkruani adresën IP të ESP32. E juaja web serveri duhet të shfaqë leximet më të fundit të sensorit.
Shënim: Shfletuesi juaj dhe ESP32 duhet të lidhen me të njëjtin LAN.
Vini re se leximet e temperaturës dhe lagështisë përditësohen automatikisht pa pasur nevojë të rifreskoni web faqe.
Projekti_10_ESP32_OLED_Display
Ky projekt tregon se si të përdoret ekrani OLED SSD0.96 1306 inç me ESP32 duke përdorur Arduino IDE.
Prezantimi i ekranit OLED 0.96 inç
Të Ekran OLED që do të përdorim në këtë tutorial është modeli SSD1306: një ekran monocolor, 0.96 inç me 128×64 piksele siç tregohet në figurën e mëposhtme.Ekrani OLED nuk kërkon dritë prapa, gjë që rezulton në një kontrast shumë të bukur në mjedise të errëta. Për më tepër, pikselët e tij konsumojnë energji vetëm kur janë të ndezur, kështu që ekrani OLED konsumon më pak energji në krahasim me ekranet e tjerë.
Për shkak se ekrani OLED përdor protokollin e komunikimit I2C, instalimet elektrike janë shumë të thjeshta. Ju mund të përdorni tabelën e mëposhtme si referencë.
Pin OLED | ESP32 |
Vin | 3.3 V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
SkematikInstalimi i SSD1306 OLED Library – ESP32
Ka disa biblioteka të disponueshme për të kontrolluar ekranin OLED me ESP32.
Në këtë tutorial ne do të përdorim dy biblioteka Adafruit: Biblioteka Adafruit_SSD1306 dhe Biblioteka Adafruit_GFX.
Ndiqni hapat vijues për të instaluar ato biblioteka.
- Hapni Arduino IDE-në tuaj dhe shkoni te Sketch > Include Library > Manage Bibliotekat. Menaxheri i bibliotekës duhet të hapet.
- Shkruani "SSD1306" në kutinë e kërkimit dhe instaloni bibliotekën SSD1306 nga Adafruit.
- Pas instalimit të bibliotekës SSD1306 nga Adafruit, shkruani "GFX" në kutinë e kërkimit dhe instaloni bibliotekën.
- Pas instalimit të bibliotekave, rinisni Arduino IDE-në tuaj.
Kodi
Pas instalimit të bibliotekave të kërkuara, hapni Project_10_ESP32_OLED_Display.ino në arduino IDE. kodi
Ne do ta programojmë ESP32 duke përdorur Arduino IDE, prandaj sigurohuni që të keni instaluar shtesën ESP32 përpara se të vazhdoni: (Nëse e keni bërë tashmë këtë hap, mund të kaloni në hapin tjetër.)
Instalimi i shtesës ESP32 në Arduino IDESi funksionon Kodi
Importimi i bibliotekave
Së pari, duhet të importoni bibliotekat e nevojshme. Biblioteka Wire për të përdorur I2C dhe bibliotekat Adafruit për të shkruar në ekran: Adafruit_GFX dhe Adafruit_SSD1306.Inicializoni ekranin OLED
Pastaj, ju përcaktoni gjerësinë dhe lartësinë tuaj OLED. Në këtë ishampLe, ne jemi duke përdorur një ekran OLED 128×64. Nëse jeni duke përdorur madhësi të tjera, mund ta ndryshoni atë në variablat SCREEN_WIDTH dhe SCREEN_HEIGHT.Më pas, inicializoni një objekt ekrani me gjerësinë dhe lartësinë e përcaktuar më herët me protokollin e komunikimit I2C (&Wire).
Parametri (-1) do të thotë që ekrani juaj OLED nuk ka një pin RESET. Nëse ekrani juaj OLED ka një kunj RESET, ai duhet të lidhet me një GPIO. Në atë rast, duhet të kaloni numrin GPIO si parametër.
Në setup(), inicializoni Monitorin Serial në një shpejtësi baud prej 115200 për qëllime korrigjimi.Inicializoni ekranin OLED me metodën start() si më poshtë:
Ky fragment gjithashtu printon një mesazh në Monitorin Serial, në rast se nuk mund të lidhemi me ekranin.
Në rast se përdorni një ekran tjetër OLED, mund t'ju duhet të ndryshoni adresën OLED. Në rastin tonë, adresa është 0x3C.
Pas inicializimit të ekranit, shtoni një vonesë prej dy sekondash, në mënyrë që OLED të ketë kohë të mjaftueshme për të inicializuar përpara se të shkruani tekstin:
Pastroni ekranin, vendosni madhësinë e shkronjave, ngjyrën dhe shkruani tekstin
Pas inicializimit të ekranit, pastroni buferin e ekranit me metodën clearDisplay():
Para se të shkruani tekst, duhet të vendosni madhësinë e tekstit, ngjyrën dhe vendin ku do të shfaqet teksti në OLED.
Vendosni madhësinë e shkronjave duke përdorur metodën setTextSize():Vendosni ngjyrën e shkronjave me metodën setTextColor():
WHITE vendos fontin e bardhë dhe sfondin e zi.
Përcaktoni pozicionin ku fillon teksti duke përdorur metodën setCursor(x,y). Në këtë rast, ne po vendosim që teksti të fillojë nga koordinatat (0,0) - në këndin e sipërm majtas.Më në fund, mund ta dërgoni tekstin në ekran duke përdorur metodën println(), si më poshtë
Më pas, duhet të thërrisni metodën display() për të shfaqur në të vërtetë tekstin në ekran.
Biblioteka Adafruit OLED ofron metoda të dobishme për të lëvizur lehtësisht tekstin.
- startscrollright (0x00, 0x0F): lëvizni tekstin nga e majta në të djathtë
- startscrollleft(0x00, 0x0F): lëvizni tekstin nga e djathta në të majtë
- startscrolldiagright(0x00, 0x07): lëviz tekstin nga këndi i poshtëm i majtë në këndin e sipërm djathtas startscrolldiagleft(0x00, 0x07): lëviz tekstin nga këndi i poshtëm djathtas në këndin e sipërm të majtë
Ngarko kodin
Tani, ngarkoni kodin në ESP32. Hapat e referencës së kodit të ngarkimit.
Pas ngarkimit të kodit, OLED do të shfaqë tekstin lëvizës.
Dokumentet / Burimet
![]() |
Kompleti bazë fillestar LAFVIN ESP32 [pdf] Manuali i Udhëzimeve Kompleti bazë fillestar ESP32, ESP32, Kompleti bazë fillestar, Kompleti fillestar |