通信モジュールは色々出ているが、ほとんど法人向け。個人が一個から購入できる物は限られる。
REX80+LTEモデム | L03Dを試したが接続せず、NG | |
Raspberry pi+LTEモデム | 中古、数千円〜 | L03DやL03F。起動や終了に手順がいる。消費電流が増える。 |
Raspberry pi+CANDY Pi Lite+ | ≒\16000 | やや高価、上記の方が簡単そう |
Wio LTE JP Version | \7551〜\11400 | 5V2Aが必要? 情報少なめ、開発がやや面倒そう |
xyz-mIOT LTE NB IoT/CAT M1モデム | RobotShop¥9220 | ATSAMD21G ARM0+BG96、情報少ない、開発が面倒そう |
Sprisense+LTE拡張ボード | ¥6050+\8778 | LTE-M、やや高価、高機能、低消費電流、汎用的 |
LTE-M Shield for Arduino | Soracom \7128 | 安め、低消費電流、開発しやすそう |
Soracomの使用例は自社システム前提なので、あまり参考にならない。
Dragino TechnologyのDocumentやTinyGSMの説明が参考になった。
購入してplan-d300のSIMを確認、SIMフリーではないL-03Dで繋がった。DocomoSIM。
モジュールを外しSIMを刺す、向きは逆にも入ってしまう、シールド板に刻印があります。
Arduino UNOと繋ぎ、シリアルブリッジを書き込む。
PWR LED点灯、NET LED薄く点滅。
シリアルモニターを CRのみ、9600bps に設定し、ATコマンド例の様に送信し確認できた。
AT+CSQは換算すればrssiのdBm値が得られる。
次にTinyGSMページに有ったWebClientを試す、RAMが残り少ない警告が出た。
シリアルモニターを115Kbpsにすると、モデム速度の自動設定が始まりモデム間は9600bpsになった。
モデム初期化→soracom.io接続→サイト接続→HTTP GETで TINY GSM ロゴ表示→切断と上手くいった!
シリアル自動設定(TinyGsmAutoBaud)を止めて9600bpsにするとRAMは75%→70%になり少し節約。
シリアルバッファを減らすのも節約になる。だが色々やるとATmega328のRAM(2K)では厳しいかも?
このスケッチはUNOからRESETをやってない、IOpinへのRESETジャンパーを外しても大丈夫だった。
WebClientにデータを載せてみると、送れない確率が高い時がある。混んでる時間かも?
電流計で測ると0.02〜0.07A、瞬間的にはもっと流れていると思うが省電力だ。
開発用SIM料金を節約すべく2台目を早めに買った。(2022/1)
チェックするとNET-LEDが点かず、シリアルブリッジでATコマンド通信ができない。初期不良?
SORACOMに問い合わせを送ったが、サービス用の「connectivity_diagnostics_for_lte_m_shield.ino」を思い出した。
これを数回動かした所、NET-LEDが点いて、PingもOKになりました。リセットにより直った?
と思ったら、2か月後に再発!サービスに送ってチェックしてもらったが再現せず、問題なし。
サービスセンターからはスイッチを伸ばした状態で帰ってきた。
テスターで確認した所、ON/OFFスイッチが前回の物と逆になってました!
SORACOMスタートガイドにならいスイッチを押し込んでいたのが原因でした。
このスイッチはPWRKEYに繋がっており、5Vを入れてもBG96がONしない状態になるようです。
またPWR-赤LEDは5Vを表していて、見にくいNET-黄色LEDがBG96のONや動作を表示していた。
スイッチが変わり、工場でマウント向きを合わせられなかった事が原因だろう。大きな写真、左-新、右-旧
・1月からサービスと10回以上やりとりしたが、この仕様変更の情報は一度も来なかった。
物を送っても指摘なし。ヽ(`Д´)ノ これでスタートガイドは更新された。
Arduino Unoではない、nano evreyや他のマイコンを繋ぐ時に必要な端子を調べた。
Arduino pinは0〜13だがIoT Shield.v1.2 SCH.pdfでは1〜書いてありシルクとも違う紛らわしい。
また、端子写真のNB-IoT_Shied_700px-A.jpgも古いVerでVer1.2とは違いがあった。
3.3V | power 4 | バッファ用 レベル変換 |
5V | power 5 | 4〜6V 0.3A 以上 BG96は3.6V |
GND | power 6 | |
GND | power 7 | |
NB_Reset | A1(15),PC1 | |
AVR_RX | 10,PB2 | |
AVR_TX | 11,PB3 | |
GND | 13とAREFの間 | NC open |
MCU_INT | 3,PD2 | Ring indicator出力? 未使用 |
GND | isp 6 | ispはGNDのみ。必要? |
秋月のAE-ATmega基板でArduino互換を作り、3.3Vregを追加した。
この基板でLTE-M Shield for Arduino を動作できました。大きな写真
回路図をよく見るとIFは3.3Vで、5V系への対応はRXバッファに3.3Kが入っている。
WebClientでのBG96との通信内容を調べた。
はじめ、ADALM2000ロジックアナライザでモニターしたが一部しか見えず。
FT232のRXIをパラ接続しTeraTermでBG96へのTX,RXをそれぞれモニターし突き合わせた。
BG96はHTTP用ATコマンドも有るが使用して無かった。TCP-IPソケット通信でHTTP通信を行っていた。
モニター内容を手動でやってみる。TCP-IPでログインしサーバ接続や切断はできた。
HTTP通信のAT+QISENDが上手く行かずつまづいている。
SIMを変えたらNG、戻してもDocomoネットワークに繋がらなくなった。
調べるとAT+CEREG=?が0,2のサーチ中で待てども0,1にならない。故障?? (+_+)
一晩おいてAT+CGDCONTやAT+COPS=?をやって調べてたら、繋がるようになった。
RenesasやさくらIoTのBG96資料から、AT+CGDCONTが必要みたい。
だがMVNO-SIMではNG。
さくらIoTの様にAT+CGDCONTとAT+COPS=?でサーチするとMVNO-SIMでも繋がった。
なお、サーチは約50秒〜90秒かかる。レスポンスは長い一行で200バイトほど来る。
MVNO-SIMに変えた時とか一回目がエラーになって2回目で繋がる事も。
ATコマンドの理解が進まないので「SORACOMで学ぶATコマンド入門」を購入した。(\500)
ATコマンドのレスポンスは、改行とレスポンス行の2行または4行が返ってくる。
プロバイダ接続はAT+QICSGPで設定し、AT+QIACT=1で有効にするのが良さそうです。
AT+QISENDの > は改行されないので一文字受信で確認する。> からデータを送る時に時間制限あり、
手動で送る時は要注意です。また、終わりのCTRL+ZとはSUB{026}である。
一回に送るのは改行までの一行で、Get構文だと3回に分けて送る。
やっと、ATコマンドを使った、サーバーへのデータ転送ができるようになりました。
通信例→BG96 ATコマンド ソケット通信
AT+QHTTPPOSTでは送るデータ数をあらかじめ調べておく必要があります。
電源ON後の基地局サーチ(AT+COPS=?)は、省略できる場合も多い。時間短縮!
動作確認したSIMはソラコムPlan-D300MB、iijmio-iot、mineo-Dプランです。
アンテナにATTを入れて試すと、rssi 8(-97dBm)でも通信できた。
このdBm値はNetwork Cell infoのdBmでは-120dBm未満に相当する様です。
REX80の10ピンコネクタとコンパチ接続できる基板を作った。回路図
本体マイコンは3.3Vなのでインターフェイスは直結でき、ソフトをATコマンドを使う様に改造した。