ブロックチェーン・AI・システム開発の株式会社INDETAIL

クリスマスの定番(?) Raspberry PiとAlexaで光るクリスマスツリーを作る【動画あり】

2018.12.25
tacck

※本記事は、INDETAIL Advent Calendar 2018の一環として投稿しています。

この記事は、INDETAIL Advent Calendar 2018の25日目の記事です。

こんにちは、tacckです。
Advent Calendarも最終日のクリスマス当日となりました。
クリスマスと言えば、ラズパイですよね!
そんなわけで、今年も最終日はtacckがラズパイネタで締めたいと思います。
(今年は、Alexaとの連携です!)

やること

昨年は、Raspberry Piを使って「光るクリスマスリース」を作りました
今年は「光るクリスマスツリー」を作りたいと思います!

といっても、三次元のツリーを用意するのは大変ですよね。
色々と調べてみると、最近は「ウォールツリー」という、壁などの平面にツリーのような飾り付けをして楽しむことも増えているようです。

そこで今回は、「Raspberry PiとAlexaで光るクリスマスツリー(ウォールツリー)」にチャレンジしていきます。

材料

  • デコレーション用LED: 適量
  • マスキングテープ: 適量

こちらは、いい感じのものをお近くの100均でご購入ください。

  • Raspberry Pi Zero WH: 1台
  • 基盤・ジャンパーケーブルなど: 適量

こちらは、ご家庭に常備してあるものをご利用ください。
Raspberry Piのセッティングについては、こちらの記事などもご参照ください。

手順

LEDの加工と基盤と接続

LEDをRaspberry Piから操作できるように、加工していきたいと思います。
まずは、LEDのケーブルを電池ボックスの上でカットしましょう。

ケーブルを少し剥いて、中の導線を出します。
出来たら、一旦はブレッドボードで通電の確認をします。
今回利用しているLEDは、Raspberry PiのGPIOと接続時に8mA程度の電流が流れていました。
特に抵抗を入れなくても安全な電流で抑えられているので、内部抵抗があるようです。

ということで、安心してシンプルな回路を作成します。
完成図は、下のようになりました。
(LEDのケーブルとコネクタ周辺は、マスキングテープで補強しています。)

Raspberry Piのプログラム作成

次はRaspberry Piの作業に移ります。
こちらでは、GPIOに接続したLEDを良い感じに光らせるプログラムを作成します。

今回は、GPIOの操作するプログラムとして Node-RED を使ってみましょう。
これは、フローチャートベースでプログラムできるすごいやつです。

Raspbianでは、標準で使えるようになっています。

まず、Node-REDを最新化します。

最新化できたら、常に起動する設定を実行しましょう。

最後に、起動します。

これで、ブラウザからアクセスできるようになっているはずです。
Raspberry PiのIPアドレスを確認し、下記のURLへブラウザでアクセスしてください。

Raspberry Piにホスト名を設定していて、その名前解決ができる状態だと、下の図のようにホスト名での接続も可能になります。

では、LEDを光らせるためのプログラムを書いていきましょう。

Node-REDでは、標準でRaspberry PiのGPIOを扱えるので、ささっと組み上げます。

これで、Node-RED上からLEDを点滅させることができます。
truefalseの左側の四角いボタンをクリックすると、LEDが点灯したり、消灯したりするはずです。

Node-REDとAlexaのスキル連携

次に、Node-REDとAlexaの連携をやってみましょう。
実はこれもとても簡単にできてしまいます。

Node-RED Alexa Home Skill Bridge
こちらのサイトで提供される拡張機能を利用することで、手元のRaspberry PiとAlexaをホームスキルで連携できるようになります。

では、これを使えるようにしていきましょう。

まずは、上記のサイトでユーザー登録を行ないます。書かれてある通りなので、特に難しいことはないかと思います。

登録完了すると、デバイスを登録できるようになります。
「Add Device」をクリックしましょう。

今回は、「On」、「Off」のある「照明」としてデバイスを登録します。

  • Name: クリスマスツリー
  • Description: クリスマスツリーの操作
  • On: チェック
  • Off: チェック
  • LIGHT: チェック

上記を入力できたら「OK」をクリックしましょう。

では、Node-REDに戻って拡張機能を追加します。
右上のメニューボタンをクリックし「パレットの管理」をクリックします。

続けて、「ノードを追加」タブをクリックし、検索エリアに「alexa-home-skill」と入力します。
すると、下の図のようにノード名が絞り込まれるので、「ノードを追加」をクリックします。

追加が完了したら、ページの左側のエリア(ノードのアイコンが並んでいる場所)を下の方にスクロールしていくと、「alexa」というパレットが増えていることが確認できるはずです。

確認できたら、「alexa home (右側にポッチのあるアイコン)」をドラッグして、「true」のノードの上の方に配置します。

配置したら、「Alexa Home (頭文字が大文字になっている)」をダブルクリックします。
メニューが出てくるので、「新規に alexa-home-conf を追加...」の右のペンマークをクリックします。

先ほど登録した「Username」と「Password」を入力し、右上の「追加」をクリックします。

一つ前のメニューに戻るので、「Account」に先ほど入力した「Username」を選択します。
続けて「Device」に先ほど追加した「クリスマスツリー」が選択できるようになる、はずなのですが、私が試した時には右側の再読み込みボタンをクリックしても反映されませんでした。
同じように反映されなかった場合には、一旦右上の「完了」をクリックし、ページ自体を再読み込みしてみてください。
それから、再度「Alexa Home」をダブルクリックすると、「Device」に「クリスマスツリー」を選択できるようになるはずです。

「クリスマスツリー」を選択したら、右上の「完了」をクリックしましょう。

最後に、「クリスマスツリー」のノードと「set flow.buttonTrigger」ノードを接続します。

Node-REDでは、プログラムをJSONでエクスポート(書き出し)できるので、こちらを添えておきます。
メニューからインポート(読み込み)できるので、参考にしてみてください。

最後に、Alexaアプリを使ってスキルを有効にします。

Alexaアプリのメニューから「スキル・アプリ」を選択します。
上の方の検索エリアに「Node-RED」と入力すると、目的のスキルが出てくるのでそちらをクリックします。

スキルの画面が出たら「スキルを有効にする」をタップしましょう。
アカウント連携画面に遷移するので、こちらにも先ほど登録した「Username」と「Password」を入力し、下の「Authorise」ボタンをタップします。

認証が完了すると端末の検出ダイアログが表示されるので、「端末の検出」ボタンをタップします。
しばらく待つと、登録した「クリスマスツリー」がデバイスとして登録されます。

これで、AlexaとRaspberry PiのLEDを繋ぐ流れができました!

ウォールツリーの作成

いよいよ大詰め、ウォールツリーの作成です。
今回は、このような感じで窓に飾り付けを行ないました。

(是非みなさんは、もっとセンスの良いものを作ってください。)

LED点灯

飾り付けが終われば完成です!
実際に動かしてみましょう。

Alexaから、クリスマスツリーの点灯・消灯ができました!

まとめ

Node-REDを使うことで、Raspberry PiとAlexaを手軽に連携できるようになりました!
ホームデバイスとしてRaspberry Piを使えることになるので、「Alexaに呼びかけて何かやりたい!」と思った時にできることが格段に増えることになります。
LEDのようなデバイスだけでなく外部サービスへの連携も取りやすいので、夢も広がりますね。

みなさんも冬休みの工作で、スマートホームの実現をちょっとだけやってみませんか?

tacck Takuya KIHARA

エンジニア (モバイルアプリ、フロントエンド、バックエンド、インフラ) 得意なことは、領域をまたいで考え、開発すること。 ブログでは、主にAnsible、Docker、Raspberry Piのことを書いています。 好きなフィギュアスケートの技は、スプレッド・イーグルです。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。