ESP32 Basis Starter
Uitrusting
Paklijst
ESP32 Inleiding
Nieuw bij ESP32? Begin hier! De ESP32 is een serie goedkope en energiezuinige System on a Chip (SoC) microcontrollers ontwikkeld door Espressif die Wi-Fi en Bluetooth draadloze mogelijkheden en een dual-core processor bevatten. Als u bekend bent met de ESP8266, is de ESP32 zijn opvolger, vol met veel nieuwe functies.ESP32-specificaties
Als u wat technischer en specifieker wilt zijn, kunt u een kijkje nemen naar de volgende gedetailleerde specificaties van de ESP32 (bron: http://esp32.net/)—voor meer details, controleer het gegevensblad):
- Draadloze connectiviteit WiFi: 150.0 Mbps gegevenssnelheid met HT40
- Bluetooth: BLE (Bluetooth Low Energy) en Bluetooth Classic
- Processor: Tensilica Xtensa Dual-Core 32-bit LX6 microprocessor, draaiend op 160 of 240 MHz
- Geheugen:
- ROM: 448 KB (voor opstarten en kernfuncties)
- SRAM: 520 KB (voor gegevens en instructies)
- RTC fas SRAM: 8 KB (voor gegevensopslag en hoofd-CPU tijdens RTC Boot vanuit de diepe slaapstand)
- RTC langzaam SRAM: 8 KB (voor co-processortoegang tijdens diepe slaapstand) eFuse: 1 Kbit (waarvan 256 bits worden gebruikt voor het systeem (MAC-adres en chipconfiguratie) en de resterende 768 bits zijn gereserveerd voor klanttoepassingen, waaronder Flash-encryptie en chip-ID)
Ingebouwde flash: flash intern aangesloten via IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 en SD_DATA_1 op ESP32-D2WD en ESP32-PICO-D4.
- 0 MiB (ESP32-D0WDQ6-, ESP32-D0WD- en ESP32-S0WD-chips)
- 2 MiB (ESP32-D2WD-chip)
- 4 MiB (ESP32-PICO-D4 SiP-module)
Laag vermogen: zorgt ervoor dat u nog steeds ADC-conversies kunt gebruiken, bijvoorbeeldample, tijdens diepe slaap.
Randapparatuur invoer/uitvoer:
- perifere interface met DMA die capacitieve aanraking omvat
- ADC's (Analoog-naar-Digitaal Converter)
- DAC's (Digitaal-naar-Analoog Converter)
- I²C (Inter-Integrated Circuit)
- UART (Universele Asynchrone Ontvanger/Zender)
- SPI (Seriële Perifere Interface)
- I²S (Geïntegreerd Interchip Geluid)
- RMII (gereduceerde media-onafhankelijke interface)
- PWM (Pulsbreedtemodulatie)
Beveiliging: hardwareversnellers voor AES en SSL/TLS
ESP32-ontwikkelingsborden
ESP32 verwijst naar de kale ESP32-chip. De term "ESP32" wordt echter ook gebruikt om te verwijzen naar ESP32-ontwikkelborden. Het gebruik van ESP32 kale chips is niet eenvoudig of praktisch, vooral niet bij het leren, testen en prototypen. Meestal wilt u een ESP32-ontwikkelbord gebruiken.
We gebruiken het ESP32 DEVKIT V1-bord als referentie. De onderstaande afbeelding toont het ESP32 DEVKIT V1-bord, een versie met 30 GPIO-pinnen.Specificaties – ESP32 DEVKIT V1
De volgende tabel geeft een overzicht van de kenmerken en specificaties van het ESP32 DEVKIT V1 DOIT-bord:
Aantal kernen | 2 (dubbele kern) |
Wi-Fi | 2.4 GHz tot 150 Mbits/s |
Bluetooth | BLE (Bluetooth Low Energy) en oudere Bluetooth |
Architectuur | 32-bits |
Klokfrequentie | Tot 240 MHz |
RAM | 512 KB |
Spelden | 30 (afhankelijk van het model) |
Randapparatuur | Capacitieve aanraking, ADC (analoog naar digitaal converter), DAC (digitaal naar analoog converter), 12C (Inter-Integrated Circuit), UART (universele asynchrone ontvanger/zender), CAN 2.0 (Controller Area Network), SPI (Serial Peripheral Interface), 12S (Integrated Inter-IC) Geluid), RMII (Reduced Media-Independent Interface), PWM (pulsbreedtemodulatie) en meer. |
Ingebouwde knoppen | RESET- en BOOT-knoppen |
Ingebouwde LED's | ingebouwde blauwe LED aangesloten op GPIO2; ingebouwde rode LED die aangeeft dat het bord wordt gevoed |
USB naar UART brug |
CP2102 |
Het wordt geleverd met een microUSB-interface waarmee u het bord kunt aansluiten op uw computer om code te uploaden of stroom aan te sluiten.
Het gebruikt de CP2102-chip (USB naar UART) om te communiceren met uw computer via een COM-poort met behulp van een seriële interface. Een andere populaire chip is de CH340. Controleer wat de USB naar UART-chipconverter op uw bord is, want u moet de vereiste drivers installeren zodat uw computer kan communiceren met het bord (meer informatie hierover later in deze handleiding).
Dit bord wordt ook geleverd met een RESET-knop (mogelijk gelabeld als EN) om het bord opnieuw op te starten en een BOOT-knop om het bord in de knippermodus te zetten (beschikbaar om code te ontvangen). Houd er rekening mee dat sommige borden mogelijk geen BOOT-knop hebben.
Het wordt ook geleverd met een ingebouwde blauwe LED die intern is verbonden met GPIO 2. Deze LED is handig voor debuggen om een soort visuele fysieke output te geven. Er is ook een rode LED die oplicht wanneer u stroom levert aan het bord.ESP32-pinbezetting
De ESP32-randapparatuur omvat:
- 18 analoog-naar-digitaal converter (ADC) kanalen
- 3 SPI-interfaces
- 3 UART-interfaces
- 2 I2C-interfaces
- 16 PWM-uitgangskanalen
- 2 Digitaal-naar-Analoog Converters (DAC)
- 2 I2S-interfaces
- 10 Capacitieve sensor GPIO's
De ADC (analoog naar digitaal converter) en DAC (digitaal naar analoog converter) functies zijn toegewezen aan specifieke statische pinnen. U kunt echter zelf bepalen welke pinnen UART, I2C, SPI, PWM, etc. zijn – u hoeft ze alleen maar toe te wijzen in de code. Dit is mogelijk dankzij de multiplexing-functie van de ESP32-chip.
Hoewel u de pin-eigenschappen in de software kunt definiëren, zijn er standaard pinnen toegewezen, zoals weergegeven in de volgende afbeeldingDaarnaast zijn er pinnen met specifieke eigenschappen die ze geschikt maken voor een bepaald project of juist niet. De volgende tabel laat zien welke pinnen het beste zijn om te gebruiken als inputs, outputs en welke je voorzichtig moet gebruiken.
De pinnen die groen gemarkeerd zijn, zijn OK om te gebruiken. De pinnen die geel gemarkeerd zijn, zijn OK om te gebruiken, maar u moet opletten omdat ze een onverwacht gedrag kunnen vertonen, vooral bij het opstarten. De pinnen die rood gemarkeerd zijn, worden niet aanbevolen om te gebruiken als invoer of uitvoer.
GP IO | Invoer | Uitvoer | Notities |
0 | omhoog getrokken | OK | geeft PWM-signaal af bij het opstarten, moet LAAG zijn om de knippermodus te kunnen activeren |
1 | TX-pin | OK | debug-uitvoer bij het opstarten |
2 | OK | OK | aangesloten op de ingebouwde LED, moet zwevend of LAAG blijven om de knippermodus te kunnen activeren |
3 | OK | RX-pin | HOOG bij de laars |
4 | OK | OK | |
5 | OK | OK | geeft PWM-signaal af bij boot, strapping pin |
12 | OK | OK | laars faalt als hij hoog wordt getrokken, spanpen |
13 | OK | OK | |
14 | OK | OK | geeft PWM-signaal af bij opstarten |
15 | OK | OK | geeft PWM-signaal af bij boot, strapping pin |
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 | alleen invoer | |
35 | OK | alleen invoer | |
36 | OK | alleen invoer | |
39 | OK | alleen invoer |
Lees verder voor een meer gedetailleerde en diepgaande analyse van de ESP32 GPIO's en hun functies.
Alleen invoerpinnen
GPIO's 34 tot 39 zijn GPI's – input only pinnen. Deze pinnen hebben geen interne pull-up of pull-down weerstanden. Ze kunnen niet als outputs worden gebruikt, dus gebruik deze pinnen alleen als inputs:
- GPI 34
- GPI 35
- GPI 36
- GPI 39
SPI-flash geïntegreerd op de ESP-WROOM-32
GPIO 6 tot GPIO 11 zijn blootgesteld in sommige ESP32-ontwikkelborden. Deze pinnen zijn echter verbonden met de geïntegreerde SPI-flash op de ESP-WROOM-32-chip en worden niet aanbevolen voor andere toepassingen. Gebruik deze pinnen dus niet in uw projecten:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Capacitieve touch GPIO's
De ESP32 heeft 10 interne capacitieve aanraaksensoren. Deze kunnen variaties detecteren in alles wat een elektrische lading heeft, zoals de menselijke huid. Ze kunnen dus variaties detecteren die worden veroorzaakt door het aanraken van de GPIO's met een vinger. Deze pinnen kunnen eenvoudig worden geïntegreerd in capacitieve pads en mechanische knoppen vervangen. De capacitieve aanraakpinnen kunnen ook worden gebruikt om de ESP32 uit diepe slaap te wekken. Die interne aanraaksensoren zijn verbonden met deze GPIO's:
- T0 (GPIO4)
- T1 (GPIO0)
- T2 (GPIO2)
- T3 (GPIO15)
- T4 (GPIO13)
- T5 (GPIO12)
- T6 (GPIO14)
- T7 (GPIO27)
- T8 (GPIO33)
- T9 (GPIO32)
Analoog naar digitaal converter (ADC)
De ESP32 heeft 18 x 12 bits ADC input kanalen (terwijl de ESP8266 slechts 1x 10 bits ADC heeft). Dit zijn de GPIO's die gebruikt kunnen worden als ADC en bijbehorende kanalen:
- 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)
Opmerking: ADC2-pinnen kunnen niet worden gebruikt als Wi-Fi wordt gebruikt. Dus als u Wi-Fi gebruikt en u hebt moeite om de waarde van een ADC2 GPIO te krijgen, kunt u overwegen om in plaats daarvan een ADC1 GPIO te gebruiken. Dat zou uw probleem moeten oplossen.
De ADC-ingangskanalen hebben een resolutie van 12 bits. Dit betekent dat u analoge waarden kunt krijgen van 0 tot 4095, waarbij 0 overeenkomt met 0 V en 4095 met 3.3 V. U kunt ook de resolutie van uw kanalen instellen op de code en het ADC-bereik.
De ESP32 ADC-pinnen hebben geen lineair gedrag. U zult waarschijnlijk geen onderscheid kunnen maken tussen 0 en 0.1 V, of tussen 3.2 en 3.3 V. U moet dat in gedachten houden bij het gebruik van de ADC-pinnen. U krijgt een gedrag dat vergelijkbaar is met het gedrag dat in de volgende afbeelding wordt getoond.Digitaal naar analoog converter (DAC)
Er zijn 2 x 8 bits DAC-kanalen op de ESP32 om digitale signalen om te zetten in analoge signalen.tage signaaluitgangen. Dit zijn de DAC-kanalen:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO's
Er is RTC GPIO-ondersteuning op de ESP32. De GPIO's die naar het RTC low-power subsysteem worden gerouteerd, kunnen worden gebruikt wanneer de ESP32 in diepe slaap is. Deze RTC GPIO's kunnen worden gebruikt om de ESP32 uit diepe slaap te wekken wanneer de Ultra Low
Power (ULP) co-processor draait. De volgende GPIO's kunnen worden gebruikt als een externe wake-upbron.
- 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
De ESP32 LED PWM-controller heeft 16 onafhankelijke kanalen die kunnen worden geconfigureerd om PWM-signalen met verschillende eigenschappen te genereren. Alle pinnen die als uitgangen kunnen fungeren, kunnen worden gebruikt als PWM-pinnen (GPIO's 34 tot 39 kunnen geen PWM genereren).
Om een PWM-signaal in te stellen, moet u deze parameters in de code definiëren:
- Frequentie van het signaal;
- Inschakelduur;
- PWM-kanaal;
- GPIO waar u het signaal wilt uitsturen.
I2C
De ESP32 heeft twee I2C-kanalen en elke pin kan worden ingesteld als SDA of SCL. Bij gebruik van de ESP32 met de Arduino IDE zijn de standaard I2C-pinnen:
- GPIO21 (SDA)
- GPIO 22 (SCL)
Als u andere pinnen wilt gebruiken bij het gebruik van de draadbibliotheek, hoeft u alleen maar het volgende aan te roepen:
Draad.begin(SDA, SCL);
SPI
Standaard is de pintoewijzing voor SPI:
SPI | MOSI | MISO | KLIK | CS |
VSPI | GPI 23 | GPI 19 | GPI 18 | GPI 5 |
HSPI | GPI 13 | GPI 12 | GPI 14 | GPI 15 |
interrupts
Alle GPIO's kunnen worden geconfigureerd als interrupts.
Omsnoeringspennen
De ESP32-chip heeft de volgende strapping-pinnen:
- GPIO 0 (moet LAAG zijn om de opstartmodus te kunnen openen)
- GPIO 2 (moet zwevend of LOW zijn tijdens het opstarten)
- GPI 4
- GPIO 5 (moet HOOG zijn tijdens het opstarten)
- GPIO 12 (moet LAAG zijn tijdens het opstarten)
- GPIO 15 (moet HOOG zijn tijdens het opstarten)
Deze worden gebruikt om de ESP32 in de bootloader- of flashmodus te zetten. Op de meeste ontwikkelborden met ingebouwde USB/Serial hoeft u zich geen zorgen te maken over de status van deze pinnen. Het bord zet de pinnen in de juiste status voor flashen of bootmodus. Meer informatie over de ESP32 Boot Mode Selection vindt u hier.
Als u echter randapparatuur op die pinnen hebt aangesloten, kunt u problemen ondervinden bij het uploaden van nieuwe code, het flashen van de ESP32 met nieuwe firmware of het resetten van het bord. Als u randapparatuur op de strapping-pinnen hebt aangesloten en u ondervindt problemen bij het uploaden van code of het flashen van de ESP32, kan dit komen doordat die randapparatuur voorkomt dat de ESP32 de juiste modus ingaat. Lees de documentatie over het selecteren van de opstartmodus om u in de juiste richting te leiden. Na het resetten, flashen of opstarten werken die pinnen zoals verwacht.
Pinnen HOOG bij de laars
Sommige GPIO's veranderen hun status naar HOOG of geven PWM-signalen af bij het opstarten of resetten.
Dit betekent dat als u uitgangen hebt aangesloten op deze GPIO's, u onverwachte resultaten kunt krijgen wanneer de ESP32 wordt gereset of opgestart.
- GPI 1
- GPI 3
- GPI 5
- GPIO 6 tot GPIO 11 (aangesloten op het geïntegreerde SPI-flashgeheugen van de ESP32 – gebruik wordt afgeraden).
- GPI 14
- GPI 15
Inschakelen (EN)
Enable (EN) is de enable-pin van de 3.3V-regelaar. Deze is omhooggetrokken, dus sluit deze aan op de grond om de 3.3V-regelaar uit te schakelen. Dit betekent dat u deze pin die is aangesloten op een drukknop kunt gebruiken om uw ESP32 opnieuw op te starten, bijvoorbeeldampik.
GPIO-stroomverbruik
De absolute maximale stroom die per GPIO wordt opgenomen, bedraagt 40 mA volgens het gedeelte 'Aanbevolen bedrijfsomstandigheden' in het ESP32-gegevensblad.
ESP32 Ingebouwde Hall-effectsensor
De ESP32 beschikt ook over een ingebouwde hall-effectsensor die veranderingen in het magnetische veld in zijn omgeving detecteert
ESP32 Arduino-IDE
Er is een add-on voor de Arduino IDE waarmee u de ESP32 kunt programmeren met behulp van de Arduino IDE en de programmeertaal. In deze tutorial laten we u zien hoe u het ESP32-bord in Arduino IDE installeert, ongeacht of u Windows, Mac OS X of Linux gebruikt.
Vereisten: Arduino IDE geïnstalleerd
Voordat u met deze installatieprocedure begint, moet u Arduino IDE op uw computer hebben geïnstalleerd. Er zijn twee versies van de Arduino IDE die u kunt installeren: versie 1 en versie 2.
U kunt Arduino IDE downloaden en installeren door op de volgende link te klikken: arduino.cc/nl/Hoofdpagina/Software
Welke Arduino IDE versie raden wij aan? Op dit moment zijn er een aantal plugins voor de ESP32 (zoals de SPIFFS Filesystem Uploader Plugin) die nog niet worden ondersteund op Arduino 2. Dus als u van plan bent om de SPIFFS plugin in de toekomst te gebruiken, raden we u aan om de legacy versie 1.8.X te installeren. U hoeft alleen maar naar beneden te scrollen op de Arduino software pagina om deze te vinden.
ESP32 Add-on installeren in Arduino IDE
Volg de onderstaande instructies om het ESP32-bord in uw Arduino IDE te installeren:
- Ga in je Arduino IDE naar File> Voorkeuren
- Voer het volgende in bij het veld 'Extra bestuursmanager' URLs”-veld:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Klik vervolgens op de knop “OK”:Opmerking: als je al de ESP8266-borden hebt URL, kunt u de URLs met een komma als volgt:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Open de Boards Manager. Ga naar Tools > Board > Boards Manager…Zoeken naar ESP32 and press install button for the “ESP32 by Espressif Systems“:
Dat is het. Het zou na een paar seconden geïnstalleerd moeten zijn.
Testcode uploaden
Sluit het ESP32-bord aan op uw computer. Volg deze stappen met uw Arduino IDE open:
- Selecteer uw bord in het menu Extra > Bord (in mijn geval is dat de ESP32 DEV-module)
- Selecteer de poort (als u de COM-poort niet in uw Arduino IDE ziet, moet u de CP210x USB naar UART Bridge VCP-stuurprogramma's installeren):
- Open de volgende example onder File > Bijv.amples > WiFi
(ESP32) > WiFiScan - Er wordt een nieuwe schets geopend in uw Arduino IDE:
- Druk op de Upload-knop in de Arduino IDE. Wacht een paar seconden terwijl de code compileert en uploadt naar je board.
- Als alles volgens verwachting is verlopen, zou u het bericht 'Uploaden voltooid' moeten zien.
- Open de Arduino IDE Serial Monitor met een baudrate van 115200:
- Druk op de ingebouwde knop 'Enable' van de ESP32. U zou nu de beschikbare netwerken in de buurt van uw ESP32 moeten zien:
Probleemoplossing
Als u probeert een nieuwe schets te uploaden naar uw ESP32 en u krijgt deze foutmelding "Er is een fatale fout opgetreden: kon geen verbinding maken met ESP32: Time-out... Verbinding maken...", betekent dit dat uw ESP32 niet in de flash-/uploadmodus staat.
Nadat u de juiste boardnaam en COM-poort hebt geselecteerd, volgt u deze stappen:
Houd de "BOOT"-knop op uw ESP32-bord ingedrukt
- Druk op de knop “Uploaden” in de Arduino IDE om uw schets te uploaden:
- Nadat u het bericht "Connecting..." in uw Arduino IDE ziet, laat u uw vinger los van de "BOOT"-knop:
- Daarna zou je het bericht 'Uploaden voltooid' moeten zien
Dat is alles. Je ESP32 zou de nieuwe sketch moeten draaien. Druk op de knop "ENABLE" om de ESP32 opnieuw op te starten en de nieuwe geüploade sketch te draaien.
Je moet deze knoppenreeks ook elke keer herhalen als je een nieuwe schets wilt uploaden.
Project 1 ESP32 Ingangen Uitgangen
In deze handleiding leert u hoe u digitale ingangen, zoals drukknoppen, kunt lezen en digitale uitgangen, zoals LED's, kunt bedienen met behulp van de ESP32 met Arduino IDE.
Vereisten
We programmeren de ESP32 met Arduino IDE. Zorg er dus voor dat je de ESP32 boards add-on hebt geïnstalleerd voordat je verdergaat:
- ESP32 Add-on installeren in Arduino IDE
ESP32-besturing digitale uitgangen
Eerst moet u de GPIO die u wilt besturen instellen als een OUTPUT. Gebruik de pinMode()-functie als volgt:
pinMode(GPIO, UITVOER);
Om een digitale uitgang te besturen, hoeft u alleen maar de functie digitalWrite() te gebruiken. Deze accepteert als argumenten de GPIO (int-nummer) waarnaar u verwijst en de status (HIGH of LOW).
digitalWrite(GPIO, STAAT);
Alle GPIO's kunnen als uitgangen worden gebruikt, behalve GPIO's 6 tot en met 11 (aangesloten op de geïntegreerde SPI-flash) en GPIO's 34, 35, 36 en 39 (alleen ingangs-GPIO's);
Meer informatie over de ESP32 GPIO's: ESP32 GPIO-referentiehandleiding
ESP32 Lees digitale ingangen
Stel eerst de GPIO in die u wilt lezen als INPUT met behulp van de functie pinMode(), als volgt:
pinMode(GPIO, INGANG);
Om een digitale invoer, zoals een knop, te lezen, gebruikt u de functie digitalRead(). Deze accepteert als argument de GPIO (int-nummer) waarnaar u verwijst.
digitaal lezen(GPIO);
Alle ESP32 GPIO's kunnen als ingangen worden gebruikt, behalve GPIO's 6 tot en met 11 (aangesloten op de geïntegreerde SPI-flash).
Meer informatie over de ESP32 GPIO's: ESP32 GPIO-referentiehandleiding
Project bijvample
Om u te laten zien hoe u digitale ingangen en uitgangen kunt gebruiken, bouwen we een eenvoudig projectvoorbeeld.ample met een drukknop en een LED. We lezen de status van de drukknop en lichten de LED overeenkomstig op zoals geïllustreerd in de volgende afbeelding.
Benodigde onderdelen
Hier is een lijst met de onderdelen die je nodig hebt om het circuit te bouwen:
- ESP32 DEVKIT V1
- 5 mm-led
- 220 Ohm weerstand
- Druk op de knop
- 10k Ohm-weerstand
- Broodplank
- Jumper-draden
Schematisch diagram
Voordat u verdergaat, moet u een circuit met een LED en een drukknop samenstellen.
We verbinden de LED met GPIO 5 en de drukknop met GPIO 4.Code
Open de code Project_1_ESP32_Inputs_Outputs.ino in Arduino IDEHoe de code werkt
In de volgende twee regels maakt u variabelen om pinnen toe te wijzen:
De knop is verbonden met GPIO 4 en de LED is verbonden met GPIO 5. Bij gebruik van de Arduino IDE met de ESP32 komt 4 overeen met GPIO 4 en 5 met GPIO 5.
Vervolgens maak je een variabele om de knopstatus vast te houden. Standaard is dit 0 (niet ingedrukt).
int knopStatus = 0;
In setup() initialiseert u de knop als INPUT en de LED als OUTPUT.
Hiervoor gebruikt u de functie pinMode() die de pin accepteert waarnaar u verwijst en de modus: INPUT of OUTPUT.
pinMode(knopPin, INPUT);
pinMode(ledPin, UITVOER);
In loop() leest u de status van de knop uit en stelt u de LED dienovereenkomstig in.
In de volgende regel leest u de knopstatus en slaat u deze op in de variabele buttonState.
Zoals we eerder hebben gezien, gebruikt u de functie digitalRead().
knopStatus = digitaalLezen(knopPin);
De volgende if-statement controleert of de knopstatus HIGH is. Als dat zo is, schakelt het de LED in met behulp van de digitalWrite()-functie die de ledPin en de status HIGH als argument accepteert.
als (buttonState == HOOG)Als de knopstatus niet HIGH is, zet u de LED uit. Stel gewoon LOW in als tweede argument in de digitalWrite()-functie.
De code uploaden
Voordat u op de uploadknop klikt, gaat u naar Extra > Bord en selecteert u het bord: DOIT ESP32 DEVKIT V1 bord.
Ga naar Tools > Port en selecteer de COM-poort waarmee de ESP32 is verbonden. Druk vervolgens op de uploadknop en wacht op het bericht "Done uploading".Let op: Als u veel stippen (verbinden…__…__) ziet in het foutopsporingsvenster en het bericht “Kan geen verbinding maken met ESP32: Time-out bij wachten op pakketheader”, betekent dit dat u op de ESP32-boord-BOOT-knop moet drukken nadat de stippen zijn verschenen.
beginnen te verschijnen.Probleemoplossing
Demonstratie
Nadat u de code hebt geüpload, test u uw circuit. Uw LED zou moeten oplichten wanneer u op de drukknop drukt:En schakel uit wanneer u het loslaat:
Project 2 ESP32 analoge ingangen
Dit project laat zien hoe je analoge ingangen kunt lezen met de ESP32 met behulp van Arduino IDE.
Analoog uitlezen is handig om waarden uit te lezen van variabele weerstanden, zoals potentiometers, of analoge sensoren.
Analoge ingangen (ADC)
Met de ESP32 kunt u een analoge waarde aflezen, wat betekent dat u verschillende volumes kunt meten.tage-niveaus tussen 0 V en 3.3 V.
de voltagDe gemeten waarde wordt vervolgens toegewezen aan een waarde tussen 0 en 4095, waarbij 0 V overeenkomt met 0 en 3.3 V overeenkomt met 4095. Elk volumetagDe waarden tussen 0 V en 3.3 V krijgen de bijbehorende waarde ertussen.ADC is niet-lineair
Idealiter verwacht u een lineair gedrag bij gebruik van de ESP32 ADC-pinnen.
Dat gebeurt echter niet. Wat u krijgt is een gedrag zoals weergegeven in de volgende grafiek:Dit gedrag betekent dat uw ESP32 geen onderscheid kan maken tussen 3.3 V en 3.2 V.
Je krijgt dezelfde waarde voor beide voltagnl: 4095.
Hetzelfde gebeurt bij zeer lage volumestage waarden: voor 0 V en 0.1 V krijg je dezelfde waarde: 0. Je moet dit in gedachten houden bij het gebruik van de ESP32 ADC-pinnen.
analogRead() Functie
Het lezen van een analoge input met de ESP32 met behulp van de Arduino IDE is net zo eenvoudig als het gebruiken van de analogRead() functie. Het accepteert als argument de GPIO die u wilt lezen:
analoogLezen(GPIO);
Er zijn er slechts 15 beschikbaar op het DEVKIT V1-bord (versie met 30 GPIO's).
Pak je ESP32 board pinout en zoek de ADC pinnen. Deze zijn gemarkeerd met een rode rand in de onderstaande afbeelding.Deze analoge inputpinnen hebben een resolutie van 12 bits. Dit betekent dat wanneer u een analoge input leest, het bereik kan variëren van 0 tot 4095.
Let op: ADC2-pinnen kunnen niet worden gebruikt als Wi-Fi wordt gebruikt. Dus als u Wi-Fi gebruikt en u hebt problemen met het verkrijgen van de waarde van een ADC2 GPIO, kunt u overwegen om in plaats daarvan een ADC1 GPIO te gebruiken, dat zou uw probleem moeten oplossen.
Om te zien hoe alles met elkaar samenhangt, maken we een eenvoudige example om een analoge waarde van een potentiometer te lezen.
Benodigde onderdelen
Voor deze exampJe hebt de volgende onderdelen nodig:
- ESP32 DEVKIT V1-bord
- Potentiometer
- Broodplank
- Jumper-draden
Schematisch
Sluit een potentiometer aan op uw ESP32. De middelste pin van de potentiometer moet worden aangesloten op GPIO 4. U kunt het volgende schema als referentie gebruiken.Code
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
ESP32 Add-on installeren in Arduino IDE
Open de code Project_2_ESP32_Inputs_Outputs.ino in Arduino IDEDeze code leest eenvoudigweg de waarden van de potentiometer en drukt deze waarden af op de seriële monitor.
In de code begin je met het definiëren van de GPIO waarmee de potentiometer is verbonden. In dit voorbeeldample, GPIO 4.In setup() initialiseert u een seriële communicatie met een baudrate van 115200.
Gebruik in de loop() de functie analogRead() om de analoge invoer van de potPin te lezen.
Druk ten slotte de waarden die u van de potentiometer hebt afgelezen, af op de seriële monitor.
Upload de meegeleverde code naar uw ESP32. Zorg ervoor dat u het juiste bord en de juiste COM-poort hebt geselecteerd in het menu Extra.
Het testen van de Example
Nadat u de code hebt geüpload en op de resetknop van de ESP32 hebt gedrukt, opent u de seriële monitor met een baudrate van 115200. Draai aan de potentiometer en zie de waarden veranderen.De maximale waarde die u krijgt is 4095 en de minimale waarde is 0.
Afronden
In dit artikel heb je geleerd hoe je analoge inputs kunt lezen met de ESP32 met de Arduino IDE. Samengevat:
- Het ESP32 DEVKIT V1 DOIT-bord (versie met 30 pinnen) heeft 15 ADC-pinnen die u kunt gebruiken om analoge ingangen te lezen.
- Deze pinnen hebben een resolutie van 12 bits, wat betekent dat u waarden van 0 tot 4095 kunt verkrijgen.
- Om een waarde in de Arduino IDE te lezen, gebruikt u eenvoudig de functie analogRead().
- De ESP32 ADC-pinnen hebben geen lineair gedrag. U zult waarschijnlijk geen onderscheid kunnen maken tussen 0 en 0.1 V, of tussen 3.2 en 3.3 V. U moet dat in gedachten houden bij het gebruik van de ADC-pinnen.
Project 3 ESP32 PWM (Analoge Uitgang)
In deze tutorial laten we je zien hoe je PWM-signalen genereert met de ESP32 met behulp van Arduino IDE. Als exampLaten we een eenvoudig circuit bouwen dat een LED dimt met behulp van de LED PWM-controller van de ESP32.ESP32 LED PWM-controller
De ESP32 beschikt over een LED PWM-controller met 16 onafhankelijke kanalen die geconfigureerd kunnen worden om PWM-signalen met verschillende eigenschappen te genereren.
Dit zijn de stappen die u moet volgen om een LED te dimmen met PWM met behulp van de Arduino IDE:
- Eerst moet je een PWM-kanaal kiezen. Er zijn 16 kanalen van 0 tot 15.
- Vervolgens moet u de PWM-signaalfrequentie instellen. Voor een LED is een frequentie van 5000 Hz prima.
- U moet ook de duty cycle-resolutie van het signaal instellen: u hebt resoluties van 1 tot 16 bits. We gebruiken een resolutie van 8 bits, wat betekent dat u de helderheid van de LED kunt regelen met een waarde van 0 tot 255.
- Vervolgens moet u opgeven op welke GPIO of GPIO's het signaal zal verschijnen. Hiervoor gebruikt u de volgende functie:
ledcAttachPin(GPIO, kanaal)
Deze functie accepteert twee argumenten. De eerste is de GPIO die het signaal zal uitsturen, en de tweede is het kanaal dat het signaal zal genereren. - Om de helderheid van de LED te regelen met behulp van PWM, gebruikt u de volgende functie:
ledcWrite(kanaal, dutycycle)
Deze functie accepteert als argumenten het kanaal dat het PWM-signaal genereert en de duty cycle.
Benodigde onderdelen
Om deze tutorial te volgen heb je de volgende onderdelen nodig:
- ESP32 DEVKIT V1-bord
- 5mm-led
- 220 Ohm weerstand
- Broodplank
- Jumper-draden
Schematisch
Sluit een LED aan op uw ESP32 zoals in het volgende schema. De LED moet worden aangesloten op GPIO 4.Opmerking: je kunt elke pin gebruiken die je wilt, zolang deze maar als output kan fungeren. Alle pinnen die als output kunnen fungeren, kunnen als PWM-pinnen worden gebruikt. Lees voor meer informatie over de ESP32 GPIO's: ESP32 Pinout Reference: Welke GPIO-pinnen moet je gebruiken?
Code
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
ESP32 Add-on installeren in Arduino IDE
Open de code Project_3_ESP32_PWM.ino in Arduino IDEJe begint met het definiëren van de pin waaraan de LED is bevestigd. In dit geval is de LED bevestigd aan GPIO 4.
Vervolgens stelt u de PWM-signaaleigenschappen in. U definieert een frequentie van 5000 Hz, kiest kanaal 0 om het signaal te genereren en stelt een resolutie van 8 bits in. U kunt andere eigenschappen kiezen, anders dan deze, om verschillende PWM-signalen te genereren.
In setup() moet u LED PWM configureren met de eigenschappen die u eerder hebt gedefinieerd met behulp van de ledcSetup()-functie die als argumenten het ledChannel, de frequentie en de resolutie accepteert, als volgt:
Vervolgens moet u de GPIO kiezen waarvan u het signaal wilt ontvangen. Gebruik hiervoor de ledcAttachPin()-functie die als argumenten de GPIO accepteert waar u het signaal wilt ontvangen en het kanaal dat het signaal genereert. In dit voorbeeldample, we krijgen het signaal in de ledPin GPIO, dat overeenkomt met GPIO 4. Het kanaal dat het signaal genereert is de ledChannel, dat overeenkomt met kanaal 0.
In de lus varieert u de duty cycle tussen 0 en 255 om de helderheid van de LED te verhogen.
En dan, tussen 255 en 0 om de helderheid te verlagen.
Om de helderheid van de LED in te stellen, hoeft u alleen maar de functie ledcWrite() te gebruiken. Deze accepteert als argumenten het kanaal dat het signaal genereert en de duty cycle.
Omdat we een resolutie van 8 bits gebruiken, wordt de duty cycle geregeld met een waarde van 0 tot 255. Houd er rekening mee dat we in de ledcWrite()-functie het kanaal gebruiken dat het signaal genereert, en niet de GPIO.
Het testen van de Example
Upload de code naar je ESP32. Zorg dat je het juiste bord en de juiste COM-poort hebt geselecteerd. Kijk naar je circuit. Je zou een dimmer-LED moeten hebben die de helderheid verhoogt en verlaagt.
Project 4 ESP32 PIR-bewegingssensor
Dit project laat zien hoe je beweging kunt detecteren met de ESP32 met behulp van een PIR-bewegingssensor. De zoemer laat een alarm horen wanneer er beweging wordt gedetecteerd en stopt het alarm wanneer er gedurende een vooraf ingestelde tijd (bijvoorbeeld 4 seconden) geen beweging wordt gedetecteerd.
Hoe de HC-SR501 bewegingssensor werkt
.Het werkingsprincipe van de HC-SR501-sensor is gebaseerd op de verandering van de infraroodstraling op het bewegende object. Om door de HC-SR501-sensor te worden gedetecteerd, moet het object aan twee vereisten voldoen:
- Het object zendt infraroodstraling uit.
- Het object beweegt of schudt
Dus:
Als een object infraroodstraling uitzendt maar niet beweegt (bijvoorbeeld een persoon die stilstaat zonder te bewegen), wordt dit door de sensor niet gedetecteerd.
Als een object beweegt maar geen infraroodstraling uitzendt (bijvoorbeeld een robot of voertuig), wordt dit NIET door de sensor gedetecteerd.
Introductie van timers
In deze exampwe zullen ook timers introduceren. We willen dat de LED een vooraf bepaald aantal seconden aan blijft nadat er beweging is gedetecteerd. In plaats van een delay()-functie te gebruiken die uw code blokkeert en u gedurende een bepaald aantal seconden niets anders laat doen, zouden we een timer moeten gebruiken.De delay()-functie
U zou bekend moeten zijn met de delay()-functie, omdat deze veelgebruikt wordt. Deze functie is vrij eenvoudig te gebruiken. Het accepteert één enkel int-nummer als argument.
Dit getal geeft de tijd in milliseconden aan die het programma moet wachten voordat het naar de volgende regel code kan gaan.Wanneer u delay(1000) uitvoert, stopt uw programma 1 seconde op die regel.
delay() is een blokkerende functie. Blokkerende functies voorkomen dat een programma iets anders doet totdat die specifieke taak is voltooid. Als u meerdere taken tegelijkertijd wilt laten plaatsvinden, kunt u delay() niet gebruiken.
Voor de meeste projecten moet u het gebruik van vertragingen vermijden en in plaats daarvan timers gebruiken.
De millis()-functie
Met behulp van de functie millis() kunt u het aantal milliseconden retourneren dat is verstreken sinds het programma voor het eerst is gestart.Waarom is die functie nuttig? Omdat je met behulp van wat wiskunde eenvoudig kunt verifiëren hoeveel tijd er is verstreken zonder je code te blokkeren.
Benodigde onderdelen
Om deze tutorial te volgen heb je de volgende onderdelen nodig
- ESP32 DEVKIT V1-bord
- PIR-bewegingssensor (HC-SR501)
- Actieve zoemer
- Jumper-draden
- Broodplank
SchematischOpmerking: De werkende voltagDe spanning van de HC-SR501 is 5V. Gebruik de Vin-pin om hem van stroom te voorzien.
Code
Voordat u verdergaat met deze tutorial, moet u de ESP32-add-on in uw Arduino IDE hebben geïnstalleerd. Volg een van de volgende tutorials om de ESP32 op de Arduino IDE te installeren, als u dat nog niet hebt gedaan. (Als u deze stap al hebt uitgevoerd, kunt u doorgaan naar de volgende stap.)
ESP32 Add-on installeren in Arduino IDE
Open de code Project_4_ESP32_PIR_Motion_Sensor.ino in Arduino IDE.
Demonstratie
Upload de code naar je ESP32-bord. Zorg dat je het juiste bord en de juiste COM-poort hebt geselecteerd. Upload code referentiestappen.
Open de seriële monitor met een baudrate van 115200.Beweeg uw hand voor de PIR-sensor. De zoemer zou moeten aangaan en het bericht wordt afgedrukt in de Serial Monitor met de tekst "Beweging gedetecteerd! Zoemeralarm".
Na 4 seconden zou de zoemer moeten uitschakelen.
Project 5 ESP32-schakelaar Web Server
In dit project maak je een stand-alone web server met een ESP32 die uitgangen (twee LED's) bestuurt met behulp van de Arduino IDE-programmeeromgeving. De web server is mobiel responsief en kan worden benaderd met elk apparaat dat als browser op het lokale netwerk is. We laten u zien hoe u de web server en hoe de code stap voor stap werkt.
Project voorbijview
Voordat we direct naar het project gaan, is het belangrijk om te schetsen wat onze web server zal doen, zodat het later gemakkelijker is om de stappen te volgen.
- De web De server die je gaat bouwen bestuurt twee LED's die verbonden zijn met de ESP32 GPIO 26 en GPIO 27;
- Je hebt toegang tot de ESP32 web server door het ESP32 IP-adres in te typen in een browser in het lokale netwerk;
- Door op de knoppen op uw web server kunt u direct de status van elke LED wijzigen.
Benodigde onderdelen
Voor deze tutorial heb je de volgende onderdelen nodig:
- ESP32 DEVKIT V1-bord
- 2x 5mm LED
- 2x 200 Ohm weerstand
- Broodplank
- Jumper-draden
Schematisch
Begin met het bouwen van het circuit. Sluit twee LED's aan op de ESP32 zoals weergegeven in het volgende schema: één LED aangesloten op GPIO 26 en de andere op GPIO 27.
Opmerking: We gebruiken het ESP32 DEVKIT DOIT-bord met 36 pinnen. Controleer de pinout van het bord dat u gebruikt voordat u het circuit in elkaar zet.Code
Hier bieden we de code die de ESP32 creëert web server. Open de code Project_5_ESP32_Switch _Web_Server.ino in arduino IDE, maar upload het nog niet. Je moet wat wijzigingen aanbrengen om het voor jou te laten werken.
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
ESP32 Add-on installeren in Arduino IDE
Uw netwerkreferenties instellen
U moet de volgende regels aanpassen met uw netwerkreferenties: SSID en wachtwoord. De code is goed becommentarieerd over waar u de wijzigingen moet aanbrengen.De code uploaden
Nu kunt u de code uploaden en de web server zal direct werken.
Volg de volgende stappen om code naar de ESP32 te uploaden:
- Sluit uw ESP32-kaart aan op uw computer;
- Selecteer in de Arduino IDE je bord in Extra > Bord (in ons geval gebruiken we het ESP32 DEVKIT DOIT-bord);
- Selecteer de COM-poort in Extra > Poort.
- Druk op de Upload-knop in de Arduino IDE en wacht een paar seconden terwijl de code wordt gecompileerd en naar je bord wordt geüpload.
- Wacht op het bericht ‘Uploaden voltooid’.
Het ESP IP-adres vinden
Nadat u de code hebt geüpload, opent u de Serial Monitor met een baudrate van 115200.Druk op de ESP32 EN-knop (reset). De ESP32 maakt verbinding met wifi en geeft het ESP IP-adres weer op de seriële monitor. Kopieer dat IP-adres, omdat u het nodig hebt om toegang te krijgen tot de ESP32 web server.
Toegang tot de Web Server
Om toegang te krijgen tot de web server, open uw browser, plak het ESP32 IP-adres erin en u ziet de volgende pagina.
Opmerking: Uw browser en ESP32 moeten op hetzelfde LAN zijn aangesloten.Als u naar de Serial Monitor kijkt, ziet u wat er op de achtergrond gebeurt. De ESP ontvangt een HTTP-verzoek van een nieuwe client (in dit geval uw browser).
U kunt ook andere informatie over de HTTP-aanvraag bekijken.
Demonstratie
Nu kunt u testen of uw web server werkt goed. Klik op de knoppen om de LED's te bedienen.Tegelijkertijd kunt u een kijkje nemen op de Serial Monitor om te zien wat er op de achtergrond gebeurt. Bijvoorbeeldample, wanneer u op de knop klikt om GPIO 26 AAN te zetten, ontvangt ESP32 een verzoek op de /26/on URL.
Wanneer de ESP32 dat verzoek ontvangt, schakelt hij de LED die is aangesloten op GPIO 26 in en werkt hij de status ervan bij op de web pagina.
De knop voor GPIO 27 werkt op een vergelijkbare manier. Test of deze goed werkt.
Hoe de code werkt
In dit gedeelte gaan we dieper in op de code om te zien hoe deze werkt.
Het eerste wat u moet doen, is de WiFi-bibliotheek toevoegen.Zoals eerder vermeld, moet u uw ssid en wachtwoord in de volgende regels tussen dubbele aanhalingstekens plaatsen.
Vervolgens stelt u uw web server naar poort 80.
De volgende regel maakt een variabele om de header van de HTTP-aanvraag op te slaan:
Vervolgens maakt u hulpvariabelen om de huidige status van uw outputs op te slaan. Als u meer outputs wilt toevoegen en de status wilt opslaan, moet u meer variabelen maken.
U moet ook een GPIO toewijzen aan elk van uw uitgangen. Hier gebruiken we GPIO 26 en GPIO 27. U kunt elke andere geschikte GPIO gebruiken.
instellen()
Laten we nu naar setup() gaan. Eerst starten we een seriële communicatie met een baudrate van 115200 voor foutopsporingsdoeleinden.U definieert uw GPIO's ook als OUTPUT's en stelt ze in op LOW.
Met de volgende regels start u de Wi-Fi-verbinding met WiFi.begin(ssid, wachtwoord), wacht u tot de verbinding succesvol is en drukt u het ESP IP-adres af in de seriële monitor.
lus()
In de loop() programmeren we wat er gebeurt als een nieuwe client een verbinding tot stand brengt met de web server.
De ESP32 luistert altijd naar inkomende clients met de volgende regel:Wanneer een verzoek van een client wordt ontvangen, slaan we de inkomende gegevens op. De while-lus die volgt, blijft actief zolang de client verbonden blijft. We raden u aan het volgende deel van de code niet te wijzigen, tenzij u precies weet wat u doet.
Het volgende gedeelte van de if- en else-instructies controleert welke knop in uw web pagina, en regelt de outputs dienovereenkomstig. Zoals we eerder hebben gezien, doen we een verzoek op verschillende URLs afhankelijk van de ingedrukte knop.
Bijvoorbeeldample, als je op de GPIO 26 ON-knop drukt, ontvangt de ESP32 een verzoek op de /26/ON URL (we kunnen die informatie zien op de HTTP-header op de Serial Monitor). Dus we kunnen controleren of de header de expressie GET /26/on bevat. Als dat zo is, veranderen we de output26state variabele naar ON, en de ESP32 zet de LED aan.
Dit werkt op dezelfde manier voor de andere knoppen. Dus als u meer outputs wilt toevoegen, moet u dit deel van de code aanpassen om ze op te nemen.
De HTML weergeven web pagina
Het volgende dat u moet doen, is het maken van de web pagina. De ESP32 stuurt een antwoord naar uw browser met wat HTML-code om de web pagina.
De web pagina wordt naar de client verzonden met behulp van deze expressie client.println(). U moet opgeven wat u naar de client wilt verzenden als argument.
Het eerste wat we altijd moeten versturen is de volgende regel, die aangeeft dat we HTML versturen.Dan maakt de volgende regel de web pagina responsief in elke web browser.
En het volgende wordt gebruikt om verzoeken op het favicon te voorkomen. – U hoeft zich geen zorgen te maken over deze regel.
Stijl de Web Pagina
Vervolgens hebben we wat CSS-tekst om de knoppen en de web paginaweergave.
We kiezen het Helvetica-lettertype en definiëren dat de inhoud als een blok moet worden weergegeven en in het midden moet worden uitgelijnd.We stylen onze knoppen met de kleur #4CAF50, zonder rand, tekst in witte kleur en met deze padding: 16px 40px. We stellen ook de tekstdecoratie in op none, definiëren de lettergrootte, de marge en de cursor op een pointer.
We definiëren ook de stijl voor een tweede knop, met alle eigenschappen van de knop die we eerder hebben gedefinieerd, maar met een andere kleur. Dit wordt de stijl voor de uitknop.
Het instellen van de Web Pagina Eerste Kop
In de volgende regel kunt u de eerste kop van uw web pagina. Hier hebben we “ESP32 Web Server”, maar u kunt deze tekst naar wens wijzigen.De knoppen en bijbehorende status weergeven
Vervolgens schrijft u een alinea om de huidige status van GPIO 26 weer te geven. Zoals u kunt zien gebruiken we de variabele output26State, zodat de status direct wordt bijgewerkt wanneer deze variabele verandert.Vervolgens tonen we de aan- of uitknop, afhankelijk van de huidige status van de GPIO. Als de huidige status van de GPIO uit is, tonen we de AAN-knop, anders tonen we de UIT-knop.
We gebruiken dezelfde procedure voor GPIO 27.
De verbinding sluiten
Wanneer het antwoord ten slotte is afgelopen, wissen we de headervariabele en verbreken we de verbinding met de client met client.stop().
Afronden
In deze tutorial hebben we je laten zien hoe je een web server met de ESP32. We hebben je een eenvoudige ex laten zienampdie twee LED's aanstuurt, maar het idee is om die LED's te vervangen door een relais of een andere uitgang die u wilt aansturen.
Project 6 RGB LED Web Server
In dit project laten we je zien hoe je een RGB LED op afstand kunt bedienen met een ESP32-bord met behulp van een web server met een kleurenkiezer.
Project voorbijview
Voordat we beginnen, laten we eens kijken hoe dit project werkt:
- De ESP32 web De server toont een kleurenkiezer.
- Wanneer u een kleur kiest, doet uw browser een verzoek op een URL die de R-, G- en B-parameters van de geselecteerde kleur bevat.
- Uw ESP32 ontvangt het verzoek en splitst de waarde voor elke kleurparameter.
- Vervolgens wordt een PWM-signaal met de bijbehorende waarde naar de GPIO's gestuurd die de RGB-LED aansturen.
Hoe werken RGB-LED's?
Bij een RGB-led met gemeenschappelijke kathode delen alle drie de leds een negatieve aansluiting (kathode). Alle in de kit inbegrepen leds zijn RGB-leds met gemeenschappelijke kathode.Hoe creëer je verschillende kleuren?
Met een RGB-LED kunt u uiteraard rood, groen en blauw licht produceren. Door de intensiteit van elke LED te configureren, kunt u ook andere kleuren produceren.
Bijvoorbeeldample, om puur blauw licht te produceren, zou je de blauwe LED op de hoogste intensiteit zetten en de groene en rode LED's op de laagste intensiteit. Voor een wit licht, zou je alle drie de LED's op de hoogste intensiteit zetten.
Kleuren mengen
Om andere kleuren te produceren, kunt u de drie kleuren combineren in verschillende intensiteiten. Om de intensiteit van elke LED aan te passen, kunt u een PWM-signaal gebruiken.
Omdat de LED-lampjes heel dicht bij elkaar zitten, zien onze ogen het resultaat van de kleurencombinatie, in plaats van de drie kleuren afzonderlijk.
Om een idee te krijgen hoe u de kleuren kunt combineren, kunt u het volgende schema bekijken.
Dit is de eenvoudigste kleurenmengtabel, maar geeft u wel een idee van hoe het werkt en hoe u verschillende kleuren kunt produceren.Benodigde onderdelen
Voor dit project heb je de volgende onderdelen nodig:
- ESP32 DEVKIT V1-bord
- RGB-LED
- 3x 220 ohm weerstanden
- Jumper-draden
- Broodplank
SchematischCode
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
- ESP32 Add-on installeren in Arduino IDE
Nadat u het circuit hebt gemonteerd, opent u de code
Project_6_RGB_LED_Web_Server.ino in Arduino IDE.
Vergeet niet uw netwerkgegevens in te voeren voordat u de code uploadt, zodat de ESP verbinding kan maken met uw lokale netwerk.Hoe de code werkt
De ESP32-schets maakt gebruik van de WiFi.h-bibliotheek.De volgende regels definiëren tekenreeksvariabelen om de parameters R, G en B uit de aanvraag vast te houden.
De volgende vier variabelen worden later gebruikt om de HTTP-aanvraag te decoderen.
Maak drie variabelen voor de GPIO's die de strip R-, G- en B-parameters zullen besturen. In dit geval gebruiken we GPIO 13, GPIO 12 en GPIO 14.
Deze GPIO's moeten PWM-signalen uitsturen, dus we moeten eerst de PWM-eigenschappen configureren. Stel de PWM-signaalfrequentie in op 5000 Hz. Koppel vervolgens een PWM-kanaal aan elke kleur
En stel ten slotte de resolutie van de PWM-kanalen in op 8-bits
In setup() wijst u de PWM-eigenschappen toe aan de PWM-kanalen
Sluit de PWM-kanalen aan op de bijbehorende GPIO's
Het volgende codegedeelte toont de kleurenkiezer in uw web pagina en doet een verzoek op basis van de door u gekozen kleur.
Wanneer u een kleur kiest, ontvangt u een verzoek met de volgende indeling.
We moeten deze string dus splitsen om de parameters R, G en B te krijgen. De parameters worden opgeslagen in de variabelen redString, greenString en blueString en kunnen waarden hebben tussen 0 en 255.Om de strip met de ESP32 te besturen, gebruikt u de ledcWrite()-functie om PWM-signalen te genereren met de waarden die zijn gedecodeerd uit de HTTP verzoek.
Opmerking: leer meer over PWM met ESP32: Project 3 ESP32 PWM (analoge uitgang)
Om de strip met de ESP8266 te bedienen, hoeven we alleen maar te gebruiken
de functie analogWrite() om PWM-signalen te genereren met de waarden die zijn gedecodeerd uit de HTPP-aanvraag.
analogWrite(rodePin, rodeString.toInt());
analogWrite(groenePin, groeneString.toInt());
analoogSchrijven(bluePin, blueString.toInt())
Omdat we de waarden in een tekenreeksvariabele krijgen, moeten we ze met behulp van de toInt()-methode omzetten naar gehele getallen.
Demonstratie
Nadat u uw netwerkgegevens hebt ingevoerd, selecteert u het juiste bord en de juiste COM-poort en uploadt u de code naar uw ESP32. Stappen voor het uploaden van de code.
Na het uploaden opent u de Serial Monitor op een baudrate van 115200 en drukt u op de ESP Enable/Reset-knop. U zou het IP-adres van het board moeten krijgen.Open uw browser en voer het ESP IP-adres in. Gebruik nu de kleurenkiezer om een kleur voor de RGB-led te kiezen.
Vervolgens moet u op de knop 'Kleur wijzigen' klikken om de kleur te activeren.Om de RGB LED uit te schakelen, selecteert u de kleur zwart.
De sterkste kleuren (bovenaan de kleurenkiezer) leveren de beste resultaten op.
Project 7 ESP32-relais Web Server
Een relais gebruiken met de ESP32 is een geweldige manier om huishoudelijke AC-apparaten op afstand te bedienen. Deze tutorial legt uit hoe u een relaismodule met de ESP32 bedient.
We gaan kijken hoe een relaismodule werkt, hoe je het relais aansluit op de ESP32 en hoe je een relaismodule bouwt. web server om een relais op afstand te bedienen.
Introductie van relais
Een relais is een elektrisch bediende schakelaar en net als elke andere schakelaar kan deze aan of uit worden gezet, waarbij de stroom wel of niet door kan gaan. Het kan worden aangestuurd met een laag volumetages, zoals de 3.3V die door de ESP32 GPIO's wordt geleverd en waarmee we hoge volumes kunnen regelentagzoals 12V, 24V of netspanningtage (230V in Europa en 120V in de VS).Aan de linkerkant bevinden zich twee sets van drie aansluitingen om hoogvolume-apparaten aan te sluitentages, en de pinnen aan de rechterkant (laag-volumetage) verbinding maken met de ESP32 GPIO's.
Hoofdvolumetage AansluitingenDe relaismodule die u op de vorige foto ziet, heeft twee aansluitingen met elk drie aansluitingen: common (COM), normally closed (NC) en normally open (NO).
- COM: sluit de stroom aan die u wilt regelen (netspanning)tagen).
- NC (Normally Closed): de normaal gesloten configuratie wordt gebruikt wanneer u wilt dat het relais standaard gesloten is. De NC- en COM-pinnen zijn verbonden, wat betekent dat de stroom stroomt tenzij u een signaal van de ESP32 naar de relaismodule stuurt om het circuit te openen en de stroom te stoppen.
- NO (Normally Open): bij de normaal open configuratie werkt het precies andersom: er is geen verbinding tussen de NO- en COM-pinnen, dus het circuit is verbroken tenzij u een signaal vanaf de ESP32 stuurt om het circuit te sluiten.
Controle pinnenDe lage-voltagDe kant heeft een set van vier pinnen en een set van drie pinnen. De eerste set bestaat uit VCC en GND om de module van stroom te voorzien, en input 1 (IN1) en input 2 (IN2) om respectievelijk de onderste en bovenste relais te bedienen.
Als uw relaismodule maar één kanaal heeft, hebt u maar één IN-pin. Als u vier kanalen hebt, hebt u vier IN-pins, enzovoort.
Het signaal dat u naar de IN-pinnen stuurt, bepaalt of het relais actief is of niet. Het relais wordt geactiveerd wanneer de invoer onder ongeveer 2V komt. Dit betekent dat u de volgende scenario's krijgt:
- Normaal gesloten configuratie (NC):
- HOOG signaal – er stroomt stroom
- LAAG signaal – er stroomt geen stroom
- Normaal open configuratie (NO):
- HOOG signaal – er stroomt geen stroom
- LAAG signaal – stroom in stroming
U gebruikt een normaal gesloten configuratie als de stroom er het grootste deel van de tijd moet zijn en u deze slechts af en toe wilt stoppen.
Gebruik een normaal open configuratie als u wilt dat de stroom af en toe vloeit (bijvoorbeeldample, zet al aanamp af en toe).
Selectie van de voedingDe tweede set pinnen bestaat uit GND-, VCC- en JD-VCC-pinnen.
De JD-VCC-pin voedt de elektromagneet van het relais. Let op dat de module een jumperkap heeft die de VCC- en JD-VCC-pinnen verbindt; degene die hier wordt getoond is geel, maar die van u kan een andere kleur hebben.
Met de jumperdop erop zijn de VCC- en JD-VCC-pinnen verbonden. Dat betekent dat de relais-elektromagneet rechtstreeks wordt gevoed door de ESP32-voedingspin, dus de relaismodule en de ESP32-circuits zijn niet fysiek van elkaar geïsoleerd.
Zonder de jumperkap moet u een onafhankelijke stroombron leveren om de elektromagneet van het relais van stroom te voorzien via de JD-VCC-pin. Die configuratie isoleert de relais fysiek van de ESP32 met de ingebouwde optocoupler van de module, die schade aan de ESP32 voorkomt in geval van elektrische pieken.
SchematischWaarschuwing: Gebruik van hoge voltagDe voedingen kunnen ernstig letsel veroorzaken.
Daarom worden er 5mm LED's gebruikt in plaats van hoge voedingsspanningen.tage-lampen in het experiment. Als u niet bekend bent met netstroomtage vraag iemand die je kan helpen. Zorg ervoor dat alles losgekoppeld is van het lichtnet tijdens het programmeren van de ESP of het bedraden van je circuit.tage.De bibliotheek voor ESP32 installeren
Om dit te bouwen web server, gebruiken we de ESPAsyncWebServerbibliotheek en AsyncTCP-bibliotheek.
ESPAsync installerenWebServerbibliotheek
Volg de volgende stappen om de ESPAsyncWebServer bibliotheek:
- Klik hier om de ESPAsync te downloadenWebServerbibliotheek. Je zou moeten hebben
een .zip-map in uw Downloads-map - Pak de .zip-map uit en je zou ESPAsync moeten krijgenWebServer-master-map
- Hernoem uw map van ESPAsyncWebServer-master naar ESPAsyncWebServer
- Verplaats de ESPAsyncWebServermap naar uw Arduino IDE-installatiebibliothekenmap
Als alternatief kunt u in uw Arduino IDE naar Schets > Opnemen gaan
Bibliotheek > .ZIP-bibliotheek toevoegen… en selecteer de bibliotheek die u zojuist hebt gedownload.
De AsyncTCP-bibliotheek voor ESP32 installeren
De ESPAsyncWebServer bibliotheek vereist de AsyncTCP bibliotheek om te werken. Volgen
De volgende stappen om die bibliotheek te installeren:
- Klik hier om de AsyncTCP-bibliotheek te downloaden. U zou een .zip-map in uw Downloads-map moeten hebben
- Pak de .zip-map uit en je zou de AsyncTCP-master-map moeten krijgen
1. Hernoem uw map van AsyncTCP-master naar AsyncTCP
3. Verplaats de map AsyncTCP naar de map met uw Arduino IDE-installatiebibliotheken
4. Open ten slotte uw Arduino IDE opnieuw
Als alternatief kunt u in uw Arduino IDE naar Schets > Opnemen gaan
Bibliotheek > .ZIP-bibliotheek toevoegen… en selecteer de bibliotheek die u zojuist hebt gedownload.
Code
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
ESP32 Add-on installeren in Arduino IDE
Nadat u de vereiste bibliotheken hebt geïnstalleerd, opent u de code Project_7_ESP32_Relay_Web_Server.ino in Arduino IDE.
Vergeet niet uw netwerkgegevens in te voeren voordat u de code uploadt, zodat de ESP verbinding kan maken met uw lokale netwerk.Demonstratie
Nadat u de nodige wijzigingen hebt aangebracht, uploadt u de code naar uw ESP32. Stappen voor het uploaden van de code.
Open de Serial Monitor met een baudrate van 115200 en druk op de ESP32 EN-knop om het IP-adres te verkrijgen. Open vervolgens een browser in uw lokale netwerk en typ het ESP32 IP-adres om toegang te krijgen tot de web server.
Open de Serial Monitor met een baudrate van 115200 en druk op de ESP32 EN-knop om het IP-adres te verkrijgen. Open vervolgens een browser in uw lokale netwerk en typ het ESP32 IP-adres om toegang te krijgen tot de web server.Opmerking: Uw browser en ESP32 moeten op hetzelfde LAN zijn aangesloten.
Het volgende zou dan moeten verschijnen, met twee knoppen voor het aantal relais dat u in uw code hebt gedefinieerd.Nu kunt u de knoppen gebruiken om uw relais te bedienen met uw smartphone.
Project_8_Uitvoerstatus_Synchronisatie_ Web_Server
Dit project laat zien hoe je de ESP32 of ESP8266 uitgangen kunt bedienen met een web server en een fysieke knop tegelijkertijd. De uitvoerstatus wordt bijgewerkt op de web pagina, ongeacht of deze via een fysieke knop wordt gewijzigd of web server.
Project voorbijview
Laten we eens snel kijken hoe het project werkt.De ESP32 of ESP8266 heeft een web server waarmee u de status van een uitvoer kunt beheren;
- De huidige uitvoerstatus wordt weergegeven op de web server;
- De ESP is ook verbonden met een fysieke drukknop die dezelfde uitgang bestuurt;
- Als u de uitvoerstatus wijzigt met behulp van de fysieke drukknop, wordt de huidige status ook bijgewerkt op de web server.
Samengevat, met dit project kunt u dezelfde uitvoer besturen met behulp van een web server en een drukknop tegelijkertijd. Wanneer de uitvoerstatus verandert, web server is bijgewerkt.
Benodigde onderdelen
Hier is een lijst met de onderdelen die je nodig hebt om het circuit te bouwen:
- ESP32 DEVKIT V1-bord
- 5 mm-led
- 220Ohm weerstand
- Druk op de knop
- 10k Ohm-weerstand
- Broodplank
- Jumper-draden
SchematischDe bibliotheek voor ESP32 installeren
Om dit te bouwen web server, gebruiken we de ESPAsyncWebServerbibliotheek en AsyncTCP-bibliotheek. (Als u deze stap al hebt uitgevoerd, kunt u naar de volgende stap gaan.)
ESPAsync installerenWebServerbibliotheek
Volg de volgende stappen om ESPAsync te installerenWebServerbibliotheek:
- Klik hier om de ESPAsync te downloadenWebServerbibliotheek. Je zou moeten hebben
een .zip-map in uw Downloads-map - Pak de .zip-map uit en je zou ESPAsync moeten krijgenWebServer-master-map
- Hernoem uw map van ESPAsyncWebServer-master naar ESPAsyncWebServer
- Verplaats de ESPAsyncWebServermap naar uw Arduino IDE-installatiebibliothekenmap
Als alternatief kunt u in uw Arduino IDE naar Schets > Opnemen gaan
Bibliotheek > .ZIP-bibliotheek toevoegen… en selecteer de bibliotheek die u zojuist hebt gedownload.
De AsyncTCP-bibliotheek voor ESP32 installeren
De ESPAsyncWebServerbibliotheek vereist de AsyncTCP-bibliotheek om te werken. Volg de volgende stappen om die bibliotheek te installeren:
- Klik hier om de AsyncTCP-bibliotheek te downloaden. U zou een .zip-map in uw Downloads-map moeten hebben
- Pak de .zip-map uit en je zou de AsyncTCP-master-map moeten krijgen
- Hernoem uw map van AsyncTCP-master naar AsyncTCP
- Verplaats de map AsyncTCP naar de map met uw Arduino IDE-installatiebibliotheken
- Open ten slotte uw Arduino IDE opnieuw
Als alternatief kunt u in uw Arduino IDE naar Schets > Opnemen gaan
Bibliotheek > .ZIP-bibliotheek toevoegen… en selecteer de bibliotheek die u zojuist hebt gedownload.
Code
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
ESP32 Add-on installeren in Arduino IDE
Nadat u de vereiste bibliotheken hebt geïnstalleerd, opent u de code
Project_8_Uitvoerstatus_Synchronisatie_Web_Server.ino in Arduino IDE.
Vergeet niet uw netwerkgegevens in te voeren voordat u de code uploadt, zodat de ESP verbinding kan maken met uw lokale netwerk.
Hoe de code werkt
Knopstatus en uitvoerstatus
De ledState-variabele bevat de LED-uitvoerstatus. Standaard, wanneer de web server start, is het LAAG.
De buttonState en lastButtonState worden gebruikt om te detecteren of de drukknop is ingedrukt of niet.Knop (web server)
We hebben de HTML voor het maken van de knop niet opgenomen in de variabele index_html.
Dat komt omdat we de mogelijkheid willen hebben om de status te veranderen, afhankelijk van de actuele LED-status. Deze status kan ook met de drukknop worden gewijzigd.
We hebben dus een tijdelijke aanduiding gemaakt voor de knop %BUTTONPLACEHOLDER%. Deze wordt vervangen door HTML-tekst om de knop later in de code te maken (dit gebeurt in de processor()-functie).processor()
De processor()-functie vervangt alle tijdelijke aanduidingen in de HTML-tekst met werkelijke waarden. Eerst controleert het of de HTML-teksten
plaatsaanduidingen %BUTTONPLACEHOLDER%.Roep vervolgens de outputState()-functie aan die de huidige outputstatus retourneert. We slaan deze op in de outputStateValue-variabele.
Gebruik daarna die waarde om de HTML-tekst te maken om de knop met de juiste status weer te geven:
HTTP GET-verzoek om uitvoerstatus te wijzigen (JavaScript)
Wanneer u op de knop drukt, wordt de functie toggleCheckbox() aangeroepen. Deze functie zal een verzoek doen op verschillende URLs om de LED aan of uit te zetten.Om de LED in te schakelen, wordt een verzoek gedaan op /update?state=1 URL:
Anders doet het een verzoek op /update?state=0 URL.
HTTP GET-aanvraag om status bij te werken (JavaScript)
Om de uitvoerstatus up-to-date te houden op de web server, roepen we de volgende functie aan die een nieuw verzoek doet op de /state URL elke seconde.Verzoeken behandelen
Vervolgens moeten we bepalen wat er gebeurt als de ESP32 of ESP8266 verzoeken ontvangt op die apparaten. URLs.
Wanneer een verzoek wordt ontvangen op de root /URL, sturen wij zowel de HTML-pagina als de processor.De volgende regels controleren of u een verzoek hebt ontvangen op /update?state=1 of /update?state=0 URL en verandert de ledState dienovereenkomstig.
Wanneer een verzoek wordt ontvangen op de /state URL, sturen we de huidige uitvoerstatus:
lus()
In de loop() debouncen we de drukknop en zetten we de LED aan of uit, afhankelijk van de waarde van de ledState variabel.Demonstratie
Upload de code naar uw ESP32-bord. Upload codereferentiestappen.
Open vervolgens de seriële monitor met een baudrate van 115200. Druk op de ingebouwde EN/RST-knop om het IP-adres op te vragen.Open een browser op uw lokale netwerk en typ het ESP IP-adres. U zou toegang moeten hebben tot de web server zoals hieronder weergegeven.
Opmerking: Uw browser en ESP32 moeten op hetzelfde LAN zijn aangesloten.U kunt de knop op de web server om de LED aan te zetten.
U kunt dezelfde LED ook bedienen met de fysieke drukknop. De status wordt altijd automatisch bijgewerkt op de web server.
Project 9 ESP32 DHT11 Web Server
In dit project leert u hoe u een asynchrone ESP32 bouwt web server met de DHT11 die temperatuur en vochtigheid weergeeft met behulp van Arduino IDE.
Vereisten
De web server die we zullen bouwen, werkt de metingen automatisch bij zonder dat het nodig is om de web pagina.
Met dit project leert u:
- Hoe u temperatuur en vochtigheid van DHT-sensoren kunt aflezen;
- Bouw een asynchrone web server met behulp van de ESPAsyncWebServerbibliotheek;
- Werk de sensorwaarden automatisch bij zonder dat u de gegevens hoeft te vernieuwen. web pagina.
Asynchroon Web Server
Om de web server zullen we gebruiken ESPAsyncWebServerbibliotheek die een eenvoudige manier biedt om een asynchrone web server. Een asynchrone server bouwen web server heeft verschillende voordelentagzoals vermeld op de GitHub-pagina van de bibliotheek, zoals:
- “Meer dan één verbinding tegelijkertijd verwerken”;
- “Wanneer u het antwoord verzendt, bent u onmiddellijk klaar om andere verbindingen af te handelen, terwijl de server op de achtergrond zorgt voor het verzenden van het antwoord”;
- “Eenvoudige sjabloonverwerkingsengine voor het verwerken van sjablonen”;
Benodigde onderdelen
Om deze tutorial te voltooien, hebt u de volgende onderdelen nodig:
- ESP32-ontwikkelbord
- DHT11-module
- Broodplank
- Jumper-draden
SchematischBibliotheken installeren
Voor dit project moet u een aantal bibliotheken installeren:
- De DHT en de Adafruit-geünificeerde sensor Stuurprogrammabibliotheken om van de DHT-sensor te lezen.
- ESPAsyncWebServer En Asynchrone TCP bibliotheken om de asynchrone te bouwen web server.
Volg de onderstaande instructies om deze bibliotheken te installeren:
De DHT-sensorbibliotheek installeren
Om de DHT-sensor te kunnen lezen met behulp van Arduino IDE, moet u de volgende software installeren: DHT-sensorbibliotheekVolg de volgende stappen om de bibliotheek te installeren.
- Klik hier om de DHT Sensor-bibliotheek te downloaden. U zou een .zip-map in uw Downloads-map moeten hebben
- Pak de .zip-map uit en je zou de map DHT-sensor-library-master moeten krijgen
- Hernoem uw map van DHT-sensor-library-master naar DHT_sensor
- Verplaats de map DHT_sensor naar de map met uw Arduino IDE-installatiebibliotheken
- Open ten slotte uw Arduino IDE opnieuw
Het Adafruit Unified Sensor-stuurprogramma installeren
U moet ook de Adafruit Unified Sensor Driver-bibliotheek om met de DHT-sensor te werken. Volg de volgende stappen om de bibliotheek te installeren.
- Klik hier om de Adafruit Unified Sensor-bibliotheek te downloaden. U zou een .zip-map in uw Downloads-map moeten hebben
- Pak de .zip-map uit en je zou de map Adafruit_sensor-master moeten krijgen
- Hernoem uw map van Adafruit_sensor-master naar Adafruit_sensor
- Verplaats de map Adafruit_sensor naar de map met uw Arduino IDE-installatiebibliotheken
- Open ten slotte uw Arduino IDE opnieuw
ESPAsync installerenWebServerbibliotheek
Volg de volgende stappen om de ESPAsyncWebServer bibliotheek:
- Klik hier om de ESPAsync te downloadenWebServerbibliotheek. Je zou moeten hebben
een .zip-map in uw Downloads-map - Pak de .zip-map uit en je zou
krijg ESPAsyncWebServer-master-map - Hernoem uw map van ESPAsyncWebServer-master naar ESPAsyncWebServer
- Verplaats de ESPAsyncWebServermap naar uw Arduino IDE-installatiebibliothekenmap
De Async TCP-bibliotheek voor ESP32 installeren
De ESPAsyncWebServer bibliotheek vereist de AsyncTCP bibliotheek om te werken. Volg de volgende stappen om die bibliotheek te installeren:
- Klik hier om de AsyncTCP-bibliotheek te downloaden. U zou een .zip-map in uw Downloads-map moeten hebben
- Pak de .zip-map uit en je zou de AsyncTCP-master-map moeten krijgen
- Hernoem uw map van AsyncTCP-master naar AsyncTCP
- Verplaats de map AsyncTCP naar de map met uw Arduino IDE-installatiebibliotheken
- Open ten slotte uw Arduino IDE opnieuw
Code
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat je de ESP32-add-on hebt geïnstalleerd voordat je verdergaat: (Als je deze stap al hebt uitgevoerd, kun je naar de volgende stap gaan.)
ESP32 Add-on installeren in Arduino IDE
Nadat u de vereiste bibliotheken hebt geïnstalleerd, opent u de code
Project_9_ESP32_DHT11_Web_Server.ino in Arduino IDE.
Vergeet niet uw netwerkgegevens in te voeren voordat u de code uploadt, zodat de ESP verbinding kan maken met uw lokale netwerk.Hoe de code werkt
In de volgende paragrafen leggen we uit hoe de code werkt. Blijf lezen als u meer wilt weten of ga naar het Demonstratiegedeelte om het uiteindelijke resultaat te zien.
Bibliotheken importeren
Importeer eerst de vereiste bibliotheken. De WiFi, ESPAsyncWebServer en ESPAsyncTCP zijn nodig om de web server. De Adafruit_Sensor en de DHT-bibliotheken zijn nodig om te lezen van de DHT11- of DHT22-sensoren.Definitie van variabelen
Definieer de GPIO waarmee de DHT-datapin is verbonden. In dit geval is deze verbonden met GPIO 4.Selecteer vervolgens het type DHT-sensor dat u gebruikt. In onze example, we gebruiken de DHT22. Als je een ander type gebruikt, hoef je alleen maar je sensor te uncommentariëren en alle anderen te commentariëren.
Instantieer een DHT-object met het type en de pin die we eerder hebben gedefinieerd.Maak een asyncWebServerobject op poort 80.
Lees temperatuur- en vochtigheidsfuncties
We hebben twee functies gemaakt: een om de temperatuur te meten (readDHTTemperature()) en een om de vochtigheid te meten (readDHTHumidity()).Het verkrijgen van sensorwaarden is net zo eenvoudig als het gebruiken van de methoden readTemperature() en readHumidity() op het dht-object.
We hebben ook een voorwaarde die twee streepjes (–) retourneert voor het geval de sensor de metingen niet kan verkrijgen.
De metingen worden geretourneerd als stringtype. Om een float naar een string te converteren, gebruikt u de String()-functie
Standaard lezen we de temperatuur in graden Celsius. Om de temperatuur in graden Fahrenheit te krijgen, commenteer je de temperatuur in Celsius en uncommenteer je de temperatuur in Fahrenheit, zodat je het volgende hebt:
Upload de code
Upload nu de code naar je ESP32. Zorg ervoor dat je het juiste bord en de juiste COM-poort hebt geselecteerd. Upload code referentiestappen.
Na het uploaden opent u de Serial Monitor met een baudrate van 115200. Druk op de ESP32 resetknop. Het ESP32 IP-adres zou in de seriële monitor.Demonstratie
Open een browser en typ het ESP32 IP-adres. Uw web De server moet de laatste sensormetingen weergeven.
Opmerking: Uw browser en ESP32 moeten op hetzelfde LAN zijn aangesloten.
Houd er rekening mee dat de temperatuur- en vochtigheidsmetingen automatisch worden bijgewerkt zonder dat u de gegevens hoeft te vernieuwen. web pagina.
Project_10_ESP32_OLED_scherm
Dit project laat zien hoe je het 0.96 inch SSD1306 OLED-scherm met ESP32 kunt gebruiken met behulp van Arduino IDE.
Introductie van 0.96 inch OLED-scherm
De OLED-scherm In deze tutorial gebruiken we het SSD1306-model: een monochroom 0.96 inch-scherm met 128×64 pixels, zoals weergegeven in de volgende afbeelding.Het OLED-scherm heeft geen backlight nodig, wat resulteert in een heel mooi contrast in donkere omgevingen. Bovendien verbruiken de pixels alleen energie als ze aan staan, dus het OLED-scherm verbruikt minder stroom in vergelijking met andere schermen.
Omdat het OLED-scherm het I2C-communicatieprotocol gebruikt, is de bedrading heel eenvoudig. U kunt de volgende tabel als referentie gebruiken.
OLED-pin | ESP32 |
Wijn | 3.3V |
GND | GND |
SCL | GPI 22 |
Zevende-dags Adventisten | GPI 21 |
SchematischInstallatie van SSD1306 OLED-bibliotheek – ESP32
Er zijn verschillende bibliotheken beschikbaar om het OLED-scherm met de ESP32 te bedienen.
In deze tutorial gebruiken we twee Adafruit-bibliotheken: Adafruit_SSD1306-bibliotheek En Adafruit_GFX-bibliotheek.
Volg de volgende stappen om deze bibliotheken te installeren.
- Open je Arduino IDE en ga naar Sketch > Include Library > Manage Libraries. De Library Manager zou moeten openen.
- Typ “SSD1306” in het zoekvak en installeer de SSD1306-bibliotheek van Adafruit.
- Nadat u de SSD1306-bibliotheek van Adafruit hebt geïnstalleerd, typt u 'GFX' in het zoekvak en installeert u de bibliotheek.
- Start uw Arduino IDE opnieuw op nadat u de bibliotheken hebt geïnstalleerd.
Code
Nadat u de vereiste bibliotheken hebt geïnstalleerd, opent u Project_10_ESP32_OLED_Display.ino in Arduino IDE. code
We programmeren de ESP32 met Arduino IDE, dus zorg ervoor dat u de ESP32-add-on hebt geïnstalleerd voordat u verdergaat: (Als u deze stap al hebt uitgevoerd, kunt u doorgaan naar de volgende stap.)
ESP32 Add-on installeren in Arduino IDEHoe de code werkt
Bibliotheken importeren
Eerst moet u de benodigde bibliotheken importeren. De Wire-bibliotheek om I2C te gebruiken en de Adafruit-bibliotheken om naar het display te schrijven: Adafruit_GFX en Adafruit_SSD1306.Initialiseer het OLED-scherm
Vervolgens definieert u uw OLED-breedte en -hoogte. In dit voorbeeldample, we gebruiken een 128×64 OLED-scherm. Als u andere formaten gebruikt, kunt u dat wijzigen in de variabelen SCREEN_WIDTH en SCREEN_HEIGHT.Initialiseer vervolgens een weergaveobject met de eerder gedefinieerde breedte en hoogte via het I2C-communicatieprotocol (&Wire).
De (-1) parameter betekent dat uw OLED-scherm geen RESET-pin heeft. Als uw OLED-scherm wel een RESET-pin heeft, moet deze worden aangesloten op een GPIO. In dat geval moet u het GPIO-nummer als parameter doorgeven.
Initialiseer in setup() de seriële monitor met een baudrate van 115200 voor foutopsporingsdoeleinden.Initialiseer het OLED-scherm met de begin()-methode als volgt:
Dit fragment print ook een bericht op de seriële monitor, voor het geval we geen verbinding kunnen maken met het beeldscherm.
Als u een ander OLED-scherm gebruikt, moet u mogelijk het OLED-adres wijzigen. In ons geval is het adres 0x3C.
Voeg na het initialiseren van het scherm een vertraging van twee seconden toe, zodat de OLED voldoende tijd heeft om te initialiseren voordat er tekst wordt geschreven:
Duidelijke weergave, lettergrootte, kleur en schrijf tekst instellen
Nadat u het display hebt geïnitialiseerd, wist u de displaybuffer met de clearDisplay()-methode:
Voordat u tekst gaat schrijven, moet u de tekstgrootte, de kleur en de plek instellen waar de tekst in het OLED-scherm wordt weergegeven.
Stel de lettergrootte in met de setTextSize()-methode:Stel de letterkleur in met de setTextColor()-methode:
Met WIT kiest u voor een wit lettertype en een zwarte achtergrond.
Definieer de positie waar de tekst begint met de setCursor(x,y) methode. In dit geval stellen we de tekst in om te beginnen bij de (0,0) coördinaten – in de linkerbovenhoek.Ten slotte kunt u de tekst naar het display sturen met behulp van de println()-methode, als volgt
Vervolgens moet u de display()-methode aanroepen om de tekst daadwerkelijk op het scherm weer te geven.
De Adafruit OLED-bibliotheek biedt handige methoden om eenvoudig door tekst te scrollen.
- startscrollright(0x00, 0x0F): scroll tekst van links naar rechts
- startscrollleft(0x00, 0x0F): scroll tekst van rechts naar links
- startscrolldiagright(0x00, 0x07): scroll tekst van de linkerbenedenhoek naar de rechterbovenhoek startscrolldiagright(0x00, 0x07): scroll tekst van de rechterbenedenhoek naar de linkerbovenhoek
Upload de code
Upload nu de code naar uw ESP32. Stappen voor het uploaden van de code.
Nadat u de code hebt geüpload, geeft het OLED-scherm een scrollende tekst weer.
Documenten / Bronnen
![]() |
LAFVIN ESP32 Basis Starterkit [pdf] Gebruiksaanwijzing ESP32 Basis Starterkit, ESP32, Basis Starterkit, Starterkit |