2025. 2. 10. 16:07ㆍ프로그래밍/시스템
3장: 무선 시리얼 통신 (블루투스, LoRa) 및 추가 학습 자료 안내
무선 시리얼 통신은 물리적인 배선 없이 데이터를 전송할 수 있는 편리한 방식입니다.
특히 블루투스(Bluetooth)와 LoRa(Long Range) 기술은 RS-485 또는 RS-232를 대체할 수 있는 무선 통신 방식으로 활용됩니다.
이번 장에서는 블루투스를 이용한 근거리 무선 시리얼 통신, LoRa를 활용한 장거리 통신, 그리고 추가 학습 자료를 안내합니다.
1. 블루투스(Bluetooth) 기반 무선 시리얼 통신 실습
✅ 블루투스를 이용한 무선 시리얼 통신 개념
블루투스는 근거리 무선 통신(약 10~100m 범위) 에서 UART(시리얼) 데이터를 전송할 수 있도록 지원하는 프로토콜입니다.
HC-05, HC-06 같은 블루투스 모듈을 활용하면 유선 시리얼 통신을 무선으로 대체할 수 있습니다.
📌 블루투스 기반 시리얼 통신의 특징
- 케이블 없이 근거리(10~100m) 내에서 무선 데이터 전송 가능
- UART(시리얼) 인터페이스를 그대로 활용할 수 있음
- 아두이노, 라즈베리파이, PC 등 다양한 장치와 연결 가능
✅ 블루투스 모듈 연결 방법
블루투스 모듈 HC-05 또는 HC-06을 아두이노 또는 라즈베리파이에 연결하여 시리얼 통신을 수행할 수 있습니다.
📌 HC-05 블루투스 모듈 핀 배치
HC-05 핀 | 설명 | 아두이노 연결 |
VCC | 전원 공급 (5V) | 5V |
GND | 접지 (Ground) | GND |
TXD | 데이터 송신 (TX) | D10 (소프트웨어 시리얼 RX) |
RXD | 데이터 수신 (RX) | D11 (소프트웨어 시리얼 TX) |
💡 아두이노의 SoftwareSerial 라이브러리를 사용하여 TX/RX 핀을 설정
🔹 블루투스를 이용한 시리얼 통신 실습 (아두이노 & Python)
✅ 아두이노 코드 (블루투스를 통한 데이터 송신)
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // (RX, TX)
void setup() {
Serial.begin(9600); // PC와의 시리얼 통신
BTSerial.begin(9600); // 블루투스 모듈과의 통신
}
void loop() {
if (BTSerial.available()) { // 블루투스 데이터 수신
char received = BTSerial.read();
Serial.print("수신된 데이터: ");
Serial.println(received);
}
if (Serial.available()) { // PC에서 블루투스 모듈로 데이터 전송
char sendData = Serial.read();
BTSerial.write(sendData);
}
}
📌 블루투스를 통해 아두이노와 PC 간 시리얼 데이터를 주고받는 코드
📌 PC에서 Python을 실행하여 블루투스로 데이터를 주고받을 수 있음
✅ Python 코드 (PC에서 블루투스를 통해 아두이노와 통신)
import serial
import time
# 블루투스 시리얼 포트 설정
ser = serial.Serial('COM6', 9600, timeout=1) # Windows의 경우 'COMx', Linux/Mac은 '/dev/rfcomm0'
try:
while True:
message = input("보낼 메시지 입력: ")
ser.write(message.encode()) # 문자열을 블루투스로 전송
time.sleep(1) # 대기
response = ser.readline().decode().strip() # 블루투스 응답 읽기
if response:
print("아두이노 응답:", response)
except KeyboardInterrupt:
print("종료")
finally:
ser.close()
📌 PC에서 블루투스 시리얼 포트를 통해 아두이노와 데이터 송수신
2. LoRa(Long Range) 기술을 활용한 장거리 시리얼 통신
✅ LoRa란?
LoRa(Long Range)는 저전력, 장거리(최대 15km) 통신이 가능한 무선 기술입니다.
RS-485와 유사하게 IoT, 센서 네트워크, 스마트 농업, 원격 모니터링 시스템에서 많이 사용됩니다.
📌 LoRa의 특징
- 저전력, 장거리 통신 가능 (최대 15km)
- RS-485와 유사한 데이터 송수신 가능 (시리얼 인터페이스 지원)
- IoT, 원격 제어, 스마트 팜 등 다양한 분야에서 활용
✅ LoRa 모듈 연결 방법
LoRa 모듈 (SX1278, RYLR998 등)을 활용하여 두 개의 장치 간 장거리 통신을 수행할 수 있습니다.
📌 LoRa 모듈 배선 (아두이노 기준)
LoRa 모듈 핀 | 설명 | 아두이노 연결 |
VCC | 전원 공급 (3.3V) | 3.3V |
GND | 접지 | GND |
TXD | 데이터 송신 | D10 (소프트웨어 시리얼 RX) |
RXD | 데이터 수신 | D11 (소프트웨어 시리얼 TX) |
🔹 LoRa를 활용한 시리얼 데이터 송수신 실습
✅ 아두이노 코드 (LoRa 데이터 송·수신)
#include <SoftwareSerial.h>
SoftwareSerial LoRaSerial(10, 11); // (RX, TX)
void setup() {
Serial.begin(9600);
LoRaSerial.begin(9600);
}
void loop() {
if (LoRaSerial.available()) { // LoRa 데이터 수신
String received = LoRaSerial.readString();
Serial.print("수신된 데이터: ");
Serial.println(received);
}
if (Serial.available()) { // PC에서 LoRa로 데이터 전송
String sendData = Serial.readString();
LoRaSerial.println(sendData);
}
}
📌 LoRa를 통해 장거리 무선 데이터 송·수신하는 코드
3. 추가 학습 자료 안내 (문서, 라이브러리, 실전 프로젝트 참고 자료)
✅ 블루투스 관련 추가 학습 자료
✅ LoRa 관련 추가 학습 자료
📌 요약
✅ 블루투스를 활용하면 근거리(10~100m)에서 무선 시리얼 통신 가능
✅ HC-05, HC-06 블루투스 모듈을 활용하여 Python과 아두이노 간 무선 시리얼 통신 가능
✅ LoRa는 장거리(최대 15km) 무선 시리얼 통신을 지원하여 IoT 및 원격 제어에 적합
✅ LoRa 모듈(SX1278 등)을 사용하여 시리얼 데이터를 송·수신 가능
✅ 블루투스와 LoRa를 활용한 다양한 응용 사례 및 추가 학습 자료 제공
'프로그래밍 > 시스템' 카테고리의 다른 글
GPIO 개요 - 2. GPIO의 주요 역할 및 활용 사례 (0) | 2025.02.11 |
---|---|
GPIO 개요 - 1. GPIO란? (General Purpose Input/Output 개념) (0) | 2025.02.11 |
시리얼 통신 실전 응용 및 마무리 - 2. RS-485를 활용한 다중 노드(Multi-Drop) 통신 실전 예제 (0) | 2025.02.10 |
시리얼 통신 실전 응용 및 마무리 - 1. 산업 자동화 및 PLC와의 연결 (0) | 2025.02.10 |
시리얼 통신 소프트웨어 실습 - 3. 아두이노 및 라즈베리파이와 시리얼 통신하기 (0) | 2025.02.10 |