6. ESP32 블루투스 연결 - sunbang123/Smart_device GitHub Wiki
실습 보고서
블루투스란?
- 블루투스는 무선 기술 중 하나로, 디지털 기기 간의 데이터 전송을 가능하게 함.
- 블루투스 기기 간의 무선 통신을 담당하는 프로토콜로, 무선 주파수 대역을 이용하여 데이터를 전송함.
- 블루투스 기술
- 소형 전파 모듈과 소프트웨어 스택으로 구성되며, 디지털 기기에서 무선 통신을 통해 서로 연결할 수 있음.
- 블루투스 모듈
- 블루투스 모듈은 블루투스 스펙에 따라 무선 신호를 생성하고 수신하여 데이터 전송을 가능하게 함.
ESP32 블루투스 연결 실습
- 준비물 : LED, ESP32, 브래드보드, 점퍼선 1개, 스마트폰
실습 순서
- LED - ground - p22 - 저항 연결
- 업로드, 컴파일링
- 휴대폰 블루투스와 이름이 설정된 ESP 블루투스 장치와 연결
- Serial BlueTooth Terminal 어플리케이션에 업로드된 코드를 커넥팅 함.
- 어플리케이션 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 제어 실습.
실행 결과
실습을 통한 느낀점
- 휴대폰 블루투스가 아두이노와 무선으로 데이터를 전송할 수 있다는 것이 흥미로웠음.
- 블루투스 신호가 잡히면 바로 연결되는 점 또한 무척 편리하게 느껴졌음.