Skip to Content

Programar o ESP32-WROVER CAM

Programar o ESP32-WROVER CAM

Neste tutorial, aprenderás a configurar o Arduino IDE para programar a placa Freenove ESP32-WROVER CAM. A placa é comparável à ESP32-CAM com uma câmara OV2640 e uma interface para cartão SD, mas oferece mais pinos GPIO e é mais fácil de programar do que as placas ESP32-CAM mais antigas.

Peças Necessárias

Para seguir este tutorial, precisarás de uma placa Freenove ESP32-WROVER CAM. Normalmente, a placa vem com extras como um cartão SD, um leitor de cartão SD e um cabo USB-C, mas caso estejam em falta, também os liguei abaixo.

ESP32-WROVER CAM

Cabo USB C

Leitor de Cartão SD

Cartão 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.

Características da placa Freenove ESP32-WROVER CAM

A placa Freenove ESP32-WROVER CAM possui um microprocessador dual-core de 32 bits (ESP32-Wrover-E chip) com 80~240 MHz e 520KB SRAM, 4 MB Flash, 8 MB PSRAM, Wi-Fi 2.4 GHz e Bluetooth 4.2 (LE) integrados, um slot para cartão microSD e uma câmara OV2640. A imagem abaixo mostra a frente e o verso da placa:

Front and Back of the ESP32-WROVER CAM board
Frente e verso da placa ESP32-WROVER CAM

Note que a versão antiga 1.x da placa não tinha slot para cartão microSD, mas a versão atual 3.x já o inclui.

A placa tem uma porta micro-USB e um conversor USB-para-UART integrado (CH340), o que facilita o upload de código. Basta ligar a placa ao PC via cabo USB e usar o Arduino IDE para escrever e transferir o código.

Ao contrário de algumas placas ESP32-CAM mais antigas, não é necessário reiniciar manualmente a placa para entrar no modo de download nem usar um programador FTDI. Outra vantagem sobre a ESP32-CAM é que há mais pinos GPIO livres disponíveis.

A placa vem com um Github Repo que contém documentação e exemplos de programação em C e Python. Também podes descarregar o ZIP-file with the documentation and examples. E aqui está um link para o Datasheet for the Wrover chip.

LEDs

A placa ESP32-WROVER tem quatro LEDs integrados. O LED verde ON indica que a placa está ligada. O LED azul, rotulado IO2, está ligado ao GPIO2 e pode ser controlado pelo utilizador. Os LEDs amarelos RX e TX indicam a transferência de dados seriais. A imagem abaixo mostra os quatro LEDs na placa:

LEDs on ESP32-WROVER board
LEDs na placa ESP32-WROVER

Pinout

Uma característica interessante da placa é que os pinos estão anotados na serigrafia indicando se são usados pela Câmara (-), pelo Cartão SD (~) ou pela PSRAM (*). Podes ver um close-up de alguns pinos com as suas marcações na imagem abaixo:

Annotated Pins of the ESP32-WROVER CAM board
Pinos anotados da placa ESP32-WROVER CAM

Isto é muito útil quando procuras pinos GPIO livres, pois não podes usar os pinos marcados se a Câmara ou o cartão SD estiverem em uso. A imagem seguinte mostra o pinout completo da placa (clica para ampliar):

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

Pinos de Strapping

Note que, além dos pinos usados pela Câmara ou pelo cartão SD, existem cinco pinos de strapping: MTDI, GPIO0, GPIO2, MTDO e GPIO5. Deves ter cuidado ao usar estes pinos, pois precisam estar num determinado estado quando a placa reinicia. A tabela seguinte mostra os pinos de strapping e suas funções:

Table of Strapping pins of ESP32-WROVER CAM
Tabela dos pinos de strapping da ESP32-WROVER CAM (source)

Após o reset, os pinos de strapping podem funcionar como pinos GPIO normais, mas tens de garantir que estão ligados a um circuito externo de alta impedância durante o reset, caso contrário a placa pode não arrancar corretamente.

Preparar o Arduino IDE para ESP32-WROVER CAM

Se queres programar a ESP32-WROVER CAM a partir do Arduino IDE, precisas de conseguir comunicar com a placa e ter o software (core) instalado. Nas próximas duas secções explicamos o que tens de fazer.

Instalar driver CH340

A placa ESP32-WROVER CAM comunica via um chip CH340 que permite programar a placa por USB. Se nunca programaste outras placas não-Arduino, pode ser necessário instalar o driver CH340. Aqui está um link para o software do driver para CH340 para o teu sistema operativo (Windows, Mac, Linux).

No Windows, podes verificar se o CH340 está instalado abrindo o Gestor de Dispositivos e procurando em Portas pelo Porta USB-SERIAL CH340 como mostrado abaixo. Isto só funciona se a placa estiver ligada ao PC via cabo USB.

CH340 Driver in Windows Device Manager
Driver CH340 no Gestor de Dispositivos do Windows

Se não estiver instalado, descarrega o driver do Repo, por exemplo CH341SER.EXE para Windows, executa-o e clica em INSTALL:

Installing the CH340 Driver under Windows
Instalar o driver CH340 no Windows

Depois verifica novamente no Gestor de Dispositivos se o driver está instalado e a placa está ligada a uma porta COM.

Instalar Core ESP32

De seguida, precisamos instalar o Core ESP32 para ativar o suporte a placas ESP32 no Arduino IDE. Instalar o Core ESP32 é simples. Basta abrir o Arduino IDE e seguir os passos abaixo. Se tiveres problemas, podes encontrar instruções mais detalhadas no nosso tutorial How to Program ESP32 with Arduino IDE.

URLs adicionais para o gestor de placas

Primeiro abre o diálogo de Preferências selecionando “Preferences…” no menu “File”:

Open Preferences Dialog
Abrir diálogo de Preferências

Isto abrirá o diálogo de Preferências mostrado abaixo. Na aba Settings encontrarás uma caixa de edição na parte inferior do diálogo rotulada “URLs adicionais para o gestor de placas“:

Neste campo de entrada copia a seguinte URL: “https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json

Isto informa o Arduino IDE onde encontrar as bibliotecas core do ESP32. A seguir vamos instalar as bibliotecas core do ESP32 usando o Gestor de Placas.

Gestor de Placas

Abre o GESTOR DE PLACAS clicando no ícone da placa na barra lateral do Arduino IDE:

Board icon in Sidebar
Ícone da placa na barra lateral

Verás o GESTOR DE PLACAS aparecer ao lado da barra lateral. Escreve “ESP32” no campo de pesquisa no topo e deverás ver dois tipos de placas ESP32; as “Arduino ESP32 Boards” e as placas “esp32 da Espressif”. Queremos as bibliotecas esp32 da Espressif. Clica no botão INSTALL e espera até o download e instalação terminarem.

Install ESP32 Core libraries
Instalar bibliotecas Core ESP32

Depois de instalado, o teu Gestor de Placas deverá parecer com isto, embora a versão real (aqui 3.0.0-a) possa ser diferente.

ESP32 core installed
Core ESP32 instalado

No próximo passo, mostro como selecionar a placa ESP32 para a ESP32-WROVER CAM.

Selecionar ESP32 Wrover Module

Clica no seletor de placas. No exemplo abaixo, está selecionada a placa Arduino Uno (vamos mudar isso):

Bord selector
Seletor de placa

Clicar no nome da placa atualmente selecionada (Arduino Uno) abrirá o diálogo de seleção de placa. Na caixa de pesquisa escreve “wrover” e seleciona o “ESP32 Wrover Module” como mostrado abaixo:

Select ESP32 Wrover Module
Selecionar ESP32 Wrover Module

Se a placa estiver ligada ao PC via USB, também deverás conseguir selecionar a porta COM. Na captura acima é COM5, mas no teu caso pode ser outra porta COM.

Programar a ESP32-WROVER CAM

Se conseguiste selecionar o ESP32 Wrover Module como placa e a ligação à porta COM está a funcionar, agora podes programar a tua placa ESP32-WROVER CAM.

Piscar LED

Como teste simples, vamos carregar o programa habitual Blink. O LED integrado controlável pelo utilizador da placa ESP32-WROVER CAM está ligado ao GPIO 2. Portanto, definimos a constante ledPin para 2 e depois ligamos o LED por um segundo e desligamos por outro segundo:

const byte ledPin = 2;

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

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

Se isto funcionar, parabéns! Programaste com sucesso a tua ESP32-WROVER CAM. Na próxima secção, mostro como executar o exemplo WebServer que permite transmitir vídeo para o teu computador.

WebServer de Streaming de Vídeo

No Arduino IDE, vai a File -> Examples -> ESP32 -> Camera e abre o exemplo CameraWebServer :

CameraWebServer Example
Exemplo CameraWebServer

De seguida, terás de alterar ligeiramente o código em CameraWebServer.ino. Remove os sinais de comentário // da definição CAMERA_MODEL_WROVER_KIT e certifica-te que todas as outras definições de câmara estão comentadas, como mostrado abaixo:

Definição do CAMERA_MODEL_WROVER_KIT

No mesmo ficheiro, um pouco mais abaixo, também tens de inserir as credenciais Wi-Fi da tua rede doméstica. Substitui SSID e PASSWORD pelas credenciais da tua rede para as seguintes constantes:

Wi-Fi network credentials
Credenciais da rede Wi-Fi

Depois de carregar o código na tua ESP32-WROVER CAM, deverás ver o seguinte texto no Monitor Serial:

IP address of CameraWebServer
Endereço IP de CameraWebServer

Repara na última linha, que te fornece a URL (endereço IP) onde o WebServer está a correr. Copia e cola essa URL na barra de endereços do teu navegador (será diferente para a tua placa).

Deverás então ver o seguinte site que transmite imagens da câmara da tua ESP32-WROVER para o navegador:

CameraWebServer in Web browser
CameraWebServer no navegador Web

Lembra-te de clicar em “Start Stream” no fundo da página para iniciar a transmissão de vídeo. Na imagem acima, o stream já está iniciado e o botão diz “Stop Stream”.

Start Stream Button
Botão Start Stream

Sente-te à vontade para experimentar as diferentes configurações da câmara. Vais notar que a taxa de frames fica bastante baixa para imagens de maior resolução.

Conclusões

Neste tutorial aprendeste a programar a placa ESP32-WROVER CAM. Mostrei apenas os exemplos Blink e WebServer, mas o repositório do Github tem mais exemplos de código para ESP32-WROVER CAM, especialmente relacionados com Wi-Fi e Bluetooth.

Comparado com ESP32-CAM, a ESP32-WROVER CAM tem a vantagem de ter mais pinos GPIO livres para usar e que a programação da placa não requer hardware adicional, como um shield de programação ou um programador FTDI.

Por outro lado, a ESP32-CAM é mais pequena, mais barata e tem um LED flash, o que é uma vantagem clara para alguns projetos. Se precisares de uma placa ainda mais pequena, dá uma vista de olhos na placa XIAO-ESP32-S3-Sense. Esta não tem o LED flash, mas tem mais GPIOs livres, o que permitiria adicionar um LED flash.

Se tiveres alguma dúvida, não hesites em deixar nos comentários.

Boas experiências a criar 😉