M5stack 3gモジュールでATコマンドをした話

1K Views

April 06, 20

スライド概要

M5stackユーザーミーティング 番外編

profile-image

製造業で機械系エンジニアをやってます。IoT的なこともすこしやってます。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

m5stack 3gモジュールで ATコマンドをした話 M5Stackユーザーミーティング番外編 2020/4/6 @kyokucho̲1989

2.

自己紹介 ・kyokucho1989 ・IoTが好き ・M5Stack楽しい ・広島在住 twitter: @kyokucho̲1989 blog: https://matoyomi.hatenablog.com 「マトリョーシカ的日常」 youtube: マトリョーシカ的IoTチャンネル #M5Stack̲UGjp @kyokucho̲1989

3.

つくったもの 全自動メダカえさやり機 (スマホからモーター制御) カップラーメン IoT タイマー (3分経ったらLINEにお知らせ) #M5Stack̲UGjp @kyokucho̲1989

4.

本題:3gモジュール楽しいですよね!? #M5Stack̲UGjp @kyokucho̲1989

5.

M5Stack 3gモジュールとは!? ・ケータイの回線を使ってIoTができる ・soracom のsimを挿すだけ ・お手軽 だが、しかし……… #M5Stack̲UGjp @kyokucho̲1989

6.

やば、私の通信料、高すぎ!? #M5Stack̲UGjp @kyokucho̲1989

7.

通信量多いね ・100回ほどの通信で500KiB ・原因はHTTP通信 ・もっと軽量なプロトコルを ↑あんま参考にならないグラフ 使いたい! → UDP通信だ! #M5Stack̲UGjp @kyokucho̲1989

8.

TinyGSMの中を潜る TinyGSMはUDPに非対応 でもATコマンドは使える ATコマンドでUDPをやる #M5Stack̲UGjp @kyokucho̲1989 TinyGSM …m5stack で http通信を行う時に使用した ライブラリ

9.

ATコマンド!! マニュアルを見てもわけがわからない…。 #M5Stack̲UGjp @kyokucho̲1989

10.

ATコマンドを覗く SORACOM M5Stack 用 3G 拡張ボードの AT コマンドをデバック https://qiita.com/yukataoka/items/1a20219129f68aef2b97 良い記事があった。 コードを実行。 シリアルモニタにいろいろ出てきた! #M5Stack̲UGjp @kyokucho̲1989

11.

ATコマンドを覗く(シリアルモニタ) [751] ### AT: (中略) [4044] ### AT: +CFUN=16 [7404] ### TinyGSM Version: 0.7.9 [7404] ### AT: (中略) [9800] ### AT: E0 [9804] ### AT: +CMEE=2 [9811] ### AT: +CGMI [9816] ### AT: +GMM [9821] ### Modem: u-blox SARA-U201 [9822] ### AT: +CPIN? [10829] ### AT: +CPIN? [10836] ### AT: I [15854] ### AT: +CGREG? (中略) #M5Stack̲UGjp [18405] ### [18413] ### [18422] ### [18428] ### [18434] ### [18439] ### [18445] ### [18449] ### [52031] ### [52038] ### [52044] ### [54088] ### [54095] ### [54101] ### [54106] ### connected. @kyokucho̲1989 AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: +CGREG? +UPSDA=0,4 +CGATT=1 +UPSD=0,1," soracom.io " +UPSD=0,2," sora " +UPSD=0,3," sora " +UPSD=0,7,"0.0.0.0" +UPSDA=0,3 +UPSND=0,8 +CGREG? +UPSND=0,0 +USOCTL= 0 ,10 +USOCR=6 +USOSO= 0 ,6,1,1 +USOCO= 0 ," beam.soracom.io ", 8888 なにこれ!?

12.

ATコマンドを覗く(解読) [751] ### AT: (中略) [4044] ### AT: +CFUN=16 [7404] ### TinyGSM Version: 0.7.9 [7404] ### AT: (中略) [9800] ### AT: E0 [9804] ### AT: +CMEE=2 [9811] ### AT: +CGMI [9816] ### AT: +GMM [9821] ### Modem: u-blox SARA-U201 [9822] ### AT: +CPIN? [10829] ### AT: +CPIN? [10836] ### AT: I [15854] ### AT: +CGREG? (中略) という形 @kyokucho̲1989 6 #M5Stack̲UGjp [4044] ### AT: +CFUN=1 [起動後の時間] ###AT ATコマンド

13.

ATコマンドを覗く(解読) [751] ### AT: (中略) [4044] ### AT: +CFUN=16 ←なんかリセットしてる [7404] ### TinyGSM Version: 0.7.9 [7404] ### AT: (中略) [9800] ### AT: E0 ←意味不明 [9804] ### AT: +CMEE=2 ←エラーモード設定 [9811] ### AT: +CGMI ← [9816] ### AT: +GMM ←製造社とモデルを表示 [9821] ### Modem: u-blox SARA-U201 [9822] ### AT: +CPIN? ←SIMにデバイスの保護がなされているか?という確認 [10829] ### AT: +CPIN? ← [10836] ### AT: I ←製造情報表示 [15854] ### AT: +CGREG? ←GPRSネットワークの確認 (中略) #M5Stack̲UGjp @kyokucho̲1989

14.

ATコマンドを覗く(解読) [18405] ### [18413] ### [18422] ### [18428] ### [18434] ### [18439] ### [18445] ### [18449] ### [52031] ### [52038] ### [52044] ### [54088] ### [54095] ### [54101] ### [54106] ### connected. AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: AT: +CGREG? +UPSDA=0,4 ← 意味不明 +CGATT=1 ←GPRSへの接続をON-OFFしている。 +UPSD=0,1," soracom.io “ ← +UPSD=0,2," sora “ ← +UPSD=0,3," sora “ ← +UPSD=0,7,”0.0.0.0” ←パケットスイッチをなんか切り替えてる +UPSDA=0,3 ← 意味不明 +UPSND=0,8 ← 意味不明 +CGREG? +UPSND=0,0 ← 意味不明 +USOCTL= 0 ,10 +USOCR=6 +USOSO= 0 ,6,1,1 +USOCO= 0 ," beam.soracom.io ", 8888 #M5Stack̲UGjp ここが大事! @kyokucho̲1989

15.

ATコマンドを覗く(解読) [54095] ### AT: +USOCR=6 ソケットを作っている!「 = 6 」はTCP通信のソケット [54101] ### AT: +USOSO= 0 ,6,1,1 ソケットのオプションを設定している [54106] ### AT: +USOCO= 0 ," beam.soracom.io ", 8888 ソケットへ接続している つまり、接続終了後、以下を追加すればいい!(たぶん) AT +USOCR=17 AT +USOCO=1,"uni.soracom.io",23080 AT +USOST = 1,"uni.soracom.io",23080,1,"1" #M5Stack̲UGjp @kyokucho̲1989

16.

UDP通信ができたよ こんなプログラムになるよ↓ modem.sendAT(GF("+USOCR=17")); delay(1000); modem.sendAT(GF("+USOCO="), 1, ",\"", host, "\",", port); delay(1000); modem.sendAT(GF("+USOST="), 1, ",\"", host, "\",", port, ",", 1); delay(1000); modem.stream.print("0"); #M5Stack̲UGjp @kyokucho̲1989

17.

UDP通信ができたよ 通信量が下がった! Before:100回で 500KiB 5kiB/回 ↓ After: 800回で130KiB … 160B/回 約1/30になった バイナリの問題とかあったけど、それはブログに書いてます #M5Stack̲UGjp @kyokucho̲1989

18.

ご静聴、ありがとうございました。 #M5Stack̲UGjp @kyokucho̲1989