Como usar display OLED com ESP8266 ESP-12E 18

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.

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!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

18 Comentários

  1. 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.

    1. Alexandre:
      Já vi a resposta à minha pergunta.
      Era só observar a mensagem de inicialização do ESP8266 com nodeMCU.

      1. Sim, na hora do boot são exibidas algumas informações úteis.

  2. 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

    1. O display possui duas cores, na parte superior ele é amarelo, na inferior ele é azul. Não existe código para mudar a cor do texto.

  3. 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

    1. Diego, é possível sim. Creio que a melhor forma seja utilizando o protocolo MQTT.

  4. 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.

    1. Os pinos I2C estão conectados corretamente?

      1. Já funciona bem. faltava loop() no final
        FilipeFlop testado em Portugal https://db.tt/u1vBNhHb

        Muito obrigado pelo tutorial Simples e funcional. *****

  5. 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?

    1. O 12E possui apenas alguns pinos a mais que o 07 e antena embutida. Ambos são compatíveis. Que tipo de manual você se refere?

      1. Seria um tutorial como esse do esp8266: http://blog.filipeflop.com/wireless/esp8266-arduino-tutorial.html, no qual você mostra como os pinos devem ser conectados e um código de exemplo.

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

    Igor Carvalho de Paula
    1. 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.

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

  8. ola, primeiramente seu blog eh otimo!
    Gostaria de saber se voce pode me ajudar com o seguinte. Preciso mudar os pinos de sda e clk do i2c na ide do arduino. Meu projeto precisa dessa mudanca, quero mudar para as gpios 0 e gpio2. O default do arduino eh na gpio 5 e gpio 4 mas eu as utilizo em outra funcao.
    obrigado

Trackbacks and Pingbacks

  1. […] 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 […]