[테크월드뉴스=이광재 기자] 이 프로젝트는 시드(Seeed) 로라(LoRa)-E5 기반 아두이노(Arduino) 풍속·풍향 센서를 개발하고 이것을 디지키 본사 건물 지붕에 설치된 웨더 플랫폼(weather platform)에 부착할 수 있도록 실외용 인클로저에 장착하는 과정을 다룬다.
또 센서 노드를 기존 첩스택(ChirpStack) 기반 전용 로라WAN 네트워크와 머신챗(Machinechat)의 JEDI 프로(Pro) IoT 소프트웨어 플랫폼에 추가하는 과정도 포함된다.
로라 센서는 시두이노 샤오(Seeeduino XIAO), 그루브(Grove) 로라-E5 무선 보드, 스파크펀(Sparkfun)의 웨더 측정 키트(Weather Meter Kit)에 포함된 풍속·풍향계 하드웨어를 사용한다.
로라WAN 네트워크는 시드의 IP67 등급 산업용 로라WAN 게이트웨이를 통해 로라 센서 패킷을 시드 리서버(ReServer)(우분투 리눅스 실행)에서 운영되는 전용 첩스택 로라WAN 네트워크 서버로 전달한다. 머신챗의 JEDI 프로 IoT 플랫폼 역시 동일한 리서버에서 실행된다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327557_4514.jpg)
하드웨어
시드 리서버= 리서버는 오디세이 X86 v2 보드를 기반으로 하며 인텔 코어 11세대 i3와 인텔l UHD 그래픽 48EUs로 구동된다.
시스 센트캡(SenseCAP) 실외용 게이트웨이 ‘로라WAN US915MHz’= 센스캡 로라WAN 게이트웨이는 로라WAN 프로토콜을 기반으로 하며 저전력, 장거리 환경 데이터 수집 및 모니터링에 적합하다.
시드 그루브 로라-E5 보드= STM32WLE5JC, SX126x LoRa RF 기반 그루브 플랫폼 평가용 확장 보드다.
시드 시두이노 XIAO 보드= SAMD21G18 기반 시두이노 샤오 시리즈 Arm 코어텍스-M0 MCU 32비트 임베디드 평가 보드다.
스파크펀 웨더 측정 키트= 이 키트는 기상 측정의 3가지 핵심 구성 요소인 풍속, 풍향 및 강우량 센서를 제공한다.(참고: 이 프로젝트에서는 풍속계와 풍향계 센서를 사용한다. 강우계 센서는 향후 게시글에서 다뤄볼 예정이다)
소프트웨어
JEDI 프로 또는 JEDI 프로 SSE= IoT 데이터 수집, 시각화, 모니터링 및 저장을 위한 적응형 소프트웨어로 IoT 솔루션에 통합할 수 있다.
주요 기능은 센서·장치 및 기계로부터 데이터 수집, 직관적인 실시간 및 과거 데이터와 시스템 현황을 보여주는 대시보드 구축, 데이터 상태를 자동으로 모니터링하고 대응하기 위한 규칙 생성, 이메일 및 SMS를 통한 경고 알림 수신 등이다.
JEDI 프로 SSE는 JEDI 프로(리눅스)의 시드 스튜디오 에디션(Seeed Studio Edition) 버전으로 시드의 센스캡 로라WAN 센서 제품군을 위한 데이터 수집기가 추가된 형태다.
첩스택= 첩스택 오픈소스 로라WAN 네트워크 서버 스택은 로라WAN 네트워크를 위한 오픈소스 구성 요소를 제공한다. 모듈식 아키텍처로 기존 인프라에 손쉽게 통합할 수 있다.
아두이노= 아두이노는 사용하기 쉬운 하드웨어 및 소프트웨어를 기반으로 한 오픈소스 전자 플랫폼이다.
배경
이 글은 디지키에서 제공하는 상용 하드웨어와 소프트웨어를 사용해 전용 로라WAN IoT 센서 네트워크를 구현하는 방법을 자세히 설명한 테크포럼(TechForum) 게시물인 ‘머신챗과 시드 센스캡을 활용한 전용 로라WAN 센서 네트워크 구현’을 기반으로 한 후속 프로젝트다.
지난 프로젝트에서 사용된 소프트웨어는 머신챗의 JEDI 프로 소프트웨어와 첩스택 로라WAN 네트워크 서버 응용 프로그램이며 하드웨어는 시드 리서버 x86 서버와 센스캡 실외용 로라WAN 게이트웨이였다.
이번 글에서는 시두이노 샤오, 그루브 로라-E5 보드, 스파크펀 웨더 측정 키트를 구성해 로라WAN 네트워크를 통해 풍속과 풍향을 보고할 수 있도록 설정하는 과정을 다룬다.
스파크펀 웨어 측정 키트 풍속·풍향계= 풍속은 컵 타입 풍속계를 통해 측정되며 이 장치는 회전시 자석을 움직여 회전당 한 번 접점이 닫히도록 설계돼 있다. 초당 한 번의 접점 신호(contact closure)는 풍속 1.492 MPH(2.4km/h)에 해당한다. 이 접점 신호는 풍향계 케이블의 RJ-11 커넥터 내부 두 도체(핀 2와 3)를 통해 감시할 수 있다.
바람의 방향은 풍향계에 있는 8개의 스위치로 결정되며 각 스위치에는 고유한 저항기가 연결돼 있다. 풍향계 내부의 자석은 방향이 바뀔 때마다 서로 다른 스위치 접점이 닫히도록 해 신호를 발생시킨다.
외부 저항기를 사용해 전압 분배 회로를 구성하면 출력 전압을 감시해 풍향계의 위치를 판별할 수 있다. RJ-11 커넥터의 바깥쪽 2개의 핀(핀 1과 4)은 풍향계 신호에 사용된다.
디지키 웨더 플랫폼(Weather Platform)= 디지키의 웨더 플랫폼에 대한 자세한 내용은 해당 링크에서 확인할 수 있다.
구현
이 프로젝트에서는 외부 USB 5V 전원 공급 장치가 시두이노 샤오에 전원을 공급한다. 그리고 샤오의 3.3V 출력이 그루브 로라-E5 보드와 기상 센서 하드웨어에 전원을 공급한다.
샤오의 UART는 그루브 로라-E5의 TX/RX 핀에 연결되고 샤오의 입력 핀 1과 2는 풍속·풍향계에 연결된다.
시두이노 샤오와 로라-E5 보드는 실외용 인클로저(Hammond Manufacturing 제품 번호 RL6225)에 장착되며 +5V 전원과 풍속계와 풍향계는 M8 패널 마운트 커넥터와 케이블 어셈블리를 통해 연결된다.
아두이노 응용 프로그램 코드는 시두이노 샤오에서 실행돼 로라-E5에 AT 명령을 전송하고 입력 핀 1과 2를 감시한다. 이 응용 프로그램은 로라 네트워크에 접속한 뒤 입력 핀을 감시해 풍속과 풍향 데이터를 계산하며 데이터를 CayenneLPP 형식으로 인코딩해 로라를 통해 전송한 후 일정 시간 지연을 거쳐 루프를 반복한다.
아래 회로도는 회로가 연결되고 구현된 방식을 보여준다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327558_4829.png)
모듈과 풍속·풍향커넥터 J1 사이의 전기적 연결은 아래와 같이 표시된다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327559_4938.jpg)
시두이노 샤오와 그루브 로라-E5, 풍속·풍향계 설정
1. 시두이노 샤오에 아두이노를 설정한다.
2. 응용 프로그램에 필요한 라이브러리를 설치한다. 아두이노 라이브러리 관리자를 통해 ‘CayenneLPP’ 라이브러리를 추가한다.
3. 코드 설명(파일명: [Xiao_LoraE5CayenneLPP_WindRev1.ino])
초기 설정
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327560_5031.jpg)
메인 루프-풍속과 풍향을 측정하고 CayenneLPP 형식으로 인코딩해 로라 페이로드 데이터로 전송한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327561_510.jpg)
센서 서브루틴
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327562_5119.jpg)
[Xiao_LoraE5CayenneLPP_WindRev1.ino] 응용 프로그램의 최신 소스 코드는 아래 깃허브(GitHub) 링크에서 확인할 수 있다. (이 파일은 일부 생략됨)
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327563_5137.jpg)
그루브 로라-E5 보드의 디바이스 EUI 확인
아두이노에서 [Xiao_LoraE5CayenneLPP_WindRev1.ino] 코드를 컴파일해 시두이노 샤오에 업로드하고 [Serial Monitor]를 활성화한다. [Serial Monitor] 출력을 확인해 그루브 로라-E5 보드의 [Device EUI]를 확인한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327564_5159.jpg)
로라-E5 기반 센서 노드를 첩스택 로라WAN 네트워크 서버에 추가
노트=이 프로젝트와 다음 단계들은 첩스택 기반 전용 로라WAN 네트워크가 활성화돼 있고 로라-E5 센서 노드의 통신 범위 내에 있는 것을 전제로 한다.
해당 조건이 충족되지 않을 경우 테크포럼 게시글 ‘머신챗과 시드 센스캡(Machinechat과 Seeed SenseCAP)을 활용한 전용 로라WAN 센서 네트워크 구현’을 참조.
1. 첩스택에서 [Device-profiles]을 선택하고 [Create]를 누른다. [Device-profile] 이름은 ‘Seeed LoRaE5’로 지정하고 [LoRaWAN MAC version]에서 [1.0.2]를, [LoRaWAN Regional Parameters version]에서 [A]를 선택한다.
[ADR algorithm]에서는 [Default ADR algorithm]을 누르고 [Uplink interval]에는 ‘3600’을 입력한다. [JOIN(OTAA/ABP)] 탭에서 [Device supports OTAA] 옵션을 체크한다. [CODEC] 탭의 드롭다운 목록에서 [Cayenne LPP]를 선택한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327565_5244.png)
2. 첩스택에서 Applications를 선택하고 Create를 누른다. Application name에 'FarmTest'를, Application description에는 'description'을 입력하고 Service-profile은 'STM32WL'를 선택한다.
그루브 로라-E5 보드의 [Device EUI]를 입력한다(바로 앞 단계 ‘그루브 로라-E5 보드의 디바이스 EUI 확인’에서 확인된 값). [Device-profile]에는 ‘STM32WL Sensors’를 입력한 후 [CREATE DEVICE]를 선택한다.(참고: 초기 테스트 및 데모를 위해 [Disable frame-counter validation] 체크박스를 선택해 프레임 카운터 유효성 검사를 비활성화할 수 있다.)
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327566_531.png)
3. 장치용 [Application key]를 추가한다. [Application key]에 ‘2B7E151628AED2A6ABF7158809CF4F3C’를 입력한다.(참고: 이는 로라-E5의 기본 키다. 변경하려면 로라-E5 AT 명령 사양(Command Specification)의 [KEY] 섹션을 참조한다) 이후 [SET DEVICE-KEYS]를 선택한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327567_5313.png)
JEDI 프로 범용 로라WAN 맞춤형 데이터 수집기와 첩스택 HTTP 통합 설정 및 테스트
첩스택은 로라WAN 메타와 센서 데이터를 지정된 IP 주소로 전달하기 위한 HTTP 통합 기능이 추가되도록 수정됐다. 머신챗의 제네릭(Generic) 로라WAN 커스텀 데이터 콜렉터(Custom Data Collector) 플러그인은 해당 IP 주소에서 데이터를 수신해 로라WAN 데이터를 파싱하고 검토(디버그 모드 시)하거나 JEDI 프로 플랫폼에서 활용할 수 있도록 지원한다.
노트= 커스텀 데이터 콜렉터는 [lorawan-linux.bin] 및 [config.yml] 두 파일로 구성되며 머신챗 지원 사이트에서 다음 링크를 통해 제공된다.
1. 첩스택에서 HTTP 연동을 활성화한다. 첩스택 [Integrations] 화면에서 [Add]를 선택한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327568_5434.png)
2. HTTP 통합 설정
[Payload marshaler]에서 [JSON]을 선택하고 [Endpoint URL]에는 ‘config.yml 파일에 설정된 동일한 IP’를 입력한 후 [ADD INTEGRATION]을 선택한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327569_5451.png)
3. [lorawan-linux.bin] 및 [config.yml] 파일을 우분투 리눅스 미니PC에서 JEDI 프로가 설치된 [~/jedi/plugins] 디렉토리에 복사한다. [config.yml] 파일을 수정해 디버그를 활성화하고 IP 수신 주소를 지정한다.
노트= 기존에 다른 센서용 [lorawan-linux.bin] 및 [config.yml] 파일을 설치한 상태라면 5단계에서 제시된 대로 [config.yml]을 편집해 풍속과 풍향 매개변수 정보를 추가하기만 하면 된다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327570_5516.png)
4. 우분투 리눅스 미니PC 터미널에서 ‘./lorawan-linux.bin ./config.yml’ 명령을 실행해 커스텀 플러그인을 구동하고 출력 결과를 확인한다. 데이터는 아래 예시와 유사하게 표시된다.(참고: [lorawan-linux.bin] 파일에 실행 권한을 부여해야 한다)
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327571_5530.png)
5. [config.yml] 파일을 편집해 로라WAN 데이터를 JEDI 프로 데이터 매개변수에 매핑하고 디버깅을 비활성화한다. 이 예시 프로젝트에서는 [propertyNames]를 편집해 로라WAN cSproperty: ‘anslogOutput.1’이 mcProperty: ‘WindSpeed’에, 로라WAN cSproperty: ‘analogOutput.2’이 mcProperty: ‘WindAngle’에 매핑되도록 설정한다. 디버깅을 비활성화하려면 [setDebug:] 값을 ‘false’로 설정한 다음 파일을 저장한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327572_5613.png)
JEDI 프로 커스텀 데이터 콜렌터 및 데이터 대시보드 설정
JEDI 프로에서 [Settings] 탭을 선택한 다음 [Data Collectors]로 이동해 [Add Collector]를 선택한다.(참고: JEDI 응용 프로그램에 로라WAN 커스텀 데이터 콜렉터가 이미 추가돼 있다면 이 단계는 건너뛸 수 있다)
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327573_5639.png)
아래와 같이 [Collector]를 구성한다. [Data Collector Name]에 ‘LoRaWAN’(또는 원하는 이름)을 입력하고 [Collector Type]에는 [Custom Plug-In]을 선택한다. [Plug-In Executable file]로 [lorawan-linux.bin]을 지정하고 [Plug-in Options]에서 [config.yml] 파일의 위치를 입력한다.(예: /home/scottr/jedi/plugins/config.yml)
[Run As Background Process and Monitor] 체크박스를 선택한 다음 [VALIDATE PLUG-IN]을 선택해 기능을 확인한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327574_5658.png)
JEDI 프로에서 [Data Dashboards]를 선택한 다음 [+]를 눌러 새 차트를 추가한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327575_5710.png)
[WindSpeed]와 [WindAngle] 데이터 차트를 구성한 다음 [Add]를 선택해 [Data Dashboard]에 포함한다.
![[제공=디지키]](https://cdn.epnc.co.kr/news/photo/202509/322355_327576_5723.png)
결론
아두이노, 시두이노 샤오, 로라-E5 무선 모듈, 스파크펀의 기상 측정 키트를 결합해 로라를 통해 풍속 및 풍향 데이터를 제공하는 유연하고 견고한 풍속·풍향 센서 플랫폼을 개발한다.
이후 첩스택의 [HTTP Integration]과 머신챗의 [Generic LoRaWAN Custom Data Collector]를 구성해 풍속·풍향데이터를 JEDI 프로 전송함으로써 IoT 데이터 수집, 시각화, 모니터링 및 데이터 저장이 가능해진다. 예제 코드는 필요에 따라 다른 센서용으로 쉽게 수정할 수 있다.
원문은 DigiKey의 TechForum/Article을 참조하세요!
그래도 삭제하시겠습니까?



