LoRa miniを電池駆動させる方法

# これまでのお話

1. [LoRaでIoTプラットフォーム（ThingSpeak）にデータを上げる方法](http://qiita.com/openwave-co-jp/items/fc4695f6de36fc9cd398)
1. [LoRaWANでIoTプラットフォーム（The Things Network）にデータを上げる方法](http://qiita.com/openwave-co-jp/items/7edb3661ab5703e38e7c)
1. [LoRaにGPSを付けて、会社の周りを歩いてみた（Google Earthで位置情報をプロットする）](http://qiita.com/openwave-co-jp/items/8dae802638cf6ac62650)
1. [複数のLoRaノードをゲートウェイにアクセスさせるときに気を付けること](http://qiita.com/openwave-co-jp/items/80f86e61d538d78ee6bb)
1. [LoRa機器の受信強度（RSSI）の取得方法](http://qiita.com/openwave-co-jp/items/c8634ef311ac29c506cd)
1. [LoRaと法律の関係について](http://qiita.com/openwave-co-jp/items/e8126105f0f6473929c2)
1. [LoRaWANでIoTプラットフォーム（The Things Network）にデータを上げる方法 その２](https://qiita.com/openwave-co-jp/items/d1f7aad54a5bba7b81cd)




# イントロダクション
これまでLoRaのノードにはLoRa mini Devを使ってきました。
しかし、これでは実践的な実装とは言い切れない部分があります。
その一番の要因は、LoRa mini DevにはLEDがついており、常に電力を消費し続ける点だと思います。

これは切実な問題で、電池駆動させた時にもLEDが電力を消費してしまうので、長持ちさせることができなくなってしまいます。
（プログラムの内容にもよりますが、1000mAのUSB充電器を接続しておいたら、3日で空になりました）

いくらプログラム側で節電しても、LEDで電力を消費されてしまっては全然電池が持ちません。

これらの経緯を踏まえ、今回はLoRa miniの回路作成についてご紹介します。

LoRa miniは、弊社（[株式会社オープンウェーブ](http://www.openwave.co.jp/)）の[スターターキット２](http://www.openwave.co.jp/lorawan/)に内包されています。


# 全体像
今回は、プログラムの説明はありません。（節電を意識したプログラム作成の記事を後日投稿しようかと思います）
一度はんだで基盤につけてしまうと、書き込みができなくなってしまうので、取ってつけのUSBも付けました。（外せるようにしています）

USBを外せるようにしている理由として、次の経緯からです。

- USBから電源供給を行う状態でなければ書き込みができなかった
- 電池駆動とUSBからの電源供給は同時に行うと動かない
- 電池駆動で、USBの電源供給を外す分にはシリアルモニタで内容を確認できる

![003.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/896e0dfc-4dfe-e0f8-6d9f-7924b3719869.png)

![001.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/1871bd3c-e873-92f2-086c-20bf9af5533e.png)

![002.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/a76b3623-f960-5025-ab97-d67e86e2a273.png)

## 使用ハードウェア
- Dragino社のLoRa IoT スターターキット２
    - Dragino LoRa mini：LoRa miniのチップです（スターターキット２に含まれます）
- センサー：
    - [人感センサー](http://amzn.to/2Du6OSn)
    - [温度湿度センサー](http://amzn.to/2DqLcWV)
    - [照度センサ―](http://amzn.to/2mQEmAn)
- USB端子：[FTDIのもの](http://amzn.to/2Dh7tDi)
- 道具：
    - [ユニバーサル基盤](http://akizukidenshi.com/catalog/g/gP-08242/)
    - [ブレッドボード](http://amzn.to/2DsmPrK)
    - [はんだセット](http://amzn.to/2DgoIVr)
    - [ジャンパー線](http://amzn.to/2ESksvC)
    - [ワイヤストリッパ](http://amzn.to/2mSWGsR)
    - [電池ケース](http://amzn.to/2Dtweja)
    - [素子セット](http://amzn.to/2DtyxTm)
        - 1.0kΩ抵抗
        - 0.22μFコンデンサ

はんだの吸取り線は修正のために結構重宝しました。
ワイヤストリッパはないと仕事になりません。
電池ケースは写真のものは百均で買ったものを加工していますが、ちゃんとしたものも１００円程度で買えそうです（送料は別ですが）。

# 手順

## ベースとなる回路

電池とLoRa mini、更にはセンサーを付けた時の最もベースとなる回路です。
「LoRa miniにプログラムを書き込んで、この回路にすれば動く」というものです。

次の配線図のように接続してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/169302/430e71a6-749b-6fc8-6a13-6493185dc1ab.png)

| LoRa mini | 電池 | 照度センサ― | 温度湿度センサー | 人感センサー |
|-----------|------|------------|----------------|-------------|
| 3V3       | ＋   |            |                |            |
| GND       | －   | ○          | GND            | GND        |
| A0        |      | ○          |                |            |
| A1        |      |            | DATA           |            |
| A2        |      |            |                | D1         |
| A3        |      | 1.0kΩ→A3   | VCC            |            |
| A4        |      |            |                | VCC        |

この回路のポイントは次の点でしょうか。

- 電池は、LoRa miniにのみ電気を供給します。
- 電池は3本入るケースを使いました。
    - 通常は1.5V×2でも駆動するはずですが、100均で売っている充電可能な単三電池が1.0Vだったので、それでも使えることを意識しました。
- 人感センサーの「NC」というのは、「使っていない」ということなので表現してません。
- A3は、照度センサ―と温度湿度センサーの電源として機能させます。
    - A3のHIGH/LOWで電源のON/OFFになります。
- A4は、人感センサーの電源として機能させます。
    - HIGH/LOWで電源のON/OFFになることは変わらないが、人感センサーはその性質上、電源を別にしておいた方が良いかもしれないということでこの構成です。
- 照度センサーの接続については[こちら](http://jkoba.net/prototyping/arduino/cds_practice.html)を参考にさせて頂きました。
    - サイトを参考にすると抵抗が400Ωから3kΩまで変化するようで、この接続にすることで端子に通る電流を調整できるとか。
    - 実際にはどのくらいの明るさでどのくらいの値が得られるのか計測して使った方が良い。

## USBで書き込める回路

先ほどの回路では、配線した後書き込みし直しができません。
ですので、書き込みをするためのUSB端子を付けた配線を示します。

次の配線図のように接続してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/169302/d7eeaa99-f1ba-4ed8-98a3-01f605d4901f.png)

| LoRa mini | 電池 | USB端子（FTDIのもの） | 
|-----------|------|---------------------|
| 3V3       |      | 3V3                 |
| GND       | －   | GND                 |
| RXD       |      | TXO          |
| TXD       |      | RXI           |
| RST       |      | 0.22μFコンデンサ → DTR |

この回路のポイントは次の点です。

- USB端子のCTSは、今回の回路では使いません。
- 電池の＋は接続しません。
    - USBで電源供給する状態でなければ、書き込めなかったという経験即上の出の理由です。
    - ケースはON/OFFができるものをお使いになるのがおすすめです。

## 電池駆動中の状態をシリアルモニタで確認する回路

先ほどの回路は、書き込みはできますが、電池駆動している最中のシリアルモニタの確認ができません。
電池駆動の時でも、USBを接続してシリアルモニタで確認するための接続方法もあります。

次の配線図のように接続してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/169302/ce4e151d-e4e0-8b05-0404-3626808fbb44.png)

| LoRa mini | 電池 | USB端子（FTDIのもの） | 
|-----------|------|---------------------|
| 3V3       | ＋   |                  |

電源供給をUSBから電池に切り替えるだけです。

## USBのVCCと電池を切り替えなくて良い回路の作り方

<details><summary>2018/12/14追記</summary><div>

お客様より、USBと電源をいちいち切り替えなくてよい回路の作り方を教えて頂きました。
公開の許可も頂きましたので、掲載させて頂きます。

なお、弊方にて動作確認が間に合わなかったので、取り急ぎの掲載です。
（動作確認後、配線に修正が必要だった場合は、再度当記事を修正します）
</div></details>

電池とUSBの電源をわざわざ切り替えるのはおかしいなとずっと前から気にはなっていたのですが、教えて頂きました。

使用するUSBの機器はTTL-232R-3V3というものとのことです。
http://akizukidenshi.com/catalog/g/gM-05840/

こちらで使用していたUSBモジュールとは「DTR」と「RTS」で違いがあります。
「DTR」ではマイコン側からパソコン側へのデータ転送ではハードウェア・フロー制御を省略する仕様とのことです。（以下のサイトを参考にさせて頂きました。）
http://kei-sakaki.jp/2014/11/08/6-pin-ttl-serial-major-2-type-pin-assignment/

想定では「DTR」でも同じ配線でいけそうな気はします。
（が、こちらで動作確認できていないので、お試しいただいてOKだったらコメント等でご連絡ください。）

![配線.PNG](https://qiita-image-store.s3.amazonaws.com/0/169302/4d25923f-aae2-7790-6687-21c817ee8af8.png)

LoRa miniとUSBモジュールの接続は以下の通りです。

| LoRa mini | USB端子（FTDIのもの） | 
|-----------|---------------------|
| GND       | GND                 |
| RXD       | TXO          |
| TXD       | RXI           |
| RST → 510kΩくらいの抵抗 → GND | 0.22μFコンデンサ → RTS(DTR) |




# 最後に

本来は各モードを自動的に切り替えられるようにするのがスマートな回路づくりなのかもしれません。
→2018/12/14時点で更新しました。ご参考になればと思います。

ただ、製品に組み込む回路としては「ベースとなる回路」で良いのかもしれないということもあります。
ご参考になれば幸いです。

# 注意

こちらの回路はLoRa miniを使った回路ですので、他のハードで同じように使えるかは保証しかねます。

[株式会社オープンウェーブ](http://www.openwave.co.jp/)