시리얼 통신 실전 응용 및 마무리 - 3. 무선 시리얼 통신 (블루투스, LoRa) 및 추가 학습 자료 안내

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를 활용한 다양한 응용 사례 및 추가 학습 자료 제공