副業の経費が微妙に使えそうだったので、SORACOMさんのヒゲデバイスことSORACOM LTE-M Button Plus
を購入してみました。ヒゲなしのSORACOM LTE-M Button for Enterprise
は使用したこともあるのですが、まえまえからヒゲが欲しかったんですよねってことでの購入。あと、老眼がひどくなり、夜間のはんだごてなどの作業が難しくなっていることもあるのでデバイスの接続はワニ口クリップやGroveデバイスを使っての利用にしてみます。
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
は値段据え置き…試されているのか…多分。
2023.01.10まではキャンペーン中のため、チャンスだと思う方はお早めに!
今回使用するものについて
今回使用するのは以下のものになります。
- SORACOM LTE-M Button Plus
- Seeed Studio XIAO SAMD21
- Seeed Studio XIAO Groveシールド
- Grove Relay
- Grove Mech Keycap
- ケーブル類
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
との接続にリレーを使用しています。
こちらと同じ構成にするのですが、GroveのリレーモジュールGrove Relay
を使用します。
また、タイマーなどでトリガーを与えてもいいのですが、手元にメカニカルキーボードの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
また、ライブラリのインストール作業については以下を参照してください。
動作テスト
書き込みを実行するXIAO
に接続されたキーを押下すると、リレーが動作し接点をメイクさせてSORACOM LTE-M Button Plus
が動作しデータが送信されます。
キーを押下する毎に通信を行うので、プログラム側で連打対策はしたほうがいいかなと思います。
おわりに
SORACOM
のヒゲデバイスことSORACOM LTE-M Button Plus
とXIAO
を難しい作業を行うことなく連携させることができました。XIAO
はCircuitPython
を使用することも可能なので、より広い層の方にも制御ができるのではないでしょうか。また、XIAOファミリー
にはセンサーやBluetooth
、WiFi
などを標準で搭載したモデルもあるので、そちらを使用することでよりコンパクトに制御を行うことができるのではないでしょうか。
SORACOM LTE-M Button Plus
とXIAO
はかなりおすすめです!