ロビの目のパターン表示
2015年11月7日


 ロビいつも大きな瞳でまわりの色をLEDで変えて感情を表しています。
 これはすばらしい設計でみんながロビが可愛いと思うひとつの要因だと思います。

 しかしこの黒目にいろいろな形の目を表示させてロビの感情を表せないかやってみました。



 使うのはドットマトリックスLED(以下DMLEDと記載)というLEDを縦横に並べたものです。
 ロビの目に仕込むには最大でも縦横が20mm以下の物でなけいけません。
 本当は縦横同じでなるべくドット数の多い物がいいのですが安価でこのサイズ以下の物で調べてこちらのものを使いました。

 青色DMLED 5x7ドット
 色違いで以下のようなものもあります。
 赤色DMLED 5x7ドット

 おそらく縦で数字やアルファベットを表すものだと思いますが今回は横で使います。

 ここでDMLEDの光らせ方を少し説明しておきます。(青色LEDで説明)
 この場合縦7個、横5個のLEDに対してアノード(+)とカソード(−)が格子状に配線してあります。

 の場合縦7個、横5個のLEDに対してアノード(+)とカソード(−)が格子状に配線してあります。



 一列目の一番上のLEDを光らせるにはPIN12に−、PIN1に+の電極をつなげます。
 こうすることによりLEDの数だけPINがいる必要はなく縦数+横数すなわち12本のPINで済むわけです。

 ただこの方法だと一列目の一番上と二列目の上から二番目のLEDだけ光らせるのは少し厄介です。
 なぜならこれらのLEDを光らせるにはPIN12とPIN11に−、PIN1とPIN3に+の電極をつなげる訳ですがこうすると一列目の上から二番目と二列目の一番上も光ってしまいます。

 これを避けるためLEDを一列ごとに光らせます。
 まずPIN1に+の電極をつなげておきこの列で光らせるLEDのカソード側のPINだけ−の電極をつなげます。
 そうする事にPIN12を−の電極をつないでも一列目以外のLEDは光りません。
 同様にPIN3を+の電極をつなげて二列目を光らせます。
 この処理を高速で行うと人間の目には同時に光っているように見えます。
 昔のテレビの走査線と同じ原理です。

 今回この処理を行うのにArduinoというボードコンピューターを使いました。
 これくらいの処理を200円位のPICマイコンでも十分なのですがパソコンで操作するためパソコンと通信のできるArduinoを使いました。

 今回は将来ロビの頭に格納できるようにArduino nanoという小型のボードを使いました。
 こちらのものを購入しました。
 安い中国製の互換機だったので動くか不安でしたがWindows7の環境でちゃんと動きました。
 ただUSBのデバイスドライバーを探すのに厄介だったり接続先のCOM番号がころころ変わって接続するのが面倒だったりします。
 420円というのもありましたがちょっと恐ろしくでてを出せませんでした。

 初めてArduinoを使われる方は少し高いですが正規品の方がいいかも知れません。
 またハンダ付けに自信のある方はピンヘッダーがないタイプもありますのでこちらの方がロビの頭に納まりやすいと思います。(使った事がないので動くかどうか保証はできません)
 ちょっとかさばりますが定番のArduno Unoでも問題なく使えると思います。





 ArduinoとDMLEDの配線図です。
 写真はArduino NanoですがAeduino Unoも同じです。
 また青色DMTLEDと赤色DMLEDも同じ配線で構いません(Arduinoのプログラムを変えます)
 右目用LEDDと左目用LEDは同じ信号で制御するためArduinoに対して並列に接続します。
 ドットマトリクスLEDのピン番号は発光面をこちらに向けて文字印刷されている側面を上に向けた状態で書いています。
 配線図の写真もこれと同じ方向にしています。
 そのままロビの左目と右目になります。(文字印刷面が上側)

 ピン番号は上の右から1〜6で反時計回りで下に行って左から7〜12です。
 ここでポイントは左右対象に光らせたいので右目と左目のROWを反対側通し接続します。(4番目=真ん中のROWは同じ)

  ・右目LED 12PINと左目LED 6PINをArduino D2の抵抗につなげる(黒線1)
  ・右目LED 11PINと左目LED 5PINをArduino D3の抵抗につなげる(緑線1)
  ・右目LED 2PINと左目LED 4PINをArduino D4の抵抗につなげる(灰色線)
  ・右目LED 9PINと左目LED 9PINをArduino D5の抵抗につなげる(青線1)
  ・右目LED 4PINと左目LED 2PINをArduino D6の抵抗につなげる(青線2)
  ・右目LED 5PINと左目LED 11PINをArduino D7の抵抗につなげる(緑線2)
  ・右目LED 6PINと左目LED 12PINをArduino D8の抵抗につなげる(黒線2)
  ・右目LED 1PINと左目LED 1PINをArduino D9につなげる(赤線)
  ・右目LED 3PINと左目LED 3PINをArduino D10につなげる(橙線)
  ・右目LED 10PINと左目LED 10PINをArduino D11につなげる(ピンク線)
  ・右目LED 7PINと左目LED 7PINをArduino D12につなげる(黄色線)
  ・右目LED 8PINと左目LED 8PINをArduino D13につなげる(茶色線)
 今回抵抗は33Ωのものを使いましたがちゃんと電流を計算した訳でなく適当につないで丁度いい明るさの物を使っています。
 またカソード側に抵抗を付けましたがアノード側(Arduino D9〜D13)に付けても良いと思います。(この場合は抵抗は5つで済みます)



 まずロビの黒目の部分を改造します。
 オリジナルの黒目のパーツはLEDの光を通さないようになっています。
 今回はDMLEDの光を通すためこのパーツを交換します。



 100円ショップで購入したサングラスのレンズを使います。
 色はオリジナルの通り黒がいいでしょうがこの際目の色を変えるのもありかも知れません。
 またにある程度球面に近い方がオリジナルに近く仕上がります。

 これを目のフレームパーツに合わせてカットするのですが割れやすい素材なので注意してください。
 切るというよりニッパーで端から細かく割っていくという感じで形を整えていきます。



 フレームに納まり外から隙間が見えなければよくきれいに成形する必要はありません。

 DMLEDを目にセットするためにフレームに納まり外から隙間が見えなければよくきれいに成形する必要はありません。



 DMLEDを取り付けるためにメスのジャンパー線とプラ板を加工して上記のようなものを4個作成しました。
 プラ板を折り曲げて6本のジャンパー線のプラスチック部分と接着します。
 プラスチック部分の幅はDMLEDのピンのピッチと一致するのでプラスチック部分は隙間は空けなくて構いません。
 DMLEDにジャンパー線を取り付けてから接着する方が確実ですがこの時DMLEDに接着剤が付かないようにしてください。
 目のパーツに組込む時にDMLEDを外す必要があるのでDMLEDは脱着できるようにしておいてください。
 目のパーツに組込む時にDMLEDを外す必要があるのでDMLEDは脱着できるようにしておいてください。
 また写真は目のパーツに取り付けるビス穴を開けていますが実際にDMLEDを取り付けてから開けた方が確実です。

 DMLEDを目の反射板の後ろから入れる事は出来ないので前から入れて後ろから入れたジャンパー線に差し込みます。
 反射板に固定するためにビス穴を開けますが実際にロビに取り付けた時に平行になるような位置にビス穴を開ける必要があります。
 またDMLEDの文字印刷面が両目とも上を向くようにしてください



 前述の回路図を参考に配線していきます。
 Arduino側もメスのジャンパー線で接続しますが左右のDMLEDを接続したり途中に抵抗入れる必要があります。
 基板に抵抗を配してそこで接続してもいいと思いますが直接ジャンパー線と抵抗を結線しました。
 なおDMLEDはArduinoのUSBのバスパワーだけで点灯する事ができますので電源を接続する必要ありません。



 Arduinoの設定に関しては詳しく書かれているサイトがあるのでここでは割愛します。
 以下のURLに詳しく書かれているので参照してください。

 Arduinoで遊ぶ

 今回使用したスケッチ(プログラム)です。

 robi_dmled.txt

 これをコピーアンドペースト(メモ帳でコピー、Arduinoで編集→貼付け)でArduinoで開いているスケッチを書き換えてください。

 ⇒アイコンでコンパイルとマイコンに書込みを行います。
 この時スケッチの保存先を聞いてきますので任意のフォルダー名前で保存しておいてください。

 赤色DMLEDを使う場合はアノード(+)とカソード(−)が逆になるのでdigitalWriteの第2引数のLOWとHIGHを入れ替えてください。
 2行目のdata=1はAruino起動時にパターン1にして動作確認をするためで最初黒目にしたい場合はdata=0としてください。

 パターンを変える場合はpatternの0と1の値を変えてください。
 ひとつのパターンが35個のデータで左目のパターンとして定義されていて0の場合LEDが消え1の場合はLEDが点灯します。

 動作確認はArduinoのツールシリアルモニターで行えます。



 通信の確認はキーボードからAT(Enter)でOKと表示されればOKです。
 D0(Enter)〜D9(Enter)を入力すれば実際にそのパターンがDMLEDに表示されます。





 出来上がった目のパーツをロビに取り付けます。
 既存の目の基板と置き換えますがオリジナルに戻せるように基板とオリジナルの黒目のパーツの保管しておいてください。
 DMLEDとの接続線を外に出すためロビの頭部の後ろの黒いパーツは外しています。
 この部分から出したジャンパー線をArduinoのピンに接続します。

 今回Windowsアプリケーションから動かすためにロビボイスプレイヤーの特別版を作成しました。
 Ninshiki.csvにDMLEDに表示するパターンのデータを追加してプログラムと共に提供しています。
 プログラムとデータはこちらからダウンロードしてください。

  RBPlayer2_100.zip

 標準のロビボイスプレイヤーと同じフォルダーに入れてください。
 本プログラムは通常のロビボイスプレイヤーとして使う事ができます。
 Arduinoと接続するには設定ボタンで表示された接続ダイアログでArduinoに割り当てられたCOM番号を指定してください。



 COM番号はコントロールパネルのデバイスマネージャーで確認できます。

 Ninshiki2.csvをExcel等で変更する事ができます。
 表情番号はDMLEDに表示するパターンの番号でArduinoのスケッチを参照してください。
 表情開始はパターンを表示するまでの時間で通常はプログラム開始と同時に表示しますが少し間を開けたい時には秒数を指定してください。
 表情時間はパターンを表示する時間で秒数で指定してください。


 実際にこのプログラムを動かした動画です。

     

 今回はDMLEDのパターンをコントロールするのにパソコンが必要ですが将来はロビのプログラムでコントロールできるようにと考えています。
 また既存の人感センサーおよび目のLEDを置き換える事になりこれらの機能は使えなくなります。
 これらを外しても通常動作には影響ないようです(もちろん人感センサーの機能は使えません)

 なお本改造はロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。

目次に戻る