본문 바로가기
-----ETC-----/C++ 임베디드 시스템 프로그래밍 시리즈

[C++ 임베디드 시스템 프로그래밍] Day 19: 블루투스 통신

by cogito21_cpp 2024. 8. 1.
반응형

블루투스 통신의 개요

블루투스는 단거리 무선 통신 기술로, 두 장치 간에 데이터를 무선으로 송수신할 수 있습니다. 임베디드 시스템에서는 블루투스를 사용하여 스마트폰과 같은 장치와 데이터를 주고받거나, 여러 임베디드 장치 간의 통신을 구현할 수 있습니다. 오늘은 블루투스를 사용하는 방법을 학습하겠습니다.

1. 블루투스 모듈의 기본 개념

블루투스 통신을 위해 다양한 블루투스 모듈을 사용할 수 있습니다. 그 중 HC-05와 HC-06은 널리 사용되는 블루투스 모듈입니다.

  • HC-05: 마스터 및 슬레이브 모드 모두 지원
  • HC-06: 슬레이브 모드만 지원

2. 블루투스 모듈 설정

블루투스 모듈을 사용하려면 UART 인터페이스를 통해 설정하고 통신합니다. HC-05 모듈을 사용하여 기본적인 블루투스 통신을 구현해보겠습니다.

3. 블루투스 모듈 연결

하드웨어 연결

  1. HC-05 블루투스 모듈:
    • VCC: 5V
    • GND: GND
    • TX: Arduino RX (디지털 핀 0)
    • RX: Arduino TX (디지털 핀 1)

4. 블루투스 통신 사용 예제

다음 예제에서는 HC-05 블루투스 모듈을 사용하여 스마트폰과 데이터를 송수신하는 방법을 보여줍니다. 스마트폰 앱으로는 "Bluetooth Terminal"과 같은 블루투스 터미널 앱을 사용할 수 있습니다.

 

예제: 블루투스 데이터를 송수신

void setup() {
    Serial.begin(9600); // 시리얼 통신 시작 (HC-05 모듈과 통신)
}

void loop() {
    // 데이터 수신
    if (Serial.available() > 0) {
        char receivedChar = Serial.read(); // 수신된 데이터 읽기
        Serial.print("Received: ");
        Serial.println(receivedChar); // 수신된 데이터 출력
    }

    // 데이터 송신
    Serial.println("Hello from Arduino!");
    delay(1000); // 1초 대기
}

 

위 코드에서는 Serial.begin 함수를 사용하여 블루투스 모듈과의 시리얼 통신을 시작하고, Serial.read 함수를 사용하여 수신된 데이터를 읽고 Serial.println 함수를 사용하여 데이터를 송신합니다.

 

5. 블루투스를 활용한 프로젝트

블루투스를 사용하여 다양한 프로젝트를 구현할 수 있습니다. 예를 들어, 스마트폰을 통해 LED를 제어하는 프로젝트를 만들어보겠습니다.

 

하드웨어 연결

  1. HC-05 블루투스 모듈:
    • VCC: 5V
    • GND: GND
    • TX: Arduino RX (디지털 핀 0)
    • RX: Arduino TX (디지털 핀 1)
  2. LED 연결:
    • LED의 + 단자: 디지털 핀 13
    • LED의 - 단자: GND

예제: 스마트폰을 통해 LED 제어

다음 예제는 스마트폰을 통해 LED를 제어하는 방법을 보여줍니다.

const int ledPin = 13; // LED 핀

void setup() {
    Serial.begin(9600); // 시리얼 통신 시작 (HC-05 모듈과 통신)
    pinMode(ledPin, OUTPUT); // LED 핀을 출력 모드로 설정
}

void loop() {
    if (Serial.available() > 0) {
        char receivedChar = Serial.read(); // 수신된 데이터 읽기
        Serial.print("Received: ");
        Serial.println(receivedChar); // 수신된 데이터 출력

        if (receivedChar == '1') {
            digitalWrite(ledPin, HIGH); // LED 켜기
        } else if (receivedChar == '0') {
            digitalWrite(ledPin, LOW); // LED 끄기
        }
    }
}

 

위 코드에서는 스마트폰에서 '1'을 보내면 LED를 켜고, '0'을 보내면 LED를 끕니다. 이를 통해 스마트폰을 사용하여 Arduino의 LED를 제어할 수 있습니다.

 

마무리

오늘은 블루투스 통신을 사용하여 데이터를 송수신하는 방법을 학습했습니다. HC-05 블루투스 모듈을 사용하여 기본적인 블루투스 통신과 스마트폰을 통해 LED를 제어하는 예제를 통해 블루투스 통신의 기본 개념과 활용 방법을 익혔습니다. 다음 날에는 Wi-Fi 통신에 대해 더 깊이 알아보겠습니다.

질문이나 추가적인 피드백이 있으면 언제든지 댓글로 남겨 주세요.

Day 20 예고

다음 날은 "Wi-Fi 통신"에 대해 다룰 것입니다. Wi-Fi를 사용하여 데이터를 송수신하는 방법을 학습하고, 실습 예제를 통해 이해를 돕겠습니다.

반응형