먼저 LOLIN D32 보드 set up 과정을 아래 순서로 거쳤다.
1. 아두이노 IDE 설치
2. CH340 드라이버 PC 버전 설치
3. 아두이노 IDE에 LOLIN D32 보드 설치
부가적으로 GIT 설치 (설치 내역 확인하기)
다음에 LOLIN D32 보드에
LED Blink 예제를 실행하고자 하였다.
툴에서 포트와 보드 설정을 하였다.
컴파일 후 업로드 했더니 에러가 발생하였다.
에러 내용은 다음과 같다.
스케치는 프로그램 저장 공간 210609 바이트(16%)를 사용. 최대 1310720 바이트. 전역 변수는 동적 메모리 16044바이트(4%)를 사용, 311636바이트의 지역변수가 남음. 최대는 327680 바이트. 스케치를 업로드 하는 동안 에러가 발생하였습니다. esptool.py v3.3 Serial port COM3 Connecting.....................................스케치를 업로드 하는 동안 에러가 발생하였습니다. . A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode. For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html |
장치 관리자에 들어가서 포트를 확인하도록 한다.
COM3에 LOLIN D32가 연결된 것이 맞는 것을 확인
그렇다면 보드 설정을 바꿔본다. ( LOLIN D32 > WEMOS LOLIN32)
그래도 같은 에러가 뜬다.
reset 버튼을 길게 누른 상태에서 업로드를 실행하였더니 아래와 같은 에러가 발생하였다.
스케치는 프로그램 저장 공간 210609 바이트(16%)를 사용. 최대 1310720 바이트. 전역 변수는 동적 메모리 16044바이트(4%)를 사용, 311636바이트의 지역변수가 남음. 최대는 327680 바이트. esptool.py v3.3 Serial port COM3 Connecting.....................................스케치를 업로드 하는 동안 에러가 발생하였습니다. . A fatal error occurred: Failed to connect to ESP32: No serial data received. For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html |
boot mode에서 download mode로 가게 하려면 어떻게 해야 할까.
https://diyver.tistory.com/185
위 블로그를 참고했다.
내가 가지고 있는 LOLIN D32는 너무 작아서 FLASH 버튼이 따로 존재하지 않는다.
따라서 업로드 모드에는 GPIO 0번 핀과 GND를 점퍼핀으로 연결시키고
부트 모 드에서는 다시 분리 시켜야
업로드 한 코드가 해당 모듈에서 잘 작동한다.
해결~ 굳!
중간에 EN(enable)과 GND 사이에 CAPACITOR 10uF를 넣고 연결하기 위해
찾으러 다니던 중에
만능 기판에 해당 캐패시터를 찾아 납땜 해주시는 등 현도 선임님이 도와주셨다.
(캐패시터 크기가 0.01T였나 매우 작아서 거의 보이지 않았다.. )
정말 의사 수술 장면 같은 경외감 들었다...소름이 쫙..
멀티 미터로 전류가 들어오는지, 분리가 잘 되게 납땜 되었는지 확인까지 해주셨다.
비록 사용할 일은 없었지만 옆에서 보고 배울 수 있는 경험을 선물해 주셨다.
업로드 완료
업로드 후 GPIO0 - GND 로 연결된 점퍼선을 분리하였다.
분리하니 파란색 LED가 들어왔다.
코드
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}