Osnovni starter ESP32
Kit
Popis pakiranja
ESP32 Uvod
Novi ste u ESP32? Počnite ovdje! ESP32 je niz jeftinih mikrokontrolera sustava na čipu (SoC) koje je razvio Espressif i koji uključuju Wi-Fi i Bluetooth bežične mogućnosti i dvojezgreni procesor. Ako ste upoznati s ESP8266, ESP32 je njegov nasljednik, pun puno novih značajki.ESP32 Specifikacije
Ako želite biti malo tehničkiji i specifičniji, možete pogledati sljedeće detaljne specifikacije ESP32 (izvor: http://esp32.net/)—za više detalja, provjeri podatkovnu tablicu):
- Bežično povezivanje WiFi: brzina prijenosa podataka od 150.0 Mbps s HT40
- Bluetooth: BLE (Bluetooth Low Energy) i Bluetooth Classic
- Procesor: Tensilica Xtensa Dual-Core 32-bit LX6 mikroprocesor, radi na 160 ili 240 MHz
- Memorija:
- ROM: 448 KB (za pokretanje i osnovne funkcije)
- SRAM: 520 KB (za podatke i upute)
- RTC brzi SRAM: 8 KB (za pohranu podataka i glavni CPU tijekom RTC pokretanja iz načina dubokog mirovanja)
- RTC spori SRAM: 8 KB (za pristup koprocesora tijekom dubokog mirovanja) eFuse: 1 Kbit (od čega se 256 bita koristi za sustav (MAC adresa i konfiguracija čipa), a preostalih 768 bita rezervirano je za korisničke aplikacije, uključujući Flash-enkripcija i Chip-ID)
Ugrađena bljeskalica: bljeskalica povezana interno putem IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 i SD_DATA_1 na ESP32-D2WD i ESP32-PICO-D4.
- 0 MiB (čipovi ESP32-D0WDQ6, ESP32-D0WD i ESP32-S0WD)
- 2 MiB (ESP32-D2WD čip)
- 4 MiB (ESP32-PICO-D4 SiP modul)
Low Power: osigurava da i dalje možete koristiti ADC konverzije, na primjerample, tijekom dubokog sna.
Periferni ulaz/izlaz:
- periferno sučelje s DMA koje uključuje kapacitivni dodir
- ADC (analogno-digitalni pretvarač)
- DAC (Digitalno-analogni pretvarač)
- I²C (interintegrirani krug)
- UART (Univerzalni asinkroni prijemnik/odašiljač)
- SPI (Serial Peripheral Interface)
- I²S (Integrirani interchip zvuk)
- RMII (Smanjeno sučelje neovisno o medijima)
- PWM (modulacija širine impulsa)
Sigurnost: hardverski akceleratori za AES i SSL/TLS
Razvojne ploče ESP32
ESP32 se odnosi na čisti ESP32 čip. Međutim, izraz "ESP32" također se koristi za označavanje ESP32 razvojnih ploča. Korištenje golih čipova ESP32 nije jednostavno niti praktično, osobito pri učenju, testiranju i izradi prototipova. Većinu vremena ćete htjeti koristiti ESP32 razvojnu ploču.
Koristit ćemo ploču ESP32 DEVKIT V1 kao referencu. Slika ispod prikazuje ploču ESP32 DEVKIT V1, verziju s 30 GPIO pinova.Specifikacije – ESP32 DEVKIT V1
Sljedeća tablica prikazuje sažetak značajki i specifikacija ploče ESP32 DEVKIT V1 DOIT:
Broj jezgri | 2 (dvojezgreni) |
Wi-Fi | 2.4 GHz do 150 Mbit/s |
Bluetooth | BLE (Bluetooth Low Energy) i naslijeđeni Bluetooth |
Arhitektura | 32 bita |
Frekvencija sata | Do 240 MHz |
OVAN | 512 KB |
Igle | 30 (ovisno o modelu) |
Periferije | Kapacitivni dodir, ADC (analogno-digitalni pretvarač), DAC (digitalno-analogni pretvarač), 12C (Inter-Integrated Circuit), UART (univerzalni asinkroni prijemnik/odašiljač), CAN 2.0 (Controller Area Netwokr), SPI (Serial Peripheral Interface) , 12S (Integrirani Inter-IC Zvuk), RMII (smanjeno sučelje neovisno o medijima), PWM (modulacija širine pulsa) i više. |
Ugrađeni gumbi | Tipke RESET i BOOT |
Ugrađene LED diode | ugrađeni plavi LED spojen na GPIO2; ugrađena crvena LED dioda koja pokazuje da se ploča napaja |
USB na UART most |
CP2102 |
Dolazi s microUSB sučeljem koje možete koristiti za spajanje ploče na računalo za učitavanje koda ili uključivanje napajanja.
Koristi CP2102 čip (USB na UART) za komunikaciju s vašim računalom putem COM porta pomoću serijskog sučelja. Još jedan popularan čip je CH340. Provjerite koji je pretvarač USB u UART čip na vašoj ploči jer ćete morati instalirati potrebne upravljačke programe kako bi vaše računalo moglo komunicirati s pločom (više informacija o tome kasnije u ovom vodiču).
Ova ploča također dolazi s gumbom RESET (može imati oznaku EN) za ponovno pokretanje ploče i gumbom BOOT za stavljanje ploče u način rada treptanja (dostupan za primanje koda). Imajte na umu da neke ploče možda nemaju gumb BOOT.
Također dolazi s ugrađenim plavim LED-om koji je interno povezan s GPIO 2. Ovaj LED je koristan za otklanjanje pogrešaka kako bi dao neku vrstu vizualnog fizičkog izlaza. Tu je i crvena LED dioda koja svijetli kada napajate ploču.ESP32 Pinout
ESP32 periferije uključuju:
- 18 kanala analogno-digitalnog pretvarača (ADC).
- 3 SPI sučelja
- 3 UART sučelja
- 2 I2C sučelja
- 16 PWM izlazna kanala
- 2 digitalno-analogna pretvarača (DAC)
- 2 I2S sučelja
- 10 GPIO s kapacitivnim senzorom
Značajke ADC (analogno-digitalni pretvarač) i DAC (digitalno-analogni pretvarač) dodijeljene su određenim statičkim pinovima. Međutim, možete odlučiti koji su pinovi UART, I2C, SPI, PWM itd. - samo ih trebate dodijeliti u kodu. To je moguće zahvaljujući značajki multipleksiranja ESP32 čipa.
Iako možete definirati svojstva pinova u softveru, postoje pinovi dodijeljeni prema zadanim postavkama kao što je prikazano na sljedećoj sliciOsim toga, postoje igle s posebnim značajkama koje ih čine prikladnima ili ne za određeni projekt. Sljedeća tablica pokazuje koje je pinove najbolje koristiti kao ulaze, izlaze i na koje morate biti oprezni.
Pribadače označene zelenom bojom mogu se koristiti. Oni označeni žutom bojom su u redu za korištenje, ali morate obratiti pozornost jer se mogu neočekivano ponašati uglavnom pri dizanju sustava. Pinove označene crvenom bojom ne preporučuje se koristiti kao ulaze ili izlaze.
GP IO | Ulazni | Izlaz | Bilješke |
0 | povukao se | OK | emitira PWM signal pri pokretanju, mora biti LOW za ulazak u način rada treptanja |
1 | TX pin | OK | ispravljanje pogrešaka pri dizanju |
2 | OK | OK | spojen na LED diodu na ploči, mora biti ostavljen da pluta ili LOW da biste ušli u način rada treptanja |
3 | OK | RX pin | VISOKO pri dizanju |
4 | OK | OK | |
5 | OK | OK | daje PWM signal pri pokretanju, igla za vezivanje |
12 | OK | OK | prtljažnik kvari ako se povuče visoko, igla za vezivanje |
13 | OK | OK | |
14 | OK | OK | daje PWM signal pri pokretanju |
15 | OK | OK | daje PWM signal pri pokretanju, igla za vezivanje |
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 | samo unos | |
35 | OK | samo unos | |
36 | OK | samo unos | |
39 | OK | samo unos |
Nastavite čitati za detaljniju i dubinsku analizu ESP32 GPIO-a i njegovih funkcija.
Unesite samo pribadače
GPIO-ovi 34 do 39 su GPI-ovi – pinovi samo za unos. Ovi pinovi nemaju unutarnje pull-up ili pull-down otpornike. Ne mogu se koristiti kao izlazi, stoga koristite ove pinove samo kao ulaze:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI bljeskalica integrirana na ESP-WROOM-32
GPIO 6 do GPIO 11 izloženi su u nekim ESP32 razvojnim pločama. Međutim, te su igle spojene na integrirani SPI flash na ESP-WROOM-32 čipu i ne preporučuju se za druge svrhe. Dakle, nemojte koristiti ove pribadače u svojim projektima:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapacitivni dodirni GPIO-ovi
ESP32 ima 10 internih kapacitivnih senzora za dodir. Oni mogu osjetiti varijacije u bilo čemu što ima električni naboj, poput ljudske kože. Tako mogu otkriti varijacije izazvane dodirivanjem GPIO-a prstom. Ove se igle mogu jednostavno integrirati u kapacitivne jastučiće i zamijeniti mehaničke tipke. Kapacitivni dodirni pinovi također se mogu koristiti za buđenje ESP32 iz dubokog sna. Ti unutarnji senzori dodira povezani su s ovim GPIO-ima:
- 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)
Analogno-digitalni pretvarač (ADC)
ESP32 ima 18 x 12 bita ADC ulazne kanale (dok ESP8266 ima samo 1 x 10 bita ADC). Ovo su GPIO-ovi koji se mogu koristiti kao ADC i odgovarajući kanali:
- 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)
Bilješka: ADC2 pinovi se ne mogu koristiti kada se koristi Wi-Fi. Dakle, ako koristite Wi-Fi i imate problema s dobivanjem vrijednosti od ADC2 GPIO, razmislite o korištenju ADC1 GPIO umjesto toga. To bi trebalo riješiti tvoj problem.
ADC ulazni kanali imaju 12-bitnu rezoluciju. To znači da možete dobiti analogna očitanja u rasponu od 0 do 4095, pri čemu 0 odgovara 0V, a 4095 do 3.3V. Također možete postaviti razlučivost svojih kanala na kod i ADC raspon.
ESP32 ADC pinovi nemaju linearno ponašanje. Vjerojatno nećete moći razlikovati između 0 i 0.1 V ili između 3.2 i 3.3 V. Morate to imati na umu kada koristite ADC pinove. Dobit ćete ponašanje slično onom prikazanom na sljedećoj slici.Digitalno-analogni pretvarač (DAC)
Postoje 2 x 8 bita DAC kanala na ESP32 za pretvaranje digitalnih signala u analogni voltage signalni izlazi. Ovo su DAC kanali:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO-ovi
Postoji RTC GPIO podrška na ESP32. GPIO-ovi usmjereni na RTC podsustav niske potrošnje mogu se koristiti kada je ESP32 u dubokom stanju mirovanja. Ovi RTC GPIO-ovi mogu se koristiti za buđenje ESP32 iz dubokog sna kada je Ultra Low
Power (ULP) koprocesor radi. Sljedeći GPIO-ovi mogu se koristiti kao vanjski izvor buđenja.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
PWM
ESP32 LED PWM kontroler ima 16 neovisnih kanala koji se mogu konfigurirati za generiranje PWM signala s različitim svojstvima. Svi pinovi koji mogu djelovati kao izlazi mogu se koristiti kao PWM pinovi (GPIO-ovi 34 do 39 ne mogu generirati PWM).
Za postavljanje PWM signala morate definirati ove parametre u kodu:
- Frekvencija signala;
- Radni ciklus;
- PWM kanal;
- GPIO gdje želite poslati signal.
I2C
ESP32 ima dva I2C kanala i bilo koji pin se može postaviti kao SDA ili SCL. Kada koristite ESP32 s Arduino IDE, zadani I2C pinovi su:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Ako želite koristiti druge pinove kada koristite žičanu knjižnicu, trebate samo nazvati:
Wire.begin(SDA, SCL);
SPI
Prema zadanim postavkama, mapiranje pinova za SPI je:
SPI | TRAĆITI VRIJEME | Miso | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
prekida
Svi GPIO-i mogu se konfigurirati kao prekidi.
Igle za vezivanje
ESP32 čip ima sljedeće igle za vezivanje:
- GPIO 0 (mora biti LOW za ulazak u način pokretanja)
- GPIO 2 (mora biti plutajući ili LOW tijekom pokretanja)
- GPIO 4
- GPIO 5 (mora biti HIGH tijekom pokretanja)
- GPIO 12 (mora biti LOW tijekom pokretanja)
- GPIO 15 (mora biti HIGH tijekom pokretanja)
Oni se koriste za stavljanje ESP32 u bootloader ili flash mod. Na većini razvojnih ploča s ugrađenim USB/Serial, ne morate brinuti o stanju ovih pinova. Ploča stavlja pinove u ispravno stanje za flashanje ili način pokretanja. Više informacija o odabiru načina pokretanja ESP32 možete pronaći ovdje.
Međutim, ako imate periferne uređaje spojene na te pinove, možda ćete imati problema s pokušajem učitavanja novog koda, bljeskanjem ESP32 s novim firmwareom ili resetiranjem ploče. Ako imate neke periferne uređaje spojene na igle za vezivanje i imate problema s učitavanjem koda ili bljeskanjem ESP32, to može biti zato što ti periferni uređaji sprječavaju ESP32 da uđe u pravi način rada. Pročitajte dokumentaciju o odabiru načina pokretanja koja će vas voditi u pravom smjeru. Nakon resetiranja, flashanja ili dizanja, ti pinovi rade kako se očekuje.
Igle VISOKE na prtljažniku
Neki GPIO mijenjaju svoje stanje u HIGH ili emitiraju PWM signale pri pokretanju ili resetiranju.
To znači da ako imate izlaze povezane s ovim GPIO-ovima, možete dobiti neočekivane rezultate kada se ESP32 resetira ili pokrene.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 do GPIO 11 (spojen na ESP32 integriranu SPI flash memoriju – ne preporučuje se upotreba).
- GPIO 14
- GPIO 15
Omogući (EN)
Enable (EN) je pin za uključivanje regulatora od 3.3 V. Povučen je prema gore, pa spojite na masu da onemogućite regulator od 3.3 V. To znači da možete koristiti ovaj pin spojen na tipku za ponovno pokretanje vašeg ESP32, na primjerample.
Potrošena struja GPIO
Apsolutna najveća struja koja se troši po GPIO je 40 mA prema odjeljku "Preporučeni radni uvjeti" u podatkovnoj tablici ESP32.
ESP32 ugrađeni Hallov senzor
ESP32 također ima ugrađeni Hallov senzor koji detektira promjene u magnetskom polju u svojoj okolini
ESP32 Arduino IDE
Postoji dodatak za Arduino IDE koji vam omogućuje programiranje ESP32 koristeći Arduino IDE i njegov programski jezik. U ovom vodiču ćemo vam pokazati kako instalirati ESP32 ploču u Arduino IDE bilo da koristite Windows, Mac OS X ili Linux.
Preduvjeti: Instaliran Arduino IDE
Prije nego započnete ovu instalacijsku proceduru, trebate imati Arduino IDE instaliran na vašem računalu. Postoje dvije verzije Arduino IDE koje možete instalirati: verzija 1 i verzija 2.
Arduino IDE možete preuzeti i instalirati klikom na sljedeću poveznicu: arduino.cc/en/Main/Software
Koju Arduino IDE verziju preporučujemo? Trenutno ih ima plugins za ESP32 (kao SPIFFS FileSystem Uploader Plugin) koji još nisu podržani na Arduinu 2. Dakle, ako namjeravate koristiti SPIFFS dodatak u budućnosti, preporučujemo instaliranje starije verzije 1.8.X. Samo se trebate pomaknuti prema dolje na stranici Arduino softvera da biste ga pronašli.
Instaliranje ESP32 dodatka u Arduino IDE
Za instaliranje ESP32 ploče u vaš Arduino IDE, slijedite sljedeće upute:
- U vašem Arduino IDE idite na File> Postavke
- Unesite sljedeće u "Additional Board Manager URLs” polje:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Zatim kliknite gumb "U redu":Bilješka: ako već imate ESP8266 ploče URL, možete odvojiti URLs sa zarezom kako slijedi:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Otvorite upravitelj ploča. Idite na Alati > Ploča > Upravitelj ploča…Tražiti ESP32 and press install button for the “ESP32 by Espressif Systems“:
To je to. Trebao bi biti instaliran nakon nekoliko sekundi.
Prenesi testni kod
Priključite ESP32 ploču na svoje računalo. Dok je Arduino IDE otvoren, slijedite ove korake:
- Odaberite svoju ploču u izborniku Alati > Ploča (u mom slučaju to je ESP32 DEV modul)
- Odaberite priključak (ako ne vidite COM priključak u vašem Arduino IDE-u, morate instalirati CP210x USB to UART Bridge VCP upravljačke programe):
- Otvorite sljedeći example ispod File > Npramples > WiFi
(ESP32) > WiFiScan - Otvara se nova skica u vašem Arduino IDE:
- Pritisnite gumb Upload u Arduino IDE. Pričekajte nekoliko sekundi dok se kod kompajlira i učita na vašu ploču.
- Ako je sve prošlo prema očekivanjima, trebali biste vidjeti "Dovršeno učitavanje". poruka.
- Otvorite Arduino IDE serijski monitor brzinom prijenosa od 115200:
- Pritisnite gumb za uključivanje ESP32 na ploči i trebali biste vidjeti mreže dostupne u blizini vašeg ESP32:
Rješavanje problema
Ako pokušate prenijeti novu skicu na svoj ESP32 i dobijete ovu poruku o pogrešci "Dogodila se fatalna pogreška: Nije uspjelo povezivanje s ESP32: isteklo je vrijeme... Povezivanje...". To znači da vaš ESP32 nije u načinu bljeskanja/učitavanja.
Nakon što odaberete pravo ime ploče i COM por, slijedite ove korake:
Držite tipku "BOOT" na vašoj ESP32 ploči
- Pritisnite gumb "Upload" u Arduino IDE za prijenos vaše skice:
- Nakon što vidite "Povezivanje...." poruku u vašem Arduino IDE-u, pustite prst s gumba "BOOT":
- Nakon toga, trebali biste vidjeti poruku "Done uploading".
To je to. Vaš ESP32 trebao bi pokretati novu skicu. Pritisnite tipku “ENABLE” za ponovno pokretanje ESP32 i pokretanje nove učitane skice.
Također ćete morati ponoviti taj niz gumba svaki put kada želite prenijeti novu skicu.
Projekt 1 ESP32 Ulazi Izlazi
U ovom vodiču za početak naučit ćete kako čitati digitalne ulaze poput prekidača i upravljati digitalnim izlazima poput LED-a pomoću ESP32 s Arduino IDE.
Preduvjeti
Programirat ćemo ESP32 koristeći Arduino IDE. Dakle, prije nastavka provjerite imate li instaliran dodatak za ESP32 ploče:
- Instaliranje ESP32 dodatka u Arduino IDE
ESP32 Kontrolni digitalni izlazi
Prvo trebate postaviti GPIO koji želite kontrolirati kao IZLAZ. Koristite funkciju pinMode() na sljedeći način:
pinMode(GPIO, IZLAZ);
Za kontrolu digitalnog izlaza samo trebate koristiti funkciju digitalWrite(), koja kao argumente prihvaća GPIO (int broj) na koji se pozivate i stanje, bilo HIGH ili LOW.
digitalWrite(GPIO, STANJE);
Svi GPIO-ovi se mogu koristiti kao izlazi osim GPIO-a 6 do 11 (povezani s integriranim SPI flashom) i GPIO-a 34, 35, 36 i 39 (GPIO-ovi samo za ulaz);
Saznajte više o ESP32 GPIO-ima: Referentni vodič za ESP32 GPIO
ESP32 Čitajte digitalne ulaze
Prvo postavite GPIO koji želite čitati kao INPUT, koristeći funkciju pinMode() na sljedeći način:
pinMode(GPIO, INPUT);
Za čitanje digitalnog unosa, poput gumba, koristite funkciju digitalRead(), koja kao argument prihvaća GPIO (int broj) na koji se pozivate.
digitalRead(GPIO);
Svi ESP32 GPIO-i mogu se koristiti kao ulazi, osim GPIO-ova 6 do 11 (povezanih s integriranim SPI flashom).
Saznajte više o ESP32 GPIO-ima: Referentni vodič za ESP32 GPIO
Projekt Example
Da bismo vam pokazali kako koristiti digitalne ulaze i digitalne izlaze, napravit ćemo jednostavan projekt nprample s tipkalom i LED diodom. Očitat ćemo stanje tipke i prema tome upaliti LED kao što je prikazano na sljedećoj slici.
Potrebni dijelovi
Evo popisa dijelova koji su vam potrebni za izgradnju kruga:
- ESP32 DEVKIT V1
- 5 mm LED
- Otpor 220 Ohma
- Tipkalo
- Otpornik od 10 kOhma
- Breadboard
- Premosne žice
Shematski dijagram
Prije nego što nastavite, trebate sastaviti krug s LED-om i tipkom.
Spojit ćemo LED na GPIO 5, a tipku na GPIO 4.Kodirati
Otvorite kod Project_1_ESP32_Inputs_Outputs.ino u arduino IDEKako Kodeks funkcionira
U sljedeća dva retka kreirate varijable za dodjelu pinova:
Gumb je spojen na GPIO 4, a LED je spojen na GPIO 5. Kada koristite Arduino IDE s ESP32, 4 odgovara GPIO 4, a 5 odgovara GPIO 5.
Zatim kreirate varijablu za zadržavanje stanja gumba. Prema zadanim postavkama, to je 0 (nije pritisnuto).
int buttonState = 0;
U setup(), inicijalizirate gumb kao ULAZ, a LED kao IZLAZ.
Za to koristite funkciju pinMode() koja prihvaća pin na koji se pozivate i način: INPUT ili OUTPUT.
pinMode(gumbPin, INPUT);
pinMode(ledPin, IZLAZ);
U petlji () očitavate stanje gumba i prema tome postavljate LED.
U sljedećem retku čitate stanje gumba i spremate ga u varijablu buttonState.
Kao što smo već vidjeli, koristite funkciju digitalRead().
buttonState = digitalRead(buttonPin);
Sljedeća naredba if provjerava je li stanje gumba HIGH. Ako jest, pali LED pomoću funkcije digitalWrite() koja kao argument prihvaća ledPin i stanje HIGH.
if (buttonState == HIGH)Ako stanje gumba nije VISOKO, isključit ćete LED. Jednostavno postavite LOW kao drugi argument u funkciji digitalWrite().
Učitavanje koda
Prije nego što kliknete gumb za prijenos, idite na Alati > Ploča i odaberite ploču :DOIT ESP32 DEVKIT V1.
Idite na Alati > Priključak i odaberite COM priključak na koji je ESP32 spojen. Zatim pritisnite gumb za prijenos i pričekajte poruku "Done uploading".Napomena: Ako vidite puno točaka (povezivanje…__…__) na prozoru za otklanjanje pogrešaka i poruku "Neuspješno povezivanje s ESP32: isteklo vrijeme čekanja zaglavlja paketa", to znači da morate pritisnuti ESP32 on-board BOOT gumb nakon točaka
počinju se pojavljivati.Rješavanje problema
Demonstracija
Nakon učitavanja koda testirajte svoj sklop. Vaš LED bi trebao svijetliti kada pritisnete tipku:I isključi kada ga pustiš:
Projekt 2 ESP32 analogni ulazi
Ovaj projekt pokazuje kako čitati analogne ulaze s ESP32 koristeći Arduino IDE.
Analogno očitavanje je korisno za očitavanje vrijednosti s promjenjivih otpornika poput potenciometara ili analognih senzora.
Analogni ulazi (ADC)
Očitavanje analogne vrijednosti s ESP32 znači da možete mjeriti različite voltage razine između 0 V i 3.3 V.
VoltagIzmjereni e tada se dodjeljuje vrijednosti između 0 i 4095, u kojoj 0 V odgovara 0, a 3.3 V odgovara 4095. Bilo koja vol.tage između 0 V i 3.3 V dobit će odgovarajuću vrijednost između.ADC je nelinearan
U idealnom slučaju, očekivali biste linearno ponašanje kada koristite ESP32 ADC pinove.
Međutim, to se ne događa. Dobit ćete ponašanje kao što je prikazano na sljedećoj tablici:Ovo ponašanje znači da vaš ESP32 ne može razlikovati 3.3 V od 3.2 V.
Dobit ćete istu vrijednost za oba voltages: 4095.
Isto se događa za vrlo nisku voltage vrijednosti: za 0 V i 0.1 V dobit ćete istu vrijednost: 0. Ovo morate imati na umu kada koristite ESP32 ADC pinove.
funkcija analogRead().
Čitanje analognog ulaza s ESP32 pomoću Arduino IDE jednostavno je kao korištenje funkcije analogRead(). Kao argument prihvaća GPIO koji želite čitati:
analogno čitanje (GPIO);
Samo 15 ih je dostupno u DEVKIT V1board (verzija s 30 GPIO-ova).
Uzmite pinout svoje ESP32 ploče i locirajte ADC pinove. One su označene crvenim rubom na donjoj slici.Ovi analogni ulazni pinovi imaju 12-bitnu rezoluciju. To znači da kada čitate analogni ulaz, njegov raspon može varirati od 0 do 4095.
Napomena: ADC2 pinovi se ne mogu koristiti kada se koristi Wi-Fi. Dakle, ako koristite Wi-Fi i imate problema s dobivanjem vrijednosti od ADC2 GPIO, razmislite o korištenju ADC1 GPIO umjesto toga, to bi trebalo riješiti vaš problem.
Da vidimo kako je sve povezano, napravit ćemo jednostavan example za očitavanje analogne vrijednosti s potenciometra.
Potrebni dijelovi
Za ovu bivšuample, potrebni su vam sljedeći dijelovi:
- ESP32 DEVKIT V1 ploča
- Potenciometar
- Breadboard
- Premosne žice
Shematski
Spojite potenciometar na svoj ESP32. Srednji pin potenciometra trebao bi biti spojen na GPIO 4. Možete koristiti sljedeći shematski dijagram kao referencu.Kodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Otvorite kod Project_2_ESP32_Inputs_Outputs.ino u arduino IDEOvaj kod jednostavno čita vrijednosti s potenciometra i ispisuje te vrijednosti u serijskom monitoru.
U kodu počinjete definiranjem GPIO-a na koji je potenciometar spojen. U ovom prample, GPIO 4.U setup(), inicijalizirajte serijsku komunikaciju pri brzini prijenosa od 115200 bauda.
U petlji() koristite funkciju analogRead() za čitanje analognog ulaza s potPin-a.
Na kraju ispišite vrijednosti očitane s potenciometra u serijskom monitoru.
Učitajte dostavljeni kod na svoj ESP32. Provjerite jeste li u izborniku Alati odabrali pravu ploču i COM port.
Testiranje Example
Nakon učitavanja koda i pritiskanja gumba za resetiranje ESP32, otvorite serijski monitor pri brzini prijenosa podataka od 115200. Okrenite potenciometar i pogledajte kako se vrijednosti mijenjaju.Maksimalna vrijednost koju ćete dobiti je 4095, a minimalna vrijednost je 0.
Završavanje
U ovom ste članku naučili kako čitati analogne ulaze pomoću ESP32 s Arduino IDE. Ukratko:
- ESP32 DEVKIT V1 DOIT ploča (verzija s 30 pinova) ima 15 ADC pinova koje možete koristiti za čitanje analognih ulaza.
- Ovi pinovi imaju rezoluciju od 12 bita, što znači da možete dobiti vrijednosti od 0 do 4095.
- Da biste pročitali vrijednost u Arduino IDE-u, jednostavno koristite funkciju analogRead().
- ESP32 ADC pinovi nemaju linearno ponašanje. Vjerojatno nećete moći razlikovati između 0 i 0.1 V ili između 3.2 i 3.3 V. Morate to imati na umu kada koristite ADC pinove.
Projekt 3 ESP32 PWM (analogni izlaz)
U ovom vodiču ćemo vam pokazati kako generirati PWM signale s ESP32 pomoću Arduino IDE. Kao bivšiampNapravit ćemo jednostavan krug koji prigušuje LED pomoću LED PWM kontrolera ESP32.ESP32 LED PWM kontroler
ESP32 ima LED PWM kontroler sa 16 neovisnih kanala koji se mogu konfigurirati za generiranje PWM signala s različitim svojstvima.
Evo koraka koje ćete morati slijediti kako biste zatamnili LED s PWM-om pomoću Arduino IDE:
- Prvo morate odabrati PWM kanal. Postoji 16 kanala od 0 do 15.
- Zatim morate postaviti frekvenciju PWM signala. Za LED, frekvencija od 5000 Hz je u redu za korištenje.
- Također morate postaviti rezoluciju radnog ciklusa signala: imate rezolucije od 1 do 16 bita. Koristit ćemo 8-bitnu razlučivost, što znači da možete kontrolirati svjetlinu LED-a pomoću vrijednosti od 0 do 255.
- Zatim morate odrediti na kojem GPIO ili GPIO će se signal pojaviti. Za to ćete koristiti sljedeću funkciju:
ledcAttachPin(GPIO, kanal)
Ova funkcija prihvaća dva argumenta. Prvi je GPIO koji će poslati signal, a drugi je kanal koji će generirati signal. - Konačno, za kontrolu svjetline LED-a pomoću PWM-a, koristite sljedeću funkciju:
ledcWrite(kanal, radni ciklus)
Ova funkcija prihvaća kao argumente kanal koji generira PWM signal i radni ciklus.
Potrebni dijelovi
Za praćenje ovog vodiča potrebni su vam ovi dijelovi:
- ESP32 DEVKIT V1 ploča
- LED dioda 5 mm
- Otpor 220 Ohma
- Breadboard
- Premosne žice
Shematski
Spojite LED na svoj ESP32 kao na sljedećem shematskom dijagramu. LED treba biti spojen na GPIO 4.Bilješka: možete koristiti bilo koji pin koji želite, sve dok može djelovati kao izlaz. Svi pinovi koji mogu djelovati kao izlazi mogu se koristiti kao PWM pinovi. Za više informacija o ESP32 GPIO-ovima, pročitajte: ESP32 Pinout Reference: Koje GPIO pinove trebate koristiti?
Kodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Otvorite kod Project_3_ESP32_PWM.ino u arduino IDEPočinjete definiranjem igle na koju je LED dioda pričvršćena. U ovom slučaju LED je spojen na GPIO 4.
Zatim postavljate svojstva PWM signala. Definirate frekvenciju od 5000 Hz, odaberete kanal 0 za generiranje signala i postavite razlučivost od 8 bita. Možete odabrati druga svojstva, različita od ovih, za generiranje različitih PWM signala.
U setup() trebate konfigurirati LED PWM sa svojstvima koja ste ranije definirali pomoću funkcije ledcSetup() koja kao argumente prihvaća ledChannel, frekvenciju i rezoluciju, kako slijedi:
Zatim trebate odabrati GPIO s kojeg ćete dobiti signal. Za to koristite funkciju ledcAttachPin() koja prihvaća kao argumente GPIO gdje želite dobiti signal i kanal koji generira signal. U ovom prample, dobit ćemo signal u ledPin GPIO, koji odgovara GPIO 4. Kanal koji generira signal je ledChannel, koji odgovara kanalu 0.
U petlji ćete mijenjati radni ciklus između 0 i 255 kako biste povećali svjetlinu LED-a.
Zatim između 255 i 0 za smanjenje svjetline.
Da biste postavili svjetlinu LED-a, samo trebate upotrijebiti funkciju ledcWrite() koja prihvaća kao argumente kanal koji generira signal i radni ciklus.
Budući da koristimo 8-bitnu razlučivost, radni ciklus kontrolirat će se pomoću vrijednosti od 0 do 255. Imajte na umu da u funkciji ledcWrite() koristimo kanal koji generira signal, a ne GPIO.
Testiranje Example
Učitajte kod na svoj ESP32. Provjerite jeste li odabrali pravu ploču i COM port. Pogledajte svoj krug. Trebali biste imati prigušenu LED diodu koja povećava i smanjuje svjetlinu.
Projekt 4 ESP32 PIR senzor pokreta
Ovaj projekt pokazuje kako otkriti kretanje s ESP32 pomoću PIR senzora kretanja. Zujalica će se oglasiti alarmom kada se otkrije kretanje i zaustaviti alarm kada se kretanje ne otkrije unaprijed postavljeno vrijeme (kao što su 4 sekunde)
Kako radi senzor pokreta HC-SR501
.Princip rada senzora HC-SR501 temelji se na promjeni infracrvenog zračenja na pokretnom objektu. Da bi ga senzor HC-SR501 detektirao, objekt mora ispunjavati dva zahtjeva:
- Objekt zrači infracrvenim putem.
- Objekt se pomiče ili trese
Tako:
Ako objekt emitira infracrvenu zraku, ali se ne pomiče (npr. osoba stoji mirno bez pomicanja), senzor ga ne detektira.
Ako se objekt kreće, ali ne emitira infracrvene zrake (npr. robot ili vozilo), senzor ga NE detektira.
Predstavljamo mjerače vremena
U ovom prampuvest ćemo i mjerače vremena. Želimo da LED dioda ostane uključena unaprijed određeni broj sekundi nakon detekcije pokreta. Umjesto korištenja funkcije delay() koja blokira vaš kod i ne dopušta vam da radite bilo što drugo određeni broj sekundi, trebali bismo koristiti mjerač vremena.Funkcija delay().
Trebali biste biti upoznati s funkcijom delay() budući da se široko koristi. Ova funkcija je prilično jednostavna za korištenje. Prihvaća jedan int broj kao argument.
Ovaj broj predstavlja vrijeme u milisekundama koje program mora čekati dok ne prijeđe na sljedeći redak koda.Kada učinite kašnjenje (1000) vaš program se zaustavlja na toj liniji na 1 sekundu.
delay() je funkcija blokiranja. Funkcije blokiranja sprječavaju program da radi bilo što drugo dok se taj zadatak ne završi. Ako trebate da se više zadataka odvija u isto vrijeme, ne možete koristiti delay().
Za većinu projekata trebali biste izbjegavati odgode i umjesto toga koristiti mjerače vremena.
Funkcija millis().
Pomoću funkcije millis() možete vratiti broj milisekundi koje su prošle od pokretanja programa.Zašto je ta funkcija korisna? Zato što pomoću neke matematike možete lako provjeriti koliko je vremena prošlo bez blokiranja vašeg koda.
Potrebni dijelovi
Za praćenje ovog vodiča potrebni su vam sljedeći dijelovi
- ESP32 DEVKIT V1 ploča
- PIR senzor pokreta (HC-SR501)
- Aktivni zujalica
- Premosne žice
- Breadboard
ShematskiBilješka: Radni objtage od HC-SR501 je 5V. Koristite Vin pin za napajanje.
Kodirati
Prije nego što nastavite s ovim vodičem, trebate imati ESP32 dodatak instaliran u vašem Arduino IDE. Slijedite jedan od sljedećih vodiča za instalaciju ESP32 na Arduino IDE, ako već niste. (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Otvorite kod Project_4_ESP32_PIR_Motion_Sensor.ino u arduino IDE.
Demonstracija
Učitajte kod na svoju ESP32 ploču. Provjerite jeste li odabrali odgovarajuću ploču i COM priključak. Prenesite referentne korake koda.
Otvorite Serial Monitor pri brzini prijenosa od 115200 bauda.Pomaknite ruku ispred PIR senzora. Zujalica bi se trebala uključiti, a poruka se ispisuje u serijskom monitoru koja glasi "Otkriveno kretanje! Alarm zujalice".
Nakon 4 sekunde zvučni signal bi se trebao isključiti.
Projekt 5 ESP32 prekidač Web poslužitelj
U ovom projektu izradit ćete samostalan web poslužitelj s ESP32 koji kontrolira izlaze (dvije LED diode) pomoću Arduino IDE programskog okruženja. The web poslužitelj je mobilni i može mu se pristupiti s bilo kojeg uređaja koji je preglednik na lokalnoj mreži. Pokazat ćemo vam kako stvoriti web poslužitelj i kako kod radi korak po korak.
Projekt završenview
Prije nego što prijeđemo izravno na projekt, važno je ocrtati što je naše web poslužit će, tako da kasnije možete lakše slijediti korake.
- The web poslužitelj koji ćete izgraditi kontrolira dvije LED diode spojene na ESP32 GPIO 26 i GPIO 27;
- Možete pristupiti ESP32 web poslužitelj upisivanjem ESP32 IP adrese u preglednik u lokalnoj mreži;
- Klikom na gumbe na vašem web poslužitelju možete trenutno promijeniti stanje svake LED diode.
Potrebni dijelovi
Za ovaj vodič trebat će vam sljedeći dijelovi:
- ESP32 DEVKIT V1 ploča
- 2x 5mm LED
- 2x 200 Ohm otpornik
- Breadboard
- Premosne žice
Shematski
Započnite izgradnjom kruga. Spojite dvije LED diode na ESP32 kao što je prikazano na sljedećem shematskom dijagramu – jednu LED diodu spojite na GPIO 26, a drugu na GPIO 27.
Bilješka: Koristimo ESP32 DEVKIT DOIT ploču s 36 pinova. Prije sastavljanja kruga provjerite jeste li provjerili pinout za ploču koju koristite.Kodirati
Ovdje dajemo kod koji stvara ESP32 web poslužitelj. Otvorite kod Project_5_ESP32_Switch _Web_Server.ino u arduino IDE, ali nemojte ga još učitati. Morate unijeti neke promjene kako bi to funkcioniralo za vas.
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Postavljanje mrežnih vjerodajnica
Morate izmijeniti sljedeće retke svojim mrežnim vjerodajnicama: SSID i lozinku. Kod je dobro komentiran o tome gdje biste trebali unijeti promjene.Učitavanje koda
Sada možete učitati kod i i web server će odmah proraditi.
Slijedite sljedeće korake za prijenos koda na ESP32:
- Uključite ESP32 ploču u svoje računalo;
- U Arduino IDE odaberite svoju ploču u Tools > Board (u našem slučaju koristimo ESP32 DEVKIT DOIT ploču);
- Odaberite COM priključak u Alati > Priključak.
- Pritisnite gumb Upload u Arduino IDE i pričekajte nekoliko sekundi dok se kod kompajlira i učita na vašu ploču.
- Pričekajte poruku "Done uploading".
Pronalaženje ESP IP adrese
Nakon učitavanja koda, otvorite Serial Monitor pri brzini prijenosa od 115200 bauda.Pritisnite tipku ESP32 EN (reset). ESP32 povezuje se na Wi-Fi i šalje ESP IP adresu na serijski monitor. Kopirajte tu IP adresu jer vam je potrebna za pristup ESP32 web poslužitelj.
Pristupanje Web poslužitelj
Za pristup web poslužitelja, otvorite svoj preglednik, zalijepite ESP32 IP adresu i vidjet ćete sljedeću stranicu.
Bilješka: Vaš preglednik i ESP32 trebaju biti povezani na isti LAN.Ako pogledate serijski monitor, možete vidjeti što se događa u pozadini. ESP prima HTTP zahtjev od novog klijenta (u ovom slučaju, vašeg preglednika).
Također možete vidjeti druge informacije o HTTP zahtjevu.
Demonstracija
Sada možete testirati je li vaš web server radi ispravno. Pritisnite gumbe za upravljanje LED diodama.U isto vrijeme, možete pogledati serijski monitor da vidite što se događa u pozadini. Na primjerample, kada kliknete gumb za uključivanje GPIO 26, ESP32 prima zahtjev na /26/on URL.
Kada ESP32 primi taj zahtjev, uključuje LED lampicu spojenu na GPIO 26 i ažurira svoje stanje na web stranica.
Gumb za GPIO 27 radi na sličan način. Provjerite radi li ispravno.
Kako Kodeks funkcionira
U ovom ćemo odjeljku pobliže pogledati kod kako bismo vidjeli kako funkcionira.
Prvo što trebate učiniti je uključiti WiFi knjižnicu.Kao što je ranije spomenuto, trebate umetnuti svoj ssid i lozinku u sljedeće retke unutar dvostrukih navodnika.
Zatim postavite svoje web poslužitelj na port 80.
Sljedeći redak stvara varijablu za pohranjivanje zaglavlja HTTP zahtjeva:
Zatim stvarate pomoćne varijable za pohranjivanje trenutnog stanja vaših izlaza. Ako želite dodati više izlaza i spremiti njegovo stanje, morate stvoriti više varijabli.
Također morate dodijeliti GPIO svakom svom izlazu. Ovdje koristimo GPIO 26 i GPIO 27. Možete koristiti bilo koji drugi odgovarajući GPIO.
postavljanje()
Sada idemo na setup(). Prvo, pokrećemo serijsku komunikaciju pri brzini prijenosa podataka od 115200 u svrhu otklanjanja pogrešaka.Također definirate svoje GPIO-ove kao OUTPUT-ove i postavite ih na LOW.
Sljedeći redovi započinju Wi-Fi vezu s WiFi.begin(ssid, lozinka), pričekajte uspješnu vezu i ispišite ESP IP adresu u serijskom monitoru.
petlja()
U petlji() programiramo što se događa kada novi klijent uspostavi vezu s web poslužitelj.
ESP32 uvijek osluškuje dolazne klijente sa sljedećim redom:Kada primimo zahtjev od klijenta, spremit ćemo dolazne podatke. Dok petlja koja slijedi izvodit će se sve dok je klijent povezan. Ne preporučujemo promjenu sljedećeg dijela koda osim ako ne znate točno što radite.
Sljedeći odjeljak naredbi if i else provjerava koji je gumb pritisnut u vašem web stranici, te u skladu s tim kontrolira izlaze. Kao što smo već vidjeli, zahtjev šaljemo na različite načine URLovisno o pritisnutom gumbu.
Na primjerample, ako ste pritisnuli tipku GPIO 26 ON, ESP32 prima zahtjev na /26/ON URL (možemo vidjeti tu informaciju u HTTP zaglavlju na serijskom monitoru). Dakle, možemo provjeriti sadrži li zaglavlje izraz GET /26/on. Ako sadrži, mijenjamo varijablu output26state na ON, a ESP32 uključuje LED.
Ovo radi slično za ostale gumbe. Dakle, ako želite dodati više izlaza, trebali biste modificirati ovaj dio koda da ih uključi.
Prikaz HTML-a web stranica
Sljedeća stvar koju trebate učiniti je stvaranje web stranica. ESP32 će poslati odgovor vašem pregledniku s nekim HTML kodom za izradu web stranica.
The web stranica se šalje klijentu koristeći ovaj izraz client.println(). Morate unijeti ono što želite poslati klijentu kao argument.
Prvo što bismo trebali poslati uvijek je sljedeći redak, koji označava da šaljemo HTML.Zatim, sljedeći redak čini web stranica responzivna u bilo kojem web preglednik.
A sljedeće se koristi za sprječavanje zahtjeva na favicon. – Ne morate se brinuti za ovu liniju.
Stiliziranje Web Stranica
Zatim, imamo CSS tekst za stiliziranje gumba i web izgled stranice.
Odaberemo Helvetica font, definiramo sadržaj koji će biti prikazan kao blok i poravnat u sredini.Svoje gumbe stiliziramo bojom #4CAF50, bez obruba, tekstom u bijeloj boji i s ovim ispunama: 16px 40px. Također smo postavili text-decoration na none, definirali veličinu fonta, marginu i kursor na pokazivač.
Također definiramo stil za drugi gumb, sa svim svojstvima gumba koje smo ranije definirali, ali s drugom bojom. Ovo će biti stil za gumb za isključivanje.
Postavljanje Web Naslov prve stranice
U sljedećem retku možete postaviti prvi naslov vašeg web stranica. Ovdje imamo “ESP32 Web Server”, ali ovaj tekst možete promijeniti u što god želite.Prikaz gumba i odgovarajućeg stanja
Zatim napišite odlomak za prikaz trenutnog stanja GPIO 26. Kao što vidite, koristimo varijablu output26State, tako da se stanje ažurira odmah kada se ova varijabla promijeni.Zatim prikazujemo gumb za uključivanje ili isključivanje, ovisno o trenutnom stanju GPIO. Ako je trenutno stanje GPIO-a isključeno, prikazujemo gumb ON, ako nije, prikazujemo gumb OFF.
Koristimo isti postupak za GPIO 27.
Zatvaranje veze
Na kraju, kada odgovor završi, brišemo varijablu zaglavlja i prekidamo vezu s klijentom pomoću client.stop().
Završavanje
U ovom vodiču smo vam pokazali kako izgraditi web poslužitelj s ESP32. Pokazali smo vam jednostavnog bivšegample koji kontrolira dvije LED diode, ali ideja je zamijeniti te LED diode relejem ili bilo kojim drugim izlazom kojim želite upravljati.
Projekt 6 RGB LED Web poslužitelj
U ovom projektu ćemo vam pokazati kako daljinski upravljati RGB LED-om s ESP32 pločom pomoću a web poslužitelj s biračem boja.
Projekt završenview
Prije nego što počnemo, pogledajmo kako ovaj projekt funkcionira:
- ESP32 web poslužitelj prikazuje birač boja.
- Kada odaberete boju, vaš preglednik postavlja zahtjev za a URL koji sadrži R, G i B parametre odabrane boje.
- Vaš ESP32 prima zahtjev i dijeli vrijednost za svaki parametar boje.
- Zatim šalje PWM signal s odgovarajućom vrijednošću GPIO-ima koji kontroliraju RGB LED.
Kako rade RGB LED diode?
U RGB LED diodi sa zajedničkom katodom, sve tri LED diode dijele negativnu vezu (katodu). Sve uključeno u komplet je RGB sa zajedničkom katodom.Kako stvoriti različite boje?
S RGB LED diodom možete, naravno, proizvesti crvenu, zelenu i plavu svjetlost, a konfiguriranjem intenziteta svake LED diode, možete proizvesti i druge boje.
Na primjerampDa biste proizveli čisto plavo svjetlo, trebali biste postaviti plavu LED diodu na najveći intenzitet, a zelenu i crvenu LED diodu na najniži intenzitet. Za bijelo svjetlo, postavili biste sve tri LED diode na najveći intenzitet.
Miješanje boja
Da biste proizveli druge boje, možete kombinirati tri boje u različitim intenzitetima. Za podešavanje intenziteta svake LED diode možete koristiti PWM signal.
Budući da su LED diode vrlo blizu jedna drugoj, naše oči vide rezultat kombinacije boja, a ne tri boje pojedinačno.
Kako biste imali ideju kako kombinirati boje, pogledajte sljedeću tablicu.
Ovo je najjednostavnija tablica miješanja boja, ali daje vam ideju kako funkcionira i kako proizvesti različite boje.Potrebni dijelovi
Za ovaj projekt potrebni su vam sljedeći dijelovi:
- ESP32 DEVKIT V1 ploča
- RGB LED
- 3x220 ohma otpornika
- Premosne žice
- Breadboard
ShematskiKodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
- Instaliranje ESP32 dodatka u Arduino IDE
Nakon sastavljanja kruga, otvorite kod
Projekt_6_RGB_LED_Web_Server.ino u arduino IDE.
Prije učitavanja koda, ne zaboravite umetnuti svoje mrežne vjerodajnice kako bi se ESP mogao povezati s vašom lokalnom mrežom.Kako kod radi
Skica ESP32 koristi biblioteku WiFi.h.Sljedeći redovi definiraju varijable niza za držanje parametara R, G i B iz zahtjeva.
Sljedeće četiri varijable se kasnije koriste za dekodiranje HTTP zahtjeva.
Stvorite tri varijable za GPIO-ove koji će kontrolirati parametre trake R, G i B. U ovom slučaju koristimo GPIO 13, GPIO 12 i GPIO 14.
Ovi GPIO-ovi moraju emitirati PWM signale, tako da prvo moramo konfigurirati svojstva PWM-a. Postavite frekvenciju PWM signala na 5000 Hz. Zatim pridružite PWM kanal svakoj boji
I na kraju, postavite razlučivost PWM kanala na 8 bita
U setup(), dodijelite PWM svojstva PWM kanalima
Priključite PWM kanale na odgovarajuće GPIO
Sljedeći odjeljak koda prikazuje birač boja u vašem web stranicu i postavlja zahtjev na temelju boje koju ste odabrali.
Kada odaberete boju, primit ćete zahtjev u sljedećem formatu.
Dakle, moramo podijeliti ovaj niz da bismo dobili R, G i B parametre. Parametri se spremaju u redString, greenString i blueString varijable i mogu imati vrijednosti između 0 i 255.Za upravljanje trakom s ESP32, upotrijebite funkciju ledcWrite() za generiranje PWM signala s vrijednostima dekodiranim iz HTTP-a zahtjev.
Bilješka: saznajte više o PWM-u s ESP32: Projekt 3 ESP32 PWM (analogni izlaz)
Za kontrolu trake s ESP8266, samo trebamo koristiti
funkciju analogWrite() za generiranje PWM signala s vrijednostima dekodiranim iz HTPP zahtjeva.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Budući da vrijednosti dobivamo u varijabli niza, moramo ih pretvoriti u cijele brojeve pomoću metode toInt().
Demonstracija
Nakon umetanja mrežnih vjerodajnica, odaberite odgovarajuću ploču i COM priključak i prenesite kod na svoj ESP32. Referentni koraci za učitavanje koda.
Nakon učitavanja, otvorite serijski monitor pri brzini prijenosa od 115200 bauda i pritisnite gumb ESP Enable/Reset. Trebali biste dobiti IP adresu ploče.Otvorite svoj preglednik i unesite ESP IP adresu. Sada upotrijebite birač boja da odaberete boju za RGB LED.
Zatim morate pritisnuti gumb "Promijeni boju" da bi boja stupila na snagu.Da biste isključili RGB LED, odaberite crnu boju.
Najjače boje (na vrhu birača boja) su one koje će dati bolje rezultate.
Projekt 7 ESP32 relej Web poslužitelj
Korištenje releja s ESP32 odličan je način daljinskog upravljanja AC kućanskim aparatima. Ovaj vodič objašnjava kako upravljati relejnim modulom s ESP32.
Pogledat ćemo kako radi relejni modul, kako spojiti relej na ESP32 i izgraditi web poslužitelj za daljinsko upravljanje relejem.
Predstavljamo releje
Relej je električni prekidač i kao i svaki drugi prekidač, može se uključiti ili isključiti, pustiti struju ili ne. Može se kontrolirati niskom glasnoćomtages, poput 3.3 V koji osiguravaju ESP32 GPIO-ovi i omogućuje nam kontrolu visoke jačinetagnpr. 12V, 24V ili mrežni voltage (230 V u Europi i 120 V u SAD-u).Na lijevoj strani nalaze se dva kompleta od tri utičnice za spajanje high voltages, i igle s desne strane (low-voltage) spojite se na ESP32 GPIO.
Mains Voltage VezeRelejni modul prikazan na prethodnoj fotografiji ima dva konektora, svaki s tri utičnice: obična (COM), normalno zatvorena (NC) i normalno otvorena (NO).
- COM: spojite struju koju želite kontrolirati (mrežni voltagi).
- NC (Normalno zatvoren): normalno zatvorena konfiguracija se koristi kada želite da relej bude zatvoren prema zadanim postavkama. NC su COM pinovi su spojeni, što znači da struja teče osim ako ne pošaljete signal s ESP32 na relejni modul za otvaranje kruga i zaustavljanje protoka struje.
- NO (Normalno otvoren): normalno otvorena konfiguracija radi obrnuto: nema veze između pinova NO i COM, tako da je strujni krug prekinut osim ako ne pošaljete signal s ESP32 za zatvaranje kruga.
Kontrolne igleNiska glasnoćatagStrana ima set od četiri igle i set od tri igle. Prvi set sastoji se od VCC i GND za napajanje modula, te ulaza 1 (IN1) i ulaza 2 (IN2) za kontrolu donjeg i gornjeg releja.
Ako vaš relejni modul ima samo jedan kanal, imat ćete samo jedan IN pin. Ako imate četiri kanala, imat ćete četiri IN pina, i tako dalje.
Signal koji šaljete IN pinovima određuje je li relej aktivan ili ne. Relej se aktivira kada ulaz padne ispod oko 2V. To znači da ćete imati sljedeće scenarije:
- Normalno zatvorena konfiguracija (NC):
- VISOKI signal – struja teče
- LOW signal – struja ne teče
- Normalno otvorena konfiguracija (NO):
- VISOKI signal – struja ne teče
- LOW signal – struja teče
Trebali biste koristiti normalno zatvorenu konfiguraciju kada bi struja trebala teći većinu vremena, a želite je samo povremeno zaustaviti.
Koristite normalno otvorenu konfiguraciju kada želite da struja povremeno teče (nprample, uključi alamp povremeno).
Odabir napajanjaDrugi set pinova sastoji se od GND, VCC i JD-VCC pinova.
JD-VCC pin napaja elektromagnet releja. Primijetite da modul ima kratkospojnik koji povezuje VCC i JD-VCC pinove; ovdje prikazano je žuto, ali vaše može biti druge boje.
S postavljenom premosnom kapom, VCC i JD-VCC pinovi su povezani. To znači da se relejni elektromagnet izravno napaja s priključka za napajanje ESP32, tako da relejni modul i krugovi ESP32 nisu fizički izolirani jedan od drugog.
Bez kratkospojnika morate osigurati neovisni izvor napajanja za napajanje elektromagneta releja preko JD-VCC pina. Ta konfiguracija fizički izolira releje od ESP32 pomoću optokaplera ugrađenog u modul, koji sprječava oštećenje ESP32 u slučaju električnih skokova.
ShematskiUpozorenje: Korištenje visoke voltagNapajanje može uzrokovati ozbiljne ozljede.
Stoga se koriste LED diode od 5 mm umjesto high supply voltage žarulje u pokusu. Ako niste upoznati s mains voltage pitaj nekoga tko ti treba pomoći. Tijekom programiranja ESP-a ili spajanja strujnog kruga provjerite je li sve isključeno iz električne mrežetage.Instaliranje biblioteke za ESP32
Za izgradnju ovoga web poslužitelju, koristimo ESPAsyncWebBiblioteka poslužitelja i biblioteka AsyncTCP.
Instalacija ESPAsyncWebKnjižnica poslužitelja
Slijedite sljedeće korake za instalaciju ESPAsyncWebposlužitelj knjižnica:
- Kliknite ovdje za preuzimanje ESPAsyncWebKnjižnica poslužitelja. Trebao si
.zip mapu u mapi Preuzimanja - Raspakirajte .zip mapu i trebali biste dobiti ESPAsyncWebGlavna mapa poslužitelja
- Preimenujte mapu iz ESPAsyncWebServer-master za ESPAsyncWebposlužitelj
- Premjestite ESPAsyncWebMapu poslužitelja u mapu instalacijskih biblioteka Arduino IDE
Alternativno, u vašem Arduino IDE-u, možete otići na Skica > Uključi
Biblioteka > Dodaj .ZIP biblioteku… i odaberite biblioteku koju ste upravo preuzeli.
Instaliranje AsyncTCP biblioteke za ESP32
The ESPAsyncWebposlužitelj knjižnica zahtijeva AsyncTCP knjižnica za rad. Slijedite
sljedeći koraci za instaliranje te biblioteke:
- Kliknite ovdje za preuzimanje biblioteke AsyncTCP. Trebali biste imati mapu .zip u mapi Preuzimanja
- Raspakirajte .zip mapu i trebali biste dobiti AsyncTCP-master mapu
1. Preimenujte mapu iz AsyncTCP-master u AsyncTCP
3. Premjestite mapu AsyncTCP u mapu Arduino IDE instalacijskih biblioteka
4. Na kraju, ponovno otvorite svoj Arduino IDE
Alternativno, u vašem Arduino IDE-u, možete otići na Skica > Uključi
Biblioteka > Dodaj .ZIP biblioteku… i odaberite biblioteku koju ste upravo preuzeli.
Kodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Nakon instaliranja potrebnih biblioteka, otvorite kod Project_7_ESP32_Relay_Web_Server.ino u arduino IDE.
Prije učitavanja koda, ne zaboravite umetnuti svoje mrežne vjerodajnice kako bi se ESP mogao povezati s vašom lokalnom mrežom.Demonstracija
Nakon što napravite potrebne promjene, prenesite kod na svoj ESP32. Referentni koraci za učitavanje koda.
Otvorite serijski monitor pri brzini prijenosa od 115200 bauda i pritisnite gumb ESP32 EN da dobijete njegovu IP adresu. Zatim otvorite preglednik u vašoj lokalnoj mreži i upišite ESP32 IP adresu da biste dobili pristup web poslužitelj.
Otvorite serijski monitor pri brzini prijenosa od 115200 bauda i pritisnite gumb ESP32 EN da dobijete njegovu IP adresu. Zatim otvorite preglednik u vašoj lokalnoj mreži i upišite ESP32 IP adresu da biste dobili pristup web poslužitelj.Bilješka: Vaš preglednik i ESP32 trebaju biti povezani na isti LAN.
Trebali biste dobiti nešto sljedeće s dva gumba kao što je broj releja koji ste definirali u svom kodu.Sada možete koristiti gumbe za upravljanje svojim relejima pomoću pametnog telefona.
Projekt_8_Sinkronizacija_izlaznog_stanja_ Web_Poslužitelj
Ovaj projekt pokazuje kako kontrolirati ESP32 ili ESP8266 izlaze pomoću a web poslužitelj i fizički gumb istovremeno. Stanje izlaza ažurira se na web stranici bilo da se mijenja putem fizičkog gumba ili web poslužitelj.
Projekt završenview
Pogledajmo na brzinu kako projekt funkcionira.ESP32 ili ESP8266 domaćini su a web poslužitelj koji vam omogućuje kontrolu stanja izlaza;
- Trenutno stanje izlaza prikazano je na web poslužitelj;
- ESP je također povezan s fizičkim gumbom koji kontrolira isti izlaz;
- Ako promijenite stanje izlaza pomoću fizičkog gumba, njegovo trenutno stanje se također ažurira na web poslužitelj.
Ukratko, ovaj projekt vam omogućuje da kontrolirate isti izlaz koristeći a web poslužitelj i gumb istovremeno. Kad god se izlazno stanje promijeni, web poslužitelj je ažuriran.
Potrebni dijelovi
Evo popisa dijelova koji su vam potrebni za izgradnju kruga:
- ESP32 DEVKIT V1 ploča
- 5 mm LED
- Otpornik od 220 Ohma
- Tipkalo
- Otpornik od 10 kOhma
- Breadboard
- Premosne žice
ShematskiInstaliranje biblioteke za ESP32
Za izgradnju ovoga web poslužitelju, koristimo ESPAsyncWebBiblioteka poslužitelja i biblioteka AsyncTCP. (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instalacija ESPAsyncWebKnjižnica poslužitelja
Slijedite sljedeće korake za instalaciju ESPAsyncWebBiblioteka poslužitelja:
- Kliknite ovdje za preuzimanje ESPAsyncWebKnjižnica poslužitelja. Trebao si
.zip mapu u mapi Preuzimanja - Raspakirajte .zip mapu i trebali biste dobiti ESPAsyncWebGlavna mapa poslužitelja
- Preimenujte mapu iz ESPAsyncWebServer-master za ESPAsyncWebposlužitelj
- Premjestite ESPAsyncWebMapu poslužitelja u mapu instalacijskih biblioteka Arduino IDE
Alternativno, u vašem Arduino IDE-u, možete otići na Skica > Uključi
Biblioteka > Dodaj .ZIP biblioteku… i odaberite biblioteku koju ste upravo preuzeli.
Instaliranje AsyncTCP biblioteke za ESP32
ESPAsyncWebBiblioteka poslužitelja zahtijeva AsyncTCP biblioteku za rad. Slijedite sljedeće korake za instaliranje te biblioteke:
- Kliknite ovdje za preuzimanje biblioteke AsyncTCP. Trebali biste imati mapu .zip u mapi Preuzimanja
- Raspakirajte .zip mapu i trebali biste dobiti AsyncTCP-master mapu
- Preimenujte mapu iz AsyncTCP-master u AsyncTCP
- Premjestite mapu AsyncTCP u mapu Arduino IDE instalacijskih biblioteka
- Na kraju, ponovno otvorite svoj Arduino IDE
Alternativno, u vašem Arduino IDE-u, možete otići na Skica > Uključi
Biblioteka > Dodaj .ZIP biblioteku… i odaberite biblioteku koju ste upravo preuzeli.
Kodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Nakon instaliranja potrebnih biblioteka, otvorite kod
Projekt_8_Sinkronizacija_izlaznog_stanja_Web_Server.ino u arduino IDE.
Prije učitavanja koda, ne zaboravite umetnuti svoje mrežne vjerodajnice kako bi se ESP mogao povezati s vašom lokalnom mrežom.
Kako Kodeks funkcionira
Stanje gumba i stanje izlaza
Varijabla ledState sadrži LED izlazno stanje. Za zadano, kada je web server se pokreće, NIZAK je.
ButtonState i lastButtonState koriste se za otkrivanje je li tipka pritisnuta ili ne.gumb (web poslužitelj)
Nismo uključili HTML za izradu gumba na varijabli index_html.
To je zato što ga želimo moći mijenjati ovisno o trenutnom LED stanju koje se također može promijeniti pomoću tipke.
Dakle, stvorili smo rezervirano mjesto za gumb %BUTTONPLACEHOLDER% koji će biti zamijenjen HTML tekstom za stvaranje gumba kasnije u kodu (to se radi u funkciji procesor()).procesor()
Funkcija procesor() zamjenjuje sva rezervirana mjesta na HTML tekstu stvarnim vrijednostima. Prvo provjerava sadrži li HTML tekst nešto
rezervirana mjesta %BUTTONPLACEHOLDER%.Zatim pozovite funkciju outputState() koja vraća trenutno stanje izlaza. Spremamo ga u varijablu outputStateValue.
Nakon toga upotrijebite tu vrijednost za stvaranje HTML teksta za prikaz gumba u ispravnom stanju:
HTTP GET zahtjev za promjenu stanja izlaza (JavaScript)
Kada pritisnete gumb, poziva se funkcija thetoggleCheckbox(). Ova funkcija će napraviti zahtjev na različitim URLs za uključivanje ili isključivanje LED-a.Za uključivanje LED-a postavlja zahtjev na /update?state=1 URL:
Inače, postavlja zahtjev na /update?state=0 URL.
HTTP GET zahtjev za ažuriranje stanja (JavaScript)
Da bi stanje izlaza bilo ažurirano na web poslužitelju, pozivamo sljedeću funkciju koja postavlja novi zahtjev na /stanje URL svake sekunde.Obrada zahtjeva
Zatim moramo riješiti što se događa kada ESP32 ili ESP8266 primi zahtjeve na tim URLs.
Kada je zahtjev primljen na root /URL, šaljemo HTML stranicu kao i procesor.Sljedeći redovi provjeravaju jeste li primili zahtjev na /update?state=1 ili /update?state=0 URL i u skladu s tim mijenja ledState.
Kada je zahtjev primljen na /stanje URL, šaljemo trenutno stanje izlaza:
petlja()
U petlji() otklanjamo odbijanje tipke i uključujemo ili isključujemo LED ovisno o vrijednosti ledState varijabla.Demonstracija
Učitajte kod na svoju ESP32 ploču. Učitajte referentne korake koda.
Zatim otvorite serijski monitor pri brzini prijenosa od 115200 bauda. Pritisnite gumb EN/RST na ploči da biste dobili IP adresu.Otvorite preglednik na lokalnoj mreži i upišite ESP IP adresu. Trebali biste imati pristup web poslužitelj kao što je prikazano u nastavku.
Bilješka: Vaš preglednik i ESP32 trebaju biti povezani na isti LAN.Možete prebaciti gumb na web poslužitelj za uključivanje LED-a.
Također možete kontrolirati isti LED s fizičkim gumbom. Njegovo stanje uvijek će se automatski ažurirati na web poslužitelj.
Projekt 9 ESP32 DHT11 Web poslužitelj
U ovom projektu ćete naučiti kako izgraditi asinkroni ESP32 web poslužitelj s DHT11 koji prikazuje temperaturu i vlažnost pomoću Arduino IDE.
Preduvjeti
The web poslužitelj koji ćemo izgraditi automatski ažurira očitanja bez potrebe za osvježavanjem web stranica.
Uz ovaj projekt naučit ćete:
- Kako očitati temperaturu i vlažnost s DHT senzora;
- Izgradite asinkroni web poslužitelj koji koristi ESPAsyncWebKnjižnica poslužitelja;
- Automatski ažurirajte očitanja senzora bez potrebe za osvježavanjem web stranica.
Asinkroni Web poslužitelj
Za izgradnju web poslužitelj koji ćemo koristiti ESPAsyncWebKnjižnica poslužitelja koji pruža jednostavan način za izgradnju asinkronog web poslužitelj. Izgradnja asinkronog web poslužitelj ima nekoliko advantages kako je spomenuto na GitHub stranici knjižnice, kao što su:
- “Upravljanje s više od jedne veze u isto vrijeme”;
- “Kada pošaljete odgovor, odmah ste spremni rukovati drugim vezama dok se poslužitelj brine o slanju odgovora u pozadini”;
- “Jednostavan mehanizam za obradu predložaka za rukovanje predlošcima”;
Potrebni dijelovi
Za dovršetak ovog vodiča potrebni su vam sljedeći dijelovi:
- ESP32 razvojna ploča
- DHT11 modul
- Breadboard
- Premosne žice
ShematskiInstaliranje knjižnica
Morate instalirati nekoliko biblioteka za ovaj projekt:
- The DHT i Adafruit Unified Sensor Biblioteke upravljačkih programa za čitanje s DHT senzora.
- ESPAsyncWebposlužitelj i Asinkroni TCP knjižnice za izgradnju asinkronog web poslužitelj.
Slijedite sljedeće upute za instaliranje tih biblioteka:
Instaliranje biblioteke DHT senzora
Za čitanje s DHT senzora pomoću Arduino IDE, trebate instalirati Knjižnica DHT senzora. Slijedite sljedeće korake za instaliranje biblioteke.
- Kliknite ovdje za preuzimanje biblioteke DHT senzora. Trebali biste imati mapu .zip u mapi Preuzimanja
- Raspakirajte .zip mapu i trebali biste dobiti DHT-sensor-library-master mapu
- Preimenujte mapu iz DHT-sensor-library-master u DHT_sensor
- Premjestite mapu DHT_sensor u mapu Arduino IDE instalacijskih biblioteka
- Na kraju, ponovno otvorite svoj Arduino IDE
Instaliranje upravljačkog programa Adafruit Unified Sensor
Također morate instalirati Adafruit Unified Sensor Driver biblioteka za rad s DHT senzorom. Slijedite sljedeće korake za instaliranje biblioteke.
- Kliknite ovdje za preuzimanje biblioteke Adafruit Unified Sensor. Trebali biste imati mapu .zip u mapi Preuzimanja
- Raspakirajte .zip mapu i trebali biste dobiti mapu Adafruit_sensor-master
- Preimenujte mapu iz Adafruit_sensor-master u Adafruit_sensor
- Premjestite mapu Adafruit_sensor u mapu Arduino IDE instalacijskih biblioteka
- Na kraju, ponovno otvorite svoj Arduino IDE
Instalacija ESPAsyncWebKnjižnica poslužitelja
Slijedite sljedeće korake za instalaciju ESPAsyncWebposlužitelj knjižnica:
- Kliknite ovdje za preuzimanje ESPAsyncWebKnjižnica poslužitelja. Trebao si
.zip mapu u mapi Preuzimanja - Raspakirajte .zip mapu i trebali biste
dobiti ESPAsyncWebGlavna mapa poslužitelja - Preimenujte mapu iz ESPAsyncWebServer-master za ESPAsyncWebposlužitelj
- Premjestite ESPAsyncWebMapu poslužitelja u mapu instalacijskih biblioteka Arduino IDE
Instaliranje Async TCP biblioteke za ESP32
The ESPAsyncWebposlužitelj knjižnica zahtijeva AsyncTCP knjižnica za rad. Slijedite sljedeće korake za instaliranje te biblioteke:
- Kliknite ovdje za preuzimanje biblioteke AsyncTCP. Trebali biste imati mapu .zip u mapi Preuzimanja
- Raspakirajte .zip mapu i trebali biste dobiti AsyncTCP-master mapu
- Preimenujte mapu iz AsyncTCP-master u AsyncTCP
- Premjestite mapu AsyncTCP u mapu Arduino IDE instalacijskih biblioteka
- Na kraju, ponovno otvorite svoj Arduino IDE
Kodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li ESP32 dodatak instaliran prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDE
Nakon instaliranja potrebnih biblioteka, otvorite kod
Projekt_9_ESP32_DHT11_Web_Server.ino u arduino IDE.
Prije učitavanja koda, ne zaboravite umetnuti svoje mrežne vjerodajnice kako bi se ESP mogao povezati s vašom lokalnom mrežom.Kako Kodeks funkcionira
U sljedećim odlomcima objasnit ćemo kako kod funkcionira. Nastavite čitati ako želite saznati više ili skočite na odjeljak Demonstracija da vidite konačni rezultat.
Uvoz knjižnica
Prvo uvezite potrebne biblioteke. WiFi, ESPAsyncWebPoslužitelj i ESPAsyncTCP potrebni su za izgradnju web poslužitelj. Adafruit_Sensor i DHT biblioteke potrebne su za očitavanje sa DHT11 ili DHT22 senzora.Definicija varijabli
Definirajte GPIO na koji je spojen DHT podatkovni pin. U ovom slučaju, spojen je na GPIO 4.Zatim odaberite vrstu DHT senzora koju koristite. U našem bivšemample, mi koristimo DHT22. Ako koristite drugu vrstu, samo trebate ukloniti komentare sa svog senzora i komentirati sve ostale.
Instancirajte DHT objekt s tipom i pinom koji smo definirali ranije.Stvorite AsyncWebObjekt poslužitelja na portu 80.
Pročitajte funkcije temperature i vlažnosti
Napravili smo dvije funkcije: jednu za očitavanje temperature Napravili smo dvije funkcije: jednu za očitavanje temperature (readDHTTemperature()), a drugu za očitavanje vlažnosti (readDHTHumidity()).Dohvaćanje očitanja senzora jednostavno je poput korištenja Dohvaćanje očitanja senzora jednostavno je poput korištenja metoda readTemperature() i readHumidity() na dht objektu.
Također imamo uvjet koji vraća dvije crtice (–) u slučaju da senzor ne uspije dobiti očitanja.
Očitanja se vraćaju kao vrsta niza. Da biste pretvorili float u niz, koristite funkciju String().
Prema zadanim postavkama očitavamo temperaturu u Celzijevim stupnjevima. Da biste dobili temperaturu u stupnjevima Fahrenheita, komentirajte temperaturu u Celzijusu i uklonite komentare za temperaturu u Fahrenheitu, tako da imate sljedeće:
Učitaj kod
Sada prenesite kod na svoj ESP32. Provjerite jeste li odabrali odgovarajuću ploču i COM priključak. Prenesite referentne korake koda.
Nakon učitavanja, otvorite serijski monitor pri brzini prijenosa podataka od 115200. Pritisnite tipku za resetiranje ESP32. ESP32 IP adresa treba biti ispisana u serijskom izdanju monitor.Demonstracija
Otvorite preglednik i upišite ESP32 IP adresu. Vaš web poslužitelj bi trebao prikazati najnovija očitanja senzora.
Bilješka: Vaš preglednik i ESP32 trebaju biti povezani na isti LAN.
Imajte na umu da se očitanja temperature i vlažnosti automatski ažuriraju bez potrebe za osvježavanjem web stranica.
Projekt_10_ESP32_OLED_zaslon
Ovaj projekt pokazuje kako koristiti 0.96 inčni SSD1306 OLED zaslon s ESP32 koristeći Arduino IDE.
Predstavljamo OLED zaslon od 0.96 inča
The OLED zaslon koji ćemo koristiti u ovom vodiču je model SSD1306: jednobojni zaslon od 0.96 inča s 128×64 piksela kao što je prikazano na sljedećoj slici.OLED zaslon ne zahtijeva pozadinsko osvjetljenje, što rezultira vrlo lijepim kontrastom u tamnim okruženjima. Dodatno, njegovi pikseli troše energiju samo kada su uključeni, tako da OLED zaslon troši manje energije u usporedbi s drugim zaslonima.
Budući da OLED zaslon koristi I2C komunikacijski protokol, ožičenje je vrlo jednostavno. Sljedeću tablicu možete koristiti kao referencu.
OLED Pin | ESP32 |
Vin | 3.3 V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
ShematskiInstaliranje SSD1306 OLED knjižnice – ESP32
Postoji nekoliko dostupnih biblioteka za upravljanje OLED zaslonom s ESP32.
U ovom vodiču koristit ćemo dvije Adafruit biblioteke: Knjižnica Adafruit_SSD1306 i Adafruit_GFX biblioteka.
Slijedite sljedeće korake za instaliranje tih biblioteka.
- Otvorite svoj Arduino IDE i idite na Sketch > Include Library > Manage Libraries. Trebao bi se otvoriti Library Manager.
- Upišite “SSD1306” u okvir za pretraživanje i instalirajte biblioteku SSD1306 iz Adafruita.
- Nakon instaliranja biblioteke SSD1306 iz Adafruita, upišite "GFX" u okvir za pretraživanje i instalirajte biblioteku.
- Nakon instaliranja biblioteka, ponovno pokrenite Arduino IDE.
Kodirati
Nakon instaliranja potrebnih biblioteka, otvorite Project_10_ESP32_OLED_Display.ino u arduino IDE. kodirati
Programirat ćemo ESP32 koristeći Arduino IDE, stoga provjerite imate li instaliran ESP32 dodatak prije nastavka: (Ako ste već napravili ovaj korak, možete preskočiti na sljedeći korak.)
Instaliranje ESP32 dodatka u Arduino IDEKako Kodeks funkcionira
Uvoz knjižnica
Prvo morate uvesti potrebne biblioteke. Biblioteka Wire za korištenje I2C i biblioteka Adafruit za pisanje na zaslonu: Adafruit_GFX i Adafruit_SSD1306.Inicijalizirajte OLED zaslon
Zatim definirate svoju OLED širinu i visinu. U ovom prample, mi koristimo 128×64 OLED zaslon. Ako koristite druge veličine, to možete promijeniti u varijablama SCREEN_WIDTH i SCREEN_HEIGHT.Zatim inicijalizirajte zaslonski objekt sa širinom i visinom definiranom ranije s I2C komunikacijskim protokolom (&Wire).
Parametar (-1) znači da vaš OLED zaslon nema pin RESET. Ako vaš OLED zaslon ima pin RESET, trebao bi biti spojen na GPIO. U tom slučaju trebali biste proslijediti GPIO broj kao parametar.
U setup(), inicijalizirajte serijski monitor pri brzini prijenosa od 115200 u svrhu otklanjanja pogrešaka.Inicijalizirajte OLED zaslon metodom begin() na sljedeći način:
Ovaj isječak također ispisuje poruku na serijskom monitoru, u slučaju da se ne možemo povezati sa zaslonom.
U slučaju da koristite drugi OLED zaslon, možda ćete morati promijeniti OLED adresu. U našem slučaju, adresa je 0x3C.
Nakon inicijalizacije zaslona, dodajte odgodu od dvije sekunde, tako da OLED ima dovoljno vremena za inicijalizaciju prije pisanja teksta:
Očistite zaslon, postavite veličinu fonta, boju i napišite tekst
Nakon inicijalizacije zaslona, očistite međuspremnik prikaza metodom clearDisplay():
Prije pisanja teksta morate postaviti veličinu teksta, boju i mjesto na kojem će se tekst prikazati na OLED-u.
Postavite veličinu fonta pomoću metode setTextSize():Postavite boju fonta metodom setTextColor():
WHITE postavlja bijeli font i crnu pozadinu.
Definirajte poziciju na kojoj tekst počinje pomoću metode setCursor(x,y). U ovom slučaju, tekst postavljamo tako da počinje na koordinatama (0,0) – u gornjem lijevom kutu.Konačno, možete poslati tekst na zaslon koristeći println() metodu, kako slijedi
Zatim morate pozvati metodu display() da biste stvarno prikazali tekst na ekranu.
Adafruit OLED biblioteka pruža korisne metode za jednostavno pomicanje teksta.
- startscrollright(0x00, 0x0F): pomicanje teksta s lijeva na desno
- startscrollleft(0x00, 0x0F): pomicanje teksta s desna na lijevo
- startscrolldiagright(0x00, 0x07): pomicanje teksta od lijevog donjeg kuta do desnog gornjeg kuta startscrolldiagleft(0x00, 0x07): pomicanje teksta od desnog donjeg kuta do lijevog gornjeg kuta
Učitaj kod
Sada prenesite kod na svoj ESP32. Referentni koraci za učitavanje koda.
Nakon učitavanja koda, OLED će prikazati tekst koji se pomiče.
Dokumenti / Resursi
![]() |
LAFVIN ESP32 osnovni početni komplet [pdf] Upute za uporabu ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |