2025. 2. 25. 12:49ㆍ프로그래밍/시스템
🔹 7-1. LoRa Mesh 네트워크
LoRa는 일반적으로 스타(Star) 네트워크 구조를 사용하는 LoRaWAN을 통해 데이터를 전송합니다.
그러나 일부 환경에서는 게이트웨이 없이 노드 간 직접 통신이 필요할 수 있습니다.
이를 해결하기 위해 등장한 것이 LoRa Mesh 네트워크입니다.
📌 1. LoRa Mesh 개념 및 기존 LoRaWAN과의 차이점
✅ 1-1. LoRa Mesh 네트워크란?
LoRa Mesh 네트워크는 LoRa 노드들이 서로 직접 통신하며 데이터를 중계할 수 있는 네트워크 구조입니다.
즉, 노드(Node) 간 직접 데이터를 전달하며, 여러 홉(Hop)을 통해 최종 목적지까지 전송할 수 있는 방식입니다.
🔹 LoRa Mesh 네트워크 특징
- 게이트웨이 없이 노드 간 직접 데이터 전송 가능
- 각 노드가 중계 역할(Relay)을 수행하여 커버리지를 확장
- 도심지 및 지형 장애물이 있는 지역에서 유리
- 긴급 재난망, 산악 지역 센서 네트워크, 군사 및 원격 통신에 활용
✅ 1-2. LoRaWAN vs LoRa Mesh 비교
비교 항목 | LoRaWAN | LoRa Mesh |
네트워크 구조 | 스타(Star) 방식 | 메시(Mesh) 방식 |
통신 방식 | 노드 → 게이트웨이 → 서버 | 노드 간 직접 통신 및 중계 가능 |
인터넷 연결 | 게이트웨이 필요 | 게이트웨이 없이 네트워크 가능 |
확장성 | 게이트웨이 범위 내에서만 가능 | 다중 홉(Hop)으로 확장 가능 |
사용 사례 | 스마트 시티, 산업 IoT, 환경 모니터링 | 원격 지역, 재난망, 군사 통신 |
✅ LoRaWAN은 인터넷 연결이 가능하지만, 게이트웨이가 필수
✅ LoRa Mesh는 게이트웨이 없이도 데이터 중계 가능하여 원격 지역에 유리
📌 2. LoRa Mesh 기반 프로젝트 예제
LoRa Mesh 네트워크를 구축하려면 메시 프로토콜(Ad-hoc, Flooding, AODV, LoRa-Mesh Library 등)을 활용하여 노드 간 통신을 구성해야 합니다.
✅ 2-1. LoRa Mesh 네트워크 시나리오
예제에서는 3개의 LoRa 노드(A, B, C)가 서로 중계하면서 데이터를 전달하는 방식을 구현합니다.
[노드 A] → [노드 B (중계)] → [노드 C]
✅ 노드 A가 데이터를 전송하면, 노드 B가 이를 받아 노드 C로 전달
✅ LoRa Mesh 방식으로 장애물을 우회하여 데이터 전송 가능
✅ 2-2. LoRa Mesh 네트워크 코드 예제 (Arduino + LoRa 라이브러리 사용)
아래 코드는 LoRa 노드들이 메시지를 송수신하고, 중계(Relay) 기능을 수행하는 예제입니다.
🔹 노드 A (데이터 송신 노드) 코드
#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 Mesh - 노드 A (송신기)");
}
void loop() {
Serial.println("노드 A: 메시지 전송");
LoRa.beginPacket();
LoRa.print("A->B->C: 메시지");
LoRa.endPacket();
delay(5000); // 5초마다 메시지 전송
}
✅ 노드 A는 일정 간격으로 데이터를 전송
🔹 노드 B (중계 노드) 코드
#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 Mesh - 노드 B (중계기)");
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
Serial.print("노드 B: 메시지 수신 및 중계 → ");
String received = "";
while (LoRa.available()) {
char c = (char)LoRa.read();
received += c;
}
Serial.println(received);
// 메시지를 노드 C로 다시 전송 (중계 역할)
LoRa.beginPacket();
LoRa.print(received);
LoRa.endPacket();
}
}
✅ 노드 B는 수신된 데이터를 읽고 노드 C로 중계
🔹 노드 C (데이터 수신 노드) 코드
#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 Mesh - 노드 C (수신기)");
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
Serial.print("노드 C: 메시지 수신 → ");
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}
Serial.println();
}
}
✅ 노드 C는 최종적으로 데이터를 수신하여 출력
📌 3. LoRa Mesh 네트워크의 장점과 한계
✅ LoRa Mesh 네트워크 장점
1️⃣ 게이트웨이 없이도 장거리 통신 가능
2️⃣ 장애물 우회 가능 (빌딩, 산악 지역에서도 활용 가능)
3️⃣ 노드 간 데이터 중계로 네트워크 확장 가능
4️⃣ 산불 감시, 긴급 재난망, 원격 지역 통신에 유리
❌ LoRa Mesh 네트워크의 한계
1️⃣ 전력 소모 증가 (노드가 중계 역할을 수행해야 하므로 배터리 사용량 증가)
2️⃣ 데이터 전송 속도 느림 (Hop이 많아질수록 지연 시간 증가)
3️⃣ 충돌(Interference) 가능성 증가 (다수의 노드가 중계 시 데이터 충돌 위험)
✅ 배터리 최적화를 위해 Sleep 모드 적용 필요
✅ Hop 수를 제한하여 데이터 충돌 방지
📌 정리 (LoRa Mesh 네트워크 요약)
항목 | 설명 |
LoRa Mesh 개념 | 노드 간 직접 데이터를 중계하여 네트워크 구성 |
LoRaWAN과 차이점 | LoRaWAN은 게이트웨이 필요, Mesh는 게이트웨이 없이 노드 간 통신 가능 |
프로젝트 예제 | 3개 노드(A, B, C) 간 메시지 전송 및 중계 구현 |
장점 | 게이트웨이 없이도 장거리 통신 가능, 장애물 회피 가능 |
한계 | 배터리 소모 증가, 데이터 충돌 및 속도 저하 가능 |
✅ LoRa Mesh는 원격 지역이나 긴급 재난망 구축에 매우 유용
✅ 저전력 설정(Sleep 모드)과 Hop 제한을 통해 최적화 가능
'프로그래밍 > 시스템' 카테고리의 다른 글
LoRa - 8. 마무리 및 실전 응용 (0) | 2025.02.25 |
---|---|
LoRa - 7. LoRa 기술 심화 학습 (7-2. LoRa를 활용한 특수 사례) (0) | 2025.02.25 |
LoRa - 6. 실전 프로젝트 - IoT 서비스 구축 (6-1. 스마트 환경 모니터링 시스템) (0) | 2025.02.25 |
LoRa - 5. LoRa 데이터 분석 및 최적화 (5-2. 배터리 절약을 위한 저전력 모드 적용) (0) | 2025.02.25 |
LoRa - 5. LoRa 데이터 분석 및 최적화 (5-1. 데이터 전송 속도 및 신뢰성 분석) (0) | 2025.02.25 |