Arduino IoT CloudとAmazon Alexaの連携:ステップバイステップガイド
必要なパーツと用品
| パーツ | 数量 |
|---|---|
| Arduino MKR WiFi 1010 | 1 |
| Arduino MKR ENV Shield | 1 |
| ブレッドボード | 1 |
| 高輝度白色LED | 1 |
| ジャンパーワイヤー | 1 |
| RGB LED(共通カソード) | 1 |
| 抵抗 220 Ω | 1 |
使用するアプリとオンラインサービス
- Arduino Web Editor
- Arduino IoT Cloud
- Arduino Amazon Alexa公式スキル
プロジェクト概要
イントロ:はじめに
このチュートリアルではArduino IoT Cloudを使用します。Arduino IoT Cloudが初めての方は、まず入門プロジェクトを参照し、サポートボードのセットアップ、IoT Cloudの「モノ(Thing)」とプロパティの作成、オンボーディングの流れを理解してください。
パート1:Arduino IoT Cloud
メインのIoT Cloudページから、新しい「モノ(Thing)」を作成し、意味のある名前を付けます。次に使用するボードを選択します。ボードが表示されない場合は、デバイスセクションのデバイスの追加ボタンをクリックしてから始める手順をスキップしている可能性があります。
完了したら、3つのプロパティをモノに追加します。最初の2つは照明、最後は温度を表します。
- ColoredLightタイプ:RGB照明を制御可能。明るさと色をコントロールできます。Alexaで操作するためReadAndWriteに設定。
- DimmedLightタイプ:明るさのみ制御可能な照明。
- 温度:ReadOnlyとして追加(値を知るだけで設定不要)。タイプは温度センサー(摂氏)を使用(華氏も選択可能)。
この時点でのダッシュボードビューは以下のようになります:
重要: プロパティ追加時、スマートホームセクションにリストされているタイプのみを使用してください。それ以外はAlexaで動作しません。
モノの編集ビューでスケッチを編集ボタンをクリックし、Web Editorを開きます。
パート2:Arduino Web Editor
Web Editorで、自動生成されたスケッチにコードを追加します。
環境データ(温度、必要なら湿度・気圧・光量も)を読み取るため、Arduino_MKRENVライブラリをスケッチの冒頭でインポート:
#include
ボードピンの定数を定義(コードの可読性向上):
#define PIN_MEETING_ROOM 5
#define PIN_LOUNGE_AREA_R 2
#define PIN_LOUNGE_AREA_B 3
#define PIN_LOUNGE_AREA_G 4
setup()でMKR ENV Shieldを初期化:
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while (1);
}
シールドが未装着ならスケッチ実行をブロックします。pinModeをOUTPUTに指定する必要はありません。analogWrite()で白色LEDの強度やRGB LEDの各色を制御するためです。
loop()で毎秒温度を読み取り:
temperature = ENV.readTemperature();
delay(1000);
最後にコールバック関数を実装します。これらは、IoT Cloudからプロパティの値の変更がプルされるたびに実行されます。
onMeetingRoomChangeとonLoungeAreaChangeを実装:
void onMeetingRoomChange() {
uint8_t brightness = map(meetingRoom.getBrightness(), 0, 100, 0, 255);
if (meetingRoom.getSwitch()) {
Serial.println(brightness);
analogWrite(PIN_MEETING_ROOM, brightness);
} else {
analogWrite(PIN_MEETING_ROOM, LOW);
}
}
クラウドから明るさの値を読み取り、使用可能な値(0-255)にマッピングし、ライトスイッチがオンならその明るさで点灯、オフなら消灯します。
もう一方のコールバックも同じ原理ですが、RGBの3成分を扱います:
void onLoungeAreaChange() {
uint8_t r, g, b;
loungeArea.getValue().getRGB(r, g, b);
if (loungeArea.getSwitch()) {
Serial.println("R:" + String(r) + " G:" + String(g) + " B:" + String(b));
analogWrite(PIN_LOUNGE_AREA_R, r);
analogWrite(PIN_LOUNGE_AREA_B, b);
analogWrite(PIN_LOUNGE_AREA_G, g);
} else {
Serial.println("Lamp Off");
analogWrite(PIN_LOUNGE_AREA_R, 0);
analogWrite(PIN_LOUNGE_AREA_B, 0);
analogWrite(PIN_LOUNGE_AREA_G, 0);
}
}
Alexaアプリで色を名前で定義すれば、赤・緑・青の量を手動で指定しなくてもよくなります。
パート3:Amazon Alexaスキルのセットアップ
Amazon Alexaアプリが必要です(App StoreまたはGoogle Play Storeからダウンロード)。インストール後、既存アカウントでログインするか新規作成してください。
Arduino Alexaスキルのインストール手順を、以下の画像シーケンスで確認してください。
パート4:Amazon Alexaデバイスのセットアップ
少し待つと、デバイスが検出されます。
デバイスを選択をタップすると、利用可能なデバイスのセットアップページが表示されます(Arduino IoT Cloudでプロパティに付けた名前で表示されます)。
デバイスを1つ選び、デバイスをセットアップをタップ。グループに追加することも可能(デバイスの整理・管理が容易になります)。スキップもできます。
制御したいすべてのデバイスについてセットアップを繰り返します。
最終的にデバイスビューは以下のようになります:
これで「アレクサ、オフィスの温度は?」「アレクサ、会議室のライトをつけて」などと話しかけられるようになります。
AlexaとIoT Cloudで遊んでみてください。質問や制作報告はコメントでお知らせください。
Arduinoチーム
コード
完全なスケッチはArduino Web Editorで自動生成されます。上記のコールバック実装を追加してください。
回路図
製造プロセス
- クラウド×IoTの力を解き放つ:シームレスな接続とデータインサイトの実現
- Raspberry PiとPythonでAmazon AlexaからChromecastを制御
- Alexaでシーリングファンを音声制御:ステップバイステップガイド
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- IoTで遠隔操作する自作ロボットアーム:Arduino MKR1000とSimulink、ThingSpeak活用
- ラズベリーパイとNode-REDでAlexaからLEDを制御する - 簡単ステップバイステップガイド
- ESP32で作るIoT環境モニター:温湿度・気圧・CO2をWebダッシュボードで可視化
- Arduino IoT CloudとAlexaでテレビを音声操作:ステップバイステップガイド
- Azure IoT対応スマートプール制御システム:水温・気温監視と遠隔ポンプ制御
- Infineon、Amazon Web ServicesからAdvanced Technology Partnerに認定
- フォグ vs クラウド:IoT展開をスピードとスケールで最適化