- ESP32 Bluetooth 시작하기
- Bluetooth 저에너지 (BLE) 및 ESP32 클래식 Bluetooth 이해
- ESP32 용 Arduino IDE 준비
- ESP32 용 직렬 블루투스 프로그램
- ESP32로 직렬 Bluetooth 테스트
HC-05 및 HC-06과 같은 Bluetooth 모듈은 설정이 쉽고 Arduino IDE와 함께 사용하기 빠르지 만 높은 전력 소비와 같은 자체 제한이 있으며 이전 Bluetooth V2.0에서 작동합니다. 또한 최근에 새로운 ESP32 DEV 키트를 구입했습니다.이 모듈에는 내장 Wi-Fi 및 Bluetooth, 충분한 ADC 및 DAC 핀, 오디오 지원, SD 카드 지원, 딥 슬립 모드 등과 같은 기능이 있습니다. IoT 프로젝트를 구축하기위한 모든 것.
애호가라면 누구나 좋아하는 것처럼 ESP32는 이제 Arduino IDE에서 공식적으로 지원됩니다. 이전에는 Neil Kolbans Library를 사용하여 큰 해결 방법을 수행해야했지만 이제는 Arduino IDE로 ESP32를 프로그래밍하는이 사람의 노력 덕분에 케이크 산책이되었습니다. 따라서 Arduino IDE를 시작하고 몇 가지 예제 BLE 프로그램을 살펴 보았지만 아무것도 이해하지 못했습니다. 오랜 시간의 서핑과 유튜브를 통해 ESP32를 사용하여 BLE (Bluetooth Low Energy) 로 작업해야하는 경우 이해해야 할 것이 훨씬 더 많다는 것을 깨달았습니다. BLE를 별도의 기사로 다루기로 결정 했으므로 여기 에서는 ESP32의 Classic Serial Bluetooth를 사용하여 스마트 폰을 사용하여 LED를 토글합니다.. BLE 기능 사용 방법에 관심이있는 경우 ESP32 BLE 서버 및 ESP32 BLE 클라이언트에 대한이 기사를 확인하십시오.
ESP32 Bluetooth 시작하기
제가 시도하고 싶었던 첫 번째 프로그램은 예전 HC-05 시절처럼 휴대 전화 블루투스 터미널 애플리케이션에서 LED를 켜거나 끌 수있는 간단한 프로그램이었습니다. 그러나 Bluetooth 저에너지 (BLE)는이를 위해 들여 쓰기가되지 않았습니다. 또한 ESP32 모듈에는 두 가지 유형의 블루투스가 있다는 것을 발견했습니다. 하나는 클래식 블루투스 이고 다른 하나는 BLE 블루투스 저에너지 입니다. 좋아, 그런데 왜?…. 왜 우리는 두 가지 유형의 블루투스를 가지고 있고 내 프로젝트에 무엇을 사용해야합니까?
Bluetooth 저에너지 (BLE) 및 ESP32 클래식 Bluetooth 이해
Bluetooth Low Energy 는 이름에서 알 수 있듯이 기존 Bluetooth보다 전력을 덜 소비합니다. 미리 정의 된 주기적 업데이트를 통해 필요에 따라 데이터를 전송함으로써 가능합니다. 그러나 클래식 Bluetooth와 달리 파일 또는 음악을 전송하는 데 사용되지 않습니다. 방금 페어링 한 Bluetooth 장치가 오디오 장치, 랩톱 또는 휴대폰인지 휴대폰이 자동으로 식별하는 방법에 대해 궁금한 적이 있습니까? 무선 오디오 플레이어 또는 피트니스 밴드의 배터리 수준이 자동으로 귀하의 모바일 이 모든 것은 BLE 장치의 특성으로 가능합니다. BLE 장치 와 함께 작동 블루투스 V4.0 와 서버 또는 만드는 클라이언트로 낮은 전력으로 작동 할 수 있습니다BLE는 비콘, 스마트 시계, 피트니스 밴드 등에 이상적인 선택입니다.
반면에 클래식 블루투스 는 파일 및 기타 데이터를 전송하는 데 사용하는 단순한 구형 블루투스입니다. 거의 모든 BLE 장치에는 이와 관련된 클래식 Bluetooth 기능이 있습니다. HC-05와 같은 모듈에 사용되는 Bluetooth는 Bluetooth SSP (Serial Port Protocol)라고하는 클래식 Bluetooth 버전입니다. 즉, Bluetooth가 많은 오버 헤드없이 데이터를 쉽게 보내고받을 수 있도록하는 표준 직렬 프로토콜을 따릅니다. 이 튜토리얼의 끝에서 우리는 ESP32에서 직렬 블루투스 기능을 사용하는 방법을 배울 것입니다.
이 기사에서는 ESP32의 직렬 Bluetooth 기능을 사용하여 스마트 폰과 페어링하고 Play 스토어의 기존 Bluetooth 터미널 앱을 사용하여 ESP32에 명령을 보내고 그에 따라 온보드 LED를 토글합니다.
이후 기사에서는 ESP32 BLE를 서버와 클라이언트로 다룰 것입니다. BLE 서버는 일반적으로 BLE 데이터를 다른 Bluetooth 장치로 전송하는 데 사용되며 BLE 클라이언트는 다른 BLE 장치를 스캔하는 데 사용되므로 비콘 역할을합니다.
ESP32 용 Arduino IDE 준비
기본적으로 Arduino IDE는 ESP32 보드를 지원하지 않습니다. 게시판 관리자를 사용하여 다운로드하여 설치해야합니다. 이것이 ESP32를 사용하는 첫 번째 프로그램 인 경우이 시작 자습서를 따라 ESP32 보드를 Arduino에 추가하고 테스트 스케치를 업로드하십시오.
또한 마이크로 컨트롤러를 사용하지 않고도 ESP32로 더 많은 프로젝트를 수행 할 수 있습니다.
ESP32 용 직렬 블루투스 프로그램
ESP32 Bluetooth를 사용하여 LED 를 토글하는 전체 프로그램 은이 페이지 끝에 제공됩니다. 이 제목 아래에서 코드를 작은 조각으로 나누고 이해해 보겠습니다. HC-05와 같은 다른 Bluetooth 모듈을 이미 사용했다면이 ESP32 Bluetooth Classic 예제 프로그램이 매우 유사하다는 것을 알 수 있습니다.
이 프로그램의 아이디어는 ESP32를 사용하여 직렬 Bluetooth 연결 을 초기화하고 페어링 된 장치의 데이터를 수신하는 것입니다. 들어오는 데이터가 '1'이면 LED를 켜고 '0'이면 LED를 꺼야합니다. ESP32 Bluetooth가 Bluetoth SSP로 작동하도록 만드는 헤더 파일 BluetoothSerial 을 추가하여 프로그램을 시작합니다.
#include "BluetoothSerial.h"// 직렬 블루투스 용 헤더 파일은 기본적으로 Arduino에 추가됩니다.
이 라이브러리 뒤에는 많은 일이 진행되고 있지만 우리는 일을 단순하게 유지하기 위해 깊이 들어 가지 않기로 결정했습니다. 다음으로 필요한 것은 블루투스 관련 작업을위한 객체입니다. 여기에서는 내 이름을 ESP_BT 로 지정했지만 원하는 이름을 선택할 수 있습니다.
BluetoothSerial ESP_BT; // 블루투스 용 객체
다음으로 void setup () 함수 내부. 우리는 전송 속도 9600과 시리얼 통신을 시작하는 이름을 가진 블루투스 신호를 초기화합니다. 여기서는 "ESP32_LED_Control "로 이름을 지정했습니다.이 이름은 페어링을 시도 할 때 전화기에서 찾을 수있는 이름입니다. 마지막으로 블루투스 신호를 기반으로 토글 할 것이므로 내장 LED 핀을 출력 핀으로 선언했습니다.
void setup () { Serial.begin (9600); // 9600에서 시리얼 모니터 시작 ESP_BT.begin ("ESP32_LED_Control"); // 블루투스 신호의 이름 Serial.println ("블루투스 장치가 페어링 할 준비가되었습니다."); pinMode (LED_BUILTIN, OUTPUT); // LED 핀이 출력되도록 지정 }
무한 보이드 루프 기능 내에서 Bluetooth 모듈에서 들어오는 데이터 가 있는지 확인하고, 그렇다면 데이터를 읽어서 변수 incoming에 저장합니다. 또한 Arduino가 수신하는 내용을 교차 확인하기 위해 직렬 모니터에이 값을 인쇄합니다.
if (ESP_BT.available ()) // Bluetooth에서 수신하는 것이 있는지 확인 { incoming = ESP_BT.read (); // 받은 내용을 읽습니다. Serial.print ("Received:"); Serial.println (incoming);
이제 수신 된 모든 데이터가 incoming 변수에 저장 되므로이 변수를 예상 값과 직접 비교하고 필요한 작업을 수행 할 수 있습니다. 그러나 Bluetooth에서 전송 된 값은 char 형식이며 Arduino는 전화에서 전송되는 문자의 Decimal 값을 읽 습니다. char '0'의 경우 10 진수 값은 48이되고 char '1'의 경우 10 진수 값은 49가됩니다. ASCII 차트를 참조하여 모든 문자의 10 진수 값을 이해할 수 있습니다.
여기서는 들어오는 변수를 48과 49와 비교하여 각각 0과 1을 확인했습니다. 1이면 LED를 끄고 또한 LED가 꺼졌다는 확인 메시지를 Bluetooth에 다시 인쇄하고 0이면 그 반대의 경우도 마찬가지입니다.
if (수신 == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED 켜짐"); } if (수신 == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED 꺼짐"); }
ESP32로 직렬 Bluetooth 테스트
ESP를 Arduino IDE에 연결하고 시작 자습서에서 설명한대로 올바른 보드와 포트를 선택합니다. 이 3이기 때문에 번째 파티 보드 관리자 코드를 컴파일 및 업로드 취득하는 것이 더 이상 조금 걸릴 수 있습니다. 업로드가 완료되면 직렬 모니터를 실행하고 (디버깅 전용) 휴대폰에서 Bluetooth 설정을 엽니 다. ESP32_LED_Control 쌍 이라는 이름의 Bluetooth 장치를 찾아야합니다.
이제 스마트 폰에서 블루투스 터미널 앱을 열 수 있습니다. 저는 Google App Store에서 다운로드 한 "블루투스 터미널" 이라는 이름의 앱을 사용하고 있습니다. Bluetooth 애플리케이션을 방금 페어링 한 장치에 연결하고 1을 입력하고 보내기를 누릅니다.
ESP32 모듈은이를 수신하고 프로그램에 따라 LED를 켜야하며 위의 스크린 샷과 같이 LED가 켜졌다는 확인 메시지를 제공해야합니다. ESP32 Bluetooth에서 수신하는 데이터를 십진수 형식으로 표시하는 직렬 모니터를 확인할 수도 있습니다. 이는 Arduino가 앞에서 설명한대로 0은 48, 1은 49입니다. 내 터미널 창의 스냅 샷은 아래와 같습니다.
마찬가지로 모바일 애플리케이션에서 0을 전송하여 LED를 끌 수도 있습니다. 전체 작업은 아래 비디오에 나와 있습니다. 튜토리얼을 이해하고 유용한 것을 배웠기를 바랍니다. 의심스러운 점이 있으면 아래 댓글 섹션에 남겨 두거나 다른 기술 지원을 위해 포럼을 사용하십시오.