ESP-12E 스케치 업로드 및 사용방법

ESP-12E 스케치 업로드 및 사용방법

ESP 칩을 NodeMCU, Wemos 등과 같은 개발용 보드로 사용하여 USB 컨버터 걱정없이 하는 것과 달리 직접 ESP 칩을 다뤄보면 생각 이상으로 예상치 못한 변수가 많이 등장합니다.

저 또한 제법 긴 시간의 삽질을 했지만 ‘초코볼(Chocoball)’님의 게시글 덕분에 정말 많은 시간을 아낄 수 있었습니다. ESP-12E 칩을 사용하여 코드를 업로드하는 과정을 직접 해보면서 생겼던 일들을 초코볼님의 게시글에서 다루는 내용에 덧붙여 설명해보려고 합니다.

‘ESP-12E’란?

그림1

ESP-12E는 ESP8266 시리즈 모듈 중 하나로 위 사진의 NodeMCU라는 개발용 보드에도 사용하고 있는 모듈의 이름입니다. ESP8266 + CPU가 내장되어 아두이노 IDE로 코드를 업로드하여 WiFi와 ESP 관련한 기능을 사용하는데 합리적인 모듈이죠.

안정적인데 가격도 저렴하고, 속도도 빠르며, 적당한 GPIO 핀도 갖춘 모듈입니다.

그런데 이 모듈에 아두이노 IDE를 통한 스케치를 업로드를 하겠다면 별도의 추가 작업을 동반합니다.

  • 스케치 업로드를 위한 하드웨어 + 회로 세팅
  • 특정 AT 커맨드 & WiFi/ESP 라이브러리 사용을 위한 모듈 펌웨어 업그레이드

그림2

새로 구매한 모듈이라면 위의 2가지는 꼭 필요로 하고 생각 외로 시행 착오로 시간을 많이 소요할 수 있으므로 구매 및 사용에 꼭 유의하시기 바랍니다.

‘별도의 추가 작업’에 대한 개요

우선 가장 큰 난관이 될 수 있는 하드웨어 + 회로 세팅입니다. 두 번째인 펌웨어 업그레이드도 회로 세팅이 완료되어야 가능한 부분이라 중요합니다.

이 작업이 필요한 과정을 빠르게 훑어 보겠습니다.

그림3

위의 이미지처럼 GPIO0, 18번 핀에 pull-up 연결 유/무에 따라서 Programming Mode 또는 Normal Mode로 전환됩니다.

  • Programming Mode로 부팅 시, 스케치를 업로드할 수 있는 상태로 여러분이 프로그래밍한 코드를 넣을 수 있는 모드입니다.
  • Normal Mode로 부팅 시, 프로그래밍한 코드를 업로드할 수 없고, 이미 모듈에 업로드를 한 경우 업로드한 코드 내용대로 동작할 수 있는 상태입니다. Normal Mode가 일반적인 동작 모드입니다.

이렇게 2가지 모드로 구분됩니다. 18번 핀에 pull-up을 인가하면 코드를 업로드, 아닌 경우 코드를 동작하는 걸 테스트하는 것으로 구분하시면 됩니다.

어찌어찌 Programming Mode로 부팅하여 업로드를 마무리하고 재부팅했다고(전원 재인가) 생각해 봅시다. 여러분이 프로그래밍한 코드가 HTTP 클라이언트 또는 서버를 사용하는 코드였다고 가정해보겠습니다.

주변 WiFi를 스캔까지는 문제없는데 HTTP 클라이언트 또는 서버가 연결했을 때 떠야할 문자열 print()를 하지 않고, 아무런 동작도 하지 않는 상황에 빠집니다.

이는 아래의 그림을 예시로 보겠습니다. (실제 버전과 커맨드의 종류는 관련 없는 예시일 뿐입니다, 주의하세요.😅😄)

그림4

구매하신 ESP-12E의 초기 버전이 낮아서 사용하려는 WiFi/ESP 관련 라이브러리가 동작하지 못하는 경우일 수도 있습니다. 이 때문에 펌웨어 업그레이드를 최신화하여 Normal Mode에서 동작하는데 문제가 없도록 할 필요가 있습니다.

펌웨어 업그레이할 때도 Programming Mode로 부팅을 하셔야 펌웨어 설치가 정상적으로 연결됩니다.

펌웨어 업그레이드도 완료하고 스케치도 정상적으로 업로드한 상태에서 Normal Mode로 진입하여 부팅을 해보시면, 코드가 정상적으로 동작하는 것을 확인하실 수 있습니다.

하드웨어 + 회로 세팅부터 살펴보기

그림5

회로 구성은 위와 같습니다. 3.3V의 전원과 연결되는 핀, GND로 연결되는 핀을 잘 확인하시고 제일 중요한 건 GPIO0, 18번 핀입니다. 저의 경우 18번 핀에 스위치를 추가해서 pull-up GND를 인가할 때는 스위치를 누른 상태로 전원을, Normal Mode로 할 때는 스위치를 누르지 않는 상태로 전원을 인가하는 방식으로 구성했습니다.

회로 구성을 직접 실장할 수 있는 부품과 도구가 있다면 직접하실 수 있고, 이게 좀 번거롭다면 모듈 어댑터 제품이 있는 이를 구매하셔서 사용하시는 걸 추천드립니다.

그림6

모듈 어댑터라면 브레드 보드에서 좀 더 수월하게 회로 구성을 가져갈 수 있을테니까요.

3.3V를 인가했을 때 Normal Mode의 경우 0.06A, Programming Mode의 경우 0.03A 였습니다. 참고하시기 바랍니다.

펌웨어 업데이트 살펴보기

👉Non-OS SDK 공식 깃허브 다운로드 홈페이지

👉ESP8266 Download Tools 공식 다운로드 홈페이지

Non-OS SDK가 펌웨어에 필요한 소스 파일, Download Tools가 이 SDK를 ESP-12E 모듈에 설치하도록 도와주는 프로그램입니다.

이 2가지를 설치하시고, ESP-12E 모듈을 Programming Mode로 진입하여 펌웨어 업데이트를 하셔야 합니다.

1. ESP8266 Download Tools 설치

우선은 Download Tools부터 설치하도록 합시다.

위의 Download Tools 페이지를 클릭하시면 아래의 이미지처럼 ‘Flash Download Tools’를 다운로드 받을 수 있고, 해당 툴은 압축 파일로 이루어져 있습니다.

그림7

해당 포스팅 기준으로 Release Date는 2023.06.12 / flash_download_tool_3.9.5.zip 압축 파일을 다운로드 받았습니다.

그림8

압축을 해제하시고 폴더 내부로 이동하시면, 위와 같이 ‘flash_download_tool_3.9.5.exe’ 실행 파일이 있습니다. 실행해주도록 합시다.

그림9

위와 같은 초기 설정창이 뜨는데 OK를 클릭해주세요.

그림10

이제 위의 이미지와 같은 창을 통해서 펌웨어 업데이트를 하는 것입니다. 간략히 설명을 덧붙이면, 1번은 좌측 네모 칸에 특정 바이너리 파일을 지정하고 우측 네모 칸에는 메모리 주소를 지정하고 2번, ‘START’를 클릭해 해당 내용을 모듈에 전달하는 것입니다.

2. Non-OS SDK 바이너리 파일 및 메모리 주소 등록

1번의 바이너리 파일은 Non-OS SDK로 다운로드 받은 파일들에 해당합니다. Non-OS SDK도 압축파일로 이루어져 있습니다. 압축을 해제해 두시고 다시 Download Tools로 돌아갑니다.

ESP8266Ex 데이터시트를 살펴보면, 아래와 같이 필요한 바이너리 파일과 메모리 주소를 안내하고 있습니다.

그림11

해당 내용을 참고하여 다운로드 받은 Non-OS SDK의 바이너리 파일과 메모리 주소를 Download Tools에 지정해야 합니다.

아래 이미지는 다운로드 폴더에 설치했던 Non-OS SDK 바이너리 파일 지정한 경로와 메모리 주소입니다. 참고하셔서 바이너리 파일을 지정하시기 바랍니다.

화면의 중앙 아래를 보시면 ‘COM:’에서 본인이 사용하고 있는 모듈의 포트 번호를 맞추는 것도 잊지 마시길 바랍니다.

바이너리 지정과 포트 연결까지 확인하셨다면 이제 START를 눌러 펌웨어 업데이트를 마무리하시면 됩니다.

그림12

정상적으로 업데이트가 완료했다면 아래의 이미지처럼 FINISH가 뜹니다.


이 과정을 거치셨다면 ESP-12E 모듈에 스케치를 업로드, 특정 아두이노 ESP 라이브러리 동작 확인에 문제가 없을 것으로 보입니다.

큰 줄기에서 ESP-12E 단일 모듈을 사용하면서 발생하는 문제에 대한 솔루션이라 디테일한 내용이 빠져 있을 수도 있습니다만, 이 글의 흐름을 알고 계신다면 어느 정도 길잡이가 될 것으로 보입니다.

해당 모듈의 난관을 헤쳐나가는데 초코볼님의 포스팅 덕분에 많은 시간을 아낄 수 있었습니다. ESP-12E 모듈 외에도 ESP 모듈의 사용 기록을 세세히 적어두셨으니 참고하셔서 읽어보시길 권합니다, 감사합니다.

👉초코볼님의 ESP 사용기