profile-photo

スマートリモコン

Amazon Alexaに対応した赤外線リモコン端末


我が家にもアレクサがやってきた。
実はこの夏の猛暑で冷蔵庫が壊れた(!?)それで、新しい冷蔵庫を買うことになったのだが、おまけでアレクサ(Echo dot)を貰った。
最初は音楽を掛けたり、天気を聞いたり…と、普通に楽しんでいたのだが、前からやってみたかったスマートホームをアレクサで割と簡単にできることが分かった。
Wi-Fiに対応するにはESPシリーズが簡単だ。ESP-WROOM-02の買い置きがあったので、これに赤外線LEDを繋いでリモコンにしてみることにした。
本当ならスキルから作成するのだろうが、ネットを見ていたら、「Esp8266 Alexa Wemo switch emulator」と言うのが見つかった。
ついでに赤外線リモコンでエアコンを動かすライブラリもあった。
ESP developerに赤外線LEDを繋いでバラックセットを作り、テストしてみると本当に動いた。
ただ、リモコン端末だけを部屋に置いておくのも味気ないので、ついでに温度や湿度を表示することにして、回路を書いて基板を作った。
ケースは3Dプリンターで適当に作りった。
構想から3〜4日程で完成した。
諸先輩方の努力と製作に絶大なる感謝を捧げる!!

※プログラムをマイナーチェンジ。
せっかく温度センサーを搭載しているのに、エアコンの設定を固定にしていた。これを、室温に応じて冷房・暖房・自動と切り替えることが出来る様にした。
室温が26℃を越えた時は冷房、24℃以下の時は暖房になるようにした。それ以外はエアコン任せの自動モード。
ついでに、その設定を赤外線発振時にLEDにも表示するようにした。今まで、リモコンはいつもダンマリだったのだが、ちょっとおしゃべりをするようになった。

 

100

今回貰ったのはこの"Echo dot"。アレクサシリーズでは最少のものだ。
小さいので仕方が無いが、音はそんなに良くは無い。とは言え、このサイズのスピーカーとしては十分に聞くことができるものだ。
手前が、今回作った「スマートリモコン」。ESP-WROOM-02が中心。表示はMAX7219を使ったLED表示だ。
これで、
「アレクサ、エアコンを点けて」とか、しゃべると赤外線がドライブされて、エアコンが動く。
Wi-Fiでレスポンスが帰ると、アレクサは、
「はい」と、応える。

110

製作した基板がこれ。
中央が言わずと知れたWROOM-02。右側に5V(USB)から3.3Vに変換する電源部。左側には赤外線送信用のLEDが3つ。
3つのLEDは1つのトランジスタ(C1815)でパラレル接続でドライブしている。LEDは1つでも良かった様だが、光軸が上手く合わない時の事を考えて、光量を欲張ったため、3個になっている。
電源のレギュレーターはてNMJ2845DL1-33。これまた安全ケースを見過ぎのオーバースペック。
たまたま手元にあった3.3Vのレギュレータがこれだったせいでもあるのだが。

200

メイン基板の裏側。
相変わらず片面基板に拘っているので、ジャンパー線が数本走ることに。
その他にはスイッチと温・湿度センサーユニット。温湿度センサーはHTU21Dを搭載したGY-21と言うユニット。以前はDHT-11が安くて使いやすいので使っていたが、精度がとても悪く、良く壊れるので最近はこれにしている。I2C接続で、専用のライブラリーもあるので簡単だ。値段もDHT-11が100円位なのに対して、GY-21は2〜300円。高いとは言え大したことは無い(^_^;。

300

メイン基板の上には、MAX7219を搭載したLED基板を載せている。
MAX7219も制御が簡単で、LEDを明るくドライブしてくれる頼もしいICだ。
LEDは見やすくて良いが、情報量が少ないのが問題かも…

500

ケース内部を横から見たところ。
ケースはついつい中身に合わせて、ピッタリ設計してしまう。
3Dプリンターで印刷してから、
「どうやって中に入れよう?」と、悩むのだ。
今回も、最初のプリントは失敗。基板を入れることができなかった。

600

ケース背面。
サポートを省略したので、換気口のブリッジが垂れてしまった。
他に入れるところが無かったので背面に名称を入れてみた。

700

実際の表示の様子。
「気温38℃ 湿度58%」のつもり。
知らないと判じ物みたいな表示だ。

800

裏のモードスイッチを押すと、表示が変わる。
表示は3種類ある。
この写真は、左の4桁に温湿度、右の4桁に時刻を表示。
「気温30℃、湿度57%、時刻8:01」
と、表示したつもり。

900

7SEG-LEDが等間隔に配置してあるので、これも超分かりにくい(^_^;
「気温30.38℃、湿度57.16%」
の表示。気温や湿度の小数点以下の値は要るのだろうか?
同時購入のセンサーを並べてみても、1の位がぴったり合うものは余り無い。
ICの仕様には0.2%とかあるけど、だいたい同じ室内でも場所が少し変われば、温度や湿度は変わってしまうし、空気が動いただけで値は変わるだろうから、小数点以下の表示はムダの様な気もする。

スキル

アレクサが動作するアプリの様なものは、は「スキル」と呼ばれる。
ニュースを読み上げたり、音楽を流したりするのはそれぞれ専用の「スキル」があり、アレクサは音声認識でこれらのスキルを選択して様々な動作をしてみせるのだ。
今回のエアコンを動かすスキルは、wemoのスキルを使わせて貰っている。本来ならばスキルの開発から行うべきなのだが…
そのうち時間のある時にこの辺りもやってみたいとは思っている。
Amazonではスキルの開発法も公開している。詳細はここ→https://developer.amazon.com/ja/alexa-skills-kit

IRremoteESP8266

GitHubに「IRremoteESP8266」と言うライブラリが登録されている。これを使うとESP8266を使ってWi-Fi経由で赤外線を出力する事ができる。
そして、我が家のリビングのエアコンはたまたまDAIKIN製だったので、DAIKINエアコンに対する赤外線コードも入っていた。
以前Arduioで赤外線リモコンを作った時は、最初にIRレシーバーを作り、ターゲットのリモコンのコードを受信して、それを元に送信用のデータを作ったりと、結構苦労した。
今やArduinoやArduino開発ツールを使ったESPシリーズの開発は携わる人も多くなり、ネット上に膨大な作例が公開される様になった。大昔僕が8080や8085等で一からシステムを設計・開発していた頃に比べると、別世界のようで嬉しい。


参考までにハードウェア・ソフトウェアの情報を。ただしこれらは僕の覚えであり、正確に改版を反映していない可能性があります。この通り作って動かないからと、怒らないで欲しい。