ESP8266 NodeMCU
1) ESP-12 모듈에 USB와 아두이노 IDE환경 지원 등을 추가하여 아두이노의 한 종류처럼 개발된 모듈
2) IOT(Internet Of Things)환경에서의 기본형 프로세서로 많이 사용
3) 장점
(1) 아두이노 + WiFi 통신 장치보다 NodeMCU 하나를 사용하는 것이 가격도 저렴하고 부피도 적다.
(2) 하나의 모듈안에서 WiFi 가 기본 지원되므로 사용하기 간편하다.
(3) NodeMCU 안에 내장된 프로세서의 속도(80MHz)가 아두이노(16MHz) 보다 빠르다.
4) 단점
(1) 사용 가능한 입출력 핀 수가 적다.
(아날로그 입력핀은 1개 밖에 없으며 디지털 입출력핀은 5~8개 밖에 사용할 수 없다.)
GPIO 0번, 2번, 15번 핀은 부팅 모드를 설정하기 위해 내정되어 있기 때문에 사용 시에 주의해야 한다.
GPIO 1번, 3번 핀은 시리얼 통신용이다.
GPIO 6번 ~ 11번 핀은 플래시 메모리용으로 이미 사용 중이므로 이용할 수 없다.
GPIO 16번(D0) 핀은 Sleep Mode에서 벗어나기 위한 목적의 Wake 용으로 사용된다.
따라서 사용자가 조건 없이 범용으로 사용할 수 있는 핀은 GPIO 4번(D2), GPIO 5번(D1), GPIO 12번(D6), GPIO 13번(D7), GPIO 14번(D5) 다섯 개 밖에 되지 않는다.
내장 LED는 GPIO 2번(D4) 핀에 연결되어 있다.
(2) WiFi 가 가동될 때 전력 소비가 커서 배터리 환경에서는 오래 가동시킬 수 없다.
(절전 Sleeping 모드를 사용하여 배터리 사용 시간을 연장할 수 있음)
아두이노 IDE 환경 구성
아두이노 IDE에서 ESP8266기능을 사용하려면 다음과 같이 ESP8266 보드메니저를 추가해 주어야 한다.
Arduino IDE를 기동시키고 '파일' → '환경설정' 메뉴를 선택한다.
'환경설정' 화면 '추가적인 보드 메니저 URLs' 항목에 다음의 주소를 추가한다.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
'아두이노 IDE' 상단 메뉴에서 '툴' → '보드' → '보드 매니저' 를 선택한다.
'보드 매니저' 에서 'ESP8266' 을 입력한 후 설치한다.
설치가 끝나면 '아두이노 IDE' 를 종료하고 재실행 한다.
보드에서 'NodeMCU 1.0 (ESP-12E Module)' 을 선택한다.
'Sleep Mode' 사용하기
ESP8266 모듈은 기본적으로 전력 소모량이 많은데, 이 단점을 보완하기 위해 'Sleep Mode' 기능을 지원한다.
'Sleep Mode' 는 사용 중지 상태로 대기하고 있다가 어떤 조건이 만족되면 다시 깨어나 작동하는 기능으로 전력 소모가 거의 없다.
1) 'Sleep Mode' 를 이용하기 위해서는 GPIO 16번(D0) 핀을 RST(Reset) 핀에 연결한다.
2) 수면 모드 진입 : 다음과 같이 'Sleep Mode' 를 지정하면 지정한 시간 만큼 Sleep 모드 후 자동으로 다시 시작된다.
const unsigned long stime = 60000000; // 60초, 백만분의 1초 단위
ESP.deepsleep(stime);
3) 수면 모드 탈출 : 수면 모드 진입 시에 지정된 시간이 경과 되거나 RST 핀에 LOW 신호를 입력하면 다시 깨어나게 된다.
'Sleep Mode' 에서 깨어 나면 정지 되었던 시점부터 다시 시작하는 것이 아니라 프로그램이 완전히 재시작하여 setup() 함수부터 다시 시작한다.
const unsigned long sTime = 10000000; // 10초, 백만분의 1초 단위
void setup() {
Serial.begin(115200);
Serial.println("program start");
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW); // LED ON
delay(5000);
digitalWrite(LED_BUILTIN, HIGH); // LED OFF
ESP.deepSleep(sTime);
}