Skip to Content

Programmare l’ESP32-WROVER CAM

Programmare l’ESP32-WROVER CAM

In questo tutorial imparerai come configurare l’Arduino IDE per programmare la scheda Freenove ESP32-WROVER CAM. La scheda è paragonabile alla ESP32-CAM con una fotocamera OV2640 e un’interfaccia per schede SD, ma offre più pin GPIO ed è più facile da programmare rispetto alle vecchie schede ESP32-CAM.

Componenti necessari

Per seguire questo tutorial ti servirà una scheda Freenove ESP32-WROVER CAM. Di solito la scheda viene fornita con accessori come una scheda SD, un lettore di schede SD e un cavo USB-C, ma nel caso mancassero, li ho linkati qui sotto.

ESP32-WROVER CAM

Cavo USB C

Lettore di schede SD

Scheda MicroSD 16GB

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Caratteristiche della scheda Freenove ESP32-WROVER CAM

La scheda Freenove ESP32-WROVER CAM dispone di un microprocessore dual-core a 32 bit (ESP32-Wrover-E chip) con frequenza da 80 a 240 MHz e 520KB di SRAM, 4 MB di Flash, 8 MB di PSRAM, Wi-Fi 2.4 GHz e Bluetooth 4.2 (LE) integrati, uno slot per schede microSD e una fotocamera OV2640. L’immagine sotto mostra il fronte e il retro della scheda:

Front and Back of the ESP32-WROVER CAM board
Fronte e retro della scheda ESP32-WROVER CAM

Nota che la versione più vecchia 1.x della scheda non aveva lo slot per schede microSD, mentre la versione attuale 3.x lo include.

La scheda ha una porta micro-USB e un convertitore USB-to-UART integrato (CH340), il che rende semplice caricare il codice. Basta collegare la scheda al PC tramite cavo USB e usare l’Arduino IDE per scrivere e caricare il codice.

A differenza di alcune vecchie schede ESP32-CAM, non è necessario resettare manualmente la scheda per entrare in modalità download né usare un programmatore FTDI. Un altro vantaggio rispetto all’ESP32-CAM è che ci sono più pin GPIO liberi disponibili.

La scheda viene fornita con un Github Repo che contiene documentazione ed esempi di programmazione in C e Python. Puoi anche scaricare il ZIP-file with the documentation and examples. Ecco anche un link al Datasheet for the Wrover chip.

LED

La scheda ESP32-WROVER ha quattro LED integrati. Il LED verde ON indica che la scheda è alimentata. Il LED blu, etichettato IO2, è collegato al GPIO2 e può essere controllato dall’utente. I LED gialli RX e TX indicano il trasferimento di dati seriali. L’immagine sotto mostra i quattro LED sulla scheda:

LEDs on ESP32-WROVER board
LED sulla scheda ESP32-WROVER

Pinout

Una caratteristica utile della scheda è che i pin sono annotati sulla serigrafia indicando se sono usati dalla fotocamera (-), dalla scheda SD (~) o dalla PSRAM (*). Nell’immagine sotto puoi vedere un primo piano di alcuni pin con le loro etichette:

Annotated Pins of the ESP32-WROVER CAM board
Pin annotati della scheda ESP32-WROVER CAM

Questo è molto utile quando cerchi pin GPIO liberi, perché non puoi usare i pin segnati se la fotocamera o la scheda SD sono in uso. L’immagine seguente mostra il pinout completo della scheda (clicca per ingrandire):

Pinout of ESP32-WROVER CAM
Pinout della ESP32-WROVER CAM (source)

Pin di strapping

Nota che oltre ai pin usati dalla fotocamera o dalla scheda SD, ci sono anche cinque pin di strapping: MTDI, GPIO0, GPIO2, MTDO e GPIO5. Devi fare attenzione nell’usare questi pin, perché devono trovarsi in uno stato specifico al reset della scheda. La tabella seguente mostra i pin di strapping e la loro funzione:

Table of Strapping pins of ESP32-WROVER CAM
Tabella dei pin di strapping della ESP32-WROVER CAM (source)

Dopo il reset, i pin di strapping possono funzionare come normali pin GPIO, ma devi assicurarti che durante il reset siano collegati a un circuito esterno ad alta impedenza, altrimenti la scheda potrebbe non avviarsi correttamente.

Preparare Arduino IDE per ESP32-WROVER CAM

Per programmare l’ESP32-WROVER CAM dall’Arduino IDE devi poter comunicare con la scheda e avere installato il software (core) per la scheda. Nei prossimi due paragrafi spiegheremo cosa fare.

Installare il driver CH340

La scheda ESP32-WROVER CAM comunica tramite un chip CH340 che permette di programmarla via USB. Se non hai mai programmato altre schede non-Arduino, potresti dover installare il driver CH340. Ecco un link al driver software for the CH340 per il tuo sistema operativo (Windows, Mac, Linux).

Su Windows puoi verificare se il CH340 è installato aprendo Gestione dispositivi e cercando sotto Porte la porta USB-SERIAL CH340 come mostrato sotto. Funziona solo se la scheda è collegata al PC tramite cavo USB.

CH340 Driver in Windows Device Manager
Driver CH340 in Gestione dispositivi di Windows

Se non è installato, scarica il driver dal Repo, ad esempio CH341SER.EXE per Windows, eseguilo e clicca su INSTALL:

Installing the CH340 Driver under Windows
Installazione del driver CH340 su Windows

Poi ricontrolla in Gestione dispositivi se il driver è installato e la scheda è collegata a una porta COM.

Installare il Core ESP32

Ora dobbiamo installare il Core ESP32 per abilitare il supporto alle schede ESP32 nell’Arduino IDE. Installare il Core ESP32 è semplice. Avvia il Arduino IDE e segui i passaggi indicati qui sotto. Se hai problemi, puoi trovare istruzioni più dettagliate nel nostro tutorial How to Program ESP32 with Arduino IDE.

URL aggiuntivi per il Boards Manager

Per prima cosa apri la finestra Preferenze selezionando “Preferences…” dal menu “File”:

Open Preferences Dialog
Apri la finestra Preferenze

Si aprirà la finestra Preferenze mostrata sotto. Nella scheda Settings troverai in basso una casella di testo etichettata “URL aggiuntivi per il Boards Manager“:

In questo campo incolla il seguente URL: “https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json

Questo farà sapere all’Arduino IDE dove trovare le librerie core ESP32. Ora installeremo effettivamente le librerie core ESP32 usando il Boards Manager.

Boards Manager

Apri il BOARDS MANAGER cliccando sull’icona della scheda nella barra laterale dell’Arduino IDE:

Board icon in Sidebar
Icona scheda nella barra laterale

Vedrai apparire il BOARDS MANAGER a destra della barra laterale. Digita “ESP32” nel campo di ricerca in alto e dovresti vedere due tipi di schede ESP32; le “Arduino ESP32 Boards” e le schede “esp32 di Espressif”. Noi vogliamo le librerie esp32 di Espressif. Clicca sul pulsante INSTALL e attendi che il download e l’installazione siano completati.

Install ESP32 Core libraries
Installa le librerie Core ESP32

Una volta installato, il tuo Boards Manager dovrebbe apparire così, anche se la versione (qui 3.0.0-a) potrebbe essere diversa.

ESP32 core installed
Core ESP32 installato

Nel passaggio successivo ti mostro come selezionare la scheda ESP32 per l’ESP32-WROVER CAM.

Seleziona ESP32 Wrover Module

Clicca sul selettore delle schede. Nell’esempio sotto è selezionata una Arduino Uno (la cambieremo):

Bord selector
Selettore scheda

Cliccando sul nome della scheda attualmente selezionata (Arduino Uno), si apre la finestra di selezione scheda. Nel campo di ricerca digita “wrover” e seleziona “ESP32 Wrover Module” come mostrato sotto:

Select ESP32 Wrover Module
Seleziona ESP32 Wrover Module

Se la scheda è collegata al PC via USB, dovresti poter selezionare anche la porta COM. Nello screenshot sopra è COM5, ma nel tuo caso potrebbe essere un’altra porta COM.

Programmare l’ESP32-WROVER CAM

Se sei riuscito a selezionare ESP32 Wrover Module come scheda e la connessione a una porta COM funziona, ora puoi programmare la tua scheda ESP32-WROVER CAM.

Blink

Come test semplice scarichiamo il solito Blink program. Il LED integrato controllabile dell’ESP32-WROVER CAM è collegato al GPIO 2. Impostiamo quindi la costante ledPin a 2 e accendiamo il LED per un secondo, poi lo spegniamo per un altro secondo:

const byte ledPin = 2;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);   
  digitalWrite(ledPin, LOW); 
  delay(1000);  
}

Se funziona, congratulazioni! Hai programmato con successo la tua ESP32-WROVER CAM. Nel prossimo paragrafo ti mostrerò come eseguire l’esempio WebServer che permette di trasmettere video al tuo computer.

WebServer per streaming video

Nel tuo Arduino IDE vai su File -> Examples -> ESP32 -> Camera e apri l’esempio CameraWebServer :

CameraWebServer Example
Esempio CameraWebServer

Poi dovrai modificare leggermente il codice in CameraWebServer.ino. Rimuovi i commenti // per la definizione di CAMERA_MODEL_WROVER_KIT e assicurati che tutte le altre definizioni della fotocamera siano commentate come mostrato sotto:

Definizione di CAMERA_MODEL_WROVER_KIT

Nello stesso file, un po’ più in basso, devi inserire le credenziali Wi-Fi della tua rete domestica. Sostituisci SSID e PASSWORD con le credenziali della tua rete per le seguenti costanti:

Wi-Fi network credentials
Credenziali rete Wi-Fi

Dopo aver caricato il codice sulla tua ESP32-WROVER CAM dovresti vedere il seguente testo nel Monitor Seriale:

IP address of CameraWebServer
Indirizzo IP di CameraWebServer

Nota l’ultima riga, che ti fornisce l’URL (indirizzo IP) a cui il WebServer è attivo. Copia e incolla questo URL nella barra degli indirizzi del tuo browser (sarà diverso per la tua scheda).

Dovresti quindi vedere il sito web che trasmette le immagini della fotocamera dalla tua ESP32-WROVER al browser:

CameraWebServer in Web browser
CameraWebServer nel browser web

Ricorda di premere “Start Stream” in fondo alla pagina per avviare lo streaming video. Nell’immagine sopra lo streaming è già avviato e il pulsante dice “Stop Stream”.

Start Stream Button
Pulsante Start Stream

Sentiti libero di provare le diverse impostazioni della fotocamera. Noterai che il frame rate diminuisce abbastanza per immagini ad alta risoluzione.

Conclusioni

In questo tutorial hai imparato a programmare la scheda ESP32-WROVER CAM. Ti ho mostrato solo gli esempi Blink e WebServer, ma il repository Github contiene altri esempi di codice per il ESP32-WROVER CAM, specialmente per Wi-Fi e Bluetooth.

Rispetto a ESP32-CAM, l’ESP32-WROVER CAM ha il vantaggio di avere più pin GPIO liberi e che la programmazione non richiede hardware aggiuntivo, come uno shield di programmazione o un programmatore FTDI.

D’altra parte, l’ESP32-CAM è più piccola, più economica e ha un flash LED, che è un chiaro vantaggio per alcuni progetti. Se ti serve una scheda ancora più piccola, dai un’occhiata alla scheda XIAO-ESP32-S3-Sense. Non ha il LED flash ma ha più GPIO liberi, il che permetterebbe di aggiungere un LED flash.

Se hai domande, sentiti libero di lasciarle nella sezione commenti.

Buon divertimento con il tinkering 😉