[IoT Tutorial #1] ESP32, Arduino로 BLE 사용하기

[IoT Tutorial #1] ESP32, Arduino로 BLE 사용하기
Photo by Vishnu Mohanan / Unsplash

본 포스트는 ESP32 에서 Bluetooth 기능 사용하는 법을 설명하고자 한다. 누구나 쉽게 따라할 수 있는 컨텐츠가 목표이므로, arduino로 진행하겠다.

목차

  1. Arduino - ESP32 setup
  2. 예제 다운로드
  3. 모바일로 테스트하기

Arduino - ESP32 Setup

ESP32 는 무선 기능 (Bluetooth, WIFI) 를 지원하는 MCU로 어마어마한 킹성비를 자랑한다. 무선 IoT 기기를 만드는 사람들한테는 구세주와도 같은 존재다. 게다가 Arduino를 지원하기 때문에, 초딩들도 만들 수 있을 만큼의 쉬운 인터페이스를 자랑한다.

ESP32에 프로그래밍을 하기 위해 보겠다. 관심이 있는 사람들은 다 잘 알 테니 스킵해도 된다.

먼저 Arduino 홈페이지 에 가서 프로그램을 다운받자.

위와 같이 글을 쓰는 현재는 1.8.19 버전을 제공하고 있는데, 2.0 으로 올라가지 않는이상 비슷비슷하니 아무거나 본인 OS에 맞게 받자.

설치하고 실행해보면, 아래와 같은 프로그램이 뜬다.

아주 간단하다.

setup은 esp32가 처음 켜질때 도는 코드고, loop은 그 이후에 실행되는 코드다. 두 빈곳만 채워넣고 화살표를 누르면 연결된 esp32로 프로그램이 업로드 된다.

그러나, 이 상태만으로는 esp32에 올릴 수 없다. esp32 는 arduino에서 만든 cpu가 아니기 때문에, 설정을 해줘야한다.

아래와 같이 환경설정 (preference) 에 가서 "추가적인 보드 매니저 URLs" 에 "https://dl.espressif.com/dl/package_esp32_index.json" 를 추가한다.

추가를 하고 나면, 아래와 같이 보드매니저 창에서 esp32 를 추가할 수 있다.

이제 각자 구매한 esp32 보드를 선택해주면 셋팅 끝이다.

필자는 TTGO 사의 제품라인업이나, TinyPico 사의 제품을 선호한다. 하드웨어 제품 선택, 추천에 대한 내용은 나중에 따로 다루겠다.

예제 다운로드

처음부터 코드를 짜는 것은 힘들다. Arduino는 그런 면에 있어서 매우 친절하다. 그냥 가져다가 쓸 수 있는 코드가 널려있기 때문.

ESP32 를 셋팅하면, 많은 예제들이 딸려오는데 당연하게도 BLE 예제가 있다.

BLE_write 예제를 한번 켜보자.

많은 BLE 예제들 중에 저것을 고른 이유는 동작되는 것을 확인하기 쉬워서이다. 그리고 내가 만들려는 프로젝트랑 상관이 있기도 하고.

예제를 선택하면 위와 같은 코드가 켜진다. 왼쪽 위 화살표를 눌러서 업로드를 하면 esp32가 bluetooth가 되는 IoT 기기로 변한다.

참 쉽죠?

동작은 serial로 보면 되는 데, 툴 -> 시리얼 모니터로 보면 손쉽게 잘 동작하고 있는지 볼 수 있다.

모바일로 테스트하기

진짜 블루투스가 잘 되는지 한 번 보고 싶다. 이를 위한 블루투스 앱은 엄청나게 많다. 우선 나는 아이폰을 쓰니, 아이폰앱을 기준으로 설명하겠다. 당연히 안드로이드에도 비슷한 앱이 많으니 아무거나 받아서 쓰면 된다.

필자는 위와 같은 앱을 사용했고, 앱을 키면 "MyESP32" 라는 블투 기기가 탐색이 된다. 이와 연결하면, "Hello World" 라는 문자를 받는다. 폰에서 "Hola!"라는 글자를 보내봤다.

Arduino에서 확인해보니 이렇게 H o l a ! 라고 왔덴다. 통신 완료!

여기까지 가볍게 bluetooth 사용하는 것을 알아보았다. 자세히 들여다보면, bluetooth 중에서도 BLE (Bluetooth Low Energy)를 사용했고, 여기에는 service, characteristic, advertise 등 여러 개념이 있지만, 간단한 통신하는데에는 굳이 모두 알 필요 없다.

이후의 포스트들은 모바일 앱 쪽에서 통신하는 파트와, 통신 받은 bluetooth 메세지를 이용하여 IoT기기에서 무엇인가 하는 행위를 다루겠다.