2018-02-07 17:44 | カテゴリ:コンピュータ

Amazonに出ていた中華の極小LEDディスプレイを入手しました。

これSPI 128x64 OLED LCD ディスプレイ 1.3インチ 液晶ディスプレイモジュール(白黒)と
(Sled-0101)
Sled-0101.jpg

これ0.95インチ SPI OLEDディスプレイモジュールフルカラー65Kです。
(Sled-0102)
Sled-0102.jpg


ニュースと天気予報が予想以上にうまくいったので、調子に乗って、この小型LEDに挑戦してみます。



続きは、、、、


さて、まずはこれらのLEDディスプレイの仕様確認からです。
中華製の電子機器をAmazonから買うとほとんど説明書の類は付いてきません。
自分で何とか探さねばねりません。

ネットでいろいろチェックしてみました。

多くの先輩方のサイトがあり、大変参考になります。
どのサイトも大変丁寧に説明されて、初心者には多いに勉強になります。

とりあえず、メーカーサイトに行って、何か説明書は無いかと探してみました。

ありました!

(Sled-0103)
Sled-0103.jpg


メーカーサイトの該当するLEDディスプレイのサポートページです。
おあつらえ向きに、RaspberryPiのPythonのライブラリーも提供されています。
上手くいくかわかりませんが、とりあえずこの手順に沿って、トライしてみようと思います。


(PythonでLEDを使用する為のRasPiの準備)


ライブラリを使用する為に所定の手順で各種の関数を取り込んでセットする必要があるようです。
まず、RasPiのデスクトップから、コンソールターミナル画面を起動して、以下のコマンドを入力し、必要なライブラリをインストールします。


$ sudo apt-get install python-dev python-pip libfreetype6-dev libjpeg-dev build-essential
$ sudo -H pip install --upgrade luma.oled


ただし、Python3を使用している人は、

pip ⇒ pip3,
python ⇒ python3,
python-dev ⇒ python3-dev,
python-pip ⇒ python3-pip.

と変更してコマンドを入力します。


(Sled-0104)
Sled-0104.jpg


すんなりと上記のインストールがうまくいけば良いのですが、私の場合、上記の変更をしてコマンドを実行しましたが、pip3が無いとか、XXXは不要なので削除するには、autoremoeveをしろとか、結構うまくいきませんでした。
いろいろトライして何とかうまくいきました。

結果的に、Raspiのusr/local/libnにあるpythonのフォルダー

(Sled-0105)
Sled-0105.jpg


の、python2.7とpython3.5の中にある、

dist-packages-luma-coreとoledのフォルダーが出来、中に各種のファイルが格納されていれば成功だと思われます。

(Sled-0106)
Sled-0106.jpg


(プログラムの最初にデバイスの初期化を行う)

前項で取り込んだライブラリーをPythonで使用する為の初期化を、プログラムの最初に行う必要があります。

(Sled-0107)
Sled-0107.jpg

from luma.core.interface.serial import i2c, spi
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106

# rev.1 users set port=0
# substitute spi(device=0, port=0) below if using that interface
serial = i2c(port=1, address=0x3C)

# substitute ssd1331(...) or sh1106(...) below if using that device
device = ssd1306(serial)


これらの設定をPythonプログラムの最初で定義しておけばよいようです。
私の機種は、sh1106ですので、これを含めていきます。


前項目のdist-packages-luma-coreとoledのフォルダーに所定のファイルがインストールされていなければ、ここでimportした際にERRORとなりますので、確認してください。

これを実行して、ようやく指定された型番号のLEDが使用で来る準備が整いました。
簡単にイメージを所定の座標に表示できます。

また、canvas()を使用して、BOXや文字を表示できます。

(Sled-0108)
Sled-0108.jpg


with canvas(device) as draw:
draw.rectangle(device.bounding_box, outline="white", fill="black")
draw.text((30, 40), "Hello World", fill="white")



(用意されているデモソフトを試す)

WEBには、あらかじめ色々なデモソフトがアップされています。
それを試してみます。
Readmeファイルに準備の手順がありましたので、まずは所定のセットアップをします。

$ sudo usermod -a -G i2c,spi,gpio pi
$ sudo apt install python-dev python-pip libfreetype6-dev libjpeg-dev build-essential
$ sudo apt install libsdl-dev libportmidi-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libsdl-image1.2-dev



これらを実行して組み込みます。

一旦、ログアウトし、再度ログインして

$ git clone https://github.com/rm-hull/luma.examples.git
$ cd luma.examples


そして luma librariesを読み込みます。

$ sudo -H pip(pip3?) install -e .  <==最後はピリオドです


(デモソフトの3d_box.pyを実行する)

LEDディスプレイを接続する前に、ソフトが起動できるかをまず試します。
WEBの動作手順に従って、デモソフトを起動してみました。

$ python luma.examples/examples/3d_box.py

エラーが出ました。

(Sled-0109)
Sled-0109.jpg

要するに、

ディスプレイのモデル名が私の使用しているsh1106ではなく、ssd1306になっている

通信方式が、spiではなく、i2cになっているが、i2cのデバイスが見つからない

ということらしいです。

ご親切に起動OPTも表示されています。

デモのreadmeを見てみると指定方法がありました。

(Sled-0110)
Sled-0110.jpg


おそらく、display interface で指定すればよさそうです。

そこで、

$ python luma.examples/examples/3d_box.py --display sh1106 --interface spi

として、起動してみました。


(Sled-0111)
Sled-0111.jpg


指定した項目、ディスプレイがsl1106になって、インターフェスもspiになっていました。
なおかつエラーも出ていないようです。
これならハードを接続してテストしてもよさそうです。

早速、マニュアルを参考にコネクターピンで配線しました。

一つ、大きな問題を発見。

マニュアルのピン配置では、

No1ピン=Vcc
No2ピン=Gnd



となっていますが、

(Sled-0112)
Sled-0112.jpg

実際には、ピン1とピン2が入れ替わっています。

(Sled-0113)
Sled-0113.jpg


これ注意しないと、一発で壊れます。

ブレッドボードでLEDを接続しました。

(Sled-0114)
Sled-0114.jpg



さて、配線も終わり、所定のコマンドで、デモソフトを起動しました。


おーーー!
デモ画面が表示されました。
四角い立体が、クルクル回転しながら、大きさを変えて、小さな画面に表示されています。

なかなかいい感じです。


(Sled-0115)
Sled-0115.jpg



(Sled-0116)
Sled-0116.jpg




動画はこちらです。




これで、動作が確認できました。1.3インチなので、結構小さいですが、良い感じです。

次は、文字を表示させてみたいと思います。

PS このLED表示器を大型の模型のコックピットなどに組み込んで、実物の様にレーダーやらコンピュータの画面を表示させたらかっこいいでしょうね!!
ね!(いま、まさに、大型ヘリのプラモデルのコックピットを製作されている方にご提案です(笑))

関連記事

管理者のみに表示する