ESP32 블루투스 튜토리얼 DIYables 블루투스 앱으로 클래식 블루투스 및 BLE 사용하기
개요
이 튜토리얼은 클래식 블루투스 또는 블루투스 저에너지(BLE)를 사용하여 ESP32와 DIYables 블루투스 앱 간에 무선 통신을 구현하는 방법을 보여줍니다. ESP32에는 통합된 블루투스 기능이 탑재되어 있어 외부 블루투스 모듈이 필요 없습니다.
ESP32는 클래식 블루투스와 BLE 프로토콜 모두를 기본으로 지원하여, 추가 하드웨어 없이도 Android 및 iOS 기기의 DIYables 블루투스 앱에 직접 연결할 수 있습니다.
주요 정보: ESP32는 이중 블루투스 모드를 지원합니다 — 클래식 블루투스와 BLE(블루투스 저에너지) 모두 지원합니다. DIYables 블루투스 앱은 Android 플랫폼에서 클래식 블루투스와 BLE를 모두 지원하며, iOS에서는 BLE를 지원합니다. 사용자는 플랫폼 요구사항과 프로젝트 사양에 따라 적절한 프로토콜을 선택할 수 있습니다.

기능
- 이중 프로토콜 지원: 최대 호환성을 위해 클래식 블루투스와 BLE 프로토콜 모두 구현
- 무선 범위: 최대 10미터의 무선 통신 제공
- 멀티 플랫폼 호환성: Android 및 iOS 운영 체제 모두 지원
- 유연한 연결 방식: 클래식 블루투스는 전통적인 페어링 사용; BLE는 자동 연결 제공
- 포괄적인 위젯 라이브러리: 슬라이더, 조이스틱, 모니터, 플로터, 게이지, 온도 디스플레이, 채팅, 테이블, 로테이터 및 추가 인터페이스 구성 요소 포함
- 전력 효율 옵션: BLE 모드는 저전력 애플리케이션에 최적화; 클래식 블루투스는 더 넓은 기기 호환성 제공
- 간편한 통합: 단일 라이브러리 설치로 모든 통신 프로토콜 관리
필요한 하드웨어
| 1 | × | 38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow | 쿠팡 | 아마존 | |
| 1 | × | (또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 쿠팡 | 아마존 | |
| 1 | × | (또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 아마존 | |
| 1 | × | (또는) ESP32 Uno-form board | 아마존 | |
| 1 | × | (또는) ESP32 S3 Uno-form board | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Breakout Expansion Board for ESP32 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 |
소프트웨어 설정
빠른 시작
개발 환경을 구성하려면 다음 절차를 따르세요:
- 초기 ESP32 설정은 ESP32 시작 가이드를 참조하세요.
- USB 케이블로 ESP32 보드를 컴퓨터에 연결합니다.
- Arduino IDE를 실행합니다.
- ESP32 보드와 해당 COM 포트를 선택합니다.
보드 코어 설치
- 도구 보드 보드 관리자...로 이동합니다.
- "esp32"를 검색합니다.
- Espressif Systems의 esp32를 설치합니다.
DIYables 블루투스 라이브러리 설치
- Arduino IDE 왼쪽 사이드바의 라이브러리 아이콘에 접근합니다.
- "DIYables Bluetooth"를 검색하여 DIYables의 DIYables Bluetooth 라이브러리를 찾습니다.
- 설치를 클릭하여 라이브러리를 추가합니다.

- 필요한 라이브러리 종속성 설치 여부를 묻는 메시지가 나타납니다.
- 모두 설치를 클릭하여 설치를 완료합니다.

모바일 앱
플랫폼 호환성: DIYables 블루투스 앱은 Android 플랫폼에서 클래식 블루투스와 BLE를 모두 지원하며, iOS에서는 BLE를 지원합니다. ESP32의 이중 모드 기능으로 플랫폼 요구사항에 따라 프로토콜을 선택할 수 있습니다. Android 기기는 클래식 블루투스와 BLE 모드를 모두 지원합니다. iOS 기기는 BLE 모드가 필요합니다. BLE 연결은 수동 페어링 없이 자동으로 이루어집니다.
- DIYables 블루투스 앱을 실행합니다.
- 다음 권한을 요청받으면 허용합니다:
- 주변 기기 권한 (Android 12+) / 블루투스 권한 (iOS) - 블루투스 기기 검색 및 연결에 필요
- 위치 권한 (Android 11 이하만 해당) - 블루투스 기기 검색을 위해 Android 시스템에서 요구
- 기기 설정에서 블루투스가 활성화되어 있는지 확인합니다.
- 홈 화면에서 연결 버튼을 탭하여 기기 검색을 시작합니다.

- 검색 결과에서 ESP32 기기를 선택하여 연결합니다.
예제
ESP32는 클래식 블루투스와 BLE 프로토콜을 모두 지원합니다. 프로젝트 요구사항에 따라 적절한 구현을 선택하세요. 모든 예제는 ESP32 하드웨어와 호환됩니다.
클래식 블루투스 예제 (Android 전용) 및 BLE 예제 (Android & iOS)
- ESP32 블루투스 슬라이더 예제 - 이중 슬라이더 제어 인터페이스 튜토리얼 - 슬라이더 값 제어
- ESP32 블루투스 디지털 핀 예제 - 핀 제어 및 모니터 인터페이스 튜토리얼 - 디지털 출력 핀 제어
- ESP32 블루투스 모니터 예제 - 실시간 시리얼 모니터 인터페이스 튜토리얼 - 무선 시리얼 통신
- ESP32 블루투스 플로터 예제 - 실시간 데이터 플로팅 인터페이스 튜토리얼 - 실시간 데이터 시각화
- ESP32 블루투스 아날로그 게이지 예제 - 아날로그 게이지 디스플레이 튜토리얼 - 아날로그 게이지 디스플레이
- ESP32 블루투스 온도 예제 - 온도 게이지 표시 튜토리얼 - 온도 및 습도 모니터링
- ESP32 블루투스 조이스틱 예제 - 인터랙티브 2D 제어 인터페이스 튜토리얼 - 2D 조이스틱 입력
- ESP32 블루투스 채팅 예제 - 양방향 메시지 인터페이스 튜토리얼 - 텍스트 메시지 통신
- ESP32 블루투스 테이블 예제 - 구조화된 데이터 표시 인터페이스 튜토리얼 - 표 형식 데이터 표시
- ESP32 - 블루투스 RTC - 실시간 시계 동기화
문제 해결
| 증상 | 예상 원인 | 해결 방법 | |
|---|---|---|---|
| 앱 검색 시 기기가 보이지 않음 | 잘못된 블루투스 모드 또는 펌웨어가 실행되지 않음 | 코드가 올바른 블루투스 모드(클래식 또는 BLE)를 사용하는지 확인하고 ESP32가 실행 중인지 확인 | |
| SerialBT.begin() 또는 BLE.begin() 실패 | 보드 코어 또는 라이브러리 비호환성 | 보드 관리자를 통해 Espressif Systems의 ESP32 보드 코어 설치 | |
| 연결은 되었지만 데이터 전송 없음 | 오래된 DIYables 라이브러리 | 라이브러리 관리자를 통해 DIYables 블루투스 라이브러리를 최신 버전으로 업데이트 | |
| 컴파일 오류 | BluetoothSerial.h 또는 BLEDevice.h를 찾을 수 없음 | DIYables 블루투스 라이브러리가 설치되지 않음 | 라이브러리 관리자를 통해 DIYables 블루투스 라이브러리 설치 |
| 보드 선택 관련 컴파일 오류 | 잘못된 보드 선택 또는 코어 누락 | ESP32 보드를 선택하고 Espressif Systems의 esp32 코어 설치 | |
| 연결 후 즉시 끊김 | 간섭 또는 전원 공급 문제 | 안정적인 USB 전원 공급 확인 및 10미터 이내로 기기 근접 유지 | |
| iOS에서 클래식 블루투스 작동 안 함 | iOS는 클래식 블루투스 프로파일을 지원하지 않음 | iOS 기기 호환성을 위해 BLE 모드 사용 |
참고 사항
- ESP32 구현의 경우, 클래식 블루투스에는 Esp32Bluetooth_ 예제를, BLE에는 Esp32BLE_ 예제를 사용하세요. ArduinoBLE_ 예제는 다른 하드웨어 플랫폼(예: Arduino Uno R4)용으로 설계되었습니다.
- 클래식 블루투스는 앱 연결 전에 기기 블루투스 설정을 통해 수동 페어링이 필요합니다(Android 전용).
- BLE는 수동 페어링 없이 자동으로 연결되며 Android와 iOS 플랫폼을 모두 지원합니다.
- 지속적인 블루투스 광고와 기기 검색 가능성을 보장하기 위해 지속적인 전원 공급(USB 또는 외부)을 유지하세요.
- IOS 호환성은 iOS가 액세서리 기기에 대한 클래식 블루투스를 지원하지 않으므로 BLE 모드가 필요합니다.