ESP32 Basic starter
Kit
Pakkeliste
ESP32 Introduktion
Ny til ESP32? Start her! ESP32 er en serie af billige og lavt strømforbrugende System on a Chip (SoC) mikrocontrollere udviklet af Espressif, der inkluderer trådløse Wi-Fi og Bluetooth-funktioner og dual-core processor. Hvis du er bekendt med ESP8266, er ESP32 dens efterfølger, fyldt med masser af nye funktioner.ESP32 specifikationer
Hvis du ønsker at blive lidt mere teknisk og specifik, kan du tage et kig på følgende detaljerede specifikationer for ESP32 (kilde: http://esp32.net/)—for flere detaljer, tjek databladet):
- Trådløs forbindelse WiFi: 150.0 Mbps datahastighed med HT40
- Bluetooth: BLE (Bluetooth Low Energy) og Bluetooth Classic
- Processor: Tensilica Xtensa Dual-Core 32-bit LX6 mikroprocessor, kører ved 160 eller 240 MHz
- Hukommelse:
- ROM: 448 KB (til opstart og kernefunktioner)
- SRAM: 520 KB (for data og instruktioner)
- RTC fas SRAM: 8 KB (til datalagring og hoved-CPU under RTC-start fra dyb dvaletilstand)
- RTC langsom SRAM: 8KB (til co-processor-adgang under dyb dvaletilstand) eFuse: 1 Kbit (hvoraf 256 bit bruges til systemet (MAC-adresse og chipkonfiguration) og de resterende 768 bit er reserveret til kundeapplikationer, inkl. Flash-kryptering og chip-id)
Indbygget flash: flash tilsluttet internt via IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 og SD_DATA_1 på ESP32-D2WD og ESP32-PICO-D4.
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD og ESP32-S0WD chips)
- 2 MiB (ESP32-D2WD chip)
- 4 MiB (ESP32-PICO-D4 SiP-modul)
Low Power: sikrer, at du stadig kan bruge ADC-konverteringer, f.eksample, under dyb søvn.
Periferisk input/output:
- perifer grænseflade med DMA, der inkluderer kapacitiv berøring
- ADC'er (analog-til-digital konverter)
- DAC'er (Digital-til-Analog Converter)
- I²C (Inter-Integrated Circuit)
- UART (Universal Asynchronous Receiver/Transmitter)
- SPI (Serial Peripheral Interface)
- I²S (Integrated Interchip Sound)
- RMII (Reduced Media-Independent Interface)
- PWM (Pulse-Width Modulation)
Sikkerhed: hardwareacceleratorer til AES og SSL/TLS
ESP32 udviklingstavler
ESP32 refererer til den blottede ESP32-chip. Udtrykket "ESP32" bruges dog også til at henvise til ESP32-udviklingskort. Det er ikke nemt eller praktisk at bruge ESP32 bare chips, især når man lærer, tester og laver prototyper. Det meste af tiden vil du bruge et ESP32-udviklingskort.
Vi vil bruge ESP32 DEVKIT V1-kortet som reference. Billedet nedenfor viser ESP32 DEVKIT V1-kortet, version med 30 GPIO-ben.Specifikationer – ESP32 DEVKIT V1
Følgende tabel viser en oversigt over ESP32 DEVKIT V1 DOIT-kortets funktioner og specifikationer:
Antal kerner | 2 (dobbeltkerne) |
Wi-Fi | 2.4 GHz op til 150 Mbit/s |
Bluetooth | BLE (Bluetooth Low Energy) og ældre Bluetooth |
Arkitektur | 32 bits |
Ur frekvens | Op til 240 MHz |
VÆDDER | 512 KB |
Pins | 30 (afhængig af model) |
Periferiudstyr | Kapacitiv berøring, ADC (analog til digital konverter), DAC (digital til analog konverter), 12C (Inter-Integrated Circuit), UART (universal asynkron modtager/sender), CAN 2.0 (Controller Area Netwokr), SPI (Serial Peripheral Interface) , 12S (Integreret Inter-IC Lyd), RMII (Reduced Media-Independent Interface), PWM (pulsbreddemodulation) og mere. |
Indbyggede knapper | RESET og BOOT knapper |
Indbyggede LED'er | indbygget blå LED tilsluttet GPIO2; indbygget rød LED, der viser, at kortet får strøm |
USB til UART bro |
CP2102 |
Den leveres med et microUSB-interface, som du kan bruge til at forbinde kortet til din computer for at uploade kode eller sætte strøm på.
Den bruger CP2102-chippen (USB til UART) til at kommunikere med din computer via en COM-port ved hjælp af et serielt interface. En anden populær chip er CH340. Tjek, hvad der er USB til UART-chipkonverteren på dit kort, fordi du skal installere de nødvendige drivere, så din computer kan kommunikere med kortet (mere information om dette senere i denne vejledning).
Dette board kommer også med en RESET-knap (kan være mærket EN) for at genstarte boardet og en BOOT-knap for at sætte boardet i blinkende tilstand (tilgængelig for at modtage kode). Bemærk, at nogle boards muligvis ikke har en BOOT-knap.
Den kommer også med en indbygget blå LED, der er internt forbundet til GPIO 2. Denne LED er nyttig til fejlfinding for at give en form for visuel fysisk udgang. Der er også en rød LED, der lyser, når du giver strøm til kortet.ESP32 Pinout
ESP32-ydre enheder inkluderer:
- 18 Analog-til-Digital Converter (ADC) kanaler
- 3 SPI interfaces
- 3 UART-grænseflader
- 2 I2C-grænseflader
- 16 PWM udgangskanaler
- 2 digital-til-analog-konvertere (DAC)
- 2 I2S interfaces
- 10 kapacitive sensing GPIO'er
Funktionerne ADC (analog til digital konverter) og DAC (digital til analog konverter) er tildelt specifikke statiske ben. Du kan dog bestemme, hvilke ben der er UART, I2C, SPI, PWM osv. - du skal bare tildele dem i koden. Dette er muligt på grund af ESP32-chippens multipleksingsfunktion.
Selvom du kan definere pins egenskaber på softwaren, er der pins tildelt som standard som vist i følgende figurDerudover er der stifter med specifikke funktioner, der gør dem egnede eller ej til et bestemt projekt. Følgende tabel viser, hvilke ben der er bedst at bruge som input, output, og hvilke du skal være forsigtig.
De stifter, der er fremhævet med grønt, er OK at bruge. Dem, der er fremhævet med gult, er OK at bruge, men du skal være opmærksom, fordi de kan have en uventet adfærd, hovedsageligt ved opstart. De ben, der er fremhævet med rødt, anbefales ikke at bruge som input eller output.
GP IO | Input | Produktion | Noter |
0 | trukket op | OK | udsender PWM-signal ved opstart, skal være LAV for at gå i blinkende tilstand |
1 | TX pin | OK | debug output ved opstart |
2 | OK | OK | tilsluttet til indbygget LED, skal efterlades svævende eller LAV for at gå i blinkende tilstand |
3 | OK | RX pin | HØJ ved støvlen |
4 | OK | OK | |
5 | OK | OK | udsender PWM-signal ved opstart, omsnøringsstift |
12 | OK | OK | støvlen fejler, hvis den trækkes højt, omsnøringsstift |
13 | OK | OK | |
14 | OK | OK | udsender PWM-signal ved opstart |
15 | OK | OK | udsender PWM-signal ved opstart, omsnøringsstift |
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 | kun input | |
35 | OK | kun input | |
36 | OK | kun input | |
39 | OK | kun input |
Fortsæt med at læse for en mere detaljeret og dybdegående analyse af ESP32 GPIO'erne og dets funktioner.
Indtast kun stifter
GPIO'er 34 til 39 er GPI'er - kun input-ben. Disse stifter har ikke interne pull-up eller pull-down modstande. De kan ikke bruges som udgange, så brug kun disse ben som input:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI flash integreret på ESP-WROOM-32
GPIO 6 til GPIO 11 er eksponeret i nogle ESP32-udviklingskort. Disse ben er dog forbundet til den integrerede SPI-flash på ESP-WROOM-32 chippen og anbefales ikke til anden brug. Så brug ikke disse stifter i dine projekter:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapacitive berørings-GPIO'er
ESP32 har 10 interne kapacitive berøringssensorer. Disse kan mærke variationer i alt, der holder en elektrisk ladning, som den menneskelige hud. Så de kan registrere variationer induceret, når de rører ved GPIO'erne med en finger. Disse stifter kan nemt integreres i kapacitive puder og erstatte mekaniske knapper. De kapacitive berøringsstifter kan også bruges til at vække ESP32 fra dyb søvn. Disse interne berøringssensorer er forbundet til disse GPIO'er:
- 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)
Analog til digital konverter (ADC)
ESP32 har 18 x 12 bit ADC-indgangskanaler (mens ESP8266 kun har 1x 10 bit ADC). Dette er de GPIO'er, der kan bruges som ADC og respektive kanaler:
- 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)
Note: ADC2-ben kan ikke bruges, når der bruges Wi-Fi. Så hvis du bruger Wi-Fi, og du har problemer med at få værdien fra en ADC2 GPIO, kan du overveje at bruge en ADC1 GPIO i stedet. Det burde løse dit problem.
ADC-indgangskanalerne har en 12-bit opløsning. Det betyder, at du kan få analoge aflæsninger fra 0 til 4095, hvor 0 svarer til 0V og 4095 til 3.3V. Du kan også indstille opløsningen af dine kanaler på koden og ADC-området.
ESP32 ADC-benene har ikke en lineær adfærd. Du vil sandsynligvis ikke være i stand til at skelne mellem 0 og 0.1V eller mellem 3.2 og 3.3V. Det skal du huske på, når du bruger ADC-stifterne. Du vil få en adfærd svarende til den, der er vist i følgende figur.Digital til Analog Converter (DAC)
Der er 2 x 8 bit DAC-kanaler på ESP32 til at konvertere digitale signaler til analog voltage signaludgange. Disse er DAC-kanalerne:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO'er
Der er RTC GPIO-understøttelse på ESP32. GPIO'erne, der er dirigeret til RTC-lavstrømsundersystemet, kan bruges, når ESP32 er i dyb søvn. Disse RTC GPIO'er kan bruges til at vække ESP32 fra dyb søvn, når Ultra Low
Power (ULP) co-processor kører. Følgende GPIO'er kan bruges som en ekstern vækningskilde.
- 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-controlleren har 16 uafhængige kanaler, der kan konfigureres til at generere PWM-signaler med forskellige egenskaber. Alle ben, der kan fungere som udgange, kan bruges som PWM-ben (GPIO'er 34 til 39 kan ikke generere PWM).
For at indstille et PWM-signal skal du definere disse parametre i koden:
- Signalets frekvens;
- Driftscyklus;
- PWM-kanal;
- GPIO, hvor du vil udsende signalet.
I2C
ESP32 har to I2C-kanaler, og enhver pin kan indstilles som SDA eller SCL. Når du bruger ESP32 med Arduino IDE, er standard I2C-benene:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Hvis du vil bruge andre stifter, når du bruger ledningsbiblioteket, skal du blot ringe:
Wire.begin(SDA, SCL);
SPI
Som standard er pinmappingen for SPI:
SPI | Mosi | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
afbryder
Alle GPIO'er kan konfigureres som interrupts.
Strapping Pins
ESP32-chippen har følgende omsnøringsstifter:
- GPIO 0 (skal være LAV for at gå i opstartstilstand)
- GPIO 2 (skal være flydende eller LAV under opstart)
- GPIO 4
- GPIO 5 (skal være HØJ under opstart)
- GPIO 12 (skal være LAV under opstart)
- GPIO 15 (skal være HØJ under opstart)
Disse bruges til at sætte ESP32 i bootloader eller blinkende tilstand. På de fleste udviklingskort med indbygget USB/Seriel behøver du ikke bekymre dig om disse bens tilstand. Boardet sætter stifterne i den rigtige tilstand til blinkende eller opstartstilstand. Mere information om ESP32 Boot Mode Selection kan findes her.
Men hvis du har ydre enheder forbundet til disse ben, kan du have problemer med at prøve at uploade ny kode, flashe ESP32 med ny firmware eller nulstille kortet. Hvis du har nogle perifere enheder forbundet til omsnøringsstifterne, og du får problemer med at uploade kode eller blinke ESP32, kan det skyldes, at disse perifere enheder forhindrer ESP32 i at gå ind i den rigtige tilstand. Læs dokumentationen til valg af starttilstand for at guide dig i den rigtige retning. Efter nulstilling, blinkning eller opstart fungerer disse ben som forventet.
Pins HØJ ved Boot
Nogle GPIO'er ændrer deres tilstand til HIGH eller udsender PWM-signaler ved opstart eller nulstilling.
Dette betyder, at hvis du har udgange forbundet til disse GPIO'er, kan du få uventede resultater, når ESP32 nulstiller eller starter.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 til GPIO 11 (tilsluttet ESP32 integreret SPI flash-hukommelse – anbefales ikke at bruge).
- GPIO 14
- GPIO 15
Aktiver (DA)
Enable (EN) er 3.3V-regulatorens aktiveringsstift. Den er trukket op, så tilslut til jord for at deaktivere 3.3V-regulatoren. Det betyder, at du kan bruge denne pin tilsluttet en trykknap til at genstarte din ESP32, f.eksample.
GPIO-strøm trukket
Den absolutte maksimale strøm trukket pr. GPIO er 40mA i henhold til afsnittet "Anbefalede driftsbetingelser" i ESP32 databladet.
ESP32 Indbygget Hall Effect Sensor
ESP32 har også en indbygget halleffektsensor, der registrerer ændringer i magnetfeltet i omgivelserne
ESP32 Arduino IDE
Der er en tilføjelse til Arduino IDE, der giver dig mulighed for at programmere ESP32 ved hjælp af Arduino IDE og dets programmeringssprog. I denne vejledning viser vi dig, hvordan du installerer ESP32-kortet i Arduino IDE, uanset om du bruger Windows, Mac OS X eller Linux.
Forudsætninger: Arduino IDE installeret
Før du starter denne installationsprocedure, skal du have Arduino IDE installeret på din computer. Der er to versioner af Arduino IDE, du kan installere: version 1 og version 2.
Du kan downloade og installere Arduino IDE ved at klikke på følgende link: arduino.cc/da/Main/Software
Hvilken Arduino IDE-version anbefaler vi? I øjeblikket er der nogle plugins til ESP32 (som SPIFFS Filesystem Uploader Plugin), som endnu ikke er understøttet på Arduino 2. Så hvis du agter at bruge SPIFFS plugin i fremtiden, anbefaler vi at installere den ældre version 1.8.X. Du skal bare rulle ned på Arduino-softwaresiden for at finde den.
Installation af ESP32 Add-on i Arduino IDE
Følg disse næste instruktioner for at installere ESP32-kortet i din Arduino IDE:
- Gå til din Arduino IDE File> Præferencer
- Indtast følgende i "Yderligere bestyrelseschef URLs" felt:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Klik derefter på knappen "OK":Note: hvis du allerede har ESP8266-kortene URL, kan du adskille URLs med et komma som følger:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Åbn Boards Manager. Gå til Tools > Board > Boards Manager...Søg efter ESP32 and press install button for the “ESP32 by Espressif Systems“:
Det er det. Det bør installeres efter et par sekunder.
Upload testkode
Tilslut ESP32-kortet til din computer. Med din Arduino IDE åben, følg disse trin:
- Vælg dit board i menuen Værktøjer > Board (i mit tilfælde er det ESP32 DEV-modulet)
- Vælg porten (hvis du ikke kan se COM-porten i din Arduino IDE, skal du installere CP210x USB til UART Bridge VCP-drivere):
- Åbn følgende example under File > Eksamples > WiFi
(ESP32) > WiFiScan - En ny skitse åbner i din Arduino IDE:
- Tryk på Upload-knappen i Arduino IDE. Vent et par sekunder, mens koden kompileres og uploades til dit board.
- Hvis alt gik som forventet, skulle du se en "Udfør upload." besked.
- Åbn Arduino IDE Serial Monitor med en baudrate på 115200:
- Tryk på ESP32 indbygget aktiveringsknap, og du skulle se de tilgængelige netværk i nærheden af din ESP32:
Fejlfinding
Hvis du prøver at uploade en ny skitse til din ESP32, og du får denne fejlmeddelelse "En fatal fejl opstod: Kunne ikke oprette forbindelse til ESP32: Timeout... Connecting...". Det betyder, at din ESP32 ikke er i blinkende/upload-tilstand.
Når du har valgt det rigtige tavlenavn og COM por, skal du følge disse trin:
Hold "BOOT"-knappen nede på dit ESP32-kort
- Tryk på knappen "Upload" i Arduino IDE for at uploade din skitse:
- Når du ser "Forbinder...." besked i din Arduino IDE, slip fingeren fra "BOOT"-knappen:
- Derefter skulle du se meddelelsen "Udført upload".
Det er det. Din ESP32 burde have den nye skitse kørende. Tryk på knappen "ENABLE" for at genstarte ESP32 og køre den nye uploadede skitse.
Du bliver også nødt til at gentage denne knapsekvens, hver gang du vil uploade en ny skitse.
Projekt 1 ESP32 Indgange Udgange
I denne startvejledning lærer du, hvordan du læser digitale input som en knapkontakt og styrer digitale udgange som en LED ved hjælp af ESP32 med Arduino IDE.
Forudsætninger
Vi programmerer ESP32 ved hjælp af Arduino IDE. Så sørg for, at du har ESP32 boards-tilføjelsen installeret, før du fortsætter:
- Installation af ESP32 Add-on i Arduino IDE
ESP32 Styr digitale udgange
Først skal du indstille den GPIO, du vil kontrollere, som en OUTPUT. Brug pinMode()-funktionen som følger:
pinMode(GPIO, OUTPUT);
For at styre et digitalt output skal du blot bruge digitalWrite()-funktionen, der accepterer som argumenter, det GPIO (int-nummer), du henviser til, og tilstanden, enten HIGH eller LOW.
digitalWrite(GPIO, STATE);
Alle GPIO'er kan bruges som udgange undtagen GPIO'er 6 til 11 (forbundet til den integrerede SPI-flash) og GPIO'er 34, 35, 36 og 39 (kun input-GPIO'er);
Lær mere om ESP32 GPIO'erne: ESP32 GPIO Reference Guide
ESP32 Læs digitale indgange
Indstil først den GPIO, du vil læse som INPUT, ved hjælp af pinMode()-funktionen som følger:
pinMode(GPIO, INPUT);
For at læse et digitalt input, som en knap, bruger du digitalRead()-funktionen, der accepterer det GPIO (int-nummer), du henviser til, som argument.
digitalRead(GPIO);
Alle ESP32 GPIO'er kan bruges som input, undtagen GPIO'er 6 til 11 (forbundet til den integrerede SPI-flash).
Lær mere om ESP32 GPIO'erne: ESP32 GPIO Reference Guide
Projekt Example
For at vise dig, hvordan du bruger digitale indgange og digitale udgange, bygger vi et simpelt projekt, f.eksample med en trykknap og en LED. Vi aflæser trykknappens tilstand og tænder LED'en i overensstemmelse hermed som vist i den følgende figur.
Dele påkrævet
Her er en liste over de dele, du skal bruge for at bygge kredsløbet:
- ESP32 DEVKIT V1
- 5 mm LED
- 220 Ohm modstand
- Trykknap
- 10k ohm modstand
- Brødbræt
- Jumper ledninger
Skematisk diagram
Før du fortsætter, skal du samle et kredsløb med en LED og en trykknap.
Vi forbinder LED'en til GPIO 5 og trykknappen til GPIO 4.Kode
Åbn koden Project_1_ESP32_Inputs_Outputs.ino i arduino IDEHvordan koden fungerer
I de følgende to linjer opretter du variabler for at tildele pins:
Knappen er forbundet til GPIO 4, og LED'en er forbundet til GPIO 5. Når du bruger Arduino IDE med ESP32, svarer 4 til GPIO 4 og 5 svarer til GPIO 5.
Dernæst opretter du en variabel til at holde knappens tilstand. Som standard er den 0 (ikke trykket).
int knapState = 0;
I opsætningen() initialiserer du knappen som en INPUT, og LED'en som en OUTPUT.
Til det bruger du pinMode()-funktionen, der accepterer den pin, du henviser til, og tilstanden: INPUT eller OUTPUT.
pinMode(knapPin, INPUT);
pinMode(ledPin, OUTPUT);
I loop() er det, hvor du læser knappens tilstand og indstiller LED'en i overensstemmelse hermed.
I næste linje læser du knappens tilstand og gemmer den i variablen buttonState.
Som vi har set tidligere, bruger du digitalRead()-funktionen.
buttonState = digitalRead(buttonPin);
Følgende if-sætning kontrollerer, om knappens tilstand er HIGH. Hvis den er, tænder den LED'en ved hjælp af digitalWrite()-funktionen, der accepterer ledPin'en og tilstanden HIGH som argument.
if (knapState == HØJ)Hvis knaptilstanden ikke er HIGH, slukker du for LED'en. Indstil bare LOW som et andet argument til i digitalWrite()-funktionen.
Upload af koden
Inden du klikker på upload-knappen, skal du gå til Tools > Board og vælge boardet :DOIT ESP32 DEVKIT V1.
Gå til Værktøjer > Port, og vælg den COM-port, som ESP32 er tilsluttet. Tryk derefter på upload-knappen og vent på beskeden "Udført upload".Bemærk: Hvis du ser mange prikker (forbinder...__...__) i fejlfindingsvinduet og meddelelsen "Kunnede ikke oprette forbindelse til ESP32: Timeout venter på pakkeoverskrift", betyder det, at du skal trykke på ESP32 on-board BOOT knappen efter prikkerne
begynder at dukke op. Fejlfinding
Demonstration
Efter upload af koden, test dit kredsløb. Din LED bør lyse, når du trykker på trykknappen:Og sluk, når du slipper den:
Projekt 2 ESP32 analoge indgange
Dette projekt viser, hvordan man læser analoge input med ESP32 ved hjælp af Arduino IDE.
Analog aflæsning er nyttig til at læse værdier fra variable modstande som potentiometre eller analoge sensorer.
Analoge indgange (ADC)
Aflæsning af en analog værdi med ESP32 betyder, at du kan måle varierende voltage niveauer mellem 0 V og 3.3 V.
Voltage målt tildeles derefter en værdi mellem 0 og 4095, hvor 0 V svarer til 0, og 3.3 V svarer til 4095. Enhver vol.tage mellem 0 V og 3.3 V vil blive givet den tilsvarende værdi imellem.ADC er ikke-lineær
Ideelt set ville du forvente en lineær adfærd, når du bruger ESP32 ADC-benene.
Det sker dog ikke. Det, du får, er en adfærd som vist i følgende diagram:Denne adfærd betyder, at din ESP32 ikke er i stand til at skelne 3.3 V fra 3.2 V.
Du får den samme værdi for begge voltages: 4095.
Det samme sker for meget lav voltage-værdier: for 0 V og 0.1 V får du den samme værdi: 0. Du skal huske på dette, når du bruger ESP32 ADC-benene.
analogRead() funktion
At læse en analog indgang med ESP32 ved hjælp af Arduino IDE er lige så simpel som at bruge analogRead()-funktionen. Den accepterer som argument den GPIO du ønsker at læse:
analogRead(GPIO);
Kun 15 er tilgængelige i DEVKIT V1board (version med 30 GPIO'er).
Grib dit ESP32-kortstiftudtag, og find ADC-benene. Disse er fremhævet med en rød kant i nedenstående figur.Disse analoge inputben har 12-bit opløsning. Det betyder, at når du læser en analog indgang, kan dens rækkevidde variere fra 0 til 4095.
Bemærk: ADC2-ben kan ikke bruges, når der bruges Wi-Fi. Så hvis du bruger Wi-Fi, og du har problemer med at få værdien fra en ADC2 GPIO, kan du overveje at bruge en ADC1 GPIO i stedet, det burde løse dit problem.
For at se, hvordan alt hænger sammen, laver vi et simpelt eksample for at aflæse en analog værdi fra et potentiometer.
Dele påkrævet
For denne example, du skal bruge følgende dele:
- ESP32 DEVKIT V1 Board
- Potentiometer
- Brødbræt
- Jumper ledninger
skematisk
Tilslut et potentiometer til din ESP32. Potentiometerets midterstift skal tilsluttes GPIO 4. Du kan bruge følgende skematiske diagram som reference.Kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Åbn koden Project_2_ESP32_Inputs_Outputs.ino i arduino IDEDenne kode læser simpelthen værdierne fra potentiometeret og udskriver disse værdier i den serielle monitor.
I koden starter du med at definere den GPIO potentiometeret er tilsluttet. I dette example, GPIO 4.I setup() skal du initialisere en seriel kommunikation med en baudrate på 115200.
I loop() skal du bruge analogRead()-funktionen til at læse det analoge input fra potPin.
Til sidst udskrives værdierne aflæst fra potentiometeret i den serielle monitor.
Upload den angivne kode til din ESP32. Sørg for, at du har valgt det rigtige kort og COM-port i menuen Værktøjer.
Test af Example
Efter at have uploadet koden og trykket på ESP32-nulstillingsknappen, skal du åbne den serielle monitor med en baudhastighed på 115200. Drej potentiometeret og se værdierne ændre sig.Den maksimale værdi, du får, er 4095, og minimumsværdien er 0.
Indpakning
I denne artikel har du lært, hvordan du læser analoge input ved hjælp af ESP32 med Arduino IDE. Sammenfattende:
- ESP32 DEVKIT V1 DOIT-kortet (version med 30 ben) har 15 ADC-ben, du kan bruge til at læse analoge input.
- Disse ben har en opløsning på 12 bit, hvilket betyder, at du kan få værdier fra 0 til 4095.
- For at læse en værdi i Arduino IDE, skal du blot bruge analogRead()-funktionen.
- ESP32 ADC-benene har ikke en lineær adfærd. Du vil sandsynligvis ikke være i stand til at skelne mellem 0 og 0.1V eller mellem 3.2 og 3.3V. Det skal du huske på, når du bruger ADC-stifterne.
Projekt 3 ESP32 PWM (analog udgang)
I denne tutorial viser vi dig, hvordan du genererer PWM-signaler med ESP32 ved hjælp af Arduino IDE. Som eksampvi bygger et simpelt kredsløb, der dæmper en LED ved hjælp af LED PWM-controlleren på ESP32.ESP32 LED PWM-controller
ESP32 har en LED PWM-controller med 16 uafhængige kanaler, der kan konfigureres til at generere PWM-signaler med forskellige egenskaber.
Her er de trin, du skal følge for at dæmpe en LED med PWM ved hjælp af Arduino IDE:
- Først skal du vælge en PWM-kanal. Der er 16 kanaler fra 0 til 15.
- Derefter skal du indstille PWM-signalfrekvensen. For en LED er en frekvens på 5000 Hz fint at bruge.
- Du skal også indstille signalets duty cycle-opløsning: du har opløsninger fra 1 til 16 bit. Vi bruger 8-bit opløsning, hvilket betyder, at du kan styre LED-lysstyrken med en værdi fra 0 til 255.
- Dernæst skal du angive, til hvilke GPIO eller GPIO'er signalet vises på. Til det skal du bruge følgende funktion:
ledcAttachPin(GPIO, kanal)
Denne funktion accepterer to argumenter. Den første er GPIO'en, der udsender signalet, og den anden er den kanal, der genererer signalet. - Til sidst, for at styre LED-lysstyrken ved hjælp af PWM, bruger du følgende funktion:
ledcWrite(kanal, arbejdscyklus)
Denne funktion accepterer som argumenter den kanal, der genererer PWM-signalet, og arbejdscyklussen.
Dele påkrævet
For at følge denne tutorial skal du bruge disse dele:
- ESP32 DEVKIT V1 Board
- 5mm LED
- 220 Ohm modstand
- Brødbræt
- Jumper ledninger
skematisk
Forbind en LED til din ESP32 som i følgende skematiske diagram. LED'en skal være tilsluttet GPIO 4.Note: du kan bruge hvilken som helst pin du vil, så længe den kan fungere som output. Alle ben, der kan fungere som udgange, kan bruges som PWM-ben. For mere information om ESP32 GPIO'erne, læs: ESP32 Pinout Reference: Hvilke GPIO pins skal du bruge?
Kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Åbn koden Project_3_ESP32_PWM.ino i arduino IDEDu starter med at definere den pin, som LED'en er fastgjort til. I dette tilfælde er LED'en tilsluttet GPIO 4.
Derefter indstiller du PWM-signalegenskaberne. Du definerer en frekvens på 5000 Hz, vælger kanal 0 for at generere signalet og indstiller en opløsning på 8 bit. Du kan vælge andre egenskaber, anderledes end disse, for at generere forskellige PWM-signaler.
I setup() skal du konfigurere LED PWM med de egenskaber, du har defineret tidligere ved at bruge ledcSetup()-funktionen, der accepterer som argumenter, ledChannel, frekvensen og opløsningen som følger:
Dernæst skal du vælge den GPIO, du vil få signalet fra. Til det skal du bruge ledcAttachPin()-funktionen, der accepterer som argumenter den GPIO, hvor du vil hente signalet, og den kanal, der genererer signalet. I dette example, vi får signalet i ledPin GPIO, der svarer til GPIO 4. Kanalen, der genererer signalet, er ledChannel, der svarer til kanal 0.
I løkken vil du variere arbejdscyklussen mellem 0 og 255 for at øge LED-lysstyrken.
Og derefter mellem 255 og 0 for at reducere lysstyrken.
For at indstille lysstyrken på LED'en skal du blot bruge ledcWrite()-funktionen, der accepterer den kanal, der genererer signalet, og arbejdscyklussen som argumenter.
Da vi bruger 8-bit opløsning, vil arbejdscyklussen blive styret med en værdi fra 0 til 255. Bemærk, at i ledcWrite()-funktionen bruger vi den kanal, der genererer signalet, og ikke GPIO.
Test af Example
Upload koden til din ESP32. Sørg for, at du har valgt det rigtige kort og COM-port. Se på dit kredsløb. Du bør have en lysdæmper LED, der øger og mindsker lysstyrken.
Project 4 ESP32 PIR Bevægelsessensor
Dette projekt viser, hvordan man registrerer bevægelse med ESP32 ved hjælp af en PIR-bevægelsessensor. Buzzeren vil afgive en alarm, når der registreres bevægelse, og stoppe alarmen, når der ikke registreres bevægelse i en forudindstillet tid (såsom 4 sekunder)
Sådan fungerer HC-SR501 Bevægelsessensor
.Funktionsprincippet for HC-SR501-sensoren er baseret på ændringen af den infrarøde stråling på det bevægelige objekt. For at blive detekteret af HC-SR501-sensoren skal objektet opfylde to krav:
- Objektet udsender den infrarøde måde.
- Objektet bevæger sig eller ryster
Så:
Hvis et objekt udsender den infrarøde stråle, men IKKE bevæger sig (f.eks. står en person stille uden at bevæge sig), registreres det IKKE af sensoren.
Hvis en genstand bevæger sig, men IKKE udsender den infrarøde stråle (f.eks. robot eller køretøj), registreres det IKKE af sensoren.
Introduktion af timere
I dette exampvi introducerer også timere. Vi ønsker, at LED'en forbliver tændt i et forudbestemt antal sekunder, efter at der er registreret bevægelse. I stedet for at bruge en delay() funktion, der blokerer din kode og ikke tillader dig at gøre andet i et bestemt antal sekunder, bør vi bruge en timer.Delay()-funktionen
Du bør være bekendt med delay()-funktionen, da den er meget udbredt. Denne funktion er ret ligetil at bruge. Den accepterer et enkelt int-tal som et argument.
Dette tal repræsenterer den tid i millisekunder, programmet skal vente, indtil det går videre til næste kodelinje.Når du forsinker (1000), stopper dit program på den linje i 1 sekund.
delay() er en blokerende funktion. Blokeringsfunktioner forhindrer et program i at gøre noget andet, indtil den pågældende opgave er fuldført. Hvis du har brug for, at flere opgaver skal udføres på samme tid, kan du ikke bruge delay().
For de fleste projekter bør du undgå at bruge forsinkelser og bruge timere i stedet for.
Millis()-funktionen
Ved at bruge en funktion kaldet millis() kan du returnere antallet af millisekunder, der er gået siden programmet startede.Hvorfor er den funktion nyttig? For ved at bruge noget matematik kan du nemt verificere hvor lang tid der er gået uden at blokere din kode.
Dele påkrævet
For at følge denne tutorial har du brug for følgende dele
- ESP32 DEVKIT V1 Board
- PIR bevægelsessensor (HC-SR501)
- Aktiv summer
- Jumper ledninger
- Brødbræt
skematiskNote: Den arbejdende voltage af HC-SR501 er 5V. Brug Vin-stiften til at drive den.
Kode
Før du fortsætter med denne vejledning, skal du have ESP32-tilføjelsen installeret i din Arduino IDE. Følg en af de følgende tutorials for at installere ESP32 på Arduino IDE, hvis du ikke allerede har gjort det. (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Åbn koden Project_4_ESP32_PIR_Motion_Sensor.ino i arduino IDE.
Demonstration
Upload koden til dit ESP32-kort. Sørg for, at du har valgt det rigtige kort og den rigtige COM-port. Opload kodereferencetrin.
Åbn den serielle skærm med en baudrate på 115200.Bevæg din hånd foran PIR-sensoren. Buzzeren bør tænde, og meddelelsen udskrives i den serielle monitor, der siger "Bevægelse detekteret! Buzzer alarm".
Efter 4 sekunder bør summeren slukke.
Project 5 ESP32 Switch Web Server
I dette projekt skal du oprette en selvstændig web server med en ESP32, der styrer udgange (to LED'er) ved hjælp af Arduino IDE-programmeringsmiljøet. De web serveren er mobil responsiv og kan tilgås med enhver enhed, der som browser på det lokale netværk. Vi viser dig, hvordan du opretter web server og hvordan koden fungerer trin for trin.
Projekt overståetview
Inden vi går direkte til projektet, er det vigtigt at skitsere, hvad vores web server vil gøre det, så det er lettere at følge trinene senere.
- De web serveren, du skal bygge, styrer to LED'er, der er forbundet til ESP32 GPIO 26 og GPIO 27;
- Du kan få adgang til ESP32 web server ved at indtaste ESP32 IP-adressen på en browser i det lokale netværk;
- Ved at klikke på knapperne på din web server kan du øjeblikkeligt ændre tilstanden for hver LED.
Dele påkrævet
Til denne tutorial skal du bruge følgende dele:
- ESP32 DEVKIT V1 Board
- 2x 5mm LED
- 2x 200 Ohm modstand
- Brødbræt
- Jumper ledninger
skematisk
Start med at bygge kredsløbet. Tilslut to LED'er til ESP32 som vist i følgende skematiske diagram – en LED tilsluttet GPIO 26, og den anden til GPIO 27.
Note: Vi bruger ESP32 DEVKIT DOIT board med 36 ben. Før du samler kredsløbet, skal du sørge for at tjekke pinout'en for det kort, du bruger.Kode
Her giver vi koden, der skaber ESP32 web server. Åbn koden Project_5_ESP32_Switch _Web_Server.ino i arduino IDE, men upload det ikke endnu. Du skal foretage nogle ændringer for at få det til at fungere for dig.
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Indstilling af dine netværkslegitimationsoplysninger
Du skal ændre følgende linjer med dine netværksoplysninger: SSID og adgangskode. Koden er godt kommenteret på, hvor du skal foretage ændringerne.Upload af koden
Nu kan du uploade koden og og web serveren virker med det samme.
Følg de næste trin for at uploade kode til ESP32:
- Sæt dit ESP32-kort i din computer;
- I Arduino IDE skal du vælge dit board i Tools > Board (i vores tilfælde bruger vi ESP32 DEVKIT DOIT boardet);
- Vælg COM-porten i Værktøjer > Port.
- Tryk på Upload-knappen i Arduino IDE og vent et par sekunder, mens koden kompileres og uploades til dit board.
- Vent på beskeden "Udført upload".
Find ESP IP-adressen
Efter upload af koden skal du åbne den serielle skærm med en baudrate på 115200.Tryk på knappen ESP32 EN (nulstil). ESP32 opretter forbindelse til Wi-Fi og udsender ESP IP-adressen på den serielle monitor. Kopiér den IP-adresse, fordi du har brug for den for at få adgang til ESP32 web server.
Adgang til Web Server
For at få adgang til web server, åbn din browser, indsæt ESP32 IP-adressen, og du vil se den følgende side.
Note: Din browser og ESP32 skal være tilsluttet det samme LAN.Hvis du tager et kig på den serielle skærm, kan du se, hvad der sker i baggrunden. ESP'en modtager en HTTP-anmodning fra en ny klient (i dette tilfælde din browser).
Du kan også se andre oplysninger om HTTP-anmodningen.
Demonstration
Nu kan du teste om din web serveren fungerer korrekt. Klik på knapperne for at styre lysdioderne.Samtidig kan du tage et kig på Serial Monitor for at se, hvad der foregår i baggrunden. F.eksample, når du klikker på knappen for at tænde for GPIO 26, modtager ESP32 en anmodning på /26/on URL.
Når ESP32 modtager denne anmodning, tænder den lysdioden, der er knyttet til GPIO 26, og opdaterer dens tilstand på web side.
Knappen til GPIO 27 fungerer på samme måde. Test at det fungerer korrekt.
Hvordan koden fungerer
I dette afsnit vil vi se nærmere på koden for at se, hvordan den virker.
Den første ting du skal gøre er at inkludere WiFi-biblioteket.Som tidligere nævnt skal du indsætte dit ssid og din adgangskode i de følgende linjer inden for de dobbelte anførselstegn.
Derefter indstiller du din web server til port 80.
Følgende linje opretter en variabel til at gemme headeren på HTTP-anmodningen:
Dernæst opretter du hjælpevariable for at gemme den aktuelle tilstand af dine udgange. Hvis du vil tilføje flere output og gemme dens tilstand, skal du oprette flere variabler.
Du skal også tildele en GPIO til hver af dine udgange. Her bruger vi GPIO 26 og GPIO 27. Du kan bruge alle andre egnede GPIO'er.
opsætning()
Lad os nu gå ind i opsætningen(). Først starter vi en seriel kommunikation med en baudrate på 115200 til fejlfindingsformål.Du definerer også dine GPIO'er som OUTPUT'er og indstiller dem til LAV.
De følgende linjer begynder Wi-Fi-forbindelsen med WiFi.begin(ssid, adgangskode), vent på en vellykket forbindelse og udskriv ESP IP-adressen i den serielle skærm.
loop()
I loop() programmerer vi, hvad der sker, når en ny klient etablerer en forbindelse med web server.
ESP32 lytter altid efter indkommende klienter med følgende linje:Når en anmodning modtages fra en klient, gemmer vi de indgående data. While-løkken, der følger, kører, så længe klienten forbliver forbundet. Vi anbefaler ikke at ændre den følgende del af koden, medmindre du ved præcis, hvad du gør.
Det næste afsnit af if and else-udsagn kontrollerer, hvilken knap der blev trykket på i din web side, og styrer udgangene i overensstemmelse hermed. Som vi har set tidligere, laver vi en anmodning om forskellige URLs afhængigt af den trykte knap.
F.eksample, hvis du har trykket på knappen GPIO 26 ON, modtager ESP32 en anmodning på /26/ON URL (vi kan se, at oplysningerne på HTTP-headeren på den serielle skærm). Så vi kan kontrollere, om overskriften indeholder udtrykket GET /26/on. Hvis den indeholder, ændrer vi output26state-variablen til ON, og ESP32 tænder LED'en.
Dette fungerer på samme måde for de andre knapper. Så hvis du vil tilføje flere output, bør du ændre denne del af koden for at inkludere dem.
Viser HTML web side
Den næste ting du skal gøre er at skabe web side. ESP32 vil sende et svar til din browser med noget HTML-kode til at bygge web side.
De web side sendes til klienten ved hjælp af denne udtrykkende client.println(). Du skal indtaste, hvad du vil sende til klienten som argument.
Det første vi skal sende er altid den følgende linje, der indikerer at vi sender HTML.Derefter gør den følgende linje web side responsiv i enhver web browser.
Og følgende bruges til at forhindre anmodninger på favicon. – Du behøver ikke bekymre dig om denne linje.
Styling af Web Side
Dernæst har vi noget CSS-tekst til at style knapperne og web side udseende.
Vi vælger Helvetica-skrifttypen, definerer indholdet, der skal vises som en blok og justeres i midten.Vi styler vores knapper med #4CAF50-farven, uden kant, tekst i hvid farve og med denne polstring: 16px 40px. Vi sætter også tekst-dekorationen til ingen, definerer skriftstørrelsen, margenen og markøren til en markør.
Vi definerer også stilen for en anden knap, med alle egenskaberne for knappen, vi har defineret tidligere, men med en anden farve. Dette vil være stilen for off-knappen.
Indstilling af Web Side første overskrift
I den næste linje kan du indstille den første overskrift på din web side. Her har vi "ESP32 Web Server", men du kan ændre denne tekst til hvad du vil.Visning af knapper og tilsvarende tilstand
Derefter skriver du et afsnit for at vise den aktuelle tilstand for GPIO 26. Som du kan se, bruger vi output26State-variablen, så tilstanden opdateres øjeblikkeligt, når denne variabel ændres.Derefter viser vi tænd- eller sluk-knappen, afhængigt af GPIO'ens aktuelle tilstand. Hvis den aktuelle tilstand for GPIO'en er slukket, viser vi ON-knappen, hvis ikke, viser vi OFF-knappen.
Vi bruger samme procedure for GPIO 27.
Lukning af forbindelsen
Til sidst, når svaret slutter, rydder vi header-variablen og stopper forbindelsen med klienten med client.stop().
Indpakning
I denne tutorial har vi vist dig, hvordan du bygger en web server med ESP32. Vi har vist dig et simpelt eksample, der styrer to lysdioder, men ideen er at erstatte disse lysdioder med et relæ eller en hvilken som helst anden udgang, du vil styre.
Projekt 6 RGB LED Web Server
I dette projekt viser vi dig, hvordan du fjernstyrer en RGB LED med et ESP32-kort ved hjælp af en web server med en farvevælger.
Projekt overståetview
Inden du går i gang, lad os se, hvordan dette projekt fungerer:
- ESP32 web serveren viser en farvevælger.
- Når du vælger en farve, sender din browser en anmodning om en URL der indeholder R-, G- og B-parametrene for den valgte farve.
- Din ESP32 modtager anmodningen og deler værdien for hver farveparameter.
- Derefter sender den et PWM-signal med den tilsvarende værdi til de GPIO'er, der styrer RGB-LED'en.
Hvordan fungerer RGB LED'er?
I en fælles katode RGB LED deler alle tre LED'er en negativ forbindelse (katode). Alle inkluderet i sættet er fælles katode RGB.Hvordan skaber man forskellige farver?
Med en RGB LED kan du selvfølgelig producere rødt, grønt og blåt lys, og ved at konfigurere intensiteten af hver LED kan du også producere andre farver.
F.eksample, for at producere rent blåt lys, ville du indstille den blå LED til den højeste intensitet og den grønne og røde LED til den laveste intensitet. For et hvidt lys ville du indstille alle tre LED'er til den højeste intensitet.
Blanding af farver
For at producere andre farver kan du kombinere de tre farver i forskellige intensiteter. For at justere intensiteten af hver LED kan du bruge et PWM-signal.
Fordi LED'erne er meget tæt på hinanden, ser vores øjne resultatet af kombinationen af farver i stedet for de tre farver hver for sig.
For at få en idé om, hvordan man kombinerer farverne, skal du tage et kig på følgende skema.
Dette er det enkleste farveblandingsdiagram, men giver dig en ide om, hvordan det virker, og hvordan man producerer forskellige farver.Dele påkrævet
Til dette projekt har du brug for følgende dele:
- ESP32 DEVKIT V1 Board
- RGB LED
- 3x 220 ohm modstande
- Jumper ledninger
- Brødbræt
skematiskKode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
- Installation af ESP32 Add-on i Arduino IDE
Efter samling af kredsløbet, Åbn koden
Project_6_RGB_LED_Web_Server.ino i arduino IDE.
Inden du uploader koden, skal du ikke glemme at indsætte dine netværksoplysninger, så ESP'en kan oprette forbindelse til dit lokale netværk.Sådan fungerer koden
ESP32-skitsen bruger WiFi.h-biblioteket.De følgende linjer definerer strengvariabler til at holde R-, G- og B-parametrene fra anmodningen.
De næste fire variabler bruges til at afkode HTTP-anmodningen senere.
Opret tre variabler for de GPIO'er, der kontrollerer strimlens R-, G- og B-parametre. I dette tilfælde bruger vi GPIO 13, GPIO 12 og GPIO 14.
Disse GPIO'er skal udsende PWM-signaler, så vi skal først konfigurere PWM-egenskaberne. Indstil PWM-signalfrekvensen til 5000 Hz. Tilknyt derefter en PWM-kanal for hver farve
Og endelig skal du indstille opløsningen af PWM-kanalerne til 8-bit
Tildel PWM-egenskaberne til PWM-kanalerne i setup().
Tilslut PWM-kanalerne til de tilsvarende GPIO'er
Følgende kodeafsnit viser farvevælgeren i din web side og laver en anmodning baseret på den farve, du har valgt.
Når du vælger en farve, modtager du en anmodning med følgende format.
Så vi er nødt til at opdele denne streng for at få R-, G- og B-parametrene. Parametrene gemmes i variablerne redString, greenString og blueString og kan have værdier mellem 0 og 255.For at styre strimlen med ESP32 skal du bruge ledcWrite()-funktionen til at generere PWM-signaler med værdierne afkodet fra HTTP anmodning.
Note: lær mere om PWM med ESP32: Project 3 ESP32 PWM(Analog Output)
For at styre strimlen med ESP8266 skal vi bare bruge
funktionen analogWrite() til at generere PWM-signaler med værdierne afkodet fra HTPP-anmodningen.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Fordi vi får værdierne i en strengvariabel, skal vi konvertere dem til heltal ved hjælp af toInt()-metoden.
Demonstration
Når du har indsat dine netværksoplysninger, skal du vælge det rigtige kort og COM-port og uploade koden til din ESP32. Upload kodereferencetrin.
Efter upload skal du åbne den serielle skærm med en baudhastighed på 115200 og trykke på ESP Enable/Reset-knappen. Du bør få bestyrelsens IP-adresse.Åbn din browser og indsæt ESP IP-adressen. Brug nu farvevælgeren til at vælge en farve til RGB LED.
Derefter skal du trykke på knappen "Skift farve" for at farven træder i kraft.For at slukke for RGB LED skal du vælge den sorte farve.
De stærkeste farver (øverst i farvevælgeren) er dem, der giver bedre resultater.
Projekt 7 ESP32 relæ Web Server
Brug af et relæ med ESP32 er en fantastisk måde at fjernstyre AC husholdningsapparater. Denne vejledning forklarer, hvordan man styrer et relæmodul med ESP32.
Vi tager et kig på, hvordan et relæmodul fungerer, hvordan man forbinder relæet til ESP32 og bygger en web server til at fjernstyre et relæ.
Introduktion af relæer
Et relæ er en elektrisk betjent kontakt, og som enhver anden kontakt, kan den tændes eller slukkes, lade strømmen gå igennem eller ej. Den kan styres med lav voltages, ligesom 3.3V leveret af ESP32 GPIO'erne og giver os mulighed for at styre høj vol.tages som 12V, 24V eller netspændingtage (230V i Europa og 120V i USA).På venstre side er der to sæt med tre stikkontakter til at forbinde høj voltages, og stifterne på højre side (low-voltage) opret forbindelse til ESP32 GPIO'erne.
Netværk Voltage ForbindelserRelæmodulet vist på det foregående billede har to stik, hver med tre stik: fælles (COM), Normally Closed (NC) og Normally Open (NO).
- COM: Tilslut den strøm, du ønsker at styre (netvoltagog).
- NC (Normalt lukket): den normalt lukkede konfiguration bruges, når du ønsker, at relæet skal være lukket som standard. NC'erne er COM-stifter forbundet, hvilket betyder, at strømmen flyder, medmindre du sender et signal fra ESP32 til relæmodulet for at åbne kredsløbet og stoppe strømmen.
- NEJ (Normalt åben): den normalt åbne konfiguration fungerer omvendt: der er ingen forbindelse mellem NO- og COM-pindene, så kredsløbet er brudt, medmindre du sender et signal fra ESP32 om at lukke kredsløbet.
KontrolstifterDen lave voltage side har et sæt med fire stifter og et sæt med tre stifter. Det første sæt består af VCC og GND til at tænde for modulet, og input 1 (IN1) og input 2 (IN2) til at styre henholdsvis bund- og toprelæet.
Hvis dit relæmodul kun har én kanal, har du kun én IN-pin. Hvis du har fire kanaler, har du fire IN-stifter og så videre.
Signalet du sender til IN-benene, afgør om relæet er aktivt eller ej. Relæet udløses, når indgangen går under ca. 2V. Det betyder, at du har følgende scenarier:
- Normalt lukket konfiguration (NC):
- HØJT signal – strømmen løber
- LAVT signal – strømmen løber ikke
- Normalt åben konfiguration (NEJ):
- HØJT signal – strømmen løber ikke
- LAVT signal – strøm i flow
Du bør bruge en normalt lukket konfiguration, når strømmen skal flyde det meste af gange, og du kun ønsker at stoppe den lejlighedsvis.
Brug en normalt åben konfiguration, når du ønsker, at strømmen skal flyde lejlighedsvis (f.eksample, tænd alamp lejlighedsvis).
Valg af strømforsyningDet andet sæt stifter består af GND-, VCC- og JD-VCC-stifter.
JD-VCC-stiften driver relæets elektromagnet. Bemærk, at modulet har en jumperhætte, der forbinder VCC- og JD-VCC-benene; den viste her er gul, men din kan have en anden farve.
Med jumperhætten på, er VCC- og JD-VCC-benene forbundet. Det betyder, at relæ-elektromagneten får strøm direkte fra ESP32-strømbenet, så relæmodulet og ESP32-kredsløbene er ikke fysisk isoleret fra hinanden.
Uden jumperhætten skal du sørge for en uafhængig strømkilde til at tænde for relæets elektromagnet gennem JD-VCC-stiften. Den konfiguration isolerer fysisk relæerne fra ESP32 med modulets indbyggede optokobler, som forhindrer skader på ESP32 i tilfælde af elektriske spidser.
skematiskAdvarsel: Brug af høj voltagStrømforsyninger kan forårsage alvorlig personskade.
Derfor bruges 5mm LED'er i stedet for høj forsyning voltage pærer i forsøget. Hvis du ikke er bekendt med netspænding voltage spørg en, der skal hjælpe dig. Mens du programmerer ESP'en eller forbinder dit kredsløb, skal du sørge for, at alt er afbrudt fra lysnettet voltage.Installation af biblioteket til ESP32
At bygge dette web server, bruger vi ESPAsyncWebServerbibliotek og AsyncTCP-bibliotek.
Installation af ESPAsyncWebServer bibliotek
Følg de næste trin for at installere ESPAsyncWebServer bibliotek:
- Klik her for at downloade ESPAsyncWebServer bibliotek. Det burde du have
en .zip-mappe i mappen Downloads - Udpak .zip-mappen, og du bør få ESPAsyncWebServer-master mappe
- Omdøb din mappe fra ESPAsyncWebServer-master til ESPAsyncWebServer
- Flyt ESPAsyncWebServermappen til din Arduino IDE-installationsbiblioteksmappe
Alternativt kan du i din Arduino IDE gå til Sketch > Include
Bibliotek > Tilføj .ZIP-bibliotek... og vælg det bibliotek, du lige har downloadet.
Installation af AsyncTCP-biblioteket til ESP32
De ESPAsyncWebServer biblioteket kræver AsyncTCP bibliotek til at arbejde. Følge
de næste trin for at installere det bibliotek:
- Klik her for at downloade AsyncTCP-biblioteket. Du bør have en .zip-mappe i din Downloads-mappe
- Udpak .zip-mappen, og du skulle få AsyncTCP-master-mappen
1. Omdøb din mappe fra AsyncTCP-master til AsyncTCP
3. Flyt AsyncTCP-mappen til din Arduino IDE-installationsbiblioteksmappe
4. Til sidst skal du genåbne din Arduino IDE
Alternativt kan du i din Arduino IDE gå til Sketch > Include
Bibliotek > Tilføj .ZIP-bibliotek... og vælg det bibliotek, du lige har downloadet.
Kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Når du har installeret de nødvendige biblioteker, skal du åbne koden Project_7_ESP32_Relay_Web_Server.ino i arduino IDE.
Inden du uploader koden, skal du ikke glemme at indsætte dine netværksoplysninger, så ESP'en kan oprette forbindelse til dit lokale netværk.Demonstration
Når du har foretaget de nødvendige ændringer, skal du uploade koden til din ESP32. Upload kodereferencetrin.
Åbn den serielle monitor med en baudrate på 115200, og tryk på ESP32 EN-knappen for at få dens IP-adresse. Åbn derefter en browser på dit lokale netværk og skriv ESP32 IP-adressen for at få adgang til web server.
Åbn den serielle monitor med en baudrate på 115200, og tryk på ESP32 EN-knappen for at få dens IP-adresse. Åbn derefter en browser på dit lokale netværk og skriv ESP32 IP-adressen for at få adgang til web server.Note: Din browser og ESP32 skal være tilsluttet det samme LAN.
Du bør få noget som følger med så to knapper som antallet af relæer, du har defineret i din kode.Nu kan du bruge knapperne til at styre dine relæer ved hjælp af din smartphone.
Project_8_Output_State_Synchronization_ Web_Server
Dette projekt viser, hvordan man styrer ESP32- eller ESP8266-udgangene ved hjælp af en web server og en fysisk knap samtidigt. Udgangstilstanden opdateres på web side om det ændres via fysisk knap eller web server.
Projekt overståetview
Lad os tage et hurtigt kig på, hvordan projektet fungerer.ESP32 eller ESP8266 er vært for en web server, der giver dig mulighed for at kontrollere tilstanden af et output;
- Den aktuelle udgangstilstand vises på web server;
- ESP'en er også forbundet med en fysisk trykknap, der styrer den samme udgang;
- Hvis du ændrer outputtilstanden ved hjælp af den fysiske trykknap, opdateres dens aktuelle tilstand også på web server.
Sammenfattende giver dette projekt dig mulighed for at styre det samme output ved hjælp af en web server og en trykknap samtidigt. Når outputtilstanden ændres, vil web serveren er opdateret.
Dele påkrævet
Her er en liste over de dele, du skal bruge for at bygge kredsløbet:
- ESP32 DEVKIT V1 Board
- 5 mm LED
- 220 Ohm modstand
- Trykknap
- 10k ohm modstand
- Brødbræt
- Jumper ledninger
skematiskInstallation af biblioteket til ESP32
At bygge dette web server, bruger vi ESPAsyncWebServerbibliotek og AsyncTCP-bibliotek.(Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESPAsyncWebServer bibliotek
Følg de næste trin for at installere ESPAsyncWebServerbibliotek:
- Klik her for at downloade ESPAsyncWebServer bibliotek. Det burde du have
en .zip-mappe i mappen Downloads - Udpak .zip-mappen, og du bør få ESPAsyncWebServer-master mappe
- Omdøb din mappe fra ESPAsyncWebServer-master til ESPAsyncWebServer
- Flyt ESPAsyncWebServermappen til din Arduino IDE-installationsbiblioteksmappe
Alternativt kan du i din Arduino IDE gå til Sketch > Include
Bibliotek > Tilføj .ZIP-bibliotek... og vælg det bibliotek, du lige har downloadet.
Installation af AsyncTCP-biblioteket til ESP32
ESPAsyncWebServerbiblioteket kræver, at AsyncTCP-biblioteket fungerer. Følg de næste trin for at installere det bibliotek:
- Klik her for at downloade AsyncTCP-biblioteket. Du bør have en .zip-mappe i din Downloads-mappe
- Udpak .zip-mappen, og du skulle få AsyncTCP-master-mappen
- Omdøb din mappe fra AsyncTCP-master til AsyncTCP
- Flyt AsyncTCP-mappen til din Arduino IDE-installationsbiblioteksmappe
- Til sidst skal du genåbne din Arduino IDE
Alternativt kan du i din Arduino IDE gå til Sketch > Include
Bibliotek > Tilføj .ZIP-bibliotek... og vælg det bibliotek, du lige har downloadet.
Kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Når du har installeret de nødvendige biblioteker, skal du åbne koden
Project_8_Output_State_Synchronization_Web_Server.ino i arduino IDE.
Inden du uploader koden, skal du ikke glemme at indsætte dine netværksoplysninger, så ESP'en kan oprette forbindelse til dit lokale netværk.
Hvordan koden fungerer
Knaptilstand og udgangstilstand
LEDState-variablen holder LED-outputtilstanden. Som standard, når web serveren starter, den er LAV.
buttonState og lastButtonState bruges til at registrere, om der blev trykket på trykknappen eller ej.knap (web server)
Vi inkluderede ikke HTML for at oprette knappen på index_html variablen.
Det er fordi vi ønsker at kunne ændre det afhængigt af den aktuelle LED-tilstand, der også kan ændres med trykknappen.
Så vi har oprettet en pladsholder for knappen %BUTTONPLACEHOLDER%, som vil blive erstattet med HTML-tekst for at oprette knappen senere i koden (dette gøres i processor()-funktionen).processor()
Processor()-funktionen erstatter eventuelle pladsholdere på HTML-teksten med faktiske værdier. Først tjekker den, om HTML-teksterne indeholder nogen
pladsholdere %BUTTONPLACEHOLDER%.Kald derefter funktionen outputState(), der returnerer den aktuelle outputtilstand. Vi gemmer det i outputStateValue-variablen.
Brug derefter denne værdi til at oprette HTML-teksten for at vise knappen med den rigtige tilstand:
HTTP GET-anmodning om at ændre outputtilstand (JavaScript)
Når du trykker på knappen, kaldes thetoggleCheckbox()-funktionen. Denne funktion vil lave en anmodning om forskellige URLs for at tænde eller slukke for LED'en.For at tænde for LED'en laver den en anmodning på /update?state=1 URL:
Ellers laver den en anmodning på /update?state=0 URL.
HTTP GET-anmodning om at opdatere tilstand (JavaScript)
For at holde outputtilstanden opdateret på web server, kalder vi følgende funktion, der laver en ny anmodning på /staten URL hvert sekund.Håndter anmodninger
Derefter skal vi håndtere, hvad der sker, når ESP32 eller ESP8266 modtager anmodninger om disse URLs.
Når en anmodning modtages på roden /URL, sender vi HTML-siden såvel som processoren.De følgende linjer kontrollerer, om du har modtaget en anmodning på /update?state=1 eller /update?state=0 URL og ændrer ledState i overensstemmelse hermed.
Når en anmodning modtages på /staten URL, sender vi den aktuelle outputtilstand:
loop()
I løkken() slår vi trykknappen tilbage og tænder eller slukker LED'en afhængigt af værdien af ledState variabel.Demonstration
Upload koden til dit ESP32-kort. Upload kodereferencetrin.
Åbn derefter den serielle monitor med en baudrate på 115200. Tryk på den indbyggede EN/RST-knap for at få IP-adressen.Åbn en browser på dit lokale netværk, og skriv ESP IP-adressen. Du skal have adgang til web server som vist nedenfor.
Note: Din browser og ESP32 skal være tilsluttet det samme LAN.Du kan skifte til knappen på web server for at tænde LED'en.
Du kan også styre den samme LED med den fysiske trykknap. Dens tilstand vil altid blive opdateret automatisk på web server.
Projekt 9 ESP32 DHT11 Web Server
I dette projekt lærer du, hvordan du bygger en asynkron ESP32 web server med DHT11, der viser temperatur og luftfugtighed ved hjælp af Arduino IDE.
Forudsætninger
De web server, vi bygger, opdaterer aflæsningerne automatisk uden behov for at opdatere web side.
Med dette projekt lærer du:
- Sådan aflæses temperatur og luftfugtighed fra DHT-sensorer;
- Byg en asynkron web server ved hjælp af ESPAsyncWebServer bibliotek;
- Opdater sensoraflæsningerne automatisk uden behov for at opdatere web side.
Asynkron Web Server
At bygge web server vi bruger ESPAsyncWebServer bibliotek der giver en nem måde at bygge en asynkron web server. Opbygning af en asynkron web serveren har flere advantages som nævnt på bibliotekets GitHub-side, såsom:
- "Håndter mere end én forbindelse på samme tid";
- "Når du sender svaret, er du straks klar til at håndtere andre forbindelser, mens serveren sørger for at sende svaret i baggrunden";
- "Simpel skabelonbehandlingsmotor til at håndtere skabeloner";
Dele påkrævet
For at fuldføre denne øvelse har du brug for følgende dele:
- ESP32 udviklingstavle
- DHT11 modul
- Brødbræt
- Jumper ledninger
skematiskInstallation af biblioteker
Du skal installere et par biblioteker til dette projekt:
- De DHT og den Adafruit Unified Sensor Driverbiblioteker til at læse fra DHT-sensoren.
- ESPAsyncWebServer og Asynkron TCP biblioteker til at bygge den asynkrone web server.
Følg de næste instruktioner for at installere disse biblioteker:
Installation af DHT-sensorbiblioteket
For at læse fra DHT-sensoren ved hjælp af Arduino IDE, skal du installere DHT sensor bibliotek. Følg de næste trin for at installere biblioteket.
- Klik her for at downloade DHT-sensorbiblioteket. Du bør have en .zip-mappe i din Downloads-mappe
- Udpak .zip-mappen, og du skulle få DHT-sensor-library-master-mappen
- Omdøb din mappe fra DHT-sensor-library-master til DHT_sensor
- Flyt mappen DHT_sensor til din Arduino IDE-installationsbiblioteksmappe
- Til sidst skal du genåbne din Arduino IDE
Installation af Adafruit Unified Sensor Driver
Du skal også installere Adafruit Unified Sensor Driver bibliotek at arbejde med DHT-sensoren. Følg de næste trin for at installere biblioteket.
- Klik her for at downloade Adafruit Unified Sensor-biblioteket. Du bør have en .zip-mappe i mappen Downloads
- Udpak .zip-mappen, og du skulle få Adafruit_sensor-master-mappen
- Omdøb din mappe fra Adafruit_sensor-master til Adafruit_sensor
- Flyt Adafruit_sensor-mappen til din Arduino IDE-installationsbiblioteksmappe
- Til sidst skal du genåbne din Arduino IDE
Installation af ESPAsyncWebServer bibliotek
Følg de næste trin for at installere ESPAsyncWebServer bibliotek:
- Klik her for at downloade ESPAsyncWebServer bibliotek. Det burde du have
en .zip-mappe i mappen Downloads - Udpak .zip-mappen, og du bør
få ESPAsyncWebServer-master mappe - Omdøb din mappe fra ESPAsyncWebServer-master til ESPAsyncWebServer
- Flyt ESPAsyncWebServermappen til din Arduino IDE-installationsbiblioteksmappe
Installation af Async TCP Library til ESP32
De ESPAsyncWebServer biblioteket kræver AsyncTCP bibliotek til at arbejde. Følg de næste trin for at installere det bibliotek:
- Klik her for at downloade AsyncTCP-biblioteket. Du bør have en .zip-mappe i din Downloads-mappe
- Udpak .zip-mappen, og du skulle få AsyncTCP-master-mappen
- Omdøb din mappe fra AsyncTCP-master til AsyncTCP
- Flyt AsyncTCP-mappen til din Arduino IDE-installationsbiblioteksmappe
- Til sidst skal du genåbne din Arduino IDE
Kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDE
Når du har installeret de nødvendige biblioteker, skal du åbne koden
Project_9_ESP32_DHT11_Web_Server.ino i arduino IDE.
Inden du uploader koden, skal du ikke glemme at indsætte dine netværksoplysninger, så ESP'en kan oprette forbindelse til dit lokale netværk.Hvordan koden fungerer
I de følgende afsnit forklarer vi, hvordan koden fungerer. Fortsæt med at læse, hvis du vil lære mere, eller spring til demonstrationssektionen for at se det endelige resultat.
Import af biblioteker
Importer først de nødvendige biblioteker. WiFi, ESPAsyncWebServer og ESPAsyncTCP er nødvendige for at bygge web server. Adafruit_Sensor- og DHT-bibliotekerne er nødvendige for at læse fra DHT11- eller DHT22-sensorerne.Variable definition
Definer den GPIO, som DHT-datapinden er forbundet til. I dette tilfælde er den forbundet til GPIO 4.Vælg derefter den DHT-sensortype, du bruger. I vores eksample, vi bruger DHT22. Hvis du bruger en anden type, skal du blot fjerne kommentarer fra din sensor og kommentere alle de andre.
Instantiér et DHT-objekt med den type og pin, vi har defineret tidligere.Opret en AsyncWebServerobjekt på port 80.
Læs temperatur- og fugtighedsfunktioner
Vi har lavet to funktioner: en til at aflæse temperaturen Vi har lavet to funktioner: en til at aflæse temperaturen (readDHTTemperature()) og den anden til at aflæse fugtighed (readDHTHumidity()).At få sensoraflæsninger er lige så simpelt som at bruge At få sensoraflæsninger er lige så enkelt som at bruge metoderne readTemperature() og readHumidity() på dht-objektet.
Vi har også en tilstand, der returnerer to streger (–), hvis sensoren ikke kan få aflæsningerne.
Aflæsningerne returneres som strengtype. For at konvertere en float til en streng skal du bruge String()-funktionen
Som standard aflæser vi temperaturen i Celsius-grader. For at få temperaturen i Fahrenheit grader skal du kommentere temperaturen i Celsius og fjerne temperaturen i Fahrenheit, så du har følgende:
Upload koden
Upload nu koden til din ESP32. Sørg for, at du har valgt det rigtige kort og den rigtige COM-port. Opload kodereferencetrin.
Efter upload skal du åbne den serielle skærm med en baudrate på 115200. Tryk på ESP32 reset-knappen. ESP32 IP-adressen skal udskrives i serien overvåge.Demonstration
Åbn en browser og skriv ESP32 IP-adressen. Dine web serveren skal vise de seneste sensoraflæsninger.
Note: Din browser og ESP32 skal være tilsluttet det samme LAN.
Bemærk, at temperatur- og luftfugtighedsmålingerne opdateres automatisk uden behov for at opdatere web side.
Project_10_ESP32_OLED_Skærm
Dette projekt viser, hvordan man bruger 0.96 tommer SSD1306 OLED-skærmen med ESP32 ved hjælp af Arduino IDE.
Introduktion til 0.96 tommer OLED-skærm
De OLED skærm som vi vil bruge i denne tutorial er SSD1306-modellen: en ensfarvet 0.96 tommer skærm med 128×64 pixels som vist i følgende figur.OLED-skærmen kræver ikke baggrundsbelysning, hvilket giver en meget flot kontrast i mørke omgivelser. Derudover bruger dens pixels kun energi, når de er tændt, så OLED-skærmen bruger mindre strøm sammenlignet med andre skærme.
Fordi OLED-skærmen bruger I2C kommunikationsprotokol, er ledningsføring meget enkel. Du kan bruge følgende tabel som reference.
OLED-stift | ESP32 |
Vin | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
skematiskInstallation af SSD1306 OLED Library – ESP32
Der er flere tilgængelige biblioteker til at styre OLED-skærmen med ESP32.
I denne tutorial bruger vi to Adafruit-biblioteker: Adafruit_SSD1306 bibliotek og Adafruit_GFX bibliotek.
Følg de næste trin for at installere disse biblioteker.
- Åbn din Arduino IDE og gå til Sketch> Inkluder bibliotek> Administrer biblioteker. Biblioteksadministratoren bør åbne.
- Skriv "SSD1306" i søgefeltet og installer SSD1306-biblioteket fra Adafruit.
- Efter installation af SSD1306-biblioteket fra Adafruit, skriv "GFX" i søgefeltet og installer biblioteket.
- Efter installation af bibliotekerne, genstart din Arduino IDE.
Kode
Når du har installeret de nødvendige biblioteker, skal du åbne Project_10_ESP32_OLED_Display.ino i arduino IDE. kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter: (Hvis du allerede har gjort dette trin, kan du springe til næste trin.)
Installation af ESP32 Add-on i Arduino IDEHvordan koden fungerer
Import af biblioteker
Først skal du importere de nødvendige biblioteker. Wire-biblioteket til at bruge I2C og Adafruit-bibliotekerne til at skrive til skærmen: Adafruit_GFX og Adafruit_SSD1306.Initialiser OLED-skærmen
Derefter definerer du din OLED-bredde og -højde. I dette exampvi bruger en 128×64 OLED-skærm. Hvis du bruger andre størrelser, kan du ændre det i variablerne SCREEN_WIDTH og SCREEN_HEIGHT.Initialiser derefter et visningsobjekt med den bredde og højde, der er defineret tidligere med I2C-kommunikationsprotokol (&Wire).
Parameteren (-1) betyder, at din OLED-skærm ikke har en RESET-pin. Hvis din OLED-skærm har en RESET-pin, skal den tilsluttes en GPIO. I så fald skal du videregive GPIO-nummeret som en parameter.
I opsætningen(), initialiser den serielle monitor ved en baud raute på 115200 til fejlfindingsformål.Initialiser OLED-skærmen med start()-metoden som følger:
Dette uddrag udskriver også en meddelelse på den serielle skærm, hvis vi ikke kan oprette forbindelse til skærmen.
Hvis du bruger en anden OLED-skærm, skal du muligvis ændre OLED-adressen. I vores tilfælde er adressen 0x3C.
Efter initialisering af skærmen skal du tilføje en forsinkelse på to sekunder, så OLED'en har tid nok til at initialisere, før du skriver tekst:
Ryd display, indstil skriftstørrelse, farve og skriv tekst
Efter initialisering af skærmen skal du rydde skærmbufferen med clearDisplay()-metoden:
Før du skriver tekst, skal du indstille tekststørrelse, farve og hvor teksten skal vises i OLED'en.
Indstil skriftstørrelsen ved hjælp af setTextSize() metoden:Indstil skriftfarven med metoden setTextColor():
WHITE indstiller hvid skrifttype og sort baggrund.
Definer positionen, hvor teksten starter ved hjælp af setCursor(x,y) metoden. I dette tilfælde indstiller vi teksten til at starte ved (0,0) koordinaterne – i øverste venstre hjørne.Endelig kan du sende teksten til displayet ved hjælp af println() metoden, som følger
Derefter skal du kalde display()-metoden for faktisk at vise teksten på skærmen.
Adafruit OLED-biblioteket giver nyttige metoder til nemt at rulle tekst.
- startscrollright(0x00, 0x0F): rul tekst fra venstre mod højre
- startscrollleft(0x00, 0x0F): rul tekst fra højre mod venstre
- startscrolldiagright(0x00, 0x07): rul tekst fra nederste venstre hjørne til øverste højre hjørne startscrolldiagleft(0x00, 0x07): rul tekst fra nederste højre hjørne til øverste venstre hjørne
Upload koden
Upload nu koden til din ESP32. Upload kodereferencetrin.
Efter upload af koden vil OLED'en vise rulletekst.
Dokumenter/ressourcer
![]() |
LAFVIN ESP32 Basic Starter Kit [pdf] Brugsanvisning ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |