E32-TTL-100 SX1278 LoRAモジュール

今日、市場に出回っているLoRaモジュールを手に入れることができた。私のはE32-TTL-100モジュールで、SemtechのSX1278をベースにしていると言われている。モジュールの仕様は以下の通り:

  • モジュールサイズ:21*36mm
  • アンテナタイプ:標準SMAアンテナ(無料)
  • 電源:DC2.3V~5.5V
  • 通信レベル:5.2V(最大)
  • 伝送距離:3000m(最大)
  • 最大出力:2dB(100mW)
  • 通信速度:2.4Kbps
  • 放出電流: 130mA @ 100mW
  • 受信電流:13.5mA @モード0、モード1
  • スリープ電流:2.0uA(M1=1,M1=0)
  • 放出長: 256 バイト
  • 受信長:256バイト
  • 通信インターフェース:UART
  • RSSIサポート:あり
  • 働く頻度: 410MHz-441MHz (デフォルト 433MHz)
  • 実用温度: -30 か ~+85 か。
  • 受信感度: -130dBm @ 1.2Kbps

通信距離は3km!非LOS(見通し線)でこれが可能かどうかは疑問だが、見てみよう。

モジュールのピンは7本:

E32-TTL-100 SX1278 LoRa Module

UARTベースなので、RXD、TXD(もちろんVCCとGNDも)は自明だと思う。M0、M1、AUXピンの説明をしよう。

モードの設定

M0とM1は、モジュールのモードを設定するために使われる。ノーマル、ウェイクアップ、パワーセーブ、スリープの4つのモードがある。以下に便利な表を示す:

モード M1 M0 説明
Normal 0 0 UART とワイヤレス・チャネルは問題なし
Wake-Up 0 1 ノーマルと同じだが、送信データにプリアンブルコードが付加され、レシーバーをウェイクアップする。
Power-Saving 1 0 UARTは無効、無線はWOR(Wake On Radio)モード。送信は許可されません
Sleep 1 1 パラメータ設定に使用されます。送受信はできません。

AUX 端子

AUX ピンは、データが送信されたかどうか、またはデータが受信されたかどうかを確認するためのフラグとして機能します。また、電源投入時やスリープ・モードからの復帰時に、モジュールがセルフ・チェック中であるかどうかを確認するためにも使用されます。

モジュールがアイドル状態の時、AUXピンはハイ・レベルを維持します。データが送信される場合、AUXピンは送信バッファにデータが送信される2~3ms前にLowになります。送信バッファがクリアされると(すなわち、データがワイヤレスで送信されると)、AUX ピンはハイに戻ります。同様に、受信バッファにデータがあると、AUXピンはローになります。

AUXピンの論理状態を以下にまとめます:

パラメータ設定

前述のように、モジュールがスリープ・モード(M0=M1=1)にあるとき、ボーレート、UART フォーマットなど、いくつかのオプションを変更できます。パラメータを変更するコマンドは、9600ボー、8N1で送信する必要があります。

パラメータを変更するためのフォーマットは、0xC0/0xC2 ADDH ADDL SPED CHAN OPTION です。パラメータを EEPROM に保存する場合は、0xC0 を使用する。それ以外は 0xC2 を使用する。残りは、以下の可能な値のバイトである:

Item 説明 備考
ADDH モジュール・ハイ・アドレス・バイト(デフォルトは 00h)
ADDL モジュール・ロー・アドレス・バイト(デフォルトは 00h)
SPED UART ボー・レートとエア・データ・レート 以下のビット説明を参照してください。
CHAN 動作周波数(410~441MHz に対応する 0x00~0xFF デフォルトは 0x17~433MHz)
OPTION その他のオプション 以下のビット説明を参照してください。

SPED ビットの説明

Bit 7 and 6 Bit 5, 4, 3 Bit 2, 1, 0
UART Parity UART Baud Rate Air Data Rate
00:8N1(default)
01:8O1
10:8E1
11:8N1(equal to 00)
000:1200bps001:2400bps

010:4800bps

011:9600bps(Default)

100:19200bps

101:38400bps

110:57600bps

111:115200bps

000:0.3kbps001:1.2kbps

010:2.4kbps(Default)

011:4.8kbps

100:9.6kbps

101:19.2kbps

110:19.2kbps(equal to 101)

111:19.2kbps(equal to 101)

OPTION ビット説明

Bit 7 Bit 6 Bit 5,4,3 Bit 2 Bit 1 and 0
Fixed Transmission I/O Drive Mode Wireless Wake-up Time FEC (Forward Error Correction) Switch Transmission Power
0: transparent transmission (default)1: fixed transmission (first three bytes can be used as high/low address and channel) 0: TXD, RXD, AUX are open-collectors1: TXD, RXD, AUX are push-pulls/pull-ups 000:250ms(default)001:500ms

010:750ms

011:1000ms

100:1250ms

101:1500ms

110:1750ms

111:2000ms

0:Turn off FEC1:Turn on FEC(Default) 00: 20dBm(Default)01: 17dBm

10: 14dBm

11: 10dBm

例えば、UARTボーレートを115200、8N1モード、エアデータレートを19.2kbps、動作周波数をデフォルトの433MHz、送信モードを固定、プッシュプル端子、ウェイクアップ時間を250ms、FECをオン、送信電力を20dBmに変更したいとします。M0とM1を設定し、UARTを通して以下のデータを送信する:

現在のオプションを読み出すには、次のコマンドを送信します:

これはバージョン番号を読み取るためのものです:

モジュールをリセットする:

Bob Chan氏は、E32-100 LoRaモジュールをArduinoで使用するためのスケッチ例を作成しました。ライブラリーは彼のgithubリポジトリで入手可能です。彼のライブラリでは、私が説明したようにパラメータを変更することができる。

上記のライブラリを使うには、以下のように接続する:

UNO/NANO(5V MODE) E32-TTL-100
D7 M0
D8 M1
A0 AUX
D10(Rx) 4.7k Ohm Tx
D11(Tx) 4.7k Ohm Rx

応用例

このチュートリアルがお役に立てば幸いです。ご質問があれば、以下にコメントをお寄せください。

参考文献