今更、秋月300円液晶

大学の自由科目の課題ということで、こいつに決めた!というサトシ的ノリのもと、プロジェクトを遂行中。
ちなみに300円液晶とはこいつのことでして、こいつを動かす課題としては、

  • 液晶「てめえに何ができる!」 常にデータを送り続けないといけない
  • 液晶「この能無しめが!」 送るだけだとただの照明なので、モジュール自体に有意なデータを処理して送る
  • 液晶「ぶきっちょはきらい!」 0.5mmピッチのフレキシブルケーブルでつなぐ

といったものがあります。

三つ目はすでにクリア。秋葉原に出向いて日米商事で40ピンフレキシブルケーブルを、鈴商でそのコネクタを、マルツパーツで変換コネクタを購入。はんだ付けもしました。

で、ここで次の課題は、常にデータを送り続けないといけない点。
こいつは一度送ったデータをずっと保持してくれるような親切さんではなく、すぐ忘れてしまうので送り続けないといけないのです。
データは、RGB各色6ビット、計18ビット。さらに追加で水平同期とか垂直同期とか。60fpsでやるとしたら、最長でこれらの処理を16.6ミリ秒内に行う。たぶんこれ間違っていますけれど。
ほかにもブランク領域とかメモリ読み出しとかそんな処理があるので、もっと早く!な感じに。
これらを行うのに世の人はCPLDとかFPGAを使っているみたいです。しかし私は貧乏大学生。この漆黒の夜空に30等ぐらいでポツンと光る、実質等級も測定不可能なぐらいの大学生。あんな使うのにカネのかかるデバイスなんぞ、無縁です。
私の武器、それはAVRマイコン。これしかない。
AVRマイコンで表示している人も結構いますが、それでも実用可能なフレームレートを単体で叩き出している人はいません。
ただ、SRAMにデータを書き込みそれをDMAで直接液晶に転送することで60fpsを達成している人がいるようです。この人のを真似てみようかと。

二つ目の課題、有意なデータを送ること。はじめはPNGとかに使われるdeflateをやろうとしましたが、AVRでは現実的でないみたい。ビットマップデータを送るときにはランレングス圧縮が単純かつ実装可能かな。
それプラスですね、ファミコン時代のテクニックを使おうかなと、勘違い妄想を今やっております。スプライトとかラスタスクロールとかですね。スプライトを用いるとフォントだっていけそうな気も。AVR単体でフォントを表示している方もいますが。

まあこれらの妄想を具現化できれば、オモチャ以下の300円液晶を手段に昇華させることはできるかなーとか思っています。たぶん甘いでしょうけれど。

で、だ。最終的にこいつを何らかのモジュールにまとめたいと思うのだけれど。
今の第一候補はArduinoのシールドにしてしまうこと。Arduinoはシールドというモジュールを親亀子亀方式で接続できるので、表示部として液晶シールドを安く自作できれば、なんかいいかもーとか。Arduinoだから制御らくちんにできるし。らくちんにするにはライブラリ書かないといけないんですがね。

そんなこんなで今はこんな感じ。
実際には液晶駆動電圧の±9Vの生成で躓いていますが。ちなみに9V生成はLT1172かNJM2360、-9Vはそれから反転させてLT1054かなーとか。DIP部品で扱いやすいし。
と言いつつ、制御用AVRにATmega64を使いますが。ピン数の多いは正義!だろ。
まずは実験基盤を作るかな。SRAMとAVR、それにフレキコネクタを実装して線を出せるようにしたやつ。

とにかくやれるところまでやってみますわ。