1.5″ Inch 128×128 White OLED Display Module (SSD1107, I2C Interface, 3.3V~5V, 4-Pin – GND/VCC/SCL/SDA)

SKU: FA2130-6
Display Type

OLED (Organic Light Emitting Diode), Passive Matrix

Resolution

128 × 128 pixels

Display Color

White (monochrome)

Driver IC

SH1107 / SH1107G

Communication Protocol

I2C (IIC) / SPI (module supports I2C)

Default I2C Address

0x3C (varies – verify with scanner)

Operating Voltage (VCC)

3.3V – 5V DC

Logic Voltage

3.3V (5V tolerant with level shifting)

RAM Required for Buffer

2KB (16,384 bits)

Product Overview

The 1.5-inch 128×128 White OLED Display Module is a high-density graphic display designed for embedded projects that require crisp, detailed visual output in a compact form factor. Driven by the SH1107 controller, this square-format display features a sharp 128×128 pixel resolution with bright white monochrome pixels on a true black background.

OLED (Organic Light Emitting Diode) technology requires no backlight, as each pixel emits its own light. This self-emissive design provides true blacks (inactive pixels are completely off), excellent contrast, and wide viewing angles — ensuring the display remains readable from virtually any angle while consuming minimal power.

The module uses the I2C interface, requiring only two data lines (SDA and SCL) to connect to your microcontroller. This preserves valuable I/O pins for other sensors and peripherals. With support for both 3.3V and 5V logic, it is directly compatible with ESP32, ESP8266, STM32, Raspberry Pi, and many other development boards – no level shifters required.

Important Memory Consideration: This display requires approximately 2KB of SRAM just for the display buffer (128×128 ÷ 8 = 2,048 bytes). As such, it cannot be used with memory-constrained microcontrollers like the Arduino Uno (ATmega328P) which has only 2KB total SRAM . For reliable operation, use a microcontroller with 16KB or more RAM such as ESP32, ESP8266, STM32, Teensy, SAMD21, SAMD51, or Raspberry Pi .

Key Features

  • 1.5-Inch Square Active Area: 128×128 pixel resolution with approximately 20mm × 20mm active area – perfect for square dashboard displays, menus, and graphics

  • Higher Resolution than Standard OLEDs: Offers 4× the pixels of common 128×64 OLEDs (16,384 vs 8,192 pixels) for significantly more detailed graphics and text

  • White Monochrome OLED: Clean white pixels on true black background provide excellent contrast and professional appearance

  • SH1107 Driver IC: Advanced controller designed specifically for higher-resolution 128×128 displays with built-in display buffer

  • I2C Interface: 4-pin connection (GND, VCC, SCL, SDA) – requires only 2 data lines, saving GPIO pins

  • Wide Voltage Compatibility: Operates on DC 3.3V – 5V with onboard 3.3V regulator and level shifting

  • Low Power Consumption: Only lit pixels consume power – ideal for battery-powered projects

  • Wide Operating Temperature: Rated for -40°C to +85°C, suitable for industrial and outdoor applications

Technical Specifications

Parameter Operating Value
Display Type OLED (Organic Light Emitting Diode), Passive Matrix
Resolution 128 × 128 pixels
Display Color White (monochrome)
Driver IC SH1107 / SH1107G
Communication Protocol I2C (IIC) / SPI (module supports I2C)
Default I2C Address 0x3C (varies – verify with scanner)
Operating Voltage (VCC) 3.3V – 5V DC
Logic Voltage 3.3V (5V tolerant with level shifting)
RAM Required for Buffer 2KB (16,384 bits)
Recommended MCU RAM 16KB or more
Active Area Approx. 20mm × 20mm
Module Dimensions Approx. 40.5mm × 30.5mm × 6mm
Pixel Size 0.15mm × 0.15mm
Pixel Pitch 0.15mm × 0.15mm
Brightness 100 cd/m² (typical)
Duty 1/64
Operating Temperature -40°C to +70°C
Storage Temperature -40°C to +85°C

Pinout & Connection Guide

The 4-pin I2C interface makes wiring extremely simple. The pin order may vary between manufacturers – always verify the silkscreen on your specific module.

Pin Definitions (4-Pin I2C)

Pin Label Function Description
1 GND Ground Connect to power supply ground
2 VCC Power Supply DC 3.3V – 5V power input
3 SCL I2C Clock Line Connect to SCL pin of microcontroller
4 SDA I2C Data Line Connect to SDA pin of microcontroller

I2C Pin Mapping for Common Development Boards

Development Board SDA Pin SCL Pin Power Note
ESP32 GPIO21 GPIO22 Use 3.3V on VCC
ESP8266 (NodeMCU) GPIO4 (D2) GPIO5 (D1) Use 3.3V on VCC
Raspberry Pi GPIO2 (Pin 3) GPIO3 (Pin 5) Use 3.3V (Pin 1)
STM32 (Blue Pill) PB7 (I2C1_SDA) PB6 (I2C1_SCL) Use 3.3V
Teensy 4.0 Pin 18 Pin 19 Use 3.3V

Wiring Diagram (ESP32 – Recommended)

text
OLED Module          →    ESP32
─────────────────────────────────────
VCC                  →    3.3V
GND                  →    GND
SCL                  →    GPIO22 (SCL)
SDA                  →    GPIO21 (SDA)

Wiring Diagram (Raspberry Pi)

text
OLED Module          →    Raspberry Pi
─────────────────────────────────────
VCC                  →    Pin 1 (3.3V)
GND                  →    Pin 6 (GND)
SCL                  →    Pin 5 (GPIO 3 / SCL)
SDA                  →    Pin 3 (GPIO 2 / SDA)

I2C Address Verification

Most SH1107 displays use I2C address 0x3C, but some may use other addresses. Run this address scanner before using the display to confirm :

cpp
#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("I2C Scanner");
}

void loop() {
  byte error, address;
  int nDevices = 0;
  
  for(address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    
    if(error == 0) {
      Serial.print("I2C device found at address 0x");
      if(address < 16) Serial.print("0");
      Serial.println(address, HEX);
      nDevices++;
    }
  }
  
  if(nDevices == 0) Serial.println("No I2C devices found");
  delay(5000);
}

Usage Guide

⚠️ Important: MCU Requirements

This display requires approximately 2KB of RAM for the display buffer (128×128÷8 = 2,048 bytes). Combined with your program code and other variables, this far exceeds the available RAM on memory-constrained microcontrollers.

Not Compatible With:

  • Arduino Uno / Nano (ATmega328P) – only 2KB total SRAM

  • Arduino Mega (limited available memory for buffer operation)

  • ATtiny series

Recommended Development Boards:

  • ESP32 – 520KB RAM (more than sufficient)

  • ESP8266 – 80KB RAM (sufficient)

  • Raspberry Pi – RAM abundant

  • STM32 series – RAM abundant

  • Teensy 4.0 – 1MB RAM

  • SAMD21 / SAMD51 – 32KB+ RAM

Software Setup (Arduino IDE)

Step 1: Install Required Libraries

The SH1107 driver is supported by several libraries. The U8g2 library is the most reliable for SH1107 displays, offering many font options and excellent compatibility.

  1. Open Arduino IDE → Sketch → Include Library → Manage Libraries

  2. Search for and install:

    • “U8g2” by Oliver Kraus – supports SH1107 displays

For Adafruit users: The Adafruit SH110X library also supports SH1107 (note: SH110X family includes SH1106 and SH1107, but some versions may have limited SH1107 support) .

Step 2: Basic Test Sketch (U8g2 Library)

cpp
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

// Hardware I2C mode for SH1107 128x128 display
U8G2_SH1107_128X128_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void setup() {
  u8g2.begin();                          // Initialize display
  u8g2.enableUTF8Print();                // Enable UTF8 characters if needed
  u8g2.setFont(u8g2_font_ncenB08_tr);    // Choose a suitable font
}

void loop() {
  u8g2.firstPage();                      // Start page loop
  do {
    u8g2.drawStr(0, 15, "1.5 OLED");
    u8g2.drawStr(0, 35, "128x128");
    u8g2.drawStr(0, 55, "SH1107");
    u8g2.drawStr(0, 75, "I2C Ready!");
  } while ( u8g2.nextPage() );           // Transfer buffer to display
  
  delay(1000);
}

Step 3: Displaying Graphics

cpp
#include <Arduino.h>
#include <U8g2lib.h>

U8G2_SH1107_128X128_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void setup() {
  u8g2.begin();
  u8g2.setFont(u8g2_font_ncenB08_tr);
}

void loop() {
  u8g2.firstPage();
  do {
    // Draw a filled rectangle border
    u8g2.drawFrame(5, 5, 118, 118);
    
    // Draw a filled circle
    u8g2.drawDisc(64, 64, 30, U8G2_DRAW_ALL);
    
    // Draw text in center
    u8g2.setCursor(45, 70);
    u8g2.print("OLED");
  } while ( u8g2.nextPage() );
  
  delay(1000);
}

Raspberry Pi Setup (Python)

  1. Enable I2C: sudo raspi-config → Interface Options → I2C → Yes → Reboot

  2. Install required libraries:

bash
sudo apt-get install python3-pip
pip3 install luma.oled
  1. Python example code:

python
from luma.core.interface.serial import i2c
from luma.oled.device import sh1107
from luma.core.render import canvas

# I2C connection (address typically 0x3C)
serial = i2c(port=1, address=0x3C)

device = sh1107(serial, width=128, height=128)

with canvas(device) as draw:
    draw.rectangle(device.bounding_box, outline="white", fill="black")
    draw.text((20, 50), "1.5 OLED", fill="white")
    draw.text((20, 70), "128x128", fill="white")

Power Management for Battery-Powered Projects

Only lit pixels consume power – OLEDs are efficient with dark backgrounds. Typical current draw is approximately 35mA in practice, but varies based on how many pixels are lit .

State Approximate Current
All pixels OFF (black screen) <10µA (sleep mode)
Typical usage (~25% pixels lit) ~15-25mA
Full screen white (worst case) ~35mA or more

Power-Saving Tips:

  • Use sleep mode when display not needed (send command 0xAE)

  • Update display only when values change

  • Design UIs with dark backgrounds to minimize lit pixels

Q: Why can't I use this display with an Arduino Uno?

The 128×128 display requires a 2KB frame buffer (128×128÷8 = 2,048 bytes). The Arduino Uno has only 2KB of total SRAM, which must accommodate both the display buffer and your program code. This is insufficient for reliable operation. Use an ESP32, ESP8266, STM32, Teensy, Raspberry Pi, or other microcontroller with at least 16KB RAM .

Q: What is the difference between SH1107 and SSD1306?

The SH1107 is specifically designed for higher-resolution 128×128 displays, while the SSD1306 is common for 128×64 displays. The SH1107 has different internal addressing (132×128 RAM) . Always use libraries that explicitly support SH1107, such as U8g2 or Adafruit SH110X.

Q: What is the default I2C address for this display?

The default I2C address is typically 0x3C. However, the SH1107 may use addresses 0x3C or 0x3D depending on the SA0 pin configuration . Always run the I2C scanner sketch to verify the address of your specific module.

Q: Can I use SPI instead of I2C?

The SH1107 driver chip supports both I2C and SPI interfaces . However, this module is configured for I2C by default. For SPI mode, you would need a different breakout board or version with full pin breakout (CS, DC, etc.) .

Q: Does this module have a backlight?

No. OLED displays are self-emissive – each pixel generates its own light. This eliminates the need for a backlight, provides true blacks (pixels are completely off), and consumes less power when displaying dark content.

Q: How much current does this display draw?

Current draw varies based on how many pixels are lit. Typical usage draws approximately 35mA. The more white pixels displayed, the higher the current draw. All pixels off (black screen) draws minimal current (<10µA in sleep mode) .

Q: Can I display Chinese characters or custom fonts?

Yes. The U8g2 library supports UTF-8 encoding and includes various fonts. Enable with u8g2.enableUTF8Print() and use fonts like u8g2_font_wqy12_t for Chinese characters. For custom fonts, use tools like LCD Image Converter to convert text into bitmap data arrays.

Q: This display is 1.5 inch, but the search results mention 1.12 inch. What's the difference?

The SH1107 controller is used in both 1.12″ and 1.5″ displays with 128×128 resolution. The 1.5″ version typically has a slightly larger active area and pixel size. Both use the same driver IC and I2C interface, so the software and wiring are identical .

Q: The display shows garbled content or only the first few columns work. What's wrong?

This is often a library addressing issue. The SH1107 has internal RAM of 132×128 pixels (visible area is 128×128). Make sure you’re using a library that supports SH1107 specifically. The U8g2 library with U8G2_SH1107_128X128_1_HW_I2C constructor handles this correctly .

Q: What is the lifespan of this OLED display?

OLED pixels have a typical lifespan of around 50,000 hours of continuous operation (approximately 5.7 years). However, individual pixels can dim over time if kept constantly lit. For long-term installations, avoid displaying static images for extremely long periods and implement screen savers or sleep modes when the display is not actively needed .