製作21 メッセージパネル2

1. 概要

車の後部にドットマトリクスを複数配置して各種文字・記号等を表示し、後方車にメッセージを伝達する。
表示コマンドの送信はスマホより行う。
メッセージはフルカラー表示が可能。

2. 構成

メッセージ表示基板 x 3枚
メッセージ制御基板 x 1枚
スマホ         x 1台   

3. 仕様

メッセージ数     : 全10種類
1メッセージ文字数 : 最大12文字
メッセージ作成    : パソコン側でHSP言語により作成、転送まで行う。


<画像>

 ←クリックすると動画(YouTube)が再生されます。

 ←クリックすると動画(YouTube)が再生されます。

フルカラーLEDチップを256個/枚 x 3枚構成。            パネルの裏側にマイコン搭載の制御基板

  

スマホの画面。                              スマホのプログラムはApp Inventor2で作ってます。

 

<ハードウェア設計>

制御基板にAVRマイコン(AVR128DA28)を搭載しています。

マイコンの動作クロックはインターナルクロック24MHzで動作させています。

LED素子はws2812c-2020という極小チップですが、RGB発光が可能で各色256階調、組み合わせで1,677万色が可能です。

複数個、信号線を数珠繋ぎにし、制御基板から発光データを順次送ることで実装した全てのLEDをコントロールすることができます。

ただ、文字が流れるようにするには送るデータ速度をかなり早くしないといけません。

これを基板一枚に縦横16x16個実装するので256個、パネルは3枚構成なので計768個使います。

今回基板は中国のPCBgogoという業者に発注。

kiCADで基板を設計した後、ガーバーデータを業者に送ってお金をネットで払い込むと製作がスタートします。

部品実装まで頼むのは初めてで出来上がりが心配でしたが、1発で動作したので安堵しました。(お金もかかってるしね)

制御基板のほうは、ユニバーサル基板に部品を載せて手ハンダです。

マイコンはMicrochip社の8ビットAVRマイコン、AVRD128DA28です。

以前からAVRマイコンのATmega88を中心にATmega系を使ってきましたが、最大動作クロックが10MHzなので、流れるように表示するにはちょっと力不足です。

なので今回は、最大動作クロックが24MHzのものを選定しました。

マイコンは8ビット系(AVRマイコン)のほか32ビット系(PICマイコン)の選択肢がありましたが、32ビット系は使ったことはあるもののプログラミング上の決まり事が多くて時間がかかりそうなので、今回は却下。

Bluetoothモジュールを搭載し、スマホとペアリングした後は、どのメッセージを表示するかのコマンドを待ち、送られてきたら3回メッセージを表示して待機状態になります。

回路図を紹介したかったのですが、手描きで汚かったので割愛。

 

<ソフトウェア設計(メッセージ制御基板側)>

ポイントは、

・ EEPROMアクセス(ライト/リード)=I2C方式

・ EEPROM上のメモリ配置

・ SRAM上のメモリ配置

・ メッセージ表示

・ RGB発光色制御

となります。以下順に説明します。(プログラムは今後公開するかもですが、現時点では非公開とします)

 

(1) EEPROM アクセス

I2C方式は別名TWI方式とか2線式インタフェースとか言われていますが、I2C方式というのが正式名称のようです。

ライト(書込み)はパソコンからHSPで製作したプログラム(メッセージセンダー)で行います。

 

(2) EEPROM上のメモリ配置

1文字を表示するには16x16ドット=256ビット=32バイト必要で、1文字列(メッセージ)は10文字で構成するため320バイトです。

全部で10メッセージありますから、必要メモリは3200バイト=約3.2Kバイトです。

今回選定したEEPROM(AT24C256)は256Kビット=32000バイト=32Kバイトの容量があり余裕で格納できます。

パソコンからのメッセージをEEPROMの先頭番地から順番に格納します。

(3) SRAM上のメモリ配置

メッセージ選択スイッチで選択された1文字列(メッセージ)のみSRAMに転送します。

EEPROMの読み出しアドレスを選択されたメッセージの先頭アドレスにセットし、I2C方式で1メッセージ分マイコンに取り込みます。

 

(4) メッセージの表示

今回、48列16行のドットを点灯制御するわけですが、全ドットを一度に制御することはしません。

3枚並んだ基板のうち、向かって左側の基板に実装したLED256個(直列接続)にデータを送ります。

次に真ん中の基板に同様にデータを送り、最後に右側の基板にデータを送ります。

合計768個のLEDにデータを送ることになり、例えば1秒間に4列横に動かすとしたら、768x4=3072回データを送り出す必要があります。

つまり320us/個です。

 

(5) RGB発光色制御

メッセージ作成はパソコン側で行い、その際発光色も指定できます。

それをUSB経由で取り込みますが、メモリに記憶させたLED別のRGBデータを取り出して処理します。

 

<ソフトウェア設計(スマホ側)>

画面の「Bluetooth接続」をタップすると、Bluetoothでパネル側のモジュールとペアリングします。

ペアリング後、画面の「メッセージ選択」をタップすると、メッセージ選択画面に変わります。

画面には10種類の登録されたメッセージが表示されているので、タップすると画面の下に選択されたメッセージが大きく表示されます。

「送信」ボタンをタップすると、コマンドがパネルに送信されます。

 

<製作後記>

今回の製作はハードよりもソフトのほうが大変でした。

次に趣味にしてはお金がかかったことです。

LED768個で確か1万円くらいですが、基板代と実装に3万円くらいかかってます。

実際に車のリアガラスに取り付けて運用してみましたが、視認性はすこぶるよいです。

ただ・・・ある方から、ある程度の明るさをもつ光ものは、道交法に抵触するのでは?と指摘されました。

調べたら確かにそのようでしたので、パトカーに見つかって職務質問される前に取り外しました。

何か他のことで日の目をみる時がくることを祈っています。