Exiba o código QR na tela OLED com o ESPPOP 10 usando o Arduino IDE

Exiba o código QR na tela OLED com o ESPPOP 10 usando o Arduino IDE
Esp32 é uma placa de microcontrolador que pode interagir com muitos dispositivos. Usando uma tela OLED com ESP32, qualquer informação pode ser exibida, como código QR, imagens, texto e até formas. Pode -se também pegar dados de diferentes sensores e exibir sua saída em uma tela OLED. Este guia cobrirá todas as etapas para exibir uma imagem de código QR no OLED com ESP32 usando o Arduino IDE.

Esta lição inclui os seguintes tópicos:

  • 1: Introdução à tela OLED
  • 2: Módulo de exibição OLED de fiação para ESP32
  • 3: Instalando as bibliotecas necessárias
  • 4: Verifique o endereço I2C da tela OLED
  • 5: Exibir código QR na tela OLED com ESP32 usando Arduino IDE
  • 5.1: Criando um código QR
  • 5.2: convertendo código QR em código hexadecimal
  • 5.3: código
  • 5.4: Exemplo de código Arduino para o Código QR Display
  • 5.5: saída
  • 5.6: Examinando o código QR da tela OLED

1: Introdução à tela OLED

Antes de avançar mais primeiro, devemos saber o que é uma tela OLED. OLED (Diodo emissor de luz orgânico) Os monitores são usados ​​como alternativa ao LCDS. LEDs OLED são usados ​​para produzir telas de luz nas telas OLED. A tela LCD usa luz de fundo para iluminar seus pixels, enquanto os monitores OLED têm seus próprios LEDs auto -emissivos. Existem centenas de LEDs auto-iluminadores. Para exibir imagens e o brilho do texto desses LEDs, pode ser controlado por pixel por pixel.

Agora, como conhecemos alguns princípios básicos relacionados à tela OLED. O próximo passo é conectar ESP32 com um módulo de exibição OLED.

2: Módulo de exibição OLED de fiação para ESP32

A tela OLED vem principalmente com dois protocolos de comunicação diferentes. Os dois protocolos são i2c e spi. A interface periférica em série (SPI) é geralmente mais rápida que o I2C, mas preferimos o protocolo I2C do SPI, pois exigia menos número de pinos.

A imagem a seguir ilustra o diagrama de conexão ESP32 com 128 × 64 pixels (0.96 ") OLED Display.

Abaixo está a tabela de conexão:

Depois que o ESP32 é interfocado com uma tela OLED, a próxima etapa da lista é instalar todas as bibliotecas necessárias para programação ESP32 usando Arduino IDE.

3: Instalando as bibliotecas necessárias

Várias bibliotecas estão disponíveis no Arduino IDE para programar ESP32 com uma tela OLED. Aqui estaremos usando duas bibliotecas da Adafruit: SSD1306 e GFX Library.

Agora, no Arduino IDE Open Library Manager e pesquise a biblioteca OLED SSD1306. Instale a biblioteca SSD1306 por Adafruit na barra de pesquisa.

Como alternativa, também se pode ir para: Sketch> Incluir biblioteca> Gerenciar bibliotecas

A próxima biblioteca que precisamos instalar é o Biblioteca GFX por Adafruit.

Depois que ambas as bibliotecas são instaladas com sucesso, a próxima etapa é verificar o endereço i2C onde o ESP32 está conectado.

4: Verifique o endereço I2C da tela OLED

I2C significa Comunicação de Circuito Integrado. Usando I2C, podemos interface vários dispositivos em 2 fios. No entanto, enquanto conecta -os a todos os dispositivos I2C devem usar um endereço I2C separado. Este endereço varia de 0 a 127. Por exemplo, se tivermos dois dispositivos I2C diferentes usando o mesmo endereço I2C, eles não podem ser conectados na mesma linha i2c.

É importante verificar o endereço I2C primeiro. Para verificar o endereço I2C do visor OLED conectado conectado ESP32 com PC, faça o upload do código fornecido no artigo Verifique o endereço I2C usando Arduino IDE.

Após o upload do código, a seguinte saída será exibida. Aqui, no nosso caso, a tela OLED está conectada no endereço I2C (0x3C).

Usaremos o endereço I2C mencionado para a tela OLED no código Arduino.

5: Exibir código QR na tela OLED com ESP32 usando Arduino IDE

O primeiro passo necessário para exibir qualquer código QR em uma tela OLED é converter a imagem do código QR em um código hexadecimal. Usando qualquer imagem on -line para conversor hexadecimal, podemos obter código hexadecimal contra uma imagem.

Mas antes disso, temos que criar um código QR de amostra.

1: Criando um código QR

Para criar código QR, várias ferramentas gratuitas online estão disponíveis. Aqui está um texto gratuito para o gerador de código QR.

Usando esta ferramenta qualquer texto ou link pode ser convertido em código QR. Aqui criamos um código QR para o endereço do site Linuxhint.

2: convertendo código QR em código hexadecimal

Para converter qualquer código QR em código hexadecimal, podemos usar qualquer ferramenta online ou também pode converter a imagem do código QR em código hexadecimal usando a ferramenta de pintura do Windows. Agora siga as etapas para obter o código hexadecimal para sua imagem de código QR.

Passo 1: Clique aqui para visitar o conversor GRATUITO Image2CPP.

Passo 2: Selecione a imagem do código QR que queremos exibir no OLED.

etapa 3: Depois de selecionar a imagem do código QR, clique em abrir.

Passo 4: Na configuração de imagem, defina as dimensões para 128 x 64. O brilho pode ser definido de acordo com a imagem que o número recomendado está em torno de 150.

Escala a imagem do código QR de acordo com o tamanho e, para referência, consulte a visualização de saída.

Etapa 5: Agora defina o formato de saída de código no código Arduino e prefixo como bitmap. Depois disso, clique em gerar código. Código hexadecimal de saída pode ser copiado da janela de saída.

Substitua o código hexadecimal copiado no código de amostra Arduino IDE.

3: código

Agora abra o Arduino IDE e cole o código abaixo. Lembre -se de substituir o código hexadecimal por um para a imagem do código QR que você precisa exibir em uma tela OLED.

/****** Linuxhint.Com ********/
#incluir
#incluir
#incluir
#Define screen_width 128
#Define screen_height 64
Adafruit_ssd1306 Display (Screen_width, Screen_Height, & Wire, -1);
estático const uint8_t image_hex_array [1024] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x80, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x18, 0x03, 0xe1, 0x0c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x03, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xf8, 0x63, 0x1c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe0, 0xfc, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;
Void Setup ()
Serial.começar (115200); // Taxa de transmissão para comunicação serial
se(!mostrar.BEGIN (SSD1306_SWITCHCAPVCC, 0X3C))
Serial.println (f ("alocação SSD1306 falhou"));
para(;;);

Atraso (2000); // atraso 2 seg
mostrar.clearDisplay (); // Buffer de exibição transparente
mostrar.drawbitmap (0, 0, image_hex_array, 128, 64, 1);
mostrar.mostrar();

Void Loop ()

O código iniciado pela importação de bibliotecas necessárias que instalamos anteriormente. Duas bibliotecas incluem a biblioteca Wire and Adafruit. As bibliotecas de arame nos permitem usar o I2C enquanto a Adafruit ajuda a exibir o texto escrito na tela.

O próximo comando a seguir está escrito:

Adafruit_ssd1306 Display (Screen_width, Screen_Height, & Wire, -1);

Ele contém o Screen_width e Screen_height variáveis. Usando essas variáveis, definimos o tamanho da tela OLED. Aqui estamos usando uma tela OLED 128 × 64. Depois disso &Arame O objeto é definido para exibição.

O último parâmetro contém (-1), Esta tela que a tela OLED que estamos usando não tem um botão de redefinição externo. Caso tenhamos um botão de redefinição na tela OLED. Vamos passar este parâmetro para um pino GPIO. Depois de pressionar o botão de redefinição, a tela OLED exibirá o texto.

No meio do código, incluímos o código Hex para a imagem do código QR e, depois disso, inicializou a comunicação I2C no endereço I2C (0x3c) é definido que encontramos anteriormente usando o código do scanner i2C.

Nas últimas linhas de código, a matriz hexadecimal é impressa no OLED usando a função de bitmap.

4: Exemplo de código Arduino para o Código QR Display

Aqui está um código fornecido para interface OLED com ESP32. Você deve substituir o código hexadecimal da imagem do código QR que deseja exibir na tela.

/****** Linuxhint.Com ********/
#incluir
#incluir
#incluir
#Define screen_width 128
#Define screen_height 64
Adafruit_ssd1306 Display (Screen_width, Screen_Height, & Wire, -1);
estático const uint8_t image_hex_array [1024] =
/*******
*******
*******
[Cole o código hexadecimal para a imagem aqui]
*******
*******
*******/
;
Void Setup ()
Serial.começar (115200); // Taxa de transmissão para comunicação serial
se(!mostrar.BEGIN (SSD1306_SWITCHCAPVCC, 0X3C))
Serial.println (f ("alocação SSD1306 falhou"));
para(;;);

Atraso (2000); // atraso 2 seg
mostrar.clearDisplay (); // Buffer de exibição transparente
mostrar.drawbitmap (0, 0, image_hex_array, 128, 64, 1);
mostrar.mostrar();

Void Loop ()

5: saída

Aqui na saída, podemos ver o código QR exibido na tela OLED. Este é o mesmo código QR que convertemos em código hexadecimal anteriormente.

Exibimos com sucesso uma imagem de código QR em uma tela OLED I2C. Usando as mesmas etapas, qualquer código QR com proporção correto pode ser exibido em uma tela OLED.

6: Examinando o código QR da tela OLED

Depois que o código QR é exibido, a última etapa é verificar se está funcionando ou não para que o smartphone seja usado. A maioria dos smartphones vem com um scanner de código QR pré -instalado, se não estiver disponível, pode ser facilmente baixado na App Store.

Agora coloque a câmera no código QR.

Se digitalizar com sucesso, o seguinte texto aparecerá. Este é exatamente o mesmo texto que salvamos ao criar o código QR.

Conclusão

Uma tela OLED é uma ótima maneira de mostrar saídas sem a necessidade de um monitor serial ou PC. Os displays OLED vêm com dois protocolos diferentes i2c e spi. I2C OLED Displays são preferidos devido a um número menor de fios. A tela OLED pode ser usada para exibir informações na tela como código QR ou código de barras usando. Esta lição fornece todas as etapas necessárias para exibir uma imagem de código QR em uma tela I2C OLED com ESP32 usando o Arduino IDE.