DigiQライター

DigiQライターとは

今回はPICを始めたころから、いつかは作ってやろうと思っていたネタです。
DigiQはチョロQのタカラKONAMIの共同開発で生まれた赤外線コントロールのRCチョロQのことです。

これにスカイライター(正式にはバーサライタと言うそうです。私が始めて見たのがスカイライターと紹介されていたものですから、ずっとそれで覚えてしまっていました。)を組み合わせてDigiQライターとしています。
スカイライターとは、ドットマトリックスのLEDの縦1列分だけ取り出し、その1列分を物理的に移動しながら点灯させると残像現象で空中に文字が浮かび上がる表示機のことを言います。

通常のドットマトリックスでは文字をダイナミック点灯で表示しています。
見てのとおり5×7個のLEDが1列づつ点灯し文字を表示しています。
実際にはその点灯は文字通り目にも止まらぬ早さで行われており、あたかもただ表示しているように見えます。


対してスカイライターの場合はLEDそのものが移動し、タイミングよく点灯することによって文字を表示します。
構造的にLEDが1回移動する時に1度しか表示できないため、その表示は残像現象のみに頼ることになり、文字がすぐに消えてしまいます。

試作

回路的にはPICに7本のLEDを接続すれば完成なのでブレッドボードでサラッと組みます。

PICはRS-232C通信をするわけでもないので標準的なPIC16F84で組んでいます。
LEDは残像現象表示に頼るしかないため、高輝度型の赤色のものを使用しました。

3mm径のLEDですが、2.54mmピッチで差し込んでいるので扇状に開いてしまっています。
実際に基板に組む時は対策せねばなりませんが、とりあえずそのまま動作実験します。
本来ならカメラの前でブレッドボードを動かしながらシャッターを切らねばなりませんが、ブレッドボードを振り回すのは大変なのでシャッターを切りながらカメラを横に走らせています。

とてもLEDが7本だけとは思えませんね〜。
ただ肉眼でこれを見ようと思ったら、よっぽど暗いところで速く動かさないとダメなのが玉にキズです。
フォントのデータは英数半角のマトリックスデータをPICのプログラムエリアに書き込み、表示する文字の設定だけEEP-ROMエリアへ書き込めばいいようにしています。
こうすれば後から表示データの変更が楽になるとふんでいます。

いざDigiQサイズへ・・・
(注 タカラ&KONAMIはDigiQの分解も改造も認めていないので個人の責任でよろしくお願いします)

さすがにLED7本だけとは言っても車体が全長5cmしかないので16F84からして載りません。

しかも、LEDを7本ドライブするとなると8ピンの12C509等と置き換えることもできません。
そ・こ・で 今回の秘密兵器であり、ネックであるコレの登場です。

フラットパッケージ版のPIC16F84Aです。
コレならピン数もサイズも問題無しですが、ネックはハンダづけ・・・。
ユニバーサル基板に載せようとしてもピッチが半分しかないので1つの穴に足が2本づつかかってしまいます。
(基板の形状は赤外線受信部を避けたりして試行錯誤した形状です。)

そこで今回私がとった手法です。
まず足を1本おきに内側へ折り込みます。

こうするとPICの内側の穴へ足が届くので、穴を2列使えば全ピン単独でハンダできます。

内側の足は直接ハンダコテで触れないので大変です。
足と穴のパターンへ予備ハンダして、基板の裏から穴のパターンを暖め、穴からハンダを流し込むようにすると何とか付いてくれます。
それからごちゃごちゃだけどプリント基板エディタでレイアウト図を描いてみました。
PICの内側の足がちゃんと届いているのが判りますでしょうか・・・。

LEDはちゃんと2.54mmピッチで収まっているように見えますがそうではありません。
なんと、LEDをグラインダーで削って薄く加工してから取り付けています。
抵抗はバカ正直に7本並べています。(チップ部品を使ってみたい・・・)
この基板をDigiQに搭載するとこんな感じです。

前輪の押さえは基板の切れ端を利用しています。
車体との接続は+5V、GND、赤外線入力の3本をDigiQのCPUの足にハンダで直結しています。
DigiQのCPUには何故か+5Vが供給されています。
ニッケル水素2セルだから2.4Vのはずなのに・・・どーやっているんだろう?
でも+5Vがとれるので工作派としてはありがたいです。

LEDが光りっぱなしでは燃費が悪いので、赤外線の信号を処理して走行している時だけ文字を書くようにしています。
赤外線の信号の処理なんて難しいから素人では出来ないと思っていましたが、信号の内容はすでに「Ir Hack」さんのところで解析して公開してらっしゃいますので(感謝!)、タイミングチャートを見ながら「offして0.7msec後にonだったら0でoffなら1で・・・」と順番に組んでいたら出来てしまいました。
走らせ始めてから気が付いたんだけど、ちゃんとIDも1〜4を判定しないとダメですね。
違うIDで他の人が走らせたら誤認して光ってしまいます。
ついでにDigiQが停止したら0.5秒LEDを全部点灯するようにしています。
いやなんか後ろから見ていたらハイマウント・ストップランプに見えてきたんで・・・。
で、走行中の写真です。

やはり少しでも明るいと、らしく写ってくれません。
実際、走っているのを肉眼で見ててもよく見えません。
明るいとどうも目が車体を追ってしまうため、残像になってくれないようです。
というわけで、夜を待って真っ暗な廊下で撮影・・・。

ここまで暗ければ肉眼でもはっきり残像が見えました。
そもそも真っ暗なんで車体を目で追えないので何も無いところに文字がフッ、フッ、フッ、と浮かび上がる感じでした。
ちなみに写真の一番奥はブレーキランプの光です。

プログラムの注入、表示文字の変更は基板上に付けたソケットで行います。
そもそも、ハンダする前からしてフラットパッケージなんか書き込めませんからね・・・。

表示文字はEEP-ROMエリアに設定しますが、現状ではライターで書き込むしかありません。
幸い、秋月のライターソフトはEEP-ROMの内容のみの読み書き編集が出来るのでとりあえずこれで済ませています。

このように0000番地から文字を16進で指定します。
16進はいわゆるASCIIコードで20〜7Fまで対応しています。
(フォントデータは16×2のキャラクタ液晶モジュールのデータシートを見ながら手打ちしましたが、ASCIIコードと異なっている部分もあるようなので注意してください。)
文字列の終了はFFを最後に書き込むことによって宣言します。
003F番地の04は赤外線のIDです。(そのまま1〜4で指定します)
送信機のIDと003F番地の値が合致しないとLEDは光りません。
それと今回の回路図です。

ISP時に電源ラインを切り離さなければならないので、走行時には3ピンのジャンパーピンが必要になります。
それと現時点でのソースファイルとHEXファイルです。

digiq_w1.asm
digiq_w1.hex

ソースファイルはMPLABでアセンブルできるように書いています。
ソース、HEXともEEP-ROMのデータは入っていませんので、各自で文字列とIDを書き込んで下さいませ。
今後、PC無しで文字変更を可能にしようとかもくろんではいます。
それよりホディーをなんとかせねばと思っているので何時になることやら。
通常のDigiQのボディーではまったくスペースが無いのでワンボックスのチョロQから移植しようかと考えています。

ボディー搭載

とりあえずボディーを搭載してみました。


車種はエスティマ・ハイブリッドです。
いやーこのような車種を出してくれたタカラに感謝です。
なぜって実車のオーナーなんで・・・。
やっぱりマイカーのチョロQがあったら嬉しいよね。
あとは色を白で全塗装して、ルーフレールのオプションを付ければカンペキです。

ベースシャシーは上のほうに写真のあるAudi TT Coupeです。
ハコスカGT-Rのシャシーでテストしていましたが、Audiのほうが赤外線センサーの足が長く、車高の高いエスティマに合わせやすかったためです。
リア周りはギヤボックスに合わせてきっちり削ったんだけどちょっと浮いてしまっています。
ナンバープレートを移植しないとカッコ悪いですね。
ホイールベースが微妙にDigiQのほうが狭かったので、後輪のホイールハウスのを少々広げて対応しています。
ボディーとシャシーの合わせは前輪下の固定ビス穴を基準にして削り込んでいます。
LEDは出っ張りすぎているように見えるかもしれませんがわざとです。
多少でも視認性を上げようとして基板のレイアウト時に既に決めた位置です。