12주차_참고 : OLED 디스플레이와 I2C 인터페이스 - dhryu60/SmartDevice_2025-1 GitHub Wiki

OLED 디스플레이와 I2C 인터페이스 참고자료

OLED 디스플레이란?

OLED(Organic Light Emitting Diode)는 전류가 흐를 때 자체적으로 빛을 내는 유기 발광 다이오드이다. 백라이트가 필요하지 않아 더 얇고, 전력 소모가 적으며, 밝고 선명한 화질을 구현할 수 있다.

  • 크기: 일반적으로 0.96인치, 1.3인치, 1.5인치 등이 널리 사용된다.
  • 해상도: 128x64, 128x32 해상도가 대표적이다.
  • 색상: 단색(흰색, 파랑 등) 또는 컬러 OLED가 있으며, 본 강의에서는 단색 OLED를 사용한다.

I2C 인터페이스란?

I2C(Inter-Integrated Circuit)는 마이크로컨트롤러(ESP32 등)와 주변 장치(OLED, 센서 등)를 연결하는 직렬 통신 프로토콜이다. 한 개의 마스터(ESP32)가 여러 개의 슬레이브(OLED 등)를 2개의 라인(SDA, SCL)으로 제어할 수 있다.

  • SDA (Serial Data): 데이터 전송 라인
  • SCL (Serial Clock): 클럭 신호 라인
  • 통신 속도: 표준 모드(100kHz), 패스트 모드(400kHz) 등

ESP32와 OLED I2C 연결 핀 예시

ESP32는 기본적으로 I2C를 지원하며, 아래 핀을 사용한다. (보드마다 다를 수 있으므로 데이터시트를 참고하라)

  • SDA: GPIO 21
  • SCL: GPIO 22
  • VCC: 3.3V 또는 5V (모듈에 따라 다름)
  • GND: GND

OLED 제어를 위한 라이브러리

ESP32에서 OLED를 제어하려면 아래 라이브러리를 설치하라.

  • Adafruit_SSD1306: OLED 드라이버 라이브러리
  • Adafruit_GFX: 기본 그래픽 처리 라이브러리

Arduino IDE에서 [라이브러리 관리자]를 열고, 위 두 가지를 검색하여 설치할 수 있다.


통신 원리 요약

  1. ESP32는 SDA/SCL 라인을 통해 OLED에 명령과 데이터를 전송한다.
  2. OLED는 받은 데이터를 디스플레이에 출력한다.
  3. I2C 주소(기본값 0x3C)로 슬레이브를 식별한다.

주의사항

  • I2C 통신 문제(데이터 출력 오류, "SSD1306 오류") 발생 시, SDA/SCL 연결 및 I2C 주소를 점검하라.
  • I2C 주소는 OLED 모듈에 따라 다를 수 있으므로 데이터시트를 확인하라.
  • 전원 공급은 안정적인 3.3V 또는 5V를 사용하라.