SOARISTO工房 Logo
Electronics (BMW) Archive

4D Serial Commander

 Tiny VGA Graphics Controllerを、シリアルポートからコントロールするためのツール、「4D Serial Commander」です。

〔関連情報〕
   ・4D Serial Commander

 南半球から、赤道を越えて、

Tiny VGA Graphics Controller

 はるばるオーストラリアから、航空郵便が届きました。0xF8E6

Tiny VGA Graphics Controller

 RGB出力をするための3点セットです。

Tiny VGA Graphics Controller

 画像で見ると大きく見えますが、笑っちゃうぐらい小さいです。ほんとにTinyです。

 こんなんで、ちゃんと動くんでしょうか。0xF9C7

Tiny VGA Graphics Controller

 とりあえず、デモプログラムは動きました。

 なお、表示解像度はVGA(640×480)ですが、VRAMサイズ(512kbyte)の関係で、有効描画サイズは620×420となります。(なので、画面が若干左上に寄ってます)

#表示開始位置をいじれればいいのですが、ファームウェアを変えないとダメそう。

 オーストラリアからの小包が、なかなか届かないので、それまでの間、少し「頭の体操」をしてみることにします。

 以前に、「3軸加速度センサ」を搭載して、車両に掛かる横G/縦Gを検出するアイデアについてお話ししましたが、

3D Accelerometer

 「3軸加速度センサ」からの値に応じて、iDriveのセンターディスプレイに、このような画像を表示してみることにします。
(この場合、「横G」の大きさに合わせて、M3 Coupeの後面図を回転させています)

 さて、このように回転させた画像を、リアルタイムに生成するには、どのように計算すればよいでしょうか。

(以下、編集中)

#回転行列と逆行列、線形二次補間のお話をする予定。

 今回使用するコントローラは、USARTインタフェースを2つ持っている必要があります。「ELM327」との通信用と、「µVGA-PICASO-MD1」との通信用です。

 PIC18Fファミリの中では、PIC18F6xxxxシリーズか、PIC18F8xxxxシリーズとなります。

 PIC18F4xxxxシリーズは、40ピンのPDIPパッケージが中心ですが、PIC18F6xxxxシリーズは64ピン、PIC18F8xxxxシリーズは80ピンのTQFPパッケージが中心となり、手作業でハンダ付けするには、ちと厳しくなります。

 PIC18F6xxxxシリーズか、PIC18F8xxxxシリーズのどちらを選ぼうかと、いろいろ考えていたところ、いいモジュールを発見しました。0xF9CF

PIC18F8722 Module Kit

 秋月電子通商さんの「PIC18F8722モジュールキット」(3,200円)です。

 「PIC18F8722-I/PT」(プログラムメモリ:128kbyte、データSRAM:3,936byte、データEEPROM:1,024byte)に、20MHzクリスタル、32kHzクリスタル、RS232ドライバIC(ADM232AARN)、3端子レギュレータ(TA48M05F)を実装しています。

 このモジュールでは、20MHzのクリスタルを実装しているので、動作周波数は20MHzとなります。一方、PIC18Fファミリは、4逓倍のPLL回路を内蔵しているので、これを使用すれば、外部発信器の4倍の速度で動作させることができます。

 今回は、VGAコントローラとの通信タイミングがシビアそうなので、10MHzのクリスタルに付け替えて、PIC18Fファミリの最高動作周波数である「40MHz」で動作させることにします。

 画像右端のクリスタルは、表面実装用の10MHzのクリスタル(40円)です。

 内部動作周波数を40MHzとすることで、USARTのボーレートは、230,400bpsまで高めることができます。
(受け側の「µVGA-PICASO-MD1」は、最高1Mbpsまで、「ELM327」は、最高38,400bpsまでですが)

 秋月さんに行ったついでに、加速度センサも買っておきました。

KXP84-2050

 秋月電子通商さんの3軸加速度センサモジュール、「KXP84-2050」(1,200円)です。

 Kionix社の3軸加速度センサ、「KXP84-2050」を実装し、X/Y/Z方向に、最大2Gの加速度を感知することができます。ディジタル出力が可能で、PICとは、SPI(またはI2P)通信で、データを読み出すことができます。

 画像では分かりにくいのですが、実物は5mm角程度しかない、非常に小さなチップです。

 本来は、ノートPC用の小型ハードディスクに実装し、ノートPCを落としてしまった時など、フリーフォール状態を検出し、ヘッドを瞬時にリトラクトして、ハードディスクを保護するような用途に使われています。
(最近では、ジャイロセンサと組み合わせて、小型ロボットの姿勢制御にも使われているようです)

 車両の挙動において、横G/縦Gの大きさが「2G」となることが、どの程度のものを表すことになるのか、まったく分かりませんが、とりあえず実験クンしてみます。
(「6G」まで検出できるモジュールもあるようですが、「6G」って・・・)0xF9FC

 前回の実験により、自作のOBD-IIインタフェースを介して、車両側より各種情報を取り出せることが分かりました。

 つぎなる課題は、取り出した各種情報を、“どのように表示するか”です。

 昨日、Apple社から「iPad」が発表されました。9.7型、1,024×768ドットのIPS液晶を持っています。いずれ、以前にご紹介した、こんなアプリケーションが出てくるとは思いますが、車内に設置するには、明らかにデカ過ぎです、邪魔です。0xF9D1

 ここはやはり、“スマート”に、iDriveのセンターディスプレイに映し出すことにします。
(運転中のドライバーの視認性を高めるために、「あの位置」にあるのですから)

 PICを始めとするマイクロコンピュータに、「RGB出力機能」を持たせるための、便利なモジュールがあります。オーストラリアの4D Systems社が開発・販売している、「µVGA-PICASO-MD1」というモジュールです。

µVGA-PICASO-MD1

 これが、4D Systems社が開発した「PICASOチップ」を搭載したボードです。

 4D Systems社が「世界最小のVGA/SVGAコントローラ」というだけあって、大きさは、わずか24mm×19mm程度しかありません。

 本来は、小型液晶モジュールをコントロールするためのものですが、「PICASOチップ」だけを取り出して、RGB出力できるようにしたものが、このモジュールです。

 小さいながらも、512kbyteのVRAMを持っており、QVGA(320×240)で8画面、VGA(640×480)で2画面、SVGA(800×600)で1画面の容量があります。
(現在のファームウェアでは、SVGAはサポートさせていません)

 ユーザーズマニュアル(英文47ページ)を読んでみると、ふむふむ、なんとか使えそうです。

 VGAで2画面分のメモリがあるので、ダブルバッファによるフリッカレス表示ができそうです。
(“VSYNC待ち”もあるのですが、割り込みを使いたいので、信号を外に出して欲しかった・・・)

µVGA-PICASOMD1-UB

 モジュール単体だと、小さすぎて扱いにくいので、「ベースボード」(µVGA-PICASOMD1-UB)が出ています。

 ラダー抵抗によるD/A変換により、256color/pixelのアナログRGB出力ができます。USARTインタフェースを持っており(電圧はTTLレベル)、外部からシリアル接続にてコントロールします。
(MicroSDカードスロットが装着されており、BMPファイルを読み込んで表示できるようになっていますが、現在のファームウェアでは、サポートされていないようです)

µVGA-PICASO-MD1

 「世界最小のUSB/シリアル変換モジュール」(µUSB-MB5)を取り付けることもできます。

 とりあえず、USB接続にして、デスクトップPCで開発してみることにします。

 4D Systems社のデモです。

〔関連情報〕
   ・µVGA-PICASO-MD1
   ・Users Manual
   (4D Systems)