Piに2.3ドルの1.3インチIPS液晶ディスプレイをつなぐ中国のお店が中国国外に売る通販モールAliExpressで、激安の小型IPS液晶ディスプレイを買いました。www.aliexpress.comサイズは1.3インチ、解像度は240x240px、65万色対応だそうです。液晶コントローラとしてST7789VWというLSIが搭載されており、SPIで制御できます。小型でちょっとした情報を表示するのに便利そうですね🥰おそらく、Amazon.co.jpで売られているこちらのものと類似品だと思います。基板のシルク印刷が微妙に違いますが、ピン配置等は同じように見えます。Nanoと互換性がありますDiyStudioAmazonAliExpressでの私が購入時の値段は、なんと$2.30でした!300円しないのでお買い得ですね。このディスプレイもPythonから簡単にアクセスできるライブラリを公開されている方がいて、ドライバを書かずとも簡単に好きなものが表示できます。Piにつないでみましょう。購入した小型液晶ディスプレイこんな感じのものが届きました。画面についていた保護シールははがしています。Piのピンヘッダは上図のように機能が割り当てられています。このモジュールはSPIで通信しますが、そのほかにも制御線をつなぐ必要があります。SPI以外はどのGPIOでも良い(Pythonプログラムで指定可)のですが、以下のようにしてみました。バックライトON/OFFバックライトON/OFFは、制御しなければ何も接続しなくて大丈夫でした。内部でプルアップされており、接続しなければ常時ONになるみたいです。私は接続無しで使ってみました。これらをジャンプワイヤーで接続すると、次のようになりました。PiがSPIコントローラ、液晶ディスプレイがSPIペリフェラルになります(ペリフェラルというのは、周辺機器というような意味です)。SPIコントローラがクロックを出して通信をリードします。SPI通信はSCLK(クロック)、SDO(データ出力)、SDI(データ入力)、CS(チップ選択)の4つの信号を使って通信します。I2Cと違って、入力と出力用にそれぞれ信号線が用意されています。コントローラが通信したい相手を選んでCSをLow(0)にして、デバイスと通信します。この液晶ディスプレイはコントローラからの信号を受けるだけで自分は何も出力しないので、信号線を片方向(MOSI)だけ使うようになっています。データ線が1本しか出ていません。CSはピンが出ておらず、内部的にLowに落とされているようで、常時選択状態になっています。このSPI信号線を独占してしまっています。この液晶と同時に他のSPIペリフェラルを使うことはできません。ご主人様が奴隷を使うイメージで例えるのは良くないということで、2020年ごろから名称が変わってきています。有効化するには、raspi-configのメニューから設定できます。スポンサーリンクPythonで表示させてみようPythonライブラリーのインストールイギリスで教育用ハードウェアなどを開発しているPimoroni社がPythonライブラリーを開発しています。github.comこれを使うと簡単に表示できます。基本的な使い方から見ていきましょう。python3でPythonのシェルを起動します。起動したら、必要なライブラリを読み込みます。Image1つのST7789が先ほど紹介したこの液晶ディスプレイ用のライブラリです。(PIL)という有名なPython画像処理ライブラリです。実はこのST7789ライブラリはPillowで生成した画像を表示するライブラリとなっているので、Pillowが必要です。続いて、ST7789のインスタンスを作成します。1000)引数ですが、portでSPIのポートを指定します。Piのピンヘッダが出ているのは0番なので、0を指定します。続いてcsのピン番号ですが、この液晶ディスプレイにはCSピンが無いので使いません。rstはリセット端子をGPIO5につないでいるので、5にします。同様にdcにデータ・コントロール選択端子を指定します。GPIO6につないでいるので6です。backlightはバックライト制御端子を接続した場合は同様に指定します。接続していない場合はNoneでOKです。最後にspi_speed_hzですが、SPIクロックの速度を指定します。ここではライブラリのサンプルにあった通り80MHzにしています。ジャンプワイヤーでつないでいるのにこんな高速で大丈夫かな?🤔とも思いましたが、動いたのでとりあえずそのままにしました。このライブラリでは、インスタンス作成時にディスプレイのリセットを行い、初期化コマンドを送信して液晶ディスプレイをONにするようです。次に、表示する画像を用意しましょう。単純に、全面を色で塗りつぶしてみます。106))これでPillowの機能を使って画面サイズ分の緑色の画像を作成しました。