DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

RaspberryPiに謎の有機ELディスプレイを接続してみた

手元に謎のディスプレイがあったので(たぶんメルカリとかで部品を買ったときのオマケ)表示させてみることにしました。

 

現物はコレ↓

f:id:DreamerDream:20190913193807p:plain

型番も何も書かれていないので・・・

「液晶、表示 Raspberrypi」と検索しても全然それらしき物がヒットしなくて困りました。唯一、端子に表示されている「VCC GND SCL SDA」という接続名は解るので仕方なくそれで画像検索してみたらヒットしましたよー!

なんと、液晶ではなく、有機EL(OLED)ディスプレイだったんですね!

 

ということで、それらしきディスプレイの表示をしておられる方のサイトを参考にセットアップしてみることにしました。

 

<参考>

Raspberry PiでI2C接続の128×64 OLEDに日本語を表示(美咲フォント) – Lifelog

 (コードはこちらから拝借しています。)

 

ディスプレイに「VCC GND SCL SDA」と表記されている通り、ラズパイの同じ端子に接続します。

注意:VCCはラズパイの3.3Vに接続しましょう!

f:id:DreamerDream:20190913194941p:plain

(※上の画像は実験中のものです。接続しただけの状態では何も変化ありません。液晶と違って有機ELはディスプレイそのものが発光するのでバックライトがありません。接続しても真っ暗のまま何も変化が無いので心配になると思いますが、接続がキチンと出来ている事を確認する術はありません。信じて進みましょう。)



 

まずは、お決まりのアップデートから

sudo apt-get update

 

ラズパイの初期設定を弄る

sudo raspi-config

 

f:id:DreamerDream:20190912155020p:plain

 「I2C」のセットアップがあるので選択して

f:id:DreamerDream:20190912155035p:plain

 再起動します。

f:id:DreamerDream:20190912155046p:plain

 

sudo reboot

 再起動後、下記のコードを入れると

sudo /usr/sbin/i2cdetect -y 1

この「3C」というのが接続したディスプレイのようです。

f:id:DreamerDream:20190912155417p:plain

LCDのアドレスは0x3c

 

sudo apt-get install build-essential python-dev python-pip

sudo pip install RPi.GPIO

sudo apt-get install git

 

これらは既にインストール済みでした。

 

 

git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

cd Adafruit_Python_SSD1306

sudo python setup.py install

 とすると、

~~ずらずらー

//Finished processing dependencies for Adafruit-SSD1306==1.6.2//

と表示されて完了!

 

日本語フォントインストール

cd /home/pi

sudo mkdir font

sudo mkdir font/misakifont

sudo wget http://www.geocities.jp/littlimi/arc/misaki/misaki_ttf_2015-04-10.zip

(なんかエラー出てzip解凍できないから「まあ日本語表示させないしいいか」と、そのまま。)

 

公開されているコードを日本語を外して実行してみましたら、

import Image

が無いよーってことで怒られました。

ん?

pip install pillow

インストール実行しましたが、既にインストール済みとのこと

 

で、import文を

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

とすることでこれは通りました。

 

  

参考にさせていただいたサイトでは表示文字は白色でしたが、僕のは液晶の画面色がおかしい?と思い、全部塗りつぶしてみると、あら〜、上は黄色で下がブルーの2色式。

しかも上と下の間が2px程度空いているので表示場所には注意が必用なようです。

f:id:DreamerDream:20190913194357p:plain


なんだこれ?

と思ってAmazonで調べた所、どうやら↓のような2色式の商品のようです。 

なるほどー、元々そういう商品だったんですね。

 

ということで、参考コードはほぼそのままに、表示領域を探ってみました。

 

# -*- coding: utf-8 -*-

import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

import time

#ピンの出力設定24と書かれていますがこの辺よく解っていません。

RST = 24
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

 

disp.begin()

#一度クリアーするようです

disp.clear()
disp.display()

 

width = disp.width
height = disp.height
image = Image.new('1', (width, height))

# ディスプレイ表示領域いっぱいの範囲を描画するってことですね
draw = ImageDraw.Draw(image)

# 表示領域いっぱいに四角形を色無しで描きます
draw.rectangle((0,0,width,height), outline=0, fill=0)

#タイトル テキストを設定、どの位置に書くかXY設定

title = 'TEST v2.0'
draw.text((2,0), title, fill=256)

#青字領域のテキストを設定

x=0
y = 14

for str in [ 'MyName is Onancopon' ,'hogehoge', 'hagehage', 'muninuni', 'paipai','123456789012345678901234567890']:
  draw.text((x,y), str, fill=256)
  y+=10

disp.image(image)

#実際に表示を実行
disp.display()  

 

X軸は約21文字、縦は青字が切れない所から最大で6行といったところでしょうか?

f:id:DreamerDream:20190913200527p:plain

しかしこれではあまりに詰め詰めなので実運用では10pxずつ表示させ、5行で表示させることにします。

 

※参考サイトのままの表示方法で、たぶん文字サイズとかも変更出来るのだろうけど、ひとまず表示出来たので良しとします。 

kampa.me