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.
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:
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, 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:
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:
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:
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:
Com a biblioteca devidamente instalada, carregue o programa abaixo no NodeMCU:
//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.