月とねこ

設計した物置き場です

おばーちゃんの見守りデバイス作成 M5stack + SORACOM 3G

概要

SORACOM AIR の「M5Stack用 3G 拡張ボード」とM5 stackを使ったHTTPS通信の実装例です。
SORACOM 3GモジュールでHTTPS通信を使う場合のハマりポイント(ライブラリやボードバージョンの相性問題と対策)を記載しています。

開発内容

目的

叔母より「おばーちゃんが起きてこない時に、メールで通知を飛ばせないか?」と相談された為。
具体的には、トイレを監視して、半日反応が無かったら(起きてこない)時に通知して欲しい

制約条件

全体の構成イメージ

f:id:RyutoAI2xm:20190814145321p:plain

実装手順

  1. SendGridのユーザー登録(認証に1営業日くらいかかるので最初にやる)
    sendgrid.kke.co.jp

  2. SendGridのユーザー管理画面から、メール発行用のAPI KEYを発行。
    f:id:RyutoAI2xm:20190814145943p:plain

  3. M5 stackの環境構築。 dev.soracom.io

  4. TinyGsmClient と ArduinoHttpClientライブラリを使用して、実装。(使用ライブラリのバージョンは、readme 参照。)
    github.com

  5. 配線作業
    M5 stack 2番ピン - RST 接続
    M5 stack 5番ピン - 光センサ 3ピンの真ん中
    M5 stack 5V - 光センサ VCC
    M5 stack GND - 光センサ GND

  6. 光センサの遅延時間調整
    DELAY_TIME のポテンショメータを調整して、人を検知してから、15秒~30秒間くらい反応するように変更します。

完成図

f:id:RyutoAI2xm:20190814155915j:plain

まとめ

契約プランと月額料金

特定地域向け IoT SIM (plan-D) 特定地域向け IoT SIM (plan-D)
月額料金 300円くらい(1日10円+通信料。ただ通信料は知れているので数円レベルと思われる)

使用デバイス

ハマったポイント

  1. TinyGsmClient / ArduinoHttpClientライブラリをESP32で使用する場合、ESP32のライブラリバージョンを1.0.1にする必要がある
    github.com
    TinyGsmClient の公式サイトに書いてあったんですが、ArduinoHttpClient のエラーだったので、TinyGsmClient 依存だと気づくのに時間がかかった…

  2. EPS32を1.0.1に下げると、M5stackのライブラリの最新版で問題が出るので、M5 stackのバージョンも0.2.5 に落とす

補足

公式サービス

SORACOM には、データ保存サービスのHarvestや、アクションをかけるLagoonというサービスがあります。
そもそも、これらのサービスを使えば、サクッと実装出来ると思うのですが、Harvestの方は無料枠が無くて、どうせなら追加料金無しで出来ないかな?と思って実装した次第です。
お金で解決する場合は、こっちでも全然良いと思います。(実際、Harvestの無料枠があったら、そっち使ってたと思う)
soracom.jp

他社サービス

同じ仕組みで何かやるなら、IFTTTでHTTP->メール発行が出来ると思うのでこっちが良いと思います。
(このへんかな? IFTTT 自作アプリからHTTPリクエストでスマホへプッシュ通知 - OITA: Oika's Information Technological Activities)
普段やらない事の勉強と、夏休みの自由研究みたいな気分だったので、実装例が見当たらないHTTPSで実装して遊んでみたかったというのが本音。

まとめ

Arduino系を久しぶりに触ったんですが、3G系のサービスも、かなり楽に実装出来るようになってきてるんだなという印象。 ソフトの実装は、サンプルで書いた以外にも、NTPサーバーで時間取って決まった時間にメール飛ばすとか、死活監視とか、3G通信失敗した時にリトライする処理入れるとか、まだまだ修正するところはあるんですが(そもそもリファクタせーとか)、とりあえずその辺りは、実装例があったり、比較的難しそうじゃなさそうなトコなので、最低限の内容で記事を書きました。