Iniciador bàsic ESP32
Kit
Llista d'embalatge
ESP32 Introducció
Nou a l'ESP32? Comença aquí! L'ESP32 és una sèrie de microcontroladors System on a Chip (SoC) de baix cost i baix consum desenvolupats per Espressif que inclouen capacitats sense fil Wi-Fi i Bluetooth i un processador de doble nucli. Si esteu familiaritzat amb l'ESP8266, l'ESP32 és el seu successor, carregat amb moltes funcions noves.Especificacions ESP32
Si voleu obtenir una mica més tècnic i específic, podeu fer una ullada a les següents especificacions detallades de l'ESP32 (font: http://esp32.net/)—per a més detalls, comproveu el full de dades):
- Connectivitat sense fil WiFi: velocitat de dades de 150.0 Mbps amb HT40
- Bluetooth: BLE (Bluetooth Low Energy) i Bluetooth Classic
- Processador: Tensilica Xtensa Dual-Core 32-bit LX6 microprocessador, que funciona a 160 o 240 MHz
- Memòria:
- ROM: 448 KB (per a l'arrencada i les funcions bàsiques)
- SRAM: 520 KB (per a dades i instruccions)
- RTC fa SRAM: 8 KB (per a l'emmagatzematge de dades i la CPU principal durant l'arrencada RTC des del mode de son profund)
- SRAM lenta RTC: 8KB (per a l'accés del coprocessador durant el mode de son profund) eFuse: 1 Kbit (dels quals s'utilitzen 256 bits per al sistema (adreça MAC i configuració del xip) i els 768 bits restants es reserven per a aplicacions de client, incloses Xifratge Flash i ID de xip)
Flaix incrustat: flaix connectat internament mitjançant IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 i SD_DATA_1 a ESP32-D2WD i ESP32-PICO-D4.
- 0 MiB (xips ESP32-D0WDQ6, ESP32-D0WD i ESP32-S0WD)
- 2 MiB (xip ESP32-D2WD)
- 4 MiB (mòdul SiP ESP32-PICO-D4)
Baixa potència: assegura que encara podeu utilitzar conversions ADC, per exempleample, durant el son profund.
Entrada/sortida perifèrica:
- interfície perifèrica amb DMA que inclou tàctil capacitiu
- ADC (convertidor analògic a digital)
- DAC (convertidor de digital a analògic)
- I²C (circuit inter-integrat)
- UART (receptor/transmissor asíncron universal)
- SPI (Interfície perifèrica sèrie)
- I²S (So entre xips integrat)
- RMII (interfície reduïda independent dels mitjans)
- PWM (modulació d'amplada de pols)
Seguretat: acceleradors de maquinari per a AES i SSL/TLS
Taulers de desenvolupament ESP32
ESP32 es refereix al xip ESP32 nu. Tanmateix, el terme "ESP32" també s'utilitza per referir-se a les plaques de desenvolupament ESP32. L'ús de xips nus ESP32 no és fàcil ni pràctic, sobretot a l'hora d'aprendre, provar i crear prototips. La majoria de les vegades, voldreu utilitzar una placa de desenvolupament ESP32.
Utilitzarem la placa ESP32 DEVKIT V1 com a referència. La imatge següent mostra la placa ESP32 DEVKIT V1, versió amb 30 pins GPIO.Especificacions – ESP32 DEVKIT V1
La taula següent mostra un resum de les característiques i especificacions de la placa ESP32 DEVKIT V1 DOIT:
Nombre de nuclis | 2 (doble nucli) |
Wi-Fi | 2.4 GHz fins a 150 Mbits/s |
Bluetooth | BLE (Bluetooth Low Energy) i Bluetooth heretat |
Arquitectura | 32 bits |
Freqüència de rellotge | Fins a 240 MHz |
RAM | 512 KB |
Pins | 30 (segons el model) |
Perifèrics | Tàctil capacitiu, ADC (convertidor analògic a digital), DAC (convertidor digital a analògic), 12C (circuit inter-integrat), UART (receptor/transmissor asíncron universal), CAN 2.0 (àrea de control de xarxa), SPI (interfície perifèrica sèrie) , 12S (Inter-IC integrat So), RMII (interfície independent dels mitjans reduïts), PWM (modulació d'amplada de pols) i molt més. |
Botons integrats | Botons RESET i BOOT |
LEDs integrats | LED blau integrat connectat a GPIO2; LED vermell integrat que indica que la placa s'està alimentant |
USB a UART pont |
CP2102 |
Ve amb una interfície microUSB que podeu utilitzar per connectar la placa a l'ordinador per carregar codi o aplicar energia.
Utilitza el xip CP2102 (USB a UART) per comunicar-se amb el vostre ordinador mitjançant un port COM mitjançant una interfície sèrie. Un altre xip popular és el CH340. Comproveu quin és el convertidor de xip USB a UART al vostre tauler perquè haureu d'instal·lar els controladors necessaris perquè l'ordinador es pugui comunicar amb el tauler (més informació sobre això més endavant en aquesta guia).
Aquest tauler també inclou un botó RESET (pot estar etiquetat EN) per reiniciar el tauler i un botó d'arrencada per posar el tauler en mode intermitent (disponible per rebre codi). Tingueu en compte que alguns taulers poden no tenir un botó d'arrencada.
També ve amb un LED blau integrat que està connectat internament a GPIO 2. Aquest LED és útil per a la depuració per donar algun tipus de sortida física visual. També hi ha un LED vermell que s'il·lumina quan proporcioneu energia a la placa.Pinout de l'ESP32
Els perifèrics ESP32 inclouen:
- 18 canals de convertidor analògic a digital (ADC).
- 3 interfícies SPI
- 3 interfícies UART
- 2 interfícies I2C
- 16 canals de sortida PWM
- 2 convertidors de digital a analògic (DAC)
- 2 interfícies I2S
- 10 GPIO de detecció capacitiva
Les funcions ADC (convertidor analògic a digital) i DAC (convertidor digital a analògic) s'assignen a pins estàtics específics. Tanmateix, podeu decidir quins pins són UART, I2C, SPI, PWM, etc., només cal que els assigneu al codi. Això és possible a causa de la funció de multiplexació del xip ESP32.
Tot i que podeu definir les propietats dels pins al programari, hi ha pins assignats per defecte, tal com es mostra a la figura següentA més, hi ha pins amb característiques específiques que els fan adequats o no per a un projecte concret. La taula següent mostra quins pins són els millors per utilitzar com a entrades, sortides i quins cal tenir cura.
Els pins ressaltats en verd es poden utilitzar. Els ressaltats en groc estan bé d'utilitzar, però cal parar atenció perquè poden tenir un comportament inesperat principalment a l'arrencada. No es recomana utilitzar els pins ressaltats en vermell com a entrades o sortides.
GP IO | Entrada | Sortida | Notes |
0 | tirat cap amunt | OK | emet senyal PWM a l'arrencada, ha de ser BAIX per entrar en mode intermitent |
1 | Pin TX | OK | sortida de depuració a l'arrencada |
2 | OK | OK | connectat al LED integrat, s'ha de deixar flotant o BAIX per entrar en mode intermitent |
3 | OK | Pin RX | ALTA a l'arrencada |
4 | OK | OK | |
5 | OK | OK | emet senyal PWM a l'arrencada, pin de corretja |
12 | OK | OK | La bota falla si s'estira alt, passador de corretja |
13 | OK | OK | |
14 | OK | OK | emet senyal PWM a l'arrencada |
15 | OK | OK | emet senyal PWM a l'arrencada, pin de corretja |
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 | només entrada | |
35 | OK | només entrada | |
36 | OK | només entrada | |
39 | OK | només entrada |
Continueu llegint per obtenir una anàlisi més detallada i en profunditat dels GPIO ESP32 i les seves funcions.
Introduïu només pins
Els GPIO del 34 al 39 són GPI: només introduïu pins. Aquests pins no tenen resistències internes de pull-up o pull-down. No es poden utilitzar com a sortides, així que utilitzeu aquests pins només com a entrades:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Flaix SPI integrat a l'ESP-WROOM-32
GPIO 6 a GPIO 11 estan exposats en algunes plaques de desenvolupament ESP32. Tanmateix, aquests pins estan connectats al flaix SPI integrat al xip ESP-WROOM-32 i no es recomana per a altres usos. Per tant, no utilitzeu aquests pins als vostres projectes:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
GPIO tàctils capacitius
L'ESP32 té 10 sensors tàctils capacitius interns. Aquests poden detectar variacions en qualsevol cosa que tingui una càrrega elèctrica, com la pell humana. Així poden detectar variacions induïdes en tocar els GPIO amb un dit. Aquests pins es poden integrar fàcilment en coixinets capacitius i substituir els botons mecànics. Els pins tàctils capacitius també es poden utilitzar per despertar l'ESP32 del son profund. Aquests sensors tàctils interns estan connectats a aquests GPIO:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Convertidor analògic a digital (ADC)
L'ESP32 té canals d'entrada ADC de 18 x 12 bits (mentre que l'ESP8266 només té 1 ADC de 10 bits). Aquests són els GPIO que es poden utilitzar com a ADC i canals respectius:
- 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)
Nota: Els pins ADC2 no es poden utilitzar quan s'utilitza Wi-Fi. Per tant, si utilitzeu Wi-Fi i teniu problemes per obtenir el valor d'un GPIO ADC2, podeu considerar utilitzar un GPIO ADC1. Això hauria de resoldre el teu problema.
Els canals d'entrada ADC tenen una resolució de 12 bits. Això vol dir que podeu obtenir lectures analògiques que van de 0 a 4095, en què 0 correspon a 0 V i 4095 a 3.3 V. També podeu configurar la resolució dels vostres canals al codi i al rang ADC.
Els pins ESP32 ADC no tenen un comportament lineal. Probablement no podreu distingir entre 0 i 0.1 V, o entre 3.2 i 3.3 V. Heu de tenir-ho en compte quan feu servir els pins ADC. Obtindreu un comportament similar al que es mostra a la figura següent.Convertidor digital a analògic (DAC)
Hi ha 2 canals DAC de 8 bits a l'ESP32 per convertir els senyals digitals en vol analògictage sortides de senyal. Aquests són els canals DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
Hi ha suport RTC GPIO a l'ESP32. Els GPIO encaminats al subsistema de baixa potència RTC es poden utilitzar quan l'ESP32 està en son profund. Aquests RTC GPIO es poden utilitzar per despertar l'ESP32 d'un son profund quan l'Ultra Low
S'està executant el coprocessador d'alimentació (ULP). Els següents GPIO es poden utilitzar com a font d'activació externa.
- 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
El controlador ESP32 LED PWM té 16 canals independents que es poden configurar per generar senyals PWM amb diferents propietats. Tots els pins que poden actuar com a sortides es poden utilitzar com a pins PWM (els GPIO 34 a 39 no poden generar PWM).
Per establir un senyal PWM, heu de definir aquests paràmetres al codi:
- freqüència del senyal;
- Cicle de treball;
- canal PWM;
- GPIO on voleu emetre el senyal.
I2C
L'ESP32 té dos canals I2C i qualsevol pin es pot configurar com a SDA o SCL. Quan utilitzeu l'ESP32 amb l'IDE Arduino, els pins I2C predeterminats són:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Si voleu utilitzar altres pins quan feu servir la biblioteca de cables, només heu de trucar a:
Wire.begin (SDA, SCL);
SPI
Per defecte, l'assignació de pins per a SPI és:
SPI | Extensió MOSI | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Interrupcions
Tots els GPIO es poden configurar com a interrupcions.
Pins de corretja
El xip ESP32 té els següents pins de corretja:
- GPIO 0 (ha de ser BAIX per entrar al mode d'arrencada)
- GPIO 2 (ha de ser flotant o BAIX durant l'arrencada)
- GPIO 4
- GPIO 5 (ha de ser ALTA durant l'arrencada)
- GPIO 12 (ha de ser BAIX durant l'arrencada)
- GPIO 15 (ha de ser ALTA durant l'arrencada)
S'utilitzen per posar l'ESP32 en mode de carregador d'arrencada o de parpelleig. A la majoria de plaques de desenvolupament amb USB/Serial integrat, no cal que us preocupeu per l'estat d'aquests pins. El tauler posa els pins en l'estat correcte per a parpellejar o en mode d'arrencada. Podeu trobar més informació sobre la selecció del mode d'arrencada ESP32 aquí.
Tanmateix, si teniu perifèrics connectats a aquests pins, és possible que tingueu problemes per provar de carregar un codi nou, per flashejar l'ESP32 amb un microprogramari nou o per restablir la placa. Si teniu alguns perifèrics connectats als pins de corretja i teniu problemes per carregar el codi o per flashejar l'ESP32, pot ser que aquests perifèrics impedeixen que l'ESP32 entri al mode correcte. Llegiu la documentació de selecció del mode d'arrencada per guiar-vos en la direcció correcta. Després de restablir, parpellejar o arrencar, aquests pins funcionen com s'esperava.
Pins ALTA a l'arrencada
Alguns GPIO canvien el seu estat a HIGH o emeten senyals PWM a l'arrencada o al restabliment.
Això vol dir que si teniu sortides connectades a aquests GPIO, podeu obtenir resultats inesperats quan l'ESP32 es reiniciï o arrenqui.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 a GPIO 11 (connectat a la memòria flash SPI integrada ESP32; no es recomana utilitzar-lo).
- GPIO 14
- GPIO 15
Habilita (EN)
Enable (EN) és el pin d'habilitació del regulador de 3.3 V. Està tirat cap amunt, així que connecteu-vos a terra per desactivar el regulador de 3.3 V. Això vol dir que podeu utilitzar aquest pin connectat a un polsador per reiniciar el vostre ESP32, per exempleample.
corrent GPIO extret
El corrent màxim absolut consumit per GPIO és de 40 mA segons la secció "Condicions de funcionament recomanades" de la fitxa de dades ESP32.
Sensor d'efecte Hall integrat ESP32
L'ESP32 també inclou un sensor d'efecte hall integrat que detecta els canvis en el camp magnètic del seu entorn
ESP32 Arduino IDE
Hi ha un complement per a l'IDE Arduino que us permet programar l'ESP32 mitjançant l'IDE Arduino i el seu llenguatge de programació. En aquest tutorial us mostrarem com instal·lar la placa ESP32 a l'IDE Arduino tant si feu servir Windows, Mac OS X o Linux.
Requisits previs: Arduino IDE instal·lat
Abans d'iniciar aquest procediment d'instal·lació, heu de tenir l'IDE d'Arduino instal·lat al vostre ordinador. Hi ha dues versions de l'IDE d'Arduino que podeu instal·lar: la versió 1 i la versió 2.
Podeu descarregar i instal·lar Arduino IDE fent clic al següent enllaç: arduino.cc/en/Main/Software
Quina versió d'Arduino IDE us recomanem? De moment, n'hi ha plugins per a l'ESP32 (com els SPIFFS FileSystem Uploader Plugin) que encara no són compatibles amb Arduino 2. Per tant, si teniu intenció d'utilitzar el connector SPIFFS en el futur, us recomanem que instal·leu la versió heretada 1.8.X. Només heu de desplaçar-vos cap avall a la pàgina del programari Arduino per trobar-lo.
Instal·lació del complement ESP32 a l'IDE d'Arduino
Per instal·lar la placa ESP32 al vostre IDE Arduino, seguiu aquestes instruccions següents:
- Al vostre IDE Arduino, aneu a File> Preferències
- Introduïu el següent al "Gestor de la junta addicional URLcamp s":
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
A continuació, feu clic al botó "D'acord":Nota: si ja teniu les plaques ESP8266 URL, podeu separar el URLs amb una coma de la manera següent:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Obriu el gestor de taules. Aneu a Eines > Tauler > Gestor de taulers...Cerca ESP32 and press install button for the “ESP32 by Espressif Systems“:
Això és tot. S'ha d'instal·lar al cap d'uns segons.
Carregueu el codi de prova
Connecteu la placa ESP32 al vostre ordinador. Amb el vostre Arduino IDE obert, seguiu aquests passos:
- Seleccioneu el vostre tauler al menú Eines > Tauler (en el meu cas és el mòdul ESP32 DEV)
- Seleccioneu el port (si no veieu el port COM al vostre IDE d'Arduino, heu d'instal·lar els controladors CP210x USB a UART Bridge VCP):
- Obriu el següent exampli sota File > Examples > WiFi
(ESP32) > WiFiScan - S'obre un nou esbós al vostre IDE d'Arduino:
- Premeu el botó Carrega a l'IDE d'Arduino. Espereu uns segons mentre el codi es compila i es carrega al vostre tauler.
- Si tot ha anat com s'esperava, hauríeu de veure un "Càrrega feta". missatge.
- Obriu el monitor sèrie Arduino IDE a una velocitat de transmissió de 115200:
- Premeu el botó Habilita a bord de l'ESP32 i hauríeu de veure les xarxes disponibles a prop del vostre ESP32:
Resolució de problemes
Si intenteu carregar un nou esbós a l'ESP32 i obteniu aquest missatge d'error "S'ha produït un error fatal: no s'ha pogut connectar a l'ESP32: es va esgotar el temps d'espera... S'està connectant...". Vol dir que el vostre ESP32 no està en mode intermitent/càrrega.
Tenint el nom de la placa correcta i el COM por seleccionat, seguiu aquests passos:
Manteniu premut el botó "BOOT" del vostre tauler ESP32
- Premeu el botó "Pujar" a l'IDE d'Arduino per carregar el vostre esbós:
- Després de veure "S'està connectant...". missatge al vostre IDE Arduino, deixeu anar el dit del botó "BOOT":
- Després d'això, hauríeu de veure el missatge "Càrrega feta".
Això és tot. El vostre ESP32 hauria de tenir el nou esbós en funcionament. Premeu el botó "HABILITA" per reiniciar l'ESP32 i executar el nou esbós carregat.
També haureu de repetir aquesta seqüència de botons cada vegada que vulgueu carregar un esbós nou.
Projecte 1 ESP32 Entrades Sortides
En aquesta guia inicial, aprendràs a llegir entrades digitals com un interruptor de botó i controlar les sortides digitals com un LED mitjançant l'ESP32 amb Arduino IDE.
Requisits previs
Programarem l'ESP32 mitjançant l'IDE d'Arduino. Per tant, assegureu-vos que teniu instal·lat el complement de les plaques ESP32 abans de continuar:
- Instal·lació del complement ESP32 a l'IDE d'Arduino
Sortides digitals de control ESP32
Primer, heu de configurar el GPIO que voleu controlar com a SORTIDA. Utilitzeu la funció pinMode() de la següent manera:
pinMode (GPIO, SORTIDA);
Per controlar una sortida digital només cal utilitzar la funció digitalWrite(), que accepta com a arguments, el GPIO (número int) al qual us referiu i l'estat, ja sigui HIGH o LOW.
digitalWrite(GPIO, STATE);
Tots els GPIO es poden utilitzar com a sortides excepte els GPIO 6 a 11 (connectats al flash SPI integrat) i els GPIO 34, 35, 36 i 39 (només GPIO d'entrada);
Més informació sobre els ESP32 GPIO: ESP32 GPIO Reference Guide
ESP32 Llegir entrades digitals
Primer, configureu el GPIO que voleu llegir com a INPUT, utilitzant la funció pinMode() de la següent manera:
pinMode (GPIO, INPUT);
Per llegir una entrada digital, com un botó, feu servir la funció digitalRead(), que accepta com a argument, el GPIO (número int) al qual us referiu.
lectura digital (GPIO);
Tots els GPIO ESP32 es poden utilitzar com a entrades, excepte els GPIO 6 a 11 (connectats al flash SPI integrat).
Més informació sobre els ESP32 GPIO: ESP32 GPIO Reference Guide
Projecte Example
Per mostrar-vos com utilitzar les entrades digitals i les sortides digitals, construirem un projecte senzill, pample amb un polsador i un LED. Llegirem l'estat del polsador i il·luminarem el LED en conseqüència, tal com es mostra a la figura següent.
Peces necessàries
Aquí teniu una llista de les parts que necessiteu per construir el circuit:
- ESP32 DEVKIT V1
- LED de 5 mm
- Resistència de 220 Ohm
- Polsador
- Resistència de 10k Ohm
- Tauler
- Cables de pont
Diagrama esquemàtic
Abans de continuar, heu de muntar un circuit amb un LED i un polsador.
Connectarem el LED a GPIO 5 i el polsador a GPIO 4.Codi
Obriu el codi Project_1_ESP32_Inputs_Outputs.ino a l'IDE d'arduinoCom funciona el codi
A les dues línies següents, creeu variables per assignar pins:
El botó està connectat a GPIO 4 i el LED està connectat a GPIO 5. Quan s'utilitza l'IDE Arduino amb l'ESP32, 4 correspon a GPIO 4 i 5 correspon a GPIO 5.
A continuació, creeu una variable per mantenir premut l'estat del botó. Per defecte, és 0 (no es pressiona).
int buttonState = 0;
A la configuració (), inicialitzeu el botó com a INPUT i el LED com a SORTIDA.
Per això, utilitzeu la funció pinMode() que accepta el pin al qual us referiu i el mode: INPUT o OUTPUT.
pinMode(buttonPin, INPUT);
pinMode (ledPin, OUTPUT);
Al bucle () és on llegiu l'estat del botó i configureu el LED en conseqüència.
A la línia següent, llegiu l'estat del botó i el deseu a la variable buttonState.
Com hem vist anteriorment, feu servir la funció digitalRead().
buttonState = digitalRead(buttonPin);
La següent instrucció if, comprova si l'estat del botó és HIGH. Si és així, s'encén el LED mitjançant la funció digitalWrite() que accepta com a argument el ledPin i l'estat HIGH.
si (buttonState == ALTA)Si l'estat del botó no és ALTA, apagueu el LED. Només heu d'establir LOW com a segon argument a la funció digitalWrite().
Carregant el codi
Abans de fer clic al botó de càrrega, aneu a Eines > Tauler i seleccioneu el tauler: DOIT ESP32 DEVKIT V1.
Aneu a Eines > Port i seleccioneu el port COM al qual està connectat l'ESP32. A continuació, premeu el botó de càrrega i espereu que aparegui el missatge "Càrrega feta".Nota: si veieu molts punts (connexió...__...__) a la finestra de depuració i el missatge "No s'ha pogut connectar a ESP32: s'ha esgotat el temps d'espera per a la capçalera del paquet", això vol dir que heu de prémer el botó ESP32 integrat. botó després dels punts
començar a aparèixer.Resolució de problemes
Demostració
Després de carregar el codi, proveu el vostre circuit. El vostre LED s'hauria d'encendre quan premeu el polsador:I apagueu-lo quan el deixeu anar:
Projecte 2 entrades analògiques ESP32
Aquest projecte mostra com llegir entrades analògiques amb l'ESP32 mitjançant Arduino IDE.
La lectura analògica és útil per llegir valors de resistències variables com potenciòmetres o sensors analògics.
Entrades analògiques (ADC)
Llegir un valor analògic amb l'ESP32 significa que podeu mesurar diferents volumstage nivells entre 0 V i 3.3 V.
El voltagAleshores, el valor mesurat s'assigna a un valor entre 0 i 4095, en el qual 0 V correspon a 0 i 3.3 V correspon a 4095. Qualsevol voltage entre 0 V i 3.3 V es donarà el valor corresponent entremig.L'ADC és no lineal
Idealment, espereu un comportament lineal quan utilitzeu els pins ADC ESP32.
Tanmateix, això no passa. El que obtindreu és un comportament tal com es mostra al gràfic següent:Aquest comportament significa que el vostre ESP32 no és capaç de distingir 3.3 V de 3.2 V.
Obtindreu el mateix valor per als dos voltages: 4095.
El mateix passa amb el volum molt baixtagValors e: per a 0 V i 0.1 V obtindreu el mateix valor: 0. Cal tenir-ho en compte quan utilitzeu els pins ADC ESP32.
Funció analogRead().
Llegir una entrada analògica amb l'ESP32 mitjançant l'IDE d'Arduino és tan senzill com utilitzar la funció analogRead(). Accepta com a argument, el GPIO que voleu llegir:
analogRead (GPIO);
Només 15 estan disponibles a la placa DEVKIT V1 (versió amb 30 GPIO).
Agafeu el pinout de la placa ESP32 i localitzeu els pins ADC. Aquests es destaquen amb una vora vermella a la figura següent.Aquests pins d'entrada analògic tenen una resolució de 12 bits. Això vol dir que quan llegiu una entrada analògica, el seu rang pot variar de 0 a 4095.
Nota: els pins ADC2 no es poden utilitzar quan s'utilitza Wi-Fi. Per tant, si utilitzeu Wi-Fi i teniu problemes per obtenir el valor d'un GPIO ADC2, podeu considerar utilitzar un GPIO ADC1, això hauria de resoldre el vostre problema.
Per veure com tot lliga, farem un exemple senzillample per llegir un valor analògic des d'un potenciòmetre.
Peces necessàries
Per aquest example, necessiteu les parts següents:
- Placa ESP32 DEVKIT V1
- Potenciòmetre
- Tauler
- Cables de pont
Esquemàtic
Connecteu un potenciòmetre al vostre ESP32. El pin central del potenciòmetre s'ha de connectar a GPIO 4. Podeu utilitzar el diagrama esquemàtic següent com a referència.Codi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'Arduino
Obriu el codi Project_2_ESP32_Inputs_Outputs.ino a l'IDE d'arduinoAquest codi simplement llegeix els valors del potenciòmetre i imprimeix aquests valors al monitor sèrie.
Al codi, comenceu definint el GPIO al qual està connectat el potenciòmetre. En aquest example, GPIO 4.A la configuració (), inicialitzeu una comunicació en sèrie a una velocitat de transmissió de 115200.
Al bucle(), utilitzeu la funció analogRead() per llegir l'entrada analògica del potPin.
Finalment, imprimiu els valors llegits des del potenciòmetre al monitor sèrie.
Carregueu el codi proporcionat al vostre ESP32. Assegureu-vos que heu seleccionat el tauler i el port COM correctes al menú Eines.
Prova l'Example
Després de carregar el codi i prémer el botó de restabliment de l'ESP32, obriu el monitor sèrie a una velocitat de transmissió de 115200. Gireu el potenciòmetre i observeu com canvien els valors.El valor màxim que obtindreu és 4095 i el valor mínim és 0.
Embolcallant
En aquest article, heu après a llegir entrades analògiques mitjançant l'ESP32 amb l'IDE Arduino. En resum:
- La placa ESP32 DEVKIT V1 DOIT (versió amb 30 pins) té 15 pins ADC que podeu utilitzar per llegir entrades analògiques.
- Aquests pins tenen una resolució de 12 bits, el que significa que podeu obtenir valors de 0 a 4095.
- Per llegir un valor a l'IDE d'Arduino, només cal que utilitzeu la funció analogRead().
- Els pins ESP32 ADC no tenen un comportament lineal. Probablement no podreu distingir entre 0 i 0.1 V, o entre 3.2 i 3.3 V. Heu de tenir-ho en compte quan feu servir els pins ADC.
Projecte 3 ESP32 PWM (sortida analògica)
En aquest tutorial us mostrarem com generar senyals PWM amb l'ESP32 mitjançant Arduino IDE. Com a exampconstruirem un circuit senzill que atenuï un LED mitjançant el controlador PWM LED de l'ESP32.Controlador LED PWM ESP32
L'ESP32 té un controlador PWM LED amb 16 canals independents que es poden configurar per generar senyals PWM amb diferents propietats.
Aquests són els passos que haureu de seguir per atenuar un LED amb PWM mitjançant l'IDE d'Arduino:
- Primer, heu de triar un canal PWM. Hi ha 16 canals de 0 a 15.
- Aleshores, heu de configurar la freqüència del senyal PWM. Per a un LED, una freqüència de 5000 Hz està bé d'utilitzar.
- També heu d'establir la resolució del cicle de treball del senyal: teniu resolucions d'1 a 16 bits. Utilitzarem una resolució de 8 bits, el que significa que podeu controlar la brillantor del LED amb un valor de 0 a 255.
- A continuació, heu d'especificar a quin GPIO o GPIO apareixerà el senyal. Per a això, utilitzaràs la següent funció:
ledcAttachPin (GPIO, canal)
Aquesta funció accepta dos arguments. El primer és el GPIO que sortirà el senyal, i el segon és el canal que generarà el senyal. - Finalment, per controlar la brillantor del LED mitjançant PWM, utilitzeu la funció següent:
ledcWrite (canal, cicle de treball)
Aquesta funció accepta com a arguments el canal que està generant el senyal PWM i el cicle de treball.
Peces necessàries
Per seguir aquest tutorial necessiteu aquestes parts:
- Placa ESP32 DEVKIT V1
- LED de 5 mm
- Resistència de 220 Ohm
- Tauler
- Cables de pont
Esquemàtic
Connecteu un LED al vostre ESP32 com al diagrama esquemàtic següent. El LED ha d'estar connectat a GPIO 4.Nota: podeu utilitzar qualsevol pin que vulgueu, sempre que pugui actuar com a sortida. Tots els pins que poden actuar com a sortides es poden utilitzar com a pins PWM. Per obtenir més informació sobre els GPIO ESP32, llegiu: Referència de pinout de l'ESP32: Quins pins GPIO hauríeu d'utilitzar?
Codi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'Arduino
Obriu el codi Project_3_ESP32_PWM.ino a l'IDE d'arduinoComenceu definint el pin al qual està connectat el LED. En aquest cas, el LED està connectat a GPIO 4.
A continuació, configureu les propietats del senyal PWM. Definiu una freqüència de 5000 Hz, trieu el canal 0 per generar el senyal i establiu una resolució de 8 bits. Podeu triar altres propietats, diferents d'aquestes, per generar diferents senyals PWM.
A la configuració(), heu de configurar el LED PWM amb les propietats que heu definit anteriorment utilitzant la funció ledcSetup() que accepta com a arguments, el ledChannel, la freqüència i la resolució, de la següent manera:
A continuació, heu de triar el GPIO del qual obtindreu el senyal. Per a això, utilitzeu la funció ledcAttachPin() que accepta com a arguments el GPIO on voleu obtenir el senyal i el canal que està generant el senyal. En aquest example, obtindrem el senyal al ledPin GPIO, que correspon al GPIO 4. El canal que genera el senyal és el ledChannel, que correspon al canal 0.
Al bucle, variareu el cicle de treball entre 0 i 255 per augmentar la brillantor del LED.
I després, entre 255 i 0 per disminuir la brillantor.
Per configurar la brillantor del LED, només cal utilitzar la funció ledcWrite() que accepta com a arguments el canal que genera el senyal i el cicle de treball.
Com que estem utilitzant una resolució de 8 bits, el cicle de treball es controlarà amb un valor de 0 a 255. Tingueu en compte que a la funció ledcWrite() fem servir el canal que genera el senyal, i no el GPIO.
Prova l'Example
Carregueu el codi al vostre ESP32. Assegureu-vos que heu seleccionat la placa i el port COM correctes. Mira el teu circuit. Hauríeu de tenir un LED atenuador que augmenti i disminueixi la brillantor.
Projecte 4 Sensor de moviment PIR ESP32
Aquest projecte mostra com detectar moviment amb l'ESP32 mitjançant un sensor de moviment PIR. El timbre sonarà una alarma quan es detecti moviment i aturarà l'alarma quan no es detecti cap moviment durant un temps predeterminat (com ara 4 segons).
Com funciona el sensor de moviment HC-SR501
.El principi de funcionament del sensor HC-SR501 es basa en el canvi de la radiació infraroja de l'objecte en moviment. Per ser detectat pel sensor HC-SR501, l'objecte ha de complir dos requisits:
- L'objecte està emetent per via infraroja.
- L'objecte es mou o tremola
Així:
Si un objecte està emetent el raig infraroig però NO es mou (p. ex., una persona s'atura sense moure's), el sensor NO el detecta.
Si un objecte es mou però NO emet el raig infraroig (per exemple, robot o vehicle), el sensor NO el detecta.
Presentació dels temporitzadors
En aquest exampTambé introduirem temporitzadors. Volem que el LED es mantingui encès durant un nombre predeterminat de segons després que es detecti moviment. En lloc d'utilitzar una funció delay() que bloqueja el vostre codi i no us permet fer res més durant un nombre determinat de segons, hauríem d'utilitzar un temporitzador.La funció delay().
Hauríeu d'estar familiaritzat amb la funció delay() ja que s'utilitza àmpliament. Aquesta funció és bastant senzilla d'utilitzar. Accepta un sol nombre int com a argument.
Aquest número representa el temps en mil·lisegons que el programa ha d'esperar fins a passar a la següent línia de codi.Quan feu retard (1000), el vostre programa s'atura en aquesta línia durant 1 segon.
delay() és una funció de bloqueig. Les funcions de bloqueig impedeixen que un programa faci qualsevol altra cosa fins que s'hagi completat aquesta tasca en particular. Si necessiteu que es facin diverses tasques alhora, no podeu utilitzar delay().
Per a la majoria de projectes, hauríeu d'evitar utilitzar retards i utilitzar temporitzadors.
La funció millis().
Mitjançant una funció anomenada millis() podeu retornar el nombre de mil·lisegons que han passat des que el programa va començar.Per què és útil aquesta funció? Perquè utilitzant algunes matemàtiques, podeu verificar fàcilment quant de temps ha passat sense bloquejar el vostre codi.
Peces necessàries
Per seguir aquest tutorial necessiteu les parts següents
- Placa ESP32 DEVKIT V1
- Sensor de moviment PIR (HC-SR501)
- Zumbador actiu
- Cables de pont
- Tauler
EsquemàticNota: El vol de treballtage de HC-SR501 és de 5V. Utilitzeu el pin Vin per alimentar-lo.
Codi
Abans de continuar amb aquest tutorial, hauríeu de tenir el complement ESP32 instal·lat al vostre IDE d'Arduino. Seguiu un dels tutorials següents per instal·lar l'ESP32 a l'IDE d'Arduino, si encara no ho heu fet. (Si ja heu fet aquest pas, podeu passar al pas següent.)
Instal·lació del complement ESP32 a l'IDE d'Arduino
Obriu el codi Project_4_ESP32_PIR_Motion_Sensor.ino a l'IDE d'arduino.
Demostració
Carregueu el codi al vostre tauler ESP32. Assegureu-vos que heu seleccionat el tauler i el port COM adequats. Carregueu els passos de referència del codi.
Obriu el monitor sèrie a una velocitat de transmissió de 115200.Moveu la mà davant del sensor PIR. El timbre s'ha d'encendre i el missatge s'imprimeix al monitor sèrie que diu "S'ha detectat moviment! Alarma del timbre".
Després de 4 segons, el timbre s'ha d'apagar.
Projecte 5 Interruptor ESP32 Web Servidor
En aquest projecte creareu un autònom web servidor amb un ESP32 que controla les sortides (dos LED) mitjançant l'entorn de programació Arduino IDE. El web El servidor respon a mòbils i es pot accedir amb qualsevol dispositiu que sigui com a navegador a la xarxa local. Us mostrarem com crear el web servidor i com funciona el codi pas a pas.
Projecte acabatview
Abans d'anar directament al projecte, és important esbossar què és el nostre web servidor ho farà, de manera que sigui més fàcil seguir els passos més endavant.
- El web servidor construiràs controls dos LED connectats a l'ESP32 GPIO 26 i GPIO 27;
- Podeu accedir a l'ESP32 web servidor escrivint l'adreça IP de l'ESP32 en un navegador de la xarxa local;
- Fent clic als botons del vostre web servidor, podeu canviar instantàniament l'estat de cada LED.
Peces necessàries
Per a aquest tutorial necessitareu les parts següents:
- Placa ESP32 DEVKIT V1
- 2x LED de 5 mm
- 2 resistència de 200 ohms
- Tauler
- Cables de pont
Esquemàtic
Comenceu construint el circuit. Connecteu dos LED a l'ESP32 tal com es mostra al diagrama esquemàtic següent: un LED connectat a GPIO 26 i l'altre a GPIO 27.
Nota: Estem utilitzant la placa ESP32 DEVKIT DOIT amb 36 pins. Abans de muntar el circuit, assegureu-vos de comprovar el pinout de la placa que utilitzeu.Codi
Aquí proporcionem el codi que crea l'ESP32 web servidor. Obriu el codi Project_5_ESP32_Switch _Web_Server.ino a l'IDE arduino, però encara no el carregueu. Heu de fer alguns canvis perquè funcioni per a vosaltres.
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'Arduino
Configuració de les vostres credencials de xarxa
Heu de modificar les següents línies amb les vostres credencials de xarxa: SSID i contrasenya. El codi està ben comentat on heu de fer els canvis.Carregant el codi
Ara, podeu pujar el codi i i web servidor funcionarà immediatament.
Seguiu els passos següents per carregar el codi a l'ESP32:
- Connecteu la vostra placa ESP32 a l'ordinador;
- A l'IDE d'Arduino, seleccioneu la vostra placa a Eines > Placa (en el nostre cas estem utilitzant la placa ESP32 DEVKIT DOIT);
- Seleccioneu el port COM a Eines > Port.
- Premeu el botó Carrega a l'IDE d'Arduino i espereu uns segons mentre el codi es compila i es carrega al vostre tauler.
- Espereu el missatge "S'ha fet la càrrega".
Trobar l'adreça IP de l'ESP
Després de carregar el codi, obriu el monitor sèrie a una velocitat de transmissió de 115200.Premeu el botó ESP32 EN (restabliment). L'ESP32 es connecta a Wi-Fi i emet l'adreça IP de l'ESP al monitor sèrie. Copieu aquesta adreça IP, perquè la necessiteu per accedir a l'ESP32 web servidor.
Accedint al Web Servidor
Per accedir al web servidor, obriu el navegador, enganxeu l'adreça IP de l'ESP32 i veureu la pàgina següent.
Nota: El vostre navegador i ESP32 haurien d'estar connectats a la mateixa LAN.Si mireu el monitor sèrie, podreu veure què passa en segon pla. L'ESP rep una sol·licitud HTTP d'un client nou (en aquest cas, el vostre navegador).
També podeu veure altra informació sobre la sol·licitud HTTP.
Demostració
Ara pots provar si el teu web servidor funciona correctament. Feu clic als botons per controlar els LED.Al mateix temps, podeu fer una ullada al monitor sèrie per veure què passa en segon pla. Per example, quan feu clic al botó per activar GPIO 26, ESP32 rep una sol·licitud al /26/on URL.
Quan l'ESP32 rep aquesta sol·licitud, encén el LED connectat a GPIO 26 i actualitza el seu estat al web pàgina.
El botó del GPIO 27 funciona de manera similar. Comprova que funciona correctament.
Com funciona el codi
En aquesta secció mirarem més de prop el codi per veure com funciona.
El primer que heu de fer és incloure la biblioteca WiFi.Com s'ha esmentat anteriorment, heu d'inserir el vostre ssid i contrasenya a les línies següents dins de les cometes dobles.
Aleshores, configureu el vostre web servidor al port 80.
La línia següent crea una variable per emmagatzemar la capçalera de la sol·licitud HTTP:
A continuació, creeu variables auxiliars per emmagatzemar l'estat actual de les vostres sortides. Si voleu afegir més sortides i desar-ne l'estat, heu de crear més variables.
També heu d'assignar un GPIO a cadascuna de les vostres sortides. Aquí estem utilitzant GPIO 26 i GPIO 27. Podeu utilitzar qualsevol altre GPIO adequat.
configuració ()
Ara, anem a la configuració (). Primer, iniciem una comunicació en sèrie a una velocitat de transmissió de 115200 amb finalitats de depuració.També definiu els vostres GPIO com a SORTIDA i els configureu a BAIX.
Les línies següents comencen la connexió Wi-Fi amb WiFi.begin(ssid, contrasenya), espereu que la connexió sigui correcta i imprimiu l'adreça IP de l'ESP al monitor sèrie.
bucle ()
Al bucle() programem què passa quan un nou client estableix una connexió amb el web servidor.
L'ESP32 sempre escolta els clients entrants amb la línia següent:Quan rebem una sol·licitud d'un client, desarem les dades entrants. El bucle while que segueix s'executarà mentre el client es mantingui connectat. No recomanem canviar la part següent del codi tret que sàpigues exactament què estàs fent.
La següent secció de les declaracions if i else comprova quin botó s'ha premut al vostre web pàgina i controla les sortides en conseqüència. Com hem vist anteriorment, fem una petició en diferents URLs segons el botó premut.
Per exampsi heu premut el botó GPIO 26 ON, l'ESP32 rep una sol·licitud al /26/ON URL (podem veure que aquesta informació a la capçalera HTTP del monitor sèrie). Per tant, podem comprovar si la capçalera conté l'expressió GET /26/on. Si conté, canviem la variable output26state a ON i l'ESP32 encén el LED.
Això funciona de manera similar per als altres botons. Per tant, si voleu afegir més sortides, hauríeu de modificar aquesta part del codi per incloure-les.
Mostra l'HTML web pàgina
El següent que heu de fer és crear el web pàgina. L'ESP32 enviarà una resposta al vostre navegador amb algun codi HTML per crear-lo web pàgina.
El web La pàgina s'envia al client mitjançant aquesta expressió client.println(). Heu d'introduir el que voleu enviar al client com a argument.
El primer que hem d'enviar és sempre la línia següent, que indica que estem enviant HTML.Aleshores, la línia següent fa el web pàgina responsiva en qualsevol web navegador.
I el següent s'utilitza per evitar sol·licituds al favicon. – No cal que et preocupis per aquesta línia.
Estil el Web Pàgina
A continuació, tenim una mica de text CSS per estilitzar els botons i el web aspecte de la pàgina.
Escollim el tipus de lletra Helvetica, definim el contingut a mostrar com a bloc i alineat al centre.Estilem els nostres botons amb el color #4CAF50, sense vora, text en color blanc, i amb aquest farciment: 16px 40px. També establim la decoració del text a cap, definim la mida de la lletra, el marge i el cursor a un punter.
També definim l'estil d'un segon botó, amb totes les propietats del botó que hem definit anteriorment, però amb un color diferent. Aquest serà l'estil del botó apagat.
Configuració del Web Primer encapçalament de la pàgina
A la línia següent podeu establir el primer encapçalament del vostre web pàgina. Aquí tenim “ESP32 Web Servidor”, però podeu canviar aquest text pel que vulgueu.Mostra els botons i l'estat corresponent
A continuació, escriviu un paràgraf per mostrar l'estat actual de GPIO 26. Com podeu veure, utilitzem la variable output26State, de manera que l'estat s'actualitza a l'instant quan aquesta variable canvia.A continuació, mostrem el botó d'encesa o apagat, depenent de l'estat actual del GPIO. Si l'estat actual del GPIO està apagat, mostrem el botó ON, si no, mostrem el botó OFF.
Utilitzem el mateix procediment per a GPIO 27.
Tancant la connexió
Finalment, quan acaba la resposta, esborram la variable de capçalera i aturem la connexió amb el client amb client.stop().
Embolcallant
En aquest tutorial us hem mostrat com crear un web servidor amb l'ESP32. Us hem mostrat un ex senzillampque controla dos LED, però la idea és substituir aquests LED per un relé o qualsevol altra sortida que vulgueu controlar.
Projecte 6 LED RGB Web Servidor
En aquest projecte us mostrarem com controlar de forma remota un LED RGB amb una placa ESP32 mitjançant un web servidor amb un selector de colors.
Projecte acabatview
Abans de començar, veiem com funciona aquest projecte:
- L'ESP32 web servidor mostra un selector de colors.
- Quan trieu un color, el vostre navegador fa una sol·licitud a URL que conté els paràmetres R, G i B del color seleccionat.
- El vostre ESP32 rep la sol·licitud i divideix el valor de cada paràmetre de color.
- A continuació, envia un senyal PWM amb el valor corresponent als GPIO que controlen el LED RGB.
Com funcionen els LED RGB?
En un LED RGB de càtode comú, els tres LED comparteixen una connexió negativa (càtode). Tots els inclosos en el kit són RGB de càtode comú.Com crear diferents colors?
Amb un LED RGB, per descomptat, podeu produir llum vermella, verda i blava i, configurant la intensitat de cada LED, també podeu produir altres colors.
Per exampPer produir llum purament blava, establiríeu el LED blau a la intensitat més alta i els LED verds i vermells a la intensitat més baixa. Per a una llum blanca, establiríeu els tres LED a la intensitat més alta.
Barreja de colors
Per produir altres colors, podeu combinar els tres colors en diferents intensitats. Per ajustar la intensitat de cada LED podeu utilitzar un senyal PWM.
Com que els LED estan molt a prop els uns dels altres, els nostres ulls veuen el resultat de la combinació de colors, en lloc dels tres colors individualment.
Per tenir una idea de com combinar els colors, mireu el següent gràfic.
Aquest és el gràfic de barreja de colors més senzill, però us dóna una idea de com funciona i com produir diferents colors.Peces necessàries
Per a aquest projecte necessiteu les següents parts:
- Placa ESP32 DEVKIT V1
- LED RGB
- 3 resistències de 220 ohms
- Cables de pont
- Tauler
EsquemàticCodi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
- Instal·lació del complement ESP32 a l'IDE d'Arduino
Després de muntar el circuit, obriu el codi
Projecte_6_RGB_LED_Web_Server.ino a l'IDE arduino.
Abans de carregar el codi, no oblideu inserir les vostres credencials de xarxa perquè l'ESP es pugui connectar a la vostra xarxa local.Com funciona el codi
L'esbós ESP32 utilitza la biblioteca WiFi.h.Les línies següents defineixen variables de cadena per contenir els paràmetres R, G i B de la sol·licitud.
Les quatre variables següents s'utilitzen per descodificar la sol·licitud HTTP més endavant.
Creeu tres variables per als GPIO que controlaran els paràmetres de la tira R, G i B. En aquest cas, estem utilitzant GPIO 13, GPIO 12 i GPIO 14.
Aquests GPIO necessiten emetre senyals PWM, de manera que primer hem de configurar les propietats PWM. Estableix la freqüència del senyal PWM a 5000 Hz. A continuació, associa un canal PWM per a cada color
I, finalment, configureu la resolució dels canals PWM a 8 bits
A la configuració (), assigneu les propietats PWM als canals PWM
Connecteu els canals PWM als GPIO corresponents
La secció de codi següent mostra el selector de colors al vostre web pàgina i fa una sol·licitud en funció del color que heu escollit.
Quan trieu un color, rebeu una sol·licitud amb el format següent.
Per tant, hem de dividir aquesta cadena per obtenir els paràmetres R, G i B. Els paràmetres es guarden a les variables redString, greenString i blueString i poden tenir valors entre 0 i 255.Per controlar la tira amb l'ESP32, utilitzeu la funció ledcWrite() per generar senyals PWM amb els valors descodificats des de l'HTTP petició.
Nota: més informació sobre PWM amb ESP32: Projecte 3 ESP32 PWM (sortida analògica)
Per controlar la tira amb l'ESP8266, només hem d'utilitzar
la funció analogWrite() per generar senyals PWM amb els valors descodificats de la sol·licitud HTPP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Com que obtenim els valors d'una variable de cadena, hem de convertir-los en nombres enters mitjançant el mètode toInt().
Demostració
Després d'inserir les vostres credencials de xarxa, seleccioneu la placa correcta i el port COM i pengeu el codi al vostre ESP32. Passos de referència del codi de càrrega.
Després de carregar, obriu el monitor sèrie a una velocitat de transmissió de 115200 i premeu el botó Habilita/Restablir ESP. Hauríeu d'obtenir l'adreça IP del tauler.Obriu el vostre navegador i inseriu l'adreça IP de l'ESP. Ara, utilitzeu el selector de colors per triar un color per al LED RGB.
Aleshores, heu de prémer el botó "Canvia el color" perquè el color tingui efecte.Per apagar el LED RGB, seleccioneu el color negre.
Els colors més forts (a la part superior del selector de colors), són els que produiran millors resultats.
Projecte 7 Relleu ESP32 Web Servidor
L'ús d'un relé amb l'ESP32 és una manera fantàstica de controlar els electrodomèstics de CA de forma remota. Aquest tutorial explica com controlar un mòdul de relé amb l'ESP32.
Veurem com funciona un mòdul de relé, com connectar el relé a l'ESP32 i construir un web servidor per controlar un relé de manera remota.
Presentació de Relés
Un relé és un interruptor accionat elèctricament i com qualsevol altre interruptor, que es pot encendre o apagar, deixant passar el corrent o no. Es pot controlar amb baix voltages, com els 3.3V que proporcionen els GPIO ESP32 i ens permet controlar alt voltagés com 12V, 24V o xarxa voltage (230V a Europa i 120V als EUA).Al costat esquerre, hi ha dos jocs de tres endolls per connectar alt voltages, i les agulles del costat dret (baix volumtage) connectar-se als GPIO ESP32.
Mains Voltage ConnexionsEl mòdul de relé que es mostra a la foto anterior té dos connectors, cadascun amb tres preses: comuns (COM), Normalment tancat (NC) i Normalment obert (NO).
- COM: connecteu el corrent que voleu controlar (voltagi).
- NC (Normally Closed): la configuració normalment tancada s'utilitza quan es vol que el relé es tanqui per defecte. Els pins NC són COM estan connectats, és a dir, el corrent flueix tret que envieu un senyal de l'ESP32 al mòdul de relé per obrir el circuit i aturar el flux de corrent.
- NO (Normally Open): la configuració normalment oberta funciona a l'inrevés: no hi ha connexió entre els pins NO i COM, de manera que el circuit està trencat tret que envieu un senyal des de l'ESP32 per tancar el circuit.
Pins de controlEl baix volumtagEl costat té un conjunt de quatre agulles i un conjunt de tres agulles. El primer conjunt consta de VCC i GND per alimentar el mòdul, i l'entrada 1 (IN1) i l'entrada 2 (IN2) per controlar els relés inferior i superior, respectivament.
Si el vostre mòdul de relé només té un canal, només tindreu un pin IN. Si teniu quatre canals, tindreu quatre pins IN, i així successivament.
El senyal que envieu als pins IN, determina si el relé està actiu o no. El relé s'activa quan l'entrada baixa a uns 2V. Això vol dir que tindreu els escenaris següents:
- Configuració normalment tancada (NC):
- Senyal ALTA: el corrent flueix
- Senyal BAIX: el corrent no flueix
- Configuració normalment oberta (NO):
- Senyal ALTA: el corrent no flueix
- Senyal BAIX - corrent que flueix
Hauríeu d'utilitzar una configuració normalment tancada quan el corrent hauria de fluir la majoria de vegades, i només voleu aturar-lo de tant en tant.
Utilitzeu una configuració normalment oberta quan vulgueu que el corrent flueixi de tant en tant (per exemple,ample, activa alamp ocasionalment).
Selecció de la font d'alimentacióEl segon conjunt de pins consta de pins GND, VCC i JD-VCC.
El pin JD-VCC alimenta l'electroimant del relé. Tingueu en compte que el mòdul té una tapa de pont que connecta els pins VCC i JD-VCC; el que es mostra aquí és groc, però el vostre pot ser d'un altre color.
Amb la tapa del pont posada, els pins VCC i JD-VCC estan connectats. Això significa que l'electroimant del relé s'alimenta directament des del pin d'alimentació ESP32, de manera que el mòdul de relé i els circuits ESP32 no estan aïllats físicament entre si.
Sense la tapa del pont, heu de proporcionar una font d'alimentació independent per alimentar l'electroimant del relé a través del pin JD-VCC. Aquesta configuració aïlla físicament els relés de l'ESP32 amb l'optoacoblador integrat del mòdul, que evita danys a l'ESP32 en cas de pics elèctrics.
EsquemàticAvís: Ús d'alt voltagLes fonts d'alimentació poden causar lesions greus.
Per tant, s'utilitzen LED de 5 mm en lloc d'un volum de subministrament elevattage bombetes a l'experiment. Si no esteu familiaritzat amb el voltagDemana a algú que t'ajudi. Mentre programeu l'ESP o connecteu el vostre circuit, assegureu-vos que tot estigui desconnectat de la xarxatage.Instal·lació de la biblioteca per a ESP32
Per construir això web servidor, fem servir l'ESPAsyncWebBiblioteca del servidor i biblioteca AsyncTCP.
Instal·lació de l'ESPAsyncWebBiblioteca del servidor
Seguiu els passos següents per instal·lar el ESPAsyncWebServidor biblioteca:
- Feu clic aquí per descarregar l'ESPAsyncWebBiblioteca del servidor. Hauries de tenir
una carpeta .zip a la carpeta Baixades - Descomprimiu la carpeta .zip i hauríeu d'obtenir ESPAsyncWebCarpeta principal del servidor
- Canvieu el nom de la vostra carpeta des d'ESPAsyncWebMestre del servidor a ESPAsyncWebServidor
- Mou l'ESPAsyncWebCarpeta del servidor a la carpeta de biblioteques d'instal·lació d'Arduino IDE
Alternativament, al vostre IDE Arduino, podeu anar a Sketch > Inclou
Biblioteca > Afegeix una biblioteca .ZIP... i selecciona la biblioteca que acabes de baixar.
Instal·lació de la biblioteca AsyncTCP per a ESP32
El ESPAsyncWebServidor biblioteca requereix el AsyncTCP biblioteca per treballar. Seguiu
els següents passos per instal·lar aquesta biblioteca:
- Feu clic aquí per descarregar la biblioteca AsyncTCP. Hauríeu de tenir una carpeta .zip a la carpeta Descàrregues
- Descomprimiu la carpeta .zip i hauríeu d'obtenir la carpeta AsyncTCP-master
1. Canvieu el nom de la vostra carpeta d'AsyncTCP-master a AsyncTCP
3. Mou la carpeta AsyncTCP a la carpeta de biblioteques d'instal·lació de l'IDE d'Arduino
4. Finalment, torneu a obrir el vostre IDE Arduino
Alternativament, al vostre IDE Arduino, podeu anar a Sketch > Inclou
Biblioteca > Afegeix una biblioteca .ZIP... i selecciona la biblioteca que acabes de baixar.
Codi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'Arduino
Després d'instal·lar les biblioteques necessàries, obriu el codi Project_7_ESP32_Relay_Web_Server.ino a l'IDE arduino.
Abans de carregar el codi, no oblideu inserir les vostres credencials de xarxa perquè l'ESP es pugui connectar a la vostra xarxa local.Demostració
Després de fer els canvis necessaris, carregueu el codi al vostre ESP32. Passos de referència del codi de càrrega.
Obriu el monitor sèrie a una velocitat de transmissió de 115200 i premeu el botó ESP32 EN per obtenir la seva adreça IP. A continuació, obriu un navegador a la vostra xarxa local i escriviu l'adreça IP de l'ESP32 per accedir al web servidor.
Obriu el monitor sèrie a una velocitat de transmissió de 115200 i premeu el botó ESP32 EN per obtenir la seva adreça IP. A continuació, obriu un navegador a la vostra xarxa local i escriviu l'adreça IP de l'ESP32 per accedir al web servidor.Nota: El vostre navegador i ESP32 haurien d'estar connectats a la mateixa LAN.
Hauríeu d'obtenir alguna cosa de la següent manera amb dos botons com el nombre de relés que heu definit al vostre codi.Ara, podeu utilitzar els botons per controlar els vostres relés amb el vostre telèfon intel·ligent.
Projecte_8_Sincronització_estat_de_sortida_ Web_Servidor
Aquest projecte mostra com controlar les sortides ESP32 o ESP8266 mitjançant a web servidor i un botó físic simultàniament. L'estat de sortida s'actualitza a web pàgina si es canvia mitjançant un botó físic o web servidor.
Projecte acabatview
Fem una ullada ràpida a com funciona el projecte.L'ESP32 o l'ESP8266 allotja a web servidor que permet controlar l'estat d'una sortida;
- L'estat de sortida actual es mostra a la web servidor;
- L'ESP també està connectat a un polsador físic que controla la mateixa sortida;
- Si canvieu l'estat de sortida mitjançant el polsador físic, el seu estat actual també s'actualitzarà al web servidor.
En resum, aquest projecte us permet controlar la mateixa sortida mitjançant a web servidor i un polsador simultàniament. Sempre que l'estat de sortida canvia, el web servidor està actualitzat.
Peces necessàries
Aquí teniu una llista de les parts que necessiteu per construir el circuit:
- Placa ESP32 DEVKIT V1
- LED de 5 mm
- Resistència de 220 ohms
- Polsador
- Resistència de 10k Ohm
- Tauler
- Cables de pont
EsquemàticInstal·lació de la biblioteca per a ESP32
Per construir això web servidor, fem servir l'ESPAsyncWebBiblioteca del servidor i biblioteca AsyncTCP. (Si ja heu fet aquest pas, podeu saltar al pas següent.)
Instal·lació de l'ESPAsyncWebBiblioteca del servidor
Seguiu els passos següents per instal·lar l'ESPAsyncWebBiblioteca del servidor:
- Feu clic aquí per descarregar l'ESPAsyncWebBiblioteca del servidor. Hauries de tenir
una carpeta .zip a la carpeta Baixades - Descomprimiu la carpeta .zip i hauríeu d'obtenir ESPAsyncWebCarpeta principal del servidor
- Canvieu el nom de la vostra carpeta des d'ESPAsyncWebMestre del servidor a ESPAsyncWebServidor
- Mou l'ESPAsyncWebCarpeta del servidor a la carpeta de biblioteques d'instal·lació d'Arduino IDE
Alternativament, al vostre IDE Arduino, podeu anar a Sketch > Inclou
Biblioteca > Afegeix una biblioteca .ZIP... i selecciona la biblioteca que acabes de baixar.
Instal·lació de la biblioteca AsyncTCP per a ESP32
L'ESPAsyncWebLa biblioteca del servidor requereix que la biblioteca AsyncTCP funcioni. Seguiu els passos següents per instal·lar aquesta biblioteca:
- Feu clic aquí per descarregar la biblioteca AsyncTCP. Hauríeu de tenir una carpeta .zip a la carpeta Descàrregues
- Descomprimiu la carpeta .zip i hauríeu d'obtenir la carpeta AsyncTCP-master
- Canvieu el nom de la vostra carpeta d'AsyncTCP-master a AsyncTCP
- Moveu la carpeta AsyncTCP a la carpeta de biblioteques d'instal·lació d'Arduino IDE
- Finalment, torneu a obrir el vostre IDE Arduino
Alternativament, al vostre IDE Arduino, podeu anar a Sketch > Inclou
Biblioteca > Afegeix una biblioteca .ZIP... i selecciona la biblioteca que acabes de baixar.
Codi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'Arduino
Després d'instal·lar les biblioteques necessàries, obriu el codi
Projecte_8_Sincronització_estat_de_sortida_Web_Server.ino a l'IDE arduino.
Abans de carregar el codi, no oblideu inserir les vostres credencials de xarxa perquè l'ESP es pugui connectar a la vostra xarxa local.
Com funciona el codi
Estat del botó i estat de sortida
La variable ledState manté l'estat de sortida del LED. Per defecte, quan el web s'inicia el servidor, és BAIX.
ButtonState i lastButtonState s'utilitzen per detectar si el polsador s'ha premut o no.Botó (web servidor)
No hem inclòs l'HTML per crear el botó a la variable index_html.
Això és perquè volem poder canviar-lo en funció de l'estat actual del LED que també es pot canviar amb el polsador.
Per tant, hem creat un marcador de posició per al botó %BUTTONPLACEHOLDER% que es substituirà per text HTML per crear el botó més endavant al codi (això es fa a la funció processador()).processador ()
La funció processador() substitueix qualsevol marcador de posició del text HTML amb valors reals. Primer, comprova si els textos HTML en contenen
marcadors de posició %BUTTONPLACEHOLDER%.A continuació, crida a la funció outputState() que retorna l'estat de sortida actual. El desem a la variable outputStateValue.
Després d'això, utilitzeu aquest valor per crear el text HTML per mostrar el botó amb l'estat correcte:
Sol·licitud HTTP GET per canviar l'estat de sortida (JavaScript)
Quan premeu el botó, es crida la funció toggleCheckbox(). Aquesta funció farà una sol·licitud en diferents URLs per encendre o apagar el LED.Per encendre el LED, fa una sol·licitud a /update?state=1 URL:
En cas contrari, fa una sol·licitud a /update?state=0 URL.
Sol·licitud HTTP GET per actualitzar l'estat (JavaScript)
Per mantenir l'estat de sortida actualitzat a web servidor, anomenem la funció següent que fa una nova sol·licitud a l'estat / URL cada segon.Gestionar les sol·licituds
Aleshores, hem de gestionar què passa quan l'ESP32 o l'ESP8266 rep sol·licituds sobre aquests URLs.
Quan es rep una sol·licitud a l'arrel /URL, enviem la pàgina HTML així com el processador.Les línies següents comproven si heu rebut una sol·licitud a /update?state=1 o /update?state=0 URL i canvia el ledState en conseqüència.
Quan es rep una sol·licitud a /state URL, enviem l'estat de sortida actual:
bucle ()
Al bucle (), desbotem el polsador i encenem o apaguem el LED segons el valor de ledState variable.Demostració
Carregueu el codi al vostre tauler ESP32. Carregueu els passos de referència del codi.
A continuació, obriu el monitor sèrie a una velocitat de baudios de 115200. Premeu el botó EN/RST integrat per obtenir l'adreça IP.Obriu un navegador a la vostra xarxa local i escriviu l'adreça IP de l'ESP. Heu de tenir accés a web servidor tal com es mostra a continuació.
Nota: El vostre navegador i ESP32 haurien d'estar connectats a la mateixa LAN.Podeu activar el botó del web servidor per encendre el LED.
També podeu controlar el mateix LED amb el polsador físic. El seu estat sempre s'actualitzarà automàticament al web servidor.
Projecte 9 ESP32 DHT11 Web Servidor
En aquest projecte, aprendràs a crear un ESP32 asíncron web servidor amb el DHT11 que mostra la temperatura i la humitat mitjançant Arduino IDE.
Requisits previs
El web servidor, construirem les actualitzacions de les lectures automàticament sense necessitat d'actualitzar web pàgina.
Amb aquest projecte aprendràs:
- Com llegir la temperatura i la humitat dels sensors DHT;
- Construeix un asincrònic web servidor utilitzant el ESPAsyncWebBiblioteca del servidor;
- Actualitzeu les lectures del sensor automàticament sense necessitat d'actualitzar web pàgina.
Asíncron Web Servidor
Per construir el web servidor farem servir el ESPAsyncWebBiblioteca del servidor que proporciona una manera fàcil de crear un sistema asíncron web servidor. Construint un asincrònic web servidor té diversos advantages com s'esmenta a la pàgina de GitHub de la biblioteca, com ara:
- "Manejar més d'una connexió alhora";
- "Quan envieu la resposta, esteu immediatament preparat per gestionar altres connexions mentre el servidor s'encarrega d'enviar la resposta en segon pla";
- "Motor de processament de plantilles senzill per gestionar plantilles";
Peces necessàries
Per completar aquest tutorial necessiteu les parts següents:
- Placa de desenvolupament ESP32
- Mòdul DHT11
- Tauler
- Cables de pont
EsquemàticInstal·lació de Biblioteques
Heu d'instal·lar un parell de biblioteques per a aquest projecte:
- El DHT i el Sensor unificat Adafruit Biblioteques de controladors per llegir des del sensor DHT.
- ESPAsyncWebServidor i TCP asíncron biblioteques per construir el asíncron web servidor.
Seguiu les instruccions següents per instal·lar aquestes biblioteques:
Instal·lació de la biblioteca de sensors DHT
Per llegir des del sensor DHT amb Arduino IDE, cal instal·lar el Biblioteca de sensors DHT. Seguiu els passos següents per instal·lar la biblioteca.
- Feu clic aquí per descarregar la biblioteca de sensors DHT. Hauríeu de tenir una carpeta .zip a la carpeta Descàrregues
- Descomprimiu la carpeta .zip i hauríeu d'obtenir la carpeta DHT-sensor-library-master
- Canvieu el nom de la vostra carpeta de DHT-sensor-library-master a DHT_sensor
- Moveu la carpeta DHT_sensor a la carpeta de biblioteques d'instal·lació de l'IDE d'Arduino
- Finalment, torneu a obrir el vostre IDE Arduino
Instal·lació del controlador de sensor unificat d'Adafruit
També cal instal·lar el Biblioteca de controladors de sensor unificat d'Adafruit per treballar amb el sensor DHT. Seguiu els passos següents per instal·lar la biblioteca.
- Feu clic aquí per descarregar la biblioteca de sensors unificats d'Adafruit. Hauríeu de tenir una carpeta .zip a la carpeta Descàrregues
- Descomprimiu la carpeta .zip i hauríeu d'obtenir la carpeta Adafruit_sensor-master
- Canvieu el nom de la vostra carpeta d'Adafruit_sensor-master a Adafruit_sensor
- Mou la carpeta Adafruit_sensor a la carpeta de biblioteques d'instal·lació de l'IDE d'Arduino
- Finalment, torneu a obrir el vostre IDE Arduino
Instal·lació de l'ESPAsyncWebBiblioteca del servidor
Seguiu els passos següents per instal·lar el ESPAsyncWebServidor biblioteca:
- Feu clic aquí per descarregar l'ESPAsyncWebBiblioteca del servidor. Hauries de tenir
una carpeta .zip a la carpeta Baixades - Descomprimiu la carpeta .zip i ho hauríeu de fer
obtenir ESPAsyncWebCarpeta principal del servidor - Canvieu el nom de la vostra carpeta des d'ESPAsyncWebMestre del servidor a ESPAsyncWebServidor
- Mou l'ESPAsyncWebCarpeta del servidor a la carpeta de biblioteques d'instal·lació d'Arduino IDE
Instal·lació de la biblioteca Async TCP per a ESP32
El ESPAsyncWebServidor biblioteca requereix el AsyncTCP biblioteca per treballar. Seguiu els passos següents per instal·lar aquesta biblioteca:
- Feu clic aquí per descarregar la biblioteca AsyncTCP. Hauríeu de tenir una carpeta .zip a la carpeta Descàrregues
- Descomprimiu la carpeta .zip i hauríeu d'obtenir la carpeta AsyncTCP-master
- Canvieu el nom de la vostra carpeta d'AsyncTCP-master a AsyncTCP
- Moveu la carpeta AsyncTCP a la carpeta de biblioteques d'instal·lació d'Arduino IDE
- Finalment, torneu a obrir el vostre IDE Arduino
Codi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'Arduino
Després d'instal·lar les biblioteques necessàries, obriu el codi
Projecte_9_ESP32_DHT11_Web_Server.ino a l'IDE arduino.
Abans de carregar el codi, no oblideu inserir les vostres credencials de xarxa perquè l'ESP es pugui connectar a la vostra xarxa local.Com funciona el codi
En els paràgrafs següents explicarem com funciona el codi. Segueix llegint si vols saber-ne més o salta a la secció de demostració per veure el resultat final.
Importació de biblioteques
Primer, importeu les biblioteques necessàries. El WiFi, ESPAsyncWebEl servidor i l'ESPAsyncTCP són necessaris per crear el web servidor. Les biblioteques Adafruit_Sensor i DHT són necessàries per llegir des dels sensors DHT11 o DHT22.Definició de variables
Definiu el GPIO al qual està connectat el pin de dades DHT. En aquest cas, està connectat a GPIO 4.A continuació, seleccioneu el tipus de sensor DHT que utilitzeu. En el nostre example, estem utilitzant el DHT22. Si utilitzeu un altre tipus, només heu de deixar de comentar el vostre sensor i comentar tots els altres.
Instancia un objecte DHT amb el tipus i el pin que hem definit anteriorment.Creeu una sincronitzacióWebObjecte de servidor al port 80.
Llegir les funcions de temperatura i humitat
Hem creat dues funcions: una per llegir la temperatura Hem creat dues funcions: una per llegir la temperatura (readDHTTemperature()) i l'altra per llegir la humitat (readDHTHhumidity()).Obtenir lectures del sensor és tan senzill com utilitzar Obtenir lectures del sensor és tan senzill com utilitzar els mètodes readTemperature() i readHumidity() a l'objecte dht.
També tenim una condició que retorna dos guions (–) en cas que el sensor no aconsegueixi les lectures.
Les lectures es tornen com a tipus de cadena. Per convertir un float en una cadena, utilitzeu la funció String().
Per defecte, estem llegint la temperatura en graus Celsius. Per obtenir la temperatura en graus Fahrenheit, comenta la temperatura en Celsius i descomenta la temperatura en Fahrenheit, de manera que tinguis el següent:
Carregueu el codi
Ara, carregueu el codi al vostre ESP32. Assegureu-vos que heu seleccionat el tauler i el port COM correctes. Passos de referència del codi de pujada.
Després de carregar, obriu el monitor sèrie a una velocitat de transmissió de 115200. Premeu el botó de restabliment de l'ESP32. L'adreça IP de l'ESP32 s'ha d'imprimir a la sèrie monitor.Demostració
Obriu un navegador i escriviu l'adreça IP de l'ESP32. El teu web servidor hauria de mostrar les darreres lectures del sensor.
Nota: El vostre navegador i ESP32 haurien d'estar connectats a la mateixa LAN.
Tingueu en compte que les lectures de temperatura i humitat s'actualitzen automàticament sense necessitat d'actualitzar web pàgina.
Projecte_10_ESP32_OLED_Display
Aquest projecte mostra com utilitzar la pantalla OLED SSD0.96 de 1306 polzades amb ESP32 mitjançant Arduino IDE.
Presentació de la pantalla OLED de 0.96 polzades
El Pantalla OLED que utilitzarem en aquest tutorial és el model SSD1306: una pantalla monocolor de 0.96 polzades amb 128 × 64 píxels com es mostra a la figura següent.La pantalla OLED no requereix llum de fons, la qual cosa dóna com a resultat un contrast molt agradable en entorns foscos. A més, els seus píxels consumeixen energia només quan estan encesos, de manera que la pantalla OLED consumeix menys energia en comparació amb altres pantalles.
Com que la pantalla OLED utilitza el protocol de comunicació I2C, el cablejat és molt senzill. Podeu utilitzar la taula següent com a referència.
Pin OLED | ESP32 |
Vin | 3.3 V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
EsquemàticInstal·lació de la biblioteca OLED SSD1306 - ESP32
Hi ha diverses biblioteques disponibles per controlar la pantalla OLED amb l'ESP32.
En aquest tutorial farem servir dues biblioteques d'Adafruit: Biblioteca Adafruit_SSD1306 i Biblioteca Adafruit_GFX.
Seguiu els passos següents per instal·lar aquestes biblioteques.
- Obriu el vostre IDE Arduino i aneu a Sketch > Inclou la biblioteca > Gestiona les biblioteques. S'ha d'obrir el Gestor de la biblioteca.
- Escriviu "SSD1306" al quadre de cerca i instal·leu la biblioteca SSD1306 d'Adafruit.
- Després d'instal·lar la biblioteca SSD1306 d'Adafruit, escriviu "GFX" al quadre de cerca i instal·leu la biblioteca.
- Després d'instal·lar les biblioteques, reinicieu el vostre IDE Arduino.
Codi
Després d'instal·lar les biblioteques necessàries, obriu Project_10_ESP32_OLED_Display.ino a l'IDE d'arduino. codi
Programarem l'ESP32 mitjançant l'IDE d'Arduino, així que assegureu-vos que teniu instal·lat el complement ESP32 abans de continuar: (Si ja heu fet aquest pas, podeu passar al següent pas).
Instal·lació del complement ESP32 a l'IDE d'ArduinoCom funciona el codi
Importació de biblioteques
En primer lloc, heu d'importar les biblioteques necessàries. La biblioteca Wire per utilitzar I2C i les biblioteques Adafruit per escriure a la pantalla: Adafruit_GFX i Adafruit_SSD1306.Inicialitzar la pantalla OLED
A continuació, definiu l'amplada i l'alçada de l'OLED. En aquest exampEn aquest cas, utilitzem una pantalla OLED de 128 × 64. Si utilitzeu altres mides, podeu canviar-ho a les variables SCREEN_WIDTH i SCREEN_HEIGHT.A continuació, inicialitzeu un objecte de visualització amb l'amplada i l'alçada definides anteriorment amb el protocol de comunicació I2C (&Wire).
El paràmetre (-1) significa que la vostra pantalla OLED no té un pin de RESET. Si la vostra pantalla OLED té un pin RESET, hauria d'estar connectada a un GPIO. En aquest cas, hauríeu de passar el número GPIO com a paràmetre.
A la configuració (), inicialitzeu el monitor sèrie a una velocitat de bauds de 115200 amb finalitats de depuració.Inicieu la pantalla OLED amb el mètode begin() de la següent manera:
Aquest fragment també imprimeix un missatge al monitor sèrie, en cas que no ens puguem connectar a la pantalla.
En cas que utilitzeu una pantalla OLED diferent, és possible que hàgiu de canviar l'adreça OLED. En el nostre cas, l'adreça és 0x3C.
Després d'inicialitzar la pantalla, afegiu un retard de dos segons, de manera que l'OLED tingui prou temps per inicialitzar-se abans d'escriure text:
Visualització clara, estableix la mida de la lletra, el color i escriu text
Després d'inicialitzar la pantalla, esborreu la memòria intermèdia de visualització amb el mètode clearDisplay():
Abans d'escriure text, heu d'establir la mida del text, el color i on es mostrarà el text a l'OLED.
Estableix la mida del tipus de lletra mitjançant el mètode setTextSize():Estableix el color de la font amb el mètode setTextColor():
BLANC defineix el tipus de lletra blanc i el fons negre.
Definiu la posició on comença el text mitjançant el mètode setCursor(x,y). En aquest cas, estem configurant el text perquè comenci a les coordenades (0,0), a la cantonada superior esquerra.Finalment, podeu enviar el text a la pantalla mitjançant el mètode println(), de la següent manera
Aleshores, heu de cridar al mètode display() per mostrar realment el text a la pantalla.
La biblioteca OLED d'Adafruit ofereix mètodes útils per desplaçar-se fàcilment al text.
- startscrollright(0x00, 0x0F): desplaça el text d'esquerra a dreta
- startscrollleft(0x00, 0x0F): desplaça el text de dreta a esquerra
- startscrolldiagright(0x00, 0x07): desplaça el text de la cantonada inferior esquerra a la cantonada superior dreta startscrolldiagleft(0x00, 0x07): desplaça el text de la cantonada inferior dreta a la cantonada superior esquerra
Carregueu el codi
Ara, carregueu el codi al vostre ESP32. Passos de referència del codi de pujada.
Després de carregar el codi, l'OLED mostrarà un text de desplaçament.
Documents/Recursos
![]() |
Kit d'inici bàsic LAFVIN ESP32 [pdfManual d'instruccions Kit d'inici bàsic ESP32, ESP32, kit d'inici bàsic, kit d'inici |