ESP32 Ble GAP 설정하기

ESP32 Ble GAP 설정하기

ESP32 로 GAP 를 설정하는 것을 해보려고 한다.

참고 포스팅 :

  1. 윈도우에서 우분투 설치
  2. WSL에서 SERIAL PORT  사용하기
  3. ESP-IDF 와 툴체인 설치하기
  4. ESP32 Blink 예제 구동시켜보기

GAP는 Generic Access Profile의 약자인데, 그냥 블루투스 계에서 자기소개를 담당하는 놈이라 생각하면 편하다.

나 이런놈이에요 하는거지 뭐.

 주로 커뮤니케이션을 어떻게 할 것인지, Adverting을 어떻게 할 것인지를 설정하는 건데, 깊게 생각하면 머리아프니 그냥 자기소개 하는 놈이라고 생각하자.

내 이름은 ESP_DKMIN이구요, 내가 주로 사용하는 기능은 심박수를 주인님에게 알려주는거에요

하는 정도만 꾸며보려고 한다.

이번 예제는 ESP-IDF 블루투스 예제 중에서 GATT_SERVER로 해보려고 한다.

파일 복사부터 하자

cp -r -f esp32/esp-idf/examples/bluetooth/gatt_server ~/esp32/apps/

 만약 apps 폴더가 없다면 cd esp32로 esp32폴더로 이동 후 mkdir apps를 해주자. 

cd ~/esp32/apps/gatt_server

 로 해당 폴더로 이동해주고

vim main/gatts_demo.c

 로 코드를 보자

GAP를 설정하기 위해

 #define CONFIG_SET_RAW_ADV_DATA

 을 추가해주자.

그러면 위 코드를 설정해 봐야 한다. 맨 처음에는 이해하기 어려울 수 있다.

 0x02, 0x01, 0x06

 그 다음 0x02는 길이가 2개라는 이야기고 0x01은 이 사이트에서 다루듯이 flag 설정이다. 이 플래그의 기본 디폴트가 0x06이니 몰라도 된다.

GAP FLAG

그래도 궁금하면 위 표를 참고해보고, 인터넷에 검색해보자. 

그 다음도 역시 보자

0x02, 0x0a, 0xeb

 길이가 2이고, 0x0A의 설정이니까 보면

Tx Power Level

 송신 파워를 설정하는 거다. 최대로 놓고 싶다면 0xff로 놓으면 되겠다.

그 다음을 보자

0x03, 0x03, 0xab, 0xcd

3개의 길이를 가지는 설정이고, 0x03의 설정이니 

List of UUID

소개할 서비스 UUID를 설정하는 것이다.

내가 사용할 서비스는 heartbeat를 쓸 생각이니까, 180D를 입력하면 되겠다.

서비스에 대한 설정은 요 사이트에서 찾아서 보면 되겠다.

근데 이거 해보니까 LSB로 입력해야 하더라 그래서 설정하면 아래와 같이 된다.

0x03, 0x03, 0x0D, 0x18

 이 상태에서 flash를 해보고 앱에서 실행해보면 블루투스가 변해 있는 것을 볼 수 있다.


 이제 이름을 바꿔보자

 

 저기를 보면 길이는 15개, 0x09의 설정이라고 볼 수 있다.

0x09 설정은 «Complete Local Name», 그러니까 이름 설정하는거다. 옳지. 이 내용을 수정하면 되겠다.

 저 내용을 수정하려면 0x09 뒤의 내용을 수정하면 된다.

 아스키 코드를 옮겨 적으면 되니까 잘 수정한다음 길이 값을 수정해주면 된다.

나 같은 경우는 ESP_DKMIN으로 설정할 것이므로

0x0A, 0x09, 0x45, 0x53, 0x50, 0x5f, 0x44, 0x4B, 0x4D, 0x49, 0x4E

 로 설정해주면 되겠다.

최종 코드를 적용하면 아래와 같이 결과가 나온다


 끝!

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 블로거가 이것을 좋아합니다: