2016年06月07日 | 公開。 |
秋月電子で販売されている、人気の小型グラフィックLCDモジュールのAQM1248Aを、Arduinoのシールドの形にして、使いやすくしてみました。AQM1248Aは3.3Vで動作するLCDモジュールですので、5VのArduinoで使用するにはレベル変換回路を付ける必要がありますが、抵抗分圧型レベル変換回路を使ったシールドと、74AHC244を用いたレベル変換回路を使ったシールドの2種類を作りました。
AQM1248Aと5V→3.3Vのレベル変換回路を搭載した、Arduino用のシールドを2種類製作しました。一方は抵抗分圧型レベル変換回路を使用しており、他方は74AHC244を用いたレベル変換回路を使用しています。それぞれのシールドの特徴を表1に示します。
シールドの種類 | 長所 | 短所 |
---|---|---|
抵抗分圧型レベル変換回路を使ったシールド |
|
|
74AHC244を用いたレベル変換回路を使ったシールド |
|
|
参考:ハードウェアSPI接続とソフトウェアSPI接続の違いについては、ArduinoでグラフィックLCDを動かす(AQM1248A編)(3)を参照してください。
2種類のシールドをArduino Unoに装着した様子を、それぞれ写真1と写真2に示します。
これらのシールドを動かすスケッチは、、MGLCDライブラリおよびMGLCD_SPIライブラリを使えば簡単に作れます。詳しい話はArduinoでグラフィックLCDを動かす(AQM1248A編)(13) をご覧ください。
ArduinoでグラフィックLCDを動かす(AQM1248A編)(4)の図13に示した抵抗分圧型のレベル変換回路と、AQM1248Aと、5つのタクトスイッチ(内1つはリセット用)とを搭載したシールドを製作しました。
製作したシールドの回路図を図1に、部品表を表2に示します。
部品番号 | 数量 | 品名 | 型番/仕様 | 備考 |
---|---|---|---|---|
R1~R4 | 4 | カーボン抵抗 | 510Ω±5%、1/6W | |
R5~R8 | 4 | カーボン抵抗 | 1kΩ±5%、1/6W | |
SW1~SW5 | 5 | タクトスイッチ | 6㎜角 | |
CN1、CN2 | 2 | ピンソケット | 2.54mmピッチ、1×6ピン、リード長10mm | |
CN3、CN4 | 2 | ピンソケット | 2.54mmピッチ、1×8ピン、リード長10mm | |
CN5 | 1 | 丸ピンICソケット | 2.54mmピッチ、7ピン、シングル | |
CN6 | 1 | ピンヘッダ | 1×7ピン、2.54mmピッチ | 1×40ピンのピンヘッダを切断して使用。このピンヘッダは、AQM1248Aの信号線をロジックアナライザで観察するために使用する。 |
1 | 丸ピンIC連結ソケット | 2.54mmピッチ、1列、7ピン | 1列、14ピンの丸ピンIC連結ソケットを切断して使用。超小型グラフィックLCDピッチ変換キットをCN5に接続するのに使う。 | |
1 | ピンソケット | 2.54mmピッチ、1×3ピン | 超小型グラフィックLCDピッチ変換キットの固定用のスペーサとして使用する。電気的なコネクタとしては使わない。 | |
1 | LCDモジュール | 超小型グラフィックLCDピッチ変換キット | AQM1248Aと超小型グラフィックLCD用ピッチ変換基板のセット。CN5に装着。付属のピンヘッダは使わずに丸ピンIC連結ソケットを使う。 | |
1 | ユニバーサル基板 | UB-ARD01WH | サンハヤト製。Arduinoのシールド用。 |
製作したシールドの外観を写真3~写真5に示します。
このシールドは、丸ピンICソケットによりLCDモジュールが取り外しできる様になっています。LCDモジュールを取り外した状態の基板の写真を写真6に示します。
シールドは、サンハヤトのUB-ARD01WHというArduinoのシールド用ユニバーサル基板を使って作りました。配線は、0.4mmのすずめっき線と0.2mmのUEW(ポリウレタン線)を使いました。(写真4と写真7を参照)
基本的にはユニバーサル基板上に回路図通り配線をしていけば、シールドが完成しますが、AQM1248Aの取り付けには注意が必要です。
AQM1248Aはピンピッチが1.27mmですので、直接ユニバーサル基板に実装できません。そこで超小型グラフィックLCDピッチ変換キットを使います。超小型グラフィックLCDピッチ変換キットを使うと、AQM1248Aを動かすのに必要な、数個のチャージポンプ用コンデンサやプルアップ抵抗なども、キット内に内蔵されているので、便利です。(ArduinoでグラフィックLCDを動かす(AQM1248A編)(2)を参照)
また、超小型グラフィックLCDピッチ変換キットには、7ピンのピンヘッダが付属していますが、今回はこれを使わず、7ピンの丸ピンICソケットと7ピンの丸ピンIC連結ソケットを使い、AQM1248Aをシールドから取り外せるようにしました。AQM1248AをCN5から取り外している様子を写真8に示します。
AQM1248Aを左側のヘッダだけで固定するとぐらつくので、右側を3ピンのピンソケットで支える構造にしました。このピンソケットは、単なるスペーサとして使用しており、電気的な働きはありません。(写真8参照)
AQM1248Aを取り外して、ブレッドボードでの実験にちょっと使ってみる事ができる様になり、それなりに便利ですが、シールドからAQM1248Aがかなり浮いてしまって不格好ですので、ユニバーサル基板にはんだ付けしてしまって、取り外せない構造にする方が見た目は良くなります。
CN6の7ピンのピンヘッダには、AQM1248Aの制御信号がそのまま出ています。ロジックアナライザでAQM1248Aの信号を観察するために設けてありますが、普通はCN6は必要ないでしょう。
レベル変換回路の構成とArduinoへの結線については、 ArduinoでグラフィックLCDを動かす(AQM1248A編)(4)の図13の通りなので、特に説明が必要ないと思います。
この結線ではSPIヘッダ(ICSPヘッダ)を使用していないので、Arduino LeonardoではソフトウェアSPI接続専用になります。
Arduino Unoでは、SPIヘッダ(ICSPヘッダ)のMOSI信号とSCK信号がそれぞれ11番端子と13番端子に、Arduino基板内部で接続されているので、ハードウェアSPI接続でもソフトウェアSPI接続でも使用できます。
シールド上には、5個のタクトスイッチを設けました。SW5はリセットスイッチです。SW1~SW4は、汎用の入力用スイッチです。SW1~SW4のスイッチと、対応するArduinoの信号線の関係を表3に示します。
スイッチの番号 | 対応する信号線 |
---|---|
SW1 | D8 |
SW2 | D7 |
SW3 | D4 |
SW4 | D2 |
SW1~4のスイッチをONにすると、Arduinoの信号線をGNDにショートします。プルアップ抵抗はつけていないので、スイッチの状態を読み取るには、スイッチにつながった信号線をpinMode関数でINPUT_PULLUPと宣言して、マイコンの内蔵プルアップ抵抗を有効にしておく必要があります。
サンプルスケッチとして、AQM1248Aと4つのタクトスイッチを使った、落ち物ゲームを作りました。ダウンロードは以下のリンクからできます。
このスケッチの動作には、MGLCDライブラリおよびMGLCD_SPIライブラリのVer. 0.40以降が必要です。
このスケッチは、このページで紹介している抵抗分圧型のレベル変換回路を使ったシールドでは、Arduino UnoとArduino Leonardoで動作を確認しています。
参考:レベル変換回路を使わないか、3.3V入力でも動作する様なレベル変換回路を使えば、Arduino DueやArduino M0でも動作します。
スケッチのコンパイルは、Arduino IDE 1.0.1以降を使ってください。Arduino IDE 1.6.XやArduino IDE 1.7.X(Xは任意の数)でも結構です。
注意:Arduino IDE 1.0.0はINPUT_PULLUPに対応していないので使えません。
SW1~SW4のスイッチは、表4の様に機能が割り当てられています。
スイッチ番号 | 割り当てられた機能 |
---|---|
SW1 | ブロックを左に移動する。 |
SW2 | ブロックを右に移動する。 |
SW3 | ブロックを回転させる。 |
SW4 | ブロックを落下させる。 |
次回は、74AHC244を用いたシールドの紹介をする予定です。続きを書くのはぼちぼちと。
商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス | |
サポートページ | 122X32モノクログラフィックLCDシールドサポートページ |
商品名 | GLCD学習シールドキット | |
税抜き小売価格 | 1410円 | |
販売店 | スイッチサイエンス | |
サポートページ | GLCD学習シールドキットサポートページ |