라즈베리 파이 3에 RAK831 모듈로 LoRa 게이트웨이 구축하기 - 단계별 가이드
소개
커스텀 LoRa 게이트웨이를 만들고 싶은 개발자를 위한 튜토리얼입니다. 라즈베리 파이 생태계, GPIO 핀, 데비안 기반 OS에 대한 기본 지식이 있다고 가정합니다.
LoRa란 무엇인가?
LoRa 얼라이언스 기술로 구동되는 LoRaWAN은 배터리 구동 IoT 디바이스를 지역·국가·글로벌 규모로 지원하는 저전력 광역 네트워크(LPWAN) 규격입니다. LoRaWAN은 안전한 양방향 통신, 이동성, 위치 서비스를 제공해 현대 IoT 배포의 핵심 요구사항을 충족합니다.
LoRa 기술과 LoRaWAN 프로토콜의 주요 특징
- 위치 추적: GPS 없이 저전력으로 이동 자산 추적 가능
- 저비용: 인프라, 운영비, 센서 비용 절감
- 표준화: 글로벌 상호운용성으로 도입 가속화
- 저전력: 최대 20년까지 가는 배터리 수명 설계
- 긴 거리: 단일 베이스 스테이션으로 시골 지역 30마일(약 48km) 도달, 밀집 도심·실내 환경에서도 관통
- 보안: 내장 AES-128 엔드투엔드 암호화
- 대용량: 베이스 스테이션당 수백만 메시지 처리, 공공 네트워크 운영자에 적합
RAK 831은 LoRa 무선 프론트엔드입니다. 수신한 LoRa 패킷을 호스트 시스템(예: 라즈베리 파이 3)으로 전달하고, 호스트로부터 전송 지시를 받아 패킷을 송신합니다. 본 가이드에서는 라즈베리 파이가 RAK 831을 제어하는 호스트 보드 역할을 합니다.
백홀(Backhaul) 선택
백홀은 라즈베리 파이를 외부 네트워크와 연결하는 인터넷 회선입니다. 본 가이드는 Wi-Fi를 다루지만 이더넷이나 3G/4G도 대안입니다. 이더넷 포트가 있다면 추가 무선 신호로 인한 엔클로저 내 노이즈를 없앨 수 있어 권장됩니다. 소프트웨어로 보완 가능하지만 깨끗한 링크가 신뢰성을 높입니다. Wi-Fi 사용 시 외부 안테나 달린 동글을 쓰고 안테나를 엔클로저 밖에 두세요.
하드웨어 설정
전원 투입 전 라즈베리 파이와 RAK 831을 다음과 같이 구성하세요.
라즈베리 파이
- 라즈베리 파이 3 준비, 8GB 마이크로SD에 라즈베리 파이 OS(구 라즈비안) 플래싱. 사전 로드된 'Noobs' 카드 구매 또는 공식 가이드 참고
- 5V 2A 전원 어댑터 연결. RAK 831이 피크 전송 시 최대 700mA 소모하므로 든든한 전원 필수
RAK 831
- 키트에 포함된 안테나를 나사 단자에 연결 - 필수 단계
연결 상세
다음 표는 RAK 831을 라즈베리 파이 3에 배선하는 방법을 보여줍니다. 파이 핀아웃은 공식 문서 참조.
참고사항
- 리셋 핀은 사용 가능한 임의 GPIO에 연결 가능
- 전원 핀 배선 시 RAK 831 손상 방지 위해 반드시 확인
SPI 활성화
SPI 인터페이스는 기본 비활성화 상태입니다. 다음으로 활성화:
sudo raspi-config 실행
Advanced Options → SPI 이동, SPI 활성화와 커널 모듈 로드에 Yes 선택
- Finish 후 재부팅
재부팅 후 인터페이스 확인:
> ls /dev/*spi*
/dev/spidev0.0 /dev/spidev0.1
칩 인에이블 핀 0, 1용 SPI 디바이스입니다.
보드 전원 공급 옵션
무선 모듈은 파이 전원 핀이 공급할 수 있는 전력보다 많이 소모하는 경우가 많습니다. 두 가지 옵션:
- 파이의 5V 레일로 두 기기 모두 구동
- 파이와 RAK 831에 별도 5V 레일 공급
소프트웨어 설치
라즈베리 파이에서 다음 단계 수행:
- SPI 활성화(위 참조) 및 파일시스템 확장(
Advanced options → Expand filesystem)
- 시스템 업데이트 및
git 설치:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
- Wi-Fi 설정:
/etc/wpa_supplicant/wpa_supplicant.conf 편집
network={
ssid="당신_WiFi_SSID"
psk="당신_WiFi_비밀번호"
}
- 설치 프로그램 클론 및
spi 브랜치로 실행:
git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway
cd ~/ic880a-gateway
sudo ./install.sh spi
- 설치 중 원격 설정 활성화 옵션 선택 가능. 게이트웨이 EUI가 표시되니 메모해 두세요.
원격 설정을 선택했다면 게이트웨이 EUI 이름으로 JSON 파일(예: B827EBFFFE7B80CD.json)을 gateway-remote-config 저장소에 생성하세요. 포크 후 파일 추가, 커밋, 풀 리퀘스트 제출. 샘플 설정:
{
"gateway_conf": {
"gateway_ID": "당신_게이트웨이_EUI",
"servers": [
{ "server_address": "당신_라우터_주소",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true }
],
"ref_latitude": 당신의_위도,
"ref_longitude": 당신의_경도,
"ref_altitude": 40,
"contact_email": "your_email@example.com",
"description": "짧은 설명"
}
}
유효 서버 주소 목록은 The Things Network 위키 참조.
기본적으로 설치 프로그램이 파이 호스트명을 ttn-gateway로 변경해 충돌 방지. 원하면 커스텀 이름으로 덮어쓰기 가능. 설치 후 다음 날 재부팅해 JSON 파일이 정확히 다운로드되도록 하세요.
global_config.json 필요시 조정. 미국 배포 시 US-global_conf.json 편집. mp_pkt_fwd 포워더 선호 시 해당 저장소 지침 따라 컴파일 후 global_conf.json을 bin 폴더에 복사.
global_conf.json의 주요 설정 항목
설치 후 ./bin/global_conf.json에 다음 섹션 포함, 필요시 조정:
- 무선 설정(
radio_0 또는 radio_1) - Frequency 및 최소/최대 스윕 파라미터 조정
- 게이트웨이 식별 -
gateway_ID 또는 게이트웨이 EUI 업데이트
- 서버 포트 -
serv_port_up, serv_port_down을 서버 주소와 함께 수정
이 단계를 완료하면 RAK 831 LoRa 게이트웨이가 선택한 백홀로 데이터를 송수신하며 완전히 작동합니다.