工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino YunとAlexaでLEDを音声制御 – スマートホーム入門チュートリアル

必要な部品と材料

部品数量
Arduino Yun1
Amazon Echo(Alexa搭載)1
LED(汎用)1
Micro SDカード1

必要なアプリとオンラインサービス

プロジェクト概要

動機

スマートミラーにAlexaを組み込んで以来、家中の様々なデバイスをホームオートメーションで制御したいと考えていました。Alexa Smart Home APIでカスタムデバイスを直接制御できることを知り、Linuxシステムとマイクロコントローラを一体化したArduino Yunを使って挑戦しました。

「ハローワールド」相当のスマートホームスキルとして、音声でLEDのオン/オフを制御することを目標にしました。手元に2x3のLEDアレイがあったので、それを使って見栄えよく仕上げています。

システム構成

このプロジェクトでは、Arduino YunをAlexa Smart Home v3スキルに接続します。主要コンポーネントは以下の通りです:

Arduino YunとAlexaでLEDを音声制御 – スマートホーム入門チュートリアル

各ステップをミニプロジェクトとして捉え、一つずつテストしながら進めることをお勧めします。各ステップに1時間以上かかることもありますが、焦らず進めてください。

ステップ1:Smart Home SkillとLambda関数の作成

公式チュートリアルに従ってSmart Home Skillを作成し、Lambda関数をリンクします。LWA(Login with Amazon)の手順でClient IDとClient Secretを取得し、スキル設定に使用します。

この段階でAlexaダッシュボードから新しいスマートホームデバイスを検出できれば、第一段階は成功です。チュートリアルはPython 3.6を使用していますが、私はPython 2.7を使用しました。私のLambda関数からhandle_discovery部分をコピーできますが、この時点ではそれだけが動作します。

ステップ2:IoT Thingの作成

手順に従ってAWS IoT Thingを作成します。Thing Shadow(モノのシャドウ)を使用します。これはThingの状態のコピーと望ましい変更を保持します。ArduinoはこのThing Shadowの変更(デルタ)を通知するフィードを購読します。詳細はこちらを参照してください。

Thing作成後、IoTダッシュボードの「セキュリティ」タブから公開鍵、秘密鍵、証明書をダウンロードし、「有効化」してルートCA証明書も取得します。これらはArduinoがIoTシャドウに認証する際に使用します。

Thingの「シャドウ」タブで編集し、以下のプロパティを追加します:

{ "reported": { "light": "on" } }

ステップ3:LambdaとThingの接続

Thingが準備できたら、Lambdaコードを更新してThing Shadowを更新するようにします。私のLambda関数の全コードをコピーできますが、Discovery関連の変更は維持してください。

Lambda関数に関連付けられたIAMロールにAWSIoTFullAccess権限があることを確認してください。これによりLambdaからAWS IoT Thingへの接続が可能になります。

Lambdaのテストタブで、以下のv3固有のJSONを使ってTurnOffディレクティブのテストを作成します。TurnOnテストも同様に作成し、ヘッダー名をTurnOnに変更します。

{
  "directive": {
    "header": {
      "namespace": "Alexa.PowerController",
      "name": "TurnOff",
      "payloadVersion": "3",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
      "correlationToken": "1234"
    },
    "endpoint": {
      "scope": { "type": "BearerToken", "token": "some-access-token" },
      "endpointId": "appliance-001",
      "cookie": {}
    },
    "payload": {}
  }
}

テスト実行でThing Shadowのdesired stateがアクションに応じて変化すれば成功です。

ステップ4:Arduino Yunのセットアップ

公式ガイドよりもこちらのガイドの方が参考になりました。WindowsユーザーはSDカードをFAT32でフォーマットしてください(exFATは非対応)。イーサネット接続しないと「アップグレード」ページが正しく表示されない場合があります。設定完了後はWi-Fiで問題なく動作します。

Arduino YunとAlexaでLEDを音声制御 – スマートホーム入門チュートリアル

SSHでYunにログインできることを確認し、df -hでSDカードがマウントされているか確認してください。Arduino IDEでBlinkスケッチが動作することも確認しておきます。

ステップ5:YunをAWS IoTに接続

このチュートリアルに従ってAWS Arduino IoT SDKをインストールし、Thing Shadowのデルタを監視するサンプルスケッチを実行します。WindowsでCygwinを使う場合はMac/Linuxの手順で問題ありません(expect依存関係も問題なし)。ホストシステムから以下のスクリプトを実行すると楽です:

./AWSIoTArduinoYunInstallAll.sh <Board IP> <UserName> <Board Password>

チュートリアル完了後、Arduino IDEの「ファイル」→「スケッチ例」→「AWS-IoT-Arduino-Yun-Library」にShadowThing例が追加されます。このスケッチを開き、aws_iot_config.hにエンドポイントと証明書/鍵のファイル名を設定します。

スケッチを実行してシリアル出力で接続成功を確認し、IoTダッシュボードでThing Shadowを変更して通知が届くかテストしてください。問題がある場合は証明書のパスとRoot-CAのファイル内容を確認してください。

ステップ6:Thing Shadowの変更を処理する

最後に、Arduino側でThing Shadowの変更を処理するスケッチを書きます。私のスケッチはShadowThingサンプルをベースに、lightキーの変更を監視し、値がon/offに応じてledArrayの全ピンをHIGH/LOWに制御します。

ledArrayにはオンボードのピン13が含まれているため、外部LEDを接続しなくてもYunのオンボードLEDが音声コマンドで点滅します。私のようなLEDキューブを使う場合は、このプロジェクトを参考に配線し、ピン番号をledArrayに追加してください。

Alexaデバイスに話しかけてカスタムスマートシングのオン/オフができれば完了です。うまくいかない場合は、Lambdaのテスト機能でデバッグすると原因が分かりやすいです。

ステップ7:お祝い!

ここまで到達できたら素晴らしいです!Arduinoは音声コマンド一つであらゆることを始められます。IoTの世界が広がります!

Arduino YunとAlexaでLEDを音声制御 – スマートホーム入門チュートリアル

ソースコード

Lambda関数(Python)とArduinoスケッチ(.ino/.h)は GitHub Gist で公開しています。

製造プロセス

  1. Raspberry PiとPythonでAmazon AlexaからChromecastを制御
  2. Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
  3. Alexa制御ARDrone 2.0デモ:Raspberry PiとHologram Novaで音声操作ドローン
  4. ジェスチャー制御 RGB テーブルランプ – インタラクティブなハンズフリー照明
  5. MIDIキーボードをArduino・LED・MuseScoreでスマートピアノチューターに変身
  6. ラズベリーパイとNode-REDでAlexaからLEDを制御する - 簡単ステップバイステップガイド
  7. 古いラジコンカーをXboxコントローラーで操作可能に - ArduinoとUSBホストシールドで実現
  8. Arduinoベースのヌンチャク操作6自由度ロボットアームキット
  9. Arduino Nanoで音声制御ロボットを自作
  10. Ethernet制御ロボットアーム - WIZ750SRとAndroidアプリでリモート操作
  11. PiBot:Arduino駆動の精密ピアノ演奏ロボット