Top Page Index About Link Mail Form このページの応用機器製作します

超小型カラー液晶時計の製作


2011.5.30

Fusion PCBで作成した基板  Fusion PCBで安価に基板を作れるというので、試しに CS1802 or ZY-FGD1442701V1を使ったカラー液晶時計を作ってみました。

 こちらの画像ができあがってきた基板です。特に問題ないようです。液晶側でストップマスク(グリーンレジストを塗らない部分)におかしな所がありますが、これはわたしの方でのミスです。P板.comなどの国内業者ではこういったおかしいと思われる部分はいちいち問い合わせてくれますが、Fusion PCBでは基板の製作上支障が無ければ問い合わせは来ないと思われますので注意が必要です。でもまあ、それを含めて安価なわけですので。

 納期も郵便事情その他で遅くなることもあります。なので、わたしの仕事では今までどおり P板.comなどの国内業者を利用して、Fusion PCBは主に趣味の方で使う予定。

掌の上の製作中の基板  ソフトウェア開発中。画像はべつやくれいさんのこのイラストを加工して表示させています。余分なコネクタはデバッグ用シリアルポートのコネクタ。

べつやくれいさんのイラストを表示してみた時計  ケース加工して入れてみた図。ケースはタカチの SW-55G。後ろの電池BOXは単三2本の物。どうしてもバックライトの消費電流が大きいので正直、電池駆動には向きません。

べつやくれいさんのイラストを表示してみた時計・斜め上から  斜めから見た図。側面のスリットは microSDカードのコネクタです。画像やファームウェアは microSDを差し替えることで変更できます。

細身のオレンジ色のフォントでニキシー管っぽくしたつもり  細身のオレンジ色のフォントを使ってニキシー管っぽくしたつもり……でしたが、あんまりそうは見えませんね。後で実物のニキシー管を撮影して作り直そうかと。

ケースの蓋を開けた所  ケースの蓋を開けた所。右下に ACアダプタ用のコネクタがありますが、今のところ使ってません。

内部の基板ユニット  内部の基板ユニットです。下の方が Fusino PCBで作った基板。上のはボタンや外部電源のコネクタを実装する為に追加してます。

基板ユニットを開いた図  基板ユニットを開いた所。

基板ユニットの側面  基板ユニットの側面。基板と液晶の間に microSDカードソケットがあります。だもんで、他の部分は 1mm厚の発泡プラスチック板x2枚を入れてあります。事務用両面テープは意外に強力。

時計をつまんでみた  普段は液晶を消しておき、ボタンを押したら一定時間表示するようにすれば、電池でもそれなりに長時間駆動が可能だと思います。


回路図と基板パターン

 →回路図

基板・部品面  右下の R22~25の右側はスイッチをつなぐ為のパッド。液晶のデータバスから抵抗(R22~25)を介してつなぎます。

 左上の D3のパッドは、電源を落とした時にもリアルタイムクロック(IC4 RTC-4543SA)をバックアップする場合に電池をつなぎます。ただ、この基板上でも C13の電気二重層コンデンサを実装していますので、2日程度であればこれだけでバックアップできます。

 右上の IC1はシリアル S-RAMかシリアルフラッシュROMなどを実装できます。

 左下の CN2は電源と、TXD, RXDが出ています。デバッグや、表示モジュールとして使えるようになってます。ただ、MCUは内蔵CR発振でしか使えないので、正確なボーレートが出せません。RTCの 1Hz出力でクロックを補正する簡易FLLを使えば 9600bps程度なら問題ないようです。まあ、信頼性が必要でない用途なら 38400bpsでも大丈夫だろうとは思いますが。

基板・液晶面  CS1802の液晶自体の厚み分を考慮してなかったので基板パターンのハンダづけ部分が上過ぎた位置になってしまっています。このシルクの位置に FPCをハンダづけしてしまうと液晶が基板の上からはみ出てしまいますので、できるだけ下の位置でハンダづけしてください。その際、基板上の VIAにポリイミドテープなどを貼ってショートしないように注意します。

 LED2は ZY-FGD1442701V1のバックライト LEDが青すぎるのでそれを使わずに他の白色LEDを使えるかもしれないということでつけた物です。配置は適当なので実際に使えるかどうかはわかりません。LED1も、液晶をつけると使えないでしょうね。どちらかと言うと LEDを実装せずになんらかの汎用ポート or A/Dコンバータ入力に使うことになるかと。


ファームウェアとリソース

 ソフトウェアとデータは少々複雑な構成になってます。

・ブートローダ
 microSDカードのファイルを読んでファームウェアの自己書き変えを実行します。また、リソースデータを AVRの内蔵 Flashメモリ(プログラム領域)に書き込むルーチンも含みます。AVRプログラマで書き込みます。
・ファームウェア
 通常の動作をするプログラムです。時計表示の他、起動時に microSD内に CLCLOCK.BINというファイル名を認識するとブートローダを呼び出して自己書き変えします。
・リソース
 主に画像データのことです。ファームウェアが起動時に microSD内に RESOURCE.DATというファイル名を認識するとそれを AVRの内蔵 Flashに読み込みます。リソースデータは画像ファイルを寄せ集めて先頭に管理テーブルを追加した物です。

 ファームウェアを変更せずにリソースだけを変更することで背景画像や数字のフォントなどを変更できるようになっています。また、ファームウェアの更新・切り替えも microSDにファイルをコピーしてスロットに差し込むだけでできます。

 新規に基板を作った時は AVRプログラマでヒューズ設定とブートローダのみ書き込みます。あとは microSDカードにファームウェアのバイナリ(CLCLOCK.BIN)とリソースデータ(RESOURCE.DAT)をコピーして差し込んで電源を入れればいいはず。

画像とリソースデータの作り方

 画像データは 16bit colorの液晶に最適化した構造の GRPファイル(わたしが勝手に作った)に格納され、それを寄せ集めてリソースデータを作ります。

 GRPファイルは上記のツールでフルカラー BMPファイルを変換して作ります。それ故、GIMPや PhotoShop等の画像編集ソフトで使いたい画像ファイルを加工してリサイズして BMPファイルで保存してから GRPファイルを作ります。makegrp.exeというのがそれですが、手をかけてないのでコマンドラインで使います。makegrp.exe 0.BMP とか。

 必要な GRPファイルがそろったら同じフォルダに置いておき、上記ツール類の中にある resource.lst をテキストエディタで編集します。resource.lstの中身を見ればだいたいわかるでしょう。GRPファイル名を一致させた場合は編集は不要です。

 現在のバージョン 1.0.7ではリソース番号 0番に 128x160ドットの GRPファイルを指定すると背景画像として使用します。無ければ単なる黒バック。48~57の GRPファイルを指定しないと最小文字で最下行表示になります。なので、0番に GRPファイル、他を指定しないで RESROUCE.DATを作るとべつやく時計みたいな表示ができます。

 GRPファイルと resource.lstの準備ができたら mkresoruce.exe を実行すると RESOURCE.DATができるはず。