SORACOM LTE-M Button Plus と Arduino をつなげて活用する方法

2019/05/07

4月に入社したソラコムNEWBIEの堀尾(Hori)です。私の入社と同じ4月にリリースされSORACOM LTE-M Button Plusは、いわば同期です。そんな経緯により、LTE-M Button Plus の用途をさらに広げるべく、記事を書くことになりました。

SORACOM LTE-M Button Plus とは

SORACOM LTE-M Button Plus (以下、Plus ボタン) は Enterprise ボタンの機能はそのままに、接点端子コネクターがプラスされているデバイスで、名称の “Plus” の由来ともなっています。 機能面などは Plus ボタンの商品ページ をご覧いただければと思うのですが、Plus ボタンは「ボタン搭載」「接点入力搭載」という2つが特徴になります。

この接点入力に接続できるセンサーは、例えば磁気式のリードスイッチ(中に磁石が入っていて、磁力によってON/OFFになる)などがあります。

Plus ボタンの活用を広げる「マイコン連携」

それ以外にも、接点出力をするセンサーや機器はとても多く、これだけでも非常に便利に利用いただけるのですが、Arduino UNO R3 のようなマイコンと組み合わせることで「特定の条件を満たしたときに送信する」といったプログラマブルな使い方や、接点よりもより高度なセンサーも利用可能となるため、活用の幅がもっと広がります!

SORACOM LTE-M Button Plus と Arduino UNO R3 SORACOM LTE-M Button Plus と Arduino UNO R3

今回、実際にアナログ電圧出力の照度センサに連動して、メッセージを送る仕組みを作ってみました。回路構成は以下の通りです。

回路図 回路図

実際の様子がこちらです。

完成品 完成品 Arduino UNO R3 との接続 Arduino UNO R3 との接続

センサからボタンまでは、ざっくり以下のようなフローになっています。

1.照度センサ ⇒ アナログ電圧出力
 ↓
2.Arduino ⇒ デジタル出力
 ↓
3.リレースイッチ ⇒ 接点オープン/ショート
 ↓
4.LTE-M Button Plus ⇒ メッセージ送信!

最終的にリレースイッチで接点オープン/ショートの制御を行っています。その前段にマイコン(Arduino)を接続することで、おおよそどんなセンサの出力も受けることができます。

そして組み上げた実物がこちらです!LTE-M Buttonに触るのは初めてだったので、秋葉原の買い出しも含めて3-4時間程度かかりました。

構成部品

構成部品はオンラインで揃えることができます。

※ケーブルなどは別途ご準備ください

Arduinoのソースコード

Arduinoのソースコードは以下の通りです。Plus ボタンは接点をショートさせる(= HIGH)時間により、シングル・ダブル・ロングの3通りのメッセージを送ることができます。(ボタンのシングルクリック・ダブルクリック・長押しに相当) 今回、シングルのメッセージを送るようにしていますが、ダブル・ロングのメッセージを送る動作も想定したソースコードにしました。

int message = 1; // type of message : 1 -> SINGLE, 2 -> DOUBLE, 3 -> LONG
int relayIn = 2;

void setup() {
    Serial.begin(9600);
    pinMode(relayIn, OUTPUT);
    digitalWrite(relayIn, LOW);
}

void loop() {
    int sensorValue = analogRead(A0);
    Serial.println(sensorValue);
        if (sensorValue > 800) {
            if (message == 1) { // message : SINGLE
            digitalWrite(relayIn, HIGH);
            delay(200);
            digitalWrite(relayIn, LOW);
        } else if (message == 2) { // message : DOUBLE
            digitalWrite(relayIn, HIGH);
            delay(200);
            digitalWrite(relayIn, LOW);
            delay(500);
            digitalWrite(relayIn, HIGH);
            delay(200);
            digitalWrite(relayIn, LOW);
        } else { // message : LONG
            digitalWrite(relayIn, HIGH);
            delay(1500);
            digitalWrite(relayIn, LOW);
        }
        delay(3000);
    }
    delay(1000);
}

実際に試してみる

Arduino UNO R3 にスケッチを書き込むと、シリアルモニタに照度センサの出力が流れてきます。

照度センサの出力 照度センサの出力

今は420-430ぐらいでしょうか?センサの出力は0-5V(電源電圧)のアナログ電圧で、これを0-1023の整数にマッピングされて読み出しできるようになっています。 手をかざすと数字が下がるので、どうやら正しく動作しているようです。スマホの懐中電灯アプリで照らすと900以上の値になるので、閾値を800に設定しました。照度センサの出力が800を超えたら、メッセージが送信されます。

懐中電灯アプリで照らしてみると、Arduino UNO R3 が反応し、SORACOM LTE-M Button Plus に信号が送られました!

送信の様子 送信の様子

このボタンはあらかじめ SORACOM Harvest を有効化してあったので、即座にデータが確認できます。 SORACOM LTE-M Button Plus は、SORACOM LTE-M Button for Enterprise と機能的には全く同じなため、SORACOM Harvest の有効化のしかたは Getting Started に沿って行っていただければ、すぐにでもご利用いただくことができます。

SORACOM Harvest SORACOM Harvest

ご注意事項

本構成は動作確認はされていますが、長期にわたる運用や動作環境、部品個々の安定性などについては未保証になっていますので、お手元の環境で確認されることをお勧めいたします。

まとめ

という訳で、Plus ボタンと Arduino UNO R3 を使って、「明るくなったらメッセージを送信する」仕掛けを作ることができました。 SORACOM では Plus ボタン以外にも IoT の開発フェーズや要件に応じた SORACOM をすぐに活用できるデバイスを用意しています。SORACOM ユーザコンソール からお求め可能です。

フェーズに合わせた SORACOM のデバイス フェーズに合わせた SORACOM のデバイス

ぜひ、LTE-M Button Plusに色々なセンサをつないで、新しい使い方を見つけてください!

ソラコム Hori


Posted by hori at 2019/05/07