
다른 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-spidev
Code language: CSS (css)
그 다음에 파이선 패키지 설치. 호환이 안되는건지 break system packages를 넣어줘야 설치가되네요
pip install luma.oled --break-system-packages
Code 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번 찍힐 뿐이고….
이제 열심히 꾸며볼수있겠죠… 시간이라든가 날씨라든가… 시스템 정보라든가…..
그럼 여기까지 삽질기였습니다.
※ 삽질한거 다시 정리한거라 이글 보고 다 안될수도 있음…
끝~