Hoje vamos ver um módulo muito interessante e com inúmeras possibilidades de utilização: o Módulo WiFi ESP32 com Display e-Paper, com tela de 2.13″ e que vamos usar para mostrar a cotação atual de uma famosa criptomoeda, o Bitcoin.
O e-Paper é a tecnologia que procura imitar um papel convencional de forma digital, ou seja, imprimindo eletronicamente textos e imagens que posteriormente podem ser alteradas ou apagadas.
Telas usando o Papel Eletrônico (mais conhecidas como e-Paper ou epaper) estão se tornando cada vez mais comuns e você pode encontrar esse tipo de tela nos populares leitores digitais Kindle ou em etiquetas de supermercados e lojas como essa mostrada na imagem acima.
E qual a vantagem disso? Eu particularmente sou um fã incondicional de livros físicos, mas não podemos negar que a popularização do e-paper pode salvar muitas árvores das quais é extraída a celulose para a produção do papel.
No caso do módulo que vamos ver hoje e que possui conexão WiFi, as informações do display podem ser atualizadas à distância. É o mesmo caso do Kindle que citei anteriormente: livros, revistas e jornais podem ser atualizados remotamente via wifi. Talvez essa facilidade de atualização possa servir para cortarmos menos árvores. 🙂
O módulo WiFi ESP32 com display e-Paper
O módulo que vamos usar é esse da imagem abaixo, com tela de 2.13″ e com as demais características do ESP32, como WiFi e Bluetooth embutidos.
Ele possui 32 pinos e interfaces serial, SPI e I2C, além de conversores analógico/digitais. Possui ainda uma chave liga-desliga, botão RST e um botão conectado na IO39.
Na parte traseira temos leds indicadores, conector para bateria de Lipo, slot para cartão microSD e conector U.Fl para antena externa. O conector microUSB serve tanto para alimentar o módulo como para transferir os programas.
A imagem acima, da Lilygo (fabricante do módulo) mostra de forma geral as conexões da placa.
Instalação das bibliotecas
O ESP32 já vem pré-gravado com algumas imagens e animações de exemplo, mostrando o que é capaz de ser feito com esse display. Neste post vamos mostrar um programa que vai buscar as informações da cotação do Bitcoin na internet e mostrá-las no display e-Paper.
Primeiramente vamos habilitar a IDE do Arduino para incluir placas da linha ESP32. Para isso, entre na IDE do Arduino e depois no menu Arquivo -> Preferências. Na janela de configuração, no campo URLs Adicionais para Gerenciadores de Placas use o seguinte endereço:
https://dl.espressif.com/dl/package_esp32_index.json
Sua tela deve ficar assim:
Depois disso, acesse o menu Ferramentas -> Placa -> Gerenciadores de Placas e procure por “ESP32”, instalando o pacote esp32 by Espressif Systems:
Feito isso, as placas da linha ESP32 devem aparecer no menu Ferramentas -> Placa da IDE do Arduino. Você vai selecionar a primeira da lista, a ESP32 Dev Module:
Não esqueça também de selecionar a porta COM (serial) correspondente a essa placa no menu Ferramentas, ok?
Um detalhe importantíssimo antes de continuar, é sobre a versão da placa. Aqui eu estou usando a TTGO T5 V2.0.
Isso é importante porque existem muitas versões (e hardwares diferentes), então temos a versão T5 V1.2, 2.0, 2.1… assim vai até a versão 2.8. Dependendo da versão, os pinos de conexão da interface SPI e do display e-Paper podem variar.
Assim, se a sua placa não for a versão 2.0, sugiro dar uma olhada neste link, checar a pinagem e realizar as alterações no programa, se necessário.
Para enviar dados para o display e-Paper você vai precisar da biblioteca GxEPD, que vamos instalar a partir da IDE do Arduino.
Acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. No Gerenciador de Bibliotecas, procure por GXEPD e selecione a biblioteca conforme imagem abaixo clicando em seguida em Instalar:
Faça a mesma coisa com a biblioteca Arduino_Json, que vamos utilizar para buscar os dados da cotação do Bitcoin na internet.
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
Programa cotação de Bitcoin com ESP32 e display e-Paper
Com as bibliotecas instaladas, vamos agora ao programa que vai gerar no display e-Paper a imagem que você viu no começo deste post, com a logo do Bitcoin no lado esquerdo e a cotação (em Reais) no lado direito.
Antes de carregar o programa preencha nas linhas 12 e 13 os dados da rede WiFi na qual o ESP32 vai se conectar para acessar a internet.
Na linha 16 temos a URL de onde vamos buscar esses dados, que são fornecidos em formato Json.
Nas linhas 32 a 39 temos as definições dos pinos que são utilizados pelo display e pela interface SPI. São essas linhas que você irá alterar se o seu módulo ESP32 não for do mesmo modelo que o meu (V2.0).
As linhas 163 a 176 são as responsáveis por acessar a URL definida, baixar os dados no formato Json e depois separar a informação que queremos, no caso, o campo LAST que é a cotação atual do Bitcoin. Para verificar o formato Json que é fornecido pela URL e também as demais informações disponíveis, acesse este link.
Feito o tratamento dos dados, o programa chama a rotina atualiza_epaper(), que mostra as informações atualizadas na tela.
//Programa: Cotacao de Bitcoin com ESP32 e display E-paper //Autor: Arduino e Cia #include <WiFi.h> #include <HTTPClient.h> #include <Arduino_JSON.h> #include <GxEPD.h> #include <SPI.h> #include <GxGDE0213B1/GxGDE0213B1.h> // 2.13" b/w //Dados de acesso WiFi const char* ssid = "NOME_DA_REDE_WIFI"; const char* password = "SENHA_DA_REDE_WIFI"; //URL de onde serao coletados os dados do Bitcoin const char* serverName = "https://www.mercadobitcoin.net/api/BTC/ticker/"; //Intervalo entre requisicoes unsigned long lastTime = 0; //Seta o intervalo em 5 segundos unsigned long timerDelay = 5000; //FreeFonts from Adafruit_GFX #include <Fonts/FreeMonoBold9pt7b.h> #include <Fonts/FreeMonoBold12pt7b.h> #include <Fonts/FreeMonoBold18pt7b.h> #include <Fonts/FreeMonoBold24pt7b.h> #include <GxIO/GxIO_SPI/GxIO_SPI.h> #include <GxIO/GxIO.h> #define SPI_MOSI 23 #define SPI_MISO -1 #define SPI_CLK 18 #define ELINK_SS 5 #define ELINK_BUSY 4 #define ELINK_RESET 16 //antes 16 #define ELINK_DC 17 //antes 17 #define BUTTON_PIN 39 GxIO_Class io(SPI, /*CS=5*/ ELINK_SS, /*DC=*/ ELINK_DC, /*RST=*/ ELINK_RESET); GxEPD_Class display(io, /*RST=*/ ELINK_RESET, /*BUSY=*/ ELINK_BUSY); SPIClass sdSPI(VSPI); int startX = 0, startY = 0; String valor; //Bitmap - Logo Bitcoin int bmpWidth = 100, bmpHeight = 93; const unsigned char bitcoin_logo [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x7f, 0xff, 0xf0, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xf0, 0xff, 0xff, 0x00, 0x1f, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0xff, 0xf0, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xe0, 0x03, 0xff, 0xf0, 0xff, 0xfc, 0x00, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xf0, 0x01, 0xff, 0xf0, 0xff, 0xf8, 0x01, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xf8, 0x01, 0xff, 0xf0, 0xff, 0xf8, 0x03, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xfc, 0x00, 0xff, 0xf0, 0xff, 0xf0, 0x07, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xfe, 0x00, 0x7f, 0xf0, 0xff, 0xe0, 0x07, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0x00, 0x3f, 0xf0, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0x80, 0x3f, 0xf0, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0xc0, 0x1f, 0xf0, 0xff, 0x80, 0x3f, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0xc0, 0x1f, 0xf0, 0xff, 0x80, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x0f, 0xf0, 0xff, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x0f, 0xf0, 0xff, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x07, 0xf0, 0xff, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 0x07, 0xf0, 0xfe, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 0x03, 0xf0, 0xfe, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x03, 0xf0, 0xfc, 0x03, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfc, 0x03, 0xf0, 0xfc, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x01, 0xf0, 0xfc, 0x03, 0xff, 0xff, 0xe0, 0x03, 0xff, 0x00, 0x03, 0xff, 0xfe, 0x01, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xc0, 0x03, 0xff, 0xfe, 0x01, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xe0, 0x03, 0xff, 0xff, 0x00, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf0, 0x03, 0xff, 0xff, 0x00, 0xf0, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf0, 0x03, 0xff, 0xff, 0x00, 0xf0, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf0, 0x03, 0xff, 0xff, 0x00, 0xf0, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf0, 0x03, 0xff, 0xff, 0x80, 0xf0, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf0, 0x03, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xe0, 0x03, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xc0, 0x07, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0x80, 0x07, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xe0, 0x01, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf8, 0x00, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfc, 0x00, 0xff, 0xff, 0x80, 0x70, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfc, 0x00, 0x7f, 0xff, 0x80, 0xf0, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0x80, 0xf0, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0x00, 0xf0, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0x00, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfc, 0x00, 0x7f, 0xff, 0x00, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xfc, 0x00, 0x7f, 0xff, 0x00, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xf8, 0x00, 0x7f, 0xfe, 0x01, 0xf0, 0xfc, 0x03, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xf0, 0x00, 0xff, 0xfe, 0x01, 0xf0, 0xfc, 0x03, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x01, 0xf0, 0xfc, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x03, 0xf0, 0xfe, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x03, 0xf0, 0xfe, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x03, 0xf0, 0xff, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf8, 0x07, 0xf0, 0xff, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x07, 0xf0, 0xff, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf0, 0x0f, 0xf0, 0xff, 0x80, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x0f, 0xf0, 0xff, 0x80, 0x3f, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0xc0, 0x1f, 0xf0, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0xc0, 0x1f, 0xf0, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0x80, 0x3f, 0xf0, 0xff, 0xe0, 0x07, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xff, 0x00, 0x3f, 0xf0, 0xff, 0xf0, 0x07, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xfe, 0x00, 0x7f, 0xf0, 0xff, 0xf8, 0x03, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xfc, 0x00, 0xff, 0xf0, 0xff, 0xf8, 0x01, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xf8, 0x01, 0xff, 0xf0, 0xff, 0xfc, 0x00, 0xff, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xf0, 0x01, 0xff, 0xf0, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xe0, 0x03, 0xff, 0xf0, 0xff, 0xff, 0x00, 0x1f, 0xff, 0x83, 0xf0, 0x7f, 0xff, 0xc0, 0x07, 0xff, 0xf0, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xf0, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x7f, 0xff, 0xf0, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0 }; void setup() { Serial.begin(115200); SPI.begin(SPI_CLK, SPI_MISO, SPI_MOSI, ELINK_SS); //Parametros iniciais do display display.init(); display.eraseDisplay(); display.setRotation(1); display.fillScreen(GxEPD_WHITE); display.setTextColor(GxEPD_BLACK); //Inicializa a conexao WiFi WiFi.begin(ssid, password); Serial.println("Conectando"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Conectado na rede WiFi com o endereco IP: "); Serial.println(WiFi.localIP()); } void loop() { //Envia o HTTP request no tempo estabelecido if ((millis() - lastTime) > timerDelay) { //Verifica o status da conexao Wifi if (WiFi.status() == WL_CONNECTED) { String dados_cotacao = httpGETRequest(serverName); JSONVar myObject = JSON.parse(dados_cotacao); //Verifica se o formato recebido e valido if (JSON.typeof(myObject) == "undefined") { Serial.println("Parsing input failed!"); return; } //Extrai o valor da ultima cotacao do Json e armazena na variavel valor valor = ((const char*) (myObject["ticker"]["last"])); valor.remove(9); Serial.print("Valor do Bitcoin = "); Serial.println(valor); //Chama a rotina que atualiza o display atualiza_epaper(); } else { Serial.println("WiFi Desconectado"); } lastTime = millis(); } } String httpGETRequest(const char* serverName) { HTTPClient http; // Your IP address with path or Domain name with URL path http.begin(serverName); // Send HTTP POST request int httpResponseCode = http.GET(); String payload = "{}"; if (httpResponseCode > 0) { Serial.print("HTTP Response code: "); Serial.println(httpResponseCode); payload = http.getString(); } else { Serial.print("Error code: "); Serial.println(httpResponseCode); } // Free resources http.end(); return payload; } void atualiza_epaper() { //Seta cor do texto e fonte display.setTextColor(GxEPD_BLACK); display.setFont(&FreeMonoBold12pt7b); //Atualizacao dos dados no e-paper display.updateWindow(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, false); display.fillRect(115, 65, 130, 30, GxEPD_WHITE); //Mostra o logo do Bitcoin display.drawBitmap(bitcoin_logo, 8, 15, bmpWidth, bmpHeight, GxEPD_WHITE); //Posiciona o cursor e mostra a cotacao na tela display.setCursor(170, 55); display.println("R$"); display.setCursor(115, 85); display.println(valor); display.updateWindow(115, 65, 130, 30 , true); }
Você pode acompanhar também todo o processo no serial monitor.
Essa foi uma parte muito pequena de tudo que é possível fazer com o módulo ESP32 e display e-Paper. Em um próximo post vamos mostrar como você pode alterar remotamente as informações mostradas na tela.
Gostou? Confira outros posts usando ESP32 aqui mesmo no Arduino e Cia!