LoRa - 4. LoRaWAN 네트워크 구축하기 (4-2. LoRaWAN 기반으로 데이터 전송 실습)

2025. 2. 25. 12:49프로그래밍/시스템

🔹 4-2. LoRaWAN 기반으로 데이터 전송 실습

이번 실습에서는 LoRaWAN을 활용하여 데이터를 인터넷 서버로 전송하는 과정을 실습합니다.
LoRaWAN 네트워크에 연결하면 센서 데이터를 클라우드로 전송하고, 웹에서 데이터를 확인할 수 있습니다.


📌 실습 목표

LoRaWAN을 이용하여 데이터를 인터넷 서버에 전송
The Things Network (TTN) 가입 및 설정
LoRaWAN 게이트웨이 설정 및 노드 연결
LoRaWAN 노드에서 데이터를 전송하고 TTN에서 수신 확인


📌 1. 실습 준비물

LoRaWAN 네트워크를 구성하기 위해 아래 장비가 필요합니다.

✅ 필수 장비 목록

1️⃣ LoRaWAN 지원 게이트웨이 (RAK7244, Dragino LPS8, Multitech Conduit 등)
2️⃣ LoRaWAN 지원 노드 (Heltec LoRa, TTGO LoRa32, Arduino + RFM95 등)
3️⃣ 인터넷 연결 (Wi-Fi 또는 Ethernet)
4️⃣ The Things Network (TTN) 계정

LoRaWAN 게이트웨이는 반드시 인터넷에 연결되어 있어야 함
LoRaWAN 노드는 게이트웨이를 통해 네트워크 서버(TTN)로 데이터를 전송


📌 2. The Things Network (TTN) 가입 및 설정

TTN은 무료로 사용할 수 있는 글로벌 LoRaWAN 네트워크로,
LoRaWAN 데이터를 수집하고, 클라우드와 연동할 수 있도록 지원합니다.

✅ TTN 계정 생성 및 애플리케이션 등록

1️⃣ TTN 공식 사이트 접속 후 회원가입
2️⃣ 콘솔(Console)로 이동하여 새로운 애플리케이션(Application) 생성
3️⃣ LoRaWAN 노드 등록 (Device EUI, App EUI, App Key 입력)

  • Device EUI (DevEUI): 노드의 고유 식별 번호
  • Application EUI (AppEUI): 애플리케이션을 구분하는 고유 식별자
  • Application Key (AppKey): 데이터 암호화 키

LoRaWAN 네트워크에 접속하려면 DevEUI, AppEUI, AppKey가 필요함
이 정보는 LoRaWAN 노드에서 설정해야 함


📌 3. LoRaWAN 게이트웨이 설정

LoRaWAN 네트워크를 사용하려면 게이트웨이가 필요합니다.
게이트웨이는 LoRa 데이터를 수신하고, TTN으로 전송하는 역할을 합니다.

✅ 게이트웨이 설정 방법

1️⃣ LoRaWAN 게이트웨이를 인터넷(Wi-Fi, Ethernet)과 연결
2️⃣ TTN 콘솔에서 "Gateways" 메뉴에서 새로운 게이트웨이 등록
3️⃣ 게이트웨이 EUI 입력 (각 장치마다 고유 번호 있음)
4️⃣ 주파수 대역 설정 (한국: 920~923MHz / 유럽: 868MHz / 미국: 915MHz)
5️⃣ 게이트웨이와 TTN 연결 확인 (Status: Connected)

게이트웨이가 정상적으로 TTN과 연결되면 "Connected" 상태로 표시됨
이제 LoRaWAN 노드에서 데이터를 전송하면, 게이트웨이가 이를 TTN으로 중계


📌 4. LoRaWAN 노드 데이터 전송

이제 LoRaWAN 노드를 설정하여 TTN에 데이터를 전송합니다.
이 실습에서는 온도 센서 데이터를 LoRaWAN을 통해 TTN으로 보내는 코드를 작성합니다.

✅ LoRaWAN 노드 코드 (Arduino + LMIC 라이브러리 사용)

아래 코드는 LoRaWAN 네트워크를 통해 TTN으로 데이터를 전송하는 예제입니다.

#include <CayenneLPP.h>  // LoRaWAN 데이터 포맷 라이브러리
#include <lmic.h>        // LoRaWAN 네트워크 라이브러리
#include <hal/hal.h>

// TTN에서 제공받은 DevEUI, AppEUI, AppKey 설정
static const u1_t PROGMEM APPEUI[8] = { /* TTN에서 제공하는 AppEUI */ };
static const u1_t PROGMEM DEVEUI[8] = { /* TTN에서 제공하는 DevEUI */ };
static const u1_t PROGMEM APPKEY[16] = { /* TTN에서 제공하는 AppKey */ };

void os_getArtEui(u1_t* buf) { memcpy(buf, APPEUI, 8); }
void os_getDevEui(u1_t* buf) { memcpy(buf, DEVEUI, 8); }
void os_getDevKey(u1_t* buf) { memcpy(buf, APPKEY, 16); }

// 데이터 전송 함수
void do_send(osjob_t* j) {
  // LoRaWAN 패킷 생성
  CayenneLPP lpp(51);
  lpp.addTemperature(1, 25.5);  // 온도 값 추가 (예: 25.5도)
  
  // LoRaWAN 네트워크로 데이터 전송
  LMIC_setTxData2(1, lpp.getBuffer(), lpp.getSize(), 0);
  Serial.println("데이터 전송 완료");
}

void setup() {
  Serial.begin(9600);
  os_init();
  LMIC_reset();
  do_send(&sendjob);
}

void loop() {
  os_runloop_once();
}

LoRaWAN 네트워크를 통해 TTN으로 온도 데이터를 전송
CayenneLPP 라이브러리를 사용하여 센서 데이터를 효율적으로 인코딩
TTN에서 DevEUI, AppEUI, AppKey를 설정해야 LoRaWAN 네트워크 연결 가능


📌 5. TTN을 통해 데이터 수신 확인

LoRaWAN 노드에서 데이터를 전송하면 TTN 콘솔에서 데이터를 확인할 수 있습니다.

✅ TTN 콘솔에서 데이터 확인 방법

1️⃣ TTN 콘솔의 "Applications" 메뉴에서 등록한 애플리케이션 선택
2️⃣ "Devices" 탭에서 노드의 DevEUI를 선택
3️⃣ "Data" 탭을 클릭하여 수신된 데이터를 확인
4️⃣ 온도 데이터가 정상적으로 수신되었는지 확인

LoRaWAN 네트워크를 통해 데이터가 성공적으로 수신되면 TTN에서 확인 가능
TTN → MQTT, Node-RED, AWS IoT 등과 연동하여 데이터를 활용 가능


📌 6. LoRaWAN 데이터 활용

LoRaWAN을 통해 수집된 데이터를 다양한 클라우드 서비스와 연동하여 활용할 수 있습니다.

✅ 데이터 활용 예시

클라우드 서비스 설명
AWS IoT Core TTN 데이터를 AWS 클라우드로 전송
Node-RED + Grafana 데이터 시각화 및 대시보드 구축
InfluxDB + MQTT 데이터 저장 및 실시간 분석

LoRaWAN을 통해 클라우드 기반 IoT 애플리케이션 개발 가능
Node-RED, AWS, MQTT와 연동하여 데이터 시각화 및 분석 가능


📌 정리 (LoRaWAN 기반 데이터 전송 요약)

단계  설명
TTN 가입 및 설정 The Things Network 계정 생성 및 애플리케이션 등록
게이트웨이 설정 LoRaWAN 게이트웨이를 TTN에 연결
노드 설정 LoRaWAN 노드에서 TTN으로 데이터 전송
TTN 데이터 확인 TTN 콘솔에서 수신된 데이터 확인

LoRaWAN을 사용하여 IoT 데이터를 클라우드로 전송 가능
TTN을 통해 무료로 LoRaWAN 네트워크를 구축 가능
다음 단계에서는 LoRaWAN 데이터를 활용하여 실시간 대시보드를 구축할 예정