Como usar display OLED com ESP8266 ESP-12E

Como usar display OLED com ESP8266 ESP-12E

Neste post vamos ver como utilizar o Display OLED I2C com o módulo wifi ESP8266 ESP-12E. Se você preferir, é possível seguir o passo a passo com os demais modelos do ESP8266.

Display OLED e ESP8266 ESP-12E

Antes de iniciar, eu sugiro a leitura do post Como programar o módulo ESP8266 NodeMCU pois iremos utilizar o firmware do NodeMCU.

Como ligar o display Oled no ESP8266 

O display OLED utiliza barramento I2C, e para tal vamos conectar o SCL no GPIO 12 (pino 6) e o SDA no GPIO 13 (pino 7). Na imagem abaixo é possível observar o circuito montado.

Circuito display Oled e ESP8266

Firmware NodeMCU

Como iremos utilizar o display OLED, o firmware instalado no NodeMCU deve possuir os módulos I2C e U8G habilitados. O módulo I2C é responsável pela comunicação com o display, já o módulo U8G é responsável pela parte gráfica, permitindo desenhar ou escrever no display.

Para maiores informações sobre como gravar o firmware no ESP8266, acesse este link.

É importante ressaltar que o controlador do display é o SSD1306 e o tamanho da tela é de 128×64 pixels, sendo assim, o módulo U8G deve ser compilado com esta versão. Versões customizadas do firmware NodeMCU podem ser conseguidas através do site NodeMCU custom builds. Nas imagens abaixo você pode observar quais módulos deve selecionar e como configurar o módulo U8G.

Módulos NodeMCU

Opções UG8

Programa display e ESP8266 ESP-12E

Nas linha 1 e 2 definimos os pinos onde estão conectados o SDA e o SCL respectivamente. Na linha 3 indicamos o endereço I2C do controlador SSD1306. Na linhas 5 configuramos o barramento I2C, já na linha 6 configuramos o display.

SDA = 7
SCL = 6
ADDRESS = 0x3c

i2c.setup(0, SDA, SCL, i2c.SLOW)
disp = u8g.ssd1306_128x64_i2c(ADDRESS)

function draw()
  disp:setFont(u8g.font_6x10)
  disp:drawStr(34, 10, "FILIPEFLOP")
  disp:drawLine(0, 25, 128, 25);
  disp:setFont(u8g.font_chikita)
  disp:drawStr(30, 40, "Blog FILIPEFLOP")
  disp:drawStr(20, 50, "Tutoriais e Projetos")
  disp:drawStr(38, 60, "com Arduino")
end

function loop()
  disp:firstPage()

  repeat
    draw()
  until disp:nextPage() == false

  -- devemos chamar tmr.wdclr() em um loop contínuo
  -- para evitar hardware reset causado pelo watchdog.
  tmr.wdclr()
  loop()
end

loop()

O programa contém uma seção chamada draw, onde ficam os comandos de acionamento do display. Dentro dele, temos os comandos para escrever na tela (drawStr), desenhar linha (drawLine), assim como selecionar a fonte utilizada para o texto (setFont).

A seção loop, é responsável por chamar a seção draw para desenhar a tela. Note que na linha 27 fazemos o reset do watchdog no NodeMCU. Isto é necessário quando criamos uma função recursiva ou quando fazemos um laço de repetição muito grande, pois evita que o hardware reset.

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

3
Como usar display OLED com ESP8266 ESP-12E
13 votos, 5.00 classificação média (100% pontuação)

Formado em Ciência da Computação pela Universidade Regional de Blumenau, é colaborador do site FILIPEFLOP.

Compartilhe este Post

17 Comentários

  1. Qual módulo ESP8266 comprar? | Blog FILIPEFLOP - 13 de junho de 2017

    […] ESP8266, como o NodeMCU, que veremos mais adiante. No blog temos um interessante post ensinando a utilizar o módulo com display Oled. Esse post usa especificamente o ESP-12E, mas você pode usar o mesmo princípio para ligar o […]

  2. Cristiano - 3 de janeiro de 2017

    Olá. Não seria necessário ter resistores de pull-up para o barramento I2C ?

  3. Igor Carvalho de Paula - 30 de setembro de 2016

    É possível pegar a posição GPS somente com ele, ligado ao roteador de um celular?

    • Alexandre Vicenzi - 30 de setembro de 2016

      Não entendi a pergunta, você quer descobrir a posição baseada na rede, ou você quer ligar um GPS ao módulo e pedir para o ESP retornar a posição atual dele?

      Em ambos os casos é possível, porém descobrir a localização baseada na rede/IP é mais complicado.

      Se você conectar um GPS ao ESP e programar o ESP para retornar a posição é mais simples.

  4. Agostinho Neto - 10 de junho de 2016

    Vocês tem algum manual para a configuração do módulo ESP8266 ESP-07, ou eu posso me basear no manual do ESP8266 ESP-12E mesmo?

  5. Vitoa - 24 de maio de 2016

    Olá, muito interessante adicionar um OLED a um ESP12.
    A primeira vez que testei deu bem. Testei várias vezes.
    Mas alguns dias depois voltei a testar o mesmo setup e o oled fica com pontos em vez de texto.

    Alguem me sabe dizer o que poderá causar isto?
    O oled é iniciado mas em vez de aparecer texto aparecem pontos.

  6. Diego Gervazio - 19 de abril de 2016

    Parabéns amigo. Ótimo post.
    Gostaria de saber se vc pode me ajudar com algo.
    Tenho um computador que recebe informações de outro computador pela porta serial. São 3 strings. Essas informações atualmente são exibidas em um programa no computador. Gostaria de saber se é possível enviar essas 3 strings para o arduino por wifi e exibir em um display. Se houver jeito, poderia me sugerir a melhor forma de conseguir fazer o envio dessa informação?.
    Desde já agradeço muito amigo

  7. Joaquin Paredes - 7 de abril de 2016

    Por favor, puedes poner la orden para seleccionar los colores del texto?
    Gracias

    Por favor, ¿você pode colocar a ordem para selecionar as cores do texto?
    Obrigado

  8. Paulo R G Ferreira - 31 de março de 2016

    Alexandre, parabéns pela clareza e concisão do artigo. Mas gostaria de saber se (como) é possível descobrir que módulos compõem a versão pré-distribuída do binário NodeMCU para evitar retrabalho de reconfigurá-lo.
    A ferramenta ESPlorer tem algum recurso para isso?
    Antecipadamente agradecido.

Deixe uma resposta