今日のレシピは「Amazon Echo(アレクサ)で、M5StickCを操作しちゃおう」です。ちょっと長いです。
今夜は何をする気ですか?
Amazon Echoのアレクサに「スイッチをつけて〜。」とかしゃべりかけると、M5StickCの内蔵LEDが怪しく光るというやつです。それではさっそくやってみよう!
準備編
はじめてのひとは、まずは過去記事でArduino IDEのセットアップと、M5StickCのライブラリのインストールををおさらいしてくださいね。そんなの知ってるよ、という人はスキップしてください
ライブラリのインストール
今回使うライブラリはこちら。
上のGitHubページから、「Clone or Download」をタップして、「Download Zip」するとライブラリがダウンロードできます

ダウンロードしたzipファイルを、Arduino IDEの[スケッチ] – [ライブラリをインクルード] – [.ZIP形式のライブラリをインクルード] でインクルードするのです。
プログラムを書く。
#include <M5StickC.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#include <Espalexa.h>
WiFiMulti WiFiMulti;
Espalexa espalexa;
const char* ssid = "SSID"; // ①
const char* password = "Password"; // ①
void switchChanged(EspalexaDevice* dev);
void setup() {
M5.begin();
pinMode(GPIO_NUM_10, OUTPUT);
digitalWrite(GPIO_NUM_10, HIGH);
M5.Lcd.setRotation(3);
M5.Lcd.setCursor(0,0,2);
M5.Lcd.println("Hello");
WiFiMulti.addAP(ssid,password);
M5.Lcd.print("Connecting");
while(WiFiMulti.run() != WL_CONNECTED) { // ②
M5.Lcd.print(".");
delay(1000);
}
M5.Lcd.println("");
M5.Lcd.println("Connected to");
M5.Lcd.println(WiFi.localIP());
delay(500);
espalexa.addDevice("M5StickC", switchChanged,EspalexaDeviceType::onoff); // ③
espalexa.begin();
M5.Lcd.printf("Alexa Connected");
}
void loop() {
espalexa.loop();
delay(1);
}
void switchChanged(EspalexaDevice* dev) {
if (dev == nullptr) return;
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0,0.2);
M5.Lcd.print("Switch ");
if (dev->getValue()){ // ④
M5.Lcd.print("on");
digitalWrite(GPIO_NUM_10, LOW);
} else {
M5.Lcd.print("off");
digitalWrite(GPIO_NUM_10, HIGH);
}
}
解説します
① SSIDとパスワードを設定
Echoと同じネットワークにあるWifiアクセスポイントの、SSIDとPasswordを記入します。
② Wifiアクセスポイントに接続
接続が完了するとこのブロックを抜ける。
③ espalexaにデバイスを追加
デバイス名(任意)、Alexaから呼ばれるメソッド、デバイスのタイプを登録します。今回はスイッチとして機能させるから、EspalexaDeviceType::onoffというタイプを選択しています。
④ ON/OFFを判定
ONのときは、devに値が入ってくるので、その場合は内蔵LEDをONにするのです。(GPIOの抵抗値をLOWにすると光る。消す時はHIGHにするんです。)
M5StickCに書き込もう

こんな感じでWifiにつながればOKだ。さて、次はAlexaの設定をしよう。
Amazon Alexaアプリの設定
こんどはAmazon Alexaアプリをダウンロードして設定をします。
手順1
まずは、[デバイス]を選択して、右上の(+)ボタンをタップ。

手順2
ここでは、「デバイスの追加」を選択しよう。

手順3
「すべてのデバイス」から「スイッチ」を選択しよう。

手順4
「デバイスを検出」をタップしよう。

手順5
検出が完了したら、「デバイスのセットアップ」をタップしよう。なぜか「照明」として検出されているが気にしないことにしよう。

手順6
ここはまあ、スキップでいいんじゃないかな。

手順7
追加された「照明」をタップしよう。(なんで照明なんだ…)

手順8
M5StickCをタップしよう。(ちゃんと検出されているね)

手順9
「定形アクションを作成」をタップしよう。

手順10
(+)ボタンをタップしよう。

手順11
「定型アクションを作成」をタップしよう

手順12
「スマートホーム」を選択しよう。

手順13
「照明」をタップしよう。(だからなんで照明なんだ…)

手順14
「M5StickC」を選択しよう。

手順15
「電源」を選択しよう。

手順16
「オン」の状態にして「次へ」をタップしよう。

手順17
こんな感じで設定しよう。名前は適当で大丈夫だ。実行条件は「開始フレーズを設定」で、任意のことばを設定しよう。

手順18
同じように「OFF」のアクションも作っておいた。

さあ実験。勇気をもってAlexaに話しかけます。

「あ、アレクサ…。スイッチをつけて…。」

「わかりました」

実験成功しました!
おまけ
最初は、アクションの言葉を「謎のスイッチをつけて」と登録したんだけど、Alexaが誤解して毎回なぞなぞを出してくるから、イライラしました。
今夜はこのへんで。良い年末を。
この記事へのコメントはありません。