본문 바로가기

ESP32

ESP32 블루투스를 스마트폰과 연결하는 방법

반응형

 

항상 일찍 시작하고 일찍 끝낸다. 50% 더 빨리 일을 끝내면 내가 좋아하는 일을 더 많이 할 수 있다. 

 

ESP32는 무선 기능을 갖춘 강력한 마이크로컨트롤러입니다. 이 글에서는 블루투스를 통해 스마트폰과 ESP32 모듈을 연결하는 것이 얼마나 쉬운지 보여드리겠습니다.

 

ESP32 모듈의 블루투스 기능, 알아야 할 기본 매개 변수, ESP32 마이크로 컨트롤러의 블루투스 기능을 사용하여 빌드할 수 있는 몇 가지 흥미로운 애플리케이션에 대해 설명합니다.

 

일반적인 블루투스 연결과 ESP32 블루투스 기능에 대해 설명합니다. 

 

https://www.makerguides.com/how-to-connect-esp32-bluetooth-with-a-smartphone/

 

이후에는 블루투스로 ESP32 모듈을 블루투스 스마트폰에 연결하는 절차를 단계별로 안내해 드리겠습니다. 마지막에는 다음 프로젝트에 참고할 수 있는 작업 코드와 예제 프로젝트가 제공됩니다. ESP32 블루투스 기능을 잘 이해하고 프로젝트에 자신 있게 사용할 수 있을 것입니다. 이제 시작해 보겠습니다. (Arduino 마이크로 컨트롤러로 작업하고 싶다면 HC-05 모듈을 사용하여 Arduino에서 Bluetooth를 사용하는 방법에 대한 문서도 있습니다. 

 

Overview

Components Needed To Build ESP32 And Bluetooth Smartphone Project

Hardware Components

Software

Guide

Basics of The ESP32 Bluetooth Capabilities

What is LE next to the Bluetooth name?

ESP32 Bluetooth Features

Bluetooth LE Radio and PHY

Bluetooth LE Link Layer Controller

Applications Of Bluetooth Low Energy

Step-By-Step Instructions To Connect The ESP32 To A Smartphone Over Bluetooth

Step 1: Install ESP32 on the Arduino IDE

Step 2: Program ESP32 with the code below

Step 3: Understand the Code

Step 4: Prepare the Mobile Application

Step 5: Select the Device and Communicate

Step 6: What Next?

FAQs About The ESP32 And Bluetooth Capabilities

1. What is the maximum range of Bluetooth on ESP32?

2. What version of Bluetooth is supported by ESP32?

3. How many devices can ESP32 connect to via Bluetooth?

4. Is it possible to use ESP32 as a Bluetooth peripheral?

5. Can ESP32 connect to a Bluetooth speaker or headphones?

6. Can ESP32 be used to control other Bluetooth devices?

7. Can the firmware of ESP32 be updated via Bluetooth?

8. How can I program ESP32 to work with Bluetooth?

9. Is it possible to secure the Bluetooth connection on ESP32?

Conclusion 

 

ESP32 및 블루투스 스마트폰 프로젝트 제작에 필요한 구성품

하드웨어 구성품

ESP32 W룸 2.4 GHz(안테나 통합) x 1

듀퐁 와이어 1개

ESP32용 마이크로 USB 케이블 1세트(아두이노 전원 공급 및 프로그래밍용) x 1

 

소프트웨어

아두이노 IDE 

 

Arduino IDE에 ESP32 코어를 설치하는 방법 가이드

 

Makerguides.com은 사이트가 Amazon.com에서 상품을 광고하고 링크하여 광고비를 벌 수 있도록 고안된 제휴 광고 프로그램인 Amazon Services LLC Associates 프로그램에 참여하고 있습니다. 

 

ESP32 블루투스 기능의 기본 사항

 

블루투스에 대해 들어보고 사용해 본 적이 있을 것입니다.

 

 

 

 

휴대폰에서 블루투스를 켜면 사용 가능한 모든 블루투스 장치가 자동으로 나열됩니다. 어떻게 그런 일이 일어나는지 궁금한 적이 있으신가요? 블루투스는 어떻게 작동할까요? 이 섹션에서는 블루투스 프로토콜의 기본 사항과 ESP32 블루투스 기능에 대해 설명합니다. 블루투스는 근거리 통신 프로토콜입니다. 두 장치가 블루투스로 연결되면 비디오/오디오를 스트리밍 하고, 장치를 제어하고, 파일을 전송할 수 있습니다. 블루투스는 2.4 GHz(2.402 GHz ~ 2.480 GHz)의 주파수 범위에서 무선으로 통신합니다. 이 프로토콜은 1 MHz 간격으로 여러 채널을 생성할 수 있습니다. 

 

다중 채널은 다양한 디바이스가 관련된 경우 프로토콜이 주파수 경합을 피하는 데 도움이 됩니다.트랜스폰더의 전력 레벨에 따라 여러 가지 블루투스 등급이 있다는 사실을 알고 계셨나요? 

 

 

 

사용 가능한 블루투스 버전은 여러 가지가 있습니다.

 

 

Class Max Permitted Power Power in dBm
1 10-100 mW +10 to +20 dBm
2 1 – 2.5 mW 0 to +4 dBm
3 0.01 – 1 mW -20 to 0 dBm

 

 

예를 들어, 블루투스 1.0 블루투스 1.1 블루투스 1.2 블루투스 5.1 블루투스 5.2... 등이 있습니다.

 

ESP32에 어떤 버전의 Bluetooth가 있는지 살펴봅시다. ESP32 C3, ESP32 S3 및 ESP32 S3-mini는 Bluetooth LE v5.0을 지원합니다. 구형 ESP32 모듈은 Bluetooth LE v4.2 버전을 지원합니다.

 

Bluetooth 이름 옆에 있는 LE는 무엇인가요?

 

Bluetooth 프로토콜은 저에너지 기능을 지원합니다. IoT 및 웨어러블 디바이스가 폭발적으로 증가하면서 Bluetooth 디바이스 및 웨어러블의 배터리 수명을 개선해야 할 필요성이 대두되었습니다. 

 

 

그래서 Bluetooth 협회는 저전력 소비에 전적으로 초점을 맞춘 새로운 하드웨어 아키텍처와 소프트웨어 스택을 고안하여 통신 범위를 타협했습니다. 블루투스 클래식과 블루투스 저전력 에너지의 차이점이 있나요? 예. 클래식 블루투스와 블루투스 저전력 에너지의 차이점을 확인할 수 있습니다. 

 

Parameter Conventional Bluetooth Low Energy Bluetooth
Communication Bidirectional and Continuous Short data transfers, unidirectional
Range Up to 100 m Less than 100 m
Energy Consumption Up to 1 W 10 to 500 mW
Data rate 1 – 3 Mbits/s 125 kbits/s – 2 Mbits/s
Latency 100 ms 6 ms
Voice capability Yes No

 

 

또한 BLE의 모든 기능이 ESP32에서 구현되는 것은 아닙니다.

 

 

ESP32의 BLE에 대한 자세한 업데이트는 링크를 참조하세요.

 

ESP32 블루투스 기능

 

다음 섹션에서는 ESP32 S3 모듈에 있는 BLE의 모든 기능을 나열합니다.

 

  • 1Mbps PHY
  • 고속 전송 속도와 높은 데이터 처리량을 위한 2 Mbps PHY
  • 높은 RX 감도와 장거리(125Kbps 및 500 Kbps)를 위한 부호화된 PHY
  • 외부 PA 없이 클래스 1 전송 전력
  • HW Listen before talk(LBT)

 

블루투스 LE 링크 레이어 컨트롤러

 

ESP32-S3의 블루투스 저에너지 링크 레이어 컨트롤러가 지원합니다:

 

  • 방송 용량 향상 및 보다 지능적인 데이터 방송을 위한 LE 광고
  • 확장 다중 광고 세트
  • 동시 광고 및 스캔 중앙 및 주변 역할
  • 동시 다중 연결 적응형 주파수 호핑 및 채널 평가
  • LE 채널 선택 알고리즘 #2
  • 연결 파라미터 업데이트
  • 하이 듀티 사이클 비연결 광고
  • LE 프라이버시 1.2
  • LE 데이터 패킷 길이 확장
  • 링크 레이어 확장 스캐너 필터 정책
  • 낮은 듀티 사이클 지시형 광고
  • 링크 레이어 암호화
  • LE Ping 

 

블루투스 저에너지 응용

 

피트니스 트래커의 활용 - FitBit 등의 피트니스 트래커는 심박수, 수면 패턴, 걸음 수, 소모된 에너지, 이동 거리 등을 추적합니다. 이러한 디바이스는 크기가 너무 작아서 무거운 배터리를 휴대할 수 없습니다. 블루투스 저에너지는 전력 소비가 적기 때문에 이러한 제품에서 많이 사용됩니다.

 

실내 포지셔닝 - 제한된 범위가 도움이 됩니다. 이 디바이스는 주변 블루투스 연결 디바이스에 대한 비콘 역할을 할 수 있습니다. 가시성과 신호 레벨을 기반으로 GPS(위성 위치 확인 시스템)처럼 모듈 쿳의 위치를 추적할 수 있습니다. 또한 디스플레이 근처에 있는 고객과 관심 있는 사람을 식별하고, 그들의 보행 패턴을 파악하고, 그들이 더 많은 관심을 보인 제품에 대해 할인 혜택을 제공하는 최적의 제품을 제안하는 데 도움이 됩니다.

 

자산 추적: Bluetooth 저에너지 디바이스로 활성화된 자산을 추적할 수 있습니다. 배터리 없이도 BLE로 기계의 전원을 켤 수 있다는 사실을 알고 계셨나요? RFID 기술을 사용하면 됩니다! 대규모 캠퍼스와 사무실 공간에서 자산을 이동할 때, 주 출입문에 리더를 설치하면 BLE 디바이스에 전원을 공급하여 ID를 읽을 수 있습니다. 이렇게 하면 자산을 추적하는 데 도움이 됩니다. 

 

블루투스를 통해 스마트폰에 ESP32를 연결하는 단계별 지침

 

블루투스를 통해 스마트폰을 ESP32에 연결하는 방법을 단계별로 보여드리겠습니다. 시작하겠습니다.

 

1단계: Arduino IDE에 ESP32 설치 이 문서에 제시된 단계별 가이드에 따라 Arduino IDE에 ESP32를 설치하세요. 설치가 완료되면 Arduino 보드를 프로그래밍하는 방법과 동일한 방식으로 ESP32를 프로그래밍할 수 있습니다.

 

2단계: 아래 코드를 사용하여 ESP32 프로그래밍 아래는 기본 블루투스 예제 코드입니다. 아래 단계에 따라 예제를 열 수 있습니다. 

 

 

 

1. 아두이노 IDE를 열고 파일 메뉴를 클릭한 후

2. 예제 선택

3. 블루투스 직렬 선택

4. SerialToSerialBT를 선택합니다. 

 

//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial

#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;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}

 

 

3단계: 코드 이해 이 코드는 시리얼과 클래식 블루투스(SPP) 사이의 브리지를 생성하고 BluetoothSerial 라이브러리가 일반 시리얼 라이브러리와 동일한 기능을 가지고 있음을 보여줍니다. 

 

첫 번째 줄은 직렬 프로토콜을 사용하여 블루투스를 통해 통신하는 기능을 제공하는 헤더 파일 "BluetoothSerial.h"입니다. 다음으로 장치에서 블루투스가 활성화되어 있는지 확인합니다. 블루투스가 활성화되지 않은 경우 오류 메시지가 표시됩니다. 그런 다음 코드는 SerialBT라는 BluetoothSerial 클래스의 인스턴스를 선언합니다. setup() 함수에서 Serial.begin() 함수를 사용하여 115200의 전송 속도로 Serial 통신이 시작됩니다. 그런 다음 SerialBT.begin() 메서드를 사용하여 "ESP32 test"라는 이름으로 SerialBT 통신이 시작됩니다. loop() 함수에서는 Serial.available() 메서드를 사용하여 시리얼 통신 포트에 사용 가능한 데이터가 있는지 확인합니다. 사용 가능한 데이터가 있으면 코드가 Serial.read() 메서드를 사용하여 데이터를 읽은 후 SerialBT.write() 메서드를 사용하여 BluetoothSerial 포트에 씁니다. 마찬가지로, SerialBT.available() 함수를 사용하여 BluetoothSerial 통신 포트에 사용 가능한 데이터가 있는지 확인합니다. 

 

사용 가능한 데이터가 있으면 코드가 SerialBT.read() 메서드를 사용하여 데이터를 읽고 Serial.write() 메서드를 사용하여 Serial 포트에 씁니다. 마지막으로 지연() 메서드를 사용하여 20ms의 약간의 지연을 추가하여 지속적인 통신으로 시스템에 과부하가 걸리지 않도록 합니다. 

 

4단계: 모바일 애플리케이션 준비하기 Apple 또는 Android 앱 스토어에서 다음 앱 중 하나를 선택합니다.

 

1. 직렬 블루투스 터미널 

 

 

2. 아두이노 블루투스 터미널 

 

 

앱 마켓에서 직렬 블루투스 단말기 애플리케이션을 설치합니다. 제가 선호하는 앱은 첫 번째 앱입니다. 

 

5단계: 장치 선택 및 통신 설정 → 장치로 이동합니다. 

 

 

 

새 장치 페어링을 선택하고 ESP32test 장치가 나타날 때까지 기다립니다. 이름을 원하는 대로 변경할 수 있습니다. 코드에서 아래 줄을 수정해야 합니다. 

 

SerialBT.begin("ESP32test"); //Bluetooth device name

 

새 장치 페어링을 선택하고 ESP32test 장치가 나타날 때까지 기다립니다. 이름을 원하는 대로 변경할 수 있습니다. 코드에서 아래 줄을 수정해야 합니다. 

 

 

 

 

Source: https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/connected-to-esp32.png?w=500&quality=100&strip=all&ssl=1

 

 

이제 텍스트 창에 메시지를 입력하고 보내기 버튼을 누르면 됩니다. 한편 Arduino 직렬 터미널을 열면 직렬 터미널에 메시지가 표시되는 것을 볼 수 있습니다. 

 

 

 

 

 

 

 

 

직렬 터미널에서 모바일로 메시지를 보낼 수도 있습니다. 연결을 확인하고 연결하여 메시지를 주고받을 수 있었기를 바랍니다.

 

6단계:

 

다음 단계 스마트폰과 통신하기 위한 모든 기본 단계를 완료한 것을 축하합니다. 다음은 무엇을 만들까요? 

 

구축할 수 있습니다: 

 

  • ESP32가 센서 값을 읽고 블루투스를 통해 휴대폰으로 전송하는 프로젝트
  • ESP32를 사용하여 스위치를 제어하고 모바일로 램프를 제어하고
  • 장비의 상태를 읽는 등의 작업을 수행합니다. 

 

ESP32 및 블루투스 기능에 대한 자주 묻는 질문

 

블루투스 및 ESP32 블루투스 기능에 대해 가장 자주 묻는 질문 목록을 포함했습니다. 더 궁금한 점이 있으시면 댓글로 남겨 주세요.

 

1. ESP32의 최대 블루투스 범위는 어떻게 되나요? ESP32의 최대 블루투스 범위는 환경, 장애물, 모듈의 전원 출력 등 다양한 요인에 따라 달라집니다. 일반적으로 ESP32에서 Bluetooth의 최대 범위는 약 30피트입니다.

 

2. ESP32는 어떤 버전의 블루투스를 지원하나요? ESP32는 블루투스 4.2 및 블루투스 5.0 버전을 지원합니다.

 

3. ESP32는 블루투스를 통해 몇 개의 장치에 연결할 수 있나요? ESP32는 블루투스를 통해 여러 장치에 동시에 연결할 수 있습니다. 그러나 연결할 수 있는 장치 수는 마이크로 컨트롤러의 사용 가능한 메모리와 처리 능력에 따라 달라집니다.

 

4. ESP32를 블루투스 주변 장치로 사용할 수 있나요? 예, ESP32는 블루투스 주변 장치로 사용할 수 있으므로 서비스를 광고하고 다른 블루투스 장치에서 검색할 수 있습니다.

 

5. ESP32를 블루투스 스피커나 헤드폰에 연결할 수 있나요? 예, ESP32는 블루투스 스피커나 헤드폰에 연결하여 무선으로 오디오를 스트리밍 하는 데 사용할 수 있습니다. 

 

6. ESP32를 사용하여 다른 블루투스 장치를 제어할 수 있나요? 예, ESP32는 블루투스 프로토콜을 사용하는 스마트폰, 스피커, 스마트 가전 등 다른 블루투스 장치를 제어하는 데 사용할 수 있습니다.

 

7. 블루투스를 통해 ESP32의 펌웨어를 업데이트할 수 있나요? 예, 무선(OTA) 업데이트 기능을 사용하여 블루투스를 통해 무선으로 ESP32의 펌웨어를 업데이트할 수 있습니다.

 

8. ESP32가 블루투스로 작동하도록 프로그래밍하려면 어떻게 해야 하나요? ESP32가 블루투스로 작동하도록 프로그래밍하는 방법에는 Arduino IDE, ESP-IDF 또는 블루투스 시리얼 라이브러리와 같은 타사 라이브러리를 사용하는 등 다양한 방법이 있습니다.

 

9. ESP32에서 블루투스 연결을 보호할 수 있나요? 예, ESP32는 장치 간 블루투스 연결을 보호하기 위해 암호화, 인증 및 권한 부여와 같은 다양한 보안 기능을 지원합니다.

 

결론

 

이 글에서는 블루투스 기술의 기본 사항과 ESP32 컨트롤러의 블루투스 기능에 대해 설명했습니다. 스마트폰을 ESP32 블루투스 장치에 연결하는 단계별 절차를 설명했습니다. 아래 댓글 섹션에 향후 블루투스와 관련된 어떤 프로젝트를 구축할 것인지 알려주세요. 

 

이 글에 대한 피드백과 다음에 배우고 싶은 내용을 공유해 주세요.이 글이 도움이 되었다면 다른 ESP32 애호가들과 공유해 주세요. 배움을 멈추지 마세요! 

 

언제나 그렇듯이 참고한 링크는 이곳을 따라가면 만날 수 있습니다. 배움을 멈추지 마세요!

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^