Orange Pi Zero3 OLED 연결하기

다른 OS 사용해봤는데.. 잘 안되는 것 같고… ARMBIAN에서 잘 연동되고 작동되네요..

우선 핀 배치가 필요한데.. OLED는 I2C 방식이라 4개의 핀을 연결해줘야합니다. 판매 패이지에 가보면 핀을 확인할 수 있는데 I2C3 라는 부분에 OLED의 SDA, SCK 를 연결하하고, 5V 를 VDD, GND는 GND에 연결합니다.
(참고로, SPI는 TFT 스크린방식으로 연결 하는 방법)

주의: VDD, GND 거꾸로 끼우면 OLED에서 연기납니다.(당함;; ㅠ_ㅠ )

그다음에 콘솔에 접속하여 명령줄에 armbian-config 를 입력.
System -> Kennel -> Manage device tree overlays -> “i2c3-ph” 라고 붙은걸 선택합니다.

Save후 Back을 선택하면 리부팅하게됩니다.

이 부분 버전에 따라 다를 수는 있는데 최대한 비슷한걸로 i2c3 중에 하나 선택해서 써보심 됨.

이건 안되면 여러번 시도 해볼 수 밖에 없는거 같네요….

원래라면 이렇게 해야되지만……armbian 버전업하면서 목록에서 사라진거 같네요..

/boot/armbianEnv.txt 파일에 다음 내용을 직접 추가해야합니다.

overlays=i2c3-ph

작성 후 리부팅…

초기 설치시 다음과 같은 패키지를 설치해야합니다. 그때그때 필요하다고 한걸 하나씩 추가한거라 진행할려고하는 프로젝트와 차이가 있을 순 있어요..

apt install i2c-tools python3 python3-pip python3-dev python3-rpi.gpio python3-spidevCode language: CSS (css)

그 다음에 파이선 패키지 설치. 호환이 안되는건지 break system packages를 넣어줘야 설치가되네요

pip install luma.oled --break-system-packagesCode language: JavaScript (javascript)


i2cdetect로 제대로 연결되었는지 확인해봅니다. 포트를3을 열었으니 0,1,2 순으로 적용되어 2번을 찾아야합니다.

root@orangepizero3:~# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --Code language: PHP (php)

올바른 연결이 되어있다면 3C로 확인됩니다. 코드에서 사용되는 연결 정보임으로 잘 기록해둡니다.

안되면, amrbian-config 다시 반복 …

0번 1번도 있는데 다른용도로 사용되는거 같에요. (라즈베리파이는 0번 쓸겁니다.)
0번으로 연결되어있다고 믿고 뭔가 하다보면 연결된 모니터가 줄이거거나 모니터 프로그램에 오류를 일으키더군요 -_-

이제 파이선 코드를 짜봅시다. 프롬프트에서 nano test.py 이렇게 하시면 파일 작성되죠…

from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
import time

serial = i2c(port=2, address=0x3C)
device = ssd1306(serial, rotate=0)

with canvas(device) as draw:
    draw.text((10, 0), "Hello World!", fill="white")
    draw.text((10, 20), "Hello World!", fill="white")

while 1:
    time.sleep(1)
Code language: JavaScript (javascript)

위 코드 처럼 i2c부분은 i2cdetect에서 확인된 값으로 맞춰줘야합니다.

ssd1306 이라고 된 부분은 연결되는 oled의 칩에 따라 다른데
보통 알리에서 샀으면
0.9 인치는 ssd1306이였고
1.3인치는 sh1306으로 맞추니 되더군요.. (이건 판매 패이지 참조)

위 코드는 hello world 만 2번 찍힐 뿐이고….

이제 열심히 꾸며볼수있겠죠… 시간이라든가 날씨라든가… 시스템 정보라든가…..

그럼 여기까지 삽질기였습니다.

※ 삽질한거 다시 정리한거라 이글 보고 다 안될수도 있음…

끝~

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다