2018年4月7日土曜日

Alexa と Raspberry Pi でルンバに掃除してもらう:(1)準備

Amazon Echo Dot を手に入れたのですが、あまり使い道がありません。
音楽を掛けるか、子供が「豆しば」を連呼する程度。

「音声操作のスマートホーム!」とか言っても、家中の家電を一気に買い換えるわけにもいかず。

そこで、Amazon Echo Dotで拾った音声コマンドを赤外線で飛ばして家電を操作します。
Alexa対応の赤外線リモコンを買えばいいじゃん」という意見は無視して、最終的に次の構成を目指します。



Alexa からの音声コマンドは Raspberry Pi 上のNode-REDで受け取ります。
Alexa + Node-RED でググると大抵はNode-RED Alexa Home Skill Bridgeを使う方法が出てきますが、今回は Home Sill Bridge なしのローカル構成で組みます。

Node-RED で中継した後、別の Raspberry Pi に飛ばして赤外線で家電を操作します。
なぜ Raspberry Pi が1台ではダメなのかと言うと、赤外線の到達距離が短いので家電の近くにRaspberry Piを置く必要があるからです。

(2018/04/08追記)
ルンバのリモコンはRaspberry Piで上手くリモコンコードをコピーできないようです。
コードを自力で解析すると結構しんどいので、FlashAirで中継してArduinoからシリアル経由でROSをハックするという強硬手段に切り替えました。

作成の流れ

材料は少ないのですが、構成が結構複雑です。
次の順番で作っていきます。

  1. 材料を揃える。【今回】
  2. 母艦のRaspberry PiにNode-REDをセットアップしてAmazon Echo Dotに認識させる
  3. Raspberry Pi Zero WをヘッドレスでWiFi対応セットアップする
  4. Raspberry Piで赤外線リモコンのコードをコピーする
  5. Node-REDから赤外線機能を呼び出してテレビを操作する
  6. FlashAirのGPIO機能でArduinoをHTTP API経由で制御する
  7. (おまけ)ArduinoからROI経由でルンバを動かす
  8. Arduinoから赤外線経由でルンバを動かす
  9. Node-REDからFlashAir/Arduino経由でルンバを動かす

完成するとこうなります。
Alexa + Raspberry Pi (Node-RED) + FlashAir + Arduino + ルンバ。

Alexa + Raspberry Pi(Node-RED) + 赤外線 + テレビ。





材料

まずは材料を揃えます。
今回は電子工作というよりデバイス連携

Amazon Echo Dot

Google Home とか Siri に比べたら頭悪い感じがしますが気にしません。


Raspberry Pi 3 Model B

3でなくても構いません。
ネットワークに繋がればどのモデルでも OK です。
Raspberry Piのセットアップについては以前に書いた説明をご参照ください


Raspberry Pi Zero W
家電の近くに置くため小さくて目立たないモデルを使います。
こんな感じのケースに入れておくとかっこいいかも。
なお、赤外線LEDを付ける必要があるので最初からピンヘッダの付いているタイプが楽です。


赤外線LEDと赤外線受信モジュール


家電の赤外線リモコンをコピーするため、受信モジュールが必要です。
LEDはRaspberry Pi Zero Wの数だけ必要ですが、受信モジュールは1個だけでもOKです。

また、赤外線LEDを単体で用意しても良いのですが、抵抗などを付ける必要があってごちゃごちゃします。
モジュールを使った方がコンパクトに収まるのでおすすめです。
受信機の方は一時的に使用するだけなのでどちらでも良いかも。


Arduino Pro mini

ルンバをシリアルポート経由で制御するのに使います。
Arduinoなら何でも良いのですが、とりあえず安くて小さいのでPro mini。
ただし、Pro miniの場合はUSBポートが無いのでPCから書き込むためにFTDIシリアル変換モジュールが必要です。


FlashAir(W-02以降)

Arduinoを無線対応させるために使います。
ストレージは使わないのでわざわざ大容量のものを用意する必要はありません。
また、W-02以降であればGPIOモードを使える(ファームアップデートが必要だけど)ので、型落ちでもOKです。


では、次回から実際に作っていきます。

0 件のコメント:

コメントを投稿