IoT 혁명이 날마다 붐을 일으키면서 연결된 장치의 수가 매우 빠르게 증가하고 있습니다. 앞으로는 대부분의 장치가 서로 연결되어 실시간으로 통신 할 것입니다. 이러한 장치가 직면 한 문제 중 하나는 전력 소비입니다. 이 전력 소비 요인은 모든 IoT 장치 및 IoT 프로젝트에서 중요하고 결정적인 요인 중 하나입니다.
ESP8266은 모든 IoT 프로젝트를 구축하는 데 가장 널리 사용되는 모듈 중 하나라는 것을 알고 있으므로이 기사에서는 모든 IoT 애플리케이션에서 ESP8266을 사용하면서 전력을 절약하는 방법에 대해 알아 봅니다. 여기에서 LM35 온도 센서 데이터를 15 초 간격으로 ThingSpeak 클라우드에 업로드하고이 15 초 동안 ESP8266은 전력을 절약하기 위해 DeepSleep 모드 로 유지됩니다.
전력 소비를 최소화하는 다양한 방법
임베디드 및 IoT 장치의 전력 소비를 최적화하는 방법에는 여러 가지가 있습니다. 최적화는 하드웨어 및 소프트웨어에서 수행 할 수 있습니다. 때때로 우리는 전력 소비를 줄이기 위해 하드웨어 구성 요소를 최적화 할 수 없지만 코드 명령 및 기능을 변경하고 최적화하여 소프트웨어 측에서 수행 할 수 있습니다. 뿐만 아니라 개발자는 클록 주파수를 수정하여 마이크로 컨트롤러 전력 소비를 줄일 수도 있습니다.데이터 교환이 없을 때 하드웨어를 휴면 상태로 만들고 특정 간격으로 정의 된 작업을 수행하는 펌웨어를 작성할 수 있습니다. 절전 모드에서는 연결된 하드웨어가 전력을 매우 적게 소모하므로 배터리가 오래 지속될 수 있습니다. 전력 소비 기술에 대해 자세히 알고 싶다면 마이크로 컨트롤러의 전력 소비 최소화를 읽어 볼 수도 있습니다.
ESP8266 모듈은 가장 널리 사용되는 Wi-Fi 모듈로, 절전 모드를 포함한 다양한 모드를 가진 작은 크기의 많은 기능이 제공되며 이러한 모드는 하드웨어 및 소프트웨어의 일부 수정을 사용하여 액세스 할 수 있습니다. ESP8266에 대해 자세히 알아 보려면 ESP826 Wi-Fi 모듈을 사용하여 IoT 기반 프로젝트를 확인할 수 있습니다. 그 중 일부는 아래에 나열되어 있습니다.
- ESP8266 NodeMCU와 Atmega16 마이크로 컨트롤러를 연결하여 이메일 전송
- NodeMCU ESP8266을 사용하여 온도 및 습도 센서 데이터를 Firebase 실시간 데이터베이스로 전송
- Google Firebase 콘솔 및 ESP8266 NodeMCU를 사용하는 IoT 제어 LED
여기 에서는 ESP8266에서 사용할 수있는 다양한 절전 모드 를 설명 하고 딥 슬립 모드를 사용하여 일정한 간격 으로 Thingspeak 서버 에 온도 데이터를 전송하여이를 시연합니다.
필요한 구성 요소
- ESP8266 Wi-Fi 모듈
- LM35 온도 센서
- 점퍼 와이어
ESP8266의 절전 모드 유형
Esp8266 모듈은 다음 모드에서 작동합니다.
- 활성 모드: 이 모드에서는 전체 칩이 켜지고 칩이 데이터를 수신하고 전송할 수 있습니다. 분명히 이것은 전력을 가장 많이 소비하는 모드입니다.
- 모뎀 절전 모드: 이 모드에서는 CPU가 작동하고 Wi-Fi 라디오가 비활성화됩니다. 이 모드는 PWM에서와 같이 CPU가 작동해야하는 애플리케이션에서 사용할 수 있습니다. 데이터 전송없이 Wi-Fi AP (Access Point)에 연결되어있는 동안 Wi-Fi 모뎀 회로를 꺼서 전력 소비를 최적화합니다.
- Light-sleep 모드: 이 모드에서는 CPU와 모든 주변 장치가 일시 중지됩니다. 외부 인터럽트와 같은 웨이크 업은 칩을 깨 웁니다. 데이터 전송없이 Wi-Fi 모뎀 회로를 끄고 CPU를 일시 중단하여 전력 소비를 줄일 수 있습니다.
- 딥 슬립 모드: 이 모드에서는 RTC 만 작동하고 칩의 다른 모든 구성 요소의 전원이 꺼집니다. 이 모드는 데이터가 오랜 시간 간격으로 전송되는 경우에 유용합니다.
연결 LM35 온도 센서 NodeMCU의 A0 핀.
ESP 모듈의 RST 핀이 HIGH이면 실행 상태입니다. RST 핀에서 LOW 신호를 수신하자마자 ESP가 다시 시작됩니다.
딥 슬립 모드를 사용하여 타이머를 설정하면 타이머가 종료되면 D0 핀이 LOW 신호를 RST 핀으로 보내고 모듈을 다시 시작하여 깨어납니다.
이제 하드웨어가 준비되고 잘 구성되었습니다. 온도 판독 값은 Thingspeak 서버로 전송됩니다. 이를 위해 thingspeak.com에서 계정을 만들고 아래 단계를 따라 채널을 만듭니다.
이제 Write API 키를 복사합니다. ESP 코드에서 사용됩니다.
ESP8266 딥 슬립 모드 프로그래밍
쉽게 사용할 수있는 Arduino IDE는 ESP8266 모듈을 프로그래밍하는 데 사용됩니다. 모든 ESP8266 보드 파일이 설치되어 있는지 확인하십시오.
필요한 모든 중요한 라이브러리를 포함하는 것으로 시작하십시오.
#포함
기능에 액세스하기위한 모든 라이브러리가 포함되면 API 쓰기 키를 할당하고 Wi-Fi 이름과 비밀번호를 구성합니다. 그런 다음 데이터를 저장할 위치에서 나중에 사용할 수 있도록 모든 변수를 선언합니다.
String apiWritekey = "*************"; // 여기에서 THINGSPEAK WRITEAPI 키로 대체 char ssid = "******"; // Wi-Fi SSID 이름 char 암호 = "******"; // Wi-Fi 암호
이제 wifi.begin () 함수를 사용하여 모듈과 Wi-Fi 네트워크를 연결하는 함수를 만든 다음 while 루프를 사용하여 모듈이 Wi-Fi에 연결되지 않을 때까지 계속 확인합니다.
void connect1 () { WiFi.disconnect (); 지연 (10); WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) {
Thingspeak 서버로 데이터를 보내는 다른 기능을 만드십시오. 여기에서 API 쓰기 키, 필드 번호 및 전송해야하는 데이터가 포함 된 문자열이 전송됩니다. 그런 다음 client.print () 함수를 사용하여이 문자열을 보냅니다.
void data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = 문자열 (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / 업데이트 HTTP / 1.1 \ n"); client.print ("호스트: api.thingspeak.com \ n");
connect1 함수를 호출하여 Wi-Fi 연결 함수를 호출 한 다음 온도 판독 값을 가져 와서 섭씨로 변환합니다.
void setup () { Serial.begin (115200); Serial.println ("장치가 깨우기 모드에 있습니다."); connect1 (); int 값 = analogRead (A0); 플로트 볼트 = (값 /1024.0)*5.0; tempC = 볼트 * 100.0;
이제 data () 함수를 호출하여 thingspeak 클라우드에 데이터를 업로드합니다. 마지막으로 호출해야 할 중요한 함수는 ESP.deepSleep (); 이렇게하면 마이크로 초 단위로 정의 된 시간 간격 동안 모듈이 휴면 상태가됩니다.
데이터(); Serial.println ("15 초 동안 딥 슬립"); ESP.deepSleep (15e6);
루프 기능은 모든 작업을 한 번 수행 한 다음 정의 된 시간 간격 후에 모듈을 재설정해야하므로 빈 상태로 유지됩니다.
작동하는 비디오와 전체 코드는이 튜토리얼의 끝에 제공됩니다. ESP8266 모듈에 코드를 업로드합니다. 프로그램을 업로드하기 전에 RST 및 D0 연결 와이어를 제거하십시오. 그렇지 않으면 오류가 발생 합니다.
ESP8266에서 DeepSleep 테스트
프로그램을 업로드하면 15 초마다 온도 판독 값이 ThingSpeak 클라우드에 업로드되고 모듈이 딥 슬립 모드로 전환되는 것을 볼 수 있습니다.
이것 으로 ESP8266 모듈에서 Deep Sleep 사용에 대한 자습서를 마쳤습니다. 딥 슬립은 매우 중요한 기능이며 대부분의 장치에 포함되어 있습니다. 이 튜토리얼을 참조하여 다른 프로젝트에이 방법을 적용 할 수 있습니다. 의문이나 제안이 있으시면 아래에 적고 의견을 남겨주세요. 또한 우리 포럼에 접근 할 수 있습니다.