라즈베리 파이 피코 OLED 128x32

이 튜토리얼은 Raspberry Pi Pico를 OLED 128x32 I2C 디스플레이와 함께 사용하는 방법을 안내합니다. 여러분은 다음을 배우게 될 것입니다:

라즈베리파이 피코 oLED i2c 디스플레이

준비물

1×라즈베리 파이 피코 W 쿠팡 | 아마존
1×라즈베리 파이 피코 (또는) 쿠팡 | 아마존
1×마이크로 USB 케이블 아마존
1×SSD1306 I2C OLED 디스플레이 128x32 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 라즈베리 파이 피코용 스크루 터미널 확장 보드 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

OLED 디스플레이에 대해

I2C OLED 디스플레이 핀아웃

  • GND 핀: Raspberry Pi Pico의 접지에 연결하세요.
  • VCC 핀: 전원 공급을 위해 Raspberry Pi Pico의 5V 핀에 연결하세요.
  • SCL 핀: I2C 통신용 클럭 핀입니다.
  • SDA 핀: I2C 통신용 데이터 핀입니다.
oLED 핀아웃

※ 주의:

OLED 모듈의 핀 설정은 제조사와 모듈 종류에 따라 달라질 수 있습니다. OLED 모듈에 있는 표시를 항상 확인하고 따르세요. 주의하세요!

이 가이드는 SSD1306 I2C 드라이버를 사용하는 OLED 화면용입니다. DIYables의 OLED 화면으로 테스트해 보았으며 문제 없이 잘 작동했습니다.

선연결

라즈베리 파이 피코 oLED 128x32 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아래는 128x32 OLED 모듈과 Raspberry Pi Pico 간의 배선 표입니다.

128x32 OLED Module Raspberry Pi Pico
VCC 3.3V
GND GND
SDA GP0
SCL GP1

Raspberry Pi Pico 코드 - OLED에서 텍스트, 정수 및 부동 소수점 숫자 표시

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-oled-128x32 */ from machine import I2C, Pin from DIYables_MicroPython_OLED import OLED_SSD1306_I2C # Initialize I2C i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000) # Adjust Raspberry Pi Pico pins according to your setup # Initialize the OLED display oled = OLED_SSD1306_I2C(128, 32, i2c) # Clear the display oled.clear_display() oled.display() oled.set_text_size(2) # Print a message to the display text = "DIYables" integer_value = 123 float_value = 45.678 oled.set_cursor(0, 0) oled.println(text) oled.set_cursor(0, 19) oled.println(str(integer_value)) # Print integer and move to the next line oled.set_cursor(50, 19) oled.println("{:.3f}".format(float_value)) # Print formatted float and move to the next line oled.display() # Ensure you update the display after writing to it

자세한 사용 방법

다음의 지침을 단계별로 따라 주십시오:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하십시오.
  • Raspberry Pi Pico에 MicroPython 펌웨어가 설치되어 있는지 확인하십시오.
  • Raspberry Pi Pico를 처음 사용하신다면, 자세한 지침을 위해 라즈베리 파이 피코 - 시작하기 튜토리얼을 참고하십시오.
  • 제공된 다이어그램에 따라 OLED 디스플레이를 Raspberry Pi Pico에 연결하십시오.
  • Raspberry Pi Pico를 USB 케이블을 사용하여 컴퓨터에 연결하십시오.
  • 컴퓨터에서 Thonny IDE를 실행하십시오.
  • Thonny IDE에서 도구 옵션으로 이동하여 MicroPython (Raspberry Pi Pico) 인터프리터를 선택하십시오.
  • 인터프리터 탭에서 드롭다운 메뉴를 사용해 MicroPython (Raspberry Pi Pico)를 선택하십시오.
  • 올바른 포트가 선택되어 있는지 확인하십시오. Thonny IDE가 자동으로 포트를 감지하지만, 수동으로 선택해야 할 수도 있습니다 (예: Windows에서는 COM3, Linux에서는 /dev/ttyACM0).
  • Thonny IDE의 도구 패키지 관리로 이동하십시오.
  • “DIYables-MicroPython-OLED”를 검색한 후, DIYables에서 만든 OLED 라이브러리를 찾으십시오.
  • DIYables-MicroPython-OLED를 클릭한 다음, Install 버튼을 눌러 OLED 라이브러리를 설치하십시오.
라즈베리 파이 피코 oLED 라이브러리
  • 위의 코드를 복사하여 Thonny IDE의 에디터에 붙여넣으세요.
  • Raspberry Pi Pico에 스크립트를 저장하려면:
    • 저장 버튼을 클릭하거나 Ctrl+S 키를 사용하세요.
    • 저장 대화상자에서 '이 컴퓨터'와 Raspberry Pi Pico 두 섹션이 표시됩니다. Raspberry Pi Pico를 선택하세요.
    • 파일을 main.py라는 이름으로 저장하세요.
  • 녹색 Run 버튼을 클릭하거나(F5 키를 누르세요) 스크립트를 실행하세요. 스크립트가 실행될 것입니다.
  • OLED 디스플레이를 확인하세요. 아래와 같은 모습입니다:
라즈베리 파이 피코 oLED 디스플레이 텍스트, 정수 및 부동 소수점 숫자

Raspberry Pi Pico 코드 - OLED에 그리기

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-oled-128x32 */ from machine import I2C, Pin from DIYables_MicroPython_OLED import OLED_SSD1306_I2C # Initialize I2C i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000) # Adjust Raspberry Pi Pico pins according to your setup # Initialize the OLED display oled = OLED_SSD1306_I2C(128, 32, i2c) # Clear the display oled.clear_display() oled.display() # Draw a rectangle #oled.draw_rect(0, 0, 40, 25, 1) oled.fill_rect(0, 0, 40, 25, 1) # Draw a circle oled.draw_circle(64, 16, 15, 1) #oled.fill_circle(64, 16, 15, 1) # Draw a triangle #oled.draw_triangle(80, 31, 128, 31, 104, 0, 1) oled.fill_triangle(80, 31, 128, 31, 104, 0, 1) oled.display()

위의 코드를 실행하면 아래에 제시된 것처럼 OLED 화면에 사각형, 원, 삼각형이 표시됩니다.

라즈베리 파이 피코가 oLED에 사각형, 원, 그리고 삼각형을 그립니다.

라즈베리 파이 피코 코드 – OLED에 이미지 표시

아래 코드는 LCD 디스플레이에 이미지를 그립니다. 이 이미지는 DIYables 아이콘입니다.

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-oled-128x32 */ from machine import I2C, Pin from DIYables_MicroPython_OLED import OLED_SSD1306_I2C import utime # Initialize I2C i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000) # Adjust Raspberry Pi Pico pins according to your setup # Create the SSD1306 display object oled = OLED_SSD1306_I2C(128, 32, i2c) # Clear the display buffer oled.clear_display() utime.sleep(2) # 16x16 heart bitmap in RGB565 format heart_bitmap = [ # 'DIYables Icon', 72x32 0x00, 0x0f, 0xff, 0xff, 0x8f, 0xf8, 0x07, 0x38, 0x07, 0x00, 0x0f, 0xff, 0xff, 0x8f, 0xfe, 0x07, 0x1c, 0x0e, 0x00, 0x0f, 0xff, 0xff, 0x8f, 0xff, 0x07, 0x1c, 0x1c, 0x00, 0x0f, 0xff, 0xff, 0x8e, 0x07, 0x87, 0x0e, 0x1c, 0x00, 0x0f, 0xff, 0xff, 0x8e, 0x03, 0xc7, 0x0f, 0x38, 0x00, 0x0f, 0xff, 0xff, 0x8e, 0x01, 0xc7, 0x07, 0x38, 0x00, 0x0f, 0xff, 0xff, 0x8e, 0x01, 0xc7, 0x03, 0xf0, 0xf0, 0x0f, 0xff, 0xff, 0x8e, 0x01, 0xc7, 0x03, 0xe0, 0xfc, 0x0f, 0xff, 0xff, 0x8e, 0x01, 0xc7, 0x01, 0xe0, 0xfe, 0x0f, 0xff, 0xff, 0x8e, 0x03, 0xc7, 0x01, 0xc0, 0xff, 0x8f, 0xff, 0xff, 0x8e, 0x03, 0x87, 0x01, 0xc0, 0xff, 0x8f, 0xff, 0xff, 0x8e, 0x0f, 0x87, 0x01, 0xc0, 0xff, 0xcf, 0xff, 0xff, 0x8f, 0xff, 0x07, 0x01, 0xc0, 0xff, 0xef, 0xff, 0xff, 0x8f, 0xfc, 0x07, 0x01, 0xc0, 0xff, 0xef, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x0e, 0x0c, 0x0c, 0xc3, 0x07, 0xff, 0xef, 0xff, 0xfe, 0x0f, 0xec, 0xec, 0x99, 0x7f, 0xff, 0xef, 0xff, 0xfe, 0x0f, 0x04, 0xe4, 0x81, 0x0f, 0xff, 0xcf, 0xff, 0xfc, 0x0e, 0x32, 0xe4, 0x9f, 0xc7, 0xff, 0x8f, 0xff, 0xf8, 0x0e, 0x32, 0x4c, 0x9b, 0x67, 0xff, 0x0f, 0xff, 0xf0, 0x0e, 0x04, 0x0c, 0xc3, 0x0f, 0xfe, 0x0f, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff ] # Draw the bitmap on the display oled.draw_bitmap(0, 0, heart_bitmap, 72, 32, 1) # Update the display with the new image oled.display() utime.sleep(3) #oled.invert_display(True)

위 코드를 실행하면 아래와 같이 OLED 화면에 이미지가 나타납니다.

라즈베리 파이 피코가 oLED에 이미지 표시

OLED 화면에 다른 이미지를 표시하려면 다음 단계를 따르세요:

  • 이미지를 (어떠한 포맷이든) 비트맵 배열로 변환합니다. 변환을 위해 이 온라인 도구를 사용할 수 있습니다. 아래 이미지를 참고하여 이미지를 비트맵 배열로 변환하는 방법에 대해 안내받으세요. 이 예시에서는 Raspberry Pi Pico 아이콘을 비트맵 배열로 변환했습니다.
이미지를 비트맵 배열로
  • 기존 Raspberry Pi Pico 코드에 있는 비트맵 배열을 새로 변환된 배열로 교체하세요.
  • 새 이미지의 크기에 맞게 Raspberry Pi Pico 코드에서 이미지의 가로와 세로 값을 조정하세요.

참고: 이미지 크기가 OLED 화면 크기보다 작거나 같도록 확인하십시오.

OLED에서 텍스트/숫자를 자동으로 수직 및 수평 중앙 정렬하는 방법

아래의 MicroPython 코드는 OLED 화면에서 텍스트를 수직 및 수평으로 자동 중앙에 배치합니다.

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-oled-128x32 */ from machine import I2C, Pin from DIYables_MicroPython_OLED import OLED_SSD1306_I2C import utime # Initialize I2C i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000) # Adjust Raspberry Pi Pico pins according to your setup # Initialize the OLED display oled = OLED_SSD1306_I2C(128, 32, i2c) # Clear the display oled.clear_display() oled.display() def oled_display_center(oled, text): # Get the text bounds (width and height) of the string x1, y1, width, height = oled.get_text_bounds(text, 0, 0) # Set cursor to the calculated centered position cursor_x = (oled.WIDTH - width) // 2 cursor_y = (oled.HEIGHT - height) // 2 oled.set_cursor(cursor_x, cursor_y) # Print the text on the display oled.println(text) # Refresh the display to show the text oled.display() oled.set_text_size(2) oled_display_center(oled, "DIYables")

코드를 실행하면 텍스트가 OLED 화면에서 수직 및 수평으로 중앙 정렬됩니다.

라즈베리 파이 피코 oLED 수직 및 수평 중앙 정렬

OLED 문제 해결

128x32 OLED 화면에 아무 것도 표시되지 않는 경우, 다음 단계를 시도해 보십시오:

  1. 모든 배선 연결이 올바른지 확인하십시오.
  2. I2C OLED가 SSD1306 드라이버를 사용하고 있는지 확인하십시오.
  3. Raspberry Pi Pico에서 I2C 주소 스캐너 코드를 실행하여 OLED의 I2C 주소를 확인하십시오.
from machine import I2C, Pin import utime i2c = I2C(0, sda=Pin(0), scl=Pin(1)) print('Scanning I2C bus...') devices = i2c.scan() if len(devices) == 0: print("No I2C devices found") else: print('I2C devices found:',len(devices)) for device in devices: print("Decimal address: ",device," | Hex address: ",hex(device)) utime.sleep(2)

Thonny 하단의 셸에 출력:

Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Scanning... I2C device found at address 0x3C ! done Scanning... I2C device found at address 0x3C ! done
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡