Arduino LORA-RFライブラリは、SemTech SX126Xシリーズ、SX127Xシリーズ、またはLLCC68を使用してLORAモジュールを使用したデータの送信および受信に使用されます。ライブラリは、SPIポートといくつかのI/Oピンをインターフェースすることで機能します。周波数、変調パラメーター、送信電力、受信ゲイン、およびその他のRFパラメーターの構成のサポートLORAとFSK変調の両方で、割り込み信号を使用して送信を処理して受信することもサポートします。
このREADMEは、クイックスタートガイド用に書かれています。完全なドキュメントについては、このリンクをご覧ください。
理論的には、SX126Xシリーズ(SX1261、SX1262、SX1268)、SX127Xシリーズ(SX1272、SX1276、SX1277、SX1278、SX1279)、またはLLCC68を使用してLLCK68を使用して、すべてのすべてのLORAモジュールを使用して、この図書館を使用します。 SPIを使用してLORAモジュールにインターフェースしたArduino Lora開発委員会も理論的に互換性があります。
既にテストおよび確認された互換性を確認したLORAモジュールは次のとおりです。
LORAモジュールは、電源とI/Oポートに3.3Vを使用していることに注意してください。 5V ArduinoをLoraモジュールに接続するために注意してください。
Sketchを選択 - > Include Library - > Manage Libraries...LoRaRFを入力します。LoRaRFで行を検索します。Installボタンをクリックして、ライブラリをインストールします。Arduino Libraryフォルダーでターミナル、gitバッシュ、またはコマンドプロンプトを開いてから、次のコマンドを実行します。 WindowsのデフォルトのライブラリフォルダーはC:Users{username}DocumentsArduinoとLinuxの場合は~/Documents/Arduino/libraries/です。
git clone https://github.com/chandrawi/LoRaRF-Arduino.gitライブラリを操作するには、まず使用するLoraモジュールに応じてSX126xヘッダーまたはSX127xヘッダーを含める必要があります。 LLCC68の場合、SX126Xヘッダーを含みます。次に、オブジェクトを作成してヘッダーのクラスを初期化します。
// for SX126x series or LLCC68
# include < SX126x.h >
SX126x LoRa;
// for SX127x series
# include < SX127x.h >
SX127x LoRa;構成メソッドを呼び出す前に、送信または受信操作を実行する必要がありますbegin()メソッドを呼び出す必要があります。 arduino setup() begin() ()メソッドを呼び出すことができます。
void setup () {
LoRa. begin ();
// configuration code goes here
}
void loop () {
// transmit and receive operation goes here
}電源ピン、SPIピン、 RESETピンは、ArduinoとLoraモジュール間で接続する必要があります。 SX126XシリーズとLLCC68の場合、 BUSYも接続する必要があります。割り込み操作を使用する場合は、SX127Xシリーズ用のDIO0およびSX126XシリーズのDIO1 、 DIO2 、またはDIO3 PINの1つを接続できます。また、Loraモジュールにそれらのピンがある場合は、 TXENおよびRXENピンを接続する必要があります。
SX126XとSX127Xへの接続に使用されるデフォルトのArduinoピンは次のとおりです。
| Semtech SX126X | Semtech SX127X | Arduino |
|---|---|---|
| VCC | VCC | 3.3V |
| GND | GND | GND |
| SCK | SCK | SCK |
| 味噌 | 味噌 | 味噌 |
| モシ | モシ | モシ |
| NSS | NSS | 10 |
| リセット | リセット | 9 |
| 忙しい | 4 | |
| dio1 | dio0 | -1(未使用) |
| txen | txen | -1(未使用) |
| rxen | rxen | -1(未使用) |
arduinoデフォルトのSPIポートまたはSPI周波数を変更するには、 begin()メソッドの前にsetSPI()メソッドを呼び出します。
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin();I/Oピン(NSS、リセット、ビジー、IRQ、TXEN、RXEN PIN)を設定するにはbegin()メソッドの前にsetPins()を呼び出します。
// set NSS->10, RESET->9, BUSY->4, DIO1->2, TXEN->8, RXEN->7 for SX126x series
LoRa.setPins( 10 , 9 , 2 , 4 , 8 , 7 );
// set NSS->10, RESET->9, DIO0->2, TXEN->8, RXEN->7 for SX127x series
LoRa.setPins( 10 , 9 , 2 , 8 , 7 );
LoRa.begin();操作を送信または受信する前に、送信電力を構成し、ゲインまたはマッチング周波数、変調パラメーター、パケットパラメーター、および通信したい他のLORAデバイスと同期することができます。
// set transmit power to +22 dBm for SX1262
LoRa.setTxPower( 22 , SX126X_TX_POWER_SX1262);
// set transmit power to +20 dBm for SX127x series using boost pin
LoRa.setTxPower( 20 , SX127X_TX_POWER_PA_BOOST); // set receive gain to power saving
LoRa.setRxGain(LORA_RX_GAIN_POWER_SAVING);
// set receive gain to boosted and AGC on for SX127x series
LoRa.setRxGain(LORA_RX_GAIN_BOOSTED, true ); // Set frequency to 915 Mhz
LoRa.setFrequency( 915000000 ); // set spreading factor 8, bandwidth 125 kHz, coding rate 4/5, and low data rate optimization off
LoRa.setLoRaModulation( 8 , 125000 , 5 , false ); // set explicit header mode, preamble length 12, payload length 15, CRC on and no invert IQ operation
LoRa.setLoRaPacket(LORA_HEADER_EXPLICIT, 12 , 15 , true , false ); // Set syncronize word for public network (0x3444)
LoRa.setSyncWord( 0x3444 );操作を送信することから開始しますbeginPacket()メソッドを呼び出して、 write()メソッドを書き込み、 endPacket()メソッドを呼び出すことで、writeパッケージを書き込み、終了します。たとえば、「Helora World!」を送信するためにメッセージとインクリメントカウンター次のコードを使用できます。
// message and counter to transmit
char message[] = " HeLoRa World! " ;
uint8_t counter = 0 ;
LoRa.beginPacket();
LoRa.write(message, sizeof (message)); // write multiple bytes
LoRa.write(counter++); // write single byte
LoRa.endPacket();
LoRa.wait();送信操作の詳細については、このリンクをご覧ください。
受信操作は、受信パッケージを読むためにread()メソッドを使用するrequest()メソッドを呼び出します。 available()メソッドは、残りのパッケージの長さを取得するために使用できます。たとえば、最後のバイトのメッセージとカウンターを受信するには、次のコードを使用できます。
LoRa.request();
LoRa.wait();
// get message and counter in last byte
const uint8_t length = LoRa.available() - 1 ;
char message[length];
uint8_t i= 0 ;
while (LoRa.available() > 1 ){
message[i++] = LoRa. read (); // read multiple bytes
}
uint8_t counter = LoRa.read(); // read single byte受信操作の詳細については、このリンクをご覧ください。
SX126X、SX127X、および単純なネットワーク実装の例を参照してください。
Chandra wijaya sentosa <[email protected]>