おばーちゃんの見守りデバイス作成 M5stack + SORACOM 3G
概要
SORACOM AIR の「M5Stack用 3G 拡張ボード」とM5 stackを使ったHTTPS通信の実装例です。
SORACOM 3GモジュールでHTTPS通信を使う場合のハマりポイント(ライブラリやボードバージョンの相性問題と対策)を記載しています。
開発内容
目的
叔母より「おばーちゃんが起きてこない時に、メールで通知を飛ばせないか?」と相談された為。
具体的には、トイレを監視して、半日反応が無かったら(起きてこない)時に通知して欲しい
制約条件
- おばーちゃんの家にはネット環境やスマホは無い
- 叔母はガラケー使い
- Maker Fair Tokyoで買った、SORACOM AIR 3GモジュールとM5Stackで遊んでみたい
全体の構成イメージ
実装手順
SendGridのユーザー登録(認証に1営業日くらいかかるので最初にやる)
sendgrid.kke.co.jpSendGridのユーザー管理画面から、メール発行用のAPI KEYを発行。
M5 stackの環境構築。 dev.soracom.io
TinyGsmClient と ArduinoHttpClientライブラリを使用して、実装。(使用ライブラリのバージョンは、readme 参照。)
github.com配線作業
M5 stack 2番ピン - RST 接続
M5 stack 5番ピン - 光センサ 3ピンの真ん中
M5 stack 5V - 光センサ VCC
M5 stack GND - 光センサ GND光センサの遅延時間調整
DELAY_TIME のポテンショメータを調整して、人を検知してから、15秒~30秒間くらい反応するように変更します。
完成図
まとめ
契約プランと月額料金
特定地域向け IoT SIM (plan-D) 特定地域向け IoT SIM (plan-D)
月額料金 300円くらい(1日10円+通信料。ただ通信料は知れているので数円レベルと思われる)
使用デバイス
- M5 stack 3200円
- M5Stack用 3G 拡張ボード 8800円
- SIM カード 895円?(Maker Fair Tokyo会場で、3G拡張ボードに無料で付いてきた)
- 焦電型赤外線センサーモジュール(焦電人感センサ)600円
- Type-C充電器 1780円
ハマったポイント
TinyGsmClient / ArduinoHttpClientライブラリをESP32で使用する場合、ESP32のライブラリバージョンを1.0.1にする必要がある
github.com
TinyGsmClient の公式サイトに書いてあったんですが、ArduinoHttpClient のエラーだったので、TinyGsmClient 依存だと気づくのに時間がかかった…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通信失敗した時にリトライする処理入れるとか、まだまだ修正するところはあるんですが(そもそもリファクタせーとか)、とりあえずその辺りは、実装例があったり、比較的難しそうじゃなさそうなトコなので、最低限の内容で記事を書きました。