20 abril 2018

Como usar o NodeMCU ESP8266 com display Oled I2C

Neste post vamos ver como incrementar o seu projeto de IoT mostrando a conexão do Módulo wifi NodeMCU ESP8266 com display Oled I2C, um componente com baixo consumo de energia, que não possui backlight e pode ajudar o seu projeto a funcionar por longos períodos economizando energia ao mesmo tempo em que mostra informações importantes na sua tela.

Modulo wifi NodeMCU ESP8266 com Display Oled I2C

Para maiores informações sobre a utilização de display Oled, confira outros posts sobre display Oled I2C aqui no Arduino e Cia.


Circuito NodeMCU ESP8266 com display Oled


Vamos conectar o display Oled I2C no NodeMCU ESP8266 utilizando para a comunicação I2C os pinos D1 para o SDA e D2 para SCL, conforme o circuito abaixo:

Circuito NodeMCU ESP8266 e Display Oled I2C



A alimentação será feita por meio dos pinos GND e 3V3 do NodeMCU. Nesse ponto, preste bastante atenção na ligação já que em alguns displays a posição dos pinos Vcc e GND está invertida, ok?

Configurando o ESP8266 na IDE Arduino


Antes de partir para a programação do NodeMCU com Display Oled I2C, precisamos configurar a IDE e inserir o ESP8266 (e consequentemente o NodeMCU) na lista de placas. Siga o procedimento abaixo.

Entre na IDE do Arduino e selecione Arquivo => Preferências. Na tela de Preferências, insira o link abaixo no campo URLs adicionais de Gerenciadores de placas:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Sua tela ficará assim:

Preferencias IDE Arduino

Clique em OK para retornar à tela principal da IDE. Selecione agora o menu Ferramentas => Placa => Gerenciador de placas. Dentro do gerenciador, procure por esp8266 by ESP8266 Community e clique em instalar:

Gerenciador de placas IDE Arduino

Esse procedimento disponibiliza as placas da linha ESP8266 na lista de placas da IDE do Arduino e agora basta selecionar a placa NodeMCU 1.0 (ESP-12E module) no menu Ferramentas => Placa, conforme imagem abaixo:

NodeMCU ESP8266 IDE Arduino

Com esse procedimento, estamos com a IDE configurada para o ESP8266 e prontos para carregar o programa que vai controlar o display Oled conectado no NodeMCU.

Programando o NodeMCU com IDE Arduino


Com a IDE configurada para as placas ESP8266, vamos agora instalar a biblioteca para o display Oled, que tem o controlador SSD1306. Para isso, acesse o menu Sketch => Incluir Biblioteca => Gerenciar Bibliotecas. No Gerenciador de Biblioteca (tela abaixo), procure por SSD1306 e selecione a biblioteca chamada ESP8266 and ESP32 Oled Driver for SSD1306 Display. Clique em Instalar:

Biblioteca SSD1306 IDE Arduino ESP8266

Com a biblioteca devidamente instalada, carregue o programa abaixo no NodeMCU:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//Programa: NodeMCU ESP8266 com display Oled I2C
//Autor: Arduino e Cia

#include <Wire.h>
#include "SSD1306Wire.h"

//Pinos do NodeMCU
// SDA => D1
// SCL => D2

// Inicializa o display Oled
SSD1306Wire  display(0x3c, D1, D2);

void setup()
{
  Serial.begin(115200);
  display.init();
  display.flipScreenVertically();
}

void telainicial()
{
  //Apaga o display
  display.clear();
  display.setTextAlignment(TEXT_ALIGN_CENTER);
  //Seleciona a fonte
  display.setFont(ArialMT_Plain_16);
  display.drawString(63, 10, "NodeMCU");
  display.drawString(63, 26, "ESP8266");
  display.drawString(63, 45, "Display Oled");
  display.display();
}

void graficos()
{
  display.clear();
  //Desenha um quadrado
  display.drawRect(12, 12, 30, 30);
  //Desenha um quadrado cheio
  display.fillRect(20, 20, 35, 35);
  //Desenha circulos
  for (int i = 1; i < 8; i++)
  {
    display.setColor(WHITE);
    display.drawCircle(92, 32, i * 3);
  }
  display.display();
}

void ProgressBar()
{
  for (int counter = 0; counter <= 100; counter++)
  {
    display.clear();
    //Desenha a barra de progresso
    display.drawProgressBar(0, 32, 120, 10, counter);
    //Atualiza a porcentagem completa
    display.setTextAlignment(TEXT_ALIGN_CENTER);
    display.drawString(64, 15, String(counter) + "%");
    display.display();
    delay(10);
  }
}

void loop()
{
  telainicial();
  delay(3000);
  graficos();
  delay(3000);
  ProgressBar();
  delay(3000);
}

O programa mostra na tela exemplos de texto, como o exemplo da imagem no início deste post, e também exemplos gráficos. Confira também um exemplo prático de uso do NodeMCU ESP8266 com display Oled I2C no post Relógio com NodeMCU ESP8266 usando NTP.

3 comentários:

  1. Seguindo o tutorial, consegui verificar e carregar no NODE MCU porém nada apareceu na tela do display OLED.
    Alguém ja passou por isso?

    ResponderExcluir
    Respostas
    1. Oi Lucas,

      Tudo bem? Pode ser que o seu display oled tenha um endereço diferente do que foi usado no tutorial. Você tem alguma maneira de descobrir o endereço desse display? (por exemplo usando o Arduino e o I2C Scanner?)

      Abraço!

      Adilson

      Excluir