banner

Ir para o Forum

O incrível ESP32 Wrover da Espressif



Hoje eu vou apresentar para vocês o ESP32 Wrover Kit, que é um módulo diferente desse ESP32 que eu normalmente uso, o Wroom. O Wrover é uma placa de desenvolvimento que tem bastante recurso, ou seja, bastante periféricos. Vou mostrar para vocês um exemplo de um programa com o ESP32 Wrover Kit envolvendo escrita no display, SD Card, além de imagens.




Introdução

O ESP32-Wrover-Kit possui muitos recursos além do módulo ESP32. Nesse Kit temos um display LCD de 3.2” integrado, uma interface de cartão Micro SD de alta velocidade, uma interface de câmera VGA. Os pinos I/Os foram retirados do módulo ESP32 para facilitar a extensão.
A placa possui ainda uma ponte USB multiprotocolo avançada (FTDI FT2232HL), o que permite que os desenvolvedores usem o JTAG diretamente para depurar o ESP32 através da interface USB.


Características principais

·         CPU Dual Core de 240 MHz
·         4MB SPI PSRAM (pseudo-ram estática)
·         Depurador USB-JTAG incorporado
·         Display LCD SPI 3.2”
·         Interface do cartão Micro-SD
·         Interface da câmera VGA
·         Expansão do I/Os




Aqui eu exponho os recursos deste módulo:





Demonstração




ESP32 Wrover




Biblioteca

Faça download da biblioteca WROVER_KIT_LCD para ter acesso ao display LCD.

O download pode ser realizado através do link:

Descompacte dentro da pasta ../Documents/Arduino/libraries/



Upload

Para fazer o upload de um programa para a placa, devemos escolher a placa Adafruit ESP32 Feather.




Programa

Você pode utilizar os exemplos da biblioteca WROVER_KIT_LCD para testar a placa. Para fins didáticos vamos fazer um compilado dos três exemplos. Isso envolverá escrita/desenho na tela e cartão SD.



Bibliotecas e Variáveis

Vamos, então, incluir as bibliotecas. Duas: esp_wp1.h e esp_wp2.h, que são vetores, deixei os links para download aqui mesmo e ao fim deste artigo. Instanciamos o objeto responsável pelo controle do display e executamos uma função de controle de tela.

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "WROVER_KIT_LCD.h" //lib de controle do display
#include <SD_MMC.h> //lib de controle do micro-SD
#include "esp_wp1.h" //imagem em HEX
#include "esp_wp2.h" //imagem em HEX

WROVER_KIT_LCD tft; //objeto responsável pelo controle do display

int screen = 0; //controle de tela


Setup

Inicializamos o display e pintamos toda a tela com a cor desejada.

void setup() {
  Serial.begin(115200);
 
  tft.begin(); //inicializa o display
}

//pinta toda a tela com a cor desejada
void clearScreen(int color)
{
    tft.fillScreen(color); //pinta toda a tela
}


Loop

Rotacionamos a tela para landscape, a qual vai mudar de acordo com a variável de controle. Então, caso eu opte por switch case 0 será escrito o texto na tela. No caso de switch case 1, printamos arquivos de imagens do SD e imagens HEX dos arquivos (#include).

void loop(void) {

    tft.setRotation(1); //rotaciona para landscape
    //muda a tela de acordo com a variável de controle (screen)
    switch(screen)
    {
        case 0:
                writeText(); //escreve textos de diferentes na tela
                break;
        case 1:
                writeImages(); //printa arquivos de imagens do SD e imagens HEX dos arquivos (#include)
                break;
        default: screen = -1; break; //volta pra tela inicial
    }
    screen++;
}


writeText()

Detalhando esta parte do código, tratamos a pintura da tela, posicionamento do cursor na origem e tamanho da fonte.

//escreve textos de diferentes na tela
void writeText()
{
     clearScreen(WROVER_BLACK); //pinta toda a tela
     tft.setCursor(0, 0); //posiciona o cursor na origem
     tft.setTextColor(WROVER_WHITE); 
     tft.setTextSize(1); //tamanho da fonte - 1
     tft.println("Testando ESP32-WROVER-KIT");
     tft.println();
     tft.setTextColor(WROVER_YELLOW); 
     tft.setTextSize(2); //tamanho da fonte - 2
     tft.println("Youtube | Instagram |");
     tft.println("Telegram | Facebook |");
     tft.println("Forum");
     tft.println();
     tft.setTextColor(WROVER_RED); 
     tft.setTextSize(3); //tamanho da fonte - 3
     tft.println("Acesse:");
     tft.println();
     tft.setTextColor(WROVER_GREENYELLOW);
     tft.setTextSize(4); //tamanho da fonte - 4
     tft.println("FERNANDOK.COM");
     delay(2000);
}



writeImages()

Já nesta função, inicializamos o cartão SD, escrevemos os dois arquivos jpg e as duas imagens em HEX.

//printa arquivos de imagens do SD e imagens HEX dos arquivos (#include)
void writeImages()
{
     clearScreen(WROVER_WHITE);
     //inicializa o cartão SD card
     Serial.print("Initializing SD card...");
     if (!SD_MMC.begin()) {
 Serial.println("failed!");
 return;
     }
     Serial.println("OK!");

     tft.drawJpgFile(SD_MMC, "/fk_logo.jpg", 50, 50); //escreve um arquivo jpg do SD
     delay(2000);
     clearScreen(WROVER_WHITE); 
     tft.drawJpgFile(SD_MMC, "/arduino_ide_logo.jpg", 60, 20); //escreve um arquivo jpg do SD
     delay(2000);
     tft.setRotation(0);
     tft.drawJpg(esp_wp1_jpg, esp_wp1_jpg_len); //escreve uma imagem escrita em HEX 
     delay(2000);
     tft.drawJpg(esp_wp2_jpg, esp_wp2_jpg_len); //escreve uma imagem escrita em HEX
     delay(2000); 

}





Faça o download dos arquivos:

Nenhum comentário:

Tecnologia do Blogger.