2025. 2. 25. 12:48ㆍ프로그래밍/시스템
🔹 3-1. LoRa 모듈 간 기본 통신
LoRa 모듈을 활용하여 두 개의 장치 간 데이터 송수신을 실습합니다.
이 실습을 통해 LoRa를 사용한 기본적인 무선 통신 방법을 이해하고, 장거리 데이터 전송이 어떻게 이루어지는지 배울 수 있습니다.
📌 실습 목표
✅ 두 개의 LoRa 모듈을 이용하여 간단한 데이터 송수신 구현
✅ 송신기(Transmitter) 에서 "Hello, LoRa!" 메시지 전송
✅ 수신기(Receiver) 에서 수신된 메시지를 시리얼 모니터에 출력
📌 1. 실습을 위한 준비물
LoRa 모듈을 직접 연결하여 데이터 송수신을 실습하려면 아래 장비가 필요합니다.
✅ 필수 장비 목록
1️⃣ LoRa 모듈 2개 (예: RFM95, SX1276, Heltec LoRa)
2️⃣ 개발 보드 2개 (예: Arduino Uno, Mega, ESP32 등)
3️⃣ 점퍼 와이어 (SPI 통신용)
4️⃣ USB 케이블 (PC와 Arduino 연결)
5️⃣ Arduino IDE 또는 VS Code + PlatformIO
✅ LoRa 모듈과 Arduino 핀 연결
LoRa 모듈 핀 | Arduino 핀 (SPI 통신) |
VCC | 3.3V |
GND | GND |
SCK | 13 (SPI SCK) |
MISO | 12 (SPI MISO) |
MOSI | 11 (SPI MOSI) |
NSS (CS) | 10 |
RST (리셋 핀) | 9 |
DIO0 (인터럽트 핀) | 2 |
✅ LoRa 모듈은 3.3V 전원을 사용해야 하므로, Arduino의 3.3V 핀에 연결해야 합니다!
✅ SPI 통신을 사용하기 때문에 SCK, MISO, MOSI 핀 연결이 필수적입니다.
📌 2. LoRa 송신기(Transmitter) 코드
아래 코드를 실행하면 "Hello, LoRa!" 메시지를 5초마다 전송합니다.
#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)) { // 한국 주파수 (920~923MHz)
Serial.println("LoRa 초기화 실패");
while (1);
}
Serial.println("LoRa 초기화 성공");
}
void loop() {
Serial.println("메시지 전송: Hello, LoRa!");
LoRa.beginPacket();
LoRa.print("Hello, LoRa!");
LoRa.endPacket();
delay(5000);
}
✅ 이 코드는 5초마다 "Hello, LoRa!" 메시지를 전송합니다.
✅ LoRa.begin(920E6) → 한국의 ISM 대역(920~923MHz)을 사용하도록 설정
✅ LoRa.beginPacket() → LoRa.endPacket() 사이에 전송할 데이터를 작성
📌 3. LoRa 수신기(Receiver) 코드
아래 코드를 실행하면 송신기에서 전송된 "Hello, LoRa!" 메시지를 수신하여 시리얼 모니터에 출력합니다.
#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)) { // 한국 주파수 (920~923MHz)
Serial.println("LoRa 초기화 실패");
while (1);
}
Serial.println("LoRa 초기화 성공");
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
Serial.print("수신된 메시지: ");
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}
Serial.println();
}
}
✅ 송신기로부터 메시지를 수신하면 Serial.print()를 이용해 화면에 출력
✅ LoRa.parsePacket(): 새로운 LoRa 패킷이 도착했는지 확인
✅ LoRa.read(): 수신된 데이터를 한 글자씩 읽어오기
📌 4. 실습 결과 확인 (Arduino 시리얼 모니터)
🔹 송신기 (Transmitter) 출력 결과
LoRa 초기화 성공
메시지 전송: Hello, LoRa!
메시지 전송: Hello, LoRa!
메시지 전송: Hello, LoRa!
...
🔹 수신기 (Receiver) 출력 결과
LoRa 초기화 성공
수신된 메시지: Hello, LoRa!
수신된 메시지: Hello, LoRa!
수신된 메시지: Hello, LoRa!
...
✅ 수신기가 메시지를 정상적으로 받으면 시리얼 모니터에 출력됨
✅ 두 장치가 LoRa 신호를 통해 데이터 송수신이 가능함을 확인
📌 5. LoRa 통신이 안 될 경우 문제 해결 (디버깅)
🚨 1️⃣ 주파수 확인
- LoRa.begin(920E6); → 한국에서는 920~923MHz 범위를 사용해야 함
- 미국(915MHz), 유럽(868MHz) 등 각국 ISM 주파수를 확인하고 설정할 것
🚨 2️⃣ 핀 연결 확인
- SPI 핀(SCK, MISO, MOSI), NSS(10), RST(9), DIO0(2) 핀 연결 확인
- LoRa 모듈은 3.3V 전원을 사용해야 하므로, 5V 전원을 사용하면 손상될 수 있음!
🚨 3️⃣ LoRa 안테나 장착
- LoRa 모듈에 안테나가 연결되지 않으면 송수신 거리가 극도로 짧아질 수 있음
- 안테나 없이 송신하면 모듈 손상 위험
🚨 4️⃣ 거리 및 장애물 영향
- LoRa는 가시선(LOS, Line of Sight)이 확보될 때 최적의 성능을 발휘
- 벽, 건물 등이 많으면 신호 감쇠 발생 → 실외에서 실험 추천
🚨 5️⃣ 코드 오류 확인
- 시리얼 모니터에서 "LoRa 초기화 실패"가 나오면 → 핀 연결 및 주파수 설정 재확인
- 송신기는 정상 작동하는데 수신기에서 메시지가 안 보이면 → 두 장치가 동일한 주파수를 사용 중인지 확인
📌 정리 (LoRa 기본 통신 요약)
단계 | 설명 |
송신기 설정 | "Hello, LoRa!" 메시지를 5초마다 송신 |
수신기 설정 | 송신된 메시지를 수신 후 시리얼 모니터에 출력 |
주파수 설정 | LoRa.begin(920E6); (한국: 920~923MHz) |
필수 확인 사항 | 핀 연결, 주파수 일치, 안테나 장착, 장애물 영향 |
✅ LoRa 모듈 두 개를 이용한 기본적인 데이터 송수신을 구현
✅ Arduino 시리얼 모니터를 통해 메시지가 정상적으로 송수신되는지 확인
'프로그래밍 > 시스템' 카테고리의 다른 글
LoRa - 4. LoRaWAN 네트워크 구축하기 (4-2. LoRaWAN 기반으로 데이터 전송 실습) (0) | 2025.02.25 |
---|---|
LoRa - 4. LoRaWAN 네트워크 구축하기 (4-1. LoRaWAN 네트워크 개념) (0) | 2025.02.25 |
LoRa - 2. LoRa 하드웨어 및 개발 환경 준비 (2-2. LoRa 통신을 위한 소프트웨어 준비) (0) | 2025.02.25 |
LoRa - 2. LoRa 하드웨어 및 개발 환경 준비 (2-1. LoRa 통신을 위한 기본 장비) (0) | 2025.02.25 |
LoRa - 1. LoRa 기초 개념 익히기 (1-3. LoRa의 주요 특징) (0) | 2025.02.25 |