행복한 하루

라즈베리파이 제로 프로젝트(7) – OLED 0.96인치(SSD1306) 사용해보기 본문

RaspberryPi/Raspberry Pi Zero

라즈베리파이 제로 프로젝트(7) – OLED 0.96인치(SSD1306) 사용해보기

변화의 물결 2020. 10. 24. 23:09

 

 

 안녕하세요.

 

 라즈베리파이에서 각종 수치를 외부에서도 있어야 하므로 출력해줄 있는 장치가 필요합니다. 그래서 번째로 테스트해 장치는 소형 OLED 0.96inch로로 선택해보았습니다. 다음번에는 5inch LCD 테스트해 보겠습니다.

 

 시중에 SSD1306 시리즈가 많이 유통되고 있고 간단한 글자를 표현하는 것에 사용되고 있습니다. 그리고 1.5inch 인치가 올라가면 조금 다른 라이브러리를 사용해야 합니다.

 주의할 점은 SSD1306 사용하기 위해서는 2가지 통신 타입이 있다는 것을 인지해야 합니다. SPI 6핀과 I2C 4 형태가 있으며, 화면에 나타나는 색상이 흰색, 파랑 등으로 나뉘어 있다는 것을 알고 있어야 합니다. 확인하시고 구매하셔야 합니다.

 

  이번 테스트는 I2C 이용하고 파란색 글자를 사용할 예정입니다.

 

1. OLED 0.96inch (SSD1306) 사양 확인

  • Diagonal Screen Size0.96"
  • Number of Pixels128 x 64
  • Color DepthMonochrome 
  • Dimension27.8 x27.3x 4.3 mm
  • Working Voltage: 3.3~ 5V DC
  • Power: 0.06W Max
  • Viewing Angle: >160 Degree
  • Duty1/32
  • Brightness ( cd/m2)150 (Typ) @ 5V
  • Interface I2C

 

2. 연결(배선) 방법

  - 라즈베리파이 제로에 I2C 포트에 연결합니다. 배선은 아래와 같이 4가닥을 연결해줍니다. 그리고 디폴트로 I2C 주소가 0x78쪽에 저항이 붙어 있음으로 만약 다른 모듈과 연동하여 주소가 동일하게 나타난다면 저항을 0x7A 쪽으로 변경해 주면 됩니다.

 

라즈베리파이 제로 SSD1306 모듈
PIN_1 (3.3V) VCC(+)
PIN_1 (3.3V) SDA
PIN_5 (SCL) SCL
PIN_9 (GND) GND(-)

전선 연결도

3. 라이브러리 설치

  - 우선 기본 라이브러리를 업데이트합니다.

    pi@raspberrypi:~ $ sudo apt-get update

 

  - 완료가 되면 i2c 통신을 사용하겠다는 설정을 해줍니다.

   (앞의 온도 습도 편을 보았다면 넘어가시면 됩니다.)

 

  - 기본적으로는 I2C disabled  상태입니다그래서 활성화를 시켜주어야 합니다그러나 어렵지 않게   있습니다이전 암호 설정할  이용했던 설정 페이지로 들어갑니다.

    pi@raspberrypi:~ $  sudo raspi-config

  

  - InterfacingOptions 선택합니다.

raspi-config 설정화면

  - P5 I2C 선택합니다.

I2C 선택

  - 활성화하겠느냐에서 Yes 선택합니다.  

활성화 선택

   - 그러면 OK 선택하고 이제 사용할  있게 됩니다설정되었는지 확인해   있습니다.

    pi@raspberrypi:~ $ ls /dev/i2c*

  

  - i2c-1  나타난다면 설정된 것으로 보면 됩니다.

 

4. 연결된 모듈 주소 확인 

  - 물리적으로 핀들을 연결했다면 장치와 통신이 되는지 한번 확인도 해보아야 합니다라즈베리파이에는 i2c에는 연결된 장치들의 주소를 가져올  있는 명령어를 제공하고 있습니다보통 임베디드 장비에는 기본적으로 설치되어 있습니다여기서는 i2c-tool 설치했기 때문에 있다고 보면 됩니다.

 

  - i2cdetect 명령어를 이용하여 i2c 1 포트에 연결된 장비의 주소를 확인합니다.

    pi@raspberrypi:~ $ i2cdetect -y 1

 

  그러면 OLED 주소 값을 확인할  있습니다현재 제품의 주소는 3C으로 나타나고 있습니다. 30(세로 ) + C(가로 ) = 주소 3C

  동일한 주소를 가지는 모듈을 연결한다면 충돌이 나서 값을 제대로 가져올  없습니다. 그래서 하드웨어 적으로 주소를 변경시켜주거나 다른 모듈을 사용해야 합니다

i2cdetect 결과화면

 5. OLED 위한 SSD1306 작업환경 만들기

  - 작업할 디렉터리를 생성합니다.

    pi@raspberrypi:~ $ mkdir ~/workspace

    pi@raspberrypi:~ $ ls

 

  - 공개된 라이브러리와 소스를 사용할 예정이기 때문에 git 관련 프로그램도 다운로드합니다.

    pi@raspberrypi:~ $ sudo apt-get install git -y

 

  - 작업할 디렉터리로 이동합니다. (git으로 ssd1306 소스를 다운로드하기 위해서)

    pi@raspberrypi:~ $ cd workspace/

    pi@raspberrypi:~/workspace $ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

 

  - 파이썬으로 소스가 작성되어 있으므로 파이썬을 실행할 라이브러리를 설치합니다. python2, python3 버전에 관해서 설치합니다.

 

  pi@raspberrypi:~/workspace $ sudo apt-get install python3 python3-rpi.gpio python3-pip -y

  pi@raspberrypi:~/workspace $ sudo apt-get install python-pip python-dev python-pil python-smbus -y

 

  $ sudo pip install Pillow

  $ sudo pip install python-mpd2

  $ sudo pip install psutil

 

  $ sudo pip3 install Pillow

  $ sudo pip3 install python-mpd2

  $ sudo pip3 install psutil

 

  pi@raspberrypi:~/workspace $ cd ~/workspace/Adafruit_Python_SSD1306/

  pi@raspberrypi:~/workspace/Adafruit_Python_SSD1306 $ sudo python setup.py install

  pi@raspberrypi:~/workspace/Adafruit_Python_SSD1306 $ sudo python3 setup.py install

 

  - 샘플(example) 프로그램을 테스트해봅니다.

    pi@raspberrypi:~/workspace/Adafruit_Python_SSD1306 $ cd examples/

    pi@raspberrypi:~/workspace/Adafruit_Python_SSD1306/examples $ python3 stats.py

    (python 2.x 분들은 python stats.py로로 실행하면 됩니다.)

 

 

  위와 같이 라즈베리파이 제로의 상태 정보가 나타납니다. 나중에 본인이 원하는 내용과 글자 크기, 애니메이션 효과 등을 해보고 싶다면 example 디렉터리에 있는 소스를 참조하여 자신이 원하는 프로그램으로 변경하여 사용하면 됩니다.

 

감사합니다.

 

 

참고사이트

https://m.blog.naver.com/kjnam100/220810493911

 

 

Comments