ESP8266과 ESP32는 Toolchain이 다르기 때문에 혼동하지않도록 주의한다.
환경은 Ubuntu20.04, ESP32-Cam을 사용하며 아두이노가 아닌 VSCode로 SDK를 직접 구성하고 CMake를 통해 빌드, flash한다.
1. 필수 구성요소 설치
python3, cmake, ninja, git 등을 설치
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
2. ESP-IDF Library 가져오기
ESP8266에도 ESP-IDF Library가 존재하는데, 폴더명이 똑같으니 혹시 같이 사용할 경우를 대비하여 폴더명을 따로 지정한다.
mkdir ~/esp32
cd ~/esp32
git clone --recursive https://github.com/espressif/esp-idf.git
3. 구성&환경변수 설정
컴파일러, 디버거 등을 설치하고 환경변수를 등록한다.
환경 변수(export)의 경우 재부팅하면 "idf.py" 명령어 인식을 못하니 ~/.bashrc등으로 영구 등록도 가능
cd ~/esp32/esp-idf
./install.sh esp32
. ./export.sh
4. 샘플 프로젝트 이동
git clone을 한 위치에서 "examples/get-started/hello_world" 샘플 폴더로 이동한다.
cd ~/esp32/esp-idf/examples/get-started/hello_world
5. ESP32 장치 연결
- ESP32-CAM + 업로드 보드 + 5핀 케이블
이 경우 계속 receive data가 없다고 하며 오류가 떠서 수행을 하지 못했고
- ESP32-CAM + USB to UART
3.3V를 권장한다고 하여서 연결해보았으나 업로드보드와 같은 현상이었고(TX 불은 들어오나 RX불이 안들어옴) 5V를 연결하니 정상수행하였다.
(GND도 5V옆 핀을 사용)
- Port 확인
보통 Linux에서는 "/dev/ttyUSB0", Windows에서는 "COM[num]"일 것인데,
Ubuntu에서는 "sudo dmesg | grep tty" 또는 연결제거 후 "ls /dev", 연결 후 "ls /dev"로 연결 포트를 확인한다.
Ubuntu에서는 build시 연결을 확인했음에도 불구하고 연결되지 않았다는 오류가 발생할 수 있는데, 권한 문제일 확률이 높다.
"sudo chmod a+rw /dev/ttyUSB0"으로 권한을 설정하고 다시 시도해보자.
6. 프로젝트 구성
idf.py로 해당 프로젝트 구성을 변경할 수 있는데, 자세한건 "idf.py --help" 명령어로 확인하자.
cd ~/esp32/esp-idf/example/get-start/hello_world
idf.py set-target esp32
idf.py menuconfig
7. 프로젝트 빌드&플래싱
flash만 하더라도 자동 빌드되니 참고한다.
# build
idf.py build
# flash
# idf.py -p [PORT] flash
idf.py -p /dev/ttyUSB0 flash
8. Monitor
1. flash를 하면 연결되어있던 IO0과 GND핀을 분리한다. (해당 핀 연결은 Flash Mode용)
2. ESP32-Cam 뒷면에 reset 버튼을 누른다.
3. ESP-IDF에서 제공하는 모니터를 사용한다.
(putty, teraterm과 같은 Serial 모니터를 사용 가능)
# idf.py -p [PORT] monitor
idf.py -p /dev/ttyUSB0 monitor
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html
댓글