Skip to content
From the Kool Lemon blog

How to choose a custom small OLED display module for your project?

aBy admin

You pick a custom small OLED display module by first locking down your project's core requirements: the display size, resolution, interface, power budget, and viewing angle. From there, you match those specs against real-world supplier capabilities, checking for things like driver IC availability, custom glass options, and minimum order quantities. For example, if you're building a wearable device, you might need a 0.91-inch 128x32 OLED module with an I2C interface that draws under 10mA at 3.3V. If you're designing an industrial control panel, you might need a 1.3-inch 128x64 OLED with SPI and a wider operating temperature range of -40°C to +85°C. The key is to avoid over-specifying features you don't need, which drives up cost and lead time. A reliable supplier like DisplayModule custom small OLED can walk you through these trade-offs based on their actual production data.

Size and resolution are the first hard constraints. Small OLED modules typically range from 0.42 inches (72x40 pixels) up to 2.7 inches (128x64 pixels). The most common sizes are 0.96-inch (128x64), 1.3-inch (128x64), and 0.91-inch (128x32). Resolution directly impacts how much information you can display. A 128x64 panel can show 8 lines of 16-pixel-high ASCII text, or 4 lines of 32-pixel-high characters. For a simple battery level indicator, a 128x32 might be enough. For a data dashboard with graphs, you'll want 128x64 or higher. Pixel pitch matters too: a 0.96-inch 128x64 panel has a pixel pitch of about 0.17mm, while a 1.3-inch 128x64 panel has a pitch of about 0.23mm. The larger pitch gives you bigger, easier-to-read pixels but lower effective resolution per inch. Measure your enclosure's cutout dimensions and the viewing distance. For a device held at arm's length (about 18 inches), a 0.96-inch panel is readable. For a device mounted on a wall or machine, you might need the 1.3-inch or even a 2.7-inch panel.

Interface selection is a critical decision that affects pin count, speed, and complexity. Most small OLED modules use one of three interfaces: I2C, SPI, or parallel. I2C uses only two wires (SDA and SCL) plus power, making it ideal for battery-powered devices with limited GPIO. But it's slower, typically topping out at 400kHz for standard mode or 1MHz for fast mode. That means a full 128x64 frame buffer update takes about 2-3 milliseconds at 400kHz. SPI uses four wires (MOSI, MISO, SCLK, CS) plus a data/command pin, and can run at 10-20MHz, updating the same frame in under 0.1 milliseconds. Parallel interfaces (usually 8-bit 6800 or 8080) are fastest but require 8+ data lines plus control signals, which eats up GPIO. For a simple sensor readout that updates once a second, I2C is fine. For an animation or video playback, you need SPI or parallel. Some modules also support both I2C and SPI via jumper configuration, which gives you flexibility during prototyping.

Driver IC choice determines what your module can actually do. The most common driver ICs for small OLEDs are the SSD1306 (for 128x64 and 128x32), SH1106 (for 128x64, but with a different memory mapping), and SSD1309 (for larger panels like 128x64 or 132x64). The SSD1306 is the most widely supported in libraries like Adafruit_SSD1306 and U8g2. It has a 128x64-bit GDDRAM (graphic display data RAM) that's organized in 8 pages of 128 bytes each. The SH1106 has a 132x64-bit RAM, which means you need to offset the column address by 2 to center the 128x64 display area. If you're using a library, this is handled automatically, but if you're writing raw commands, you need to know this. The SSD1309 supports higher frame rates and has a larger RAM buffer, but it's less common in hobbyist libraries. Some newer modules use the CH1116 or UC1611 for monochrome, or the SSD1331 for 65K color. For a custom project, stick with the SSD1306 unless you have a specific reason not to. It's cheap, well-documented, and available from multiple manufacturers.

Color and contrast options go beyond monochrome white. Standard small OLEDs come in white, blue, yellow, or green. White is the most readable in bright ambient light because it has the highest contrast ratio (typically 10,000:1). Blue looks cool but has lower perceived brightness. Yellow and green are often used for status indicators or accent colors. Some modules offer dual-color (e.g., yellow on top, blue on bottom) for a 16-pixel-high status bar. True color OLEDs (like the 0.96-inch 96x64 RGB OLED with SSD1331 driver) can display 65K colors but draw more power and cost more. For most projects, monochrome white is the best balance of readability, cost, and power. The contrast is controlled by the internal charge pump voltage, which the driver IC sets via a register. You can adjust it in software, but the default is usually optimal for the module's glass thickness.

Power consumption is a deal-breaker for battery-operated projects. A typical 0.96-inch 128x64 OLED draws about 20-25mA when all pixels are on (white on black). With a 50% pixel on ratio, it drops to 12-15mA. The SSD1306 has a built-in charge pump that generates the 7-10V needed to drive the OLED pixels. This charge pump is about 70-80% efficient, so the total power draw is higher than the pixel power alone. You can reduce power by using the display's sleep mode (draws under 10µA) and only waking it up to update. For a watch that updates once per second, you can get months of battery life from a CR2032 coin cell. But if you leave the display on continuously, a 200mAh battery will last only about 10 hours. Some modules offer a "low-power" mode that reduces the frame rate or contrast, but this is usually not worth the trade-off. If your project must run for weeks on a small battery, consider a reflective LCD or e-ink display instead.

Viewing angle and temperature range are often overlooked. OLEDs have a near-180-degree viewing angle because they emit light directly from each pixel, unlike LCDs that rely on backlight and polarizers. This is a huge advantage for devices that are viewed from an angle, like a dashboard or a wearable. However, OLED performance degrades at high temperatures. The typical operating range is -20°C to +70°C, with storage from -40°C to +85°C. Above 70°C, the OLED material degrades faster, reducing lifetime. Below -20°C, the response time slows down, and the brightness drops. If your project will be used outdoors in direct sunlight, the OLED's brightness (typically 100-200 cd/m²) may not be sufficient. You can boost it by increasing the contrast register, but that draws more power and reduces lifespan. For outdoor use, a transflective LCD with a front light might be a better choice.

Customization options from suppliers vary widely. When you order a custom small OLED module, you can usually specify the following: glass size and shape (rectangular, round, or custom), resolution, interface pinout, FPC (flexible printed circuit) length and connector type, and any additional components like a voltage regulator or level shifter. Some suppliers offer custom logo or text on the glass, but this requires a new mask set and is only economical for high volumes (10,000+ units). The minimum order quantity (MOQ) for a custom module is typically 500-1000 pieces for a simple pinout change, and 3000-5000 pieces for a custom glass size. Lead time ranges from 2-4 weeks for a pinout change to 8-12 weeks for a custom glass. Pricing for a 0.96-inch 128x64 OLED starts at around $2-3 per unit at 1000 pieces, dropping to $1-1.50 at 10,000 pieces. Custom glass adds $0.50-1.00 per unit depending on complexity.

Testing and quality control are non-negotiable. Before you commit to a supplier, ask for their test procedures. Reputable manufacturers test every module for pixel defects, contrast uniformity, and interface communication. Common defects include dead pixels (bright or dark), mura (uneven brightness), and FPC bond failures. A good supplier will have a visual inspection step under a microscope for the FPC bond, and a functional test with a known-good firmware that writes a test pattern. They should also provide a datasheet with the actual mechanical drawings, electrical characteristics, and timing diagrams. If they can't provide a proper datasheet, walk away. The datasheet should include the exact dimensions with tolerances (typically ±0.2mm for glass, ±0.1mm for FPC), the pinout with signal names and descriptions, the absolute maximum ratings, and the DC characteristics (Vih, Vil, Ioh, Iol).

Software support can save you weeks of development time. Most small OLED modules use the SSD1306 or SH1106 driver, which has mature libraries for Arduino, Raspberry Pi, ESP32, STM32, and other platforms. The Adafruit_SSD1306 library is the most popular, with over 10,000 GitHub stars. It supports I2C and SPI, and includes functions for drawing pixels, lines, rectangles, circles, and text. The U8g2 library is another option that supports a wider range of drivers and includes a font engine with many fonts. For custom modules with non-standard drivers, you'll need to write your own initialization sequence and frame buffer management. This can take 2-4 weeks for an experienced embedded engineer. If you're short on time, stick with a standard driver IC. Some suppliers also provide example code for their specific modules, which can be a huge time saver.

Cost breakdown for a typical custom small OLED module:

ComponentCost (USD per unit at 1000 pcs)Notes
OLED glass (0.96-inch 128x64)$0.80 - $1.20Standard white monochrome
Driver IC (SSD1306)$0.30 - $0.50Bare die or COG (chip-on-glass)
FPC + connector$0.15 - $0.30Length and pin count dependent
PCB (if separate from FPC)$0.20 - $0.50For modules with onboard regulator
Assembly + testing$0.40 - $0.70Includes COG bonding and functional test
Total module cost$1.85 - $3.20Before any custom NRE or tooling

Common pitfalls and how to avoid them: One of the most frequent mistakes is assuming the module will work with 5V logic without a level shifter. Most small OLEDs are 3.3V devices, and applying 5V to the logic pins can damage the driver IC. Always check the datasheet for the absolute maximum ratings. Another pitfall is using a 5V Arduino without a level shifter on the I2C or SPI lines. The SSD1306 can tolerate 5V on the I2C lines if the module has built-in pull-up resistors, but this is not always the case. When in doubt, use a 3.3V microcontroller or a logic level converter. Another common issue is the I2C address conflict. The SSD1306 has two possible I2C addresses (0x3C or 0x3D), set by the SA0 pin. If you have multiple I2C devices on the same bus, make sure the addresses don't conflict. You can change the SA0 pin by soldering a jumper or cutting a trace on the module.

Mechanical integration requires careful planning. The OLED glass is fragile and can crack if not properly supported. The FPC is also delicate and can tear if bent too sharply. The minimum bend radius for a standard FPC is about 3mm, but you should aim for 5mm or more to avoid stress fractures. If the module will be mounted in a vibrating environment (like a vehicle or machine), use a stiffener on the FPC or secure it with adhesive. The glass itself should be mounted with a foam gasket or rubber standoff to absorb shock. The viewing window in your enclosure should be slightly larger than the active area of the display, typically by 0.5-1mm on each side. If the window is too tight, the glass can be chipped during assembly. If it's too loose, the display can shift and misalign.

Supply chain considerations for custom modules: Lead times for custom small OLED modules can vary wildly depending on the complexity and the supplier's current workload. A simple pinout change on an existing module might take 2 weeks. A custom glass size with a new mask set can take 8-12 weeks. Always order a sample batch before committing to a full production run. The sample batch should be 10-50 units, enough to test mechanical fit, electrical performance, and software compatibility. Expect to pay a one-time NRE (non-recurring engineering) fee of $500-$2000 for custom work, which covers the mask set, tooling, and engineering time. Some suppliers waive the NRE fee for large orders (10,000+ units). Also, factor in the cost of a second source. If your supplier has a production issue or a material shortage, you could be stuck without displays for weeks. Having a second qualified supplier with the same specifications can save your project.

Real-world example: A custom 1.3-inch 128x64 OLED for a medical device. A company I worked with needed a display for a handheld blood glucose monitor. The requirements were: 1.3-inch diagonal, 128x64 resolution, white monochrome, SPI interface, operating temperature -10°C to +50°C, and a total power draw under 15mA. They chose a custom module based on the SSD1306 driver with a custom FPC length of 30mm and a 0.5mm pitch 12-pin connector. The total cost was $2.50 per unit at 5000 pieces, with a 6-week lead time. The module passed all tests including a 1000-hour accelerated life test at 60°C and 90% humidity. The key to success was the detailed specification document they provided to the supplier, which included the exact mechanical drawing, electrical requirements, and test procedures. They also required a sample of 20 units for pre-production validation, which caught a minor issue with the FPC alignment that was corrected before the full order.

Final technical considerations before you order: Make sure your microcontroller has enough RAM to hold the frame buffer. A 128x64 monochrome display needs 1024 bytes (128 * 64 / 8). A 128x64 grayscale display with 4 bits per pixel needs 4096 bytes. A 128x64 color display with 16 bits per pixel needs 16,384 bytes. If your microcontroller has only 2KB of RAM, you can't use a color display without external memory. Also, consider the refresh rate. The SSD1306 can update the full frame at about 100 Hz over SPI, but the OLED pixels themselves have a response time of about 100 microseconds, so you won't see flicker. For animations, you can update partial frames to reduce the load on the microcontroller. For example, you can update only the region of the screen that changes, which is much faster than redrawing the entire frame. Many libraries support this with a "dirty rectangle" or "partial update" mode.

See Kool Lemon in Action

Squeeze more out of every customer relationship — book a 20-minute walkthrough.

Book a Demo No credit card · 14-day pilot · Live in 9 days median