In questo articolo esaminiamo la costruzione dello shield per ESP32 DevKIT V1, questo permette di testare vari dispositivi come: un led , un led RGB a controllo digitale, un fotoresistore, un pulsante.
Sono presenti dei connettori a cui collegare: un display OLED, svariati sensori I2C, e altri a 3 PIN alimentati sia a 3,3 che 5V.
Il PCB è stato progettato con il programma online EasyEDA, mentre la sua realizzazione, così come la saldatura dei componenti SMD, è stata realizzata tramite il servizio offerto dal sito JLCPCB.
Sito online per creazioni schemi e PCB | Sito produzione PCB |
Indice
Caratteristiche dello shield
Le principali caratteristiche delle shield per ESP32 DevKIT V1 sono:
- Shield compatibile con scheda ESP32 DevKIT V1 30 pin;
- Alimentazione a batteria tramite modulo 7W Mini DC-DC Boost Step Up Converter
- Su scheda Led RGB a comando seriale tipo WS2812B;
- Led di segnalazione programmabile;
- Fotoresistenza collegata a pin analogico;
- Pulsante collegato a pin digitale;
- J2 Connettore a 3 pin per moduli in/out – alimentazione a 3,3V;
- J3 Connettore a 3 pin per moduli Output – alimentazione a 5V;
- Connettore per moduli sensore I2C;
- Connettore per display OLED TFT 1.3″ 240×240 – ST7789;
Il modulo ESP32 DevKIT V1
La scheda ESP32 Wi-Fi e BLE utilizza il modulo ESP-WROOM-32, un potente modulo Wi-Fi + BLE in grado di soddisfare un’ampia varietà di applicazioni che vanno dalle reti di sensori a bassa potenza alle attività più impegnative. Il modulo supporta un data rate fino a 150 Mbps e la potenza di uscita sull’antenna raggiunge i 20,5 dBm garantendo la più ampia possibilità di connessione.
Per maggiori informazioni sulla ESP32 DevKIT V1 vedere gli articoli:
- Descrizione modulo ESP32 DevKIT V1 con WiFi e Bluetooth BLE;
- Installazione nell’IDE del Modulo ESP32 DevKIT V1 –
- Collegamento al modulo ESP32 Devkit V1 del Led RGB WS2812B.
Caratteristiche:
- Supporta SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,I2S, I2C, IRUSB-UART
- Ricetrasmettitore Wi-Fi integrato, soddisfa gli standard 802.11 B/G/N/E/I (802.11n fino a 150 Mbps)
- Bluetooth classico e BLE
- 3 Interfacce UART
- 3 Interfacce SPI
- 2 Interfacce I2C
- Ingressi per 10 sensori capacitivi (touch)
- Convertitore ADC a 18 canali
- Convertitore DAC a 2 canali
- SRAM da 520kB
- Supporta: Station/SoftAP/SoftAP+Station/P2P
- Supporta: WPA/WPA2/WPA2-Enterprise/WPS
- Support: AES/RSA/ECC/SHA
- Frequenza di lavoro Wi-Fi: 2.4 ~ 2.5 GHz
- Soddisfa le specifiche Bluetooth v4.2 BR/EDR e BLE
- Tensione di lavoro: da 2,2Vcc a 3,6Vcc
- Assorbimento medio: 80 mA
Del modulo ne esistono due versioni, a 30 o 38 pin, quella scelta per la realizzazione dello shield è il modello a 30 pin
Dove trovare il modulo ESP32 DevKIT V1
Il modulo ESP32 DevKIT V1 può essere acquistato presso il sito Homotix, ad un costo che, al momento delle pubblicazione di questo articolo, è di 7,99€.
Se al momento dell’ordine inserirete il codice sconto “ADRIROBOT” avrete diritto ad uno sconto
Circuito elettrico del modulo
Il circuito elettrico dello shield è molto semplice. Questo può essere esaminato accedendo al sito EasyEDA, dove è disponile un programma online. Ecco il link
Per conoscere meglio il programma, leggete anche gli articoli EasyEDA – Guida all’utilizzo del programma.
Sigla | Descrizione | Q.tà |
---|---|---|
U1 | ESP32 DEVKIT 30 pin | 1 |
U2 | Modulo I2C | 1 |
U3 | BOOST STEP-UP CONVERTER | 1 |
C1 | 100nF (C0805) | 1 |
R1 | Resistenza 330 Ω (SMD R0805) | 1 |
R2,R3 | Resistenza 10KΩ (SMD R0805) | 2 |
LDR | Fotoresistenza 5.1X4.3_RM3.4 | 1 |
LED1 | LED0805 (XL-0805QBC) | 1 |
LED2 | Led RGB (WS2812B-3535) | 1 |
SW1 | Pulsante SMD_L6.1-W3.7-LS8.0 | 1 |
J1 | Connettore 1x2 Batteria | 1 |
J2,J3 | Connettore 1X3 Femmina | 2 |
J4 | Connettore 1x7 Maschio | 1 |
Nella schema sono visibili le varie sezioni presenti:
ESP32 DEVKIT V1 30 pin module
Nella figura sotto riportata, sono rappresentati tutti i pin del modulo ESP32 utilizzati per interfacciarsi con i dispositivi presenti sullo shield.
Pin ESP32 | Gestione |
---|---|
D2 | Pin DC del connettore display TFT |
D4 | Pin RES del connettore display TFT |
D15 | Pin DIN del led RGB a controllo digitale |
D18 | Pin SCL del connettore display TFT |
D21 | Pin SDA del connettore sensore I2C |
D22 | Pin SCL del connettore sensore I2C |
D23 | Pin SDA del connettore display TFT |
D26 | Gestione LED 1 |
D27 | Pin SENSOR del connettore J3 |
D32 | Pin OUT del connettore J2 |
D33 | Lettura fotoresistenza |
D35 | Gestione pulsante SW1 |
Boost step-up converter
Per rendere più autonomo lo shield si è utilizzato un modulo DC-DC Step Up Converter che utilizza un chip SMD AL961. Questo permette di alimentare tramite una batteria al Litio da 3,7V. Il modulo misura solamente 21 x 11 x 4 mm. Sono presenti solamente tre pin Vin, GND e Vout.
Quello utilizzato fornisce in uscita 5V per un consumo massimo 7W.
Maggiori informazioni nell’articolo: AL961 7W Mini DC-DC Boost Step-Up Converter
OLED Display
Questo display LCD da 1,3″ 240×240 tipo ST7789 a colori presenta un’alta risoluzione, 260 ppi.
Il display è del tipo In-Plane Switching o IPS.
Interfaccia SPI
Il display incorpora un interfaccia SPI che fornisce aggiornamenti rapidi del display.
Poiché è un dispositivo di sola scrittura, non è necessario che la SPI MISO sia collegata.
L’interfaccia non è dotata del pin CS (Chip Select ) il che riduce il numero di pin, ma non permette di avere altri dispositivi SPI sullo stesso bus contemporaneamente.
La connessione al display avviene tramite un header a 7 pin collega ai pin dell’ESP 32.
Vedere anche articolo Display TFT 1.3″ 240×240 – ST7789
PIN OLED | Pin ESP32 | Descrizione |
---|---|---|
GND | GND | Pin GND |
VCC | +3.3V | Pin alimentazione |
SCL | D18 | SPI SCL (Clock) |
SDA | D23 | SPI MOSI (Dati) |
RE | D4 | Reset per il controller LCD ST7789 |
DC | D2 | Dati/Comando, tipo di dati da inviare al display |
BLK | nc | Eventuale controllo retroilluminazione |
Led RGB
Circuito di gestione di un led tipo WS2812B di tipo RGB a controllo digitale, utilizza un RGB SMD 5050, al cui interno è stato installato un minuscolo chip di controllo.
In questo chip è presente un regolatore di luminosità a corrente costante che assicura un colore uniforme anche con differenti tensioni di alimentazione e un’interfaccia di comando seriale a una sola linea.
Maggiori informazioni nell’articolo Modulo ESP32 Devkit V1 – Led RGB WS2812B
Button
Il circuito è formato dal pulsante SW1 e dalla resistenza SMD di pull-up R3 dal valore di 10 kΩ collegata al pin di alimentazione di 3.3V la sua funzione è quella di mantenere l’ingresso della porta D35 dell’ESP35 ad uno stato logico ben preciso quando il pulsante si trova con contatto aperto.
In questo caso l’ingresso D35 è sempre a +Vcc (HIGH) e va a zero (LOW) solo quando il pulsante è premuto (metodo Pull-up).
I2C Sensor
Connettore per moduli sensore dotati di interfaccia I2C. Il connettore è stato realizzato per il collegamento del sensore BME680, ma è possibile collegare per esempio i seguenti sensori:
- BME 680 :temperatura, umidità, pressione barometrica, composti organici volatili (VOC);
- BMP180: pressione barometrica, temperatura, altitudine;
- MLX90614 sensore di temperatura a infrarossi;
- MAX44009: intensità della luce;
LDR Sensor
Descrizione
La foto resistenza è un componente elettronico la cui resistenza è inversamente proporzionale alla quantità di intensità luminosa che lo colpisce. Questo significa che la corrente (inversamente proporzionale alla resistenza) aumenta all’aumentare dell’intensità luminosa.
Nella figura sottostante è riportato la caratteristica Ohm/Lux di una fotoresistenza
Occorre notare che le porte dell’ESP32 non possono rilevare né variazioni di resistenza né variazioni di corrente. E’ possibili solamente leggere valori di tensione. Per questo motivo, l’utilizzo di una resistenza è indispensabile al fine di collegare correttamente la fotoresistenza alla porta dell’ESP.
In questo caso si trasforma la variazione di resistenza in una variazione di tensione tramite un partitore di tensione.
Partitore di Tensione e Fotoresistenza
Nel circuito presentato, la variazione di luminosità produce una variazione del valore della fotoresistenza. Di conseguenza anche il valore della corrente risulta funzione dell’intensità luminosa e di conseguenza anche il valore di tensione in ingresso alla porta del modulo ESP. Nel dettaglio:
- Un incremento della luminosità porta ad un decremento della tensione;
- Un decremento della luminosità porta ad un incremento della tensione.
I pin ADC della scheda ESP32 DEVKIT V1
La scheda ESP32 DEVKIT V1 DOIT (versione con 30 pin) dispone di 15 pin ADC che si possono utilizzare per leggere gli ingressi analogici, nel nostro caso si è utilizzato il D33.
Questi pin hanno una risoluzione di 12 bit, il che significa che si possono ottenere valori da 0 a 4095. Per leggere il valore nell’IDE di Arduino, si usa semplicemente la funzione analogRead(). I pin ADC ESP32 non hanno un comportamento lineare.
+5V Output
Il connettore J2, permette di collegare vari moduli di output come per esempio un modulo relè KY-019.
Il pin OUT è collegato al pin D32. Il pin di alimentazione è collegato a +5V.
+3.3V Sensor
Il connettore J3, permette di collegare vari moduli di input. Il pin SENSOR è collegato al pin D27. Il pin di alimentazione è collegato a +3.3V.
Realizzazione del PCB
Il PCB potrà essere realizzato tramite il servizio offerto dalla JLCPCB, azienda che agisce in sinergia con EasyEDA.
Sullo stesso sito potete trovare il PCB, ecco il link. Il PCB è di tipo a doppia faccia con fori metallizzati, alcuni componenti potranno essere già montati dalla ditta costruttrice.
Per le fasi di realizzazione vi consiglio la lettura dei seguenti articoli: Come realizzare i vostri PCB tramite il sito JLCPCB e JLCPCB & EasyEDA-Progettazione, realizzazione, assemblaggio PCB
Scatola che racchiude i PCB ordinati è un piccolo gadget, rappresentato da un puzzle
Una volta aperto la confezione racchiusa da un foglio mille bolle, si troveranno i cinque PCB su cui sono visibili i componenti di tipo SMT già saldati in fase realizzativa dalla ditta costruttrice; la serigrafia permette una facile identificazione dei vari componenti.
Dettaglio dei due lati del PCB ricevuto, l’utilizzo di fori metallizzati permette di avere collegamenti tra il lato TOP e Bottom del PCB, i collegamenti di alimentazione e GND sono ottenuti con l’utilizzo delle aree rame dei due piani del PCB.
Fasi di costruzione
Seguono le fasi di costruzione dello Shield per ESP32 DevKIT V1
- Preparazione dei componenti necessari al montaggio, si consideri che alcuni, di tipo SMT, non già stati montati di fase di realizzazione del PCB. restano alcuni componenti come il connettore della batteria, del modulo ESP, e il modulo DC-DC.
2- S’inizia con la saldatura del connettore per il sensore I2C
3- A questo punto si procedere modificando il modulo stepper che viene venduto con un connettore a tre pin maschi a 90°. Occorre rimuoverlo e sostituirlo con uno a pin diritti. Prestare attenzione nelle operazioni di dissaldamento per non danneggiare il modulo
4- A questo punto si procedere con il connettore per la batteria
5 – Si passa alla saldatura dei due connettori a 30 pin femmina per il montaggio del modulo ESP 32
6 – A questo punto il montaggio può considerarsi terminato
7 – Finito il montaggio, si potranno installare i vari moduli sui rispettivi connettori: Modulo ESP32, Display IPS, Sensore BMP180.
Vista della parte superiore dello shield.
Vista della parte inferiore dello shield.
Primo test dello shield
Per primo si è optato con il test del LED RBG. Non sarà necessario il Display IPS, e il sensore. Una volta caricato il programma, l’alimentazione del modulo potrà essere fornita tramite una batteria.
Schema equivalente del test
Sketch del test
Sotto è riportato lo Sketch del primo test per la verifica del led RGB. Per il suo funzionamento occorre che sia presente la libreria Adafruit_NeoPixel.h, per vedere come fare per caricarla vedere articolo Modulo ESP32 Devkit V1 – Led RGB WS2812B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <Adafruit_NeoPixel.h> // Led RGB #define PIN 15 // PIN Led RGB // Configura led RGB Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800); void setup() { pixels.begin(); // Si inizializza la libreria NeoPixel. } void loop() { pixels.setPixelColor(0, pixels.Color(255, 0, 0)); //Colore rosso pixels.show(); delay(1000); pixels.setPixelColor(0, pixels.Color(0, 255, 0)); //Colore verde pixels.show(); delay(1000); pixels.setPixelColor(0, pixels.Color(0, 0, 255)); //Colore blu pixels.show(); delay(1000); } |