Cotação de Bitcoin com ESP32 e display e-Paper
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!
Ola!, fiz como está no tutorial, mais o display, não sai do padrão que vem na placa, depois que ele carrega ele faz o reset pisca a tela, mais volta com a tela padrão.
Eu iniciante nesse trem, se eu ligar a placa em um fonte USB normal ele deve mostrar ou tenho que fazer alguma ligação com alguma outra planca
Oi Marcos,
Sim, se vc conectar em uma fonte USB normal ele vai carregar. Você chegou a abrir o serial monitor para ver se aparece algum erro?
Abraço!
Adilson
Pelo serial monitor, com exceção do logo aparece a coisa mais lida e funcionando
23:12:31.362 -> HTTP Response code: 200
23:12:31.405 -> Valor do Bitcoin = 202499.97
mais no display nada, fica só o logo original que vem com a placa! vou disponibilizar uma imagem https://photos.app.goo.gl/FCbpXEEvKWyXj8YYA tem alguma coisa que tenho que fazer na placa?
uma coisa que não achei onde configurar foi
Um detalhe importantíssimo antes de continuar, é sobre a versão da placa. Aqui eu estou usando a TTGO T5 V2.0
Desculpe perturbar vc com isso!