2017년 6월 10일 토요일

ESP8266 deepSleep 활용하기

1. deepSleep ?


 ESP8266은  deepSleep mode를 제공한다.  이 상태의 ESP8266은 소비 전력이 0mA에 가깝다. 전력을 극히 적게 소모하기 때문에, 일반적으로 전력량을 측정하는 기계로는 측정이 안된다. (1mA 까지 측정 가능한 기계로 측정 불가능).
 delay() 함수와는 전혀 다르다. delay() 함수는 설정된 시간만큼 대기하며 전력소비는 동일하지만, deeSleep mode에서는 소비전력이 전혀 없다.
 단점은 깨어날때 리셋한 것과 동일한 효과가 발생한다. 물론 큰 문제는 없다.  필요 내용을 저장하면 리셋되더라도 보존되기 때문이다.


2. 어떻게 사용하는가 ?


 단순히   ESP.deepSleep(33 * 1000000); 와 같이 호출하면된다. 이처럼 호출 하면 33초간 deepSleep모드에 진입한 후에, 깨어나기를 시도한다. 코딩시 주의 사항이라 하면 setup() 함수에서 모든걸 해결하면 된다. loop() 함수는 의미 없다고 생각하면 된다.


3. 왜 안깨어 날까?


 너무나 좋은 기능 이기에 바로 사용하기로 마음 먹었지만 쉽게 깨어나지 않았다. 정확한 표현으로는 전혀 깨어나지 않았다. 몇일의 삽질끝에 이 기능은 소프트웨어로만 단순하게 해결 되는 것이 아니였다.
PIO16 과  Reset 핀을 연결하여야 했다. ( WeMos D1  모듈 기준으로는   D0  와   Reset Pin 을 연결하면 된다.)
 알고 보면 쉽고, 글을 제대로 읽었어도 알게 되었을 이런 내용을 쉽게 캐치하지 못한 내가 원망 스러웠다.

4. 어디에 사용할까?


 deepSleep 모드를 이용하는 이유는 소비전력를 위해서 이다. 18650 배터리 한개로 한달 이상의 기능을 수행한다면 굳이 전력선이 필요 없을 수도 있다.  ESP8266은 무선 통신 모듈이다. 전선으로 부터 자유롭기 위하여 사용하는 무선 통신 모듈인데, 언제나 전력선이 문제가 되어서 임의 설치가 불가능했다. 이 기능을 이용하면 배터리로 몇달을 동작 시킬수도 있는 상황인 것이다.
 2분 간격으로 주변의 온도와 습도를 읽어서 데이터를 서버에 전송하고 deepSleep모드로 진입하는 시스템을 테스트해보니 하루에 필요한 전력량이 70mAh였다.  18650 배터리 중에서 일반적인것도 2600mAh 이니 산술적 계산으로 한달은 넘게 동작 가능하다. 태양광 패널만 붙여주면 1년 열두달 알아서 잘 동작하는 시스템이 되는 것이다.


댓글 없음:

댓글 쓰기

3단 6핀 스위치로 DC 모터의 회전 방향을 바꾸어 보자

1. 필요는 연구의 어머니 항상 느끼는 부분이다. 필요하지 않으면 연구하지 않으며, 필요하면 연구한다. DC 모터를 조건에 따라서 정방향 또는 역방향으로 회전시켜야 하는 필요가 생겼다. 처음에는 MCU 및 Relay Switch를 이용하는 방법을 생각...