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]>