맥북에서 Wemos D1 R2 아두이노를 연결해 코드를 업로드 하려는데 자꾸 오류가 떴다.
오류 내용은 다음과 같다.
A fatal esptool-py error occurred: Failed to connect to ESP8266: Timed out waiting for packet headerUser
그리고 터미널을 보니 이전에 업로드 했던 코드의 출력들이 계속 떴다.
아마도 어떤 문제 때문에 아두이노에 내가 쓴 코드들이 올라가지 못하고 있는 것 같았다.
Chatgpt에게 아무리 물어봐도 정확하게 이유를 말해주지 못해서 검색을 하다가, 다시 또 gpt에게 묻다가를 반복하다가 이유를 찾았다.
검색으로 찾은 대부분의 문제는 CH340 칩셋 드라이버를 깔아주는 것으로 해결하고 있었다.
검색을 하다가 찾은 공식 사이트에서는 아래와 같이 나와 있었다.
글을 읽어보면 맥북에서 Mojave 이후의 버전은 따로 칩셋 드라이버를 설치할 필요가 없다고 한다.
애플에서 자체 드라이버를 제공하기 때문에 설치를 할 경우, 오히려 드라이버 충돌로 문제가 발생할 수 있다.
그렇게 검색을 하다가 결국 문제를 찾았다.
오류의 원인은 usb 허브에 있었다.
맥북의 특성상 usb 포트가 부족하거나, A 타입의 usb포트가 없어서 허브를 이용하게 된다.
나 또한 아래처럼 usb허브를 이용해 아두이노를 연결했다.
이렇게 하면 아두이노로 보내는 플래시 신호의 타이밍이 미세하게 달라져, 보드가 자동으로 플래시 모드로 진입하지 못한다고 한다.
이 내용에 대한 깃허브의 트러블 슈팅 내용도 있다.
이런 문제는 usb-C 타입에서 usb-A 타입으로 연결할 때 두드러진다고 한다.
usb 포트를 이용해 아두이노를 연결했다면, 아두이노를 강제로 플래시 모드로 진입시키는 수 밖에 없다.
먼저 보드의 GPIO0(D3) 핀과 그라운드(GND) 핀을 연결한다.
그리고 보드의 리셋 버튼을 누른다.
이렇게 하면 보드가 플래시 모드로 진입한다.
핀을 빼면 플래시 모드에서 해제되니 업로드 전에는 핀을 뽑지 않는다.
그리고 아두이노에서 파일을 업로드 해보면....
업로드가 된다.
업로드가 끝난 뒤에는 핀을 제거해주면 된다.
어제 아두이노를 가지고 이것저것 해보려고 하다가 이것 때문에 총 5시간을 날렸다.
그래도 이렇게 헤메고 고민하면서 하나 익히면, 그 기억은 엄청 오랫동안 유지된다.
다음에 나와 같은 문제를 주위에서 겪고 있을 때 도와줄 수 있을 것 같다.
어젯밤부터 고민했는데 이제 좀 속이 후련한다.
고생한 뒤 문제를 해결했을 때의 짜릿함은 언제나 즐겁다.