본문 바로가기
esp32 보드활용

esp32 oled 사용하기.

by SwMaker_Jun 2026. 10. 14.
728x90
반응형

 

oled 디스플레이

 

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에서 다음 순서로 준비합니다.

  1. ESP32를 USB로 연결하고 MicroPython 인터프리터를 선택합니다.

  2. MicroPython 공식 SSD1306 드라이버를 준비합니다.
    깃허브에서 코드 복사하기
  3. (https://github.com/micropython/micropython-lib/blob/master/micropython/drivers/display/ssd1306/ssd1306.py)
  4. Thonny에서 파일을 열고 파일 → 다른 이름으로 저장 → MicroPython 장치를 선택합니다.

  5. 파일명을 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. 핵심코드 설명 

가로 128 픽셀 / 세로 64픽셀

 

 

 

 

 

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)

동작 예시

 

728x90
반응형

'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