Arduino(7) Arduino Pro MiniにSPI接続のカラーLCDをつないでみる

前回まで使ったArduino UNOと2.4インチTFT液晶は、簡単に動かすことができて良かったのですが、不満点もあります。

一つは、前回触れたように、このLCDを使うとArduino UNOのI/Oポートをほとんど使ってしまうので、センサなど他のデバイスを接続する余地が非常に小さいことです。

もう一つは、Arduino UNOは5V動作なので、3.3V動作のセンサ類を直接つなげられないことです。
3.3Vのデバイスをつなぐには、ブレッドボードなどにArduino UNOの線を引き出し、レベルコンバータを通してから接続する必要があります。

そこで、Arduino UNOの代わりに3.3V動作のArduino Pro Miniを使い、LCDもSPI接続のものにしてはどうかと考えました。

Arduino Pro Miniは、UNOをそのまま小さくして、動作時に不要なUSBシリアル変換やAVRプログラマなどの機能を削除したような製品です。
ただし、PCとの接続では、USB-シリアル変換器が必要になります。
また、3.3V動作製品があり、これをつかえば3.3V動作のセンサ等と直結できます。

SPIとは4つの信号線でシリアル通信を行う規格で、8本のデータバスに加えて制御信号線も必要になるパラレルインタフェースよりも、使用するI/Oポートを大幅に減らせます。
arduino07-02.jpg

というような目論見で、以下の製品を購入しました。

Arduino Pro Mini(3.3V)

arduino07-04.jpg

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

arduino07-05.jpg

aitendo TFT液晶with基板 [M-Z18SPI-2P]

arduino07-09.jpg

なお、Pro Miniはピンヘッダを自分でハンダ付けする必要があります。
ピンヘッダを持っていない場合は別途購入が必要です。
(普通のタイプのほかに、L字型も買っておくと良いと思います。)

また、aitendoの上記液晶は、フレキシブル基板をプリント基板にハンダ付けする必要があります。
ただし、このハンダ付けはピン間隔が狭いので、初心者には難しいと思います。

というわけで、今回は実質的にソフトウェアではなくハードウェアの話のみです。
ともかくニッパでベキベキとピンヘッダを切り離していきます。
切ったものが飛ばないように、切るときは指で抑えておきます。

arduino07-06.jpg

Pro Miniは14本×2列の信号線と、PCに接続するための6本×1列の信号線、さらにアナログポートのための2本×1列の信号線が2つ、合計5箇所にピンヘッダを取り付けます。

どのようなピンヘッダ(またはピンソケット)を付けるかは用途次第です。
前回使ったような、足の長いピンソケットを使えば、ブレッドボードに挿すことも、UNOのようにボードにジャンパピンを挿すことも可能になります。

私はブレッドボードを使う想定で、14本×2列のピンを下向きに付けました。
アナログポートの信号線は位置がずらされていますので、ピンヘッダを上向きに取り付けます。
また、PC接続用のピンは裏表を間違えにくいようにL字型ピンで横へ引き出しました。

arduino07-07.jpg

ちなみに、私は上のように2枚重ねのユニバーサル基板を用意して、そこにハンダ付けしたいピンヘッダを挿し、その上に基板を乗せてハンダ付けしています。
こうするとピンヘッダがグラついたり抜けたりしません。

USBシリアル変換アダプターは、特にハンダ付けは必要ありません。
今回のPro Miniは3.3V用ですので、ジャンパピンを3.3Vのほうへ付け直しておきます。

液晶基板は、フレキシブル基板と本体側のパターンを慎重に合わせて、まずカプトンテープでフレキ基板を仮止めします。
カプトンテープは耐熱性があるので、多少ハンダ付けの熱が伝わっても大丈夫です。
カプトンテープ(あるいはポリイミドテープ)もaitendoやamazonなどで入手できます。

arduino07-08.jpg

カプトンテープは褐色の透明なテープです。
分かりにくいですが、上の写真だと、基板の上にフレキをカプトンテープで貼り付けていますので、緑のレジストが一部だけオレンジ色っぽく見えています。その部分がカプトンテープです。

このフレキ基板のハンダ付けですが、ベース基板には予備ハンダをし、フレキ基板は予備ハンダなしで、ハンダ付けの際は追いハンダをそれなりの量を流し込む感じで行いました。
ベース基板のパターンと重なるあたりのフレキ基板のパターンにごく小さな穴が開いていますが、ハンダが十分な量であればそこからハンダが少し出てきます。
最初はハンダが少なすぎて、接触不良になっていました。

液晶モジュールの外部接続端子は、今回はピンソケットを取り付けて、ジャンパピンを挿せるようにしてみました。
また、この基板はバックライトのLEDに流す電流を決める抵抗を自分で取り付ける必要があります。
5V電源のときは150Ωが標準ということですが、今回はバックライトも3.3Vを使いたいので、100Ωを取り付けました。(昼間使うには若干暗いかもしれません。)

完成したら、早速接続です。

その前に、PCにUSBシリアル変換モジュールのドライバを、下記からダウンロードしてインストールする必要があります。

Virtual COM Port Drivers

無事認識されたら、まずはLチカで動作確認です。

Arduino IDEで、

ボード:”Arduino Pro or Pro Mini”
プロセッサ:”ATMega328(3.3V, 8MHz)”

を選択します。
arduino07-01.jpg

あとはUNOのときと同じようにBlinkのスケッチを開いて、コンパイルして転送すればPro Miniボード上のLEDが点滅するはずです。

次に、今回使うSPI接続LCDをArduinoから制御するためのソフトウェアですが、Adafruitから公開されている以下のライブラリを使います。

adafruit/Adafruit-ST7735-Library · GitHub

Arduino IDEにこのライブラリを追加する方法は、以前書いたのと同じです
なお、今回使った液晶モジュールはSDカードのインタフェースやタッチパネルは付いていませんので、利用できるのは描画関係の機能だけです。

ArduinoとLCD基板との接続方法はaitendoのページに書かれている通りです。
実際の配線図は以下のようになります。
arduino07-03.png

ライブラリを追加すると、スケッチの例も追加されます。
これも、今回のLCDで動作するのはgraphicstestとrotationtestだけです。
特に変更は行わなくても、上記の接続であれば動作するはずです。

コメント