SEMTECH SX126X 시리즈, SX127X 시리즈 또는 LLCC68과 함께 LORA 모듈을 사용하여 데이터를 전송 및 수신하는 데 사용되는 Arduino LORA-RF 라이브러리. 라이브러리는 SPI 포트와 일부 I/O 핀을 인터페이스하여 작동합니다. LORA 및 FSK 변조 모두에서 주파수, 변조 매개 변수, 전송 전력, 게인 수신 및 기타 RF 매개 변수 구성을 지원하면 인터럽트 신호를 사용하여 전송 및 수신을 지원합니다.
이 readme는 빠른 시작 가이드를 위해 작성되었습니다. 전체 문서를 보려면이 링크를 방문하십시오.
이론적으로 SX126X 시리즈 (SX1261, SX1262, SX1268), SX127X 시리즈 (SX1272, SX1276, SX1277, SX1278, SX1279) 또는 LLCC68을 사용하는 모든 LORA 모듈은이 라이브러리를 사용하여 포괄적입니다. LORA 모듈에 SPI를 사용하여 인터페이스 한 Arduino Lora Development Board도 이론적으로 호환됩니다.
이미 테스트하고 확인 된 일부 LORA 모듈은 다음과 같습니다.
LORA 모듈은 전원 공급 장치 및 I/O 포트에 3.3V를 사용합니다. 5V Arduino를 LORA 모듈에 연결하는 데주의해야합니다.
Sketch 선택 -> Include Library -> Manage Libraries...LoRaRF 검색 창에 입력하십시오.LoRaRF 로 행을 검색하십시오.Install 버튼을 클릭하여 라이브러리를 설치하십시오. Arduino 라이브러리 폴더에서 터미널, Git Bash 또는 명령 프롬프트를 열면 다음 명령을 따라 실행하십시오. 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 핀 중 하나를 연결할 수 있습니다. 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 주파수 호출 setSPI() 메소드를 변경하려면 begin() 메소드를 변경합니다.
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin(); I/O PIN (NSS, RESET, BUDY, IRQ, TXEN, RXEN PIN) CALL 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 장치와 동기화 할 수 있습니다.
// 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 ); write ( beginPacket() 메서드가 다음에 따르는 write() 메소드로 writing 패키지를 작성하여 write () 메소드를 따라 calling 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();전송 작업에 대한 자세한 내용은이 링크를 방문하십시오.
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]>