【質問】LTE-Mリーフの使用方法を教えてください
【質問】LTE-Mリーフの使用方法を教えてください
- このトピックには33件の返信、2人の参加者があり、最後にShoにより2021-02-08 17:14に更新されました。
- 投稿者投稿
- 2021-01-21 17:32 #11715Sho参加者
私はシステムニコル株式会社の章と申します。LTE-Mリーフを使用してのコンテストを申し込みました。
LTE-Mリーフでのインターネット接続について、質問させて頂きます。
1.インターネット接続の手順について、以下の方法を理解していますが、良いでしょうか
1) lpwaAccess.begin()
2)attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)
3)上記とも成功して初めてWEBアクセスしたり等ができます
また、上記の2)の第4引数を指定しない場合は、30000秒が経っていると、切断されてしまうでしょうか?切断された場合は、WEBアクセス等の時、再度、上記の2)をコールする必要があるでしょうか?切断されたかどうかを調べる関数があるでしょうか?
2.SMTPサーバーと接続して、Mail送信したいですが、SMTP用のクラスが存在しないでしょうか?
以上、よろしくお願いいたします。
- 2021-01-21 18:37 #11716KDDI参加者
システムニコル 章さま
お問い合わせいただきありがとうございます。KDDI 斎藤と申します。
ネットワークへの接続については、サンプルコードのHttpGet.inoなどをご参照いただくとわかりやすいと思います。具体的な手順としては、記載いただきました1), 2) にて接続は完了いたします。
attachGPRS()は引数が「3つ」ですので、第4引数とはどれを指していますでしょうか。
ネットワークへの接続有無を確認する場合は、bool lpwaAccess.isNetworkRegistered() にてご確認をお願いいたします。SMTPはライブラリとしては具備しておりませんので、HTTPやTCPなどでアクセスできるHTTP/SMTPプロキシサーバなどをご用意いただくか、iftttなどのwebhookで送信できるようなサービスをご利用いただくのがよろしいかと思います。
どうぞよろしくお願いいたします。
- 2021-01-22 10:36 #11718Sho参加者
ご返信ありがとうございます。
SMTPはライブラリがないことを了解しました。
>attachGPRS()は引数が「3つ」ですので、第4引数とはどれを指していますでしょうか。
上記関数の定義を調べてみました。以下のようになっています。
NetworkStatus attachGPRS(const char *apn, const char *username,
const char *password,
unsigned long timeout = 30000) {第4引数とは、timeout のことを指しています。この引数の意味は何でしょうか?私はその時間になったら、自動的に切断されると理解しています。特に指定しなかったら、30000になったら、自動的に切断されると理解しています。この理解はあっているでしょうか?また、このtimeout の単位は何でしょうか?秒でしょうか?ミリ秒でしょうか?
>ネットワークへの接続有無を確認する場合は、bool lpwaAccess.isNetworkRegistered() にてご確認をお願いいたします。
一度、接続が成功しましたが、その後、この関数の戻り値がFalseであれば、再接続させる為に、最初のからやり直さないといけないでしょうか?つまり1)、2)の手順で再接続するでしょうか?それとも2)だけでよいでしょうか
因みに、私のLPWAのライブラリをhttps://trillion-node.org/wp/wp-content/uploads/LTE-M_library.zipから入手していました。
以上、よろしくお願いいたします。
- 2021-01-22 12:15 #11726KDDI参加者
ご確認いただきありがとうございます。
失礼いたしました、こちらで想定していたライブラリの種類が誤っておりました(後段でご説明いたします)。> 第4引数とは、timeout のことを指しています。この引数の意味は何でしょうか?私はその時間になったら、自動的に切断されると理解しています。特に指定しなかったら、30000になったら、自動的に切断されると理解しています。この理解はあっているでしょうか?
timeoutは、attachGPRS()でネットワークへ接続する際の待ち時間のタイムアウト値(ms)を設定します。何らかの理由(圏外など)で接続ができなかった場合、設定されたタイムアウト時間で接続処理を中断し、attachGprs()が接続ステータス(NetworkStatus)を返します。
enum NetworkStatus {
/** 内部エラー */
ERROR,
/** 初期状態 */
IDLE,
/** LPWAモジュールの準備完了 */
LPWA_READY,
/** GPRS接続の準備完了 */
GPRS_READY,
/** LPWAモジュールの電源オフ */
LPWA_OFF
};ステータスがGPRS_READYの場合は、通信可能となりますが、それ以外の場合は再度attachGPRS()でGPRS_READYとなるまでループ処理いただく必要があります(ループされる場合は、delay(10000)等を併用ください)。
前回のご回答で「bool lpwaAccess.isNetworkRegistered()」をご提示いたしましたが、ESP32向けライブラリでは実装されていませんでしたので、申し訳ございませんが無視していただき、接続状態はattachGPRS()の戻り値にてご判断をお願いいたします。
> また、このtimeout の単位は何でしょうか?秒でしょうか?ミリ秒でしょうか?
ミリ秒となります。
●ライブラリの種類について
システムニコル様でご利用いただいている「LTE-M_library.zip」は、LTE-MリーフとESP32を組み合わせた場合にご利用いただくライブラリとなります。
一方、新たにライブラリをご提供させていただいており、下記をご利用いただきますとESP32は不要で、LTE-Mリーフのみで同様な機能を実現できるようになっております。
https://github.com/mi-saitou/LTE-M-LeafLTE-Mリーフ単体でお使いいただくことで、小型化・省電力化が図れますので、よろしければこちらのご利用をご検討ください。以前のライブラリと新しいライブラリでAPIレベルで共通化しておりますので、LTE-Mリーフの機能部分についてはスケッチをそのまま流用することが可能です。(前述のbool lpwaAccess.isNetworkRegistered()も新しいライブラリでご提供させていただいております)
わかりにくい部分があり申し訳ありません。
どうぞよろしくお願いいたします。 - 2021-01-22 16:24 #11733Sho参加者
ご返信ありがとうございます。内容を承知致しました。
https://github.com/mi-saitou/LTE-M-Leafをアクセスします。中に色々ファイルが格納されています。
STM32-1.9.1release1.tar.bz2というファイルを解凍してみました。STM32ができました。
STM32/libraries/stm32lpwaはライブラリ本体でしょうか?
また、私はPlatformIOを使っていますが、こちらへ展開用のドキュメントやURLがあるでしょうか
以上、よろしくお願いいたします。
- 2021-01-22 17:50 #11744KDDI参加者
ご確認いただきありがとうございます。
Platform IOについては、現時点では対応予定がなく、恐れ入りますがArduino IDEにてコーディングを実施いただけないでしょうか。
対応可否について社内確認し、ご提供できるようであれば改めてお知らせさせていただきます。ご要望いただきありがとうございます。
- 2021-01-25 11:11 #11750Sho参加者
ご返信ありがとうございます。
https://github.com/mi-saitou/LTE-M-Leaf/blob/main/README.md
に従って、ArduinoIDEでのビルドと書き込みができるようになりました。
もう少し教えてください。私が持っているボードはコンテストの為に貸していただいたボードで、上記URLの「ボード書き込み方法」節に掲載された写真と同じ物だと思います。
上記の書き込みはSTM32へボードの書き込みの為、Type-CのUARTを使うと理解してよろしいでしょうか?また、画面右側のLeaf Connectorと接続しているESP32リーフを外す必要があるでしょうか?そのまま差されても邪魔にならないでしょうか?
また、IOPinと接続したい場合は、Leafコネクト先に繋いているESP32のPinコネクトと繋いても駄目でしょうか?「コネクタピンアサイン」節に掲載された写真はLeafコネクタのイメージからすると、やはり、そのESP32を外さないといけないでしょうか?
以上、よろしくお願いいたします。
- 2021-01-25 11:36 #11751KDDI参加者
ご確認いただきありがとうございます。
>上記の書き込みはSTM32へボードの書き込みの為、Type-CのUARTを使うと理解してよろしいでしょうか?
はい、認識あっています。STM32への書き込みは、Arduino IDEとUSB Type-Cを使って書き込みます。
>また、画面右側のLeaf Connectorと接続しているESP32リーフを外す必要があるでしょうか?そのまま差されても邪魔にならないでしょうか?
ESP32は、ESP32の機能(WifiやBluetooth等)を利用しないのであれば、取り外していただいた方が良いかと思います(動作状は問題ないはずではありますが、不具合の要因になる可能性もありますので)。
>また、IOPinと接続したい場合は、Leafコネクト先に繋いているESP32のPinコネクトと繋いても駄目でしょうか?
他のリーフを利用する場合、ソフトウェアのピン割り当てに衝突等が無ければ、ESP32をつないだまま、他のリーフを重ねても動作上は問題無いと思われます。ただし、想定外の誤動作等も懸念されると思いますので、前述の通り、ESP32の機能をご利用しない場合は、ESP32を外した方が無難と思います。
また、コネクタ 1にはリーフコネクタ の端子がほぼそのまま出ていますので、ジャンパー線などで他パーツを利用することもできますので、ご参考まで(https://trillion-node.org/wp/wp-content/uploads/LTE-M_SpecSheet_20201215.pdf)
>「コネクタピンアサイン」節に掲載された写真はLeafコネクタのイメージからすると、やはり、そのESP32を外さないといけないでしょうか?
前述の通り、ESP32の機能を使わないのであれば、ESP32は外した方が無難かと思います。
※もしESP32とSTM32の両方を使いたい場合、双方のマイコンはLeafonyコネクタ上のUARTで通信することを想定して設計されています。ただし、デフォルトではUARTのTX/RXがストレート接続になっているので通信できません。STM32側でTX/RXを入れ替える(クロス接続に変更する)処理が必要となります(STM32のPB5ピンをLowにすると、クロス接続に切り替わるようになっています)。また、ESP32とSTM32で双方にUARTで通信するためのコーディングが必要となります。
どうぞよろしくお願いいたします。
- 2021-01-26 10:51 #11761Sho参加者
ご返信ありがとうございます。
ESP32とSTM32間の関係をもう少し教えて頂きたいです。両者はどちらかしか動作できないでしょうか?
私は一番最初、https://trillion-node.org/wp/wp-content/uploads/LTE-M_library.zipのライブラリを使って、ESP32で試していました。その場合は、ESP32のボードが動作して、STM32が動作しないですが、通信用のLTE-M部だけがESP32と連携して動かせたという理解は正しいでしょうか?
もし、ESP32のWIFIの先をLTE-Mにして、WIFI→LTE-Mのようにネットワーク接続したい場合は、可能でしょうか、関連ライブラリが提供されているでしょうか?
なぜそうしたいかというと、WIFI経由のライブラリが多いからです。それらの資産を利用したいからです。
また、セキュアクライアントを使って、TCP/IPのアクセスをしたいですが、STM32側のLTE-M用のSSLのクライアントライブラリがあるでしょうか
以上、よろしくお願いいたします。
- 2021-01-26 13:02 #11763KDDI参加者
ご確認いただきありがとうございます。
> ESP32とSTM32間の関係をもう少し教えて頂きたいです。両者はどちらかしか動作できないでしょうか?
下記と合わせてのご回答となりますが、ESP32とSTM32は、両方にプログラムを書くことで、技術的にはもちろん、両方のマイコンが同時に動作することができます。
> 私は一番最初、https://trillion-node.org/wp/wp-content/uploads/LTE-M_library.zipのライブラリを使って、ESP32で試していました。その場合は、ESP32のボードが動作して、STM32が動作しないですが、通信用のLTE-M部だけがESP32と連携して動かせたという理解は正しいでしょうか?
はい、認識あっています。
(正確には、ESP32からの指示をSTM32で一旦受け取り、LTE-Mモデムに流すという処理となっており、STM32にもファームウェアが動作しています)> もし、ESP32のWIFIの先をLTE-Mにして、WIFI→LTE-Mのようにネットワーク接続したい場合は、可能でしょうか、関連ライブラリが提供されているでしょうか?
> なぜそうしたいかというと、WIFI経由のライブラリが多いからです。それらの資産を利用したいからです。はい、可能です。
そのような場合は、以前ご提供していたLTE-MリーフライブラリをESP32でお使いいただく方が良いかもしれません。
関連ライブラリはございませんので、ESP32のwifiライブラリと、LTE-Mリーフのライブラリをプログラム上で連携していただく必要があるかと思います。> また、セキュアクライアントを使って、TCP/IPのアクセスをしたいですが、STM32側のLTE-M用のSSLのクライアントライブラリがあるでしょうか
こちらはもう少し具体的にどういった使い方で、何の機能のライブラリを想定されているかお伺いできますでしょうか。
引き続きどうぞよろしくお願いいたします。
- 2021-01-26 13:24 #11765Sho参加者
ご返信ありがとうございます。
>関連ライブラリはございませんので、ESP32のwifiライブラリと、LTE-Mリーフのライブ>ラリをプログラム上で連携していただく必要があるかと思います。
難しそうな感じしますが、具体的な連携方法が教えていただけますでしょうか?そう簡単ではないようでしたら、とりあえず諦めます。
>こちらはもう少し具体的にどういった使い方で、何の機能のライブラリを想定されていますでしょうか。
SMTPサーバー(Port465)と繋いて、メール送信をしたいです。STMP用のライブラリがないと仰っていましたから、TCPクライアントでSMTPのコマンドを流して送信したいです。その為に、LpwaClientの代わりとして、SSLを使っているクライアントが必要のようです。
また、ネットからSTM32用のライブラリを見つけて、どこに展開すればよいでしょうか
Documents\Arduino\librariesに展開しても、ビルドの際にその展開先を参照してくれないようです。
- 2021-01-26 14:09 #11766KDDI参加者
> >関連ライブラリはございませんので、ESP32のwifiライブラリと、LTE-Mリーフのライブ
> >ラリをプログラム上で連携していただく必要があるかと思います。
> 難しそうな感じしますが、具体的な連携方法が教えていただけますでしょうか?そう簡単ではない
> ようでしたら、とりあえず諦めます。上記につきましては「もし、ESP32のWIFIの先をLTE-Mにして、WIFI→LTE-Mのようにネットワーク接続したい場合は、」との記載がありましたので、具体的なコーディングイメージを既にお持ちなのかと理解しておりました。
実現したいアプリケーションが何かが分からないので、具体的な連携方法をこちらから提案するのは難しいので、コンテストで実現したい内容を踏まえて御社内にてご検討いただければと存じます。
> SMTPサーバー(Port465)と繋いて、メール送信をしたいです。STMP用のライブラリがないと仰っていましたから、TCPクライアントでSMTPのコマンドを流して送信したいです。その為に、LpwaClientの代わりとして、SSLを使っているクライアントが必要のようです。
SMTPsを実現されたいのだと理解しました。
SSLをTCPで実装するのは時間を要すると思いますので、ご提案としては、例えばデバイスからは平文でAWS等へ送信し、AWSでSMTPsのライブラリなどを活用して実装するのはいかがでしょうか。> また、ネットからSTM32用のライブラリを見つけて、どこに展開すればよいでしょうか
> Documents\Arduino\librariesに展開しても、ビルドの際にその展開先を参照してくれないようです。Arduino IDEの設定等の問題かと思いますので、ビルド時のエラーログから追っていただければと思います。
(すみません、LTE-Mリーフライブラリ以外については、こちらからのサポートは難しい部分がありますので、もし一般的なエラー等の解決協力依頼であれば、エラー内容がわかる部分を添付いただけますでしょうか。可能な範囲でサポート協力いたします)引き続きよろしくお願いいたします。
- 2021-01-26 15:01 #11767Sho参加者
ご返信ありがとうございます。
ご丁寧な説明ありがとうございました。
今日は、LTE-Mの接続が不調に続いています。サンプルのHttpGetを使っても、下記のように接続失敗が繰り返しています。何とも焼き直して駄目です。考えられる要因が何かありますでしょうか?
Starting http client.
<info> EPS: Not registered
<info> PDP: Connecting
<info> PDP: Failed to connect
connecting.
<info> PDP: Connecting
<info> PDP: Failed to connect
<info> PDP: Connecting
<info> PDP: Failed to connect
connecting.
<info> PDP: Connecting
<info> PDP: Failed to connect
connecting.
<info> PDP: Connecting
<info> PDP: Failed to connect
<info> PDP: Connecting
<info> PDP: Failed to connect
connecting.以上、よろしくお願いいたします。
- 2021-01-26 15:05 #11768Sho参加者
申し訳ございません。上記問題が解決しました。差し込んだSIMカードが少し外れたようでした。再度差し込みなおしたら、無事に接続ができました。すみませんでした。
以上、よろしくお願いいたします。
- 2021-01-27 09:23 #11772Sho参加者
お世話になっております。
>ご提案としては、例えばデバイスからは平文でAWS等へ送信し、AWSでSMTPsのライブラリなどを活用して実装するのはいかがでしょうか。
上記のご提案について、もう少し伺いたいですが、LTE-MでAWS接続させるライブラリやサンプル等がございましたら、紹介していただきたいと思います。
以上、よろしくお願いいたします。
- 2021-01-27 13:18 #11774KDDI参加者
ご確認いただきありがとうございます。
>上記のご提案について、もう少し伺いたいですが、LTE-MでAWS接続させるライブラリやサンプル等がございましたら、紹介していただきたいと思います。
AWS等のクラウドへ接続する方法につきましては、お客様の実現されたいアイディアごとに要件が異なりますので、弊社ではライブラリ等は用意しておりません。
LTE-MリーフのTCPライブラリはArudinoのEthernet Clientライブラリに互換性を持たせてありますのでEthernet Clientを使うライブラリやサンプルコードのうち利用ニーズにあったものが参考になるかと存じます。
https://www.arduino.cc/en/Reference/ClientConstructor
https://www.arduino.cc/en/Reference/EthernetUDPBeginまた、Qiitaなどの技術系コミュニティサイトには、AWSとArduinoで連携した記事などがあるのではと思いますので、こちらを検索いただくのもよろしいかと存じます。
https://qiita.com/search?sort=&q=arduino+awsどうぞよろしくお願いいたします。
#SIMカード抜けの件も情報いただきありがとうございます。次期検討にて課題とさせていただきます。
- 2021-01-29 17:39 #11781Sho参加者
お世話になっております。丁寧に説明して頂きありがとうございます。
AWS接続の件は了解致しました。
別の3件に関して、報告させていただきます。
1.サンプルのHttpPostを使っているうちに、ルート証明書を設定する処理に出来たりできなかったりするような現象が発生しています。できなかった場合は、電源の再投入すると、治れます。書き込みの直後に発生する確率が高いです。
2.ボードが入手した当時、ESP32側に書き込んで、普通に使えていましたが、LTE-M側に色々書き込んで、再度、ESP32側に書き込んで、ESP32の起動をしようとしたら、lpwaAccess.begin入って、出てこれずに固まってしまいます。ESP32を使いたい場合は、STM32側に何かを入れないといけないでしょうか?
3.HttpPostを少し改造して、あるサイトにデータをPostしようとしたら、LpwaHttpClient::sendRequestのHTTPコンフィグ後のHTTPHEADを送信すると、エラーとなってしまいます。その関数内部を少し覗いてみました。
if (_https) {
theLpwaModemCore.sendf(“AT+KHTTPCFG=1,\”%s\”,%d,2″, _host.c_str(), _port);
これは、HTTPSの場合のHTTPコンフィグをHTTP2.0を使用するようにしたと思いますが、この処理をHTTP1.1に変えたら、とりあえず先に進められます。
このライブラリでは、HTTPSの場合は必ずHTTP2.0を使うことになるでしょうか?HTTP1.1対応のライブラリをご存知でしたら、教えて頂きたいと思います。
以上、よろしくお願いいたします。
- 2021-01-30 11:38 #11782Sho参加者
お世話になっております。
昨日から急にTypeCのシリアポートの認識ができなくなってしまいます。ケーブル交換、ハブ経由やArduinoIDEの環境再設定やPCの再起動等を色々やっても駄目です。何か方法があるでしょうか?これはハードの不調でしょうか
以上、よろしくお願いいたします。
- 2021-02-01 14:43 #11802KDDI参加者
ご質問いただきありがとうございます。
> 1.サンプルのHttpPostを使っているうちに、ルート証明書を設定する処理に出来たりできなかったりするような現象が発生しています。できなかった場合は、電源の再投入すると、治れます。書き込みの直後に発生する確率が高いです。
ルート証明書の設定については設定を繰り返すと失敗することがあることが確認されております。
Sierra社のファームウェアのバグと考えていますが、設定は一度成功すれば再変更しない限り有効ですので、エラーを無視していただいても動作には影響ありません。(不揮発領域に書き込まれるので、電源OFFしても消えません)> 2.ボードが入手した当時、ESP32側に書き込んで、普通に使えていましたが、LTE-M側に色々書き込んで、再度、ESP32側に書き込んで、ESP32の起動をしようとしたら、lpwaAccess.begin入って、出てこれずに固まってしまいます。ESP32を使いたい場合は、STM32側に何かを入れないといけないでしょうか?
はい、ESP32からLTE-Mリーフを動かすスケッチを使用される場合は、STM32側に連携するためのプログラムが必要になります。ESP32+LTE-Mセットを受け取られた方には出荷時にそのプログラムがSTM32に書き込まれていました。
もしESP32+LTE-Mリーフの構成でお使いになる場合は、別途それが書き込まれたボードをお送りしますがいかがいたしますか?> theLpwaModemCore.sendf(“AT+KHTTPCFG=1,\”%s\”,%d,2″, _host.c_str(), _port);
これは、HTTPSの場合のHTTPコンフィグをHTTP2.0を使用するようにしたと思いますが、この処理をHTTP1.1に変えたら、とりあえず先に進められます。このライブラリでは、HTTPSの場合は必ずHTTP2.0を使うことになるでしょうか?HTTP1.1対応のライブラリをご存知でしたら、教えて頂きたいと思います。パラメータ設定している数値を見てHTTP2.0と思われたのかもしれませんが、この数値は次の内容になりますので、HTTP2.0とは関連はございません。
0: HTTP 1.1
2: HTTP 1.1 over TLS (HTTPS)
2以外の値を入れますとTLSなしのHTTP通信となります。察するにHTTP通信でのみ通信が成功しているのではないかと思われます。
またHTTP/HTTPS通信において一部のリクエストヘッダが不正となる制限事項もございますので
利用ガイドのHTTPライブラリに記載されております制限事項も参照してください。
https://github.com/mi-saitou/LTE-M-Leaf/blob/main/httplib.md - 2021-02-01 14:47 #11803KDDI参加者
> 昨日から急にTypeCのシリアポートの認識ができなくなってしまいます
こちらはArduino IDEのシリアルモニタが動作しないとのことでしょうか。もしくはスケッチが書き込みできないということでしょうか。
- 2021-02-01 15:24 #11805KDDI参加者
システムニコル株式会社 章さま
LTE-M通信のご利用について、通信量が比較的多いようです(SORACOM回線の管理画面上は、深夜も送受信を繰り返しており、2MBytes/hour程度のデータ量が発生しています)。恐れ入りますが、動作に問題が無いようであれば、夜間は電源OFFするなど、通信量を抑えていただけますようご配慮をお願いいたします。 - 2021-02-01 16:44 #11806Sho参加者
ご返信ありがとうございます。
ルート証明書とHTTPの件について、了解致しました。
STM32と連携の件について、別のファームウェアが必要のことをわかりました。現在のところ、ボードの送付は不要です。今後、必要な時、よろしくお願いいたします。
>こちらはArduino IDEのシリアルモニタが動作しないとのことでしょうか。もしくはスケッチが書き込みできないということでしょうか。
COMとして検出しなかったです。つまり、上記の両方でしうたが、なぜか、ボード色々触っているうちに治りました。取り合えず、様子を見ます。お騒がせしてすみませんでした。
>深夜も送受信を繰り返しており、2MBytes/hour程度のデータ量が発生しています)。
了解しました。作業終了時に電源スイッチをOffするようにします。
以上、よろしくお願いいたします。
- 2021-02-01 19:23 #11809KDDI参加者
ご確認いただきありがとうございます。
引き続きよろしくお願いいたします。 - 2021-02-02 13:40 #11812Sho参加者
お世話になっております。Sleepについて、教えて頂きたいと思います。
SleepDeviceサンプルにあった下記の処理について、
pmctrl.powerDown(LPWA_SLEEP);
pmctrl.powerDown(LPWA_HIBERNATE);
pmctrl.powerDown(LPWA_L_HIBERNATE);
pmctrl.powerDown(LPWA_OFF);ソースの先頭に下記のコメントがあります。各オプションの意味を教えて頂けませんか?
// 省電力モード
// いずれの1つを選択することUSE_SLEEP
//#define USE_HIBERNATE
//#define USE_L_HIBERNATE
//#define USE_POWEROFFどちらを選択しても、loop関数が呼ばれるでしょうか?
上記のオプションを全部選択または複数の選択が可能でしょうか?答えはYesの場合は、Powerdownと復旧の順番はどのようにすれば良いでしょうか
私の場合は、通常、Led、Userボタン、icm20602を使えばよいです。状況次第、NWと接続します。この場合はどのような設定すればよいかをアドバイスして頂けると助かります。
以上、よろしくお願いいたします。
- 2021-02-03 11:13 #11815Sho参加者
お世話になっております.もう一つの質問です。ショットメールへの送信は可能でしょうか?送信方法をご存知でしたら、教えて頂きたいと思います。
以上、よろしくお願いいたします。
- 2021-02-03 12:53 #11816KDDI参加者
ご質問いただいた内容に回答させていただきます。
#define USE_SLEEP // いわゆる待ち受け状態
#define USE_HIBERNATE // USE_SLEEPよりも更に省電力(今回は非対応)
#define USE_L_HIBERNATE // USE_HIBERNATEよりも更に省電力(今回は非対応)
#define USE_POWEROFF // 通信モジュールへの電源をOFFするUSE_HIBERNATE、USE_L_HIBERNATEは、ご提供しているSIMカードでは利用いただけません(設定はできますが、USE_SLEEPと消費電力が同じであり、WakeUp方法も異なるのでコンテストではお使い頂かない方がよいです)。
> 上記のオプションを全部選択または複数の選択が可能でしょうか?
いえ、どれかのみ設定が可能です。
前述の通り、USE_SLEEPかUSE_POWEROFFでご利用ください> 答えはYesの場合は、Powerdownと復旧の順番はどのようにすれば良いでしょうか
USE_SLEEPかUSE_POWEROFFをご利用された場合は、「pmctrl.powerDown(LPWA_NORMAL)」にて復帰できます。
具体的には「SleepDevice.ino」をご参照ください。
loop()内での動作もソースをみていただいた方が理解が早いかと思います。> 私の場合は、通常、Led、Userボタン、icm20602を使えばよいです。状況次第、NWと接続します。この場合はどのような設定すればよいかをアドバイスして頂けると助かります。
具体的な構成についてこちらから申し上げることは(コンテストですので)差し控えますが、
サンプルスケッチに使い方がございますので、それを組み合わせることで、想定されている動作は実現できるかと推測いたします。stm32lpwa/Misc/read_sw.ino
stm32lpwa/Misc/blink_rgb.ino
stm32lpwa/Sensors/lpwa_icm20602.ino
ネットワーク関連はTCP/UDP/HTTPのサンプルをご参照ください> ショットメールへの送信は可能でしょうか?
ご提供しているライブラリでは、機能としてご提供しておりません。
(LTE-M通信モジュールを直接操作して送信することは可能だろうとは考えておりますが、こちらでは動作未検証です) - 2021-02-03 17:08 #11818Sho参加者
ご回答ありがとうございます。
内容について、了解致しました。もう一つの教えて頂きたいことがあります。SleepDevice.inoでは、
gprs.dettachGprs()とpmctrl.powerDown(LPWA_OFF/LPWA_SLEEP)、
pmctrl.powerDown(LPWA_OFF/LPWA_SLEEP)とpmctrl.powerDown(LPWA_NORMAL);
pmctrl.powerDown(LPWA_NORMAL)とgprs.attachGPRS
の間にそれぞれの5秒を待たせています。これは、ただのデモ上の都合で、適当に5秒にしているでしょうか?それとも、仕様上にそれぞれの状態遷移に一定なタイミングが必要でしょうか?必要であれば、それぞれ、最低どのくらいでしょうか
以上、よろしくお願いいたします。
- 2021-02-03 18:12 #11819KDDI参加者
SleepDevice.inoの中のdelay()は、特に具体的な仕様に基づいているものではございませんので、サンプルスケッチは動作事例としてお考えいただき、具体的な数値は参加者様にて調整いただければと存じます。
ただタイミングを詰めすぎると、コードによっては動作が不安定になることも考えられますし、今回はコンテスト向けの試作と理解しておりますので、作品に影響がなければタイミング等は緩めで設定いただいた方がよろしいかと存じます。
- 2021-02-04 10:34 #11821Sho参加者
ご回答ありがとうございます。
内容について、了解致しました。バッテリーの動作電圧について、教えて頂きたいことがあります。
pmctrl.getBattLevel()でバッテリーの電圧値を読み取れます。この値はいくつ以下になると、ボードの動作に支障が出るでしょうか
以上、よろしくお願いいたします。
- 2021-02-04 13:33 #11825KDDI参加者
電池電圧と安定性は一概には言えませんが、3.5V以上であれば問題ないだろうと考えます。
そのとき流れている電流に依存しますので、低電流であればもっと電圧が低くても動作すると思いますし、通信など一時的に大電流が流れる場合は、それより多くても電源断などが発生する可能性もあります。
コーディングが完了した後に、動作試験で確認いただくのがよいかと存じます。
- 2021-02-05 11:55 #11836Sho参加者
ご返信ありがとうございます。内容について了解いたしました。
- 2021-02-08 13:51 #11984Sho参加者
お世話になっております。Sleep_Resumeについて、聞きたいことがあります。
サンプルのSleep_Resumeを手直して、Serial.println等を追加しました。DeepSleepからResume後、シリアルへの出力ができなくなってしまいます。
また、加速度センサから値の取得とLTEの起動もできなくなってしまいます。
センサとLTEについて、Setupの中のdigitalWrite(SENS_PWR_ON, LOW)とdigitalWrite(LTE_PWR_ON, LOW)はセンサとLTEの電力供給の設定と思っているから、その処理をやめると、LTEとセンサの動作ができるようになりました。
これら設定とdigitalWrite(STM_RESET_N, LOW)/digitalWrite(PERI_PWR_ON, LOW)は何のためでしょうか?それを設定しなけらば、省電力に何の影響を与えるでしょうか
シリアル出力に関して、どのようにしたら、出力に戻せるでしょうか
もう一つ、SleepDevice.inoとの関係について、DeepSleepに入る場合は、pmctrl.powerDown(LPWA_OFF)にさせた意味があるでしょうか
以上、よろしくお願いいたします。
- 2021-02-08 15:05 #11989KDDI参加者
> サンプルのSleep_Resumeを手直して、Serial.println等を追加しました。DeepSleepからResume後、シリアルへの出力ができなくなってしまいます。また、加速度センサから値の取得とLTEの起動もできなくなってしまいます。センサとLTEについて、Setupの中のdigitalWrite(SENS_PWR_ON, LOW)とdigitalWrite(LTE_PWR_ON, LOW)はセンサとLTEの電力供給の設定と思っているから、その処理をやめると、LTEとセンサの動作ができるようになりました。
は、DeepSleepからのResume後に各種デバイス機能を利用するためには、再度利用するデバイスの初期化作業が必要です。
LpwaCtrl::enableSensor(), powerDown()をご利用ください。
個別にdigitalWrite()で設定いただいても同様です。> これら設定とdigitalWrite(STM_RESET_N, LOW)/digitalWrite(PERI_PWR_ON, LOW)は何のためでしょうか?それを設定しなけらば、省電力に何の影響を与えるでしょうか
STM_RESET_N:システムリセットするためのポート
PERI_PWR_ON:外部リーフを使うためのポート
の初期化処理となります(省電力とは直接関係ありませんが、動作安定化のために設定してください)。> シリアル出力に関して、どのようにしたら、出力に戻せるでしょうか
Serial.begin();
などで初期化してください。> もう一つ、SleepDevice.inoとの関係について、DeepSleepに入る場合は、pmctrl.powerDown(LPWA_OFF)にさせた意味があるでしょうか
sleep_resume.ino : STM32の省電力機能確認サンプル
SleepDevice.ino : LTE-Mモデムの省電力機能確認サンプルSTM32側でDeepSleepに入る場合、結果的にLTE-Mも電源OFFされますので、特に意味はありませんが、
明示的に処理しておいた方がコードとしては可読性があがるのではと思います。 - 2021-02-08 17:14 #11994Sho参加者
ご回答ありがとうございます。シリアル出力以外はうまく行きました。
LowPower.deepSleep();
後で、
Serial.begin(115200);
を追加して、シリアル出力を行っても、画面に何も出力されないですが、設定のタイミング等に関連するかもしませんから、後で再度試します。
ありがとうございます。
以上、よろしくお願いいたします。
- 投稿者投稿
- このトピックに返信するにはログインが必要です。