Descubra o IP do ESP32 sem PC usando display OLED (guia completo!)

 

ESP32 exibindo endereço IP em display OLED SSD1306 via comunicação I2C, sem uso de computador
Descubra o IP do ESP32 diretamente no display OLED SSD1306 usando I2C — solução prática e ideal para projetos sem monitor serial.

Como descobrir o IP do ESP32!!!

Se você trabalha com ESP32, já deve ter se perguntado:
“Qual é o IP do meu ESP32 agora?” 🤔

Em projetos de campo ou standalone (sem computador), isso pode ser um problema.
A solução é simples, elegante e profissional: mostrar o IP diretamente em um display OLED SSD1306 via I2C.


Por que mostrar o IP no display?

  • ✅ Não precisa do Monitor Serial
  • ✅ Ideal para projetos autônomos
  • ✅ Acesso rápido via navegador
  • ✅ Visual mais profissional no projeto

Entendendo a comunicação I2C (bem simples)

O I2C (Inter-Integrated Circuit) é um tipo de comunicação que usa apenas 2 fios:

  • SDA → Dados
  • SCL → Clock (ritmo da comunicação)

👉 Pense assim:

  • SCL = batida da música 🎵
  • SDA = a letra da música 🎤


Por que usamos os pinos GPIO 21 e 22 no ESP32?

No projeto, utilizamos:

  • GPIO 21 → SDA (dados)
  • GPIO 22 → SCL (clock)

Mas por que exatamente esses pinos?


Padrão do ESP32

O ESP32 já possui um padrão definido para comunicação I2C:

  • GPIO 21 → SDA
  • GPIO 22 → SCL

👉 Ou seja, esses são os pinos recomendados pela própria arquitetura do ESP32.


⚙️ Funcionamento na prática

Quando usamos no código:

Wire.begin(21, 22);

ou até mesmo:

Wire.begin();

👉 O ESP32 já entende automaticamente que deve usar esses pinos.


🚀 Vantagens de usar esses pinos

  • ✅ Compatibilidade com a maioria dos tutoriais
  • ✅ Menos chance de erro
  • ✅ Funciona sem configuração extra
  • ✅ Padrão adotado pelas bibliotecas

🔄 Posso usar outros pinos?

Sim! O ESP32 permite usar outros GPIOs para I2C:

Wire.begin(18, 19);

Porém:

  • pode exigir ajustes no código
  • alguns pinos têm funções especiais
  • pode causar conflitos dependendo do projeto

⚠️ Dica importante

Evite usar pinos que são utilizados no boot ou têm funções específicas, pois isso pode causar falhas ou impedir o funcionamento correto.


Resumindo

Usar os pinos 21 e 22 é a forma mais simples e segura de trabalhar com I2C no ESP32.

👉 É como usar uma “configuração padrão” que funciona sem complicação.

👉 No nosso projeto:

  • ESP32 = Mestre
  • OLED SSD1306 = Escravo

Endereço I2C

Cada dispositivo tem um “endereço”, como se fosse um CEP.

O display OLED normalmente usa:

  • 0x3C

👉 É assim que o ESP32 sabe com quem está falando.


Vantagem do I2C

Com apenas 2 fios, você pode ligar vários dispositivos:

  • Display OLED
  • Sensores
  • Memórias

Tudo no mesmo barramento!


Entendendo o display OLED SSD1306

O SSD1306 é um display OLED muito popular.


Características principais

  • 📏 Tamanho: 0.96”
  • 📺 Resolução: 128x64 pixels
  • 💡 Não precisa de backlight
  • ⚡ Baixo consumo
  • 🔌 Comunicação I2C

Como ele funciona?

Você não escreve direto na tela.

👉 Primeiro escreve em um “buffer”
👉 Depois envia com:

display.display();

✍️ Exemplo básico

display.setCursor(0,0);
display.println("Ola!");
display.display();

O que dá pra fazer?

  • Mostrar IP
  • Criar menus
  • Desenhar formas
  • Mostrar ícones
  • Fazer animações simples

Ligação do display no ESP32

OLEDESP32
VCC3.3V
GNDGND
SDAGPIO 21
SCLGPIO 22

Bibliotecas necessárias

Instale na IDE Arduino:

  • Adafruit SSD1306
  • Adafruit GFX
ligacao-display-oled-esp32-i2c-endereco-ip
Exemplo de ligação do display OLED I2C no ESP32 exibindo o endereço IP — atenção para modelos com VCC invertido


Código completo

👉 Atenção: substitua "SEU_WIFI" e "SUA_SENHA" pelos dados da sua rede para garantir que o projeto conecte corretamente!



/***************************************************************
 *  Projeto: Como descobrir o IP do ESP32 no display OLED
 *  Autor: RobRobot
 *  Plataforma: ESP32
 *  Display: SSD1306 OLED 128x64 (I2C)
 *
 *  Descrição:
 *  Conecta o ESP32 ao Wi-Fi e exibe o endereço IP
 *  no display OLED de forma visual e profissional.
 *
 *  Comunicação:
 *  - I2C (SDA e SCL)
 *
 *  Bibliotecas:
 *  - WiFi.h
 *  - Wire.h
 *  - Adafruit GFX
 *  - Adafruit SSD1306
 *
 *  Data: 2026
 ***************************************************************/

#include <WiFi.h>                             // Biblioteca Wi-Fi
#include <Wire.h>                             // Comunicação I2C
#include <Adafruit_GFX.h>             // Funções gráficas
#include <Adafruit_SSD1306.h>     // Controle do OLED

// =========================
// CONFIGURAÇÕES DO DISPLAY
// =========================
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_SDA 21               // Pino SDA do ESP32
#define OLED_SCL 22               // Pino SCL do ESP32
#define OLED_ADDR 0x3C      // Endereço I2C do display

// =========================
// CONFIGURAÇÕES WI-FI
// =========================
#define WIFI_SSID "SEU_WIFI"            // 📡 Nome da sua rede Wi-Fi
#define WIFI_PASS "SUA_SENHA"      // 🔑 Senha da rede para conexão

// =========================
// OBJETO DISPLAY
// =========================
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// ============================================================
// FUNÇÃO SETUP (executa uma vez)
// ============================================================
void setup() {

  Serial.begin(115200); // Inicializa serial para debug

  // Inicializa comunicação I2C com os pinos definidos
  Wire.begin(OLED_SDA, OLED_SCL);

  // Inicializa o display OLED
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println("Erro ao iniciar display!");
    while (true); // Trava se der erro
  }

  // Limpa a tela
  display.clearDisplay();

  // =========================
  // TELA DE INICIALIZAÇÃO
  // =========================
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(15, 20);
  display.println("Conectando WiFi...");
  display.display();

  // =========================
  // CONEXÃO WI-FI
  // =========================
  WiFi.begin(WIFI_SSID, WIFI_PASS);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWiFi conectado!");

  // =========================
  // CAPTURA DO IP
  // =========================
  String ip = WiFi.localIP().toString();

  // =========================
  // TELA FINAL (VISUAL)
  // =========================
  display.clearDisplay();

  // Título
  display.setTextSize(1);
  display.setCursor(20, 6);
  display.println("ESP32 ONLINE");

  // Linha decorativa
  //display.drawLine(0, 18, 128, 18, SSD1306_WHITE);
  display.drawLine(10, 18, 118, 18, SSD1306_WHITE);

  // Texto descritivo
  display.setCursor(0, 30);
  display.println("Endereco IP:");

  // IP em destaque
  display.setTextSize(1);
  display.setCursor(0, 50);
  display.println(ip);

  // Atualiza display
  display.display();
}

// ============================================================
// LOOP (não utilizado)
// ============================================================
void loop() {
  // Nada aqui
}


Resultado no display

ESP32 ONLINE
----------------
Endereco IP:

192.168.0.105

✔ Simples
✔ Bonito
✔ Funcional


Ideias para evoluir o projeto

  • 📶 Mostrar intensidade do Wi-Fi (RSSI)
  • 🎬 Animação de conexão
  • 🧭 Menu com botões
  • 📊 Dashboard com sensores

 Conclusão

Com apenas:

  • 1 ESP32
  • 1 display OLED
  • 2 fios (I2C)

Você cria um sistema extremamente útil e profissional.

👉 Mostrar o IP no display é uma solução simples, mas poderosa — perfeita para projetos reais e conteúdos que geram engajamento.


🔧 Acompanhe o RodRobot

Projetos maker com ESP32, Arduino, eletrônica e programação.

RodRobot – Projetos maker, eletrônica e programação na prática.

Comentários

Postagens mais visitadas deste blog

ESP32 Botão Touch: Como Usar o Sensor Touch (Tutorial com LED e Relé)

1. Como Medir a Intensidade do Sinal Wi-Fi no ESP32 (RSSI em dBm) (Código e Projeto) - com Display OLED SSD1306