우리 대부분은 대부분의 프로젝트에서 사용자에게 일부 정보를 표시하는 데 사용되는 16x2 도트 매트릭스 LCD 디스플레이에 익숙 할 것입니다. 그러나 이러한 LCD 디스플레이에는 많은 한계가 있습니다. 이 튜토리얼에서는 OLED 디스플레이와이를 Raspberry Pi와 함께 사용하는 방법에 대해 알아 봅니다 . 시장에는 다양한 유형의 OLED 디스플레이가 있으며이를 작동시키는 방법도 많습니다. 이미 Arduino와 함께 7 핀 OLED를 사용했습니다.
필요한 하드웨어:
- 128x64 OLED 디스플레이 모듈 (SSD1306)
- 라즈베리 파이
- 브레드 보드
- 전선 연결
- 전원 공급
OLED 디스플레이에 대해 알아보기:
OLED라는 용어는 " 유기 발광 다이오드"의 약자 로 대부분의 TV에서 사용되는 것과 동일한 기술을 사용하지만 그에 비해 픽셀 수가 적습니다. 이 멋진 디스플레이 모듈을 Raspberry Pi와 연결하면 프로젝트가 멋지게 보이기 때문에 정말 재미 있습니다. 여기에서 OLED 디스플레이 및 유형에 대한 전체 기사를 다뤘습니다. 여기에서는 단색 4 핀 SSD1306 0.96 인치 OLED 디스플레이를 사용하고 있습니다. 이 LCD는 I2C 모드에서만 작동합니다.
다음은 OLED와 Raspberry pi의 연결입니다.
OLED 핀 | RPI 핀 |
VCC | 3.3v |
GND | GND |
SDA | SDA (물리적 핀 3) |
SCL | SCL (물리적 핀 5) |
회로도:
Raspberry Pi와 OLED 연결:
RPI 커뮤니티는 이미이를 훨씬 간단하게 만드는 데 직접 사용할 수있는 많은 라이브러리를 제공했습니다. 몇 개의 라이브러리를 사용해 보았는데 Adafruit_SSD1306 OLED 라이브러리가 사용하기 매우 쉬우 며 그래픽 옵션이 몇 가지 있으므로이 튜토리얼에서 동일한 것을 사용할 것입니다.
1 단계: I2C 통신 활성화
Adafruit SSD1306 라이브러리를 설치하기 전에 Raspberry Pi에서 I2C 통신 을 활성화 해야합니다.
Raspberry Pi 콘솔에서이 유형을 수행하려면:
sudo raspi -config
그러면 블루 스크린이 나타납니다. 이제 인터페이스 옵션을 선택하십시오
그런 다음 I2C를 선택해야합니다.
그런 다음 예를 선택하고 Enter 키를 누른 다음 확인을 누릅니다.
그런 다음 아래 명령을 실행하여 raspberry pi 를 재부팅 해야합니다.
소도 재부팅
2 단계: OLED I2C 주소 찾기 및 업데이트
그런 다음 주어진 명령을 사용하여 OLED I2C 주소를 찾아야합니다. 그러면 16 진수 주소가 표시됩니다.
sudo i2cdetect –y 1
그런 다음 주어진 명령을 사용하여 Raspberry Pi를 업데이트합니다.
sudo apt-get 업데이트
3 단계: python-pip 및 GPIO 라이브러리 설치
그런 다음 주어진 명령을 사용하여 pip 를 설치 해야합니다.
sudo apt-get install build-essential python-dev python-pip
그리고 Raspberry Pi GPIO 라이브러리 설치
sudo pip는 RPi.GPIO를 설치합니다.
4 단계: Python Imaging Library 및 smbus 라이브러리 설치
마지막으로 주어진 명령을 사용하여 Raspberry Pi에 Python Imaging Library 및 smbus 라이브러리 를 설치해야합니다.
sudo apt-get install python-imaging python-smbus
5 단계: Adafruit SSD1306 Python 라이브러리 설치
이제 주어진 명령을 사용하여 Adafruit SSD1306 Python 라이브러리 코드 및 예제를 설치할 차례입니다.
sudo apt-get install git git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git cd Adafruit_Python_SSD1306 sudo python setup.py install
이제 사용자는 Raspberry Pi에서 OLED 인터페이스 코드를 찾을 수 있으며 직접 재생하거나 사용자 정의 할 수 있습니다. 여기에서는 데모 용 예제 코드를 사용자 정의했습니다. 기사의 끝에서 전체 Python 코드 를 찾을 수 있습니다.
프로그래밍 설명:
RPi 프로젝트와 OLED 인터페이스를 위한 프로그래밍 부분 은 쉽습니다. 먼저 필요한 라이브러리를 가져와야합니다.
가져 오기 시간 가져 오기 Adafruit_GPIO.SPI를 SPI로 가져 오기 PIL에서 Adafruit_SSD1306 가져 오기 PIL에서 이미지 가져 오기 PIL에서 ImageDraw 가져 오기 ImageFont 가져 오기 하위 프로세스
이 후 디스플레이 초기화
RST = 0 disp = Adafruit_SSD1306.SSD1306_128_64 (rst = RST) disp.begin () disp.clear () disp.display () width = disp.width height = disp.height image1 = Image.new ('1', (width, height)) draw = ImageDraw.Draw (image1) draw.rectangle ((0,0, width, height), outline = 0, fill = 0) padding = -2 top = padding bottom = 높이 padding x = 0 font = ImageFont.load_default () 그런 다음 주어진 코드를 사용하여 데이터 또는 이미지를 OLED 로 보낼 수 있습니다.
# 두 줄의 텍스트를 작성합니다. disp.clear () disp.display () draw.text ((x, top), "OLED 인터페이싱", font = font, fill = 255) draw.text ((x, top + 8), "Circuit Digest", font = font, fill = 255) draw.text ((x, top + 16), "추가 동영상", font = font, fill = 255) draw.text ((x, top + 25), "방문 위치", font = font, fill = 255) draw.text ((x, top + 34), "www.circuitdigest.com", font = font, fill = 255) # 이미지를 표시합니다. disp.image (image1) disp.display () time.sleep (2) if disp.height == 64: image = Image.open ('img1.png'). convert ('1') else: image = Image. open ('img1.png'). convert ('1') disp.image (이미지) disp.display () time.sleep (2) disp.height == 64 인 경우: 이미지 = Image.open ('img3.jpg'). convert ('1') else: 이미지 = Image.open ('img3.jpg'). convert ('1')
이 OLED 는 128 * 32이고 다른 하나는 128 * 64이므로 사용자는 OLED를 초기화하는 동안 누구든지 선택할 수 있습니다. 여기에 두 가지 모두에 대해이 코드를 작성했습니다. 사용자는 다음과 같이 128 * 64 픽셀에 대해서만 OLED를 초기화해야합니다.
disp = Adafruit_SSD1306.SSD1306_128_64 (rst = RST)
모든 코드와 기능은 이해하기 쉽고 추가 설명이 필요하지 않습니다. 시작하여 높이, 너비 및 이미지로 재생하고 다른 기능을 시도하여 더 멋진 기하학적 인물을 만드십시오.
전체 파이썬 코드와 데모 비디오 가 아래에 나와 있으며 여기에서이 프로그램에서 사용한 이미지를 찾을 수 있습니다.
또한 Arduino와 OLED 인터페이스를 확인하십시오.