Works & Entries Our Events API Dictionary Mashup Awards Login

Work Detail

コーディネート

1.本作品をひとことで言えば、カメレオンのように背景色に合わせて、自分の服の色を変えるデバイスです。

2.概要
アンドロイドアプリにより、カメラプレビュー画面中央のカラー情報(R・G・B値 ※0~255の整数値)を取得、それをArduinoへ送信、服に仕込んだフルカラーLEDテープ(10メートル分・LED数300個)を同色で光らせます。

3.MA事務局の方が撮影してくれましたプレゼン動画(ありがとうございます)
https://pic.twitter.com/YdapVhe7HY
(2017年11月19日 Mashup Battle 1stStage in 東京二部)

4.本作品で示したかったコンセプト
 「衣服は、ハード。購入後、ソフトで柄や色を変更できる時代はもうすぐ。」
ということです。
 ※フルカラーLEDテープには、
①本作品で使用したnon-addressable led(アドレス指定不可能;300個全部のフルカラーLED電球を統一的にコントロール)と、
②addressable led(アドレス指定可能;300個全部のフルカラーLED電球を個別にコントロール)とがあります。
②を使用すれば、色だけでなく柄や模様もデザインすることができます。

5.出典
本作品のコードのほとんどは、オープン・ソースに依存しています。
すなわち、
(1)AndroidでRGB値を取得するコード;
    yoggyさんの
   「ColorPickerCamera」
    https://github.com/yoggy/ColorPickerCamera
(2)AndroidからArduinoへRGB値を送るコード;
    Trevor Shannonさんの
    「Android Powered LED Table」
    http://trevorshp.com/creations/android_led.htm
      ※上記のもっと詳しいページ
       https://makezine.com/projects/make-36-boards/android-arduino-led-strip-lights/
      ※上記詳しいページの日本語訳
       http://bunkeina.blogspot.jp/2014/06/androidled.html      
★本作品は、上記(1)及び(2)を連携させたものです。連携方法は、上記(2)の「※詳しいページ」中「Step #4: Code your own app (optional)」をご参照ください。ここでの「your own app」は、上記(1)「ColorPickerCamera」となります。連携の核となる、Androidで取得したカラー情報をArduinoへ送る部分のコードは、「ColorPickerCamera」の「ColorPickerCameraActivity.java」に記述しますが、その例をこちら( http://tinyurl.com/yaubbpyf )にアップしておきました(もっといい書き方があると思いますが)。
★本作品の未署名デバッグAPKファイルは、ここからダウンロードできます。
 ダウンロード;http://wikyou.org/forMA2017/app-debug.apk
★上記「Android Powered LED Table」記載どおりにArduino側のコードを書き、回路を組めば、この未署名デバッグAPKファイルをインストールしたスマホにより、本作品のデモ動画と同じことを再現できます。

6.覚書その(1)
上記5.(2) Trevor Shannonさんの「Android Powered LED Table」は、
現在市販されている「Arduino Uno Rev3」をつないでも、動きません。
おそらく原因は、
「Android Powered LED Table」は、AndroidからArduinoへ色のデータを送るのに「usb-serial-for-android」というライブラリを使用しますが、そのライブラリの中で定義されている「Arduino Uno Rev3」のベンダーIDが、現在市販されている製品「Arduino Uno Rev3」のベンダーIDと異なっているからです。
 
次のページに現在のベンダーID及びプロダクトIDのリストが掲載されています。
これを見ますと、
「usb-serial-for-android」に組み込まれていないベンダーIDも複数存在することがわかります。
https://github.com/arduino/Arduino/blob/1.8.0/hardware/arduino/avr/boards.txt#L51-L58

ちなみに、上記ページによれば、「Arduino Uno Rev3」のベンダーIDは、次のとおり。
【16進数】
uno.vid.0=0x2341
uno.pid.0=0x0043
uno.vid.1=0x2341
uno.pid.1=0x0001
uno.vid.2=0x2A03 ★未定義
uno.pid.2=0x0043
uno.vid.3=0x2341
uno.pid.3=0x0243

上記のうち、uno.vid2(0x2A03)は「usb-serial-for-android」に定義されていません。
ですから、対策は「usb-serial-for-android」に現在の製品のベンダーIDであるuno.vid2(0x2A03)を追記します。
方法は、下記に公開されています。

https://github.com/mik3y/usb-serial-for-android/pull/162/files/01e42a5bd71213e115c9bc365a46c44ab14f1a71
(なお、同時に「usb-serial-for-android」の「device_filter.xml」に、「0x2A03」の16進数から10進数へ変換した値「10755」を追記することも必要です。16進数から10進数への変換ツールは https://hogehoge.tk/tool/number.html 。変換ツール使用時、「0x」は除きます。)

もうひとつの対策は、
「usb-serial-for-android」を使用せず、bluetoothを使用する方法です。
そのコードは下記に公開されています。

https://github.com/trevorshannon/ArduinoColor/commit/6443bf138d30daf96b58e45276d60f9e35814132

さらに三つ目の対策は(これが最も簡単な方法ですが)、
「Arduino Uno Rev3」を使用せず、その互換機を使用します。
下記の互換機(2017年10月アマゾンからの購入品)は、ベンダーIDが「usb-serial-for-android」内で定義されているベンダーIDと同じですから、コードを何ら修正しなくても「usb-serial-for-android」が機能します。

「keyestudio UNO R3 開発ボード + USBケーブル UNO R3 Arduino互換」

7.覚書その(2)上記(1)互換機以外の購入部品等について
  ※すべてアマゾンで2017年9月~10月に購入。
①電源について
 ArduinoへはandroidスマホからOTGケーブルにより電力を供給します。
 これだけですと、10メートル、300個のフルカラーLED電球を光らせることはできませんので、ハイパワーのトランジスターによりArduinoからLEDテープへの出力を増幅します。そのトランジスターに流す電力は、大容量のモバイルバッテリーを使用します。
 使用した製品は、次のとおりです。
 「Poweradd Pilot Pro2 23000mAhモバイルバッテリー 超大容量 DC/USB出力 LCD電圧表示 iPhone / iPad / iPod / ノートパソコン / スマートフォン / タブレッド等対応 5V 9V 12V 16V 19V 20V」
 このモバイルバッテリーの出力電圧を12Vに設定して(ボタンで切り替え可能)使用します。

②Androidスマホは、Arduinoヘ信号と電力を送れる機能(OTG機能)が必要ですが、最近のスマホはどれもこの機能が搭載されているようです。
使用したのは、「エイスース SIMフリースマートフォン ZenFone Go レッド ZB551KL-RD16」。

③LEDテープは、「WenTop LEDテープライトスーツ 両面テープ SMD 5050 防水ledテープ 10m 300連 正面発光ledテープ led RGB 30leds/m 44K リモコンと12v電源 高輝度 切断可能 明るいライト」。
 
④トランジスターは、「TIP31C TIP31 NPN ハイ パワー 100V 3A トランジスタ パック 並行輸入品」。

⑤Arduinoから上記①モバイルバッテリーへの接続には、「Kabenjee 10個セット2.1mm x5.5mmネジ端子DCアダプタコネクタ、LEDテープライト用DCジャック変換プラグ」。