
OLED(유기 발광 다이오드) 디스플레이 모듈은 ESP32-S3 프로젝트에 효율적이고 생생한 화면을 제공
기존 디스플레이에 비해 뛰어난 명암비, 넓은 시야각, 빠른 응답 속도를 자랑합니다.
OLED 디스플레이를 ESP32-S3에 연결하고 텍스트와 그래픽을 표시하는 코드를 작성하는 방법을 익혀봅시다.
1. OLED
핀아웃
- OLED 디스플레이
- GND: 접지 핀
- VCC: 전원 공급 핀 (3.3V ~ 5V)
- SCL: I2C 통신용 직렬 클록 핀
- SDA: I2C 통신용 직렬 데이터 핀
회로연결
- esp32와 OLED 디스플레이 연결


2. OLED 라이브러리 설치하기
OLED를 사용하려면 MicroPython의 ssd1306.py 드라이버 파일이 필요합니다.
Thonny에서 다음 순서로 준비합니다.
-
ESP32를 USB로 연결하고 MicroPython 인터프리터를 선택합니다.
- MicroPython 공식 SSD1306 드라이버를 준비합니다.

깃허브에서 코드 복사하기 - (https://github.com/micropython/micropython-lib/blob/master/micropython/drivers/display/ssd1306/ssd1306.py)
-
Thonny에서 파일을 열고 파일 → 다른 이름으로 저장 → MicroPython 장치를 선택합니다.
-
파일명을 ssd1306.py로 저장합니다.
※ 이 파일은 ESP32 내부에 저장해야 합니다.
3. OLED에 글자 출력하기 — 기본 코드
다음 코드를 Thonny에서 실행해 봅니다.
from machine import Pin, I2C
import ssd1306
# I2C 통신 설정
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# OLED 설정 (가로 128, 세로 64)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# 화면 초기화
oled.fill(0)
# 글자 출력
oled.text("Hello ESP32!", 0, 0)
oled.text("OLED TEST", 0, 20)
# 화면 표시
oled.show()
출력화면 확인하기

4. 핵심코드 설명


5. 글씨 크기를 2배로 확대하기
별도의 폰트 라이브러리를 설치하지 않고도 oled.pixel()을 이용하여 기존 글씨를 확대할 수 있습니다.
아래 코드는 기본 글씨를 2배로 확대하는 예제입니다.
from machine import Pin, I2C
import ssd1306
import framebuf
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# 글씨 크기를 확대하는 함수
def big_text(msg, x, y, size):
buf = bytearray(len(msg) * 8)
fb = framebuf.FrameBuffer(
buf, len(msg) * 8, 8, framebuf.MONO_VLSB
)
fb.fill(0)
fb.text(msg, 0, 0)
for i in range(len(msg) * 8):
for j in range(8):
if fb.pixel(i, j):
for a in range(size):
for b in range(size):
oled.pixel(
x + i * size + a,
y + j * size + b, 1
)
oled.fill(0)
# 기본 크기
oled.text("ESP32", 0, 0)
# 2배 크기
big_text("ESP32", 0, 20, 2)
oled.show()

-
oled.text() : 기본 크기(8×8픽셀)
-
text2() : 2배 크기(16×16픽셀)
6. 글씨 크기 변경하기
위 코드에서 다음 부분만 수정하면 됩니다.

OLED의 가로 해상도가 128픽셀이므로 글씨를 확대할수록 한 줄에 출력할 수 있는 글자 수가 줄어듭니다.
화면 범위를 벗어나는 부분은 표시되지 않습니다.
수업에서는 기본 oled.text()로 글자를 출력한 다음, big_text() 함수를 사용해 2배, 3배로 확대하는 순서가 좋습니다.
이 방식은 별도 외부 폰트 파일 없이 MicroPython의 기본 framebuf 기능으로 실습할 수 있습니다.
7. OLED 글씨 슬라이드 코드
from machine import Pin, I2C
import ssd1306
import time
# I2C 설정
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
while True:
for x in range(128, -104, -2):
oled.fill(0)
oled.text("Hello ESP32!", x, 25)
oled.show()
time.sleep(0.02)

'esp32 보드활용' 카테고리의 다른 글
| ESP32 초음파 센서 활용 (0) | 2026.10.01 |
|---|---|
| ESP32 가변저항 활용 (0) | 2026.09.28 |
| esp32 BLE 온습도센서 웹앱 활용하기. (0) | 2026.09.02 |
| esp32 블루투스 제어 (0) | 2026.09.02 |
| esp32 온습도 센서 활용 (1) | 2026.09.02 |