Bluetooth를 통해 Android 스마트폰과 통신하도록 ESP32를 설정하고 프로그래밍하는 방법

Bluetoothleul Tonghae Android Seumateupongwa Tongsinhadolog Esp32leul Seoljeonghago Peulogeulaeminghaneun Bangbeob



ESP32는 광범위한 기능을 갖춘 마이크로컨트롤러 보드입니다. Wi-Fi 및 Bluetooth 모듈이 내장되어 있습니다. 이 두 모듈을 모두 사용하면 ESP32를 무선으로 프로그래밍할 수 있습니다. 이를 통해 ESP32 주변 장치를 제어하기 위한 긴 와이어 연결에 대해 걱정할 필요가 없습니다.

이 기사에서는 ESP32 보드를 Android 휴대폰과 연결하고 Bluetooth를 통해 데이터를 통신하는 방법을 설명합니다. 그리고 ESP32의 GPIO 핀에 연결된 LED를 안드로이드 스마트폰을 통해 직접 제어해보겠습니다.

내용물:







ESP32 블루투스 LE 란 무엇입니까?

ESP32는 Bluetooth Classic과 스마트 Bluetooth라고도 알려진 Bluetooth 저에너지를 모두 지원하는 마이크로 컨트롤러 보드입니다. BLE 또는 스마트 Bluetooth는 에너지 효율적인 통신에 특화되거나 단거리 통신 또는 소규모 데이터 전송을 위해 설계되었습니다.



ESP32의 BLE 기능을 통해 Bluetooth 통신에서 서버 또는 클라이언트 역할을 할 수 있습니다. 읽기 및 쓰기 서비스와 같은 작업을 처리할 수 있습니다. 또한 연결을 암호화하고 UART-BLE 통과 모드에서 데이터 전송을 위한 SPP(직렬 포트 프로필) 연결을 설정할 수 있습니다. ESP32 Bluetooth는 4.2 프로토콜을 지원합니다. 즉, 물리 계층(PHY) 및 링크 계층(LL)과 같은 다양한 계층과 호환됩니다. 또한 HCI(호스트 컨트롤러 인터페이스)도 지원합니다.



ESP32 Classic과 BLE Bluetooth의 차이점 표를 확인하세요.





특징 클래식 블루투스 저에너지 블루투스(BLE)
통신 유형 지속적인 양방향 커뮤니케이션 간헐적인, 주로 단방향 데이터 버스트
작동 범위 최대 100미터까지 도달 가능 일반적으로 100미터 미만에서 작동합니다.
전력 사용량 최대 1와트 소비 10밀리와트부터 500밀리와트까지의 범위
전송 속도 데이터 전송 속도는 초당 1메가비트에서 3메가비트까지 다양합니다. 초당 125킬로비트에서 초당 2메가비트까지 지원
응답 시간 약 100밀리초의 지연 시간 6밀리초의 대기 시간으로 빠른 응답
음성 지원 음성 전송 기능 탑재 음성 전송 기능이 부족함

자세한 내용은 ESP32 Bluetooth 기사를 확인하세요.

Android 스마트폰과 블루투스를 통해 통신하도록 ESP32를 프로그래밍하는 방법

Bluetooth 프로토콜을 사용하여 Android 휴대폰과 통신할 수 있도록 ESP32를 프로그래밍하려면 ESP32 Bluetooth 직렬 라이브러리를 설정해야 합니다. 이를 위해서는 ESP32 보드가 설치된 Arduino IDE 설정이 있어야 합니다.



ESP32 블루투스를 설정한 후 블루투스 시리얼 안드로이드 애플리케이션을 설치해야 합니다. 이를 통해 Bluetooth 직렬 통신을 사용하여 Android 휴대폰에서 ESP32로 지침을 보낼 수 있습니다.

각 단계를 자세히 살펴보겠습니다.

Android 휴대폰과 ESP32 Bluetooth를 연결하는 단계

Bluetooth 통신을 위해 ESP32 보드를 프로그래밍하려면 다음 단계를 따르십시오.

1단계: Arduino IDE에 ESP32 보드 설치

Arduino IDE에 ESP32를 설치하려면 이 문서에 제공된 가이드를 따르십시오.

Arduino IDE에 ESP32 보드 설치

설치 후 Arduino IDE를 사용하여 ESP32 보드를 연결하고 프로그래밍할 수 있습니다.

2단계: ESP32 블루투스 코드 업로드

ESP32 보드가 설치되면 Arduino IDE에 사전 설치된 다양한 라이브러리와 해당 예제가 표시됩니다. 이 라이브러리는 모두 ESP32 보드와 관련이 있습니다. Bluetooth 직렬 통신에는 ESP32를 사용하겠습니다. BluetoothSerial.h 라이브러리 예제 코드.

예제 코드를 열려면 Arduino IDE를 열고 다음으로 이동하세요. 파일 > 예제 > BluetoothSerial > SerialtoSerialBT

이 예제 코드를 열려면 ESP32 보드가 선택되어 있는지 확인하세요.

예제 코드를 열면 Arduino IDE 창에 다음 코드가 표시됩니다.

//리눅스힌트에 오신 것을 환영합니다

#include 'BluetoothSerial.h'

//#define USE_PIN // 페어링 중에 PIN을 원하면 주석 처리를 취소하세요.
const * = '1234' ; // 사용자 정의 페어링 PIN 정의

문자열 장치_이름 = 'ESP32' ;

#if !정의됨(CONFIG_BT_ENABLED) || !정의됨(CONFIG_BLUEDROID_ENABLED)
#error 블루투스가 활성화되지 않았습니다! 활성화하려면 `make menuconfig`를 실행하세요.
#endif

#if !정의됨(CONFIG_BT_SPP_ENABLED)
#error 직렬 Bluetooth가 없거나 활성화되지 않았습니다. ESP32 칩에만 사용할 수 있습니다.
#endif

Bluetooth직렬 SerialBT ;

무효의 설정 ( ) {
연속물. 시작하다 ( 115200 ) ;
시리얼BT. 시작하다 ( 장치 이름 ) ; //블루투스 장치 이름
연속물. printf ( '장치 ' % 에스 '가 시작되었습니다. \N 장치 페어링을 시작하세요! \N ' , 장치 이름. c_str ( ) ) ;
//Serial.printf('MAC 주소가 %s인 '%s' 장치가 시작되었습니다.\n블루투스 페어링을 시작하세요!\n', device_name.c_str(), SerialBT.getMacString());
#ifdef USE_PIN
시리얼BT. 핀 설정 ( ) ;
연속물. 인쇄 ( 'PIN 사용' ) ;
#endif
}

무효의 고리 ( ) {
만약에 ( 연속물. 사용 가능 ( ) ) {
시리얼BT. 쓰다 ( 연속물. 읽다 ( ) ) ;
}
만약에 ( 시리얼BT. 사용 가능 ( ) ) {
연속물. 쓰다 ( 시리얼BT. 읽다 ( ) ) ;
}
지연 ( 이십 ) ;
}

코드를 업로드하면 화면에 다음 메시지가 표시됩니다. 이 메시지는 ESP32 보드가 페어링 준비가 되었음을 설명합니다.

3단계: 코드 설명

코드는 필요한 라이브러리를 포함하고 Bluetooth 가용성을 확인하는 것으로 시작되었습니다. 또한 Bluetooth 장치 이름 및 PIN에 대한 변수를 설정합니다.

에서 설정() 기능을 사용하면 직렬 전송 통신이 정의되고 Bluetooth 장치가 해당 이름으로 초기화됩니다. 페어링 중에 인증을 위해 사용자 정의 PIN을 설정할 수 있습니다.

그만큼 고리() 기능은 직렬 및 Bluetooth 연결의 데이터를 지속적으로 확인합니다. 이를 통해 ESP32와 페어링된 Bluetooth 장치 간에 양방향 통신을 설정할 수 있습니다.

4단계: Android 애플리케이션 설치

코드가 업로드되면 다음 단계는 Bluetooth 연결을 위한 Android 애플리케이션을 설치하고 구성하는 것입니다.

Play 스토어를 열고 설치하세요. 직렬 블루투스 터미널 애플리케이션.

설치 후 스마트폰 블루투스 설정을 열고 ESP32 블루투스로 휴대폰을 연결하세요. Arduino IDE 코드에 PIN을 정의한 경우 PIN을 입력해야 하며 그렇지 않으면 직접 연결됩니다.

이제 직렬 Bluetooth 애플리케이션을 열고 다음을 선택하십시오. 장치 옵션.

새로 열린 메뉴에서 ESP32 장치를 선택합니다. 이 목록에는 현재 활성화된 모든 Bluetooth 장치가 표시됩니다.

보시다시피 ESP32 Bluetooth가 Android 스마트폰에 연결되어 있습니다.

연결을 테스트하기 위해 문자열을 보내겠습니다. 여기서는 두 개의 다른 문자열을 보냈습니다.

Arduino IDE 터미널에도 동일한 두 문자열이 표시되는 것을 볼 수 있습니다.

이제 한 단계 더 나아가 안드로이드 스마트폰을 통해 ESP32 블루투스를 이용해 LED와 같은 외부 주변기기를 제어해 보자.

5단계: 블루투스를 통해 Android 휴대폰을 사용하여 LED 제어

ESP32와 Android Bluetooth를 사용하여 LED를 제어하려면 먼저 위 코드를 수정하고 LED용 GPIO 핀을 정의합니다. 그 다음에는 LED를 켜고 끄는 값을 설정해야 합니다.

계속 진행하려면 아래 코드를 업로드하세요.

#include // Bluetooth 직렬 통신 라이브러리 포함

#define LED_PIN 15 // LED 핀 정의

Bluetooth직렬 SerialBT ; // BluetoothSerial 객체를 생성합니다.
바이트 BT_INP ; // 블루투스 입력을 저장하는 변수

// SDK 구성에서 Bluetooth 및 Bluedroid가 활성화되어 있는지 확인합니다.
#if !정의됨(CONFIG_BT_ENABLED) || !정의됨(CONFIG_BLUEDROID_ENABLED)
#error 블루투스가 활성화되어 있지 않습니다. 활성화하려면 `make menuconfig`를 실행하세요.
#endif

무효의 설정 ( ) {
  pinMode ( LED_PIN , 산출 ) ; // LED 핀을 출력으로 설정
연속물. 시작하다 ( 115200 ) ;
시리얼BT. 시작하다 ( 'ESP32' ) ; // 'ESP32'라는 이름으로 블루투스를 초기화합니다.
연속물. 인쇄 ( '블루투스 장치를 페어링할 준비가 되었습니다.' ) ; // 블루투스가 준비되었음을 나타냅니다.
}

무효의 고리 ( ) {
// 블루투스에서 읽을 수 있는 데이터가 있는지 확인
만약에 ( 시리얼BT. 사용 가능 ( ) ) {
BT_INP = 시리얼BT. 읽다 ( ) ; // 블루투스에서 들어오는 바이트를 읽습니다.
연속물. 쓰다 ( BT_INP ) ; // 읽은 바이트를 직렬 모니터에 에코합니다.
}

// 수신된 블루투스 데이터를 확인하고 LED 상태를 설정합니다.
만약에 ( BT_INP == '1' ) {
디지털쓰기 ( LED_PIN , 높은 ) ; // '1'이 수신되면 LED를 켭니다.
} 또 다른 만약에 ( BT_INP == '0' ) {
디지털쓰기 ( LED_PIN , 낮은 ) ; // '0'이 수신되면 LED를 끕니다.
}
}

이 코드는 ESP32 마이크로 컨트롤러가 Bluetooth를 사용하여 LED를 제어하기 위한 것입니다. Bluetooth 통신을 위한 라이브러리가 포함되어 있습니다. 다음으로 LED 핀을 정의하고 ESP32라는 장치로 Bluetooth를 설정합니다. 메인 루프는 Bluetooth 데이터를 읽고 수신된 명령에 따라 LED를 켜거나 끕니다(1은 ON, 0은 OFF).

회로도

회로도는 LED가 핀에 연결되어 있어 간단합니다. D15 ESP32의 LED 제어를 위해 다른 GPIO를 정의할 수 있습니다.

관련된: ESP32 핀아웃 참조 – 최종 가이드

하드웨어

하드웨어에는 브레드보드, ESP32 보드, LED가 필요합니다. ESP32를 시스템에 연결하고 프로그램을 업로드합니다.

이제 Android 휴대폰 Bluetooth 직렬 통신 애플리케이션에서 1과 0을 보냅니다.

Android 휴대폰에서 수신한 Arduino IDE 터미널에도 동일한 입력이 표시됩니다.

산출

High 또는 1 값을 보내면 LED가 켜지고, 마찬가지로 Low 값을 보내면 LED가 꺼집니다.

사용자 정의 버튼 설정

직렬 Bluetooth 애플리케이션 내에서 사용자 정의 버튼을 설정할 수도 있습니다. 예를 들어 HIGH 및 LOW 값 버튼을 생성할 수 있습니다. 이렇게 하면 값을 수동으로 입력할 필요가 없습니다. 대신 바로가기 버튼만 누르면 설정한 명령이 실행됩니다.

메모: 버튼 설정을 열려면 버튼을 길게 누르세요.

HIGH 버튼 값을 설정하려면 다음 설정을 정의하십시오.

LOW 버튼 값과 유사하게 아래 설정을 정의해야 합니다.

Bluetooth를 사용하여 ESP32 보드를 Android 휴대폰과 성공적으로 연결했습니다. 이제 이를 사용하여 많은 프로젝트를 만들 수 있습니다. 마찬가지로 릴레이 회로를 통해 ESP32 Bluetooth를 사용하여 가전제품을 제어할 수 있습니다.

관련된: Arduino IDE를 사용하여 ESP32로 릴레이

결론

ESP32는 Wi-Fi 및 Bluetooth 기능을 갖춘 고급 마이크로 컨트롤러 보드입니다. 이 내장 모듈은 모두 고급 프로젝트를 설계하고 주변 장치를 무선으로 제어하는 ​​데 도움이 됩니다. 마찬가지로 ESP32를 Android 휴대폰에 연결하여 다양한 작업을 수행할 수 있습니다. 이를 위해서는 Bluetooth Serial Android 애플리케이션을 설치해야 합니다. 설치가 완료되면 ESP32 Bluetooth용 예제 코드를 열고 보드에 업로드하세요. 코드가 업로드되면 Android 휴대폰을 통해 보드와 페어링할 수 있습니다.