ESP-IDF란?
ESP-IDF는 Espressif 사에서 만든 IoT 개발 툴로, 호스트인 컴퓨터와 타겟인 ESP보드간 컴파일할 수 있게 하는 툴체인이다. 실행 시 터미널창이 뜨며, 리눅스 명령어를 기반으로 사용할 수 있다. 프로젝트 생성, 수정, 컴파일, 빌드, 플래시 할 때 사용한다.
ESP-IDF는 아래 그림과 같은 순서로 프로젝트(앱)를 타겟(ESP32)에 업로드 한다.
준비물
- Mac OS / (Windows또는 Linux)
- ESP32 Board (이글은 ESP32-EYE 사용)
- USB cable
파이썬설치
python3.x 버전이 설치되어있지 않다면, 다음 홈페이지에가서 다운로드 받으시기 바랍니다. 운영체제에 따라 다운로드 홈페이지가 바뀌니 OS와 버전을 확인하시고 최신버전으로 받으시면 됩니다. (제 버전은 python 3.8.2)
https://www.python.org/downloads/
파이썬 설치를 완료하시고 다시 터미널을 열고 "python3 -V" 입력시 위에 화면처럼 설치된 버전이 확인되면 설치가 된것입니다.
그다음으로 설치해야하는 것은 pip tool과 pyserial 입니다. 터미널을열고 다음의 명령어를 입력합니다.
sudo easy_install pip
pip install --user pyserial
ESP-IDF설치
깃허브와 expressif에서 제공하는 docs를 참고.
ESP-IDf Github : https://github.com/espressif/esp-idf
Eespressif ESP32 docs : https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html
mkdir esp
cd esp
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./indstall.sh
. ./export.sh
위 사진처럼 idf.py build를 사용할 수 있다고 표시가 되면 완료.
idf.py --help
// 명령어의 도움말 확인
idf.py set-target <target>
// target을 변경한다. ESP32, ESP32S2
idf.py menuconfig
// 프로젝트 구성을 변경하기위한 툴을 실행한다.
idf.py build
// 프로젝트 빌드를 시도한다. 빌드에 변경사항이 없거나 소스가 변경안되면 이전 빌드를 유지한다.
idf.py clean
// 프로젝트의 빌드를 삭제한다. CMake의 구성 output이나 다른파일은 삭제되지 않는다.
idf.py fullclean
// 프로젝트의 빌드를 삭제한다. CMake의 구성 output도 포함한다.
idf.py flash
// target에 프로젝트를 업로드한다.
idf.py monitor
// 모니터를 연다. default baudrate는 menuconfig에서 수정가능하며 115200으로 초기설정되어있다.
idf.py clean
// 프로젝트의 빌드를 삭제한다. CMake의 구성 output이나 다른파일은 삭제되지 않는다.
idf.py fullclean
// 프로젝트의 빌드를 삭제한다. CMake의 구성 output도 포함한다.
idf.py flash
// target에 프로젝트를 업로드한다.
idf.py monitor
// 모니터를 연다. default baudrate는 menuconfig에서 수정가능하며 115200으로 초기설정되어있다.
프로젝트 빌드 및 업로드
예제 프로젝트로 이동하여 blink 예제를 빌드해보기
cd esp-idf/examples/get-started/blink
idf.py menuconfig
ESP32 보드마다 LED장착 GPIO핀이 다르다. ESP-EYE의 LED핀은 GPIO21 에 있다.
Example Configuration 에 들어가서 GPIO를 21로 변경하였다.
그리고 Component Config -> Driver Configurations -> RTCIO configuration -> Enable Support array 'rtc_gpio_desc' for ESP32
로 설정.
ESC를 누르면서 마지막에 저장하겠냐는 물음[Y/N]에 Y를 입력하면 menuconfig 설정 완료
빌드 ESP32 보드 확인
idf.py build
툴체인의 컴파일러가 해당하는 프로젝트의 MakeLists.txt를 살펴보며 프로젝트의 Component엔 이상이 없는지, main.c에는 이상이 없는지 확인하는 작업을 거친다. 또한 ESP-IDF의 내장된 Component에도 접근하여 필요에 의해 선언한, 또는 필수적으로 돌아가야하는 Component들의 컴파일작업을 마친다. 빌드는 컴퓨터의 성능에 따라 시간이 걸린다. 빌드는 Component의 변경이 없거나 소스의 변동 없으면 이전빌드를 유지한다. 빌드가 완료되면 blink 디렉토리에 build라는 디렉토리가 생성된다.
빌드가 완료된 화면.
이제 flash를 통해 ESP-EYE에 blink 프로젝트를 업로드.
idf.py flash
flash 가 완료된 상태
GPIO 21 에 연결된 빨간색 LED가 1초간격으로 깜빡이는 것을 알 수 있다.
idf.py monitor
모니터를 이용해서 현재 LED의 상태 또한 확인 할 수 있다. 모니터에서 나오려면
command+ ']'
를 입력하면 된다.
총평
ESP32는 아두이노보다 10배이상 빠르고 저렴한데다가($3~5) Wi-Fi, Bluetooth, Low Power Management, Uart, SPI, I2C, GPIO, PWM 등의 추가적인 기능들이 많이 달려있어서 저전력 LoRa를 이용한 배터리내장 센서, 홈 IoT, 기타 센싱, 통신 등에 특화되어있는 MCU다. 사용법 또한 간단한편(?) 이고 이미 많은 제품들(샤오미 무드등, RF무선조종 RC카, 적외선리모콘 등)이 ESP8266, ESP32 등을 탑재한 상태이다. 독자적인 ESP-IDF를 제공하고 있기 때문에 카메라 모듈을 사용한 사람인식, 음성인식을 통한 제어, AWS IoT MQTT을 활용한 센서데이터 전송, 구글홈을 이용한 IO 스마트 스위치제어, 애플 홈킷에 연동한 스위치제어, PWM제어등 응용분야가 아주 많다. 실생활에 필요한 제품을 포함해서 기업에서 필요로하는 센서데이터를 무선으로 전송할 수 있는 모듈같은 것을 개발하기에 아주 적합한 제품이다.
'임베디드 용어설명' 카테고리의 다른 글
JLCPCB VIA 홀 옵션에대한 설명(tented,untented,plugged,…) (0) | 2022.12.23 |
---|---|
라즈베리파이 pi 로그인이 안됨 해결방법.(Bullseye 버전 이후 default ID 삭제) (0) | 2022.09.20 |
Raspberry pi cm4 SPI0 CE0 CE1 사용 / ENC28J60, TFT 2.2 LCD 사용 (0) | 2021.06.17 |
STM32F105 CDC라고 쓰고 USB 가상포트 라고 읽는다. (0) | 2021.04.22 |
STM32F103 UART TX를 OD핀으로 쓰기. 3.3v 신호를 5v 신호로 레벨시프트(3.3 v -> 5v level shift) (0) | 2021.04.13 |