😴

Arduino MKR WAN 1310でDeep Sleepに入ってしまい書き込みができなくなった場合の対処法

2022/02/08に公開8

tl;dr

リセットボタンを2回押すとブートローダーモードに入れて書き込みができる!

本文

Arduino MKR WAN 1310 はLoRaモジュールを積んだArduinoで、低消費電力な通信を行うことができます。

バッテリーを節約するために、ArduinoLowPower などのライブラリを使ってArduino自体をスリープさせることができますが、スリープするとシリアルポートも読みにいかなくなるため、書き込みができず相当困ります。筆者はしばらくの間アップロードと同時にリセットボタンを押し、頑張って書き込みとポートが繋がる一瞬のタイミングを狙うという方法で書き込みをしていたのですが、とうとう辛くなったので書き込み方法を探す旅に出ることにしました。

https://forum.arduino.cc/t/deep-sleep-and-ide-mkr-1300-wan/698789

このフォーラムが参考になりました。回答を抜粋して翻訳します。

Fortunately, there is a very easy way to recover the board. Press and release the reset button twice quickly. You will now see the “L” LED start pulsing and a port will come back for the board. The pulsing LED is the indicator the board is in bootloader mode. Your sketch will not run while it is in this mode. If you press the reset button once, power cycle the board, or upload a sketch it will exit from bootloader mode and your sketch will start running again.

幸運なことに、簡単にボードを復旧する方法があります。リセットボタンを高速に2回押して離せばOKです。"L" LEDが点滅を開始して、ボードのポートが復旧すると思います。点滅しているLEDは、ボードがブートローダーモードに入ったことを示します。その間は、書き込まれているスケッチは実行されることがありません。もしもう一度リセットボタンを押したり、電源を供給し直したり、スケッチをアップロードしたらブートローダーモードは終了し、書き込まれたスケッチが動き始めます。

One thing to note is that the port number may be different when in bootloader mode than it was when your sketch was running, so make sure you select the right port from the Arduino IDE’s Tools > Port menu.

ブートローダーモードに入った時は、ボードが動作中にいつも繋がっているポート番号とは異なるかもしれないことに注意してください。Arduino IDEの 「ツール > ポート」 メニューから正しいポートを選べます。


しかし、このボードの挙動はドキュメントに記載されていない気がします。見つけた人がいたら教えてください。

Discussion

gishikaigishikai

MKR WAN1310を使ってLoRa通信をいじっている者です。
LoRa通信のコードをスケッチで書き込んだボードを、PCからの給電ではなく3.7VのLiPoバッテリからおこなうことは可能でしょうか?
試してみたのですが、Lチカのような単純動作はできていますが、GWとの通信のようなものはできていません。
何か知見があればご教示頂ければと思います。

mactkgmactkg

はじめまして。コメントありがとうございます。

自分はモバイルバッテリーを使ってMKR WAN1310同士で通信するのはやっているんですが、LiPoバッテリーを使ったことがないのと、GWとの通信を試したことがなかったもので、残念ながらお助けできません。

https://forum.arduino.cc/ などで聞いてみるといいかもしれないですね。

gishikaigishikai

ありがとうございます。
モバイルバッテリ(5V?)で通信可能なのでしょうか?
MKR WAN同士の通信も、モバイルバッテリからの給電で試みましたが、何故かできませんでした。
公式のチュートリアルのものを試されたのでしょうか??

mactkgmactkg

モバイルバッテリーからは、普通にUSBケーブルで給電してます。
ちまちまスリープさせて使ってるのですが、スリープすると給電を止めてしまうバッテリーがあるので、注意が必要です。
私はこれを使っていて、定電流モードにして動かしてます。
https://amzn.to/3LSbcuG

LiPoなどで動かす前に、USB経由などで給電した状態で通信はうまくできているのでしょうか?

gishikaigishikai

PCからUSB接続して動かすことはできています。
ですが、単純メッセージ(or センサデータなど)を送信する側をバッテリ駆動にすると、LoRa送信をしてくれないようです。
私は、以下のものを使っています。
https://cheero.net/canvas-iot/
なお、他のデバイス(draginoとかKiWi製)ではモバイルバッテリでの動作を確認しています。

mactkgmactkg

不思議ですね。こちらでは動作できています。(BME680と、1Wireの温度センサを接続してます)
センサーなど回路が電流を食う場合、単純に電流不足というのもありそうでしょうか?
これ以上お役に立てることはなさそうです😢

gishikaigishikai

初歩的なミスで、コードにvoidを入れ忘れていただけのようでした…
試したところ、普通にバッテリで駆動できました!
大変お騒がせしましたm(__)m