ES920LRをセットアップする(Windows)

# ES920LRとは
広域低消費電力で通信できるLoRa変調を使用した無線モジュールです。
同じ特定小電力機器でXbeeなどは通信距離が見通し実効で数百m程度なのに対し、ES920LRは数kmまで通信できます。
(写真は公式webページより)
![es920lr_m (1).png](https://qiita-image-store.s3.amazonaws.com/0/279735/8d02dc14-eddf-6d6f-3fe6-529ffc169363.png)


# 必要パーツ
- ES920LR本体 2台  
ハーフピッチ変換基板・アンテナ付きのものを[東京デバイセズ](https://tokyodevices.jp/items/252)から購入しました。
追加モジュールと記載がありますが、評価ボードなしでも使用は可能です。
- 母艦PC  
この記事では[TeraTerm](https://forest.watch.impress.co.jp/library/software/utf8teraterm/)を使って説明します。
- [Xbee用USBインターフェースボード](http://akizukidenshi.com/catalog/g/gK-06188/)  
3.3Vシリアルへ変換出来れば何でもよいのですが、3.3Vの電源が取りやすいためこれを使いました。
- ハーフピッチ変換アダプタ  
[Aitendoの変換アダプタ](http://www.aitendo.com/product/12280)に[ピンソケット](http://akizukidenshi.com/catalog/g/gC-03866/)と[細ピンヘッダ](http://akizukidenshi.com/catalog/g/gC-06631/)を使用しました。
- [ブレッドボード](https://www.amazon.co.jp/dp/B00J2QO2X4)  
試接続用。上記の変換アダプタを使う場合、横に広くなるため大きめのものが必要です。
- ジャンパーワイヤー  
20本くらい

# セットアップ手順
## 接続図
両方とも上から見た場合の簡易接続図
![es920lr.png](https://qiita-image-store.s3.amazonaws.com/0/279735/be9c99a4-67f3-f141-ea54-239ac0385060.png)

## TeraTerm設定
通信モジュールが接続されたCOMポートに接続し、
![teraterm1.png](https://qiita-image-store.s3.amazonaws.com/0/279735/81c1a7bc-e154-1806-dd53-f9245e486380.png)

設定->シリアルポートで
ボーレートを115200
![teraterm2.png](https://qiita-image-store.s3.amazonaws.com/0/279735/2adeaf39-f12c-b973-fd5b-ea9c63c0a535.png)

設定->端末で
送信改行コードをCR+LF
ローカルエコーをON
に設定します。
![teraterm3.png](https://qiita-image-store.s3.amazonaws.com/0/279735/c8316de9-3ba3-1f77-8478-609453ed1a91.png)


## 電源投入～初回通信
電源を投入すると次のように表示されます。
(表示されない場合は配線か設定が間違っている可能性があります。)

```
select Mode [1.terminal or 2.processor] 
```
ここでは説明のためTerminalモードに入ります。
「terminal」と打ち、Enterキーを押してください。

続いて設定できる項目が表示されます。

```
OK                                                
 Software Version : VER 1.12                                                    
                                                                                
 Configuration Mode                                                             
------------------------------------------                                                                               
 a. node        select Coordinator or EndDevice
 b. bw          select Band Width                                               
 c. sf          set Spreading Factor                                            
 d. channel     set channel                                                     
 e. panid       set PAN ID                                                      
 f. ownid       set Own Node ID                                                 
 g. dstid       set Destination ID                                              
 l. ack         set Acknowledge Mode                                            
 m. retry       set send retry count                                            
 n. transmode   select Transfer Mode                                            
 o. rcvid       set received Node ID information                                
 p. rssi        set RSSI information                                            
 q. operation   select Configuration or Operation                               
 r. baudrate    select UART baudrate                                            
 s. sleep       select Sleep Mode                                               
 t. sleeptime   set Sleep Wakeup Timer value                                    
 u. power       set Output Power                                                
 v. version     software version                                                
 w. save        save parameters                                                 
 x. load        load default parameters                                         
 y. show        show parameters                                                 
 z. start       Transite Operation                                              
 A. format      set Data Format                                                 
 B. sendtime    set test send interval                                          
 C. senddata    set test send data                                              
 ?. help        help                                                            
LORA >
```

1台目を
node: Coordinator
OWN Node ID: 0x000
Destination ID: 0x001
Operation: Operation

2台目を
node: EndDevice
OWN Node ID 0x001
Destination ID 0x000
Operation: Operation

に設定します。
設定する項目(node,bw,sf等)を打ち込み、Enterキーを押すと
設定値の打ち込みを求められるので、設定値を打ち込みEnterキーを押します。

```
(Destination IDの設定例)
LORA > dstid
  please set Destination ID (0000 - FFFF) > 1
  Destination ID is 0x0001
```
全ての設定が終わったらshowコマンドで設定が正しくされているか確認します。

```
(1台目)
show                                                                            
  configuration setting is below.                                               
  -------------------------------------                                         
  Node                        : Coordinator                                     
  Band Width                  : 125kHz                                          
  Spreading Factor            : 7                                               
  Effective Bitrate           : 5469bps                                         
  Channel                     : 1                                               
  PAN ID                      : 0001                                            
  Own Node ID                 : 0000                                            
  Destination ID              : 0001                                            
  Acknowledge                 : ON                                              
  Retry count                 : 3                                               
  Transfer Mode               : Payload                                         
  Receive Node ID information : ON                                              
  RSSI information            : OFF                                             
  Config/Operation            : Operation                                   
  UART baudrate               : 115200                                          
  Sleep Mode                  : No Sleep                                        
  Sleep Time                  : 50                                              
  Output Power                : 13dBm                                           
  Format                      : ASCII                                           
  Send Time                   : 0                                               
  Send Data                   :

(2台目)
show                                                                            
  configuration setting is below.                                               
  -------------------------------------                                         
  Node                        : EndDevice                                     
  Band Width                  : 125kHz                                          
  Spreading Factor            : 7                                               
  Effective Bitrate           : 5469bps                                         
  Channel                     : 1                                               
  PAN ID                      : 0001                                            
  Own Node ID                 : 0001                                            
  Destination ID              : 0000                                            
  Acknowledge                 : ON                                              
  Retry count                 : 3                                               
  Transfer Mode               : Payload                                         
  Receive Node ID information : ON                                              
  RSSI information            : OFF                                             
  Config/Operation            : Operation                                   
  UART baudrate               : 115200                                          
  Sleep Mode                  : No Sleep                                        
  Sleep Time                  : 50                                              
  Output Power                : 13dBm                                           
  Format                      : ASCII                                           
  Send Time                   : 0                                               
  Send Data                   :
```
設定後、saveコマンドで設定を保存します。
設定保存後、通信を行うためにはstartコマンドを打ち込みます。
データの送信時は送信内容を入力後、Enterキーを押す必要があります。
通信内容は下記のように表示されます(「hogehoge」を送信した場合の例)。

```
(送信側)
hogehoge
<-- send data info[panid = 0001, srcid = 0000, dstid = 0001, length = 08]
(受信側)
--> receive data info[panid = 0001, srcid = 0001, dstid = 0000, length = 08]
Receive Data(hogehoge)
```


## 2回目以降の電源投入～通信
上記の設定が保存できていれば、電源投入直後から通信ができるようになります。
下記の表示が出た場合は再度設定をやり直してください。

```  
select Mode [1.terminal or 2.processor] 
```  

# 動作モードと詳細設定
## ConfigurationとOperation
次回起動時の動作モードを選択します。
Operationを選択した場合、次回起動時は起動直後から通信ができるようになります。
通信を行っている状態(Operation)から設定(Configuration)に入るためには、
「config」と打ちEnterキーを押した後、電源を再投入します。
(一度Configurationモードに入った場合、設定画面内でOperationを再選択しなければ次々回起動時もConfigurationモードに入ることに注意)

## TerminalとProcessor
設定画面・送受信画面の表示/入力方法を指定します。
Terminalは対話形式、Processorはコマンド形式で行います。

この設定だけはConfigurationモード時の設定項目にありません。
Configurationモード電源投入時の選択が次回以降にも反映されます。

Terminalモードで設定しProcessorモードで通信を行うためには、
config
↓
再起動
↓
terminalモードを選択
↓
主目的の設定
↓
save
↓
再起動
↓
processorモードで入る
↓
operationモード設定
↓
save
↓
再起動
という手順を踏む必要があります。

### Terminalモードの表示例
#### 設定画面
コマンドを打つと、対応するオプションが表示されます。

``` 
LORA > rcvid                                                                         
  1. ON                                                                        
  2. OFF                                                             
  select number > 1                                            
  Receive Node ID information is ON.
``` 
#### データ送受信
(データ受信時)受信したデータに加えて、データに関する情報が表示されます。

```
--> receive data info[panid = 0001, srcid = 0001, dstid = 0000, length = 08]
Receive Data(hogehoge)
```

(データ送信時)送信データに関する情報が返されます。

```
hogehoge
<-- send data info[panid = 0001, srcid = 0000, dstid = 0001, length = 08]
```


### Processorモードの表示例
#### 設定画面
コマンド+数字オプションで設定します。

```
rcvid 2                                                                                                                                                     
OK  
```

コマンドのみの場合はNG 002が返されます。

```
rcvid                                                                           
NG 002                                                                          
```

#### データ送受信
(データ受信時)受信したデータがそのまま表示されます。

```
hogehoge                                                                             
```

(データ送信時)送信できた場合はOKが返されます。

```
hogehoge                                                                             
OK
```

## CoordinatorとEndDevice
同一PAN内でCoordinatorが1台、他はEndDeviceに設定するものと思われます。
Coordinatorの場合、OWN Node IDは0にします。
EndDeviceのみがスリープ動作可能です。

## PAN ID/OWN Node ID/Destination ID
- PAN ID(Personal Area Network ID)  
ネットワークを複数設定するためのIDです。
データを送受信する機器同士は同じPAN IDにしておく必要があります。
- OWN Node ID  
自機のID。ネットワーク内で重複しないようにしておく必要があります。
- Destination ID  
データ送信先のOWN Node IDを指定します。

## Formatオプション(ASCIIとBinary)
ASCIIモード時は、改行コード(CR+LF)が打ち込まれたら送信(最大50バイト)を行います。
Binaryモード時は、「送信バイト数(1バイト)+データ部(最大50バイト)」の形式でデータを入力します。
(Xbeeのような透過モードはありません)

## 帯域幅と拡散率
帯域幅を狭く、拡散率を大きくすることで通信距離を伸ばすことができます。
詳細は参考情報を参照してください。
## その他
ヘッダー部を自動生成するかどうか、受信電波強度・送信元/宛先IDを併記するかどうか、スリープ設定などを指定できます。
詳しくは、公式資料を参照してください。

# 参考情報
[公式データシート・説明書](http://easel5.com/download/)
[Raspberry Pi3とArduinoのLoRa通信](https://ambidata.io/examples/lora-2/)
[LoRaの通信距離と信号強度](https://ambidata.io/examples/lora/)