ESP32 Starter di base
Kit
Lista imballaggio
Introduzione a ESP32
Nuovo su ESP32? Inizia qui! ESP32 è una serie di microcontrollori System on a Chip (SoC) a basso costo e basso consumo sviluppati da Espressif che includono funzionalità wireless Wi-Fi e Bluetooth e un processore dual-core. Se hai familiarità con ESP8266, ESP32 è il suo successore, ricco di tante nuove funzionalità.Specifiche ESP32
Se vuoi essere un po' più tecnico e specifico, puoi dare un'occhiata alle seguenti specifiche dettagliate dell'ESP32 (fonte: http://esp32.net/)—per maggiori dettagli, controlla la scheda tecnica):
- Connettività wireless WiFi: velocità dati 150.0 Mbps con HT40
- Bluetooth: BLE (Bluetooth Low Energy) e Bluetooth Classico
- Processore: microprocessore Tensilica Xtensa Dual-Core LX32 a 6 bit, funzionante a 160 o 240 MHz
- Memoria:
- ROM: 448 KB (per l'avvio e le funzioni principali)
- SRAM: 520 KB (per dati e istruzioni)
- RTC fas SRAM: 8 KB (per l'archiviazione dei dati e la CPU principale durante l'avvio RTC dalla modalità deep-sleep)
- RTC slow SRAM: 8 KB (per l'accesso del coprocessore durante la modalità deep-sleep) eFuse: 1 Kbit (di cui 256 bit sono utilizzati per il sistema (indirizzo MAC e configurazione del chip) e i restanti 768 bit sono riservati per le applicazioni del cliente, tra cui Flash-Encryption e Chip-ID)
Flash incorporata: flash collegata internamente tramite IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 e SD_DATA_1 su ESP32-D2WD ed ESP32-PICO-D4.
- 0 MiB (chip ESP32-D0WDQ6, ESP32-D0WD e ESP32-S0WD)
- 2 MiB (chip ESP32-D2WD)
- 4 MiB (modulo SiP ESP32-PICO-D4)
Bassa potenza: assicura che sia ancora possibile utilizzare le conversioni ADC, ad esempioample, durante il sonno profondo.
Input/output periferico:
- interfaccia periferica con DMA che include touch capacitivo
- ADC (convertitore analogico-digitale)
- DAC (convertitore digitale-analogico)
- I²C (circuito inter-integrato)
- UART (ricevitore/trasmettitore asincrono universale)
- SPI (interfaccia periferica seriale)
- I²S (suono integrato interchip)
- RMII (Interfaccia indipendente dal supporto ridotto)
- PWM (modulazione di larghezza di impulso)
Sicurezza: acceleratori hardware per AES e SSL/TLS
Schede di sviluppo ESP32
ESP32 si riferisce al chip ESP32 nudo. Tuttavia, il termine "ESP32" è utilizzato anche per fare riferimento alle schede di sviluppo ESP32. Utilizzare chip ESP32 nudi non è facile o pratico, specialmente quando si impara, si testa e si crea un prototipo. Nella maggior parte dei casi, si desidera utilizzare una scheda di sviluppo ESP32.
Utilizzeremo la scheda ESP32 DEVKIT V1 come riferimento. L'immagine seguente mostra la scheda ESP32 DEVKIT V1, versione con 30 pin GPIO.Specifiche – ESP32 DEVKIT V1
La tabella seguente mostra un riepilogo delle caratteristiche e delle specifiche della scheda ESP32 DEVKIT V1 DOIT:
Numero di core | 2 (doppio nucleo) |
Wifi | 2.4 GHz fino a 150 Mbit/s |
Bluetooth | BLE (Bluetooth Low Energy) e Bluetooth legacy |
Architettura | 32 bit |
Frequenza di clock | Fino a 240 MHz |
Memoria RAM | 512 KB |
Spilli | 30 (a seconda del modello) |
Periferiche | Touch capacitivo, ADC (convertitore analogico-digitale), DAC (convertitore digitale-analogico), 12C (circuito interintegrato), UART (ricevitore/trasmettitore asincrono universale), CAN 2.0 (Controller Area Network), SPI (interfaccia periferica seriale), 12S (circuito interintegrato integrato Suono), RMII (Reduced Media-Independent Interface), PWM (modulazione di larghezza di impulso) e altro ancora. |
Pulsanti incorporati | Pulsanti RESET e BOOT |
LED integrati | LED blu integrato collegato a GPIO2; LED rosso integrato che indica che la scheda è alimentata |
USB a UART ponte |
CP2102 |
È dotato di un'interfaccia microUSB che puoi utilizzare per collegare la scheda al computer per caricare il codice o alimentarla.
Utilizza il chip CP2102 (USB a UART) per comunicare con il computer tramite una porta COM usando un'interfaccia seriale. Un altro chip popolare è il CH340. Controlla qual è il convertitore di chip USB a UART sulla tua scheda perché dovrai installare i driver richiesti in modo che il computer possa comunicare con la scheda (ulteriori informazioni su questo più avanti in questa guida).
Questa scheda è dotata anche di un pulsante RESET (potrebbe essere etichettato EN) per riavviare la scheda e di un pulsante BOOT per mettere la scheda in modalità lampeggiante (disponibile per ricevere codice). Nota che alcune schede potrebbero non avere un pulsante BOOT.
È inoltre dotato di un LED blu integrato che è collegato internamente al GPIO 2. Questo LED è utile per il debug per fornire una sorta di output fisico visivo. C'è anche un LED rosso che si accende quando si fornisce alimentazione alla scheda.Pinout ESP32
Le periferiche ESP32 includono:
- 18 canali di conversione analogico-digitale (ADC)
- 3 interfacce SPI
- 3 interfacce UART
- 2 interfacce I2C
- 16 canali di uscita PWM
- 2 convertitori digitale-analogico (DAC)
- 2 interfacce I2S
- 10 GPIO di rilevamento capacitivo
Le funzionalità ADC (convertitore analogico-digitale) e DAC (convertitore digitale-analogico) sono assegnate a specifici pin statici. Tuttavia, puoi decidere quali pin sono UART, I2C, SPI, PWM, ecc.: devi solo assegnarli nel codice. Ciò è possibile grazie alla funzionalità di multiplexing del chip ESP32.
Sebbene sia possibile definire le proprietà dei pin sul software, ci sono pin assegnati per impostazione predefinita come mostrato nella figura seguenteInoltre, ci sono pin con caratteristiche specifiche che li rendono adatti o meno per un progetto particolare. La seguente tabella mostra quali pin sono i migliori da usare come input, output e quali devi usare con cautela.
I pin evidenziati in verde sono OK da usare. Quelli evidenziati in giallo sono OK da usare, ma devi prestare attenzione perché potrebbero avere un comportamento inaspettato principalmente all'avvio. I pin evidenziati in rosso non sono consigliati per l'uso come input o output.
GPIO | Ingresso | Produzione | Appunti |
0 | tirato su | OK | emette il segnale PWM all'avvio, deve essere BASSO per entrare in modalità lampeggiante |
1 | perno TX | OK | output di debug all'avvio |
2 | OK | OK | collegato al LED di bordo, deve essere lasciato flottante o BASSO per entrare in modalità lampeggiante |
3 | OK | perno RX | ALTO all'avvio |
4 | OK | OK | |
5 | OK | OK | emette il segnale PWM all'avvio, pin di fissaggio |
12 | OK | OK | lo stivale non funziona se tirato in alto, perno di fissaggio |
13 | OK | OK | |
14 | OK | OK | emette il segnale PWM all'avvio |
15 | OK | OK | emette il segnale PWM all'avvio, pin di fissaggio |
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 | solo ingresso | |
35 | OK | solo ingresso | |
36 | OK | solo ingresso | |
39 | OK | solo ingresso |
Continua a leggere per un'analisi più dettagliata e approfondita dei GPIO ESP32 e delle sue funzioni.
Solo pin di input
I GPIO da 34 a 39 sono GPI, ovvero pin di solo input. Questi pin non hanno resistori pull-up o pull-down interni. Non possono essere usati come output, quindi usa questi pin solo come input:
- GPIO34
- GPIO35
- GPIO36
- GPIO39
Flash SPI integrato su ESP-WROOM-32
GPIO 6 a GPIO 11 sono esposti in alcune schede di sviluppo ESP32. Tuttavia, questi pin sono collegati alla flash SPI integrata sul chip ESP-WROOM-32 e non sono consigliati per altri usi. Quindi, non utilizzare questi pin nei tuoi progetti:
- GPIO 6 (SCP/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
GPIO touch capacitivi
L'ESP32 ha 10 sensori touch capacitivi interni. Questi possono rilevare variazioni in qualsiasi cosa che contenga una carica elettrica, come la pelle umana. Quindi possono rilevare variazioni indotte quando si toccano i GPIO con un dito. Questi pin possono essere facilmente integrati in pad capacitivi e sostituire pulsanti meccanici. I pin touch capacitivi possono anche essere utilizzati per riattivare l'ESP32 dal deep sleep. Questi sensori touch interni sono collegati a questi 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)
Convertitore da analogico a digitale (ADC)
L'ESP32 ha 18 canali di input ADC da 12 bit (mentre l'ESP8266 ha solo 1 ADC da 10 bit). Questi sono i GPIO che possono essere utilizzati come ADC e i rispettivi canali:
- 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: I pin ADC2 non possono essere utilizzati quando si utilizza il Wi-Fi. Quindi, se si utilizza il Wi-Fi e si hanno problemi a ottenere il valore da un GPIO ADC2, si può prendere in considerazione l'utilizzo di un GPIO ADC1. Ciò dovrebbe risolvere il problema.
I canali di input ADC hanno una risoluzione di 12 bit. Ciò significa che puoi ottenere letture analogiche che vanno da 0 a 4095, in cui 0 corrisponde a 0 V e 4095 a 3.3 V. Puoi anche impostare la risoluzione dei tuoi canali sul codice e sull'intervallo ADC.
I pin ADC ESP32 non hanno un comportamento lineare. Probabilmente non sarai in grado di distinguere tra 0 e 0.1 V, o tra 3.2 e 3.3 V. Devi tenerlo a mente quando usi i pin ADC. Otterrai un comportamento simile a quello mostrato nella figura seguente.Convertitore digitale-analogico (DAC)
Ci sono 2 canali DAC a 8 bit sull'ESP32 per convertire i segnali digitali in segnali analogicitage uscite di segnale. Questi sono i canali DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIO RTC
L'ESP32 supporta RTC GPIO. I GPIO indirizzati al sottosistema RTC a basso consumo possono essere utilizzati quando l'ESP32 è in modalità deep sleep. Questi RTC GPIO possono essere utilizzati per riattivare l'ESP32 dalla modalità deep sleep quando l'Ultra Low
Il coprocessore Power (ULP) è in esecuzione. I seguenti GPIO possono essere utilizzati come sorgente di wake up esterna.
- 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)
Movimentazione continua
Il controller PWM LED ESP32 ha 16 canali indipendenti che possono essere configurati per generare segnali PWM con proprietà diverse. Tutti i pin che possono fungere da output possono essere utilizzati come pin PWM (i GPIO da 34 a 39 non possono generare PWM).
Per impostare un segnale PWM, è necessario definire questi parametri nel codice:
- Frequenza del segnale;
- Ciclo di lavoro;
- Canale PWM;
- GPIO dove si desidera inviare il segnale.
I2C
L'ESP32 ha due canali I2C e qualsiasi pin può essere impostato come SDA o SCL. Quando si utilizza l'ESP32 con l'IDE Arduino, i pin I2C predefiniti sono:
- GPIO21 (SDA)
- GPIO22 (SCL)
Se si desidera utilizzare altri pin quando si utilizza la libreria wire, è sufficiente chiamare:
Filo.begin(SDA, SCL);
SPI
Per impostazione predefinita, la mappatura dei pin per SPI è:
SPI | MOSI | MISO | Orologio | CS |
VSPI | GPIO23 | GPIO19 | GPIO18 | GPIO5 |
HSPI | GPIO13 | GPIO12 | GPIO14 | GPIO15 |
interrupt
Tutti i GPIO possono essere configurati come interrupt.
Perni di reggiatura
Il chip ESP32 ha i seguenti pin di fissaggio:
- GPIO 0 (deve essere BASSO per entrare in modalità di avvio)
- GPIO 2 (deve essere flottante o BASSO durante l'avvio)
- GPIO4
- GPIO 5 (deve essere ALTO durante l'avvio)
- GPIO 12 (deve essere BASSO durante l'avvio)
- GPIO 15 (deve essere ALTO durante l'avvio)
Questi servono per mettere l'ESP32 in modalità bootloader o flashing. Sulla maggior parte delle schede di sviluppo con USB/seriale integrata, non devi preoccuparti dello stato di questi pin. La scheda mette i pin nello stato corretto per la modalità flashing o boot. Ulteriori informazioni sulla selezione della modalità di avvio ESP32 sono disponibili qui.
Tuttavia, se hai delle periferiche collegate a quei pin, potresti avere problemi a caricare un nuovo codice, a flashare l'ESP32 con un nuovo firmware o a reimpostare la scheda. Se hai delle periferiche collegate ai pin di strapping e hai problemi a caricare il codice o a flashare l'ESP32, potrebbe essere perché quelle periferiche impediscono all'ESP32 di entrare nella modalità corretta. Leggi la documentazione di Boot Mode Selection per orientarti nella giusta direzione. Dopo il reset, il flashing o l'avvio, quei pin funzionano come previsto.
Pin ALTI all'avvio
Alcuni GPIO cambiano il loro stato in HIGH o emettono segnali PWM all'avvio o al ripristino.
Ciò significa che se si hanno uscite collegate a questi GPIO, si potrebbero ottenere risultati inaspettati quando l'ESP32 si ripristina o si avvia.
- GPIO1
- GPIO3
- GPIO5
- Da GPIO 6 a GPIO 11 (collegato alla memoria flash SPI integrata nell'ESP32, se ne sconsiglia l'uso).
- GPIO14
- GPIO15
Abilita (IT)
Enable (EN) è il pin di abilitazione del regolatore da 3.3 V. È attivato, quindi collegalo a terra per disabilitare il regolatore da 3.3 V. Ciò significa che puoi usare questo pin collegato a un pulsante per riavviare il tuo ESP32, ad esempioamplui.
Corrente GPIO assorbita
La corrente massima assoluta assorbita per GPIO è di 40 mA secondo la sezione "Condizioni operative consigliate" nella scheda tecnica dell'ESP32.
Sensore ad effetto Hall integrato ESP32
L'ESP32 è inoltre dotato di un sensore ad effetto Hall integrato che rileva i cambiamenti nel campo magnetico circostante
ESP32 Arduino IDE
Esiste un componente aggiuntivo per l'IDE Arduino che consente di programmare l'ESP32 utilizzando l'IDE Arduino e il suo linguaggio di programmazione. In questo tutorial ti mostreremo come installare la scheda ESP32 nell'IDE Arduino, indipendentemente dal fatto che tu stia utilizzando Windows, Mac OS X o Linux.
Prerequisiti: Arduino IDE installato
Prima di iniziare questa procedura di installazione, devi avere Arduino IDE installato sul tuo computer. Ci sono due versioni di Arduino IDE che puoi installare: versione 1 e versione 2.
Puoi scaricare e installare Arduino IDE cliccando sul seguente link: arduino.cc/it/Principale/Software
Quale versione di Arduino IDE consigliamo? Al momento, ce ne sono alcune plugins per l'ESP32 (come lo SPIFFS FilePlugin Uploader di sistema) che non sono ancora supportati su Arduino 2. Quindi, se intendi utilizzare il plugin SPIFFS in futuro, ti consigliamo di installare la versione legacy 1.8.X. Devi solo scorrere verso il basso nella pagina del software Arduino per trovarla.
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Per installare la scheda ESP32 nel tuo IDE Arduino, segui queste istruzioni:
- Nel tuo IDE Arduino, vai a File> Preferenze
- Inserisci quanto segue nel “Additional Board Manager” URLcampo s”:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Quindi, fare clic sul pulsante "OK":Nota: se hai già le schede ESP8266 URL, puoi separare il file URLs con una virgola come segue:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Apri Boards Manager. Vai su Strumenti > Board > Boards Manager…Cercare ESP32 and press install button for the “ESP32 by Espressif Systems“:
Ecco fatto. Dovrebbe essere installato dopo pochi secondi.
Carica il codice di prova
Collega la scheda ESP32 al tuo computer. Con il tuo IDE Arduino aperto, segui questi passaggi:
- Seleziona la tua scheda nel menu Strumenti > Scheda (nel mio caso è il modulo ESP32 DEV)
- Seleziona la porta (se non vedi la porta COM nel tuo IDE Arduino, devi installare i driver VCP CP210x USB to UART Bridge):
- Aprire il seguente esempioampsotto File > Es.ample > WiFi
(ESP32) > Scansione WiFi - Si apre un nuovo sketch nel tuo IDE Arduino:
- Premi il pulsante Upload nell'IDE Arduino. Attendi qualche secondo mentre il codice viene compilato e caricato sulla tua scheda.
- Se tutto è andato come previsto, dovresti vedere il messaggio "Caricamento completato".
- Aprire il monitor seriale dell'IDE Arduino a una velocità in baud di 115200:
- Premi il pulsante Enable integrato nell'ESP32 e dovresti vedere le reti disponibili vicino al tuo ESP32:
Risoluzione dei problemi
Se provi a caricare un nuovo sketch sul tuo ESP32 e ricevi questo messaggio di errore "Si è verificato un errore fatale: Impossibile connettersi a ESP32: Timeout... Connessione in corso...". Significa che il tuo ESP32 non è in modalità flashing/upload.
Dopo aver selezionato il nome della scheda e la porta COM corretti, seguire questi passaggi:
Tieni premuto il pulsante "BOOT" sulla tua scheda ESP32
- Premi il pulsante "Carica" nell'IDE Arduino per caricare il tuo sketch:
- Dopo aver visualizzato il messaggio "Connessione in corso..." nell'IDE Arduino, rilascia il dito dal pulsante "BOOT":
- Dopodiché dovresti vedere il messaggio "Caricamento completato"
Ecco fatto. Il tuo ESP32 dovrebbe avere il nuovo sketch in esecuzione. Premi il pulsante "ENABLE" per riavviare l'ESP32 ed eseguire il nuovo sketch caricato.
Dovrai ripetere la sequenza di pulsanti ogni volta che vorrai caricare un nuovo schizzo.
Progetto 1 ESP32 Ingressi Uscite
In questa guida introduttiva imparerai come leggere gli input digitali, come un interruttore a pulsante, e controllare gli output digitali, come un LED, utilizzando l'ESP32 con Arduino IDE.
Prerequisiti
Programmeremo l'ESP32 usando Arduino IDE. Quindi, assicurati di aver installato l'add-on ESP32 boards prima di procedere:
- Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Uscite digitali di controllo ESP32
Per prima cosa, devi impostare il GPIO che vuoi controllare come OUTPUT. Usa la funzione pinMode() come segue:
pinMode(GPIO, USCITA);
Per controllare un'uscita digitale è sufficiente utilizzare la funzione digitalWrite(), che accetta come argomenti il GPIO (numero int) a cui si fa riferimento e lo stato, HIGH o LOW.
digitalWrite(GPIO, STATO);
Tutti i GPIO possono essere utilizzati come output, ad eccezione dei GPIO da 6 a 11 (collegati alla flash SPI integrata) e dei GPIO 34, 35, 36 e 39 (GPIO solo di input);
Scopri di più sui GPIO ESP32: Guida di riferimento GPIO ESP32
ESP32 legge gli ingressi digitali
Per prima cosa, imposta il GPIO che vuoi leggere come INPUT, utilizzando la funzione pinMode() come segue:
pinMode(GPIO, INPUT);
Per leggere un input digitale, come un pulsante, si utilizza la funzione digitalRead(), che accetta come argomento il GPIO (numero int) a cui si fa riferimento.
lettura digitale(GPIO);
Tutti i GPIO ESP32 possono essere utilizzati come input, ad eccezione dei GPIO da 6 a 11 (collegati alla flash SPI integrata).
Scopri di più sui GPIO ESP32: Guida di riferimento GPIO ESP32
Progetto Esample
Per mostrarti come utilizzare gli ingressi e le uscite digitali, creeremo un semplice progetto esample con un pulsante e un LED. Leggeremo lo stato del pulsante e accenderemo il LED di conseguenza, come illustrato nella figura seguente.
Parti richieste
Ecco un elenco dei componenti necessari per costruire il circuito:
- ESP32 DEVKIT V1
- LED da 5 mm
- Resistenza da 220 Ohm
- Premi il bottone
- Resistenza da 10kOhm
- Tagliere
- Fili di collegamento
Diagramma schematico
Prima di procedere, è necessario assemblare un circuito con un LED e un pulsante.
Collegheremo il LED al GPIO 5 e il pulsante al GPIO 4.Codice
Aprire il codice Project_1_ESP32_Inputs_Outputs.ino nell'IDE ArduinoCome funziona il codice
Nelle due righe seguenti, crei variabili per assegnare i pin:
Il pulsante è collegato al GPIO 4 e il LED è collegato al GPIO 5. Quando si utilizza l'IDE Arduino con l'ESP32, 4 corrisponde al GPIO 4 e 5 corrisponde al GPIO 5.
Poi, crei una variabile per contenere lo stato del pulsante. Di default, è 0 (non premuto).
int statopulsante = 0;
Nel setup() si inizializza il pulsante come INPUT e il LED come OUTPUT.
Per farlo, si utilizza la funzione pinMode() che accetta il pin a cui si fa riferimento e la modalità: INPUT o OUTPUT.
pinMode(pulsantePin, INPUT);
pinMode(ledPin, USCITA);
Nel loop() è dove si legge lo stato del pulsante e si imposta il LED di conseguenza.
Nella riga successiva, leggi lo stato del pulsante e lo salvi nella variabile buttonState.
Come abbiamo visto in precedenza, si utilizza la funzione digitalRead().
buttonState = digitalRead(buttonPin);
La seguente istruzione if controlla se lo stato del pulsante è HIGH. Se lo è, accende il LED usando la funzione digitalWrite() che accetta come argomento il ledPin e lo stato HIGH.
se (buttonState == HIGH)Se lo stato del pulsante non è HIGH, si spegne il LED. Basta impostare LOW come secondo argomento nella funzione digitalWrite().
Caricamento del codice
Prima di cliccare sul pulsante di caricamento, vai su Strumenti > Scheda e seleziona la scheda: DOIT ESP32 DEVKIT V1.
Vai su Strumenti > Porta e seleziona la porta COM a cui è connesso l'ESP32. Quindi, premi il pulsante di caricamento e attendi il messaggio "Caricamento completato".Nota: se vedi molti punti (connessione…__…__) nella finestra di debug e il messaggio "Impossibile connettersi a ESP32: timeout in attesa dell'intestazione del pacchetto", significa che devi premere il pulsante BOOT integrato nell'ESP32 dopo i punti
iniziano ad apparire.Risoluzione dei problemi
Dimostrazione
Dopo aver caricato il codice, testa il tuo circuito. Il tuo LED dovrebbe accendersi quando premi il pulsante:E disattivalo quando lo rilasci:
Progetto 2 Ingressi analogici ESP32
Questo progetto mostra come leggere gli ingressi analogici con l'ESP32 utilizzando Arduino IDE.
La lettura analogica è utile per leggere i valori da resistori variabili come potenziometri o sensori analogici.
Ingressi analogici (ADC)
Leggere un valore analogico con l'ESP32 significa che è possibile misurare volumi variabilitage livelli compresi tra 0 V e 3.3 V.
il volumetage misurato viene quindi assegnato a un valore compreso tra 0 e 4095, in cui 0 V corrisponde a 0 e 3.3 V corrisponde a 4095. Qualsiasi voltage tra 0 V e 3.3 V verrà assegnato il valore corrispondente intermedio.ADC non è lineare
Idealmente, ci si aspetterebbe un comportamento lineare quando si utilizzano i pin ADC ESP32.
Tuttavia, ciò non accade. Ciò che otterrai è un comportamento come quello mostrato nel seguente grafico:Questo comportamento significa che l'ESP32 non è in grado di distinguere 3.3 V da 3.2 V.
Otterrai lo stesso valore per entrambi i volumitages: 4095.
Lo stesso accade per volumi molto bassitage valori: per 0 V e 0.1 V otterrai lo stesso valore: 0. Devi tenerlo a mente quando usi i pin ADC ESP32.
Funzione analogRead()
Leggere un input analogico con l'ESP32 usando l'IDE Arduino è semplice come usare la funzione analogRead(). Accetta come argomento il GPIO che vuoi leggere:
analogRead(GPIO);
Nella scheda DEVKIT V15 (versione con 1 GPIO) ne sono disponibili solo 30.
Prendi il pinout della tua scheda ESP32 e individua i pin ADC. Questi sono evidenziati con un bordo rosso nella figura sottostante.Questi pin di input analogici hanno una risoluzione di 12 bit. Ciò significa che quando si legge un input analogico, il suo intervallo può variare da 0 a 4095.
Nota: i pin ADC2 non possono essere utilizzati quando si utilizza il Wi-Fi. Quindi, se si utilizza il Wi-Fi e si hanno problemi a ottenere il valore da un GPIO ADC2, si può prendere in considerazione l'utilizzo di un GPIO ADC1, che dovrebbe risolvere il problema.
Per vedere come tutto si collega, faremo un semplice esempioampper leggere un valore analogico da un potenziometro.
Parti richieste
Per questo exampecco, ti servono le seguenti parti:
- Scheda ESP32 DEVKIT V1
- potenziometro
- Tagliere
- Fili di collegamento
Schema
Collega un potenziometro al tuo ESP32. Il pin centrale del potenziometro deve essere collegato al GPIO 4. Puoi usare il seguente schema come riferimento.Codice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Aprire il codice Project_2_ESP32_Inputs_Outputs.ino nell'IDE ArduinoQuesto codice legge semplicemente i valori dal potenziometro e li stampa nel monitor seriale.
Nel codice, si inizia definendo il GPIO a cui è collegato il potenziometro. In questo esempioample, GPIO 4.Nel setup(), inizializza una comunicazione seriale a una velocità in baud di 115200.
Nel loop(), utilizzare la funzione analogRead() per leggere l'input analogico dal potPin.
Infine, stampare i valori letti dal potenziometro sul monitor seriale.
Carica il codice fornito sul tuo ESP32. Assicurati di aver selezionato la scheda e la porta COM corrette nel menu Strumenti.
Testare l'Example
Dopo aver caricato il codice e premuto il pulsante di reset ESP32, apri il Serial Monitor a una velocità in baud di 115200. Ruota il potenziometro e osserva i valori cambiare.Il valore massimo che otterrai è 4095 e il valore minimo è 0.
Conclusione
In questo articolo hai imparato come leggere gli input analogici usando l'ESP32 con l'IDE Arduino. In sintesi:
- La scheda ESP32 DEVKIT V1 DOIT (versione con 30 pin) è dotata di 15 pin ADC che puoi utilizzare per leggere gli ingressi analogici.
- Questi pin hanno una risoluzione di 12 bit, il che significa che è possibile ottenere valori da 0 a 4095.
- Per leggere un valore nell'IDE Arduino, è sufficiente utilizzare la funzione analogRead().
- I pin ADC ESP32 non hanno un comportamento lineare. Probabilmente non sarai in grado di distinguere tra 0 e 0.1 V, o tra 3.2 e 3.3 V. Devi tenerlo a mente quando usi i pin ADC.
Progetto 3 ESP32 PWM (uscita analogica)
In questo tutorial ti mostreremo come generare segnali PWM con ESP32 usando Arduino IDE. Come exampOra realizzeremo un semplice circuito che oscura un LED utilizzando il controller LED PWM dell'ESP32.Controllore PWM LED ESP32
L'ESP32 è dotato di un controller LED PWM con 16 canali indipendenti che possono essere configurati per generare segnali PWM con proprietà diverse.
Ecco i passaggi da seguire per oscurare un LED con PWM utilizzando l'IDE Arduino:
- Per prima cosa, devi scegliere un canale PWM. Ci sono 16 canali da 0 a 15.
- Quindi, devi impostare la frequenza del segnale PWM. Per un LED, una frequenza di 5000 Hz è perfetta da usare.
- Devi anche impostare la risoluzione del duty cycle del segnale: hai risoluzioni da 1 a 16 bit. Useremo una risoluzione a 8 bit, il che significa che puoi controllare la luminosità del LED usando un valore da 0 a 255.
- Successivamente, devi specificare su quale GPIO o GPIO apparirà il segnale. Per farlo, utilizzerai la seguente funzione:
ledcAttachPin(GPIO, canale)
Questa funzione accetta due argomenti. Il primo è il GPIO che emetterà il segnale, e il secondo è il canale che genererà il segnale. - Infine, per controllare la luminosità del LED tramite PWM, si utilizza la seguente funzione:
ledcWrite(canale, ciclo di lavoro)
Questa funzione accetta come argomenti il canale che genera il segnale PWM e il ciclo di lavoro.
Parti richieste
Per seguire questo tutorial hai bisogno di queste parti:
- Scheda ESP32 DEVKIT V1
- 5mm LED
- Resistenza da 220 Ohm
- Tagliere
- Fili di collegamento
Schema
Collega un LED al tuo ESP32 come nel seguente schema. Il LED dovrebbe essere collegato al GPIO 4.Nota: puoi usare qualsiasi pin tu voglia, purché possa fungere da output. Tutti i pin che possono fungere da output possono essere usati come pin PWM. Per maggiori informazioni sui GPIO ESP32, leggi: ESP32 Pinout Reference: Which GPIO pins should you use?
Codice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Aprire il codice Project_3_ESP32_PWM.ino nell'IDE ArduinoSi inizia definendo il pin a cui è collegato il LED. In questo caso il LED è collegato al GPIO 4.
Quindi, imposti le proprietà del segnale PWM. Definisci una frequenza di 5000 Hz, scegli il canale 0 per generare il segnale e imposta una risoluzione di 8 bit. Puoi scegliere altre proprietà, diverse da queste, per generare segnali PWM diversi.
Nel setup(), è necessario configurare LED PWM con le proprietà definite in precedenza utilizzando la funzione ledcSetup() che accetta come argomenti ledChannel, la frequenza e la risoluzione, come segue:
Successivamente, devi scegliere il GPIO da cui otterrai il segnale. Per farlo, usa la funzione ledcAttachPin() che accetta come argomenti il GPIO da cui vuoi ottenere il segnale e il canale che sta generando il segnale. In questo esempioample, otterremo il segnale nel GPIO ledPin, che corrisponde al GPIO 4. Il canale che genera il segnale è il ledChannel, che corrisponde al canale 0.
Nel ciclo, varierai il ciclo di lavoro tra 0 e 255 per aumentare la luminosità del LED.
E poi, tra 255 e 0 per diminuire la luminosità.
Per impostare la luminosità del LED è sufficiente utilizzare la funzione ledcWrite() che accetta come argomenti il canale che genera il segnale e il duty cycle.
Poiché utilizziamo una risoluzione a 8 bit, il duty cycle verrà controllato utilizzando un valore da 0 a 255. Nota che nella funzione ledcWrite() utilizziamo il canale che genera il segnale e non il GPIO.
Testare l'Example
Carica il codice sul tuo ESP32. Assicurati di aver selezionato la scheda e la porta COM corrette. Guarda il tuo circuito. Dovresti avere un LED dimmer che aumenta e diminuisce la luminosità.
Progetto 4 Sensore di movimento PIR ESP32
Questo progetto mostra come rilevare il movimento con l'ESP32 utilizzando un sensore di movimento PIR. Il cicalino emetterà un allarme quando viene rilevato un movimento e interromperà l'allarme quando non viene rilevato alcun movimento per un tempo preimpostato (ad esempio 4 secondi)
Come funziona il sensore di movimento HC-SR501
.Il principio di funzionamento del sensore HC-SR501 si basa sulla variazione della radiazione infrarossa sull'oggetto in movimento. Per essere rilevato dal sensore HC-SR501, l'oggetto deve soddisfare due requisiti:
- L'oggetto emette raggi infrarossi.
- L'oggetto si muove o trema
COSÌ:
Se un oggetto emette raggi infrarossi ma non si muove (ad esempio una persona è ferma senza muoversi), non viene rilevato dal sensore.
Se un oggetto si muove ma non emette raggi infrarossi (ad esempio un robot o un veicolo), NON viene rilevato dal sensore.
Introduzione ai timer
In questo example introdurremo anche i timer. Vogliamo che il LED resti acceso per un numero predeterminato di secondi dopo che è stato rilevato un movimento. Invece di usare una funzione delay() che blocca il tuo codice e non ti consente di fare nient'altro per un numero determinato di secondi, dovremmo usare un timer.La funzione delay()
Dovresti avere familiarità con la funzione delay(), poiché è ampiamente utilizzata. Questa funzione è piuttosto semplice da usare. Accetta un singolo numero int come argomento.
Questo numero rappresenta il tempo in millisecondi che il programma deve attendere prima di passare alla riga di codice successiva.Quando esegui delay(1000) il programma si ferma su quella riga per 1 secondo.
delay() è una funzione di blocco. Le funzioni di blocco impediscono a un programma di fare qualsiasi altra cosa finché quel particolare task non è completato. Se hai bisogno che più task si verifichino contemporaneamente, non puoi usare delay().
Per la maggior parte dei progetti dovresti evitare di usare ritardi e usare invece i timer.
La funzione millis()
Utilizzando la funzione millis() è possibile restituire il numero di millisecondi trascorsi dal primo avvio del programma.Perché questa funzione è utile? Perché usando un po' di matematica, puoi facilmente verificare quanto tempo è passato senza bloccare il tuo codice.
Parti richieste
Per seguire questo tutorial hai bisogno delle seguenti parti
- Scheda ESP32 DEVKIT V1
- Sensore di movimento PIR (HC-SR501)
- Buzzer attivo
- Fili di collegamento
- Tagliere
SchemaNota: Il volume di lavorotage dell'HC-SR501 è 5V. Utilizzare il pin Vin per alimentarlo.
Codice
Prima di procedere con questo tutorial dovresti aver installato l'add-on ESP32 nel tuo Arduino IDE. Segui uno dei seguenti tutorial per installare ESP32 sull'Arduino IDE, se non lo hai già fatto. (Se hai già eseguito questo passaggio, puoi passare al passaggio successivo.)
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Aprire il codice Project_4_ESP32_PIR_Motion_Sensor.ino nell'IDE Arduino.
Dimostrazione
Carica il codice sulla tua scheda ESP32. Assicurati di aver selezionato la scheda e la porta COM corrette. Carica i passaggi di riferimento del codice.
Aprire il monitor seriale a una velocità in baud di 115200.Sposta la mano davanti al sensore PIR. Il cicalino dovrebbe accendersi e sul Serial Monitor viene stampato il messaggio "Movimento rilevato! Allarme cicalino".
Dopo 4 secondi il cicalino dovrebbe spegnersi.
Progetto 5 Interruttore ESP32 Web Server
In questo progetto creerai un'applicazione autonoma web server con un ESP32 che controlla le uscite (due LED) utilizzando l'ambiente di programmazione Arduino IDE. Il web server è mobile responsive e può essere utilizzato con qualsiasi dispositivo che funzioni come browser sulla rete locale. Ti mostreremo come creare il web server e come funziona il codice passo dopo passo.
Progetto finitoview
Prima di passare direttamente al progetto, è importante delineare ciò che il nostro web server, in modo che sia più facile seguire i passaggi successivi.
- IL web il server che costruirai controlla due LED collegati ai GPIO 32 e GPIO 26 dell'ESP27;
- Puoi accedere all'ESP32 web server digitando l'indirizzo IP ESP32 su un browser nella rete locale;
- Cliccando sui pulsanti sul tuo web server è possibile modificare istantaneamente lo stato di ciascun LED.
Parti richieste
Per questo tutorial avrai bisogno dei seguenti componenti:
- Scheda ESP32 DEVKIT V1
- 2x LED da 5 mm
- 2 resistenza da 200 Ohm
- Tagliere
- Fili di collegamento
Schema
Inizia costruendo il circuito. Collega due LED all'ESP32 come mostrato nel seguente diagramma schematico: un LED collegato al GPIO 26 e l'altro al GPIO 27.
Nota: Stiamo utilizzando la scheda ESP32 DEVKIT DOIT con 36 pin. Prima di assemblare il circuito, assicurati di controllare il pinout della scheda che stai utilizzando.Codice
Qui forniamo il codice che crea l'ESP32 web server. Apri il codice Project_5_ESP32_Switch _Web_Server.ino in arduino IDE, ma non caricarlo ancora. Devi apportare alcune modifiche per farlo funzionare per te.
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Impostazione delle credenziali di rete
Devi modificare le seguenti righe con le tue credenziali di rete: SSID e password. Il codice è ben commentato su dove dovresti apportare le modifiche.Caricamento del codice
Ora puoi caricare il codice e il web il server funzionerà immediatamente.
Per caricare il codice sull'ESP32, seguire i passaggi successivi:
- Collega la scheda ESP32 al computer;
- Nell'IDE Arduino seleziona la tua scheda in Strumenti > Scheda (nel nostro caso stiamo utilizzando la scheda ESP32 DEVKIT DOIT);
- Selezionare la porta COM in Strumenti > Porta.
- Premi il pulsante Carica nell'IDE Arduino e attendi qualche secondo mentre il codice viene compilato e caricato sulla scheda.
- Attendi il messaggio "Caricamento completato".
Trovare l'indirizzo IP ESP
Dopo aver caricato il codice, aprire il monitor seriale a una velocità in baud di 115200.Premi il pulsante ESP32 EN (reset). L'ESP32 si connette al Wi-Fi e invia l'indirizzo IP ESP sul Serial Monitor. Copia quell'indirizzo IP, perché ti serve per accedere all'ESP32 web server.
Accesso al Web Server
Per accedere al web server, apri il browser, incolla l'indirizzo IP dell'ESP32 e vedrai la seguente pagina.
Nota: Il browser e l'ESP32 devono essere connessi alla stessa LAN.Se dai un'occhiata al Serial Monitor, puoi vedere cosa sta succedendo sullo sfondo. L'ESP riceve una richiesta HTTP da un nuovo client (in questo caso, il tuo browser).
Puoi anche vedere altre informazioni sulla richiesta HTTP.
Dimostrazione
Ora puoi verificare se il tuo web il server funziona correttamente. Fai clic sui pulsanti per controllare i LED.Allo stesso tempo, puoi dare un'occhiata al Monitor seriale per vedere cosa sta succedendo in background. Ad esempioample, quando fai clic sul pulsante per attivare GPIO 26, ESP32 riceve una richiesta su /26/on URL.
Quando l'ESP32 riceve tale richiesta, accende il LED collegato al GPIO 26 e aggiorna il suo stato sul web pagina.
Il pulsante per GPIO 27 funziona in modo simile. Verifica che funzioni correttamente.
Come funziona il codice
In questa sezione analizzeremo più da vicino il codice per vedere come funziona.
La prima cosa da fare è includere la libreria WiFi.Come accennato in precedenza, è necessario inserire il proprio SSID e la password nelle righe seguenti, tra virgolette doppie.
Quindi, imposti il tuo web server sulla porta 80.
La riga seguente crea una variabile per memorizzare l'intestazione della richiesta HTTP:
Successivamente, crei variabili ausiliarie per memorizzare lo stato corrente dei tuoi output. Se vuoi aggiungere altri output e salvarne lo stato, devi creare altre variabili.
Devi anche assegnare un GPIO a ciascuna delle tue uscite. Qui stiamo usando GPIO 26 e GPIO 27. Puoi usare qualsiasi altro GPIO adatto.
impostare()
Ora, andiamo nel setup(). Per prima cosa, avviamo una comunicazione seriale a una velocità in baud di 115200 per scopi di debug.Definisci anche i tuoi GPIO come OUTPUT e impostali su LOW.
Le righe seguenti avviano la connessione Wi-Fi con WiFi.begin(ssid, password), attendono una connessione riuscita e stampano l'indirizzo IP ESP nel monitor seriale.
ciclo continuo()
Nel loop() programmiamo cosa succede quando un nuovo client stabilisce una connessione con il web server.
L'ESP32 è sempre in ascolto dei client in arrivo con la seguente riga:Quando si riceve una richiesta da un client, salveremo i dati in arrivo. Il ciclo while che segue sarà in esecuzione finché il client rimane connesso. Non consigliamo di modificare la parte seguente del codice a meno che non si sappia esattamente cosa si sta facendo.
La sezione successiva delle istruzioni if ed else controlla quale pulsante è stato premuto nel tuo web pagina, e controlla gli output di conseguenza. Come abbiamo visto in precedenza, facciamo una richiesta su diversi URLa seconda del pulsante premuto.
Per esempioample, se hai premuto il pulsante GPIO 26 ON, l'ESP32 riceve una richiesta sul /26/ON URL (possiamo vedere che queste informazioni sono nell'intestazione HTTP sul Serial Monitor). Quindi, possiamo controllare se l'intestazione contiene l'espressione GET /26/on. Se contiene, cambiamo la variabile output26state in ON e l'ESP32 accende il LED.
Funziona in modo simile per gli altri pulsanti. Quindi, se vuoi aggiungere più output, dovresti modificare questa parte del codice per includerli.
Visualizzazione dell'HTML web pagina
La prossima cosa che devi fare è creare il web pagina. L'ESP32 invierà una risposta al tuo browser con del codice HTML per costruire la web pagina.
IL web la pagina viene inviata al client usando questo expressing client.println(). Dovresti inserire cosa vuoi inviare al client come argomento.
La prima cosa che dovremmo inviare è sempre la riga seguente, che indica che stiamo inviando HTML.Quindi, la seguente riga rende il web pagina reattiva in qualsiasi web browser.
E quanto segue viene utilizzato per impedire richieste sulla favicon. – Non devi preoccuparti di questa riga.
Stile del Web Pagina
Successivamente, abbiamo del testo CSS per definire lo stile dei pulsanti e web aspetto della pagina.
Scegliamo il font Helvetica, definiamo il contenuto da visualizzare come un blocco e lo allineiamo al centro.Diamo uno stile ai nostri pulsanti con il colore #4CAF50, senza bordo, testo in bianco e con questa spaziatura: 16px 40px. Impostiamo anche text-decoration su none, definiamo la dimensione del carattere, il margine e il cursore su un puntatore.
Definiamo anche lo stile per un secondo pulsante, con tutte le proprietà del pulsante che abbiamo definito in precedenza, ma con un colore diverso. Questo sarà lo stile per il pulsante off.
Impostazione del Web Pagina prima intestazione
Nella riga successiva puoi impostare la prima intestazione del tuo web pagina. Qui abbiamo “ESP32 Web Server", ma puoi modificare questo testo come preferisci.Visualizzazione dei pulsanti e dello stato corrispondente
Poi, scrivi un paragrafo per visualizzare lo stato attuale del GPIO 26. Come puoi vedere, utilizziamo la variabile output26State, in modo che lo stato si aggiorni istantaneamente quando questa variabile cambia.Quindi, visualizziamo il pulsante on o off, a seconda dello stato corrente del GPIO. Se lo stato corrente del GPIO è off, visualizziamo il pulsante ON, altrimenti visualizziamo il pulsante OFF.
Utilizziamo la stessa procedura per GPIO 27.
Chiusura della connessione
Infine, quando la risposta termina, cancelliamo la variabile di intestazione e interrompiamo la connessione con il client con client.stop().
Conclusione
In questo tutorial ti abbiamo mostrato come costruire un web server con ESP32. Vi abbiamo mostrato un semplice esempioample che controlla due LED, ma l'idea è di sostituire quei LED con un relè o qualsiasi altra uscita che si desidera controllare.
Progetto 6 RGB LED Web Server
In questo progetto ti mostreremo come controllare da remoto un LED RGB con una scheda ESP32 utilizzando un web server con selettore colore.
Progetto finitoview
Prima di iniziare, vediamo come funziona questo progetto:
- L'ESP32 web il server visualizza un selettore colore.
- Quando scegli un colore, il tuo browser effettua una richiesta su un URL che contiene i parametri R, G e B del colore selezionato.
- L'ESP32 riceve la richiesta e suddivide il valore per ciascun parametro colore.
- Quindi invia un segnale PWM con il valore corrispondente ai GPIO che controllano il LED RGB.
Come funzionano i LED RGB?
In un LED RGB a catodo comune, tutti e tre i LED condividono una connessione negativa (catodo). Tutti i LED inclusi nel kit sono RGB a catodo comune.Come creare colori diversi?
Con un LED RGB puoi, naturalmente, produrre luce rossa, verde e blu e, configurando l'intensità di ciascun LED, puoi produrre anche altri colori.
Per esempioample, per produrre pura luce blu, imposteresti il LED blu alla massima intensità e i LED verde e rosso alla minima intensità. Per una luce bianca, imposteresti tutti e tre i LED alla massima intensità.
Mescolare i colori
Per produrre altri colori, puoi combinare i tre colori in diverse intensità. Per regolare l'intensità di ogni LED puoi usare un segnale PWM.
Poiché i LED sono molto vicini tra loro, i nostri occhi vedono il risultato della combinazione dei colori, anziché i tre colori singolarmente.
Per avere un'idea di come abbinare i colori, date un'occhiata alla seguente tabella.
Questa è la tabella di miscelazione dei colori più semplice, ma fornisce un'idea di come funziona e di come produrre colori diversi.Parti richieste
Per questo progetto sono necessari i seguenti componenti:
- Scheda ESP32 DEVKIT V1
- LED RGB
- 3 resistenze da 220 ohm
- Fili di collegamento
- Tagliere
SchemaCodice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
- Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Dopo aver assemblato il circuito, apri il codice
Progetto_6_RGB_LED_Web_Server.ino nell'IDE Arduino.
Prima di caricare il codice, non dimenticare di inserire le credenziali di rete in modo che l'ESP possa connettersi alla tua rete locale.Come funziona il codice
Lo sketch ESP32 utilizza la libreria WiFi.h.Le righe seguenti definiscono le variabili stringa per contenere i parametri R, G e B dalla richiesta.
Le quattro variabili successive vengono utilizzate per decodificare in seguito la richiesta HTTP.
Crea tre variabili per i GPIO che controlleranno i parametri R, G e B della striscia. In questo caso stiamo usando GPIO 13, GPIO 12 e GPIO 14.
Questi GPIO devono emettere segnali PWM, quindi dobbiamo prima configurare le proprietà PWM. Imposta la frequenza del segnale PWM a 5000 Hz. Quindi, associa un canale PWM per ogni colore
E infine, imposta la risoluzione dei canali PWM a 8 bit
Nel setup(), assegna le proprietà PWM ai canali PWM
Collegare i canali PWM ai GPIO corrispondenti
La seguente sezione di codice visualizza il selettore colore nel tuo web pagina e fa una richiesta in base al colore che hai scelto.
Quando scegli un colore, ricevi una richiesta con il seguente formato.
Quindi, dobbiamo dividere questa stringa per ottenere i parametri R, G e B. I parametri vengono salvati nelle variabili redString, greenString e blueString e possono avere valori compresi tra 0 e 255.Per controllare la striscia con ESP32, utilizzare la funzione ledcWrite() per generare segnali PWM con i valori decodificati dall'HTTP richiesta.
Nota: Scopri di più su PWM con ESP32: Progetto 3 ESP32 PWM (uscita analogica)
Per controllare la striscia con l'ESP8266, dobbiamo solo usare
la funzione analogWrite() per generare segnali PWM con i valori decodificati dalla richiesta HTPP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Poiché otteniamo i valori in una variabile stringa, dobbiamo convertirli in numeri interi utilizzando il metodo toInt().
Dimostrazione
Dopo aver inserito le credenziali di rete, seleziona la scheda e la porta COM corrette e carica il codice sul tuo ESP32. Carica i passaggi di riferimento del codice.
Dopo l'upload, apri il Serial Monitor a una velocità in baud di 115200 e premi il pulsante ESP Enable/Reset. Dovresti ottenere l'indirizzo IP della scheda.Apri il tuo browser e inserisci l'indirizzo IP ESP. Ora, usa il selettore colore per scegliere un colore per il LED RGB.
Quindi, è necessario premere il pulsante "Cambia colore" affinché il colore abbia effetto.Per spegnere il LED RGB, selezionare il colore nero.
I colori più forti (nella parte superiore del selettore colori) sono quelli che produrranno risultati migliori.
Progetto 7 ESP32 Relay Web Server
Utilizzare un relè con l'ESP32 è un ottimo modo per controllare gli elettrodomestici AC da remoto. Questo tutorial spiega come controllare un modulo relè con l'ESP32.
Daremo un'occhiata al funzionamento di un modulo relè, a come collegare il relè all'ESP32 e a come costruirne uno web server per controllare un relè da remoto.
Introduzione ai relè
Un relè è un interruttore azionato elettricamente e, come qualsiasi altro interruttore, può essere acceso o spento, lasciando passare la corrente o meno. Può essere controllato con bassa voltages, come i 3.3 V forniti dai GPIO ESP32 e ci consentono di controllare alti volumitagcome 12V, 24V o tensione di retetage (230 V in Europa e 120 V negli Stati Uniti).Sul lato sinistro, ci sono due serie di tre prese per collegare l'alto volumetages, e i pin sul lato destro (basso volumetage) connettersi ai GPIO ESP32.
Volume di retetage ConnessioniIl modulo relè mostrato nella foto precedente ha due connettori, ciascuno con tre prese: comune (COM), normalmente chiuso (NC) e normalmente aperto (NO).
- COM: collega la corrente che vuoi controllare (tensione di retetagE).
- NC (Normalmente chiuso): la configurazione normalmente chiusa viene utilizzata quando si desidera che il relè sia chiuso per impostazione predefinita. I pin NC sono COM collegati, il che significa che la corrente scorre a meno che non si invii un segnale dall'ESP32 al modulo relè per aprire il circuito e interrompere il flusso di corrente.
- NO (normalmente aperto): la configurazione normalmente aperta funziona al contrario: non c'è connessione tra i pin NO e COM, quindi il circuito è interrotto a meno che non si invii un segnale dall'ESP32 per chiuderlo.
Pin di controlloIl basso volumetagIl lato ha un set di quattro pin e un set di tre pin. Il primo set è composto da VCC e GND per alimentare il modulo, e input 1 (IN1) e input 2 (IN2) per controllare rispettivamente i relè inferiore e superiore.
Se il tuo modulo relè ha un solo canale, avrai un solo pin IN. Se hai quattro canali, avrai quattro pin IN e così via.
Il segnale che invii ai pin IN determina se il relè è attivo o meno. Il relè viene attivato quando l'input scende sotto circa 2V. Ciò significa che avrai i seguenti scenari:
- Configurazione normalmente chiusa (NC):
- Segnale ALTO – la corrente scorre
- Segnale BASSO: la corrente non scorre
- Configurazione normalmente aperta (NO):
- Segnale ALTO: la corrente non scorre
- Segnale BASSO – corrente in flusso
Si dovrebbe usare una configurazione normalmente chiusa quando la corrente deve scorrere per la maggior parte del tempo e si desidera interromperla solo occasionalmente.
Utilizzare una configurazione normalmente aperta quando si desidera che la corrente scorra occasionalmente (ad esempioample, accendi tuttoamp occasionalmente).
Selezione dell'alimentazioneIl secondo set di pin è costituito dai pin GND, VCC e JD-VCC.
Il pin JD-VCC alimenta l'elettromagnete del relè. Nota che il modulo ha un cappuccio jumper che collega i pin VCC e JD-VCC; quello mostrato qui è giallo, ma il tuo potrebbe essere di un colore diverso.
Con il cappuccio del jumper inserito, i pin VCC e JD-VCC sono collegati. Ciò significa che l'elettromagnete del relè è alimentato direttamente dal pin di alimentazione dell'ESP32, quindi il modulo relè e i circuiti dell'ESP32 non sono fisicamente isolati l'uno dall'altro.
Senza il jumper cap, è necessario fornire una fonte di alimentazione indipendente per alimentare l'elettromagnete del relè tramite il pin JD-VCC. Questa configurazione isola fisicamente i relè dall'ESP32 con l'optoaccoppiatore integrato del modulo, che impedisce danni all'ESP32 in caso di picchi elettrici.
SchemaAvvertimento: Utilizzo di alto volumetagGli alimentatori possono causare gravi lesioni.
Pertanto, vengono utilizzati LED da 5 mm al posto di quelli ad alta tensione di alimentazionetage lampadine nell'esperimento. Se non hai familiarità con la tensione di retetage chiedi a qualcuno che può aiutarti. Mentre programmi l'ESP o cabli il tuo circuito assicurati che tutto sia scollegato dalla rete elettricatage.Installazione della libreria per ESP32
Per costruire questo web server, utilizziamo ESPAsyncWebLibreria server e libreria AsyncTCP.
Installazione di ESPAsyncWebLibreria del server
Segui i passaggi successivi per installare il Sincronizzazione ESPAWebServer biblioteca:
- Clicca qui per scaricare ESPAsyncWebLibreria server. Dovresti avere
una cartella .zip nella cartella Download - Decomprimi la cartella .zip e dovresti ottenere ESPAsyncWebCartella server-master
- Rinomina la tua cartella da ESPAsyncWebServer-master per ESPAsyncWebServer
- Spostare ESPAsyncWebCartella del server nella cartella delle librerie di installazione dell'IDE Arduino
In alternativa, nel tuo IDE Arduino, puoi andare su Sketch > Includi
Libreria > Aggiungi libreria .ZIP… e seleziona la libreria che hai appena scaricato.
Installazione della libreria AsyncTCP per ESP32
IL Sincronizzazione ESPAWebServer la biblioteca richiede la AsincronoTCP biblioteca per lavorare. Segui
i prossimi passi per installare quella libreria:
- Fai clic qui per scaricare la libreria AsyncTCP. Dovresti avere una cartella .zip nella tua cartella Downloads
- Decomprimi la cartella .zip e dovresti ottenere la cartella AsyncTCP-master
1. Rinomina la tua cartella da AsyncTCP-master ad AsyncTCP
3. Sposta la cartella AsyncTCP nella cartella delle librerie di installazione dell'IDE Arduino
4. Infine, riapri il tuo IDE Arduino
In alternativa, nel tuo IDE Arduino, puoi andare su Sketch > Includi
Libreria > Aggiungi libreria .ZIP… e seleziona la libreria che hai appena scaricato.
Codice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Dopo aver installato le librerie richieste, aprire il codice Project_7_ESP32_Relay_Web_Server.ino nell'IDE Arduino.
Prima di caricare il codice, non dimenticare di inserire le credenziali di rete in modo che l'ESP possa connettersi alla tua rete locale.Dimostrazione
Dopo aver apportato le modifiche necessarie, carica il codice nei passaggi di riferimento del codice ESP32.Upload.
Aprire il monitor seriale a una velocità in baud di 115200 e premere il pulsante ESP32 EN per ottenere il suo indirizzo IP. Quindi, aprire un browser nella rete locale e digitare l'indirizzo IP ESP32 per accedere a web server.
Aprire il monitor seriale a una velocità in baud di 115200 e premere il pulsante ESP32 EN per ottenere il suo indirizzo IP. Quindi, aprire un browser nella rete locale e digitare l'indirizzo IP ESP32 per accedere a web server.Nota: Il browser e l'ESP32 devono essere connessi alla stessa LAN.
Dovresti ottenere qualcosa del genere, con due pulsanti quanti sono i relè definiti nel codice.Ora puoi usare i pulsanti per controllare i tuoi relè tramite il tuo smartphone.
Progetto_8_Sincronizzazione_dello_stato_di_output_ Web_Server
Questo progetto mostra come controllare le uscite ESP32 o ESP8266 utilizzando un web server e un pulsante fisico contemporaneamente. Lo stato di output viene aggiornato sul web pagina se viene modificata tramite pulsante fisico o web server.
Progetto finitoview
Diamo un'occhiata veloce al funzionamento del progetto.L'ESP32 o ESP8266 ospita un web server che consente di controllare lo stato di un output;
- Lo stato di uscita corrente viene visualizzato su web server;
- L'ESP è anche collegato a un pulsante fisico che controlla la stessa uscita;
- Se si modifica lo stato dell'output utilizzando il pulsante fisico, anche il suo stato corrente viene aggiornato sul web server.
In sintesi, questo progetto consente di controllare lo stesso output utilizzando un web server e un pulsante contemporaneamente. Ogni volta che cambia lo stato di output, il web il server è aggiornato.
Parti richieste
Ecco un elenco dei componenti necessari per costruire il circuito:
- Scheda ESP32 DEVKIT V1
- LED da 5 mm
- Resistenza da 220 Ohm
- Premi il bottone
- Resistenza da 10kOhm
- Tagliere
- Fili di collegamento
SchemaInstallazione della libreria per ESP32
Per costruire questo web server, utilizziamo ESPAsyncWebLibreria server e libreria AsyncTCP. (Se hai già eseguito questo passaggio, puoi passare al passaggio successivo.)
Installazione di ESPAsyncWebLibreria del server
Segui i passaggi successivi per installare ESPAsyncWebLibreria server:
- Clicca qui per scaricare ESPAsyncWebLibreria server. Dovresti avere
una cartella .zip nella cartella Download - Decomprimi la cartella .zip e dovresti ottenere ESPAsyncWebCartella server-master
- Rinomina la tua cartella da ESPAsyncWebServer-master per ESPAsyncWebServer
- Spostare ESPAsyncWebCartella del server nella cartella delle librerie di installazione dell'IDE Arduino
In alternativa, nel tuo IDE Arduino, puoi andare su Sketch > Includi
Libreria > Aggiungi libreria .ZIP… e seleziona la libreria che hai appena scaricato.
Installazione della libreria AsyncTCP per ESP32
L'ESPAsyncWebLa libreria server richiede la libreria AsyncTCP per funzionare. Segui i passaggi successivi per installare quella libreria:
- Fai clic qui per scaricare la libreria AsyncTCP. Dovresti avere una cartella .zip nella tua cartella Downloads
- Decomprimi la cartella .zip e dovresti ottenere la cartella AsyncTCP-master
- Rinomina la tua cartella da AsyncTCP-master ad AsyncTCP
- Sposta la cartella AsyncTCP nella cartella delle librerie di installazione dell'IDE Arduino
- Infine, riapri il tuo IDE Arduino
In alternativa, nel tuo IDE Arduino, puoi andare su Sketch > Includi
Libreria > Aggiungi libreria .ZIP… e seleziona la libreria che hai appena scaricato.
Codice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Dopo aver installato le librerie richieste, apri il codice
Progetto_8_Sincronizzazione_dello_stato_di_output_Web_Server.ino nell'IDE Arduino.
Prima di caricare il codice, non dimenticare di inserire le credenziali di rete in modo che l'ESP possa connettersi alla tua rete locale.
Come funziona il codice
Stato del pulsante e stato dell'output
La variabile ledState contiene lo stato di output del LED. Per impostazione predefinita, quando web all'avvio del server, è BASSO.
buttonState e lastButtonState vengono utilizzati per rilevare se il pulsante è stato premuto o meno.Pulsante (web server)
Non abbiamo incluso l'HTML per creare il pulsante nella variabile index_html.
Questo perché vogliamo poterlo modificare in base allo stato attuale del LED, che può essere modificato anche tramite il pulsante.
Abbiamo quindi creato un segnaposto per il pulsante %BUTTONPLACEHOLDER% che verrà sostituito con del testo HTML per creare il pulsante in seguito nel codice (ciò avviene nella funzione processor()).processore()
La funzione processor() sostituisce tutti i segnaposto nel testo HTML con valori effettivi. Innanzitutto, controlla se i testi HTML contengono
segnaposto %BUTTONPLACEHOLDER%.Quindi, chiama la funzione outputState() che restituisce lo stato di output corrente. Lo salviamo nella variabile outputStateValue.
Dopodiché, utilizza quel valore per creare il testo HTML per visualizzare il pulsante con lo stato corretto:
Richiesta HTTP GET per modificare lo stato di output (JavaScript)
Quando si preme il pulsante, viene chiamata la funzione toggleCheckbox(). Questa funzione effettuerà una richiesta su diversi URLs per accendere o spegnere il LED.Per accendere il LED, effettua una richiesta su /update?state=1 URL:
Altrimenti, effettua una richiesta su /update?state=0 URL.
Richiesta HTTP GET per aggiornare lo stato (JavaScript)
Per mantenere aggiornato lo stato dell'output su web server, chiamiamo la seguente funzione che effettua una nuova richiesta sullo /state URL ogni secondo.Gestire le richieste
Quindi, dobbiamo gestire cosa succede quando ESP32 o ESP8266 riceve richieste su questi URLs.
Quando viene ricevuta una richiesta sulla radice /URL, inviamo sia la pagina HTML che il processore.Le seguenti righe verificano se hai ricevuto una richiesta su /update?state=1 o /update?state=0 URL e modifica di conseguenza ledState.
Quando viene ricevuta una richiesta sullo /stato URL, inviamo lo stato di output corrente:
ciclo continuo()
Nel loop(), rimbalziamo il pulsante e accendiamo o spegniamo il LED a seconda del valore di ledState variabile.Dimostrazione
Carica il codice sulla tua scheda ESP32. Carica i passaggi di riferimento del codice.
Quindi, aprire il monitor seriale a una velocità in baud di 115200. Premere il pulsante EN/RST integrato per ottenere l'indirizzo IP.Apri un browser sulla tua rete locale e digita l'indirizzo IP ESP. Dovresti avere accesso a web server come mostrato di seguito.
Nota: Il browser e l'ESP32 devono essere connessi alla stessa LAN.È possibile attivare/disattivare il pulsante su web server per accendere il LED.
Puoi anche controllare lo stesso LED con il pulsante fisico. Il suo stato verrà sempre aggiornato automaticamente sul web server.
Progetto 9 ESP32 DHT11 Web Server
In questo progetto imparerai come costruire un ESP32 asincrono web server con DHT11 che visualizza temperatura e umidità utilizzando Arduino IDE.
Prerequisiti
IL web il server che creeremo aggiornerà le letture automaticamente senza la necessità di aggiornare il web pagina.
Con questo progetto imparerai:
- Come leggere la temperatura e l'umidità dai sensori DHT;
- Costruisci un asincrono web server che utilizza il Sincronizzazione ESPAWebLibreria del server;
- Aggiorna automaticamente le letture del sensore senza la necessità di aggiornare il web pagina.
Asincrono Web Server
Per costruire il web server useremo il Sincronizzazione ESPAWebLibreria del server che fornisce un modo semplice per costruire un asincrono web server. Creazione di un server asincrono web il server ha diversi vantaggitagcome menzionato nella pagina GitHub della biblioteca, come:
- “Gestire più di una connessione contemporaneamente”;
- "Quando invii la risposta, sei immediatamente pronto a gestire altre connessioni mentre il server si occupa di inviare la risposta in background";
- “Semplice motore di elaborazione dei template per gestire i template”;
Parti richieste
Per completare questo tutorial sono necessarie le seguenti parti:
- Scheda di sviluppo ESP32
- Modulo DHT11
- Tagliere
- Fili di collegamento
SchemaInstallazione delle librerie
Per questo progetto è necessario installare un paio di librerie:
- IL DHT e il Sensore unificato Adafruit Librerie driver per la lettura dal sensore DHT.
- Sincronizzazione ESPAWebServer E TCP asincrono librerie per costruire l'asincrono web server.
Per installare queste librerie, seguire le seguenti istruzioni:
Installazione della libreria del sensore DHT
Per leggere dal sensore DHT utilizzando Arduino IDE, è necessario installare Libreria di sensori DHTPer installare la libreria, seguire i passaggi successivi.
- Fai clic qui per scaricare la libreria DHT Sensor. Dovresti avere una cartella .zip nella cartella Downloads
- Decomprimi la cartella .zip e dovresti ottenere la cartella DHT-sensor-library-master
- Rinomina la tua cartella da DHT-sensor-library-master a DHT_sensor
- Sposta la cartella DHT_sensor nella cartella delle librerie di installazione dell'IDE Arduino
- Infine, riapri il tuo IDE Arduino
Installazione del driver del sensore unificato Adafruit
È inoltre necessario installare il Libreria driver sensore unificato Adafruit per lavorare con il sensore DHT. Segui i passaggi successivi per installare la libreria.
- Fai clic qui per scaricare la libreria Adafruit Unified Sensor. Dovresti avere una cartella .zip nella cartella Downloads
- Decomprimi la cartella .zip e dovresti ottenere la cartella Adafruit_sensor-master
- Rinomina la tua cartella da Adafruit_sensor-master a Adafruit_sensor
- Sposta la cartella Adafruit_sensor nella cartella delle librerie di installazione dell'IDE Arduino
- Infine, riapri il tuo IDE Arduino
Installazione di ESPAsyncWebLibreria del server
Segui i passaggi successivi per installare il Sincronizzazione ESPAWebServer biblioteca:
- Clicca qui per scaricare ESPAsyncWebLibreria server. Dovresti avere
una cartella .zip nella cartella Download - Decomprimi la cartella .zip e dovresti
Ottieni ESPAsyncWebCartella server-master - Rinomina la tua cartella da ESPAsyncWebServer-master per ESPAsyncWebServer
- Spostare ESPAsyncWebCartella del server nella cartella delle librerie di installazione dell'IDE Arduino
Installazione della libreria TCP asincrona per ESP32
IL Sincronizzazione ESPAWebServer la biblioteca richiede la AsincronoTCP libreria per funzionare. Segui i passaggi successivi per installare quella libreria:
- Fai clic qui per scaricare la libreria AsyncTCP. Dovresti avere una cartella .zip nella tua cartella Downloads
- Decomprimi la cartella .zip e dovresti ottenere la cartella AsyncTCP-master
- Rinomina la tua cartella da AsyncTCP-master ad AsyncTCP
- Sposta la cartella AsyncTCP nella cartella delle librerie di installazione dell'IDE Arduino
- Infine, riapri il tuo IDE Arduino
Codice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo).
Installazione del componente aggiuntivo ESP32 nell'IDE Arduino
Dopo aver installato le librerie richieste, apri il codice
Progetto_9_ESP32_DHT11_Web_Server.ino nell'IDE Arduino.
Prima di caricare il codice, non dimenticare di inserire le credenziali di rete in modo che l'ESP possa connettersi alla tua rete locale.Come funziona il codice
Nei paragrafi seguenti spiegheremo come funziona il codice. Continua a leggere se vuoi saperne di più o passa alla sezione Dimostrazione per vedere il risultato finale.
Importazione di librerie
Per prima cosa, importa le librerie richieste. WiFi, ESPAsyncWebIl server e l'ESPAsyncTCP sono necessari per costruire il web server. Le librerie Adafruit_Sensor e DHT sono necessarie per leggere dai sensori DHT11 o DHT22.Definizione delle variabili
Definisci il GPIO a cui è collegato il pin dati DHT. In questo caso, è collegato al GPIO 4.Quindi, seleziona il tipo di sensore DHT che stai utilizzando. Nel nostro esempioample, stiamo usando il DHT22. Se stai usando un altro tipo, devi solo togliere il commento al tuo sensore e commentare tutti gli altri.
Crea un'istanza di un oggetto DHT con il tipo e il pin definiti in precedenza.Crea un AsyncWebOggetto server sulla porta 80.
Leggi le funzioni di temperatura e umidità
Abbiamo creato due funzioni: una per leggere la temperatura (readDHTTemperature()) e l'altra per leggere l'umidità (readDHTHumidity()).Ottenere le letture dei sensori è semplice come usare i metodi readTemperature() e readHumidity() sull'oggetto dht.
Abbiamo anche una condizione che restituisce due trattini (–) nel caso in cui il sensore non riesca a ottenere le letture.
Le letture vengono restituite come tipo stringa. Per convertire un float in una stringa, utilizzare la funzione String()
Di default, stiamo leggendo la temperatura in gradi Celsius. Per ottenere la temperatura in gradi Fahrenheit, commenta la temperatura in gradi Celsius e rimuovi il commento dalla temperatura in gradi Fahrenheit, in modo da avere quanto segue:
Carica il codice
Ora, carica il codice sul tuo ESP32. Assicurati di aver selezionato la scheda e la porta COM corrette. Carica i passaggi di riferimento del codice.
Dopo l'upload, apri Serial Monitor a una velocità in baud di 115200. Premi il pulsante di reset ESP32. L'indirizzo IP ESP32 dovrebbe essere stampato nel seriale monitorare.Dimostrazione
Apri un browser e digita l'indirizzo IP ESP32. Il tuo web il server dovrebbe visualizzare le ultime letture dei sensori.
Nota: Il browser e l'ESP32 devono essere connessi alla stessa LAN.
Si noti che le letture della temperatura e dell'umidità vengono aggiornate automaticamente senza la necessità di aggiornare il web pagina.
Progetto_10_ESP32_Display_OLED
Questo progetto mostra come utilizzare il display OLED SSD0.96 da 1306 pollici con ESP32 tramite Arduino IDE.
Presentazione del display OLED da 0.96 pollici
IL Schermo OLED Il modello che utilizzeremo in questo tutorial è SSD1306: un display monocromatico da 0.96 pollici con 128×64 pixel, come mostrato nella figura seguente.Il display OLED non necessita di retroilluminazione, il che si traduce in un contrasto molto gradevole in ambienti bui. Inoltre, i suoi pixel consumano energia solo quando sono accesi, quindi il display OLED consuma meno energia rispetto ad altri display.
Poiché il display OLED utilizza il protocollo di comunicazione I2C, il cablaggio è molto semplice. È possibile utilizzare la seguente tabella come riferimento.
Perno OLED | ESP32 |
Vino | 3.3V |
Terra | Terra |
SCL | GPIO22 |
SDA | GPIO21 |
SchemaInstallazione della libreria OLED SSD1306 – ESP32
Sono disponibili diverse librerie per controllare il display OLED con ESP32.
In questo tutorial utilizzeremo due librerie Adafruit: Libreria Adafruit_SSD1306 E Libreria Adafruit_GFX.
Per installare queste librerie, seguire i passaggi successivi.
- Apri il tuo IDE Arduino e vai su Sketch > Include Library > Manage Libraries. Il Library Manager dovrebbe aprirsi.
- Digitare “SSD1306” nella casella di ricerca e installare la libreria SSD1306 di Adafruit.
- Dopo aver installato la libreria SSD1306 di Adafruit, digitare "GFX" nella casella di ricerca e installare la libreria.
- Dopo aver installato le librerie, riavvia l'IDE Arduino.
Codice
Dopo aver installato le librerie richieste, aprire il Project_10_ESP32_OLED_Display.ino nell'IDE Arduino. codice
Programmeremo l'ESP32 utilizzando Arduino IDE, quindi assicurati di aver installato il componente aggiuntivo ESP32 prima di procedere: (se hai già eseguito questo passaggio, puoi passare direttamente al passaggio successivo.)
Installazione del componente aggiuntivo ESP32 nell'IDE ArduinoCome funziona il codice
Importazione di librerie
Per prima cosa, devi importare le librerie necessarie. La libreria Wire per usare I2C e le librerie Adafruit per scrivere sul display: Adafruit_GFX e Adafruit_SSD1306.Inizializza il display OLED
Quindi, definisci la larghezza e l'altezza del tuo OLED. In questo esempioample, stiamo usando un display OLED 128×64. Se stai usando altre dimensioni, puoi cambiarle nelle variabili SCREEN_WIDTH e SCREEN_HEIGHT.Quindi, inizializzare un oggetto di visualizzazione con la larghezza e l'altezza definite in precedenza con il protocollo di comunicazione I2C (&Wire).
Il parametro (-1) significa che il tuo display OLED non ha un pin RESET. Se il tuo display OLED ha un pin RESET, dovrebbe essere collegato a un GPIO. In tal caso, dovresti passare il numero GPIO come parametro.
Nel setup(), inizializza il monitor seriale a una velocità di 115200 baud per scopi di debug.Inizializzare il display OLED con il metodo begin() come segue:
Questo frammento stampa anche un messaggio sul monitor seriale, nel caso in cui non riuscissimo a connetterci al display.
Nel caso in cui si utilizzi un display OLED diverso, potrebbe essere necessario modificare l'indirizzo OLED. Nel nostro caso, l'indirizzo è 0x3C.
Dopo aver inizializzato il display, aggiungere un ritardo di due secondi, in modo che l'OLED abbia abbastanza tempo per inizializzarsi prima di scrivere il testo:
Display chiaro, imposta dimensione carattere, colore e scrivi testo
Dopo aver inizializzato il display, cancellare il buffer di visualizzazione con il metodo clearDisplay():
Prima di scrivere il testo, è necessario impostare la dimensione del testo, il colore e la posizione in cui verrà visualizzato sull'OLED.
Imposta la dimensione del carattere utilizzando il metodo setTextSize():Imposta il colore del carattere con il metodo setTextColor():
BIANCO imposta il carattere bianco e lo sfondo nero.
Definisci la posizione in cui inizia il testo usando il metodo setCursor(x,y). In questo caso, stiamo impostando il testo in modo che inizi alle coordinate (0,0), nell'angolo in alto a sinistra.Infine, puoi inviare il testo al display utilizzando il metodo println(), come segue
Quindi, è necessario chiamare il metodo display() per visualizzare effettivamente il testo sullo schermo.
La libreria OLED di Adafruit fornisce metodi utili per scorrere facilmente il testo.
- startscrollright(0x00, 0x0F): scorre il testo da sinistra a destra
- startscrollleft(0x00, 0x0F): scorre il testo da destra a sinistra
- startscrolldiagright(0x00, 0x07): scorre il testo dall'angolo in basso a sinistra all'angolo in alto a destra startscrolldiagleft(0x00, 0x07): scorre il testo dall'angolo in basso a destra all'angolo in alto a sinistra
Carica il codice
Ora carica il codice nei passaggi di riferimento del codice ESP32.Upload.
Dopo aver caricato il codice, l'OLED visualizzerà del testo scorrevole.
Documenti / Risorse
![]() |
Kit di base per principianti LAFVIN ESP32 [pdf] Manuale di istruzioni Kit di base per principianti ESP32, ESP32, Kit di base per principianti, Kit di base per principianti |