実験室

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

    LED&KEY(TM1638)をESP32で動かすために、ちょっとだけ苦戦しました。

    LED&amp;KEY(TM1638)という、8セグLEDとボタンが…

  2. 実験室

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

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

  3. 実験室

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

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

  4. 実験室

    こんなに簡単にできちゃうの?っていうWordPressレコメンドプラグイン「Kindred Post…

    時代はパーソナライズですよ、機械学習ですよ。でも、先日TensorF…

  5. 実験室

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

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

  6. 実験室

    壮大な計画も小さな一歩から。MacOS CatalinaでM5StickCをLチカ。

    壮大な計画とは先日、IoTデバイスが埋め込まれていて、データ…

コメント

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

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

最新の記事

スラニューについて

PAGE TOP