この記事は SORACOM Advent Calendar 2020 の 20 日目の記事です。
#はじめに
コロナ禍で仕事がめっさ忙しくなった SORACOM UG 信州 & 農業活用コミュニティ の中の人の @ko2a です。
2020年の SORACOM UG というと・・・オンラインイベントが開催されるようになり、また新たな試みとして「SORACOM UG ビギナーズ」が始まりました。
ふとビギナーズのステップアップに何がよいのだろう?と、過去のUGでのハンズオンと思い返してみると、Raspberry PiやWioなどプログラミング言語を書いていくスタイルメインで、プログラミングはじめて触ります!って人だと取っつきにくいものが多い印象があります。
Scratchのようにビジュアルプログラミング言語できないかな?と思ってみたら、M5StackとUIFlowを使えばWebベースなビジュアルプログラミングで簡単にできるのでは?ということで、通信費も安価なM5Stack用Sigfoxモジュールを使って試してみました。
#おことわり
本業が忙しくてろくに勉強する間もなく、データがアップされているところを確認するとこで終わってしまいましたorz
できればM5Stackシリーズの豊富なセンサーを活用したサンプルを組みたかったのですが・・・初挑戦のUIFlowは難しかったです。
もちっとクラウドとかIoTとかのお仕事メインにしたいなぁ・・・
#必要なもの
-
M5Stack Basic/Gray
Basic https://www.switch-science.com/catalog/3647/
Gray https://www.switch-science.com/catalog/3648/ -
M5Stack用Sigfoxモジュール
https://www.switch-science.com/catalog/6624/ -
インターネット接続可能なPC
-
クレジットカード
ソラコムを利用するために必要です。
#手順
##1. M5StackとSigfoxモジュールの組み立て
M5StackとSigfoxモジュールを組み立てます。
[参考] IoT向けネット「Sigfox」を試す、年額1000円サービスの使い勝手
https://xtech.nikkei.com/atcl/nxt/column/18/01109/120700012/
##2. SORACOM Air for Sigfoxへ登録
通常は「Sigfox Buy」に登録するように、とありますが、そうしてしまうとSORACOMの便利なサービスが利用できなくなるので、Sigfoxモジュールの情報をSORACOMへ登録します。
[参考] M5Stack用SigfoxモジュールをSORACOM Air for Sigfoxで利用する方法
https://blog.soracom.com/ja-jp/2020/10/15/howto-use-sigfox-module-for-m5stack-with-soracom-air/#co-index-2
##3. UIFlowの準備
M5Stack公式サイトのUIFlow Quick Startの手順どおりセットアップします。
https://docs.m5stack.com/#/en/quick_start/m5core/m5stack_core_get_started_MicroPython
Google Chromeの翻訳機能を使えばある程度精度の良い日本語になりますが、やることをざくっと説明すると
- M5ドライバーのインストール
- ファームウェア書き込みツール「M5Burner」のインストール
- UIFlow用ファームウェアの書き込み(+WiFi設定)
- インターネットモードで起動してAPIキーを取得
- APIキーをWebブラウザ開発環境に設定する https://flow.m5stack.com/
となります。
##4. UIFlowでSigfoxモジュールからデータを送る
@intm さんの記事を参考に、UIFlowでSigfoxモジュールからデータを送る処理を組みます。
M5Stack用Sigfoxモジュールの使い方
##5. SORACOM User Consoleで確認
手順4で作った簡易アプリのA/Bボタンを使って送信する値を変更し、Cボタン押下でデータを送信します。
#課題あれやこれや
これでビジュアルプログラミングで簡単にできるぞ!
・・・と思っていたのですが、試してたら結構ハードル高いことに気づいた。
- 16進数の変換にコード書いてる
- マイナスの値どうする?(signed/unsignedの話持ち出すの?
- 小数点の値どうする?(float使う?10倍して整数で送る?
温度データなど送ろうとすると、どうしてもマイナス値や小数の扱いを考慮しないといけないので、こういったところはビギナーズ向けじゃないなぁと。
データフォーマットの設計は難しい。
#おわりに
ビジュアルプログラミングなら簡単にできる、と高を括ってたら盛大に躓きましたね・・・
ふつうのプログラミング言語に慣れていると、どうブロックを並べてロジック組めばよいか考えるのが煩わしい。
あと、M5Stackシリーズのセンサーを使って何かアプリを組もうとしたら、データ変換とバイナリパーサーの使い方をマスターしないとつらいですね。
そのあたりを学習するにはよいかもしれません。
バイナリパーサー詳細
https://dev.soracom.io/jp/docs/binary_parser/
#参考資料
-
M5Stack UIFlow Tutorial
https://docs.m5stack.com/#/en/uiflow/uiflow_home_page -
M5Stack COM.X Sigfoxの使い方
https://www.kccs-iot.jp/20200918-technical/ -
M5Stack用SigfoxモジュールをSORACOM Air for Sigfoxで利用する方法
https://blog.soracom.com/ja-jp/2020/10/15/howto-use-sigfox-module-for-m5stack-with-soracom-air/