
M5Stack UnitCatM を Seeeduino XIAO で制御
前回はUnitCatM によるHTTP通信を確認しました。
ここではUnitCatM を制御するマイコンの検討を行いました。
目次
目標
本件の目標は以下の通りです。
- 格安データSIM探して契約:現在調査中
- 座標情報取得:基地局の位置情報で検討中
- 外部への通信:HTTP通信で決定
- コントローラ選定
- パワーセーブ
- ビンに詰める
- 川に投げる
ここでは目標④、⑤の検討を実施いたしました
コントローラ検討
これまではPCからATコマンドをおくって動作確認しておりましたが、実際にはマイコンからコマンド制御する必要があります。
ここではコントローラとしてSeeeduino XIAOを採用しました。
小さくてカワイイですし、しっかりめのパワーセーブ機能もあるためです。
Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)
- seeed studio
- 価格¥9,999(2025/05/25 01:44時点)
XIAOのシリアル端子(D6, D7)からコマンドを送受信します。
しっかりシーケンスを組んで通信の開始や位置情報の取得、HTTP送信を実施します。
パワーセーブの検討
マイコン XIAO
XIAOは送信時以外はSleepさせて消費電力を抑えます。
サンプルコードWakeUpOnRTCInterrupt.ino のようにRTCによる設定時刻で起床するようにしたかったのですが
RTCInt.h がないとエラーがでるので
RTCの設定にはSeeed_Arduino_RTCライブラリを使用しました。
消費電流は Vin = 5Vで
起床時:14.4mA
Sleep時:1.46mA
とSleepが大きく効いておりました。
以下の参考記事によるとパワーオンLEDを切ると更に消費電力が減るとのことです。
場合によってはLED排除も検討したいです。
参考
UnitCatM
UnitCatMは電源の供給をイネーブルピン付きのDCDCから供給するようにし
通信時以外はXIAOでDCDCのENピンを制御して電源遮断でパワーセーブすることにしました。
これによって通信時以外のUnitCatMによる消費電力は0となります。
システム構成
バッテリは未定ですが現状のシステム構成は以下の通りです。
XIAOでATコマンドを送信し、更にDCDCのENピンを制御してUnitCatMをON/OFFします。
部品
- Seeeduino XIAO
Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)
- seeed studio
- 価格¥9,999(2025/05/25 01:44時点)
- 5V 昇圧 DCDCコンバータ
- SIM7080G CAT-M/NB-IoT Unit
Arduino IDEコード
以下のシーケンスでATコマンドをXIAOからUnitCatMに送っています。
・AT導通確認
・ネットワーク通信開始
・基地局位置情報取得
・HTTP設定
・HTTPステート確認
・HTTP 基地局位置情報を付与して getリクエスト
HTTP getリクエスト送信後はRTCアラームを設定してnrgSave.standby();でスリープに入ります。
ここではRTC時刻を2021年1月1日 00:00:00に設定し、
アラームを1分後の2021年1月1日 00:01:00として起床するようにしています。
位置情報サーバ送信→1分スリープ→起床→‥‥を繰り返します。
消費電流は Vin = 3.7Vで
通信時:45~167mA
Sleep時:1.55mA
でした。
通信頻度を抑えればかなり長期の運用が可能なのではないでしょうか。
おわりに
ついにコントローラの選定もでき、消費電力も抑えれそうなことがわかってきました。
次回はデータSIMを契約して長期の動作確認を実施したいと考えております。