프로그래밍/ESP-32

[ESP-32] ESP32 VSCode에서 Hello World 출력

Beginner:) 2023. 12. 14.
320x100

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

반응형

댓글