実験室

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. 実験室

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

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

  2. 実験室

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

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

  3. 実験室

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

    この実験は、M5StickCとサーボ(Geekservo)を使って、…

  4. 実験室

    M5StickC+GPSモジュールで、LCDにロケーションを表示してみようぜ。

    さて、こないだの実験ではM5StickCの加速度センサーを使ってみま…

  5. 実験室

    さあ、M5StickCの6軸IMUで加速度を検知して、画面を光らせたりしてみようぜ。

    今夜もまたまたIoT実験室だ。興味のないひとにはごめんなさい言いたい…

  6. 実験室

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

    IoT実験室です。IoTに興味のないひとにはごめんなさいを言…

コメント

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

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

最新の記事

スラニューについて

PAGE TOP