SORACOMのヒゲ!購入!したのでSeeed Studio XIAOとGroveから利用してみる

副業の経費が微妙に使えそうだったので、SORACOMさんのヒゲデバイスことSORACOM LTE-M Button Plusを購入してみました。ヒゲなしのSORACOM LTE-M Button for Enterpriseは使用したこともあるのですが、まえまえからヒゲが欲しかったんですよねってことでの購入。あと、老眼がひどくなり、夜間のはんだごてなどの作業が難しくなっていることもあるのでデバイスの接続はワニ口クリップやGroveデバイスを使っての利用にしてみます。

soracom.jp

SORACOM LTE-M Button Plusの基本的な動きは「ボタンを押せばデータが送信される」というものですが、ヒゲがあることで、接点やリレーなどを接続することで、外部機器の状態を使ってデータ送信のトリガーを引かせることができるというのが特徴になります。

「あんなの飾りです。偉い人にはそれがわからんのですよ。」

馬鹿をいえ、ヒゲのある・なしは超重要だ!;-{ ) 

ボタンがあることで、ユーザー操作によるトリガーを使うことはできるのですが、IoTの文脈としてはデバッグにはボタン操作、実際はセンサーやデバイスからのトリガーで動かしたいことはそこそこにあるのかなと思います。特に今回使用しているのはSORACOM LTE-M Buttonであり、それが通信ユニットになっている点でしょう。ボタンを押すことで通信ができるのは便利ではありながらもボタンを押す機構や操作が必要になります。サーボモータでぽちっと押すことも可能ですが、そのためにその機構を入れるのは現実的ではありません。

やはり、ヒゲは重要なのです!(力説)

Arduinoと連携?否、Seeed Studio XIAO SAMD21と連携しよう

公式ドキュメントを見るとArduinoとの連携が書かれています。これでもいいのですが、せっかく小さくまとまったデバイスなのでこれ以上大きなものと結合するのもえーという印象なので、今回はSeeedさんのSeeed Studio XIAO SAMD21(以降XIAO)との連携を実験してみようと思います。通信機能がないXIAOとの結合は活用の幅が大きいかなと感じています。

現在、キャンペーン中らしい

ちなみに2022.12.25現在。SORACOM LTE-M Button for Enterpriseはキャンペーンによってお求めやすい価格で購入ができるのですが、SORACOM LTE-M Button Plusは値段据え置き…試されているのか…多分。

soracom.jp

2023.01.10まではキャンペーン中のため、チャンスだと思う方はお早めに!

blog.soracom.com

今回使用するものについて

今回使用するのは以下のものになります。

SORACOMデバイス準備

SORACOM LTE-M Button Plusを購入したらSIMの設定バイスの設定が必要になります。SIMの設定は購入後数日すると自動的に行われるようですが、バイスの設定は必要です。

SORACOMダッシュボードにログインを行い

SIMの登録を行い、

バイスの登録・設定を行います。デバイスの登録がメニューからわかりにくいのでちょっと注意です。

バイスの設定では以下の設定を行うことができます。

  • 可視化(SORACOM Harvest Data/Lagoonによる可視化)
  • 簡易位置測位機能
  • メール送信

個人的にはすべてチェックしておいて不要になったら設定をし直せばいいかなと思います。

可視化(SORACOM Harvest Data/Lagoonによる可視化)

簡易位置測位機能

メール送信

可視化設定行うとログに反映されます。

メール送信を行うとボタンを押したときの状態や簡易位置の表記を行ってくれます。

Seeed Studio XIAO側の作業

SORACOM LTE-M Button Plusの公式ドキュメントではArduinoとの接続にリレーを使用しています。

users.soracom.io

こちらと同じ構成にするのですが、GroveのリレーモジュールGrove Relayを使用します。

wiki.seeedstudio.com

また、タイマーなどでトリガーを与えてもいいのですが、手元にメカニカルキーボードの1キースイッチのモジュールであるGrove Mech Keycapがあったので、このキーを押下したら SORACOM LTE-M Button Plusのヒゲのケーブルをメイクしてみたいと思います。各々のセンサーを使用することで制御も容易にできるかと思います。

構成図

今回は以下のようなコードを作成しています。

#include <Adafruit_NeoPixel.h>

#define OUT_PIN 0
#define LED_PIN 13

#define BUTTON_PIN 2
#define PIXEL_PIN 3
#define PIXEL_COUNT 1

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
bool oldState = LOW;

// const int OUT_PIN = 0;   // the number of the pushbutton pin
// const int LED_PIN = 13;  // the number of the LED pin
//int buttonState = 0;  // variable for reading the pushbutton status

void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(OUT_PIN, OUTPUT);
  digitalWrite(OUT_PIN, LOW);

  pinMode(BUTTON_PIN, INPUT_PULLUP);
  strip.begin();
  strip.clear();
  strip.show();
}

void loop() {
  bool newState = digitalRead(BUTTON_PIN);

  if (newState == HIGH && oldState == LOW) {
    delay(20);
    newState = digitalRead(BUTTON_PIN);
    if (newState == HIGH) {
      strip.setPixelColor(0, strip.Color(255, 0, 0));
      strip.show();

      digitalWrite(LED_PIN, HIGH);
      digitalWrite(OUT_PIN, HIGH);
      delay(200);
      digitalWrite(LED_PIN, LOW);
      digitalWrite(OUT_PIN, LOW);

      delay(150);
      strip.clear();
      strip.show();
    }
  }
  oldState = newState;
}

上記のコードにはGrove Mech Keycapに内蔵されているNeoPixelのLEDを光らせるという処理も含まれています。そのためNeoPixelのライブラリを導入していないとコンパイルエラーが発生するので注意です。ライブラリは以下のGithubからダウンロードしてください。

https://files.seeedstudio.com/wiki/Grove-Mech_Keycap/res/Adafruit_NeoPixel-master.zip

また、ライブラリのインストール作業については以下を参照してください。

wiki.seeedstudio.com

動作テスト

書き込みを実行するXIAOに接続されたキーを押下すると、リレーが動作し接点をメイクさせてSORACOM LTE-M Button Plusが動作しデータが送信されます。

キーを押下する毎に通信を行うので、プログラム側で連打対策はしたほうがいいかなと思います。

おわりに

SORACOMのヒゲデバイスことSORACOM LTE-M Button PlusXIAOを難しい作業を行うことなく連携させることができました。XIAOCircuitPythonを使用することも可能なので、より広い層の方にも制御ができるのではないでしょうか。また、XIAOファミリーにはセンサーやBluetoothWiFiなどを標準で搭載したモデルもあるので、そちらを使用することでよりコンパクトに制御を行うことができるのではないでしょうか。

SORACOM LTE-M Button PlusXIAOはかなりおすすめです!

/* -----codeの行番号----- */