Segue um guia prático e focado sobre usar módulos com driver SSD1306 (e variações compatíveis) no display NFP1315-45A. Inclui compatibilidade, ligação elétrica, endereços I²C, pontos de atenção e exemplos de código (Arduino/ESP32 e MicroPython).

Resumo rápido — compatibilidade

  • Muitos módulos NFP1315 (ex.: variantes 45A/61A) usam controladores compatíveis com SSD1306; alguns usam SSD1315 — são muito próximos, mas não idênticos. Verifique o controlador do seu módulo (silkscreen / documentação do vendedor). Se o chip for SSD1306, os drivers/ bibliotecas SSD1306 funcionarão; se for SSD1315 pode ser necessária outra variante da biblioteca (ou usar uma implementação compatível). (GitHub)

Datasheets e referência técnica

  • Datasheet do SSD1306 (Solomon / Adafruit copies): contém comandos de inicialização, modos de comunicação (I²C, SPI), endereços I²C recomendados e consumo. Use como referência primária para sequências de inicialização e comandos de controle. (Adafruit)
  • Especificações do módulo (tensão de alimentação, corrente, dimensões) variam entre fabricantes; módulos “breakout” costumam incluir regulador 5→3.3V. Verifique a folha de produto do seu módulo. (Mouser Electronics)

Ligações elétricas (padrão I²C)

  1. VCC → 3.3V (ou 5V se o módulo tiver regulador on-board; confirmar no módulo). (Mouser Electronics)
  2. GND → GND
  3. SDA → linha SDA do microcontrolador (ESP32 exemplo: GPIO21)
  4. SCL → linha SCL do microcontrolador (ESP32 exemplo: GPIO22)
  5. RST e/ou DC: alguns módulos expõem pinos RST / DC (para SPI/parallel). Para I²C muitas bibliotecas podem funcionar sem RST externo, mas conectar RST se disponível é recomendado para um reset limpo.
  6. Obs.: muitos módulos SSD1306/I²C usam pull-ups internas no breakout; se usar numa placa sem pull-ups ativas, adicione resistores de pull-up (~4.7k) em SDA/SCL. (Mouser Electronics)

Endereço I²C típico

  • Endereço I²C mais comum: 0x3C (outro possível: 0x3D). Confirme com um scanner I²C se necessário. Informação e exemplos no datasheet. (Adafruit)

Padrões de inicialização / atenção prática

  • Inicialize VCC/GND antes de ligar o barramento I²C.
  • Verifique se o módulo tem régua de alimentação (algumas placas esperam 5V e regulam internamente; outras não — alimentar com 5V direto pode danificar displays que não têm regulador). (Mouser Electronics)
  • Se o display parecer “inativo” após ligar, tente reset via pino RST (se conectado) e confirme endereço I²C com scanner.
  • Para displays de 1.3” ou variantes maiores, o controlador pode ser SSD1315/SSD1331/etc.; nesses casos a resolução e seqüência de inicialização podem diferir ligeiramente — use a biblioteca adequada ou uma variante compatível. (Arduino Forum)

Exemplo — Arduino (ESP32 / UNO compatível com Wire)

// Exemplo com biblioteca Adafruit_SSD1306
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1 // se usar pino RST coloque o número (ex: 16), senão -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
void setup() {
  Wire.begin(); // para ESP32: Wire.begin(SDA,SCL) se quiser GPIO custom
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // endereço 0x3C
    // falha de inicialização
    for(;;);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.println("SSD1306 OK");
  display.display();
}
 
void loop() { }

(Adafruit_SSD1306 usa a sequência de inicialização baseada no SSD1306; se seu módulo for SSD1315, testar U8g2 ou uma implementação específica pode ser necessário.)

Exemplo — MicroPython (ESP32/ESP8266)

from machine import Pin, I2C
import ssd1306
i2c = I2C(0, scl=Pin(22), sda=Pin(21))  # ESP32 default
# para 128x64
oled = ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
oled.fill(0)
oled.text('SSD1306 OK', 0, 0)
oled.show()

Exemplo — ESPHome / PlatformIO / Linux drivers

  • ESPHome tem suporte a SSD1306 via I²C/SPI e documenta configurações e opções (ex.: display type, update interval). Útil se usar Home Assistant. (esphome.io)

Bibliotecas e recursos úteis

  • Adafruit_SSD1306 (Arduino).
  • U8g2 (mais abrangente, suporta variantes e opções de fonte/rotação).
  • ssd1306 nativo para MicroPython.
  • Repositório específico NFP1315 (implementações minimalistas/ crates/ libs) — bom para ver como a comunidade tratou variantes NFP1315. (GitHub)

Checklist rápido para integração com NFP1315-45A

  1. Identificar controlador no módulo (SSD1306 vs SSD1315). (GitHub)
  2. Confirmar tensão de alimentação (3.3V vs 5V com regulador). (Mouser Electronics)
  3. Fazer scan I²C (i2cdetect ou scanner no MicroPython/Arduino) para confirmar endereço (0x3C / 0x3D). (Adafruit)
  4. Testar com biblioteca SSD1306; se não funcionar, tentar U8g2 ou procurar biblioteca específica do controlador. (esphome.io)