少し前の話になるのですが、投げ売りで500円で買って来たLogitecのLAN-IRU01をハックしてみました。
このモジュールはAndroidアプリからBluetoothで制御して赤外線リモコンの信号を出すためのモジュールです。
分解してみるとMSP430F5507やBC417など結構良い部品が使われてますし、何より赤外線LEDが10個もついています。
マニュアルには利用できないと書いてありますが、マイクロUSBの口があり接続してUSB proberで見てみます。
Full Speed device @ 7 (0x1D131000): ............................................. Composite device from unknown vendor
Port Information: 0x0018
Not Captive
External Device
Connected
Enabled
Device Descriptor
Descriptor Version Number: 0x0200
Device Class: 0 (Composite)
Device Subclass: 0
Device Protocol: 0
Device MaxPacketSize: 8
Device VendorID/ProductID: 0x2047/0x0200 (unknown vendor)
Device Version Number: 0x0104
Number of Configurations: 1
Manufacturer String: 0 (none)
Product String: 0 (none)
Serial Number String: 0 (none)
Configuration Descriptor
これって見る人が見れば分かりますよね。MPS430のISPが見えてしまっています。
このモジュールの不思議な事は製品ではISPは見えないようにするの普通です。またもし開発中にISPモードにしたい場合はボタンを押しながら、USBを接続するなどの仕様が一般的ですが、ボタンはあるものの特に操作しなくてもISPモードが見えてしまっています。
これに気を良くしてmspdebugにMacのHIDのパッチを作ってマージしてもらってますので、mspdebugで書き込めてしまいます。何故か一回目は失敗するのですが、もう一度やるとちゃんと書き込めます。Mac HID以外でも同じだったのでmsddebugの問題な気がします。
mspdebugで書き込むと元々あった機能が無くなりますので、注意してください。
開発はPlatformIOでおこないました。
CSRのBluetoothチップへはシリアル接続されていて、信号はコントロール用の送信とBluettothの受信で、オリジナルのフェームウエアでシリアル信号をモニターして確認しました。
CSRのBluetoothチップのファームウエアはいじりません。
赤外線LEDのポートは基板で追って、テストプログラムを書いて焼いて確認しました。
38Kの赤外線信号の作り方はここに書きました。
そんなこんなで、どうにかモジュール用のコードは作れて、mspdebugで焼いてみました。
コントロール用のプログラムはMacのアプリで以前から作っていたアルマジロのお使いに入れてみました。
久しぶりにパナソニックのシーリングを試してみましたが、ちゃんとON/OFFできました。
この製品の問題点は、
- コントロール用のAndroidアプリの出来が良くなかった
- iPhoneで使えない
- 制御できるリモコンの信号が少なかった
- 電池の持ちが1ヶ月くらいと悪かった
- ACアダプターも使えなかった
- Bluetoothの接続がうまくいかない事があった
- スマホでコントロールはあまり便利じゃ無かった
などが考えられます。
この製品は使っている部品も良いし、デザインも良いのに、500円はちょっと可哀想です。秋月でMSP430の評価ボードでも2000円くらいもするのに。
いろいろ考えて、USBがISPで立ち上がるのは、発光時にUSBの最大電流の500mAを越えるため電源として使えないためだったりするのでしょうか?