OLED Shield Display V2.0.0 for Wemos D1 Mini 0.66″ 64×48 I2C

$9.90 Inc. GST
You save (%)

Quantity Discount (%) Price
1 $9.90
2 - 4 5 % $9.41
5 - 9 7.5 % $9.16
10 - 19 10 % $8.91
20 - 49 12.5 % $8.66
50 - 99 15 % $8.42
100+ 17.5 % $8.17

Description

🖥️ OLED Shield Display V2.0.0 for Wemos D1 Mini 0.66″ 64×48 I2C | AuscomTech

The OLED Shield Display V2.0.0 is a compact, low-power display shield designed specifically for the Wemos D1 Mini platform.
Featuring a 0.66-inch monochrome OLED with 64×48 resolution, this shield uses the SSD1306 driver and an I2C (IIC) interface for simple wiring and efficient communication.

With two onboard programmable buttons, this module adds both visual output and user input in a single, stackable shield—ideal for IoT dashboards, menus, status indicators, and embedded user interfaces.


Key Features

🖤 0.66″ Monochrome OLED Display
Sharp, high-contrast OLED screen with 64×48 pixel resolution for clear text and icons.

🧠 SSD1306 OLED Driver IC
Widely supported controller ensures stable performance and compatibility with popular libraries.

🔌 I2C (IIC) Interface
Uses only two pins (SDA/SCL), reducing wiring complexity and conserving GPIO.

🎛️ Dual Onboard Buttons
Two programmable buttons (A & B) provide user input for menus, navigation, or control.

🔁 Configurable I2C Address
Selectable I2C addresses 0x3C or 0x3D for flexible bus configuration.

🧩 Stackable Shield Design
Designed to plug directly onto Wemos D1 Mini boards for clean, compact builds.


📊 Technical Specifications

Display Type: Monochrome OLED
Screen Size: 0.66 inch
Resolution: 64 × 48 pixels
Driver IC: SSD1306
Operating Voltage: 3.3V
Interface: I2C (IIC)
I2C Addresses: 0x3C / 0x3D (selectable)

Default Pin Mapping (Wemos D1 Mini):
• D1 – SCL
• D2 – SDA
• D3 – Button A (configurable)
• D4 – Button B (configurable)
(Buttons can be reassigned via onboard jumpers to other GPIOs, e.g. D3–D7)


⚠️ Important Notes

• Designed for 3.3V logic only
• Intended for Wemos D1 Mini form factor
• OLED brightness and content controlled via software
• Requires SSD1306-compatible library


🧩 Compatible With

• Wemos D1 Mini
• ESP8266-based D1 Mini variants
• Arduino IDE
• Adafruit SSD1306 library
• SparkFun OLED libraries


⚙️ Typical Applications

• IoT status displays
• Menu-driven interfaces
• Sensor data visualisation
• Portable and low-power projects
• Embedded control panels
• DIY electronics and prototyping


📦 Package Includes

• 1 × OLED Wemos D1 Mini Shield Display V2.0.0

📌 Code Examples & Usage – OLED Shield V2.0.0 for Wemos D1 Mini

0.66″ 64×48 I²C Display + 2 Buttons

📋 Overview

This OLED Shield plugs directly onto a Wemos D1 Mini (ESP8266) and provides:

0.66″ OLED display (64×48 resolution)
I²C interface (uses only SDA & SCL)
Two onboard buttons for user input
✔ Ultra-low power OLED technology
✔ Compact, stackable shield format

Ideal for:

  • Status displays

  • Small menus

  • IoT node feedback

  • Sensor readouts

  • Button-controlled projects


🔌 Hardware Details

Display

  • Controller: SSD1306 (or compatible)

  • Resolution: 64 × 48 pixels

  • Interface: I²C

  • Typical I²C address: 0x3C

I²C Pins (Wemos D1 Mini)

Function GPIO Label
SDA GPIO4 D2
SCL GPIO5 D1

Buttons

Most versions use:

Button GPIO
Button A GPIO0 (D3)
Button B GPIO16 (D0)

(Exact pins can vary slightly between revisions — check silkscreen.)


📦 Library Setup (Arduino IDE)

Install the following libraries:

  • Adafruit SSD1306

  • Adafruit GFX

Arduino IDE → Library Manager → Search & install.


🧪 1️⃣ Basic OLED Test (Hello World)

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 64
#define SCREEN_HEIGHT 48
#define OLED_RESET -1
#define OLED_ADDR 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
Wire.begin(D2, D1); // SDA, SCL

if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
while (true); // OLED not found
}

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("AuscomTech");
display.println("OLED Shield");
display.display();
}

void loop() {}


🧪 2️⃣ Reading the Buttons

#define BTN_A D3 // GPIO0
#define BTN_B D0 // GPIO16

void setup() {
pinMode(BTN_A, INPUT_PULLUP);
pinMode(BTN_B, INPUT_PULLUP);
}

void loop() {
if (!digitalRead(BTN_A)) {
// Button A pressed
}
if (!digitalRead(BTN_B)) {
// Button B pressed
}
}

Buttons are active LOW.


🧪 3️⃣ Display Button Status on OLED

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 64
#define SCREEN_HEIGHT 48
#define OLED_ADDR 0x3C

#define BTN_A D3
#define BTN_B D0

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
Wire.begin(D2, D1);

pinMode(BTN_A, INPUT_PULLUP);
pinMode(BTN_B, INPUT_PULLUP);

display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
}

void loop() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);

display.setCursor(0, 0);
display.print("Btn A: ");
display.println(digitalRead(BTN_A) ? "OFF" : "ON");

display.print("Btn B: ");
display.println(digitalRead(BTN_B) ? "OFF" : "ON");

display.display();
delay(100);
}


🧪 4️⃣ Simple Menu Example (Two Buttons)

int menuIndex = 0;
const int menuCount = 3;

void drawMenu() {
display.clearDisplay();
display.setCursor(0, 0);
display.println("Menu");

display.setCursor(0, 16);
display.println(menuIndex == 0 ? "> Item 1" : " Item 1");
display.println(menuIndex == 1 ? "> Item 2" : " Item 2");
display.println(menuIndex == 2 ? "> Item 3" : " Item 3");

display.display();
}

void loop() {
static unsigned long lastPress = 0;

if (millis() - lastPress > 200) {
if (!digitalRead(BTN_A)) {
menuIndex = (menuIndex + 1) % menuCount;
drawMenu();
lastPress = millis();
}
if (!digitalRead(BTN_B)) {
// select action
lastPress = millis();
}
}
}

This is excellent for:

  • Mode selection

  • Setpoints

  • Debug menus


📡 5️⃣ Display Sensor Data (Example)

float temperature = 23.7;
float humidity = 56.2;

display.clearDisplay();
display.setCursor(0, 0);
display.print("Temp:");
display.print(temperature);
display.println("C");

display.print("Hum:");
display.print(humidity);
display.println("%");
display.display();

You can easily pair this with DHT, DS18B20, BME280, etc.


🧠 Tips & Notes

✔ Resolution is small — keep fonts simple
✔ Text size 1 works best
✔ Avoid excessive screen updates to reduce flicker
✔ Buttons use internal pull-ups
✔ I²C address is usually 0x3C (scan if unsure)


✅ Works with Wemos D1 Mini ESP32 versions

This OLED shield communicates over I²C, so it’s compatible with:

  • Wemos D1 mini (ESP8266)

  • D1 mini style ESP32 boards (ESP32-WROOM / ESP32-S etc.)

What changes?

On ESP32, you just need to set the I²C pins explicitly using Wire.begin(SDA, SCL); and define the button GPIOs to match your board.


ESP32 Example (I²C + Buttons + OLED)

Use this as a second example snippet in your tab:

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 64
#define SCREEN_HEIGHT 48
#define OLED_ADDR 0x3C

// Common I2C defaults on many ESP32 boards are SDA=21, SCL=22
// BUT D1-mini ESP32 boards sometimes map “D1/D2” differently.
// If it doesn’t work, change SDA/SCL to match your board.
const int SDA_PIN = 21;
const int SCL_PIN = 22;

// Buttons: update these to match where the shield routes them on your ESP32 D1 mini board
const int BTN_A = 0;
const int BTN_B = 16;

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
Serial.begin(115200);

Wire.begin(SDA_PIN, SCL_PIN);

pinMode(BTN_A, INPUT_PULLUP);
pinMode(BTN_B, INPUT_PULLUP);

if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println("OLED not found");
while (true) delay(100);
}

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("ESP32 D1 mini");
display.println("OLED Shield OK");
display.display();
}

void loop() {
display.clearDisplay();
display.setCursor(0, 0);
display.print("A:");
display.println(digitalRead(BTN_A) ? "OFF" : "ON");
display.print("B:");
display.println(digitalRead(BTN_B) ? "OFF" : "ON");
display.display();
delay(100);
}


🔧 Quick troubleshooting note (worth adding to the tab)

If the OLED stays blank on ESP32:

  1. Try I²C scan to confirm the address (usually 0x3C)

  2. Change the I²C pin pair in Wire.begin(SDA, SCL) (common alternatives are SDA=4/SCL=5, or whatever your board labels as SDA/SCL)

  3. If buttons behave weirdly, update BTN_A / BTN_B to the correct GPIOs used on your ESP32 D1 mini variant

Additional information

Weight 50 g
Dimensions 260 × 160 × 20 mm

Reviews

There are no reviews yet.


Only logged in customers who have purchased this product may leave a review.