iOS13のショートカットとNFCタグを使ってiPhoneからM5Stackを操作する

はじめに

朝起きたら深夜のうちにiOSのアップデートが自動的にされていて、私のiPhoneがiOS13.1.2になっていました。画面を開いてみると「ショートカット」というアプリが自動的に追加されていました。

ショートカット

ショートカット

  • Apple
  • 仕事効率化
  • 無料
apps.apple.com

また、先日こちらの記事にてショートカットとNFCタグを使って実現しているのを見ていたこともあり、せっかくインストールされたなら何か試してみたいなと思いました。 reliphone.jp

ということで今回はタイトルにもありますが、iOS13のショートカットとNFCタグを使ってiPhoneからM5Stackを操作できるようにしたいと思います。

完成品

NFCタグにiPhoneをタッチするとショートカットが実行されM5Stackの画面が切り替わっています。

準備物

利用するサービス

  • Blynk(iOS / Androidアプリからのみ設定できます)

Blynk IoT platform

  • IFTTT

ifttt.com

処理の流れ

  1. ショートカットからIFTTTのWebhookを叩く
  2. IFTTTからBlynkのWebhookを叩く
  3. M5Stack側でBlynkからの通知を受け取り、処理を実行する

1, 2について、ショートカットからわざわざIFTTTを介さずに直接BlynkのWebhookを叩けばよいのではないか?と思われる方もいると思いますが、試してみたところ上手く動かなかったため、一度IFTTTを経由して実行するようにしています。

実現方法

  • Blynkの設定および「IFTTT → Blynk」の連携については以下の記事を参考にしました(上記の2に該当) www.mgo-tec.com

  • ショートカットからIFTTのWebhookを叩く方法は以下の記事を参考にしました(上記の1に該当) gadget-shot.com

  • 上記の3についてはArduinoIDEの「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」から「Blynk」と検索し、Blynkのライブラリをインストールし、その後以下のスケッチを書き込みます。

#include <M5Stack.h>
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Blynkのプロジェクト作成時にメールで送られてきたAuth Token";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "各環境のWifiのSSID";
char pass[] = "SSIDに対応するパスワード";

boolean display_flag = false;

void setup()
{
  M5.begin();
  Blynk.begin(auth, ssid, pass);
}

void loop()
{
  Blynk.run();
}

BLYNK_WRITE(V1)
{ //Blynk Virtual Pin
  if(display_flag) {
    M5.Lcd.fillScreen(TFT_BLACK);
  } else {
    M5.Lcd.fillScreen(TFT_WHITE);
  }
  display_flag = !display_flag;
}

ポイントとしては、IFTTTにてBlynkのWebhookの設定をする際にこちらの記事同様にV1ピンに値を送るようにしましょう。今回のスケッチでは値を見ていないため、以下のようなURLを指定すればよいです。 http://188.166.206.43/(MY_Auth_code)/update/V1?value=hogehoge

おわりに

iOS13のショートカットとNFCタグを使ってiPhoneからM5Stackを操作する方法を紹介しました。今回は画面の切り替えでしたが、M5Stackの各種Unitやサーボモータと連携させれば面白いことができそうですね。また、NFCタグを用いましたがショートカットではその他の方法(時刻や位置情報、Wi-Fiに接続したとき等)をトリガーにすることも可能なため、更に出来ることが増えそうですね。