2.42-inch 128×64 PM OLED Display Module – Yellow, SSD1309 Driver, I2C Interface, 3.3V, 5-Pin (GND/VCC/SCL/SDA/RES)

SKU: FA2130-6-1-2
Display Type

Passive Matrix OLED (PMOLED)

Driver IC

SSD1309

Resolution

128 × 64 pixels

Display Color

Yellow

Contrast Ratio

10,000:1

Active Area (W × H)

55.01 × 27.49 mm

Module Dimensions (W × H)

60.5 × 37.0 × 2.15 mm

Pixel Pitch (W × H)

0.43 × 0.43 mm

Default I2C Address

0x3C (configurable to 0x3D)

Logic Supply Voltage (VDD)

2.8 – 3.3V DC (3.0V typical)

Logic I/O Compatibility

3.3V logic, 5V tolerant for I2C lines

Operating Temperature

-40°C to +80°C

Storage Temperature

-40°C to +85°C

Interface

I2C (5-pin: GND, VCC, SCL, SDA, RES)

Product Overview

The 2.42-inch Passive Matrix OLED Display Module is a large-format, high-contrast monochrome graphic display designed for embedded systems, industrial control panels, medical devices, and IoT applications . Powered by the SSD1309 driver IC and featuring a crisp 128×64 pixel resolution, this display delivers bright yellow text, detailed graphics, and custom icons on a true black background — all in a spacious 2.42-inch diagonal format (approximately 61.5mm diagonal) .

Why the SSD1309 Controller?

Unlike the common SSD1306 controller used on smaller 0.96″ and 1.3″ OLEDs, the SSD1309 is specifically designed for larger OLED panels. Key advantages include:

  • Higher row drive current: Provides brighter and more uniform illumination across the larger screen area

  • External boost regulator: Uses an external switching boost converter to generate the higher voltage (approx. 13V) needed for larger OLED panels

  • 10,000:1 contrast ratio: Exceptional clarity with true blacks

The 5-pin I2C interface (GND, VCC, SCL, SDA, RES) requires only two data lines to connect to your microcontroller, preserving valuable I/O pins for other peripherals. A dedicated RES (reset) pin allows hardware initialization of the display for reliable startup and recovery .

This module is compatible with ESP32, ESP8266, STM32, Raspberry Pi, and other 3.3V/5V logic systems. The I2C lines are 5V tolerant, making it safe for direct connection to 5V Arduino boards.

Key Features

  • Large 2.42-Inch Active Area: 55.01 × 27.49mm display area — approximately 6 times larger than 0.96″ OLEDs, providing significantly more screen real estate for dashboards, data visualization, and UI elements

  • Yellow Monochrome OLED: Bright yellow pixels on true black background provide exceptional contrast (10,000:1) and a warm, distinctive appearance

  • SSD1309 Driver IC: Advanced controller specifically designed for larger OLED panels, featuring higher row drive current for superior brightness uniformity, 128 × 64-bit SRAM buffer, and 256-step contrast control

  • 5-Pin I2C Interface: Pins GND, VCC, SCL, SDA, RES — requires only 2 data lines (SDA/SCL) with default address 0x3C, saving GPIO pins

  • Dedicated RESET Pin: Allows external hardware reset control for reliable display initialization and recovery

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

  • Ultra-Thin & Lightweight: COG (Chip-on-Glass) construction with 2.15mm thickness, ideal for portable devices

  • Full Viewing Angle: >160° visibility ensures clear readouts from any angle without contrast shift

Technical Specifications

Parameter Operating Value
Display Type Passive Matrix OLED (PMOLED)
Driver IC SSD1309
Resolution 128 × 64 pixels
Display Color Yellow
Contrast Ratio 10,000:1
Active Area (W × H) 55.01 × 27.49 mm
Module Dimensions (W × H) 60.5 × 37.0 × 2.15 mm
Pixel Pitch (W × H) 0.43 × 0.43 mm
Default I2C Address 0x3C (configurable to 0x3D)
Logic Supply Voltage (VDD) 2.8 – 3.3V DC (3.0V typical)
Logic I/O Compatibility 3.3V logic, 5V tolerant for I2C lines
Operating Temperature -40°C to +80°C
Storage Temperature -40°C to +85°C
Interface I2C (5-pin: GND, VCC, SCL, SDA, RES)

Pinout & Connection Guide

The module features a 5-pin I2C interface. Pin order may vary between manufacturers — always verify the silkscreen on your specific module .

Pin Definitions (5-Pin)

Pin Label Function Description
1 GND Ground Connect to power supply ground
2 VCC Power Supply 3.3V DC power input — DO NOT USE 5V
3 SCL I2C Clock Line Connect to SCL pin of microcontroller (3.3V logic, 5V tolerant)
4 SDA I2C Data Line Connect to SDA pin of microcontroller (3.3V logic, 5V tolerant)
5 RES / RST Reset (active low) Hardware reset; connect to MCU GPIO or pull HIGH through 10kΩ resistor to VCC

⚠️ Power Supply Warning

The VCC pin requires 3.3V only. Do not apply 5V to VCC — this can damage the module. The I2C lines (SDA/SCL) are 5V tolerant and can be connected directly to 5V microcontrollers, but the power supply must be 3.3V .

RESET Pin Configuration

The RES pin is critical for reliable operation. The module requires a proper reset signal to initialize correctly :

  • Option 1 (Recommended): Connect RES to a microcontroller GPIO pin and drive it HIGH in your setup code

  • Option 2: Pull RES HIGH to VCC through a 10kΩ resistor

  • Option 3: Connect directly to VCC (less reliable for some modules)

Wiring to ESP32

text
OLED Module          →    ESP32
─────────────────────────────────────
VCC (3.3V)           →    3.3V
GND                  →    GND
SCL                  →    GPIO22 (SCL)
SDA                  →    GPIO21 (SDA)
RES                  →    GPIO4 (with 10kΩ pull-up to 3.3V, optional)

Wiring to Arduino Uno (5V)

⚠️ VCC must be 3.3V — do not use 5V; I2C lines are safe for direct connection .

text
OLED Module          →    Arduino Uno
─────────────────────────────────────
VCC (3.3V)           →    3.3V pin
GND                  →    GND
SCL                  →    A5 (SCL)
SDA                  →    A4 (SDA)
RES                  →    D9 (with 10kΩ pull-up to 3.3V)

Wiring to Raspberry Pi

text
OLED Module          →    Raspberry Pi
─────────────────────────────────────
VCC (3.3V)           →    Pin 1 (3.3V)
GND                  →    Pin 6 (GND)
SCL                  →    Pin 5 (GPIO 3 / SCL)
SDA                  →    Pin 3 (GPIO 2 / SDA)
RES                  →    GPIO 17 (with 10kΩ pull-up to 3.3V)

Usage Guide

I2C Address Configuration

The SSD1309 I2C address is determined by the DC pin state :

DC Pin State I2C Address (7-bit) 8-bit Write Address
Low 0x3C 0x78
High 0x3D 0x7A

For fixed 5-pin configurations, the address is typically preset to 0x3C.

I2C Address Verification

Run this I2C scanner to verify your display’s address before using it:

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);
}

Software Setup (Arduino IDE)

Step 1: Install the U8g2 Library

The U8g2 library by Oliver Kraus is the most reliable for SSD1309 displays, offering excellent support, many font options, and proper handling of the display’s reset requirements .

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

  2. Search for “U8g2” by Oliver Kraus

  3. Click Install

Step 2: Basic Test Sketch

This example uses the correct constructor for the 2.42″ SSD1309 display and includes proper RESET pin handling .

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

// Correct constructor for 2.42" 128x64 SSD1309 over I2C
// The "F" (full buffer) variant updates faster but uses more RAM
// Parameter: reset pin number (use U8X8_PIN_NONE if not connected)
U8G2_SSD1309_128X64_NONAME0_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ 4);  // GPIO4 for RES

void setup() {
  // If RES is connected to a GPIO, ensure it is pulled HIGH
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  
  // Initialize the display
  u8g2.begin();
  u8g2.enableUTF8Print();
  u8g2.setFont(u8g2_font_ncenB08_tr);
}

void loop() {
  u8g2.firstPage();                      // Start page loop
  do {
    u8g2.drawStr(0, 15, "2.42 OLED");
    u8g2.drawStr(0, 35, "128x64");
    u8g2.drawStr(0, 55, "SSD1309 - I2C");
    u8g2.drawStr(0, 75, "Yellow Display");
  } while ( u8g2.nextPage() );           // Transfer buffer to display
  
  delay(1000);
}

Step 3: Setting I2C Address (If Needed)

If your display responds to address 0x3D instead of 0x3C, adjust the address in code:

cpp
// In setup(), before u8g2.begin()
u8g2.setI2CAddress(0x7A);  // For 7-bit address 0x3D (0x7A is 8-bit)

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 ssd1309
from luma.core.render import canvas

# I2C connection (address 0x3C, reset pin 17)
serial = i2c(port=1, address=0x3C, gpio_DC=18, gpio_RST=17)

device = ssd1309(serial, width=128, height=64)

with canvas(device) as draw:
    draw.rectangle(device.bounding_box, outline="white", fill="black")
    draw.text((10, 25), "2.42 OLED", fill="white")
    draw.text((10, 45), "128x64 Ready!", fill="white")
Q: What is the difference between SSD1309 and SSD1306?

The SSD1309 is designed specifically for larger OLED panels (2.42″ and up). Key differences include higher row drive current for brighter, more uniform illumination; external boost regulator instead of internal charge pump; and command compatibility with SSD1306, making library migration straightforward .

Q: Why does my display stay blank after power-up?

The display requires a proper reset signal to initialize. Connect the RES pin to a microcontroller GPIO and pull it HIGH, or pull it HIGH to VCC through a 10kΩ resistor . Some modules require the RES pin to be toggled (HIGH → LOW → HIGH) during startup for reliable initialization.

Q: Can I use this display with a 5V Arduino Uno?

Yes, but with important caveats. The I2C lines (SDA/SCL) are 5V tolerant and can be connected directly to 5V pins. However, the VCC pin must be powered with 3.3V — do not apply 5V to VCC . The Arduino Uno’s onboard 3.3V regulator may not supply enough current; use an external 3.3V regulator for reliable operation.

Q: What is the default I2C address?

The default I2C address is 0x3C (7-bit), corresponding to 0x78 (8-bit write address). Some modules can be configured to 0x3D (0x7A) via the DC pin state . Run an I2C scanner to verify your specific module’s address.

Q: How do I use the RES (reset) pin?

The RES pin is active low — pulling it LOW resets the display. For normal operation, it should be pulled HIGH. The simplest approach is to pull it HIGH to VCC through a 10kΩ resistor. For software-controlled reset, connect it to a GPIO and pulse it LOW → HIGH during setup .

Q: What is the power consumption of this display?

Typical current draw is around 20mA depending on the number of pixels lit . The 2.42″ display has approximately 6 times the active area of 0.96″ displays, requiring more power when fully lit. Use sleep mode and design dark UIs to minimize power consumption.

Q: Can I use this display with MicroPython?

Yes. The SSD1309 is supported in MicroPython. For ESP32, use the ssd1306 module (which works with SSD1309) with I2C interface and appropriate address.

Q: Why does my I2C communication fail at higher speeds?

The larger display panel and PCB layout may add capacitance to the I2C bus. Try reducing the I2C clock speed to 100kHz or 400kHz for more reliable communication.

Q: What is the lifespan of this OLED display?

OLEDs typically have a rated lifespan of approximately 50,000 hours of continuous operation (about 5.7 years). Avoid displaying static images for extremely long periods to prevent uneven pixel wear (“burn-in”) .

Q: What libraries are recommended for this display?

The U8g2 library by Oliver Kraus is the most reliable for SSD1309 displays, offering extensive font support and proper handling of the SSD1309 controller . The Adafruit SSD1306 library is command-compatible and also works with this display .