ESP32 로 IoT 솔루션인 Matter 다뤄보기(ESP32 Matter 개발 환경 꾸미기)

이제 IoT 도 통합이다! Matter란?

얼마 전에 저는 “구글 네스트 미니” 를 구입을 하였습니다. 그 이유는 Matter 라는 IoT 통합 솔루션에 관심이 생겨서 입니다.

구글 네스트 미니는 음성 인식을 통해 음악 재생 및 다양한 기능을 수행할 수 있는 스마트 스피커 입니다. 또한 네스트 미니가 Matter Hub 역할(서버)을 하는게 가능합니다. 그러다 보니 Matter 디바이스를 구하여 네스트 미니에 연결을 해 볼 수 있겠더군요.

그렇다면 Matter 는 뭘 의미하는 걸까요?

현재도 우리는 가정과 사무실 곳곳에서 IoT 기기들을 사용하고 있습니다. 저 같은 경우만 해도 스마트 플러그를 사용하여 앱으로 전원을 껐다 켜고 있으며 최근 전자제품에는 와이파이 연결을 통해 내 앱으로 전자제품을 제어할 수 있는 기능을 보유하고 있습니다.

그런데 2020년대 들어 IoT 기기들의 통합에 대한 관심이 높아진거 같습니다. 국내 대표 가전사인 삼성전자나 LG전자는 서로 각자의 통신 프로토콜을 사용하여 전자제품들을 연결했기 때문에 서로간에 통신이나 제어는 가능하지 않았습니다.

그래서 구글의 주도로 애플, 아마존 등과 전세계의 전자 제조업체들이 IoT 기기들의 통합을 위해 Matter 라는 오픈소스 프로토콜을 탄생시키기에 이릅니다. Matter 프로토콜을 사용하여 통신하는 IoT 기기는 제조사에 상관없이 서로간에 통신이 가능해지게 된 겁니다.

따라서 Matter 프로토콜을 지원하는 디바이스를 개발하면 “구글 홈” 같은 Matter 지원 앱을 통해 디바이스를 제어하는게 가능하게 됩니다. 제조사가 다르더라도 Matter 프로토콜을 지원하는 기기는 서로간의 제어가 가능하게 되는 거지요.

최근에 IoT 시장은 그래서 Matter 가 상당히 주요한 이슈가 된거 같습니다. 국내에서는 삼성전자와 LG전자가 Matter 를 통한 IoT 기기나 가전을 출시를 앞두고 있습니다. 이제 곧 Matter 프로토콜을 탑재한 기기들이 연이어 출시될 것으로 예상됩니다.

저 또한 예전부터 IoT 기기에 관심을 가지고 있었는데, Matter 의 등장은 꽤나 반갑네요. 아래에는 Matter 프로토콜 이용하여 디바이스를 개발 및 테스트에 용이한 ESP32 로 Matter 개발 환경을 꾸미는 거에 대해 설명을 해볼까 합니다.

저렴한 ESP32 로 Matter 사용해 보기

Matter 를 지원하는 타겟 보드는 여러 칩셋을 지원을 하고 있습니다. 실리콘랩스, TI, 노르딕, LXP, 인피니언, 리얼텍 등등 지원하는 칩셋 제품이 꽤 많은데 이중에서 제가 테스트 해보려는 칩셋은 ESP32 시리즈 입니다.

ESP32 칩셋은 중국에 기반을 둔 팹리스 회사인 Espressif Systems 에서 개발하여 공급하고 있는 칩셋으로 IoT 칩셋으로는 꽤나 유명하다고 볼 수 있습니다. 블루투스, 와이파이를 탑재하면서도 가격은 다른 제조사의 칩셋에 비해 꽤나 저렴해서 가성비가 괜찮은 제품으로 알려져 있습니다.

시중에서는 ESP32 개발 보드를 꽤나 저렴하게 구입할 수가 있기 때문에 Matter 디바이스로 테스트하기에는 제격인거 같습니다. Matter 디바이스를 지원하는 제품군들은 크게 아래 제품군들이 있네요.

위의 제품들 중에서 가격이 싸면서 가성비 좋은 제품의 개발보드를 구입하면 됩니다.

ESP32의 Matter 에 대한 좀더 자세한 내용은 위의 링크 글을 통해 확인할 수 있습니다.

저렴하게 판매하는 ESP32 개발보드 구입하기

Matter 를 지원하는 ESP32 개발 보드는 시중에 무수히 많이 판매를 하고 있습니다. 이중에서 제가 구입한 ESP32 개발 보드는 “ESP32-S3FH4R2” 보드 입니다.

ESP32-S3FH4R2 보드는 시중에 많은 개발 보드들을 여러 제조사들이 판매를 하고 있습니다. 따라서 ESP32-S3FH4R2 호환 보드이면 어떤 보드던지 사용이 가능합니다.

국내에서는 국내 인터넷 마켓으로 구입이 가능한데요, 좀더 싸게 구입하려면 “알리 익스프레스”를 통해서도 구입이 가능합니다. 알리 익스프레스는 가격적인 측면에서 워낙 저렴하기 때문에 ESP32 보드를 5천원~1만원 사이의 가격으로 구입이 가능합니다.

알리 익스프레스로 구입하시려면 위의 사진 링크를 클릭해서 구매를 할 수도 있습니다.

ESP32 IDF 설치 및 Matter SDK 빌드하는 법

ESP32 에 Matter 이미지를 올리기 위해서는 Matter SDK를 git 으로 clone 한 뒤에 빌드를 하여 ESP32 보드에 다운로드를 하는 과정이 필요합니다.

위 링크는 ESP32 시리즈의 Matter SDK 입니다. github 로 제공이 되고 있고 위 소스를 내 리눅스 환경에 clone 합니다.

리눅스 환경은 별도의 리눅스 서버를 구축하거나 내 PC에 우분투를 설치하는 방법, Virtual Box 를 사용하는 방법, 윈도우즈 기반의 PC에 WSL 을 활용하는 방법이 있습니다.

최근에 저는 제 윈도우즈 기반의 PC 에 WSL 로 Linux 개발 환경을 구축하여 사용중입니다. WSL 리눅스에서 Matter SDK를 빌드를 해봤는데 큰 문제가 없이 빌드가 가능하더군요.

리눅스는 칩셋 제조사인 Espressif 에서도 우분투 20.04 이상을 추천을 하고 있습니다. 우분투 20.04 혹은 우분투 22.04 등을 설치하여 사용하면 됩니다.

위 링크 글은 Matter SDK 관련 ESP32 의 가이드 문서입니다. 저도 ESP32 뿐만 아니라 Matter SDK 를 사용해본 경험이 별로 없기 때문에 이참에 공부하면서 이 글을 작성하고 있습니다.

우분투 20.04 이상이 준비가 되었다면 먼저 ESP32 의 개발도구인 ESP IDF 를 다음의 명령어로 설치합니다.

git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf; git checkout 6b1f40b9bf; git submodule update --init --recursive;
./install.sh
cd ..

Matter SDK 를 빌드하기 위해서는 아래와 명령어로 추가 패키지를 설치합니다.

sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev libgtk-3-dev

ESP IDF 를 설치한 다음에는 Matter SDK 를 아래 과정으로 다운로드 및 빌드 합니다.

cd esp-idf
source ./export.sh
cd ..

git clone --depth 1 https://github.com/espressif/esp-matter.git
cd esp-matter
git submodule update --init --depth 1
cd ./connectedhomeip/connectedhomeip
./scripts/checkout_submodules.py --platform esp32 linux --shallow
cd ../..
./install.sh
cd ..

위 절차대로 진행을 하면 ESP32 Matter SDK 를 clone 하고 Matter SDK를 빌드를 하게 됩니다.

요 화면이 나올 때 환경 체크 및 Matter SDK 의 빌드가 진행이 되고요.

요렇게 메시지나 나타난다면 Matter SDK 빌드가 완료가 된 겁니다.

참고로 WSL 로 빌드를 하다가 에러 메시지가 발생할 수 있습니다. 그 이유는 “메모리 부족” 때문인데요, 아래 명령어로 Swap 파일의 사이즈를 늘리면 빌드가 가능해 집니다.

sudo mkdir -p /var/cache/swap/
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
sudo chmod 0600 /var/cache/swap/swap0
sudo mkswap /var/cache/swap/swap0
sudo swapon /var/cache/swap/swap0
sudo swapon -s

저는 WSL 로 우분투 22.04 에서 빌드 성공한 것을 확인 했습니다. 여기까지 진행을 했다면 Matter SDK 를 사용할 수 있고 idf.py 를 통해 ESP32 의 Matter 앱을 빌드하여 ESP32 에 다운로드를 할 수 있습니다.

ESP32-S3 에 Matter 예제를 빌드하여 ESP32-S3 보드에 다운로드 해보기

ESP32의 개발 도구들의 설치 완료 및 Matter SDK 의 빌드 및 설치가 완료 되었다면 이제 Matter 어플리케이션의 예제들을 빌드하여 내가 가지고 있는 ESP32 보드에 다운로드하여 확인할 수 있습니다. 그럼 Matter 예제들을 어떻게 빌드하는지 알아보겠습니다.

만약 개발환경을 저와 같이 WSL 로 구축을 했다면 아래 글을 참고하여 USB 포트를 활성화 해줘야만 합니다.

ESP32 보드는 USB 포트로 연결하여 빌드된 이미지 파일을 다운로드 할 수 있기 때문입니다.

여기까지 준비가 되었다면 ESP32 IDF 와 Matter SDK 의 환경을 export 해 줍니다.

cd esp-idf; source ./export.sh; cd ..
cd esp-matter; source ./export.sh; cd ..

이미 export 가 되었다면 굳이 위의 명령어를 통해 export 를 하지 않아도 됩니다.

Matter SDK의 examples 에 들어가 보면 Matter 로 제어할 수 있는 디바이스 들의 예제들을 빌드하는게 가능합니다.

위 경로는 esp-matter 의 examples 안에 있는 예제들입니다. 이중에서 light 라는 예제를 빌드를 해보도록 하지요.

먼저 빌드한 이미지 파일을 다운로드 하려는 타겟 보드를 설정해 줍니다.

idf.py set-target esp32s3

제가 가지고 있는 보드가 ESP32S3 계열이므로 위와 같이 설정해 주면 됩니다. 그 다음에 light 의 경로로 이동하여 다음과 같이 ESP IDF 로 빌드를 하면 됩니다.

idf.py build

위 명령어를 실행하면 light 의 예제 소스들을 컴파일하게 됩니다. 약간이 시간이 지나면 소스가 문제가 없다면 빌드가 완료됩니다. 아래는 light 예제의 빌드가 완료된 모습입니다.

여기까지 완료가 되었으면 ESP32 보드를 PC의 USB 케이블에 연결하고 WSL의 USB 포트를 활성화 해줍니다. (WSL을 사용한다면)

제가 사용하는 WSL 리눅스에서 잘 인식이 된 것을 확인하였습니다.

이제 연결한 타겟보드로 빌드한 light 예제를 다운로드를 하면 됩니다. 그 전에 먼저 사용하는 리눅스 계정이 “root” 권한으로 되어 있어야 합니다. 그래야 USB 시리얼포트로 접근이 가능합니다.

idf.py flash monitor

위 명령어를 통해 ESP32 타겟 보드에 빌드한 이미지 파일을 다운로드 하면 됩니다. 그런데 여기서 제가 보유한 ESP32-S3 보드의 경우에는 JTAG/DEBUG 보드를 활성화를 해줘야 다운로드가 가능합니다.

ESP32 를 연결한 USB 포트가 JTAG/Debug 유닛으로 되어 있어야 합니다. 그렇지 않으면 다음과 같이 flash 명령어를 사용하면 정상적으로 다운로드가 진행이 되지 않네요.

리눅스 상에서도 아래와 같이 USB 포트가 인식이 되어야 됩니다.

lsusb 로 위와 같이 나타나는지 꼭 확인하신 다음에 다운로드를 진행해 주세요. 위 모드로 바꿔줄려면 Boot Mode 를 변경해야 합니다.

(보드사진)

위의 사진을 보면 RST 버튼과 O 버튼이 있는데 Boot Mode 를 변경하려면 O 버튼을 누른 상태에서 RST 버튼을 눌러주면 됩니다.

Matter 예제의 light 이미지의 다운로드가 완료된 모습입니다. 이 상태에서 전원을 껐다 켠 다음에 시리얼로 확인해 볼까요?

light 예제가 정상적으로 다운로드가 되어 동작하는 것을 볼 수 있습니다. 이제 이 상태에서 Matter Hub 와 연동을 하면 됩니다.

지금까지 ESP32-S3 보드를 사용하여 Matter 예제를 빌드하여 다운로드 하는 과정을 살펴봤습니다. 실제로 Matter Hub 와 연동하는 부분은 별도의 글로 설명을 해보도록 하지요.