実験室

AlexaでM5StickCを操作しちゃおう!


今日のレシピは「Amazon Echo(アレクサ)で、M5StickCを操作しちゃおう」です。ちょっと長いです。

今夜は何をする気ですか?

Amazon Echoのアレクサに「スイッチをつけて〜。」とかしゃべりかけると、M5StickCの内蔵LEDが怪しく光るというやつです。それではさっそくやってみよう!

準備編

はじめてのひとは、まずは過去記事でArduino IDEのセットアップと、M5StickCのライブラリのインストールををおさらいしてくださいね。そんなの知ってるよ、という人はスキップしてください

IDEのセットアップのしかた(Lチカ編)

ライブラリのインストール

今回使うライブラリはこちら。

上の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

「わかりました」


実験成功しました!

おまけ

最初は、アクションの言葉を「謎のスイッチをつけて」と登録したんだけど、Alexaが誤解して毎回なぞなぞを出してくるから、イライラしました。

今夜はこのへんで。良い年末を。

関連記事

     
  1. 実験室

    3Dプリンターとステッピングモーターで、動画撮影用のターンテーブルをつくろう!

    動画をかっこよく撮影するための、撮影用ターンテーブルをつくります。3D…

  2. 実験室

    [IoT実験室] M5StickCで、7セグメントLED(TM1637)に何か表示してみよう!

    M5StickCで、7セグメントLED(TM1637)に何か表示してみ…

  3. 実験室

    M5StickCからFirebase Realtime Databaseに値を書き込んじゃうよ。

    もう5回もやってるので連載っぽくなってきました。今日…

  4. 実験室

    M5StickCとサーボでつくる、API連動のかっこいいアナログメーター

    M5StickCとサーボ(Geekservo)を使って、APIから取…

  5. 実験室

    M5StickCでAPIの情報を取得して表示してみよう(HTTPS通信)

    さて、前回まではM5StickCで加速度センサーを使ったり、…

  6. 実験室

    自分でMacBook 12″のバッテリーを新品に交換した全手順を大公開します。A1534…

    ついにやってしまった!編集長は、軽量モバイルノートが欲しくて…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最新の記事

スラニューについて

PAGE TOP