Arduino Lora-RF庫,用於使用SEMTECH SX126X系列,SX127X系列或LLCC68的LORA模塊傳輸和接收數據。圖書館通過接口SPI端口和一些I/O引腳來工作。支持配置頻率,調製參數,傳輸功率,接收增益和其他RF參數在LORA和FSK調製上也支持使用中斷信號處理傳輸和接收。
此讀數是為快速入門指南編寫的。訪問此鏈接以獲取完整的文檔。
從理論上講,使用SX126X系列(SX1261,SX1262,SX1268),SX127X系列(SX1272,SX1272,SX1276,SX1277,SX1277,SX1277,SX1278,SX1278,SX1279),或LLCC68將使用此庫將使用此庫。 Arduino Lora開發委員會使用SPI連接到Lora模塊,也從理論上兼容。
一些已經測試和確認兼容的LORA模塊是:
請注意,Lora模塊使用3.3V用於電源和I/O端口。必須關心將5V Arduino連接到Lora模塊。
Sketch - > Include Library - > Manage Libraries...LoRaRF輸入到搜索框中。LoRaRF一起搜索一排。Install按鈕安裝庫。 Arduino Library文件夾中的開放終端,git bash或命令提示符,然後運行以下命令。 Windows的默認庫文件夾是C:Users{username}DocumentsArduino和Linux的~/Documents/Arduino/libraries/ 。
git clone https://github.com/chandrawi/LoRaRF-Arduino.git要與圖書館合作,首先必須包括SX126x標頭或SX127x標頭,具體取決於您使用的Lora模塊。對於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
}必須在Arduino和Lora模塊之間連接動力引腳,SPI引腳和RESET引腳。對於SX126X系列和LLCC68,還必須連接BUSY別針。如果要使用中斷操作,則可以連接SX127X系列的DIO0 ,而SX126X系列的DIO1 , DIO2或DIO3 Pin之一。如果您的Lora模塊有這些引腳,則還應連接TXEN和RXEN引腳。
用於連接到SX126X和SX127X的默認Arduino引腳如下。
| Semtech SX126X | Semtech SX127X | Arduino |
|---|---|---|
| VCC | VCC | 3.3V |
| gnd | gnd | gnd |
| SCK | SCK | SCK |
| 味o | 味o | 味o |
| 莫西 | 莫西 | 莫西 |
| NSS | NSS | 10 |
| 重置 | 重置 | 9 |
| 忙碌的 | 4 | |
| dio1 | dio0 | -1(未使用) |
| txen | txen | -1(未使用) |
| rxen | rxen | -1(未使用) |
要更改arduino默認的spi端口或spi頻率調用setSPI()方法,請先begin()方法。
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin();要配置I/O引腳(NSS,RESET,忙,IRQ,TXEN,RXEN PIN)呼叫setPins()之前begin()方法。
// 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設備同步Word。
// 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()方法來寫入包,以將其tansmtmmitemant()方法用Cally endPacket()方法結束。例如,傳輸“ 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();有關發送操作的更多詳細信息,請訪問此鏈接。
接收操作以呼叫request()方法以read()方法來讀取接收軟件包。 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]>