아두이노에서 ESP8266 과 Serial 통신을 하는 이야기가 아니다. ESP8266-01 은 MCU 가 포함되어 있으므로, 아두이노와의 연결 없이 독립적인 개발/실행이 가능하다.

 

ESP8266-01 을 이용한 프로그래밍

 

인터넷에 자료를 보면 대부분 아두이노와 ESP8266 모듈을 RX-TX, TX-RX 로 연결 한 뒤 AT 커맨드를 SoftwareSerial 로 날려서 이용을 하는 글들이 많다. 그러나 WIFI 를 이용한 스위치 ON/OFF 같은 간단한 IoT 를 개발할때는 아두이노가 굳이 필요하지 않다. 3.3V 수은전지 + ESP8266 + 릴레이 스위치 세 개면 충분하다. 그 밖에 만들려는 작품이 복잡한 HttpServer 가 필요한 상황이라면 ESP8266 을 주축으로 개발을 해 나가는게 편할 수 있다. 

아무튼 이 글에서는 ESP8266 에 직접 스케치를 올리는 개발에 대해 이야기 한다. 이렇게 하면 AT 커맨드 따위는 더 이상 쓸 수 없게 된다.

 

결과부터 이야기하자면, 내가 개발한 스케치를 올리고나서 Serial 모니터로 찍어보면 이렇게 앞 부분(부트로더)은 살아 있는것을 확인 할 수 있다. 그러므로 부트로더를 올릴 필요 없이 바로 스케치부터 올리면 된다.

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3460, room 16 
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4 
tail 4
chksum 0xc9
csum 0xc9
v0004a0d0

 

 

 

아두이노와 ESP8266 를 어떻게 결선해야 하는데?


 

이 부분에 대해서 제대로 다루는 곳이 없다. 아두이노 개발자들에게는 당연한 것이라 그런지, 자료가 잘 없어서 찾는데 조금 애를 먹었다. 나는 ATTiny85 에 부트로더를 올려서 개발하던 경험이 있는지라, ESP8266 도 뭔가 복잡한 연결을 해야 한다고 생각했다. 아두이노 부트로더는 어떻게 올리지? 이것부터가 문제였다. ATTiny 는 부트로더/스케치를 업로드 하기 위해서 ISP 통신(MOSI/MISO)을 한다. 그러기 위해서 AndroidISP 스케치를 아두이노에 먼저 올려야 했다. 그리고나서 프로그래머를 아두이노로 설정한 뒤 나머지 작업을 해야했다. 이런 나로서는 ESP8266 도 비슷한 과정을 거쳐야 한다고 생각했다. 그러나 이런 나의 생각은 잘못 된 것이었다.

 

기본적으로 PC 와 아두이노는 Serial 통신을 한다(UART). 그리고 ESP8266 도 펌웨어든 스케치든 통신을 위해서 Serial 을 이용한다. 무슨 이야긴가면, 아두이노를 USB to Serial TTL 처럼 bypass 가능한 모드로 실행 시키고, 아두이노 IDE 에서 그냥 스케치를 올리면 된다. 그러면 ESP8266 에 알아서 스케치가 올라가고 원하는 동작을 하게 된다.

 

아두이노 우노 기준으로는 위 그림처럼 하면 된다. 아두이노 메가라면 앞선 글에서 펌웨어를 올릴때와 같은 배선을 하면 된다.(https://crystalcube.co.kr/215) 메가라면 RESET 과 GND 를 연결해야 한다. 해당 포스팅을 참고하시라.

 

 

 

 

LED 를 점멸하는 간단한 스케치를 올려보자


 

복잡할게 없으므로 순서대로 방법을 나열하도록 하겠다.

 

1. ESP8266 보드를 추가

보드매니저에 ESP8266 URL 을 추가한다.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

그 뒤 '보드 매니저'에 들어가서 esp8266 으로 검색되는 것을 설치한다. 글을 쓰고있는 현재기준 3.0.2 가 최신버전.

 

2. 보드에서 'Generic ESP8266 Module' 을 선택

선택하고나면, 아래 상당히 많은 각종 설정값들이 있다. 내 느낌에는 연결된 ESP8266 의 값을 알아서 읽어온 뒤 현재값으로 자동으로 선택되는 것 같다. 왜냐면 내가 지금 연결한 ESP8266 은 약간 불량품으로 Flash Mode 가 QIO 가 아닌 DOUT 으로 되어있는데, DOUT 으로 잘 선택되어 있기 때문이다.

 

3. 이제 예제에서 Blink 를 선택해서 업로드하면 된다.

당연하게도 업로드 하는 시점에 ESP8266 의 RESET 을 GND 와 잠시 연결했다 떼어주어야 한다. 앞서 결선도라면 RESET 버튼을 한번 눌러주면 된다. 그러고나면 문제없이 스케치가 올라간다.

참고로 Blink 소스코드에서 LED_BUILTIN 은 당연히 본인이 원하는 핀으로 바꿔주어야 한다. 나는 GPIO 2 번을 사용할 것이므로 2 로 변경해주었다.

업로드가 완료된 후 ESP8266 의 FLASH 연결을 끊어주고, Reset 을 한번 해 준다. 그리고 GPIO 2 에 LED 를 연결 하면 Blink 되는 결과를 볼 수 있다.

 

 

 

개인적으로 ATTiny 시리즈에 부트로더를 올려서 작업하는 것을 먼저 경험했던터라 너무 어렵게 생각했던 것 같다.

모쪼록 이제 본격적으로 ESP8266 을 가지고 놀아봐야겠다.

 

 

 

 

 

 

'Hardware' 카테고리의 다른 글

아두이노의 소소한 함정들  (1) 2024.10.19
타이머 LED 만들기  (0) 2024.10.17
하드웨어 프로그래밍의 기초  (0) 2024.10.17
[ESP8266-01] 최신 Firmware 업그레이드  (11) 2022.03.20
전압 측정기 만들기  (1) 2020.01.31