「SIM7080G CAT-M/NB-IoT Unit」タグアーカイブ

M5Stack UnitCatM 位置情報送信システム実証実験

以前製作したM5Stack UnitCatMを用いた 位置情報送信システムの実証実験を実施しましたので報告いたします。

 

 

構成おさらい

製作した位置情報送信システムの構成をおさらいいたしましょう。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバにHTTP通信で送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

  • Seeeduino XIAO
    [amazonjs asin=”B086KXY929″ locale=”JP” title=”Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)”]
     
  • 5V 昇圧 DCDCコンバータ
    [bc url=”https://akizukidenshi.com/catalog/g/gK-13065/”]
     
  • SIM7080G CAT-M/NB-IoT Unit
    [bc url=”https://shop.m5stack.com/products/sim7080g-cat-m-nb-iot-unit?variant=40493802160300″]
     

HTTP通信

サーバへの位置情報送信にはHTTPを採用いたしました。

M5Stack UnitCatM で HTTP通信

 

位置情報取得

位置情報は基地局の座標を取得するATコマンド (AT+CLBS=?) をUnitCatMユニットに送って取得します。

基地局の座標を得るまでに5回までリトライ実行します。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

SIMカード

ここではIIJmioのデータSIMを使用しています。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

乾電池駆動検証

実証実験の準備としましてシステムの乾電池駆動を検証しました。

 

アルカリ単三電池 3本で動かしました。
7/17~7/31までの17日経過しても動作しつづけ、乾電池による長期動作は問題ないことを確認できたので中断終了いたしました。

低消費設計がうまくいっていると言えるでしょう。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

実証実験

東京旅行ついでに実証実験を決行いたしました。

乾電池駆動の位置情報送信システムを箱詰めして、羽田空港の郵便局から自宅に送ってみました。
乾電池が入っていることを伝え、特定記録による陸路での郵送をお願いいたしました。

 

位置情報データ

以下が位置情報送信システムからサーバに送られてきたデータです。

30分おきにデータが来るはずですが電波状況の影響のためかデータが届いていなかったり、基地局座標を得られていなかったりしております。
しかし断続的には座標を得ることができました。

2日かからずに札幌に到着しています。
しかし土日のために実際に投函されたのは月曜日の8/8でした。
その間は最寄りの郵便局の座標が断続的に送られておりました。保管されていたのでしょう。
 

座標プロット

 

 

 

恐らくフェリーも使ってこんなルートでやってきたのだと思う

 

おわりに

無事に位置情報送信システムによる座標取得動作が確認できました!
おもしろいな。

いよいよをもってコレを川に投げ流したくなってきた。。。

M5Stack UnitCatM 位置情報送信システムの省電力化

前回はUnitCatM で通信基地局位置情報を取得して長期運用を試してみました。

M5Stack UnitCatM を Seeeduino XIAO で制御

30分おきに位置情報をサーバに送る仕様で、400mAhのLiPoバッテリで121時間動作しました。

ここでは消費電力を低減して更に長期の動作を目指しました。

 

 

構成おさらい

本システムの構成を記します。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバに送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

  • Seeeduino XIAO
    [amazonjs asin=”B086KXY929″ locale=”JP” title=”Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)”]
     
  • 5V 昇圧 DCDCコンバータ
    [bc url=”https://akizukidenshi.com/catalog/g/gK-13065/”]
     
  • SIM7080G CAT-M/NB-IoT Unit
    [bc url=”https://shop.m5stack.com/products/sim7080g-cat-m-nb-iot-unit?variant=40493802160300″]

 

省電力化

スリープ時の待機電流がほぼXIAOのパワーオン表示LEDで消費されていますので、LEDを除去してみました。

スリープ時の待機電流 (5V DCDCの待機電流も含む)は以下のとおり
 LEDあり:1.55mA
 LEDなし:122.4uA

1/10以下になりました!

これでスリープ時の消費電力は大きく低減されました。

参考

 

エイジング

スリープ時の省電力化に成功しましたので再度 運用モードでエイジング実施いたしました。

400mAhのLiPoバッテリで
 前回が121時間のところ
 今回は348時間動作しました。

容量の大きなバッテリを用いれば更に長期の動作が期待できます。

おわりに

ここではUnitCatMによる位置情報送信システムの低消費電力化とエイジング動作の確認を実施しました。

長期動作が見込めそうなのでビンに詰めて川にぶん投げたいところですが
これから冬なのでそれは春先に実行するとして、
しばらくは本システムをお出かけ時に持ち歩いて位置情報の精度の検証に当てたいと思います。

次の記事

M5Stack UnitCatM 位置情報送信システム実証実験

M5Stack UnitCatM 番外編 SIM7080G EVAボードを楽しむ

これまではM5Stack製の SIM7080G  CAT-M/NB-IOT Unitをつこて色々検証してきました。

[bc url=”https://shop.m5stack.com/products/sim7080g-cat-m-nb-iot-unit?variant=40493802160300″]

ここでは別のSIM7080Gが載ったモジュールを入手しましたので報告いたします。

 

 

SIM7080G EVAボード

SIM7080G  CAT-M/NB-IOT Unitと同じLTEモジュール SIM7080G が載った評価ボードをAliExpressで見つけました。

こちらはGPSのアンテナ端子もあり、しかも安いので試しに購入してみました。

[bc url=”https://ja.aliexpress.com/item/1005002345858173.html?spm=a2g0s.9042311.0.0.56844c4dhiQdAH”]

LTE用とGPS用のアンテナ付きを購入

技適マークもあり一安心♪

セットアップ

この評価ボードにはマイクロUSB端子がありパソコンとシリアル通信可能です。
ドライバは以下で入手しました。
 https://www.waveshare.com/wiki/SIM7080G_Cat-M/NB-IoT_HAT

ボードは給電後にPWRピンを一瞬 GNDに落とすと起動します。

USBから給電、コマンド送信ができ非常に便利です。

GPS

早速GPSを試してみました。
GPSはSIMを入れなくても楽しめます。

窓辺にボードを置いてGPSによる位置情報取得ATコマンドを送ってみました。

受信できるようになるまでしばらく時間がかかりましたが、非常に精度の良い位置情報を得ることができました。

参考

LTE通信

SIMを挿入すればLTE通信が可能です。
SIMスロットはマイクロSIMサイズでした。挿入方向に注意は必要です。

あとはSIM7080G  CAT-M/NB-IOT Unitと同じようにATコマンドでもろもろ通信制御が可能です。

参考

 

おわりに

今回試したSIM7080G EVAボードはGPSアンテナ端子もあり、USBシリアル通信も可能で非常に便利です。

しかし今 私がやろうとしている #私のボトルメッセージ 計画に用いるには
ちょっと高級すぎる印象でした。

例えば省電力のために逐一電源を切ってからGPSをつかむのに時間かかるという懸念がございます。

十分に電源が確保されていて高精度の位置座標がほしいような用途でいつか使おうかと思います。

しかしやはり携帯通信網の利用は非常に便利で夢が拡がります。

次の記事

M5Stack UnitCatM 位置情報送信システムの省電力化

M5Stack UnitCatM で運用とエイジング

前回は通信基地局の位置情報取得について記載いたしました。

M5Stack UnitCatM で位置情報取得

 

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:IIJmioに決定
  2. 座標情報取得:基地局の位置情報を取得
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は運用シーケンスの検討とエイジング動作の確認を行いました。

運用シーケンス

本システムのシーケンスは以前確立した通りです。

M5Stack UnitCatM を Seeeduino XIAO で制御

動作は以下を繰り返します。

  • Sleepから起床
  • AT導通確認
  • ネットワーク通信開始
  • 基地局位置情報取得
  • 基地局位置情報を付与して 自宅サーバへHTTP getリクエスト
  • 30分 Sleep

 

位置情報取得

上記 運用シーケンスでモジュールをもってお出かけして観たのですが、位置情報を得ることはできませんでした。。。

 

サーバのログは以下。位置座標はLocation Failで得ることができず。

シーケンス修正

検証したところ、起動後1発では位置情報取得できないことがほとんどであることがわかり、基地局位置情報取得コマンドを複数回リトライするようにしました。

ここでは位置情報を得るまで10回までリトライするようにしました。

相変わらず自宅では位置情報を得ることはできませんが、ちょろっと外に出て位置情報がサーバに送られることを確認できました。リトライ追加のご利益ですね。

 

エイジング

自宅で長期運用してみました。

 

400mAhのLiPoで運用シーケンスでエイジング実検しましたところ
121時間動作しました。

30分間隔通信での消費電力は8.1mWhでしたので理論値は
400mAh × 3.7V ÷ 8.1mWh = 182.7h

まぁもろもろリトライとかフルチャージできてないとかあるのでこんなもんでしょうか。

消費電力のほとんどがマイコンXIAOのパワーON LEDで消費されていますので、今度LEDを取り除いて再実験したいです。

[amazonjs asin=”B086KXY929″ locale=”JP” title=”Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)”]

 

おわりに

当初の目標に向かって徐々に進んできております。

次回は更なる低消費電力化とバッテリ選定を実したいと思います。

次の記事

M5Stack UnitCatM 番外編 SIM7080G EVAボードを楽しむ

M5Stack UnitCatM で位置情報取得

前回はシステムの消費電力測定とデータSIMの契約について記載いたしました。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:IIJmioに決定
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は②の位置情報取得を再検討しましたので報告いたします。

 

位置情報取得の再検証

前回の検証では通信基地局の座標を取得するATコマンドを自宅で試しましたが情報を得ることはできませんでした。
基地局位置情報のコマンドはATコマンドの資料p. 337に記載があります。

この度、ちょっと街にお出かけの機会がありましたので再度試してみました。

USBシリアルモジュールでスマホにつないで Serial USB Terminal アプリでATコマンドを送信して実験しました。

実験結果

札幌の狸小路から国道に抜ける道を歩きながら位置情報を取得してみました。

①: +CLBS: 0,141.352896,43.057192,550,2021/09/27,11:13:19
②: +CLBS: 0,141.355294,43.055670,550,2021/09/27,11:23:58
③: +CLBS: 0,141.357550,43.056538,550,2021/09/27,11:25:16

無事に位置情報を取得することができました!
結構 位置の精度も高かったです。

 

自宅に戻るとLocation Failedで位置情報は取得できなくなりました。
我が家は一体どこの基地局で通信してるんだ。。。

おわりに

屋外で無事に通信基地局の位置情報取得を確認することができました!

次に長期動作の確認をしたいと思います。
あわせてバッテリーの選定もしないといけません。

次の記事

M5Stack UnitCatM 位置情報送信システムの省電力化

M5Stack UnitCatM の 消費電力とデータSIM契約

前回はコントローラにSeeduino XIAOを選定し、通信動作を確立しました。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

 
 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は⑤の消費電力詳細測定を実施し、①のデータSIMの契約をいたしましたので報告します。

 

消費電力詳細測定

パワーセーブ動作は前回確立し、通信時以外はXIAOをスリープし通信ユニットCAT-MはDCDCコンバータで給電しSleep中は給電を止めて消費電力を抑えます。

消費電力測定を実施しました。
30分に1回Sleepから起床してSIMの位置情報をHTTPでサーバに通信させます。通信後にSleepします。

Vin = 3.7V で消費電力は 8.09 mWh でした。

通信しない時の待機電力は3.7V × 1.55mAh = 5.735mWh
なので通信1回当たり 1.18mWh消費することになり実にLowPowerであることがわかりました。

約7割がXIAOのPower ON LEDで消費されているので、以下に倣ってLEDを除去するのがよいと考えます。

[bc url=”https://qiita.com/dzonesasaki/items/9f86c353d1a75dad5a0f”]

次回LEDを除去し消費電力を再測定したいです。

 

データSIM契約

これまではスマホのSIM(Jcom KDDI網)を使用して実験してきましたが、
いちいちSIMの載せ替えが面倒なので専用のデータSIMの契約を実施しました。

ここでは”IIJmioえらべるSIMカード”のデータ2ギガ (DoCoMo網)プランにしました。 
以下のAmazonで契約用コードを購入をダウンロードしてコースを選定して契約しました。簡単にできました。

[amazonjs asin=”B08P817H2J” locale=”JP” title=”【DL版】【初期費用3,300円(税込)が無料】IIJmioえらべるSIMカード エントリーパッケージ 月額利用(音声SIM/SMS)ドコモ・au回線・(データ/eSIM/プリペイド)ドコモ回線IM-B327″]

現在は秋の乗り換えキャンペーン(2021年10月31日まで)とのことで契約翌月から3か月データが1GB増量されるとのことです。ラッキー!

 

費用は以下の通りでした。

  • Amazon 契約コード【DL版】:¥350
  • SIMカード発行手数料:¥394
  • 月額使用料:¥748

数日後にSIMカードが到着しました。
SIMカードサイズはミニ、マイクロ、ナノのいずれのサイズにも対応しています(マルチサイズ)。

SIM設定

以下のATコマンドでSIMのAPN設定を実施します。設定後はモジュールに記憶されます。

AT+CGDCONT=1,”IP”,”APN名” 
AT+CNCFG=1,1,”APN”,”ユーザ名”,”パスワード”,3

IIJmioのデータSIMでも問題なく接続が確認できました。

 

おわりに

今回は消費電力測定とデータSIMの契約について記載いたしました。

次回はSeeeduino XIAOのPower ON LED除去による消費電力低減の確認と
通信基地局の位置情報について調査結果をまとめたいと思います。

次の記事

M5Stack UnitCatM で位置情報取得

M5Stack UnitCatM を Seeeduino XIAO で制御

前回はUnitCatM によるHTTP通信を確認しました。

M5Stack UnitCatM で HTTP通信

ここではUnitCatM を制御するマイコンの検討を行いました。

 

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:現在調査中
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定
  5. パワーセーブ
  6. ビンに詰める
  7. 川に投げる

ここでは目標④、⑤の検討を実施いたしました
 

コントローラ検討

これまではPCからATコマンドをおくって動作確認しておりましたが、実際にはマイコンからコマンド制御する必要があります。

ここではコントローラとしてSeeeduino XIAOを採用しました。
小さくてカワイイですし、しっかりめのパワーセーブ機能もあるためです。

[amazonjs asin=”B086KXY929″ locale=”JP” title=”Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)”]

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
    [amazonjs asin=”B086KXY929″ locale=”JP” title=”Seeed Studio Seeeduino XIAO-Arduino IDE 互換ボード SAMD21 Cortex M0+搭載 ブレッドボード互換 USB Type-C(3pcs)”]
     
  • 5V 昇圧 DCDCコンバータ
    [bc url=”https://akizukidenshi.com/catalog/g/gK-13065/”]
     
  • SIM7080G CAT-M/NB-IoT Unit
    [bc url=”https://shop.m5stack.com/products/sim7080g-cat-m-nb-iot-unit?variant=40493802160300″]

 

 

Arduino IDEコード

#include <EnergySaving.h>
#include "RTC_SAMD21.h"
#include "DateTime.h"

EnergySaving nrgSave;
RTC_SAMD21 rtc;

int state = 0;
int retry = 5;
String reply;
String location = "test";

void setup() {
  Serial.begin(115200); //USBシリアル
  Serial1.begin(115200); //ATコマンド シリアル

  pinMode(5, OUTPUT); //DCDC ENピン
  digitalWrite(5, LOW);

  rtc.begin();
  Serial.begin(115200);
    
  nrgSave.begin(WAKE_RTC_ALARM);
}

void loop() {
  int num = 0;

  //ATコマンド
  switch (state) {
    case 0:
      Serial1.write("AT\r\n");
      break;
    case 1:
      Serial1.write("AT+CNACT=0,1\r\n");
      break;
    case 2:
      Serial1.write("AT+CLBS=4,0\r\n");
      break;
    case 31:     
      Serial1.write("AT+SHCONF=\"URL\",\"http://データ送信先サーバ\"\r\n");
      break;
    case 32:
      Serial1.write("AT+SHCONF=\"BODYLEN\",1024\r\n");
      break;
    case 33:
      Serial1.write("AT+SHCONF=\"HEADERLEN\",350\r\n");
      break;
    case 34:      
      Serial1.write("AT+SHCONN\r\n");
      break;
    case 4:    
      Serial1.write("AT+SHSTATE?\r\n");
      break;
    case 5: 
      Serial1.print("AT+SHREQ=\"/hoge?location=" + location + "\", 1\r\n");
      break;
  }

  //通信後Sleep
  if(state == 6){
    digitalWrite(5, LOW); //CAT-M OFF
    state = 0;

    //RTC時刻設定
    DateTime now = DateTime(2021, 1, 1, 0, 0, 0);  //DateTime(年,月,日,時間,分,秒)
    rtc.adjust(now);
    now = rtc.now();

    //RTCアラームセット
    DateTime alarm = DateTime(now.year(), now.month(), now.day(), now.hour(), now.minute() + 1, now.second());
    rtc.setAlarm(alarm);
    rtc.enableAlarm(rtc.MATCH_HHMMSS);

    //sleep
    nrgSave.standby();
  }

  //5V Boost DCDC ON
  if(state == 0){
    digitalWrite(5, HIGH); //CAT-M ON
  }

  //HTTP getリクエスト
  while(state == 5){
    if(Serial1.available()) {
      reply = Serial1.readStringUntil('\n');
      Serial.println(reply);
    }
    
    num++;
    
    if(reply.indexOf("SHREQ: \"GET\",200") >= 0) {
      state = 6;
      break;
    }else if(num >= retry){
      break;
    }
    delay(300);
  }

  //HTTPステート確認
  while(state == 4){
    if(Serial1.available()) {
      reply = Serial1.readStringUntil('\n');
      Serial.println(reply);
    }
    
    num++;
    
    if(reply.indexOf("SHSTATE: 1") >= 0) {
      state = 5;
      break;
    }else if(num >= retry){
      break;
    }
    delay(300);
  }
  
  //HTTP設定
  while(state == 31 || state == 32 || state == 33 || state == 34){
    if(Serial1.available()) {
      reply = Serial1.readStringUntil('\n');
      Serial.println(reply);
    }
    
    num++;
    
    if(reply.indexOf("OK") >= 0) {
      if(state == 31) state = 32;
      else if(state == 32) state = 33;
      else if(state == 33) state = 34;
      else if(state == 34) state = 4;
      
      break;
    }else if(num >= retry){
      break;
    }
    delay(300);
  }

  //基地局位置情報
  while(state == 2){
    if(Serial1.available()) {
      reply = Serial1.readStringUntil('\n');
      Serial.println(reply);
    }
    
    num++;
    
    if(reply.indexOf("+CLBS:") >= 0) {
      reply.replace(" ", "-");
      reply.replace("\r", "-");
      location = reply;
      state = 31;
      break;
    }else if(num >= retry){
      break;
    }
    delay(300);
  }

  //通信開始
  while(state == 1){
    if(Serial1.available()) {
      reply = Serial1.readStringUntil('\n');
      Serial.println(reply);
    }
    
    num++;
    
    if(reply.indexOf("ACTIVE") >= 0) {
      state = 2;
      break;
    }else if(num >= retry){
      break;
    }
    delay(300);
  }

  //AT導通確認
  while(state == 0){
    if(Serial1.available()) {
      reply = Serial1.readStringUntil('\n');
      Serial.println(reply);
    }
    
    num++;
    
    if(reply.indexOf("OK") >= 0) {
      state = 1;
      break;
    }else if(num >= retry){
      break;
    }
    delay(300);
  }
  

  Serial.println(state);
  //Serial.println(location);
  delay(1000);
}

void alarmMatch(){
  Serial.println("WakeUP");
}

 

以下のシーケンスで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を契約して長期の動作確認を実施したいと考えております。

次の記事

M5Stack UnitCatM の 消費電力とデータSIM契約

M5Stack UnitCatM で HTTP通信

前回はUnitCatM Unitにスマホで使用しているSIMをぶち込んでpingなどで通信を確認いたしました。

M5Stack UnitCatM を味見

 

引き続きいじくりましたので報告いたします。

 

 

目標

前回ぶちあげたUnitCatM を用いての目標は以下の通りです。

  1. 格安データSIM探して契約
  2. 座標情報取得
  3. FTP通信
  4. コントローラ選定
  5. パワーセーブ
  6. ビンに詰める
  7. 川に投げる

目標 ①のデータSIM契約は現在よさげなものを調査中です。

ここでは目標②、③を中心に検討いたしました。

 

通信のON/OFF

前回はUnitの通信の開始のコマンドがなんなのか良く分からずにいたのですが
以下のATコマンドで通信のON/OFFできることがわかりました。

通信開始:AT+CNACT=0,1
通信停止:AT+CNACT=0,0

参考

 

座標情報取得の検討

Unitの位置座標を取得したいと考えております。

ATコマンドの資料を紐解きますとGNSS用のコマンドが用意されております。
しかしUnitCatM UnitにはGNSS用のアンテナ端子はないので携帯通信基地局の位置情報使うことにします。

基地局位置情報のコマンドはATコマンドの資料p. 337に記載がありますので
早速実行してみました。

しかし、
 +CLBS: <locationcode>
   locationcode   1 : Location Failed
と位置情報の取得はできませんでした。

これがSIMのためなのか現状の基地局のためなのか不明です。
引き続き調査進めます。

 

外部通信の検討

Unitの位置情報が取得できた場合、その情報を定期的に外部に送信したいと考えております。

当初はFTPEメールなど考えましたがHTTP通信で実施することにしました。
Urlにクエリパラメータで位置情報を付与することを想定しています。

 

サーバURLとして自宅サーバを指定
HTTP body lengthを設定
HTTP head lengthを設定
HTTP接続
GETリクエスト
 ここでは変数a=1とした

無事にサーバにデータが届きました。

参考

 

おわりに

ついに携帯通信網による外部サーバへのデータHTTP通信が実現できました。

目標の達成にはまだまだ検討項目たくさんありますので
粛々と進めてまいりたいと思います。

次の記事

M5Stack UnitCatM を Seeeduino XIAO で制御

M5Stack UnitCatM を味見

M5Stackから魅力的なユニットが発売されました。
Cat.M1/NB-IoT対応の通信モジュールSIM7080Gが載ったユニットです。
[bc url=”https://shop.m5stack.com/products/sim7080g-cat-m-nb-iot-unit?variant=40493802160300″]

Cat.M1やNB-IoTとはLTE通信規格の一つで通信帯域は狭く高速ではないものの
低消費電力でIoT端末向けであるとのことです。

とにかくLTE携帯通信網が利用できる通信モジュールがこんなにも低価格で入手できたことは喜ばしい限りです。

 

 

UNITCatM

到着したので早速いじってみました(9/10購入 9/16 DHLで着)。

 

まずはUSBシリアルモジュールを介してパソコンでATコマンドを送ってみました。

 

[amazonjs asin=”B009AME9R4″ locale=”JP” title=”FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)”]

 

問題なくATコマンドが通りました。
ボーレートは115200でした。

 

LTE通信

ATコマンドが通りましたのでSIMカードで通信テストをしてみました。

通信モジュールSIM7080Gはdocomo、au、ソフトバンクいずれのキャリアも対応しているようです。

[bc url=”http://www.cathay.jp/product/lte/sim7080g.html”]

そこでスマホのSIM (Jcom SIM au網)を突っ込んでみました。
UNIT CatMのケースをあけるとnanoSIMスロットがあります。

 

以下を参考にATコマンドでAPN設定しました。

[bc url=”https://qiita.com/kkkrikurikun/items/de29f383c886ab39234e”]

 

問題なく通信が確立され、pingやNTPによる時刻取得が確認できました。

 

 

APN設定後に通信が確立するまでのタイミングがまちまちなので、
なにか必要なコマンドがあるのかもしれません。勉強します。

参考

 

今後の目標

とりあえず通信は確認でき どうやらCat.M1で接続されたようですが、NB-IoTを指定できるのかなど色々ナゾです。

ATコマンドの資料やアプリケーションノートで学習が必要となりそうです。

当面は以下を目標に勉強したいと思います。
できるかもわかりませんし、できたとして全て実行するかは現状わかりません。

  • 格安データSIM探して契約
  • 基地局の座標取得 (GNSSというワードもチラついている)
  • FTP通信
  • コントローラ選定
  • パワーセーブ
  • ビンに詰める
  • 川に投げる

次の記事

M5Stack UnitCatM で HTTP通信