ESP32 Baza Startilo
Ilaro
Pakita Listo
ESP32 Enkonduko
Nova al ESP32? Komencu ĉi tie! La ESP32 estas serio de malaltkostaj kaj malalt-fortaj Sistemoj sur Blato (SoC) mikroregiloj evoluigitaj de Espressif, kiuj inkluzivas Wi-Fi kaj Bluetooth sendratajn kapablojn kaj dukernan procesoron. Se vi konas la ESP8266, la ESP32 estas ĝia posteulo, ŝarĝita kun multaj novaj funkcioj.Specifoj de ESP32
Se vi volas akiri iom pli teknika kaj specifa, vi povas rigardi la jenajn detalajn specifojn de la ESP32 (fonto: http://esp32.net/)—por pliaj detaloj, kontrolu la datumfolion):
- Sendrata konektebleco WiFi: 150.0 Mbps datumrapideco kun HT40
- Bluetooth: BLE (Bluetooth Low Energy) kaj Bluetooth Classic
- Procesoro: Tensilica Xtensa Dual-Core 32-bita LX6 mikroprocesoro, funkcianta ĉe 160 aŭ 240 MHz
- Memoro:
- ROM: 448 KB (por lanĉaj kaj kernaj funkcioj)
- SRAM: 520 KB (por datumoj kaj instrukcioj)
- RTC fas SRAM: 8 KB (por datumstokado kaj ĉefa CPU dum RTC Boot de la profunda dorma reĝimo)
- RTC malrapida SRAM: 8KB (por kunprocesora aliro dum profund-dorma reĝimo) eFuse: 1 Kbit (el kiu 256 bitoj estas uzitaj por la sistemo (MAC-adreso kaj pecetkonfiguracio) kaj la ceteraj 768 bitoj estas rezervitaj por klientaplikoj, inkluzive de Flash-Ĉifrado kaj Chip-ID)
Enigita fulmo: fulmo konektita interne per IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 kaj SD_DATA_1 sur ESP32-D2WD kaj ESP32-PICO-D4.
- 0 MiB (fritoj ESP32-D0WDQ6, ESP32-D0WD kaj ESP32-S0WD)
- 2 MiB (ESP32-D2WD peceto)
- 4 MiB (ESP32-PICO-D4 SiP-modulo)
Malalta Potenco: certigas, ke vi ankoraŭ povas uzi ADC-konvertojn, ekzample, dum profunda dormo.
Ekstercentra Enigo/Eligo:
- periferia interfaco kun DMA kiu inkluzivas kapacitan tuŝon
- ADCoj (Analog-al-Cifereca Konvertilo)
- DACoj (Digital-al-analoga Konvertilo)
- I²C (Inter-Integra Cirkvito)
- UART (Universala Nesinkrona Ricevilo/Dissendilo)
- SPI (Seria Perifera Interfaco)
- I²S (Integra Interĉipa Sono)
- RMII (Reduktita Media-Sendependa Interfaco)
- PWM (Puls-Larĝa modulado)
Sekureco: aparataj akceliloj por AES kaj SSL/TLS
ESP32-Evoluaj Estraroj
ESP32 rilatas al la nuda ESP32-peceto. Tamen, la esprimo "ESP32" ankaŭ estas uzita por rilati al ESP32-evoluaj tabuloj. Uzi nudajn blatojn de ESP32 ne estas facila aŭ praktika, precipe dum lernado, testado kaj prototipado. Plejofte, vi volos uzi ESP32-disvolvan tabulon.
Ni uzos la tabulon ESP32 DEVKIT V1 kiel referencon. La suba bildo montras la tabulon ESP32 DEVKIT V1, version kun 30 GPIO-pingloj.Specifoj - ESP32 DEVKIT V1
La sekva tabelo montras resumon de la funkcioj kaj specifoj de la tabulo ESP32 DEVKIT V1 DOIT:
Nombro da kernoj | 2 (dukerno) |
Wifi | 2.4 GHz ĝis 150 Mbits/s |
Bluetooth | BLE (Bluetooth Low Energy) kaj hereda Bluetooth |
Arkitekturo | 32 bitoj |
Horloĝfrekvenco | Ĝis 240 MHz |
RAM | 512 KB |
Pingloj | 30 (depende de la modelo) |
Ekstercentraloj | Kapacita tuŝo, ADC (analoga al cifereca transformilo), DAC (cifereca al analoga konvertilo), 12C (Inter-Integra Cirkvito), UART (universala nesinkrona ricevilo/dissendilo), CAN 2.0 (Regilo-Area Reto), SPI (Seria Perifera Interfaco) , 12S (Integrita Inter-IC Sono), RMII (Reduktita Amaskomunikilaro-Sendependa Interfaco), PWM (modulado de pulslarĝo), kaj pli. |
Enkonstruitaj butonoj | Butonoj RESET kaj BOOT |
Enkonstruitaj LED-oj | enkonstruita blua LED konektita al GPIO2; enkonstruita ruĝa LED kiu montras ke la tabulo estas funkciigita |
USB al UART ponto |
CP2102 |
Ĝi venas kun mikroUSB-interfaco, kiun vi povas uzi por konekti la tabulon al via komputilo por alŝuti kodon aŭ apliki potencon.
Ĝi uzas la CP2102-peceton (USB al UART) por komuniki kun via komputilo per COM-haveno uzante serian interfacon. Alia populara blato estas la CH340. Kontrolu kio estas la USB al UART-blato-konvertilo sur via tabulo ĉar vi devos instali la postulatajn ŝoforojn por ke via komputilo povu komuniki kun la tabulo (pli da informoj pri tio poste en ĉi tiu gvidilo).
Ĉi tiu tabulo ankaŭ venas kun RESET-butono (povas esti etikedita EN) por rekomenci la tabulon kaj BOOT-butonon por meti la tabulon en ekbrilan reĝimon (havebla por ricevi kodon). Notu, ke iuj tabuloj eble ne havas BOOT-butonon.
Ĝi ankaŭ venas kun enkonstruita blua LED, kiu estas interne konektita al GPIO 2. Ĉi tiu LED estas utila por sencimigi por doni ian vidan fizikan eliron. Ankaŭ estas ruĝa LED, kiu lumiĝas kiam vi provizas potencon al la tabulo.ESP32 Pinout
La ESP32-ekscentraloj inkluzivas:
- 18 Analog-al-Digital Konvertilo (ADC) kanaloj
- 3 SPI-interfacoj
- 3 UART-interfacoj
- 2 I2C-interfacoj
- 16 PWM-eligkanaloj
- 2 Cifereca-al-analoga Konvertiloj (DAC)
- 2 I2S-interfacoj
- 10 Kapacivaj sentantaj GPIOoj
La funkcioj de ADC (analoga al cifereca transformilo) kaj DAC (cifereca al analoga transformilo) estas asignitaj al specifaj senmovaj pingloj. Tamen, vi povas decidi, kiuj pingloj estas UART, I2C, SPI, PWM, ktp - vi nur bezonas asigni ilin en la kodo. Ĉi tio eblas pro la multipleksa trajto de la peceto ESP32.
Kvankam vi povas difini la propraĵojn de la pingloj en la programaro, ekzistas pingloj asignitaj defaŭlte kiel montrite en la sekva figuroAldone, estas pingloj kun specifaj trajtoj, kiuj igas ilin taŭgaj aŭ ne por aparta projekto. La sekva tabelo montras kiajn pinglojn estas plej bonaj por uzi kiel enigojn, elirojn kaj kiujn vi devas esti singarda.
La pingloj reliefigitaj en verdo estas bone por uzi. Tiuj elstarigitaj flava estas bone uzeblaj, sed vi devas atenti, ĉar ili eble havas neatenditan konduton ĉefe ĉe ekŝargo. La pingloj elstarigitaj ruĝe ne rekomendas uzi kiel enigoj aŭ eliroj.
GP IO | Enigo | Eligo | Notoj |
0 | tiris supren | OK | eligas PWM-signalon ĉe lanĉo, devas esti LOW por eniri fulmantan reĝimon |
1 | TX-pinglo | OK | sencimigi eligon ĉe lanĉo |
2 | OK | OK | konektita al enkonstruita LED, devas esti lasita flosanta aŭ LOW por eniri fulmantan reĝimon |
3 | OK | RX-pinglo | ALTE ĉe boto |
4 | OK | OK | |
5 | OK | OK | eligas PWM-signalon ĉe lanĉo, stringpinglon |
12 | OK | OK | boto malsukcesas se tirata alte, stringpinglo |
13 | OK | OK | |
14 | OK | OK | eligas PWM-signalon ĉe lanĉo |
15 | OK | OK | eligas PWM-signalon ĉe lanĉo, stringpinglon |
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 | nur enigo | |
35 | OK | nur enigo | |
36 | OK | nur enigo | |
39 | OK | nur enigo |
Daŭre legas por pli detala kaj profunda analizo de la ESP32 GPIO kaj ĝiaj funkcioj.
Enigu nur pinglojn
GPIOoj 34 ĝis 39 estas GPIoj - enigu nur pinglojn. Ĉi tiuj pingloj ne havas internajn tiri supren aŭ tiri malsupren rezistilojn. Ili ne povas esti uzataj kiel eliroj, do uzu ĉi tiujn pinglojn nur kiel enigojn:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI-fulmo integrita sur la ESP-WROOM-32
GPIO 6 al GPIO 11 estas elmontritaj en kelkaj ESP32-evoluaj tabuloj. Tamen, ĉi tiuj pingloj estas konektitaj al la integra SPI-fulmo sur la ESP-WROOM-32-peceto kaj ne estas rekomenditaj por aliaj uzoj. Do, ne uzu ĉi tiujn pinglojn en viaj projektoj:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapacivaj tuŝaj GPIOoj
La ESP32 havas 10 internajn kapacitajn tuŝsensilojn. Ĉi tiuj povas senti variadojn en io ajn, kio tenas elektran ŝargon, kiel la homa haŭto. Do ili povas detekti variadojn induktitajn tuŝante la GPIO-ojn per fingro. Ĉi tiuj pingloj povas esti facile integrigitaj en kapacitivajn kusenetojn kaj anstataŭigi mekanikajn butonojn. La kapacivaj tuŝpingloj ankaŭ povas esti uzataj por veki la ESP32 el profunda dormo. Tiuj internaj tuŝsensiloj estas konektitaj al ĉi tiuj GPIOoj:
- 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)
Analoga al Cifereca Konvertilo (ADC)
La ESP32 havas 18 x 12 bitojn ADC-enigkanalojn (dum la ESP8266 nur havas 1x 10 bitojn ADC). Ĉi tiuj estas la GPIO kiuj povas esti uzataj kiel ADC kaj respektivaj kanaloj:
- 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)
Notu: ADC2-pingloj ne povas esti uzataj kiam Wi-Fi estas uzata. Do, se vi uzas Wi-Fi kaj vi havas problemojn akiri la valoron de ADC2 GPIO, vi eble pripensos uzi ADC1 GPIO anstataŭe. Tio devus solvi vian problemon.
La ADC-enigkanaloj havas 12-bitan rezolucion. Ĉi tio signifas, ke vi povas akiri analogajn legaĵojn de 0 ĝis 4095, en kiuj 0 respondas al 0V kaj 4095 ĝis 3.3V. Vi ankaŭ povas agordi la rezolucion de viaj kanaloj sur la kodo kaj la ADC-gamo.
La ESP32 ADC-stiftoj ne havas linearan konduton. Vi verŝajne ne povos distingi inter 0 kaj 0.1V, aŭ inter 3.2 kaj 3.3V. Vi devas konservi tion en menso kiam vi uzas la ADC-pinglojn. Vi ricevos konduton similan al tiu montrita en la sekva figuro.Cifereca al Analoga Konvertilo (DAC)
Ekzistas 2 x 8 bitoj DAC-kanaloj sur la ESP32 por konverti ciferecajn signalojn en analogan voltage signalaj eliroj. Ĉi tiuj estas la DAC-kanaloj:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC-GPIOoj
Estas RTC GPIO-subteno sur la ESP32. La GPIOoj direktitaj al la RTC-malaltpotenca subsistemo povas esti uzitaj kiam la ESP32 estas en profunda dormo. Ĉi tiuj RTC-GPIOoj povas esti uzataj por veki la ESP32 el profunda dormo kiam la Ultra Low
Potenca (ULP) kunprocesoro funkcias. La sekvaj GPIOoj povas esti uzataj kiel ekstera vekfonto.
- 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
La ESP32 LED PWM-regilo havas 16 sendependajn kanalojn, kiuj povas esti agorditaj por generi PWM-signalojn kun malsamaj propraĵoj. Ĉiuj pingloj kiuj povas funkcii kiel produktaĵoj povas esti uzataj kiel PWM-stiftoj (GPIOoj 34 ĝis 39 ne povas generi PWM).
Por agordi signalon PWM, vi devas difini ĉi tiujn parametrojn en la kodo:
- Frekvenco de signalo;
- Devociklo;
- PWM-kanalo;
- GPIO kie vi volas eligi la signalon.
I2C
La ESP32 havas du I2C-kanalojn kaj ajna pinglo povas esti agordita kiel SDA aŭ SCL. Kiam vi uzas la ESP32 kun la Arduino IDE, la defaŭltaj I2C-pingloj estas:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Se vi volas uzi aliajn pinglojn kiam vi uzas la dratan bibliotekon, vi nur bezonas voki:
Wire.begin(SDA, SCL);
SPI
Defaŭlte, la bildmapado por SPI estas:
SPI | MOSI | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Interrompoj
Ĉiuj GPIOoj povas esti agorditaj kiel interrompoj.
Rimenado Pingloj
La ESP32-peceto havas la sekvajn rimenajn pinglojn:
- GPIO 0 (devas esti MALALTA por eniri ekreĝimon)
- GPIO 2 (devas esti flosanta aŭ LOW dum lanĉo)
- GPIO 4
- GPIO 5 (devas esti ALTA dum lanĉo)
- GPIO 12 (devas esti MALALTA dum lanĉo)
- GPIO 15 (devas esti ALTA dum lanĉo)
Ĉi tiuj estas uzataj por meti la ESP32 en ekŝargilon aŭ ekbrilan reĝimon. Sur la plej multaj evolutabuloj kun enkonstruita USB/Serialo, vi ne bezonas zorgi pri la stato de ĉi tiuj pingloj. La estraro metas la pinglojn en la ĝustan staton por ekbrilado aŭ ekŝarga reĝimo. Pliaj informoj pri la Elekto de Ŝarga Reĝimo de ESP32 troveblas ĉi tie.
Tamen, se vi havas ekstercentrajn konektitajn al tiuj pingloj, vi eble havas problemojn provi alŝuti novan kodon, ekbriligi la ESP32 kun nova firmvaro aŭ restarigi la tabulon. Se vi havas iujn ekstercentrajn konektitajn al la rimenaj pingloj kaj vi havas problemojn por alŝuti kodon aŭ ekbriligi la ESP32, eble tio estas ĉar tiuj ekstercentraj malhelpas la ESP32 eniri la ĝustan reĝimon. Legu la dokumentaron pri Boot Mode Selection por gvidi vin en la ĝusta direkto. Post restarigo, ekbrilado aŭ ekfunkciigo, tiuj pingloj funkcias kiel atendite.
Stiftoj ALTE ĉe Boot
Kelkaj GPIOoj ŝanĝas sian staton al ALTA aŭ eligas PWM-signalojn ĉe lanĉo aŭ rekomencigita.
Ĉi tio signifas, ke se vi havas elirojn konektitajn al ĉi tiuj GPIO-oj, vi eble ricevos neatenditajn rezultojn kiam la ESP32 rekomenciĝas aŭ ekfunkciigas.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 al GPIO 11 (konektita al la ESP32 integra SPI-memoro - ne rekomendita uzi).
- GPIO 14
- GPIO 15
Ebligu (EN)
Enable (EN) estas la ebliga pinglo de la 3.3V reguligisto. Ĝi estas tirita supren, do konektu al tero por malŝalti la 3.3V reguligilon. Ĉi tio signifas, ke vi povas uzi ĉi tiun pinglon konektitan al prembutono por rekomenci vian ESP32, ekzample.
GPIO nuna tirita
La absoluta maksimuma kurento ĉerpita per GPIO estas 40mA laŭ la sekcio "Rekomenditaj Funkciaj Kondiĉoj" en la datumfolio de ESP32.
ESP32 Enkonstruita Halefika Sensilo
La ESP32 ankaŭ havas enkonstruitan halefikan sensilon, kiu detektas ŝanĝojn en la magneta kampo en ĝia ĉirkaŭaĵo
ESP32 Arduino IDE
Estas aldonaĵo por la Arduino IDE, kiu permesas vin programi la ESP32 uzante la Arduino-IDE kaj ĝian programlingvon. En ĉi tiu lernilo ni montros al vi kiel instali la ESP32-tabulon en Arduino IDE ĉu vi uzas Vindozon, Mac OS X aŭ Linukso.
Antaŭkondiĉoj: Arduino IDE Instalita
Antaŭ ol komenci ĉi tiun instalan proceduron, vi devas havi Arduino IDE instalita en via komputilo. Estas du versioj de la Arduino IDE, kiun vi povas instali: versio 1 kaj versio 2.
Vi povas elŝuti kaj instali Arduino IDE alklakante la sekvan ligilon: arduino.cc/en/Main/Software
Kiun Arduino-IDE-version ni rekomendas? Nuntempe, estas kelkaj plugins por la ESP32 (kiel la SPIFFS Filesystem Uploader Plugin) kiuj ankoraŭ ne estas subtenataj sur Arduino 2. Do, se vi intencas uzi la SPIFFS-kromaĵon estonte, ni rekomendas instali la heredan version 1.8.X. Vi nur bezonas rulumi malsupren sur la Arduino-programa paĝo por trovi ĝin.
Instalante ESP32-aldonaĵon en Arduino IDE
Por instali la ESP32-tabulon en via Arduino IDE, sekvu ĉi tiujn sekvajn instrukciojn:
- En via Arduino IDE, iru al File> Preferoj
- Enigu la jenon en la "Aldona Estraro-Administranto URLs” kampo:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Poste, alklaku la butonon "Bone":Notu: se vi jam havas la ESP8266-tabulojn URL, vi povas apartigi la URLs kun komo jene:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Malfermu la Administranton de Tabuloj. Iru al Iloj > Tabulo > Administranto de Tabuloj...Serĉu ESP32 and press install button for the “ESP32 by Espressif Systems“:
Jen ĝi. Ĝi devus esti instalita post kelkaj sekundoj.
Alŝutu Testan Kodon
Konektu la ESP32-tabulon al via komputilo. Kun via Arduino IDE malfermita, sekvu ĉi tiujn paŝojn:
- Elektu vian Tabulon en Iloj > Tabulo-menuo (en mia kazo ĝi estas la ESP32 DEV-Modulo)
- Elektu la Havenon (se vi ne vidas la COM-Havenon en via Arduino IDE, vi devas instali la CP210x USB al UART Bridge VCP Drivers):
- Malfermu la sekvan ekzample under File > Ekzamples > WiFi
(ESP32) > WiFiScan - Nova skizo malfermiĝas en via Arduino IDE:
- Premu la butonon Alŝuto en la Arduino IDE. Atendu kelkajn sekundojn dum la kodo kompilas kaj alŝutas al via tabulo.
- Se ĉio iris kiel atendite, vi devus vidi "Fine alŝuto". mesaĝo.
- Malfermu la Arduino IDE Serian Monitoron kun baudrapideco de 115200:
- Premu la butonon Ebligi surŝipe de ESP32 kaj vi devus vidi la disponeblajn retojn proksime de via ESP32:
Solvado de problemoj
Se vi provas alŝuti novan skizon al via ESP32 kaj vi ricevas ĉi tiun erarmesaĝon "Fata eraro okazis: Malsukcesis konekti al ESP32: Tempo elĉerpita... Konektante...". Ĝi signifas, ke via ESP32 ne estas en fulmo/alŝuta reĝimo.
Havante la ĝustan tabulnomon kaj COM por elektitaj, sekvu ĉi tiujn paŝojn:
Prenu la butonon "BOOT" en via ESP32-tabulo
- Premu la butonon "Alŝutu" en la Arduino IDE por alŝuti vian skizon:
- Post kiam vi vidas la "Konekti...." mesaĝo en via Arduino IDE, liberigu la fingron de la butono "BOOT":
- Post tio, vi devus vidi la mesaĝon "Farita alŝuto".
Jen ĝi. Via ESP32 devus funkcii la novan skizon. Premu la butonon "ENABLE" por rekomenci la ESP32 kaj ruli la novan alŝutitan skizon.
Vi ankaŭ devos ripeti tiun butonsekvencon ĉiufoje kiam vi volas alŝuti novan skizon.
Projekto 1 ESP32 Enigaĵoj Eligoj
En ĉi tiu komenca gvidilo vi lernos kiel legi ciferecajn enigojn kiel butonŝaltilon kaj kontroli ciferecajn elirojn kiel LED uzante la ESP32 kun Arduino IDE.
Antaŭkondiĉoj
Ni programos la ESP32 per Arduino IDE. Do, certigu, ke vi havas instalitan la aldonaĵon de la tabuloj ESP32 antaŭ ol daŭrigi:
- Instalante ESP32-aldonaĵon en Arduino IDE
ESP32 Kontrolo Ciferecaj Eliroj
Unue, vi devas agordi la GPIO, kiun vi volas kontroli kiel ELIGO. Uzu la funkcion pinMode() jene:
pinMode (GPIO, ELIGRO);
Por kontroli ciferecan eliron vi nur bezonas uzi la funkcion digitalWrite(), kiu akceptas kiel argumentojn, la GPIO (int-numero) al kiu vi aludas, kaj la staton, ĉu HIGH aŭ LOW.
digitalWrite(GPIO, ŜTATO);
Ĉiuj GPIOoj povas esti uzataj kiel produktaĵoj krom GPIOoj 6 ĝis 11 (ligitaj al la integra SPI-fulmo) kaj GPIOoj 34, 35, 36 kaj 39 (enigo nur GPIOoj);
Lernu pli pri la ESP32 GPIO-oj: ESP32 GPIO-Referenca Gvidilo
ESP32 Legu Ciferecajn Enigojn
Unue, agordu la GPIO, kiun vi volas legi kiel INPUT, uzante la funkcion pinMode() jene:
pinMode (GPIO, INPUT);
Por legi ciferecan enigaĵon, kiel butonon, vi uzas la funkcion digitalRead(), kiu akceptas kiel argumenton, la GPIO (int-numero) al kiu vi aludas.
digitalRead (GPIO);
Ĉiuj ESP32-GPIO-oj povas esti uzataj kiel enigaĵoj, krom GPIO-oj 6 ĝis 11 (ligitaj al la integra SPI-fulmo).
Lernu pli pri la ESP32 GPIO-oj: ESP32 GPIO-Referenca Gvidilo
Projekto Eksample
Por montri al vi kiel uzi ciferecajn enirojn kaj ciferecajn elirojn, ni konstruos simplan projekton ekzample kun prembutono kaj LED. Ni legos la staton de la prembutono kaj lumigos la LED laŭe kiel ilustrite en la sekva figuro.
Partoj Bezonataj
Jen listo de la partoj, kiujn vi bezonas por konstrui la cirkviton:
- ESP32 DEVKIT V1
- 5 mm LED
- 220 Ohm-rezistilo
- Puŝbutono
- 10k Ohm-rezistilo
- Breadboard
- Jumper dratoj
Skema Diagramo
Antaŭ ol daŭrigi, vi devas kunveni cirkviton kun LED kaj prembutono.
Ni konektos la LED al GPIO 5 kaj la prembutonon al GPIO 4.Kodo
Malfermu la kodon Project_1_ESP32_Inputs_Outputs.ino en arduino IDEKiel la Kodo Funkcias
En la sekvaj du linioj, vi kreas variablojn por atribui pinglojn:
La butono estas konektita al GPIO 4 kaj la LED estas konektita al GPIO 5. Kiam oni uzas la Arduino IDE kun la ESP32, 4 respondas al GPIO 4 kaj 5 respondas al GPIO 5.
Poste, vi kreas variablon por teni la butonan staton. Defaŭlte, ĝi estas 0 (ne premita).
int butonoStato = 0;
En la agordo(), vi pravigas la butonon kiel INPUT, kaj la LED kiel ELIGO.
Por tio, vi uzas la funkcion pinMode() kiu akceptas la pinton, al kiu vi aludas, kaj la reĝimon: INPUT aŭ OUTPUT.
pinMode (butonoPin, INPUT);
pinMode (ledPin, OUTPUT);
En la buklo () estas kie vi legas la butonan staton kaj agordas la LED laŭe.
En la sekva linio, vi legas la butonan staton kaj konservu ĝin en la variablo butonState.
Kiel ni vidis antaŭe, vi uzas la funkcion digitalRead().
butonStato = digitalRead (butonoPin);
La sekva se deklaro, kontrolas ĉu la butonstato estas ALTA. Se ĝi estas, ĝi ŝaltas la LED uzante la digitalWrite() funkcion kiu akceptas kiel argumento la ledPin, kaj la stato ALTA.
se (buttonState == ALTA)Se la butonstato ne estas ALTA, vi malŝaltas la LED. Nur agordu LOW kiel duan argumenton en la funkcio digitalWrite().
Alŝutante la Kodon
Antaŭ alklaki la butonon de alŝuto, iru al Iloj > Tabulo, kaj elektu la tabulon :DOIT ESP32 DEVKIT V1-tabulo.
Iru al Iloj> Haveno kaj elektu la COM-havenon, al kiu ESP32 estas konektita. Poste, premu la butonon de alŝuto kaj atendu la mesaĝon "Fine alŝuto".Noto: Se vi vidas multajn punktojn (konekti...__...__) sur la sencimiga fenestro kaj la mesaĝon "Malsukcesis konekti al ESP32: Tempo elĉerpita atendante pakaĵkapon", tio signifas, ke vi devas premi la ESP32 surŝipe BOOT. butono post la punktoj
komenci aperi.Troubleshooting
Manifestacio
Post alŝuto de la kodo, provu vian cirkviton. Via LED devus lumiĝi kiam vi premas la puŝbutonon:Kaj malŝaltu kiam vi liberigas ĝin:
Projekto 2 ESP32 Analogaj Enigaĵoj
Ĉi tiu projekto montras kiel legi analogajn enigojn kun la ESP32 uzante Arduino IDE.
Analoga legado estas utila por legi valorojn de variaj rezistiloj kiel potenciometroj aŭ analogaj sensiloj.
Analogaj Enigaĵoj (ADC)
Legi analogan valoron kun la ESP32 signifas, ke vi povas mezuri diversajn volojntage-niveloj inter 0 V kaj 3.3 V.
La voltage mezurita tiam estas asignita al valoro inter 0 kaj 4095, en kiu 0 V egalrilatas al 0, kaj 3.3 V egalrilatas al 4095. Ajna voltage inter 0 V kaj 3.3 V ricevos la respondan valoron intere.ADC estas Ne-linia
Ideale, vi atendus linearan konduton kiam vi uzas la ESP32 ADC-pinglojn.
Tamen tio ne okazas. Kion vi ricevos estas konduto kiel montrita en la sekva diagramo:Ĉi tiu konduto signifas, ke via ESP32 ne kapablas distingi 3.3 V de 3.2 V.
Vi ricevos la saman valoron por ambaŭ voltages: 4095.
La sama okazas por tre malalta voltage valoroj: por 0 V kaj 0.1 V vi ricevos la saman valoron: 0. Vi devas konservi ĉi tion en menso kiam vi uzas la ESP32 ADC-pingloj.
analogRead() Funkcio
Legi analogan enigaĵon kun la ESP32 uzante la Arduino-IDE estas tiel simpla kiel uzi la funkcion analogRead(). Ĝi akceptas kiel argumenton, la GPIO kiun vi volas legi:
analogRead(GPIO);
Nur 15 disponeblas en la DEVKIT V1board (versio kun 30 GPIOoj).
Prenu vian ESP32-tabulpinton kaj lokalizu la ADC-stiftojn. Ĉi tiuj estas reliefigitaj per ruĝa rando en la malsupra figuro.Ĉi tiuj analogaj enirpingloj havas 12-bitan rezolucion. Ĉi tio signifas, ke kiam vi legas analogan enigaĵon, ĝia intervalo povas varii de 0 al 4095.
Noto: ADC2-pingloj ne povas esti uzataj kiam Wi-Fi estas uzata. Do, se vi uzas Wi-Fi kaj vi havas problemojn akiri la valoron de ADC2 GPIO, vi eble pripensos uzi ADC1 GPIO anstataŭe, tio devus solvi vian problemon.
Por vidi kiel ĉio kuniĝas, ni faros simplan eksample por legi analogan valoron de potenciometro.
Partoj Bezonataj
Por ĉi tiu ekzample, vi bezonas la jenajn partojn:
- Estraro ESP32 DEVKIT V1
- Potenciometro
- Breadboard
- Jumper dratoj
Skema
Dramu potenciometron al via ESP32. La meza pinglo de la potenciometro devas esti konektita al GPIO 4. Vi povas uzi la sekvan skeman diagramon kiel referencon.Kodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Malfermu la kodon Project_2_ESP32_Inputs_Outputs.ino en arduino IDEĈi tiu kodo simple legas la valorojn de la potenciometro kaj presas tiujn valorojn en la Seria Monitoro.
En la kodo, vi komencas difinante la GPIO, al kiu la potenciometro estas konektita. En ĉi tiu ekzample, GPIO 4.En la agordo (), pravalorigu serian komunikadon kun baudrapideco de 115200.
En la buklo(), uzu la analogRead() funkcion por legi la analogan enigaĵon de la potPin.
Fine, presi la valorojn legitajn de la potenciometro en la seria monitoro.
Alŝutu la kodon provizitan al via ESP32. Certigu, ke vi havas la ĝustan tabulon kaj COM-havenon elektitajn en la menuo Iloj.
Testante la Eksample
Post alŝuto de la kodo kaj premado de la ESP32-restarigi butonon, malfermu la Serian Monitoron kun baudrapideco de 115200. Rotu la potenciometron kaj vidu la valorojn ŝanĝiĝantajn.La maksimuma valoro, kiun vi ricevos, estas 4095 kaj la minimuma valoro estas 0.
Envolvante
En ĉi tiu artikolo vi lernis kiel legi analogajn enigojn uzante la ESP32 kun la Arduino IDE. En resumo:
- La ESP32 DEVKIT V1 DOIT-tabulo (versio kun 30 pingloj) havas 15 ADC-stiftojn, kiujn vi povas uzi por legi analogajn enigojn.
- Ĉi tiuj pingloj havas rezolucion de 12 bitoj, kio signifas, ke vi povas akiri valorojn de 0 ĝis 4095.
- Por legi valoron en la IDE de Arduino, vi simple uzas la funkcion analogRead().
- La ESP32 ADC-stiftoj ne havas linearan konduton. Vi verŝajne ne povos distingi inter 0 kaj 0.1V, aŭ inter 3.2 kaj 3.3V. Vi devas konservi tion en menso kiam vi uzas la ADC-pinglojn.
Projekto 3 ESP32 PWM (Analoga Eligo)
En ĉi tiu lernilo ni montros al vi kiel generi PWM-signalojn kun la ESP32 uzante Arduino IDE. Kiel eksampni konstruos simplan cirkviton, kiu malheligas LED-on per la LED-PWM-regilo de la ESP32.ESP32 LED PWM-Regilo
La ESP32 havas LED-PWM-regilon kun 16 sendependaj kanaloj, kiuj povas esti agorditaj por generi PWM-signalojn kun malsamaj propraĵoj.
Jen la paŝoj, kiujn vi devos sekvi por mallumigi LED-on kun PWM uzante la Arduino-IDE:
- Unue, vi devas elekti PWM-kanalon. Estas 16 kanaloj de 0 ĝis 15.
- Tiam vi devas agordi la PWM-signalfrekvencon. Por LED, frekvenco de 5000 Hz estas bone uzi.
- Vi ankaŭ devas agordi la devociklo-rezolucion de la signalo: vi havas rezoluciojn de 1 ĝis 16 bitoj. Ni uzos 8-bitan rezolucion, kio signifas, ke vi povas kontroli la LED-brilecon uzante valoron de 0 ĝis 255.
- Poste, vi devas specifi sur kiuj GPIO aŭ GPIO aperos la signalo. Por tio vi uzos la sekvan funkcion:
ledcAttachPin (GPIO, kanalo)
Ĉi tiu funkcio akceptas du argumentojn. La unua estas la GPIO, kiu eligos la signalon, kaj la dua estas la kanalo, kiu generos la signalon. - Fine, por kontroli la LED-brilecon per PWM, vi uzas la sekvan funkcion:
ledcWrite (kanalo, devociklo)
Ĉi tiu funkcio akceptas kiel argumentojn la kanalon, kiu generas la PWM-signalon, kaj la devociklon.
Partoj Bezonataj
Por sekvi ĉi tiun lernilon vi bezonas ĉi tiujn partojn:
- Estraro ESP32 DEVKIT V1
- 5mm LED
- 220 Ohm-rezistilo
- Breadboard
- Jumper dratoj
Skema
Dramu LED al via ESP32 kiel en la sekva skema diagramo. La LED devus esti konektita al GPIO 4.Notu: vi povas uzi ajnan pinglo kiun vi volas, kondiĉe ke ĝi povas funkcii kiel eligo. Ĉiuj pingloj kiuj povas funkcii kiel produktaĵoj povas esti uzataj kiel PWM-stiftoj. Por pliaj informoj pri la ESP32 GPIO-oj, legu: ESP32 Pinout-Referenco: Kiujn GPIO-pinglojn vi devas uzi?
Kodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Malfermu la kodon Project_3_ESP32_PWM.ino en arduino IDEVi komencas difinante la pinglon, al kiu la LED estas fiksita. En ĉi tiu kazo la LED estas fiksita al GPIO 4.
Poste, vi fiksas la PWM-signalpropraĵojn. Vi difinas frekvencon de 5000 Hz, elektas kanalon 0 por generi la signalon, kaj fiksas rezolucion de 8 bitoj. Vi povas elekti aliajn trajtojn, malsamajn ol ĉi tiuj, por generi malsamajn PWM-signalojn.
En la agordo(), vi devas agordi LED PWM kun la propraĵoj, kiujn vi difinis pli frue, uzante la funkcion ledcSetup(), kiu akceptas kiel argumentojn, la ledChannel, la frekvencon kaj la rezolucion jene:
Poste, vi devas elekti la GPIO de kiu vi ricevos la signalon. Por tio uzu la funkcion ledcAttachPin(), kiu akceptas kiel argumentojn la GPIO, kie vi volas ricevi la signalon, kaj la kanalon, kiu generas la signalon. En ĉi tiu ekzample, ni ricevos la signalon en la ledPin GPIO, kiu respondas al GPIO 4. La kanalo kiu generas la signalon estas la ledChannel, kiu respondas al la kanalo 0.
En la buklo, vi variigos la devociklon inter 0 kaj 255 por pliigi la LED-brilecon.
Kaj tiam, inter 255 kaj 0 por malpliigi la brilon.
Por agordi la brilecon de la LED, vi nur bezonas uzi la funkcion ledcWrite(), kiu akceptas kiel argumentojn la kanalon, kiu generas la signalon, kaj la devociklon.
Ĉar ni uzas 8-bitan rezolucion, la devociklo estos kontrolita per valoro de 0 ĝis 255. Notu, ke en la funkcio ledcWrite() ni uzas la kanalon kiu generas la signalon, kaj ne la GPIO.
Testante la Eksample
Alŝutu la kodon al via ESP32. Certiĝu, ke vi havas la ĝustan tabulon kaj COM-havenon elektitaj. Rigardu vian cirkviton. Vi devus havi malklaran LED kiu pliigas kaj malpliigas brilon.
Projekto 4 ESP32 PIR Movsensilo
Ĉi tiu projekto montras kiel detekti moviĝon per la ESP32 uzante PIR-moviĝsensilon. La zumilo sonigos alarmon kiam moviĝo estas detektita, kaj ĉesigos la alarmon kiam neniu moviĝo estas detektita dum antaŭfiksita tempo (kiel ekzemple 4 sekundoj)
Kiel Funkcias HC-SR501 Movsensilo
.La funkcia principo de HC-SR501-sensilo baziĝas sur la ŝanĝo de la transruĝa radiado sur la moviĝanta objekto. Por esti detektita de la HC-SR501-sensilo, la objekto devas plenumi du postulojn:
- La objekto elsendas la infraruĝan vojon.
- La objekto moviĝas aŭ tremas
Do:
Se objekto elsendas la infraruĝan radion sed ne moviĝas (ekz., persono staras senmove), ĝi ne estas detektita de la sensilo.
Se objekto moviĝas sed Ne elsendas la infraruĝan radion (ekz., roboto aŭ veturilo), ĝi NE estas detektita de la sensilo.
Enkonduko de Temporiziloj
En ĉi tiu ekzampni ankaŭ enkondukos tempigilojn. Ni volas, ke la LED restu ŝaltita dum antaŭfiksita nombro da sekundoj post kiam moviĝo estas detektita. Anstataŭ uzi delay() funkcion, kiu blokas vian kodon kaj ne permesas al vi fari ion alian dum difinita nombro da sekundoj, ni uzu tempigilon.La funkcio delay().
Vi devus koni la funkcion delay() ĉar ĝi estas vaste uzata. Ĉi tiu funkcio estas sufiĉe facila por uzi. Ĝi akceptas ununuran int nombron kiel argumenton.
Ĉi tiu nombro reprezentas la tempon en milisekundoj, kiun la programo devas atendi ĝis transiri al la sekva linio de kodo.Kiam vi prokrastas (1000) via programo haltas sur tiu linio dum 1 sekundo.
delay() estas bloka funkcio. Blokaj funkcioj malhelpas programon fari ion alian ĝis tiu aparta tasko estas finita. Se vi bezonas plurajn taskojn okazi samtempe, vi ne povas uzi delay().
Por plej multaj projektoj vi devus eviti uzi prokrastojn kaj uzi tempigilojn anstataŭe.
La funkcio millis().
Uzante funkcion nomitan millis() vi povas redoni la nombron da milisekundoj, kiuj pasis de kiam la programo unue komenciĝis.Kial tiu funkcio estas utila? Ĉar uzante iom da matematiko, vi povas facile kontroli kiom da tempo pasis sen bloki vian kodon.
Partoj Bezonataj
Por sekvi ĉi tiun lernilon vi bezonas la jenajn partojn
- Estraro ESP32 DEVKIT V1
- PIR-moviĝsensilo (HC-SR501)
- Aktiva Zumilo
- Jumper dratoj
- Breadboard
SkemaNotu: La labora voltage de HC-SR501 estas 5V. Uzu la Vin-pinglon por funkciigi ĝin.
Kodo
Antaŭ ol daŭrigi ĉi tiun lernilon, vi devus havi la ESP32-aldonaĵon instalita en via Arduino IDE. Sekvu unu el la sekvaj lerniloj por instali la ESP32 sur la Arduino IDE, se vi ne jam faris. (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Malfermu la kodon Project_4_ESP32_PIR_Motion_Sensor.ino en arduino IDE.
Manifestacio
Alŝutu la kodon al via ESP32-tabulo. Certiĝu, ke vi havas la ĝustan tabulon kaj COM-havenon elektitan.Alŝutu kodajn referencajn paŝojn.
Malfermu la Serian Monitoron kun baudrapideco de 115200.Movu vian manon antaŭ la PIR-sensilo. La zumilo devus ŝalti, kaj la mesaĝo estas presita en la Seria Monitoro dirante "Moviĝo detektita! Buzzera alarmo".
Post 4 sekundoj la zumilo devas malŝalti.
Projekto 5 ESP32 Ŝaltilo Web Servilo
En ĉi tiu projekto vi kreos memstaran web servilo kun ESP32, kiu kontrolas elirojn (du LEDoj) uzante la programan medion Arduino IDE. La web servilo estas movebla respondema kaj alireblas per iu ajn aparato kiel retumilo en la loka reto. Ni montros al vi kiel krei la web servilo kaj kiel la kodo funkcias paŝo post paŝo.
Projekto Finitaview
Antaŭ iri rekte al la projekto, gravas skizi kio nia web servilo faros, por ke estas pli facile sekvi la paŝojn poste.
- La web servilo, vi konstruos kontrolojn du LED-ojn konektitajn al la ESP32 GPIO 26 kaj GPIO 27;
- Vi povas aliri la ESP32 web servilo tajpante la IP-adreson ESP32 en retumilo en la loka reto;
- Alklakante la butonojn sur via web servilo vi povas tuj ŝanĝi la staton de ĉiu LED.
Partoj Bezonataj
Por ĉi tiu lernilo vi bezonos la jenajn partojn:
- Estraro ESP32 DEVKIT V1
- 2x 5mm LED
- 2x 200 Ohm-rezistilo
- Breadboard
- Jumper dratoj
Skema
Komencu konstruante la cirkviton. Konektu du LED-ojn al la ESP32 kiel montrite en la sekva skema diagramo - unu LED konektita al GPIO 26, kaj la alia al GPIO 27.
Notu: Ni uzas la tabulon ESP32 DEVKIT DOIT kun 36 pingloj. Antaŭ ol kunmeti la cirkviton, certigu, ke vi kontrolas la pinout por la tabulo, kiun vi uzas.Kodo
Ĉi tie ni provizas la kodon kiu kreas la ESP32 web servilo. Malfermu la kodon Project_5_ESP32_Switch _Web_Server.ino en arduino IDE, sed ankoraŭ ne alŝutu ĝin. Vi devas fari iujn ŝanĝojn por ke ĝi funkciu por vi.
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Agordi Viajn Retajn Akreditaĵojn
Vi devas modifi la sekvajn liniojn kun viaj retaj akreditaĵoj: SSID kaj pasvorto. La kodo estas bone komentita pri kie vi devus fari la ŝanĝojn.Alŝutante la Kodon
Nun, vi povas alŝuti la kodon kaj kaj la web servilo tuj funkcios.
Sekvu la sekvajn paŝojn por alŝuti kodon al la ESP32:
- Konektu vian ESP32-tabulon en vian komputilon;
- En la Arduino IDE elektu vian tabulon en Iloj > Tabulo (en nia kazo ni uzas la ESP32 DEVKIT DOIT-tabulo);
- Elektu la COM-havenon en Iloj> Haveno.
- Premu la butonon Alŝuti en la Arduino IDE kaj atendu kelkajn sekundojn dum la kodo kompilas kaj alŝutas al via tabulo.
- Atendu la mesaĝon "Fine alŝuto".
Trovi la IP-adreson de ESP
Post alŝuto de la kodo, malfermu la Serian Monitoron kun baudrapideco de 115200.Premu la butonon ESP32 EN (restarigi). La ESP32 konektas al Wi-Fi, kaj eligas la ESP-IP-adreson sur la Seria Monitoro. Kopiu tiun IP-adreson, ĉar vi bezonas ĝin por aliri la ESP32 web servilo.
Alirante la Web Servilo
Por aliri la web servilo, malfermu vian retumilon, algluu la IP-adreson de ESP32, kaj vi vidos la sekvan paĝon.
Notu: Via retumilo kaj ESP32 devus esti konektitaj al la sama LAN.Se vi rigardas la Serian Monitoron, vi povas vidi kio okazas sur la fono. La ESP ricevas HTTP-peton de nova kliento (en ĉi tiu kazo, via retumilo).
Vi ankaŭ povas vidi aliajn informojn pri la HTTP-peto.
Manifestacio
Nun vi povas testi ĉu vi web servilo funkcias ĝuste. Alklaku la butonojn por kontroli la LED-ojn.Samtempe, vi povas rigardi la Serian Monitoron por vidi kio okazas en la fono. Por ekzample, kiam vi alklakas la butonon por ŝalti GPIO 26, ESP32 ricevas peton sur la /26/on URL.
Kiam la ESP32 ricevas tiun peton, ĝi ŝaltas la LED ligitan al GPIO 26 kaj ĝisdatigas sian staton sur la web paĝo.
La butono por GPIO 27 funkcias simile. Provu, ke ĝi funkcias ĝuste.
Kiel la Kodo Funkcias
En ĉi tiu sekcio rigardos pli detale la kodon por vidi kiel ĝi funkcias.
La unua afero, kiun vi devas fari, estas inkluzivi la WiFi-bibliotekon.Kiel menciite antaŭe, vi devas enmeti vian ssid kaj pasvorton en la sekvajn liniojn en la duoblajn citilojn.
Tiam vi agordu vian web servilo al haveno 80.
La sekva linio kreas variablon por konservi la kaplinion de la HTTP-peto:
Poste, vi kreas helpvariablojn por konservi la nunan staton de viaj eligoj. Se vi volas aldoni pliajn elirojn kaj konservi ĝian staton, vi devas krei pli da variabloj.
Vi ankaŭ devas asigni GPIO al ĉiu el viaj eliroj. Ĉi tie ni uzas GPIO 26 kaj GPIO 27. Vi povas uzi ajnajn aliajn taŭgajn GPIO-ojn.
agordi ()
Nun, ni iru en la aranĝon (). Unue, ni komencas serian komunikadon kun baudrapideco de 115200 por sencimigaj celoj.Vi ankaŭ difinas viajn GPIO-ojn kiel ELIGOJN kaj agordas ilin al LOW.
La sekvaj linioj komencas la Wi-Fi-konekton kun WiFi.begin(ssid, pasvorto), atendu sukcesan konekton kaj presi la ESP-IP-adreson en la Seria Monitoro.
buklo ()
En la buklo() ni programas kio okazas kiam nova kliento establas konekton kun la web servilo.
La ESP32 ĉiam aŭskultas alvenantajn klientojn kun la sekva linio:Kiam peto estas ricevita de kliento, ni konservos la envenantajn datumojn. La dum-buklo kiu sekvas funkcios tiel longe kiel la kliento restos konektita. Ni ne rekomendas ŝanĝi la sekvan parton de la kodo krom se vi scias precize kion vi faras.
La sekva sekcio de se kaj else deklaroj kontrolas kiun butonon estis premita en via web paĝo, kaj kontrolas la elirojn laŭe. Kiel ni vidis antaŭe, ni faras peton pri malsamaj URLs depende de la butono premita.
Por ekzample, se vi premas la butonon GPIO 26 ON, la ESP32 ricevas peton sur la /26/ON URL (Ni povas vidi ke tiuj informoj sur la HTTP-kapo sur la Seria Monitoro). Do, ni povas kontroli ĉu la kaplinio enhavas la esprimon GET /26/on. Se ĝi enhavas, ni ŝanĝas la output26state variablon al ON, kaj la ESP32 ŝaltas la LED.
Ĉi tio funkcias simile por la aliaj butonoj. Do, se vi volas aldoni pliajn elirojn, vi devus modifi ĉi tiun parton de la kodo por inkluzivi ilin.
Montrante la HTML web paĝo
La sekva afero, kiun vi devas fari, estas krei la web paĝo. La ESP32 sendos respondon al via retumilo kun iu HTML-kodo por konstrui la web paĝo.
La web paĝo estas sendita al la kliento uzante ĉi tiun esprimon client.println(). Vi devus enigi tion, kion vi volas sendi al la kliento kiel argumenton.
La unua afero, kiun ni devus sendi, estas ĉiam la sekva linio, kiu indikas, ke ni sendas HTML.Tiam, la sekva linio faras la web paĝo respondema en iu ajn web retumilo.
Kaj la sekvanta estas uzata por malhelpi petojn sur la favicon. – Vi ne bezonas zorgi pri ĉi tiu linio.
Styling la Web Paĝo
Poste, ni havas iom da CSS-teksto por stiligi la butonojn kaj la web paĝa aspekto.
Ni elektas la Helvetica tiparon, difinas la enhavon por esti montrita kiel bloko kaj vicigita ĉe la centro.Ni stiligas niajn butonojn kun la koloro #4CAF50, sen bordo, teksto en blanka koloro, kaj kun ĉi tiu kompletigo: 16px 40px. Ni ankaŭ fiksas la teksto-ornamon al neniu, difinas la tiparon, la marĝenon kaj la kursoron al montrilo.
Ni ankaŭ difinas la stilon por dua butono, kun ĉiuj trajtoj de la butono, kiun ni antaŭe difinis, sed kun malsama koloro. Ĉi tio estos la stilo por la malŝaltita butono.
Agordi la Web Paĝo Unua Titolo
En la sekva linio vi povas agordi la unuan titolon de via web paĝo. Ĉi tie ni havas "ESP32 Web Servilo”, sed vi povas ŝanĝi ĉi tiun tekston al kio ajn vi volas.Montrante la Butonojn kaj Korespondan Ŝtaton
Tiam vi skribas alineon por montri la nunan staton de GPIO 26. Kiel vi povas vidi, ni uzas la variablon output26State, por ke la stato ĝisdatiĝas tuj kiam ĉi tiu variablo ŝanĝiĝas.Poste, ni montras la butonon ŝaltita aŭ malŝaltita, depende de la nuna stato de la GPIO. Se la nuna stato de la GPIO estas malŝaltita, ni montras la butonon ON, se ne, ni montras la butonon OFF.
Ni uzas la saman proceduron por GPIO 27.
Fermante la Konekton
Fine, kiam la respondo finiĝas, ni malplenigas la kapan variablon, kaj ĉesas la rilaton kun la kliento per client.stop().
Envolvante
En ĉi tiu lernilo ni montris al vi kiel konstrui a web servilo kun la ESP32. Ni montris al vi simplan eksample kiu kontrolas du LED-ojn, sed la ideo estas anstataŭigi tiujn LED-ojn per relajso, aŭ ajna alia eligo, kiun vi volas kontroli.
Projekto 6 RGB LED Web Servilo
En ĉi tiu projekto ni montros al vi kiel malproksime kontroli RGB-LED per ESP32-tabulo uzante a web servilo kun kolorelektilo.
Projekto Finitaview
Antaŭ ol komenci, ni vidu kiel funkcias ĉi tiu projekto:
- La ESP32 web servilo montras kolor-elektilon.
- Kiam vi elektis koloron, via retumilo faras peton je a URL kiu enhavas la R, G, kaj B-parametrojn de la elektita koloro.
- Via ESP32 ricevas la peton kaj disigas la valoron por ĉiu kolora parametro.
- Poste, ĝi sendas PWM-signalon kun la responda valoro al la GPIO-oj, kiuj kontrolas la RGB-LED.
Kiel funkcias RGB-LED-oj?
En komuna katoda RGB LED, ĉiuj tri LEDoj dividas negativan konekton (katodo). Ĉiuj inkluzivitaj en la ilaro estas komuna katoda RGB.Kiel krei malsamajn kolorojn?
Kun RGB LED vi povas, kompreneble, produkti ruĝan, verdan kaj bluan lumon, kaj agordante la intensecon de ĉiu LED, vi povas produkti aliajn kolorojn ankaŭ.
Por ekzampLe, por produkti pure bluan lumon, vi agordus la bluan LED al la plej alta intenseco kaj la verda kaj ruĝa LED al la plej malalta intenseco. Por blanka lumo, vi agordus ĉiujn tri LED-ojn al la plej alta intenseco.
Miksi kolorojn
Por produkti aliajn kolorojn, vi povas kombini la tri kolorojn en malsamaj intensoj. Por ĝustigi la intensecon de ĉiu LED vi povas uzi PWM-signalon.
Ĉar la LED-oj estas tre proksimaj unu al la alia, niaj okuloj vidas la rezulton de la kombinaĵo de koloroj, prefere ol la tri koloroj individue.
Por havi ideon pri kiel kombini la kolorojn, rigardu la sekvan diagramon.
Ĉi tiu estas la plej simpla kolora miksa diagramo, sed donas al vi ideon kiel ĝi funkcias kaj kiel produkti malsamajn kolorojn.Partoj Bezonataj
Por ĉi tiu projekto vi bezonas la jenajn partojn:
- Estraro ESP32 DEVKIT V1
- RGB LED
- 3x 220 ohmaj rezistiloj
- Jumper dratoj
- Breadboard
SkemaKodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
- Instalante ESP32-aldonaĵon en Arduino IDE
Post kunmeti la cirkviton, Malfermu la kodon
Projekto_6_RGB_LED_Web_Server.ino en arduino IDE.
Antaŭ alŝuti la kodon, ne forgesu enigi viajn retajn akreditaĵojn por ke la ESP povu konektiĝi al via loka reto.Kiel funkcias la kodo
La skizo de ESP32 uzas la bibliotekon WiFi.h.La sekvaj linioj difinas ŝnurajn variablojn por teni la R, G kaj B-parametrojn de la peto.
La sekvaj kvar variabloj estas uzataj por malkodi la HTTP-peton poste.
Kreu tri variablojn por la GPIO-oj, kiuj kontrolos la striajn parametrojn R, G kaj B. En ĉi tiu kazo ni uzas GPIO 13, GPIO 12, kaj GPIO 14.
Ĉi tiuj GPIO-oj devas eligi PWM-signalojn, do ni devas unue agordi la PWM-ecojn. Agordu la PWM-signalfrekvencon al 5000 Hz. Poste, asocii PWM-kanalon por ĉiu koloro
Kaj finfine, agordu la rezolucion de la PWM-kanaloj al 8-bit
En la agordo (), asignu la PWM-ecojn al la PWM-kanaloj
Aligu la PWM-kanalojn al la respondaj GPIOoj
La sekva koda sekcio montras la kolor-elekton en via web paĝo kaj faras peton laŭ la koloro, kiun vi elektis.
Kiam vi elektas koloron, vi ricevas peton kun la sekva formato.
Do, ni devas dividi ĉi tiun ŝnuron por akiri la R, G kaj B-parametrojn. La parametroj estas konservitaj en variabloj redString, greenString kaj blueString kaj povas havi valorojn inter 0 kaj 255.Por kontroli la strion per la ESP32, uzu la funkcion ledcWrite() por generi PWM-signalojn kun la valoroj malkoditaj de la HTTP. peto.
Notu: Lernu pli pri PWM kun ESP32: Projekto 3 ESP32 PWM (Analoga Eligo)
Por kontroli la strion per la ESP8266, ni nur bezonas uzi
la analogWrite() funkcio por generi PWM-signalojn kun la valoroj deĉifritaj de la HTPP-peto.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Ĉar ni ricevas la valorojn en ĉena variablo, ni devas konverti ilin al entjeroj uzante la metodon toInt().
Manifestacio
Post enigi viajn retajn akreditaĵojn, elektu la ĝustan tabulon kaj COM-havenon kaj alŝutu la kodon al via ESP32.Alŝutu kodon referencajn paŝojn.
Post alŝuto, malfermu la Serian Monitoron kun baudrapideco de 115200 kaj premu la butonon Ebligi/Restarigi ESP. Vi devus ricevi la IP-adreson de la tabulo.Malfermu vian retumilon kaj enigu la ESP-IP-adreson. Nun uzu la kolor-elektilon por elekti koloron por la RGB LED.
Poste, vi devas premi la butonon "Ŝanĝi Koloron" por ke la koloro efiku.Por malŝalti la RGB-LED, elektu la nigran koloron.
La plej fortaj koloroj (ĉe la supro de la kolor-elektilo), estas tiuj, kiuj produktos pli bonajn rezultojn.
Projekto 7 ESP32 Relajso Web Servilo
Uzi stafetadon kun la ESP32 estas bonega maniero por kontroli AC-hejmaparatojn malproksime. Ĉi tiu lernilo klarigas kiel kontroli relajsan modulon per la ESP32.
Ni rigardos kiel funkcias relajsomodulo, kiel konekti la relajson al la ESP32 kaj konstrui web servilo por kontroli stafetadon malproksime.
Enkonduko de Stafetoj
Relajso estas elektre funkciigita ŝaltilo kaj kiel ĉiu alia ŝaltilo, ĝi povas esti ŝaltita aŭ malŝaltita, lasante la fluon trairi aŭ ne. Ĝi povas esti kontrolita kun malalta voltages, kiel la 3.3V provizita de la ESP32 GPIO kaj permesas al ni kontroli altan voltagestas kiel 12V, 24V aŭ retaj voltage (230V en Eŭropo kaj 120V en Usono).Sur la maldekstra flanko, estas du aroj de tri ingoj por konekti alta voltages, kaj la pingloj sur la dekstra flanko (malalt-voltage) konekti al la ESP32 GPIOoj.
Mains Voltage LigojLa relajsa modulo montrita en la antaŭa foto havas du konektilojn, ĉiu kun tri ingoj: komuna (COM), Normale Fermita (NC) kaj Normale Malferma (NE).
- COM: konektu la fluon, kiun vi volas kontroli (ĉefaj voltagkaj).
- NC (Normale Fermita): la normale fermita agordo estas uzata kiam vi volas, ke la relajso estu fermita defaŭlte. La NC estas COM-pingloj estas konektitaj, tio signifas, ke la fluo fluas krom se vi sendas signalon de la ESP32 al la relajsa modulo por malfermi la cirkviton kaj haltigi la nunan fluon.
- NO (Normale Malferma): la normale malfermita agordo funkcias inverse: ne ekzistas konekto inter la pingloj NO kaj COM, do la cirkvito estas rompita krom se vi sendas signalon de la ESP32 por fermi la cirkviton.
Kontrolaj StiftojLa malalt-voltagLa flanko havas aron de kvar pingloj kaj aron de tri pingloj. La unua aro konsistas el VCC kaj GND por funkciigi la modulon, kaj enigo 1 (IN1) kaj enigo 2 (IN2) por kontroli la malsupran kaj supran relajsojn, respektive.
Se via relajsa modulo havas nur unu kanalon, vi havos nur unu IN-pinglon. Se vi havas kvar kanalojn, vi havos kvar IN-pinglojn, ktp.
La signalo, kiun vi sendas al la IN-pingloj, determinas ĉu la relajso estas aktiva aŭ ne. La relajso estas ekigita kiam la enigo iras sub proksimume 2V. Ĉi tio signifas, ke vi havos la jenajn scenarojn:
- Normale Fermita agordo (NC):
- ALTA signalo - fluo fluas
- MALALTA signalo - fluo ne fluas
- Normale Malferma agordo (NE):
- ALTA signalo - fluo ne fluas
- MALALTA signalo - fluo enfluanta
Vi devus uzi normale fermitan agordon kiam la fluo devus flui plejofte, kaj vi volas nur foje haltigi ĝin.
Uzu normale malfermitan agordon kiam vi volas, ke la fluo fluu foje (ekzample, turni alamp foje).
Elekto de ElektroLa dua aro de stiftoj konsistas el GND, VCC, kaj JD-VCC-stiftoj.
La JD-VCC-stifto funkciigas la elektromagneton de la relajso. Rimarku, ke la modulo havas jumper-ĉapon ligantan la VCC kaj JD-VCC-pinglojn; tiu ĉi tie montrata estas flava, sed la via povas esti malsama koloro.
Kun la saltĉapo sur, la VCC kaj JD-VCC-stiftoj estas konektitaj. Tio signifas, ke la relajsa elektromagneto estas rekte funkciigita de la ESP32-potencstifto, do la relajsomodulo kaj la ESP32-cirkvitoj ne estas fizike izolitaj unu de la alia.
Sen la saltĉapo, vi devas provizi sendependan energifonton por funkciigi la elektromagneton de la relajso per la stifto JD-VCC. Tiu agordo fizike izolas la relajsojn de la ESP32 kun la enkonstruita optokuplilo de la modulo, kiu malhelpas difekton en la ESP32 en kazo de elektraj pikiloj.
SkemaAverto: Uzo de alta voltagLa elektrofontoj povas kaŭzi gravajn vundojn.
Tial, 5mm LEDoj estas uzataj anstataŭ alta provizo voltage bulboj en la eksperimento. Se vi ne konas mains voltagpetu iun, kiu helpos vin. Dum programado de la ESP aŭ kablado de via cirkvito, certigu, ke ĉio estas malkonektita de la retotage.Instalante la Bibliotekon por ESP32
Por konstrui ĉi tion web servilo, ni uzas la ESPAsyncWebServila biblioteko kaj AsyncTCP Biblioteko.
Instalante la ESPAsyncWebServila biblioteko
Sekvu la sekvajn paŝojn por instali la ESPAsyncWebServilo biblioteko:
- Klaku ĉi tie por elŝuti la ESPAsyncWebServila biblioteko. Vi devus havi
dosierujo .zip en via Elŝuta dosierujo - Malfermu la dosierujon .zip kaj vi devus ricevi ESPAsyncWebServilo-mastra dosierujo
- Alinomi vian dosierujon de ESPAsyncWebServilo-mastro al ESPAsyncWebServilo
- Movu la ESPAsyncWebServila dosierujo al via dosierujo de Arduino IDE-instalaĵbibliotekoj
Alternative, en via Arduino IDE, vi povas iri al Sketch> Inkluzivi
Biblioteko > Aldonu .Zip-bibliotekon... kaj elektu la bibliotekon, kiun vi ĵus elŝutis.
Instalante la AsyncTCP Bibliotekon por ESP32
La ESPAsyncWebServilo biblioteko postulas la AsyncTCP biblioteko por labori. Sekvu
la sekvaj paŝoj por instali tiun bibliotekon:
- Klaku ĉi tie por elŝuti la AsyncTCP-bibliotekon. Vi devus havi .zip-dosierujon en via Elŝuta dosierujo
- Malfermu la dosierujon .zip kaj vi devus ricevi AsyncTCP-master-dosierujon
1. Alinomi vian dosierujon de AsyncTCP-master al AsyncTCP
3. Movu la AsyncTCP-dosierujon al via dosierujo de Arduino IDE-instalaĵbibliotekoj
4. Fine, remalfermu vian Arduino IDE
Alternative, en via Arduino IDE, vi povas iri al Sketch> Inkluzivi
Biblioteko > Aldonu .Zip-bibliotekon... kaj elektu la bibliotekon, kiun vi ĵus elŝutis.
Kodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Post instalo de la bezonataj bibliotekoj, Malfermu la kodon Project_7_ESP32_Relay_Web_Server.ino en arduino IDE.
Antaŭ alŝuti la kodon, ne forgesu enigi viajn retajn akreditaĵojn por ke la ESP povu konektiĝi al via loka reto.Manifestacio
Post fari la necesajn ŝanĝojn, alŝutu la kodon al via ESP32.Alŝutu referencajn paŝojn.
Malfermu la Serian Monitoron kun baudrapideco de 115200 kaj premu la butonon ESP32 EN por akiri ĝian IP-adreson. Poste, malfermu retumilon en via loka reto kaj tajpu la ESP32 IP-adreson por akiri aliron al la web servilo.
Malfermu la Serian Monitoron kun baudrapideco de 115200 kaj premu la butonon ESP32 EN por akiri ĝian IP-adreson. Poste, malfermu retumilon en via loka reto kaj tajpu la ESP32 IP-adreson por akiri aliron al la web servilo.Notu: Via retumilo kaj ESP32 devus esti konektitaj al la sama LAN.
Vi devus ricevi ion jene per kiel du butonoj kiel la nombro da relajsoj kiujn vi difinis en via kodo.Nun vi povas uzi la butonojn por kontroli viajn relajsojn per via inteligenta telefono.
Projekto_8_Eliga_Ŝtato_Sinkronigo_ Web_Servilo
Ĉi tiu Projekto montras kiel kontroli la elirojn de ESP32 aŭ ESP8266 uzante a web servilo kaj fizika butono samtempe. La eliga stato estas ĝisdatigita sur la web paĝo ĉu ĝi estas ŝanĝita per fizika butono aŭ web servilo.
Projekto Finitaview
Ni rigardu rapide kiel funkcias la projekto.La ESP32 aŭ ESP8266 gastigas a web servilo kiu permesas vin kontroli la staton de eligo;
- La nuna eliga stato estas montrata sur la web servilo;
- La ESP ankaŭ estas konektita al fizika puŝbutono kiu kontrolas la saman produktaĵon;
- Se vi ŝanĝas la eligan staton per la fizika prembutono, ĝia nuna stato ankaŭ estas ĝisdatigita sur la web servilo.
En resumo, ĉi tiu projekto permesas vin kontroli la saman eliron uzante a web servilo kaj prembutono samtempe. Kiam ajn la eliga stato ŝanĝiĝas, la web servilo estas ĝisdatigita.
Partoj Bezonataj
Jen listo de la partoj, kiujn vi bezonas por konstrui la cirkviton:
- Estraro ESP32 DEVKIT V1
- 5 mm LED
- 220 Ohm-rezistilo
- Puŝbutono
- 10k Ohm-rezistilo
- Breadboard
- Jumper dratoj
SkemaInstalante la Bibliotekon por ESP32
Por konstrui ĉi tion web servilo, ni uzas la ESPAsyncWebServila biblioteko kaj AsyncTCP Biblioteko. (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante la ESPAsyncWebServila biblioteko
Sekvu la sekvajn paŝojn por instali la ESPAsyncWebServila biblioteko:
- Klaku ĉi tie por elŝuti la ESPAsyncWebServila biblioteko. Vi devus havi
dosierujo .zip en via Elŝuta dosierujo - Malfermu la dosierujon .zip kaj vi devus ricevi ESPAsyncWebServilo-mastra dosierujo
- Alinomi vian dosierujon de ESPAsyncWebServilo-mastro al ESPAsyncWebServilo
- Movu la ESPAsyncWebServila dosierujo al via dosierujo de Arduino IDE-instalaĵbibliotekoj
Alternative, en via Arduino IDE, vi povas iri al Sketch> Inkluzivi
Biblioteko > Aldonu .Zip-bibliotekon... kaj elektu la bibliotekon, kiun vi ĵus elŝutis.
Instalante la AsyncTCP Bibliotekon por ESP32
La ESPAsyncWebServila biblioteko postulas la AsyncTCP-bibliotekon por funkcii. Sekvu la sekvajn paŝojn por instali tiun bibliotekon:
- Klaku ĉi tie por elŝuti la AsyncTCP-bibliotekon. Vi devus havi .zip-dosierujon en via Elŝuta dosierujo
- Malfermu la dosierujon .zip kaj vi devus ricevi AsyncTCP-master-dosierujon
- Alinomi vian dosierujon de AsyncTCP-master al AsyncTCP
- Movu la AsyncTCP-dosierujon al via dosierujo de instaladoj de Arduino IDE
- Fine, remalfermu vian Arduino IDE
Alternative, en via Arduino IDE, vi povas iri al Sketch> Inkluzivi
Biblioteko > Aldonu .Zip-bibliotekon... kaj elektu la bibliotekon, kiun vi ĵus elŝutis.
Kodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Post instali la postulatajn bibliotekojn, Malfermu la kodon
Projekto_8_Eliga_Ŝtato_Sinkronigo_Web_Server.ino en arduino IDE.
Antaŭ alŝuti la kodon, ne forgesu enigi viajn retajn akreditaĵojn por ke la ESP povu konektiĝi al via loka reto.
Kiel la Kodo Funkcias
Butono Ŝtato kaj Eligo Ŝtato
La ledState variablo tenas la LED-eliga staton. Defaŭlte, kiam la web servilo komenciĝas, ĝi estas LOW.
La butonStato kaj lastButtonState estas uzataj por detekti ĉu la prembutono estis premita aŭ ne.Butono (web servilo)
Ni ne inkludis la HTML por krei la butonon sur la index_html variablo.
Tio estas ĉar ni volas povi ŝanĝi ĝin depende de la nuna LED-stato kiu ankaŭ povas esti ŝanĝita per la prembutono.
Do, ni kreis lokokupilon por la butono %BUTTONPLACEHOLDER% kiu estos anstataŭigita per HTML-teksto por krei la butonon poste sur la kodo (ĉi tio estas farita en la procesoro() funkcio).procesoro ()
La funkcio procesor() anstataŭigas iujn ajn anstataŭaĵojn sur la HTML-teksto per realaj valoroj. Unue, ĝi kontrolas ĉu la HTML-tekstoj enhavas iujn
anstataŭiloj %BUTTONPLACEHOLDER%.Poste, voku theoutputState()-funkcion, kiu resendas la nunan eligan staton. Ni konservas ĝin en la variablo outputStateValue.
Post tio, uzu tiun valoron por krei la HTML-tekston por montri la butonon kun la ĝusta stato:
HTTP GET Peto Ŝanĝi Eligan Ŝtaton (JavaScript)
Kiam vi premas la butonon, la funkcio toggleCheckbox() estas vokita. Ĉi tiu funkcio faros peton pri malsamaj URLs por ŝalti aŭ malŝalti la LED.Por ŝalti la LED, ĝi faras peton sur la /ĝisdatigo?state=1 URL:
Alie, ĝi faras peton sur la /ĝisdatigo?state=0 URL.
HTTP GET Peto por Ĝisdatigi Ŝtaton (JavaScript)
Por konservi la eligŝtaton ĝisdatigita sur la web servilo, ni nomas la sekvan funkcion kiu faras novan peton sur la /stato URL ĉiun sekundon.Pritraktu Petojn
Tiam, ni devas trakti kio okazas kiam la ESP32 aŭ ESP8266 ricevas petojn pri tiuj URLs.
Kiam peto estas ricevita sur la radiko /URL, ni sendas la HTML-paĝon same kiel la procesoron.La sekvaj linioj kontrolas ĉu vi ricevis peton ĉe /update?state=1 aŭ /update?state=0 URL kaj ŝanĝas la ledState laŭe.
Kiam peto estas ricevita sur la /ŝtato URL, ni sendas la nunan eligan staton:
buklo ()
En la buklo (), ni forpuŝas la puŝbutonon kaj ŝaltas aŭ malŝaltas la LED laŭ la valoro de ledState variablo.Manifestacio
Alŝutu la kodon al via ESP32-tabulo.Alŝutu referencajn paŝojn.
Poste, malfermu la Serian Monitoron kun baudrapideco de 115200. Premu la surŝipan butonon EN/RST por akiri la IP-adreson.Malfermu retumilon en via loka reto, kaj tajpu la ESP-IP-adreson. Vi devus havi aliron al la web servilo kiel montrite sube.
Notu: Via retumilo kaj ESP32 devus esti konektitaj al la sama LAN.Vi povas ŝalti la butonon sur la web servilo por ŝalti la LED.
Vi ankaŭ povas kontroli la saman LED per la fizika prembutono. Ĝia stato ĉiam estos ĝisdatigita aŭtomate sur la web servilo.
Projekto 9 ESP32 DHT11 Web Servilo
En ĉi tiu projekto, vi lernos kiel konstrui nesinkronan ESP32 web servilo kun la DHT11 kiu montras temperaturon kaj humidon uzante Arduino IDE.
Antaŭkondiĉoj
La web servilo ni aŭtomate konstruos ĝisdatigojn de la legaĵoj sen neceso refreŝigi la web paĝo.
Kun ĉi tiu projekto vi lernos:
- Kiel legi temperaturon kaj humidon de DHT-sensiloj;
- Konstruu asinkronan web servilo uzante la ESPAsyncWebServila biblioteko;
- Ĝisdatigu la sensilajn legaĵojn aŭtomate sen la bezono refreŝigi la web paĝo.
Nesinkrona Web Servilo
Por konstrui la web servilo ni uzos la ESPAsyncWebServila biblioteko kiu provizas facilan manieron konstrui nesinkronan web servilo. Konstruante asinkronan web servilo havas plurajn advantagestas kiel menciite en la biblioteko GitHub-paĝo, kiel ekzemple:
- "Pritraktu pli ol unu konekton samtempe";
- "Kiam vi sendas la respondon, vi tuj pretas pritrakti aliajn konektojn dum la servilo zorgas sendi la respondon en la fono";
- "Simpla ŝablona pretiga motoro por manipuli ŝablonojn";
Partoj Bezonataj
Por kompletigi ĉi tiun lernilon vi bezonas la jenajn partojn:
- ESP32-disvolva tabulo
- DHT11 Modulo
- Breadboard
- Jumper dratoj
SkemaInstalado de Bibliotekoj
Vi devas instali kelkajn bibliotekojn por ĉi tiu projekto:
- La DHT kaj la Adafruit Unuigita Sensilo Ŝoforbibliotekoj por legi de la DHT-sensilo.
- ESPAsyncWebServilo kaj Nesinkronigi TCP bibliotekoj por konstrui la nesinkronan web servilo.
Sekvu la sekvajn instrukciojn por instali tiujn bibliotekojn:
Instalado de la DHT-Sensilo-Biblioteko
Por legi de la DHT-sensilo uzante Arduino IDE, vi devas instali la DHT-sensilo-biblioteko. Sekvu la sekvajn paŝojn por instali la bibliotekon.
- Klaku ĉi tie por elŝuti la bibliotekon de DHT Sensor. Vi devus havi .zip-dosierujon en via Elŝuta dosierujo
- Malfermu la dosierujon .zip kaj vi devus ricevi DHT-sensor-library-master-dosierujon
- Alinomi vian dosierujon de DHT-sensor-library-master al DHT_sensor
- Movu la dosierujon DHT_sensor al via dosierujo de instalaj bibliotekoj de Arduino IDE
- Fine, remalfermu vian Arduino IDE
Instalante la Adafruit Unified Sensor Driver
Vi ankaŭ devas instali la Biblioteko Adafruit Unified Sensor Driver por labori kun la DHT-sensilo. Sekvu la sekvajn paŝojn por instali la bibliotekon.
- Klaku ĉi tie por elŝuti la bibliotekon de Adafruit Unified Sensor. Vi devus havi .zip-dosierujon en via Elŝuta dosierujo
- Malfermu la dosierujon .zip kaj vi ricevu Adafruit_sensor-master-dosierujon
- Alinomi vian dosierujon de Adafruit_sensor-master al Adafruit_sensor
- Movu la dosierujon Adafruit_sensor al via dosierujo de instalaj bibliotekoj de Arduino IDE
- Fine, remalfermu vian Arduino IDE
Instalante la ESPAsyncWebServila biblioteko
Sekvu la sekvajn paŝojn por instali la ESPAsyncWebServilo biblioteko:
- Klaku ĉi tie por elŝuti la ESPAsyncWebServila biblioteko. Vi devus havi
dosierujo .zip en via Elŝuta dosierujo - Malfermu la dosierujon .zip kaj vi devus
akiri ESPAsyncWebServilo-mastra dosierujo - Alinomi vian dosierujon de ESPAsyncWebServilo-mastro al ESPAsyncWebServilo
- Movu la ESPAsyncWebServila dosierujo al via dosierujo de Arduino IDE-instalaĵbibliotekoj
Instalante la Async TCP-Bibliotekon por ESP32
La ESPAsyncWebServilo biblioteko postulas la AsyncTCP biblioteko por labori. Sekvu la sekvajn paŝojn por instali tiun bibliotekon:
- Klaku ĉi tie por elŝuti la AsyncTCP-bibliotekon. Vi devus havi .zip-dosierujon en via Elŝuta dosierujo
- Malfermu la dosierujon .zip kaj vi devus ricevi AsyncTCP-master-dosierujon
- Alinomi vian dosierujon de AsyncTCP-master al AsyncTCP
- Movu la AsyncTCP-dosierujon al via dosierujo de instaladoj de Arduino IDE
- Fine, remalfermu vian Arduino IDE
Kodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDE
Post instali la postulatajn bibliotekojn, Malfermu la kodon
Projekto_9_ESP32_DHT11_Web_Server.ino en arduino IDE.
Antaŭ alŝuti la kodon, ne forgesu enigi viajn retajn akreditaĵojn por ke la ESP povu konektiĝi al via loka reto.Kiel la Kodo Funkcias
En la sekvaj alineoj ni klarigos kiel funkcias la kodo. Daŭre legu se vi volas lerni pli aŭ salti al la sekcio pri pruvo por vidi la finan rezulton.
Importado de bibliotekoj
Unue, importu la bezonatajn bibliotekojn. La WiFi, ESPAsyncWebServilo kaj la ESPAsyncTCP estas necesaj por konstrui la web servilo. La Adafruit_Sensor kaj la DHT-bibliotekoj estas bezonataj por legi de la DHT11 aŭ DHT22-sensiloj.Difino de variabloj
Difinu la GPIO, al kiu la DHT-datumpinglo estas konektita. En ĉi tiu kazo, ĝi estas konektita al GPIO 4.Poste, elektu la DHT-sensilon, kiun vi uzas. En nia eksample, ni uzas la DHT22. Se vi uzas alian tipon, vi nur bezonas malkomenti vian sensilon kaj komenti ĉiujn aliajn.
Instancigu DHT-objekton per la tipo kaj pinglo, kiun ni antaŭe difinis.Krei AsyncWebServila objekto sur haveno 80.
Legu Funkciojn pri Temperaturo kaj Humideco
Ni kreis du funkciojn: unu por legi la temperaturon Ni kreis du funkciojn: unu por legi la temperaturon (readDHTTemperature()) kaj la alia por legi humidon (readDHTHhumidity()).Akiri sensillegaĵojn estas tiel simpla kiel uzi Akiri sensillegaĵojn estas tiel simpla kiel uzi la readTemperature() kaj readHumidity()metodoj sur la dht-objekto.
Ni ankaŭ havas kondiĉon, kiu resendas du strekojn (–) se la sensilo malsukcesas akiri la legaĵojn.
La legaĵoj estas resenditaj kiel ĉenspeco. Por konverti flosilon al ŝnuro, uzu la funkcion String().
Defaŭlte, ni legas la temperaturon en celsiaj gradoj. Por akiri la temperaturon en Fahrenheit-gradoj, komentu la temperaturon en Celsius kaj malkomenti la temperaturon en Fahrenheit, por ke vi havu la jenon:
Alŝutu la Kodon
Nun alŝutu la kodon al via ESP32. Certiĝu, ke vi havas la ĝustan tabulon kaj COM-havenon elektitan.Alŝutu kodajn referencajn paŝojn.
Post alŝuto, malfermu la Serian Monitoron kun baudrapideco de 115200. Premu la butonon de rekomencigita ESP32. La IP-adreso de ESP32 estu presita en la serialo monitoro.Manifestacio
Malfermu retumilon kaj tajpu la IP-adreson de ESP32. Via web servilo devus montri la lastajn sensilojn.
Notu: Via retumilo kaj ESP32 devus esti konektitaj al la sama LAN.
Rimarku, ke la legaĵoj de temperaturo kaj humideco estas ĝisdatigitaj aŭtomate sen neceso refreŝigi la web paĝo.
Project_10_ESP32_OLED_Display
Ĉi tiu projekto montras kiel uzi la ekranon OLED de 0.96 coloj SSD1306 kun ESP32 uzante Arduino IDE.
Enkondukas 0.96 colojn OLED-ekranon
La OLED-ekrano kiun ni uzos en ĉi tiu lernilo estas la SSD1306-modelo: unukolora, 0.96 coloj ekrano kun 128×64 pikseloj kiel montrite en la sekva figuro.La OLED-ekrano ne postulas retrolumon, kio rezultigas tre belan kontraston en malhelaj medioj. Aldone, ĝiaj pikseloj konsumas energion nur kiam ili estas ŝaltitaj, do la OLED-ekrano konsumas malpli da potenco kompare kun aliaj ekranoj.
Ĉar la OLED-ekrano uzas komunikadprotokolon I2C, kablado estas tre simpla. Vi povas uzi la sekvan tabelon kiel referencon.
OLED Pinglo | ESP32 |
Vin | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
SkemaInstalado de SSD1306 OLED-Biblioteko - ESP32
Estas pluraj bibliotekoj disponeblaj por kontroli la OLED-ekranon kun la ESP32.
En ĉi tiu lernilo ni uzos du Adafruit-bibliotekojn: Biblioteko Adafruit_SSD1306 kaj Adafruit_GFX-biblioteko.
Sekvu la sekvajn paŝojn por instali tiujn bibliotekojn.
- Malfermu vian Arduino IDE kaj iru al Sketch> Inkluzivi Bibliotekon> Administri Bibliotekojn. La Biblioteka Administranto devus malfermiĝi.
- Tajpu "SSD1306" en la serĉkesto kaj instalu la SSD1306-bibliotekon de Adafruit.
- Post instalo de la biblioteko SSD1306 de Adafruit, tajpu "GFX" en la serĉkesto kaj instalu la bibliotekon.
- Post instalo de la bibliotekoj, rekomencu vian Arduino-IDE.
Kodo
Post instali la postulatajn bibliotekojn, Malfermu la Project_10_ESP32_OLED_Display.ino en arduino IDE. kodo
Ni programos la ESP32 per Arduino IDE, do certigu, ke vi havas la ESP32-aldonaĵon instalita antaŭ ol daŭrigi: (Se vi jam faris ĉi tiun paŝon, vi povas salti al la sekva paŝo.)
Instalante ESP32-aldonaĵon en Arduino IDEKiel la Kodo Funkcias
Importado de bibliotekoj
Unue, vi devas importi la necesajn bibliotekojn. La Wire-biblioteko por uzi I2C kaj la Adafruit-bibliotekojn por skribi al la ekrano: Adafruit_GFX kaj Adafruit_SSD1306.Komencu la OLED-ekranon
Tiam vi difinas vian OLED-larĝon kaj altecon. En ĉi tiu ekzample, ni uzas ekranon OLED de 128×64. Se vi uzas aliajn grandecojn, vi povas ŝanĝi tion en la variabloj SCREEN_WIDTH kaj SCREEN_HEIGHT.Poste, pravigu ekranobjekton kun la larĝo kaj alteco difinitaj antaŭe per I2C-komunika protokolo (&Drato).
La (-1) parametro signifas, ke via OLED-ekrano ne havas RESET-pinglon. Se via OLED-ekrano havas RESET-pinglon, ĝi devus esti konektita al GPIO. En tiu kazo, vi devus pasi la GPIO-numeron kiel parametron.
En la agordo (), pravigu la Serian Monitoron je baŭda rapido de 115200 por sencimigaj celoj.Komencu la OLED-ekranon per la metodo begin() jene:
Ĉi tiu fragmento ankaŭ presas mesaĝon sur la Seria Monitoro, se ni ne povos konektiĝi al la ekrano.
Se vi uzas alian OLED-ekranon, vi eble bezonos ŝanĝi la OLED-adreson. En nia kazo, la adreso estas 0x3C.
Post komencado de la ekrano, aldonu du sekundojn, por ke la OLED havu sufiĉe da tempo por pravalorigi antaŭ skribi tekston:
Klara ekrano, agordu tiparon, koloron kaj skribu tekston
Post komencado de la ekrano, malplenigu la ekranbufon per la metodo clearDisplay():
Antaŭ skribi tekston, vi devas agordi la tekstan grandecon, koloron kaj kie la teksto estos montrita en la OLED.
Agordu la tiparon per la metodo setTextSize():Agordu la tiparkoloron per la metodo setTextColor():
BLANKA fiksas blankan tiparon kaj nigran fonon.
Difinu la pozicion kie la teksto komenciĝas per la metodo setCursor(x,y). En ĉi tiu kazo, ni agordas la tekston por komenci ĉe la (0,0) koordinatoj - ĉe la supra maldekstra angulo.Fine, vi povas sendi la tekston al la ekrano uzante la println()-metodon, jene
Tiam vi devas voki la metodon display() por efektive montri la tekston sur la ekrano.
La Adafruit OLED-biblioteko provizas utilajn metodojn por facile rulumi tekston.
- startscrollright(0x00, 0x0F): rulumu tekston de maldekstre dekstren
- startscrollleft(0x00, 0x0F): rulumu tekston de dekstre al maldekstre
- startscrolldiagright(0x00, 0x07): rulumu tekston de maldekstra malsupra angulo al dekstra supra angulo startscrolldiagleft(0x00, 0x07): rulumu tekston de dekstra malsupra angulo ĝis maldekstra supra angulo
Alŝutu la Kodon
Nun, alŝutu la kodon al via ESP32.Alŝutu referencajn paŝojn.
Post alŝuto de la kodo, la OLED montros ruliĝantan tekston.
Dokumentoj/Rimedoj
![]() |
LAFVIN ESP32 Baza Komenca Ilaro [pdf] Instrukcia Manlibro ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |