20140215

Archiduino Project - vol.26

建築系におけるArduino利用計画としての「Archiduino Project」。

このところずっと更新をサボっていたので、ちょっと手が空いてきたついでに現状報告。

Ardhiduinoは制御のフェーズへ移行段階にある。昨年の夏に投稿した某講演用の原稿にもあるが、「計測から学習を経て弁別」という流れはひととおり達成することができたように思う。続いてはアプリケーション(適用)のフェーズとなるわけだが、我々の目指すものとしては「行動のデザイン」「環境の制御(による快適の実現)」「省エネ(節エネ)」といったところとなる。いろいろやるのはまだまだこの先の話なので、とりあえず手始めに「赤外線LEDの疑似リモコン発光による家電の操作」的なことからやってみている。

結論から言えば、Arduinoでこれをちゃんとやろうとするのはかなり工夫が必要そうな雰囲気だ。ネットで探せば、先達の苦労もたくさん見つかる。

難しいところを思うところを挙げてゆく。
学習リモコンと同様に、発光そのものをコピーすることは難しくない。難しくないとはいえ、発光のタイミングを格納する配列の要素数が多くなると、より正確にはプログラムで生成したすべての配列のサイズが1KBを越えるとArduinoは処理を止めてしまう(=フリーズしてしまう)ので、発光のタイミングを取得するのにもひと工夫(あらかじめ決められた数のタイミング格納用配列を用意するのではなく、検知したタイミングを逐次Serial.printする、など)がいる。

タイミングはコピーできたとしても、照明のON/OFF程度ならばよいものの、エアコンの制御とかだと最近は信号そのものが複雑になっており、配列を作成したところで動作するよりも先にフリーズしてしまいかねない。複数の信号を発光しようとすれば尚更だ。

いくつかの単純な発光パターンに限定して制御するとして、LEDを発光させてみたところで、LEDの発光角度が狭く、家電が発光に対して反応してくれないということもありうる。これに対処するには、LEDが焼き切れない程度に大きな電流を流して発光させたり、LEDの頭の丸い部分を水平に切り取って拡散光にさせるといった工夫で、かなりなんとかなるところもある。

単純なON/OFFとはいえども、制御するノードの側からすると、本当に制御されたのかされなかったのかということの判定には、照度や温度などのセンサの反応を見ながらでないとできない。発光しただけでは、100%の動作保証にはならないからだ。外気との温度差など、外部環境との相対的な比較を制御に取り入れる場合は、それらのデータを拾ってくる方法もセットで用意しないと制御がうまくいかない。

照明のON/OFFひとつにしても、ある閾値を下回ったところで照明をONにする制御をやっても、照明をONにしたことによって再度閾値を超えてしまうので、ここでOFFにしようとすればまた閾値を下回ってONになり・・・を延々と繰り返すことになる。

自宅の外部からネット経由で制御できるようにしようと考えたが、発光させるLEDの設置場所の自由度を上げようとすると、Ethernet Shieldを使うような有線よりも、Wifi Shieldなどを使って無線にした方が有利だ。とはいえ、現状、日本国内でArduinoにWifiを持たせるのは技適の話からしても難しい。この件はひとまず置いておいたとして、とりあえず手元にあるWifly Shieldを使ってやってみたものの、Ethernet Shieldほど反応性も安定性もよろしくない。はっきり言って実用性に欠けるレベルだった(自分の書いたコードが悪いのかもしれないが)。しかも悲しいことに、Wifly ShieldのFirmwareを更新したら尚さらおかしいことに。。。

といった具合になかなか難易度が高い。

ここでめげるつもりは毛頭ないが、現状のシステムがまだまだ完成されたものではないと痛感させられる。すでに世に出ている「IRKit」が宣伝文句通りに動くのだとしたら、そりゃあすごいなぁと思わずにいられない。