Índice:
- Etapa 1: Recursos usados
- Etapa 2: a tela
- Etapa 3: a biblioteca SSD1306
- Etapa 4: a animação e os arquivos XBM
- Etapa 5: Saindo dos arquivos XBM
- Etapa 6: Código Fonte
- Etapa 7: fazer o upLoad do código
- Etapa 8: Arquivos
Vídeo: Introdução Display OLED ESP32 Lora: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Este é outro vídeo sobre a introdução ao ESP32 LoRa. Desta vez, falaremos especificamente sobre uma tela gráfica (de 128x64 pixels). Usaremos a biblioteca SSD1306 para exibir informações neste display OLED e apresentar um exemplo de animação usando imagens XBM.
Etapa 1: Recursos usados
1 Heltec WiFi LoRa 32
Protoboard
Etapa 2: a tela
A tela usada na placa de desenvolvimento é um OLED de 0,96 polegadas.
Tem 128x64 e é monocromático.
Possui comunicação I2C e é conectado ao ESP32 por meio de 3 fios:
SDA no GPIO4 (para dados)
SCL em GPIO15 (para relógio)
RST no GPIO16 (para redefinir e iniciar a exibição)
Etapa 3: a biblioteca SSD1306
Ele pode ser encontrado junto com o conjunto de bibliotecas fornecidas pela Heltec-Aaron-Lee.
Possui várias funções para escrever strings, desenhar linhas, retângulos, círculos e exibir imagens.
github.com/Heltec-Aaron-Lee/WiFi_Kit_series
Etapa 4: a animação e os arquivos XBM
Usaremos a função drawXbm da biblioteca para exibir uma animação.
O formato de imagem XBM consiste em uma matriz de caracteres onde cada elemento representa textualmente um conjunto de pixels monocromáticos (1 bit cada), por meio de um valor hexadecimal. Isso é equivalente a um byte.
Como vários caracteres são usados para representar um único byte, esses arquivos tendem a ser maiores do que os dos formatos adotados atualmente. A vantagem é que podem ser compilados diretamente, sem a necessidade de tratamento prévio.
Além da matriz, duas configurações que determinam o tamanho da imagem estão incluídas.
Para construir a animação, precisamos das imagens que formarão os quadros.
Podemos usar qualquer software de edição de imagem para trabalhar. As únicas precauções que devemos tomar são primeiro manter o tamanho compatível com a tela e usar arquivos monocromáticos.
Para gerar os arquivos, podemos desenhá-los ou importar imagens. Aqui, decidimos editar uma imagem colorida usando PaintBrush, e desenhamos cada um dos quadros
Imagem original - 960 x 707 pixels - formato PNG
A próxima etapa é torná-lo monocromático salvando-o como um bitmap monocromático.
Então, nós o redimensionamos para um tamanho compatível com a tela.
Preste atenção especial às unidades de medida. Neste caso, ajustamos a imagem para que ocupasse toda a altura do display (vertical = 64 pixels).
Com a imagem no tamanho correto, vamos editá-la para formar as molduras. Aqui, estamos apagando cada arco de nível de sinal e salvando-os como quadros correspondentes.
Agora, temos que converter os arquivos BMP para o formato XBM.
Existem várias opções de software que podem fazer essa conversão. Também escolhemos o GIMP como uma opção de editor.
Em nosso exemplo, usamos PaintBrush para gerar e editar os arquivos. No entanto, cada um desses processos poderia ter sido feito no Gimp (ou em qualquer outro editor).
Para converter, primeiro abrimos o arquivo.
Com a imagem aberta, podemos selecionar Arquivo => Exportar como …
Na janela Exportar imagem, devemos alterar a extensão do arquivo de destino para XBM. O Gimp se encarregará de identificar o formato desejado e apresentar mais opções…
Ao exportar, o Gimp apresentará outras opções. Podemos deixar os valores padrão.
Depois de converter todos os arquivos, teremos quatro arquivos XBM, um para cada quadro.
Agora vamos copiá-los para a pasta do código-fonte e renomeá-los alterando suas extensões para.h.
Etapa 5: Saindo dos arquivos XBM
Podemos abrir os arquivos XBM em qualquer editor de texto, onde veremos a matriz da imagem e as informações do tamanho da imagem já definidas.
Etapa 6: Código Fonte
Código Fonte: Declarações
Incluiremos as bibliotecas necessárias, bem como os arquivos de imagem. Definimos as posições da imagem e o intervalo de transição. Também apontamos os pinos OLED conectados ao ESP32. Finalmente, criamos e ajustamos o objeto Display.
// Incluindo as bibliotecas necessárias # include #include "SSD1306.h" // Incluindo os arquivos de imagem #include "frame1.h" #include "frame2.h" #include "frame3.h" #include "frame4.h" // definições de posição da imagem e intervalo de transição #define posX 21 #define posY 0 #define intervalo 500 // Pinos do OLED estão conctados ao ESP32: I2C // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // O RST deve ser controlado pelo software SSD1306 display (0x3c, SDA, SCL, RST); // Exibição Cria e ajusta o Objeto
Código Fonte: Configuração ()
Inicialize a exibição e inverta a tela verticalmente. A ação é opcional.
void setup () {display.init (); // inicia a exibição display.flipScreenVertically (); // inverte verticalmente a tela (opcional)}
Código Fonte: Loop ()
A primeira coisa a fazer no loop é limpar a tela. Carregamos o quadro 1 no buffer usando as posições iniciais posX e posY. Informamos o tamanho da imagem com frame1_width e frame1_height, e o nome do array contendo os bits da imagem. Mostramos o buffer no display e esperamos um intervalo antes de mostrar o próximo quadro.
void loop () {display.clear (); // tela limpa // carrega para o buffer o frame 1 // usando como posições iniciais posX e posY // informa o tamanho da imagem com frame1_width e frame1_height // informa o nome da matriz que contem os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o buffer no display display.display (); // aguarda um intervalo antes de mostrar o próximo frame delay (intervalo);
Repetimos o processo para todos os outros quadros.
// repete o processo para todos os outros frames display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); atraso (intervalo); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); atraso (intervalo); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); atraso (intervalo); }
Etapa 7: fazer o upLoad do código
Com o IDE aberto, abra o arquivo com o código-fonte clicando duas vezes no arquivo.ino ou acessando o menu Arquivo.
Com Heltec conectado a USB, selecione o menu Ferramentas => Cartão: "Heltec_WIFI_LoRa_32"
Ainda no menu Ferramentas, selecione a porta COM onde o Heltec está conectado.
Clique no botão FAZER UPLOAD…
… E aguarde a conclusão.
Etapa 8: Arquivos
Baixe os arquivos:
EU NÃO
Recomendado:
Introdução ao ESP32 - Instalando placas ESP32 no IDE Arduino - Código ESP32 Blink: 3 etapas
Introdução ao ESP32 | Instalando placas ESP32 no IDE Arduino | ESP32 Blink Code: Neste instructables veremos como começar a trabalhar com esp32 e como instalar placas esp32 no IDE do Arduino e iremos programar esp 32 para executar o código blink usando arduino ide
LoRa ESP32 Radios Tutorial de introdução fácil - Sem fiação: 6 etapas
LoRa ESP32 Radios Tutorial de introdução fácil | Sem fiação: Ei, tudo bem, pessoal? Akarsh aqui da CETech. Hoje vamos fazer um projeto que é basicamente sobre como configurar rádios LoRa para se comunicarem da maneira mais fácil possível. Aqui o microcontrolador que usei é o ESP32, que é c
Introdução LoRa e Módulo RFM95 / RFM95W Hoperf: 5 etapas
Introdução LoRa & Module RFM95 / RFM95W Hoperf: Nesta oportunidade, faremos uma breve caracterização sobre LoRa ™ e especificamente o Rádio RFM95 / 96 fabricado pela Hoperf Electronics. Há alguns meses atrás chegaram 2 módulos, inicialmente quero fazer uma introdução sobre o assunto
ESP32 com OLED integrado (WEMOS / Lolin) - Introdução ao estilo Arduino: 4 etapas
ESP32 com OLED integrado (WEMOS / Lolin) - Introdução ao estilo Arduino: Se você é como eu, aproveite a chance de colocar as mãos no melhor e mais recente ESP8266 / etc … e colocá-lo à prova. O ESP32 não é diferente, mas descobri que ainda não há muito por aí no que diz respeito à documentação. O
TOD: Introdução ao Diode Matrix ROM (display de 7 segmentos): 7 etapas
TOD: Diode Matrix ROM Intro (Display de 7 segmentos): Toneladas de Diodos Uma nova série de instructables que usará toneladas e toneladas de diodos. Nenhum IC está em voz alta, os únicos semicondutores são diodos e transistores. Os únicos componentes passivos em voz alta são capacitores, resistores, interruptores, indutores e