6. ESP32 블루투스 연결 - sunbang123/Smart_device GitHub Wiki

실습 보고서

블루투스란?

  • 블루투스는 무선 기술 중 하나로, 디지털 기기 간의 데이터 전송을 가능하게 함.
  • 블루투스 기기 간의 무선 통신을 담당하는 프로토콜로, 무선 주파수 대역을 이용하여 데이터를 전송함.
  • 블루투스 기술
    • 소형 전파 모듈과 소프트웨어 스택으로 구성되며, 디지털 기기에서 무선 통신을 통해 서로 연결할 수 있음.
  • 블루투스 모듈
    • 블루투스 모듈은 블루투스 스펙에 따라 무선 신호를 생성하고 수신하여 데이터 전송을 가능하게 함.

ESP32 블루투스 연결 실습

  • 준비물 : LED, ESP32, 브래드보드, 점퍼선 1개, 스마트폰

실습 순서

  1. LED - ground - p22 - 저항 연결
  2. 업로드, 컴파일링
  3. 휴대폰 블루투스와 이름이 설정된 ESP 블루투스 장치와 연결
  4. Serial BlueTooth Terminal 어플리케이션에 업로드된 코드를 커넥팅 함.
  5. 어플리케이션 Terminal에 'o' 데이터를 전송해서 LED를 켜고 'x' 데이터를 전송해서 LED를 끔.

회로도

코드

#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
#define LED2 22
void setup() {
    Serial.begin(115200);
    SerialBT.begin("ESP32test_sy");
    Serial.println("The device started, now you can pair it with bluetooth!");
    pinMode(LED2, OUTPUT);
    }
  void loop() {
    if (Serial.available()) {
      SerialBT.write(Serial.read());
    }
    if (SerialBT.available()) {
      char txt = SerialBT.read();
      Serial.write(txt);
    if(txt == 'o'){
      digitalWrite(LED2, HIGH);
    } else if(txt == 'x'){
      digitalWrite(LED2, LOW);
    }
  }
  delay(20);
}

코드 구성요소

  • #include "BluetoothSerial.h" / 이 라이브러리는 ESP32의 Bluetooth 시리얼 통신을 제어하는 함수들을 제공함.
  • #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) ) / Bluetooth가 활성화되어 있는지 확인하는 조건문. Bluetooth가 비활성화되어 있다면 컴파일 에러를 발생시킴.
  • BluetoothSerial SerialBT; / BluetoothSerial 객체를 생성함. 이 객체를 통해 ESP32와 Bluetooth 시리얼 통신을 수행할 수 있음.
  • Serial.begin(115200); / 시리얼 통신 시작. 통신 속도는 115200 bps로 설정됨.
  • SerialBT.begin("ESP32test_sy"); / Bluetooth 시리얼 통신을 시작, Bluetooth 장치의 이름을 "ESP32test_sy"로 설정하고 블루투스로 검색할 때 사용됨.
  • pinMode(LED2, OUTPUT); / LED2 핀을 출력 모드로 설정. 이 핀은 LED를 제어하는데 사용됨.
  • if (Serial.available()) {...} / 시리얼 통신으로 데이터를 수신할 수 있는지 확인하는 조건문. 데이터가 수신되면, 해당 데이터를 Bluetooth 시리얼 통신으로 전송함.
  • if (SerialBT.available()) {...} / Bluetooth 시리얼 통신으로 데이터를 수신할 수 있는지 확인하는 조건문. 데이터가 수신되면, 해당 데이터를 시리얼 통신으로 전송. 데이터가 'o'인 경우 LED2를 HIGH로, 'x'인 경우 LED2를 LOW로 설정하여 LED를 제어함.

블루투스 연결

  • 플레이 스토어에서 Serial bluetooth terminal 어플리케이션을 다운받음. Bluetooth 장치의 이름인 "ESP32test_sy"에 연결
  • 어플리케이션 Terminal 창을 통해 LED 제어 실습.

실행 결과


실습을 통한 느낀점

  • 휴대폰 블루투스가 아두이노와 무선으로 데이터를 전송할 수 있다는 것이 흥미로웠음.
  • 블루투스 신호가 잡히면 바로 연결되는 점 또한 무척 편리하게 느껴졌음.