- LoRaWAN에서 노드 간 통신을 위해서는 올바르게 구성된 게이트웨이(주파수, IP 네트워크, 서버)와 TTN에 등록된 정보가 필요합니다.
- 최종 장치는 DevEUI, JoinEUI/AppEUI 및 AppKey(OTAA) 또는 NWKSKEY/APPSKEY/DEVADDR(ABP)을 사용하여 TTN 애플리케이션에 등록됩니다.
- 상용 센서(SenseCAP, Decentlab, Dragino, Tabs) 또는 ESP32/Arduino와 LMIC 라이브러리를 사용하는 DIY 노드를 이용하여 TTN으로 데이터를 전송할 수 있습니다.
- TTN은 LoRaWAN 네트워크에서 수집한 IoT 데이터를 시각화하고 활용하기 위해 Node-RED 및 외부 플랫폼과의 통합을 지원합니다.
여기까지 읽으셨다면, 그 방법을 알고 싶어서일 겁니다. LoRaWAN 노드를 TTN에 엔드투엔드로 연결하는 방법이 책은 게이트웨이, 노드, 센서, 라이브러리, 키, 네트워크 구성 등 모든 것을 다룹니다. 가장 큰 장점은 통신 전문가가 아니어도 된다는 것입니다. 잘 구성된 가이드와 약간의 인내심만 있다면 금세 자신만의 기능적인 LoRaWAN 네트워크를 구축할 수 있습니다.
다음 내용에서 단계별로 그 방법을 확인할 수 있습니다. 게이트웨이를 설정하고, 사물 인터넷(The Things Network)에 등록하고, 애플리케이션과 최종 장치를 등록하고, LoRaWAN 노드를 프로그래밍하세요. ESP32 또는 아두이노 계열 보드는 물론, SenseCAP, Decentlab, Dragino, Tabs Browan 등의 상용 센서를 사용한 예제도 다룹니다. 매뉴얼에서 흔히 찾아볼 수 없는 실용적인 세부 사항, 즉 일반적인 키잉 문제, 주파수 선택, 물리적 핀 연결, 그리고 모든 장치가 TTN과 제대로 통신하는지 확인하는 방법까지 자세히 설명합니다.
LoRa와 LoRaWAN이란 무엇이며, TTN을 사용하는 이유는 무엇입니까?
LoRa와 LoRaWAN은 서로 관련된 개념이지만, 동일한 것은 아닙니다.LoRa는 Semtech에서 개발한 장거리 저전력 무선 주파수 변조 기술입니다. LoRaWAN은 LoRa 기술을 기반으로 최종 장치(노드)가 게이트웨이 및 네트워크 서버와 통신하는 방식을 관리하는 네트워크 프로토콜입니다.
일반적인 LoRaWAN 네트워크에서는 다음과 같은 특징이 있습니다. 두 가지 주요 구성 요소: 게이트웨이와 노드게이트웨이는 LoRa(무선) 세계와 IP(인터넷) 세계를 연결하는 "다리" 역할을 하며, 패킷을 LoRaWAN 서버로 전달합니다. 노드는 LoRa를 사용하여 이러한 게이트웨이와 정보를 주고받는 센서 또는 액추에이터입니다.
이 모든 것을 연결하려면 LoRaWAN 서버가 필요합니다. 민간 서비스(Movistar, Vodafone과 같은 통신 사업자 또는 Loriot, Actility, Kerlink와 같은 플랫폼) 이용료를 지불하세요. 또는 커뮤니티에서 유지 관리하는 공개 개방형 네트워크인 사물 인터넷(TTN)을 사용하는 커뮤니티 방식을 택할 수도 있습니다.
TTN은 다음과 같은 장점을 가지고 있습니다. 데이터 거버넌스를 준수하고, 중립적이며, 네트워크에 게이트웨이를 추가할 수 있도록 지원합니다.많은 도시에서 사람들은 자발적으로 게이트웨이를 설치하며, 노드 하드웨어 비용 외에는 누구나 무료로 이러한 네트워크 서비스를 이용할 수 있습니다.
LoRaWAN 주파수, 채널 및 제한 사항
기기를 구매하기 전에 다음 사항을 명확히 하는 것이 중요합니다. LoRa 주파수는 해당 지역의 주파수와 호환되어야 합니다.유럽에서 일하는 것은 미국이나 아시아에서 일하는 것과는 다릅니다. 잘못된 주파수 대역을 사용하면 기기가 무용지물이 되거나 심지어 불법이 될 수도 있습니다.
유럽에서는 주로 다음과 같은 것들이 사용됩니다. 868MHz 대역(EU868)미국에서 일반적으로 사용되는 주파수 대역은 915MHz(US915)입니다. 중국 상점에서는 다양한 433MHz 모듈을 저렴한 가격에 판매하고 있어 구매를 고려할 만하지만, 이러한 모듈이 LoRaWAN이나 해당 국가의 주파수 대역과 호환되지 않을 수 있습니다.
LoRaWAN은 주파수 외에도 다음과 같은 요소로 구성됩니다. 채널, 확산 계수(SF) 및 주파수 계획SF는 속도와 범위를 나타냅니다. SF 값이 높을수록 범위는 넓어지지만 공중 체공 시간이 길어져 더 많은 에너지를 소모하고 더 많은 채널을 사용하게 됩니다.
유럽에서 유명한 “1% 법칙”각 장치는 무선 채널을 아주 짧은 시간 동안만 점유할 수 있으며, 일반적으로 약 1% 정도입니다. 이는 데이터 전송 빈도를 제한하며, LoRaWAN 센서가 보통 몇 초마다가 아니라 몇 분마다 데이터를 전송하는 이유 중 하나입니다.
게이트웨이 및 노드용 하드웨어 준비 및 선정
실질적인 네트워크를 구축하려면 최소한 다음이 필요합니다. LoRaWAN 게이트웨이와 하나 이상의 노드(센서)LoRaWAN 표준과 동일한 주파수 대역을 준수하는 한, 서로 다른 제조업체의 하드웨어를 함께 사용할 수 있습니다.
실내 게이트웨이에 가장 일반적으로 사용되는 모델 중 하나는 다음과 같습니다. 드라기노 LPS8이 제품은 SX1308 집중기를 통합하고 최대 10개의 병렬 채널을 지원합니다. 국가별로 다른 주파수 플랜이 사전 구성되어 있으며, 유럽에서는 868MHz에서 작동합니다. USB-C를 통해 5V 전원을 공급받고 RJ-45 또는 Wi-Fi를 통해 IP 네트워크에 연결됩니다.
TTN과 잘 어울리는 게이트웨이의 다른 예로는 다음과 같은 것들이 있습니다. RAK7289 (실외용으로 견고하고 LTE/4G 옵션을 갖춘) 또는 도시나 스마트 시티 프로젝트에 커버리지를 구축하도록 설계된 공식 TTN-GW-868MHz 게이트웨이를 사용할 수 있습니다. 또한 다음과 같은 설정도 가능합니다. ESP32 보드와 SX1262 LoRa 모듈을 사용한 단일 셀 게이트웨이Wio-SX1262 키트와 XIAO ESP32S3를 함께 사용하는 경우와 마찬가지입니다.
노드로서 두 가지 경로가 있습니다. LoRaWAN에 맞게 이미 구성된 시중에서 구할 수 있는 센서를 사용하세요. (SenseCAP S210x, Tabs Browan TBHH100, Dragino TrackerD, Decentlab 등)을 사용하거나 TTGO LoRa32 V2.0, ESP32 + RMF95, Arduino + LoRa 모듈 등의 개발 보드를 사용하여 자체 노드를 구축할 수 있습니다.
LoRaWAN 게이트웨이를 구성하고 TTN에 연결하세요.
프로젝트의 첫 번째 주요 단계는 다음과 같습니다. 게이트웨이를 시작하고 TTN에 "연결됨"이 표시되도록 하십시오.각 제조업체마다 자체 패널을 보유하고 있지만, 개념적인 단계는 매우 유사합니다.
예를 들어, 드라기노 LPS8을 사용하면 다음과 같은 작업을 할 수 있습니다. SSH 또는 HTTP를 통해 관리하세요.RJ-45 케이블로 연결하는 경우, DHCP 서버에서 할당한 IP 주소를 확인해야 합니다(IP 스캐너 또는 라우터를 이용). Wi-Fi를 통한 초기 설정을 선호하는 경우, LPS8은 "dragino-xxxxx"와 같은 SSID와 기본 비밀번호 "dragino+dragino"로 자체 네트워크를 생성합니다. IP 주소 10.130.1.1에 접속하면 웹 패널에 접근할 수 있으며, 초기 사용자 이름과 비밀번호는 일반적으로 "admin/dragino"입니다.
입구에 들어서면 여러 섹션으로 구성된 메뉴가 보일 것이며, 다음을 선택할 수 있습니다. 일부 옵션에는 빨간색 십자 표시가 나타나는데, 이는 해당 설정이 누락되었음을 나타냅니다.먼저 LoRa 탭에서 해당 지역에 맞는 주파수 대역을 선택해야 합니다. 유럽의 경우 EU868(약 868MHz)을 선택하세요.
그런 다음 탭을 탭하세요 LoRaWAN 또는 네트워크 서버여기서는 게이트웨이가 연결할 LoRaWAN 서버를 정의합니다. TTN의 경우, 공급자로 "TTN"을 선택하고 유럽 서버 주소(예: eu1.cloud.thethings.network)를 입력합니다. 이때 UDP 포트(일반적으로 업로드 및 다운로드 모두 1700)는 그대로 유지합니다. 같은 섹션에서 게이트웨이 ID(EUI)를 확인할 수 있는데, 이는 나중에 TTN에서 필요합니다.
네트워크 섹션에서 구성합니다. 게이트웨이는 어떻게 인터넷에 연결되나요?LAN, WAN 또는 WiFi WAN 중에서 선택할 수 있습니다. WAN 인터페이스의 경우 고정 IP 주소 또는 DHCP를 선택할 수 있습니다. 안정적인 연결과 손쉬운 관리 접근을 위해 가능한 한 유선 고정 IP 주소를 사용하는 것이 좋습니다. LAN 인터페이스는 일반적으로 게이트웨이의 내부 액세스 포인트 네트워크에 사용됩니다. 문제가 발생할 경우 네트워크 복구에 매우 중요한 역할을 하므로, 설정을 변경하기 전에 관련 지식을 충분히 숙지하는 것이 중요합니다.
와이파이 섹션에서는 다음을 이용할 수 있습니다. 게이트웨이 자체에서 생성된 액세스 포인트와 외부 Wi-Fi 네트워크와의 연결을 모두 조정하십시오.보안을 위해 AP의 기본 SSID와 비밀번호를 공장에서 설정한 대로 변경하는 것이 좋습니다.
RAK7289 게이트웨이에서도 개념은 비슷합니다. 웹 패널에 접속하면, 네트워크 → WAN 인터페이스에서 IP 주소(고정 IP 또는 DHCP)를 구성합니다. 다음으로, LoRa 네트워크 → 네트워크 설정 → 패킷 포워더에서 TTN 서버 정보를 입력하고 게이트웨이 EUI를 기록해 두어 나중에 TTN에 등록할 수 있도록 합니다. DHCP를 제공하는 라우터 뒤에 있는 경우, 임대 테이블(호스트 이름, 예: "RAK7289")을 확인하거나 nmap과 같은 도구를 사용하여 게이트웨이의 IP 주소를 찾을 수 있습니다.
The Things Network의 게이트웨이 등록
게이트웨이가 인터넷에 접속되면 이제 다음 단계로 넘어갈 차례입니다... TTN에 그를/그녀를 등록하세요계정이 없으신 경우, 먼저 The Things Network 웹사이트에 등록하신 후 해당 지역의 콘솔에 접속하세요(예: https://eu1.cloud.thethings.network/).
콘솔 내에서 해당 섹션을 선택합니다. 게이트웨이를 클릭하고 "게이트웨이 등록"을 선택하세요.TTN은 게이트웨이 ID(계정 내 고유 이름)와 게이트웨이 유형에 따라 게이트웨이 EUI를 요청합니다. 기존 패킷 포워더를 사용하는 Dragino LPS8 게이트웨이의 경우 "기존 패킷 포워더를 사용합니다" 옵션을 선택해야 합니다.
또한, 다음 사항을 표시해 주십시오. 주파수 계획 (유럽용 EU868)해당 지역 또는 라우터와 선택적으로 위치 정보(좌표, 실내/실외 등)를 입력합니다. XIAO ESP32S3 및 Wio-SX1262를 사용하는 단일 셀 게이트웨이와 같은 경우, 펌웨어 자체에서 시작 시 시리얼 포트를 통해 게이트웨이 ID를 표시할 수 있습니다. 해당 ID를 복사하여 등록 양식에 사용하십시오.
이 정보를 입력하고 게이트웨이를 등록하면 TTN에서 확인할 수 있는 양식이 표시됩니다. 상태("연결됨" 또는 "연결 끊김") 또한 "트래픽" 섹션에서는 패킷 흐름을 실시간으로 확인할 수 있습니다. 게이트웨이와 TTN 모두 설정이 올바르게 완료되었다면 1~2분 후 상태가 "연결됨"으로 변경되고 노드에서 데이터가 전송될 때 트래픽이 표시되기 시작합니다.
이는 다음을 의미합니다. 인프라 부분(게이트웨이 + 서버)은 이미 가동 중입니다.여기서부터 애플리케이션과 최종 장치의 구성이 중요해집니다.
TTN에서의 애플리케이션 생성 및 노드 등록
TTN에서 기기는 계정의 최상위에 직접 등록되는 것이 아니라, 그 내부에 등록됩니다. 응용 프로그램애플리케이션은 관련 데이터를 전송하는 하나 이상의 노드를 그룹화합니다. 예를 들어 건물의 모든 환경 센서 또는 교육 프로젝트에 사용되는 여러 GPS 추적기를 그룹화할 수 있습니다.
TTN 콘솔에서 해당 섹션에 액세스할 수 있습니다. 지원서 제출 및 새 지원서 생성고유 ID와 선택적으로 설명을 입력하고 적절한 지역을 선택합니다. 해당 애플리케이션 내에서 각 LoRaWAN 노드를 자격 증명(DevEUI, JoinEUI/AppEUI, AppKey 또는 활성화 방법에 따라 다른 키)으로 등록합니다.
상용 센서의 경우 갈색 탭 TBHH100-868 온도 및 습도 센서는 일반적으로 DevEUI, AppEUI 및 AppKey가 적힌 스티커에 부착됩니다. 이러한 센서는 일반적으로 OTAA(Over-The-Air Activation) 방식을 사용하는데, 이 방식은 네트워크에 연결할 때마다 키 세션을 생성하므로 ABP(액세스 기반 프로토콜)보다 보안성이 높습니다.
OTAA를 사용하면 TTN에서 새 최종 장치를 등록하도록 선택할 수 있습니다. JoinEUI(AppEUI), DevEUI 및 AppKey를 소개합니다.데이터를 다시 한번 확인하고 확정합니다. 저장 후, 노드가 올바르게 구성되었고 게이트웨이 범위 내에 있다면 네트워크 비콘을 감지하고 연결 절차를 수행하며, 콘솔에 업링크 메시지와 측정값이 표시되기 시작합니다.
센서에도 동일하게 적용됩니다. 디센트랩 레벨 및 온도제조사는 ID, DevEUI, AppEUI 및 AppKey를 제공하지만, 사용자가 어떤 서버를 사용할지는 미리 알지 못합니다. 센서를 등록하려면 사용자가 TTN(또는 다른 서버)에 이 정보를 등록해야 합니다. 많은 Decentlab 기기는 요청 시 TTN에 사전 등록되어 제공되므로 등록 과정이 더욱 간소화됩니다.
상용 LoRaWAN 센서 구성
구체적인 예를 몇 가지 살펴보겠습니다. 상용 LoRaWAN 센서를 준비하고 등록하세요. 그러면 해당 사용자가 게이트웨이를 통해 TTN과 통신하게 됩니다.
SenseCAP S210x 제품군(예: 환경 센서)에서 일반적인 워크플로는 다음과 같습니다. 제조업체의 SenseCraft 앱먼저 애플리케이션을 다운로드하고 버튼을 눌러 센서를 켜세요(LED가 매초 깜빡일 때까지 몇 초 동안 버튼을 누르고 계세요). 그런 다음 앱에서 "스캔"을 선택하여 기기의 QR 코드를 읽으세요.
앱 내에는 다음과 같은 모드가 있습니다. "고급 구성"에서 플랫폼으로 "The Things Network"를 선택합니다.게이트웨이와 동일한 주파수 플랜(예: EU868)을 선택하고 연결 모드가 OTAA인지 확인해야 합니다. 애플리케이션에 장치 EUI, 앱 EUI(JoinEUI) 및 앱 키가 표시됩니다. 장치 등록 시 TTN에 입력해야 하므로 이러한 정보를 기록해 두는 것이 좋습니다.
의 경우 센서 탭 브로완 TBHH100-868키는 공장에서 사전 구성되어 출고됩니다. 센서는 온도와 습도를 측정하며 3,6V 배터리로 작동하고 다음과 같은 규칙에 따라 데이터를 전송합니다. 변화가 없을 경우 60분마다, 온도가 ±2°C 또는 습도가 ±5% 변화할 경우 더 빨리 전송합니다. 등록하려면 제조사에서 제공하는 APPKey, APPEUI 및 DevEUI를 LoRaWAN 서버(예: TTN)에 입력하기만 하면 됩니다. 간혹 포맷이나 바이트 순서(msb/lsb) 문제가 있을 수 있으므로 처음 연결이 되지 않을 경우 이를 확인하는 것이 중요합니다.
롯 드라기노 트래커D 트래커 이 장치는 비상 버튼이 있는 GPS 추적기로 사용됩니다. 각 장치에는 고유한 LoRaWAN 키 세트가 있습니다. TTN에서는 일반적으로 동일한 애플리케이션(예: "경로 추적")에 등록되며, 필요한 경우 직렬 포트(USB)를 통해 AT 명령어를 사용하여 장치를 구성합니다. 설명서에는 전송 속도, 알람 동작 등을 조정하는 명령어가 자세히 나와 있습니다. 중요: 많은 Dragino 펌웨어는 AT 명령어를 터미널에 문자 단위로 입력하는 것이 아니라 전체를 붙여넣어야 합니다.
센서에서 다음과 같은 것들이 있습니다. 레벨, 압력 또는 환경 분석을 위한 Decentlab기본 철학은 유사합니다. DevEUI, AppEUI 및 AppKey는 TTN(또는 다른 네트워크)에 연결하는 데 사용됩니다. Decentlab은 일반적으로 데이터 소비량과 해상도 간의 최적의 균형을 고려하여 10분 간격으로 데이터를 전송하지만, 요청 시 또는 설정을 통해 변경할 수 있습니다. 사용자는 제조업체의 클라우드 플랫폼에서 데이터를 확인하거나, 적절한 페이로드 디코더를 추가하여 MyDevices, ResIoT, WMW 등과 같은 타사 플랫폼에 장치를 통합할 수 있습니다.
오픈소스 하드웨어를 사용하여 나만의 LoRaWAN 노드를 구축해 보세요.
만약 당신이 이것저것 만지작거리는 걸 좋아한다면, 가장 재미있는 건 대개... LoRaWAN 노드를 직접 구축하고 프로그래밍해 보세요.매우 인기 있는 조합은 TTGO LoRa32 V2.0 868MHz와 같이 LoRa가 통합된 ESP32 기반 보드를 사용하고 DS18B20 온도 센서와 같은 간단한 센서를 추가하는 것입니다.
이 접근 방식에는 네 가지 요소가 필요합니다. 제어 보드(ESP32, 아두이노 등), LoRa 무선 모듈(예: RFM95 SX1276/78 타입), 측정하려는 센서 또한 선택적으로 데이터를 로컬에 표시하기 위한 OLED 화면과 같은 주변 장치를 추가할 수 있습니다.
TTGO LoRa32 V2.0은 통합 LoRa 트랜시버와 버전에 따라 소형 OLED 디스플레이를 갖추고 있습니다. ESP32 기반으로 Wi-Fi와 블루투스 기능을 제공하며, 인터넷에 연결하면 단일 채널 미니 게이트웨이를 구축하는 데에도 적합합니다. 하지만 이 보드와 유사한 보드에서는, LoRa 모듈의 일부 신호(DIO1, DIO2)가 마이크로컨트롤러에 연결되지 않았습니다. 그리고 배선 작업은 직접 하셔야 합니다.
예를 들어, TTGO LoRa32 V2.0에서 일반적으로 사용되는 LoRa 핀 배열은 다음과 같습니다. SCK는 GPIO5, MISO는 GPIO19, MOSI는 GPIO27, CS는 GPIO18, RESET은 GPIO14, DIO0은 GPIO26에 연결됩니다.DIO1과 DIO2는 일반적으로 각각 GPIO33과 GPIO32에 물리적으로 연결되어 있는데, 이 두 핀은 반대쪽 줄에 서로 마주 보고 위치해 있어 직접 점퍼선을 연결하기가 매우 쉽습니다.
이러한 접합부를 만드는 일반적인 방법은 세 가지입니다. 최종 조립을 위해 전선을 핀에 직접 납땜하고, 브레드보드에 회로를 구성한 경우에는 점퍼선을 사용하십시오. 또는 TTGO가 연결되는 맞춤형 PCB에 연결부를 배선할 수도 있습니다. 점퍼 방식은 일반적으로 테스트에 가장 편리합니다.
노드 소프트웨어: LMIC 라이브러리, 주파수 및 TTN 키
아두이노/ESP32에서 LoRaWAN 노드를 프로그래밍하려면 일반적으로 다음 방법이 사용됩니다. MCCI LoRaWAN LMIC 서점LoRaWAN 스택을 구현하고 채널, 참여, 재시도, 수신 윈도우 등과 관련된 모든 것을 관리합니다.
먼저 다음에서 라이브러리를 설치합니다. 아두이노 IDE 라이브러리 관리자 "LMIC"를 검색하고 "MCCI LoRaWAN LMIC 라이브러리"를 선택하세요. 설치 후 중요한 사항이 있습니다. 기본적으로 US915(미국)로 설정되어 있으므로 유럽에 거주하는 경우 EU868로 변경해야 합니다.
그러려면 해당 파일을 찾아보세요. 라이브러리 폴더 안의 lmic_project_config.h (예: /Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/) 경로로 이동하여 정의 파일을 수정하세요. CFG_us915를 주석 처리하고 CFG_eu868을 활성화한 다음, 올바른 무선 모듈 유형(예: SX1276/78 모듈의 경우 CFG_sx1276_radio)을 활성화해야 합니다. 이 변경 사항은 한 번만 적용하면 모든 LMIC 프로젝트에 반영됩니다.
그런 다음 포함된 예제 중 하나를 엽니다. 예를 들어 ttn-abp이 프로그램은 주기적으로 "Hello, world!"를 페이로드로 전송합니다. 이 예시는 사용자의 보드 및 TTN 자격 증명에 맞게 프로그램을 수정하는 데 기초 자료로 활용될 수 있습니다.
코드에서 구조체를 볼 수 있습니다. lmic_pinmap은 NSS(CS), RST 및 DIO 핀을 지정합니다.기본적으로 Feather M0 LoRa에 맞춰 매핑되어 있으므로, TTGO LoRa32 V2.0을 사용하는 경우 .nss = 18, .rst = 14, .dio = {26, 33, 32}로 구조를 변경해야 합니다(DIO1을 GPIO33에, DIO2를 GPIO32에 연결했다고 가정). 하드웨어가 다른 경우 해당 설명서를 참조하거나 특정 예제를 찾아보세요.
핀 배열이 올바르면 재생하세요. TTN에서 노드를 식별하는 키를 구성하세요.ttn-abp 예제에서 NWKSKEY, APPSKEY 및 DEVADDR 변수는 FILLMEIN이라는 단어와 함께 표시되므로 해당 변수에 값을 입력할 수 있습니다.
ABP 활성화를 통해 장치를 생성할 때 TTN 콘솔에서 이 정보를 얻을 수 있습니다. TTN은 다음과 같은 정보를 제공합니다. 네트워크 세션 키(NWKSKEY), 앱 세션 키(APPSKEY) 및 장치 주소(DEVADDR)인터페이스에서는 보안상의 이유로 키가 숨겨져 있지만, 필요에 따라 키를 표시할 수 있으며, 특히 "<>" 버튼을 사용하면 올바른 바이트 순서(MSB)로 값을 C 배열 형식으로 직접 복사할 수 있습니다. 복사 아이콘을 클릭하면 배열이 클립보드에 복사되고, 코드에서 각 FILLMEIN이 있는 위치에 붙여넣기만 하면 됩니다.
NWKSKEY 및 APPSKEY의 경우 다음을 사용합니다. TTN에서 제공하는 바이트 배열 형식DEVADDR의 경우, 16진수 값을 u4_t 타입의 단일 정수로 설정합니다. 예를 들어, `static const u4_t DEVADDR = 0x26011111;`와 같이 설정합니다. 이렇게 하면 노드가 인증을 거쳐 패킷을 TTN 애플리케이션으로 라우팅할 수 있습니다.
노드 코드에 센서를 통합합니다.
LoRaWAN 기본 구조가 작동되면 다음 단계로 넘어갈 차례입니다... 일반적인 "Hello, world!"를 실제 센서 데이터로 대체하세요.TTGO LoRa32와 DS18B20의 예를 계속해서 살펴보면, OneWire 버스와 DallasTemperature 라이브러리를 사용합니다.
스케치 시작 부분에서 헤더를 포함하고 버스 핀을 정의합니다. #포함하다 , #포함하다 그리고 #define ONE_WIRE_BUS X여기서 X는 센서를 연결한 GPIO입니다. oneWire(ONE_WIRE_BUS)를 사용하여 OneWire 객체를 생성하고 DallasTemperature sensor(&oneWire)를 사용하여 센서를 생성합니다. DS18B20 라이브러리가 설치되어 있지 않으면 라이브러리 관리자에서 추가하십시오.
setup() 함수에서 센서를 초기화합니다. sensor.begin()을 호출하고, 원한다면 해상도를 설정할 수도 있습니다(예: sensor.setResolution(11)).그 이후로는 센서가 필요할 때마다 온도를 측정할 준비가 됩니다.
LMIC에서 데이터를 전송하는 핵심 함수는 `do_send(osjob_t* j)`입니다. 이 함수 내부에서는 진행 중인 전송(`OP_TXRXPEND`) 여부를 확인합니다. 전송이 진행 중이 아니면 `sensor.requestTemperatures()`를 호출하여 `sensor.getTempCByIndex(0)`로 값을 가져와 `mydata` 배열에 저장합니다. 예를 들어, `mydata[0] = (uint8_t)sensor.getTempCByIndex(0);`와 같이 정수 부분만 전송할 수 있습니다.
그럼 전화하세요 LMIC_setTxData2(1, mydata, sizeof(mydata), 0)첫 번째 매개변수는 LoRaWAN 포트(이 경우 1), 두 번째는 버퍼, 세 번째는 크기이며, 마지막은 메시지 수신 확인(1) 또는 미확인(0) 여부를 나타냅니다. 라이브러리는 사용 가능한 다음 슬롯에 전송을 예약하는 작업을 처리합니다.
개선할 수 있는 부분은 많습니다. 페이로드를 확장하여 소수 부분을 포함하고, 다른 센서를 추가하고, 데이터를 효율적인 이진 형식으로 패키징합니다.등등. 하지만 이 간단한 버전에서도 이미 주기적으로 실제 측정값을 TTN으로 전송하는 노드가 있으며, 콘솔에서 이를 확인할 수 있고 다른 시스템과 통합할 준비가 되어 있습니다.
OTAA 활성화, 보안 및 실무 경험
지금까지는 주로 코드 예제를 위해 ABP에 대해 이야기했지만, 실제 운영 환경에서는 어떻게 다를까요? OTAA(무선 활성화) 사용을 적극 권장합니다.OTAA는 보안을 강화하기 때문에 Decentlab 센서 및 많은 SenseCAP 센서에서 사용하는 방식입니다.
OTAA와 함께 LoRaWAN 세션 해당 기기가 네트워크에 연결될 때마다 "무선으로" 협상이 진행됩니다.노드가 종료되거나 재시작되거나 연결이 끊어지면 다음에 다시 연결될 때 새 세션 키가 생성되므로 누군가가 정적 키를 복사하는 것만으로 장치를 복제하기 어렵습니다.
TTN 콘솔에서 장치에 대해 OTAA를 선택할 때 고정된 NWKSKEY 및 APPSKEY 대신 다음이 표시됩니다. DevEUI, JoinEUI/AppEUI 및 AppKey세션 키는 이러한 값과 서버와의 교환을 통해 매번 생성되며, 세션이 지속되는 동안에는 생성된 키만 볼 수 있습니다.
실제로 LoRaWAN을 처음 접하는 사용자들은 다음과 같은 사실을 발견했습니다. TTN에 등록된 게이트웨이와 올바르게 구성된 OTAA 센서가 있으면 등록 절차는 매우 간단합니다.TTN에 계정을 생성하고, 게이트웨이를 활성화하고, 제조업체에서 제공한 키를 사용하여 센서를 등록하면 몇 분 안에 웹 플랫폼(Decentlab 자체 플랫폼, SenseCAP 또는 타사 대시보드)에서 데이터를 확인할 수 있습니다.
다음과 같은 요인 LoRa 센서 박스 위치 (내부 안테나의 방사 패턴에 유리하도록 수직으로 배치하는 것이 가장 좋습니다.)무선 환경과 게이트웨이 높이는 실제 커버리지에 큰 영향을 미치지만, 구성 과정은 일단 이해하고 나면 상당히 기계적입니다.
TTN에서 애플리케이션까지: 통합 및 시각화
이제 노드들이 TTN에 데이터를 업로드하고 있으므로 다음 단계는 다음과 같습니다. 해당 정보를 여러분의 애플리케이션, 대시보드 또는 자동화 워크플로에 통합하세요.TTN은 이를 위한 통합 기능과 매우 강력한 API를 제공합니다.
널리 사용되는 접근 방식은 다음과 같습니다. Node-RED를 사용하여 TTN에서 데이터를 수신하고 원하는 대로 처리합니다.TTN 애플리케이션 자격 증명을 사용하여 MQTT 또는 HTTP 연결을 구성하고, 센서 형식에 따라 페이로드를 디코딩하면 데이터베이스 저장, 그래프 표시, 알림 트리거 등 거의 모든 작업을 수행할 수 있습니다.
또 다른 옵션은 사용하는 것입니다 TTN과 이미 통합된 타사 플랫폼Datacake, MyDevices, ResIoT, WMW 등과 같은 플랫폼이 있습니다. 이들 중 상당수는 Decentlab 센서나 일부 Dragino 모델과 같은 장치에 대한 특정 템플릿을 이미 제공하고 있으므로 장치 유형을 선택하고 TTN 애플리케이션에 연결한 다음 "사용자 친화적인" 대시보드에서 데이터를 바로 확인할 수 있습니다.
예를 들어 교육 프로젝트에서 TTN은 다음과 함께 사용되었습니다. RAK7289 게이트웨이 및 Dragino TrackerD 트래커 사람이나 차량의 위치를 파악하는 데 사용됩니다. 워크플로는 다음과 같습니다. 게이트웨이를 등록하고, TTN에 추적기를 등록한 후, 콘솔에서 데이터를 확인하고, 위치, 배터리 잔량 등의 지도와 그래프가 포함된 Datacake 공용 대시보드에 실시간으로 표시됩니다.
중요한 것은 그것을 이해하는 것입니다 TTN은 LoRaWAN 네트워크 계층 및 데이터 라우터 역할을 합니다.API를 사용하는 파이썬 스크립트부터 산업용 IoT 데이터 플랫폼에 이르기까지, 애플리케이션 및 시각화 레이어는 사용자가 직접 결정할 수 있습니다.
요약하자면, LoRaWAN 노드를 TTN에 연결하는 과정은 여러 단계를 거칩니다(올바른 주파수 설정, 게이트웨이 구성, TTN 등록, 노드 키 설정, OTAA 또는 ABP 활성화, 장치 소프트웨어 설치, 그리고 필요한 경우 추가 통합 작업). 하지만 올바른 지침을 따르면 사전 경험이 없더라도 각 단계를 충분히 관리할 수 있습니다. 초기 설정이 완료되면, 노드나 게이트웨이를 추가로 배포하는 과정은 반복적이고 확장성이 뛰어나 대규모 센서 프로젝트, 스마트 시티 구축, 또는 장거리 IoT 학습 및 실험에 적합합니다.
목차
- LoRa와 LoRaWAN이란 무엇이며, TTN을 사용하는 이유는 무엇입니까?
- LoRaWAN 주파수, 채널 및 제한 사항
- 게이트웨이 및 노드용 하드웨어 준비 및 선정
- LoRaWAN 게이트웨이를 구성하고 TTN에 연결하세요.
- The Things Network의 게이트웨이 등록
- TTN에서의 애플리케이션 생성 및 노드 등록
- 상용 LoRaWAN 센서 구성
- 오픈소스 하드웨어를 사용하여 나만의 LoRaWAN 노드를 구축해 보세요.
- 노드 소프트웨어: LMIC 라이브러리, 주파수 및 TTN 키
- 노드 코드에 센서를 통합합니다.
- OTAA 활성화, 보안 및 실무 경험
- TTN에서 애플리케이션까지: 통합 및 시각화