2025. 2. 25. 12:49ㆍ프로그래밍/시스템
🔹 5-1. 데이터 전송 속도 및 신뢰성 분석
LoRaWAN은 장거리 저전력 통신 기술이지만, 환경과 설정에 따라 신호 강도와 데이터 전송 속도가 달라질 수 있습니다.
이 섹션에서는 LoRa 신호 강도(RSSI, SNR) 분석 및 최적화, 데이터 속도에 영향을 주는 SF(Spreading Factor)와 BW(Bandwidth) 조정 실습을 다룹니다.
📌 1. 신호 강도 측정 및 최적화 (RSSI, SNR)
LoRa 통신 품질을 평가하려면 RSSI(수신 신호 강도)와 SNR(신호 대 잡음비) 를 측정해야 합니다.
이 값들은 LoRa 네트워크의 데이터 전송 성공률과 신뢰성을 결정하는 핵심 요소입니다.
✅ 1-1. RSSI (Received Signal Strength Indicator)
- RSSI는 수신 신호의 강도를 나타내는 값 (dBm 단위)
- 값이 작을수록(- 값이 클수록) 신호가 약함
- LoRa RSSI 범위: -30 dBm(강한 신호) ~ -120 dBm(약한 신호)
🔹 RSSI 해석 기준
RSSI 값 | 신호 품질 | 설명 |
-30 ~ -70 dBm | 매우 강함 | 최적의 신호 |
-70 ~ -90 dBm | 중간 | 양호한 신호, 장거리 가능 |
-90 ~ -120 dBm | 약함 | 통신 불안정, 패킷 손실 가능 |
✅ RSSI 최적화 방법
- 안테나 방향을 조정하여 신호 수신 최적화
- 게이트웨이를 장애물 없는 장소(옥상, 탑)로 이동
- LoRa 모듈과 게이트웨이 간 거리를 조절하여 최적 신호 찾기
✅ 1-2. SNR (Signal-to-Noise Ratio, 신호 대 잡음비)
- SNR은 신호와 노이즈(잡음) 간 비율을 측정하는 값 (dB 단위)
- SNR 값이 클수록 신호 품질이 좋음
- LoRa SNR 범위: -20 dB(노이즈 많음) ~ +10 dB(양호한 신호)
🔹 SNR 해석 기준
SNR 값 | 신호 품질 | 설명 |
+5 dB ~ +10 dB | 최적 | 신호 강함, 데이터 전송 신뢰도 높음 |
0 dB ~ +5 dB | 양호 | 안정적인 통신 가능 |
-5 dB ~ 0 dB | 중간 | 패킷 손실 가능성 있음 |
-20 dB ~ -5 dB | 나쁨 | 데이터 전송 실패 가능성 높음 |
✅ SNR 최적화 방법
- 신호 간섭이 적은 환경에서 테스트 진행
- 송수신 모듈 간 거리 조정
- 대역폭(BW)과 확산 계수(SF)를 최적화하여 신호 품질 개선
✅ 1-3. RSSI, SNR 값 측정하기 (Arduino 코드 예제)
아래 코드를 실행하면 LoRa 모듈이 수신한 데이터의 RSSI와 SNR 값을 측정하여 출력합니다.
#include <SPI.h>
#include <LoRa.h>
#define SS 10
#define RST 9
#define DI0 2
void setup() {
Serial.begin(9600);
while (!Serial);
LoRa.setPins(SS, RST, DI0);
if (!LoRa.begin(920E6)) { // 한국 주파수
Serial.println("LoRa 초기화 실패");
while (1);
}
Serial.println("LoRa 초기화 성공");
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
Serial.print("수신된 메시지: ");
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}
Serial.println();
// RSSI 및 SNR 값 출력
Serial.print("RSSI: ");
Serial.println(LoRa.packetRssi());
Serial.print("SNR: ");
Serial.println(LoRa.packetSnr());
}
}
✅ 이 코드를 실행하면, 수신된 LoRa 데이터와 함께 RSSI, SNR 값을 확인 가능
✅ RSSI 값이 -100 dBm 이하로 떨어지면, 신호가 약해 패킷 손실 가능성이 높음
📌 2. 데이터 전송 속도 조정 (SF, BW 실습)
LoRaWAN의 데이터 전송 속도는 SF(Spreading Factor, 확산 계수)와 BW(Bandwidth, 대역폭) 에 의해 결정됩니다.
이 값을 조정하면 전송 거리와 속도를 최적화할 수 있습니다.
✅ 2-1. SF(Spreading Factor, 확산 계수)
- SF 값이 크면 장거리 통신 가능, 하지만 전송 속도는 느려짐
- SF 값이 작으면 빠른 데이터 전송 가능, 하지만 전송 거리가 짧아짐
🔹 SF 값에 따른 전송 속도 및 거리
SF 값 | 전송 속도 | 최대 통신 거리 | 전력 소비 |
SF7 | 매우 빠름 | 짧음 (~2km) | 낮음 |
SF9 | 보통 | 중간 (~5km) | 중간 |
SF12 | 매우 느림 | 최장 (~20km) | 높음 |
✅ 장거리 통신을 원하면 SF12 사용 (단, 속도가 느려짐)
✅ 빠른 데이터 전송을 원하면 SF7 사용 (단, 거리는 짧아짐)
✅ 2-2. BW(Bandwidth, 대역폭)
- BW 값이 크면 전송 속도가 증가하지만, 신호 감도가 낮아짐
- BW 값이 작으면 전송 속도는 감소하지만, 신호 감도가 향상됨
🔹 BW 값에 따른 성능 비교
BW 값 (kHz) | 전송 속도 | 신호 감도 |
500 kHz | 빠름 | 낮음 |
250 kHz | 보통 | 중간 |
125 kHz | 느림 | 높음 |
✅ 도심에서 간섭을 줄이려면 BW 125 kHz 설정
✅ 빠른 데이터 처리가 필요하면 BW 500 kHz 설정
✅ 2-3. SF, BW 조정 실습 코드
아래 코드를 실행하면 SF와 BW 값을 설정하여 LoRa 성능을 조정할 수 있습니다.
#include <SPI.h>
#include <LoRa.h>
#define SS 10
#define RST 9
#define DI0 2
void setup() {
Serial.begin(9600);
while (!Serial);
LoRa.setPins(SS, RST, DI0);
if (!LoRa.begin(920E6)) {
Serial.println("LoRa 초기화 실패");
while (1);
}
LoRa.setSpreadingFactor(10); // SF7 ~ SF12 설정 가능
LoRa.setSignalBandwidth(125E3); // 125 kHz, 250 kHz, 500 kHz 설정 가능
Serial.println("LoRa 초기화 성공");
}
void loop() {
LoRa.beginPacket();
LoRa.print("테스트 메시지");
LoRa.endPacket();
delay(5000);
}
✅ SF와 BW 값을 변경하면서 신호 거리 및 속도 최적화 가능
✅ 환경에 따라 SF와 BW 값을 조정하여 최적의 성능 확보
📌 정리 (데이터 전송 속도 및 신뢰성 분석 요약)
요소 | 역할 | 최적화 방법 |
RSSI | 수신 신호 강도 | 안테나 위치 조정, 장애물 회피 |
SNR | 신호 대 잡음비 | 간섭이 적은 환경에서 통신 |
SF | 확산 계수 | SF7(빠름), SF12(장거리) |
BW | 대역폭 | BW 125kHz(감도↑), BW 500kHz(속도↑) |
✅ RSSI와 SNR을 모니터링하여 신호 품질 최적화
✅ SF와 BW 값을 조정하여 데이터 전송 속도와 거리 최적화
'프로그래밍 > 시스템' 카테고리의 다른 글
LoRa - 6. 실전 프로젝트 - IoT 서비스 구축 (6-1. 스마트 환경 모니터링 시스템) (0) | 2025.02.25 |
---|---|
LoRa - 5. LoRa 데이터 분석 및 최적화 (5-2. 배터리 절약을 위한 저전력 모드 적용) (0) | 2025.02.25 |
LoRa - 4. LoRaWAN 네트워크 구축하기 (4-2. LoRaWAN 기반으로 데이터 전송 실습) (0) | 2025.02.25 |
LoRa - 4. LoRaWAN 네트워크 구축하기 (4-1. LoRaWAN 네트워크 개념) (0) | 2025.02.25 |
LoRa - 3. LoRa 실습 - 기본 통신 구현 (3-1. LoRa 모듈 간 기본 통신) (0) | 2025.02.25 |