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

    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

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

    回路図

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

    完成品

    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

    ご注意事項

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

    まとめ

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

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

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

    ソラコム Hori