유기 EL 디스플레이 (아사히 과과 기술 유한 공사 제조)를 사용해 보았다

9028 단어 Raspberrypi3
raspberrypi로 유기 EL 디스플레이를 사용해보기
사용하는 디스플레이는 aitendo에서 판매되고 있는 晶门科技有限公司製(제품번호 M096P4W)를 사용

디스플레이를 다음과 같이 연결

    raspberrypi 디스플레이
단자번호 1---------VCC
      3---------SDA
      5---------SCK
      6---------GND

I2C 디바이스 드라이버 설정하기
기본적으로 I2C가 비활성화되어 있습니다. 따라서 I2C를 활성화로 설정
방법은 raspberrypi의 boot 폴더 바로 아래에있는 config.txt의 내용을 변경하여 설정할 수 있습니다.
config.txt를 편집하려면 관리자 권한이 필요합니다.
기기에서 관리자 권한으로 파일을 열어 편집 가능
$sudo leafpad /boot/config.txt

파일이 열리면 "dtparam=i2c_arm=off"로 되어 있는 곳을 찾아 "dtparam=i2c_arm=on"으로 변경한다. 그리고 덮어쓰기 저장하기

이것으로 I2C의 기능이 유효하게 되었다. i2c가 활성화되어 있는지 확인
i2c가 활성화되면 dev 폴더에 "i2c-1"이라는 파일이 자동으로 추가됩니다. 단말기에서 dev 폴더 안에 i2c-1이 있는지 표시해 봅니다.
$ls -l /dev/i2c-1  (末尾は数字のいちである)

를 입력
그러면
crw-rw---- 1 root i2c 89, 1  2月  4 15:12 /dev/i2c-1

라고 표시되면 파일이 자동으로 추가되고 있는 것을 알 수 있다
이 의미는 dev라는 폴더 안에 i2c-1이라는 파일이 있는지 여부를 표시시킨 내용이다.

다음은 디스플레이와 통신이 되어 있는지 확인해 본다
터미널에서
$ i2cdetect -y 1 (末尾は数字のいちである)
     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: -- -- -- -- -- -- -- --                         

디스플레이의 주소가 '3c'이기 때문에 위와 같이 3c가 표시되어 통신이 성공한 것으로 나타났습니다.

디스플레이에 내장된 마이크로 컴퓨터를 제어하기 위한 라이브러리를 다운로드합니다. 마이크로컴퓨터는 晶门科技有限公司의 SSD1306을 사용하고 있다. 이 마이크로컴퓨터를 제어하는 ​​라이브러리를 Adafruit사(미국)가 만들어 무상 공개하고 있다. 그럼 무료로 공개하고 있는 라이브러리를 다운로드해 본다
$git clone https://github.com/adafruit/Adafruit_Python_SSD1306
Cloning into 'Adafruit_Python_SSD1306'...
remote: Counting objects: 112, done.
remote: Total 112 (delta 0), reused 0 (delta 0), pack-reused 112
Receiving objects: 100% (112/112), 34.60 KiB | 0 bytes/s, done.
Resolving deltas: 100% (57/57), done.
Checking connectivity... done.

다음은 라이브러리 빌드
$cd Adafruit_Python_SSD1306
$python setup.py build
running build
running build_py
creating build
creating build/lib.linux-armv7l-2.7
creating build/lib.linux-armv7l-2.7/Adafruit_SSD1306
copying Adafruit_SSD1306/SSD1306.py -> build/lib.linux-armv7l-2.7/Adafruit_SSD1306
copying Adafruit_SSD1306/__init__.py -> build/lib.linux-armv7l-2.7/Adafruit_SSD1306

라이브러리 설치
$sudo python setup.py install
running install
running bdist_egg
running egg_info
creating Adafruit_SSD1306.egg-info
writing requirements to Adafruit_SSD1306.egg-info/requires.txt
writing Adafruit_SSD1306.egg-info/PKG-INFO
writing top-level names to Adafruit_SSD1306.egg-info/top_level.txt
writing dependency_links to Adafruit_SSD1306.egg-info/dependency_links.txt
writing manifest file 'Adafruit_SSD1306.egg-info/SOURCES.txt'
reading manifest file 'Adafruit_SSD1306.egg-info/SOURCES.txt'
writing manifest file 'Adafruit_SSD1306.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
creating build/bdist.linux-armv7l
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/Adafruit_SSD1306
copying build/lib.linux-armv7l-2.7/Adafruit_SSD1306/SSD1306.py -> build/bdist.linux-armv7l/egg/Adafruit_SSD1306
copying build/lib.linux-armv7l-2.7/Adafruit_SSD1306/__init__.py -> build/bdist.linux-armv7l/egg/Adafruit_SSD1306
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_SSD1306/SSD1306.py to SSD1306.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_SSD1306/__init__.py to __init__.pyc
creating build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/requires.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/Adafruit_SSD1306-1.6.1-py2.7.egg' and adding 'build/bdist.linux-armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing Adafruit_SSD1306-1.6.1-py2.7.egg
Copying Adafruit_SSD1306-1.6.1-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding Adafruit-SSD1306 1.6.1 to easy-install.pth file

Installed /usr/local/lib/python2.7/dist-packages/Adafruit_SSD1306-1.6.1-py2.7.egg
Processing dependencies for Adafruit-SSD1306==1.6.1
Searching for Adafruit-GPIO==1.0.3
Best match: Adafruit-GPIO 1.0.3
Processing Adafruit_GPIO-1.0.3-py2.7.egg
Adafruit-GPIO 1.0.3 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/Adafruit_GPIO-1.0.3-py2.7.egg
Searching for spidev==3.3
Best match: spidev 3.3
Adding spidev 3.3 to easy-install.pth file

Using /usr/local/lib/python2.7/dist-packages
Searching for Adafruit-PureIO==0.2.1
Best match: Adafruit-PureIO 0.2.1
Processing Adafruit_PureIO-0.2.1-py2.7.egg
Adafruit-PureIO 0.2.1 is already the active version in easy-install.pth

Using /usr/local/lib/python2.7/dist-packages/Adafruit_PureIO-0.2.1-py2.7.egg
Finished processing dependencies for Adafruit-SSD1306==1.6.1

샘플 이미지를 표시해 봅니다.
$cd examples
$python image.py

이미지가 표시되었다고 생각하지만 늘어나게 되었기 때문에 image.py 소스를 편집하고 32를 주석 처리하고 64를 활성화합니다.


일본어 샘플 보기
소스 코드는 어느 잡지의 소스를 참고로 했다
소스를 실행하면 내 환경에서 오류가 다음과 같이 나왔습니다.
pi@raspberrypi:~/Downloads $ python oled_japanese.py
Traceback (most recent call last):
  File "oled_japanese.py", line 85, in <module>
    main()
  File "oled_japanese.py", line 82, in main
    do_disp(disp)
  File "oled_japanese.py", line 41, in do_disp
    encoding = 'unic')
  File "/usr/lib/python2.7/dist-packages/PIL/ImageFont.py", line 240, in truetype
    return FreeTypeFont(font, size, index, encoding)
  File "/usr/lib/python2.7/dist-packages/PIL/ImageFont.py", line 137, in __init__
    self.font = core.getfont(font, size, index, encoding)
IOError: cannot open resource

오류의 원인을 조사한 결과 글꼴 데이터가 raspbian에 설치되어 있지 않은 것으로 나타났습니다. 데이터라는 것은 NotoSansCJK-Thin.ttc이다. 이것을 다음 사이트에서 다운로드하면 오류가 사라졌습니다.
사이트는 htps //w w. 오, ぇ. 코 m / 게 t / 및 / / lp / cjk
이다

이것을 임의의 폴더내에 해동하고 oled_japanese.py의 소스를 이하와 같이 재기록한다. 우리는 다운로드 바로 아래에 압축을 풀었다.

NG:
# 일본어 글꼴 준비
font = ImageFont.truetype(
font = 'NotoSansCJK-Thin.ttc',
size = fontsize,
encoding = 'unic')
OK:
font = ImageFont.truetype('/home/pi/Downloads/NotoSansCJK-Thin.ttc', 12, encoding = 'unic')

우리는 NotoSansCJK-Thin.ttc를 Downloads 바로 아래에 압축을 풀었으므로 폴더의 절대 경로를 위와 같이 다시 작성했습니다. 그러면 아래 그림과 같이 표시되었습니다.


죄송합니다.

좋은 웹페이지 즐겨찾기