IoT devrimi her geçen gün artmakta olduğu için, bağlı cihazların sayısı çok hızlı bir şekilde artmaktadır. Gelecekte, cihazların çoğu birbirine bağlanacak ve gerçek zamanlı olarak iletişim kuracak. Bu cihazın karşılaştığı sorunlardan biri de güç tüketimi. Bu güç tüketimi faktörü, tüm IoT cihazları ve IoT Projeleri için kritik ve belirleyici faktörlerden biridir. Bu yazımızda populer olarak kullanılan NodeMCU IoT cihazının derin uyku modunda kullanılarak nasıl enerji tüketimi minimuma indirilir onu öğreneceğiz.

Gömülü ve IoT cihazlarda güç tüketimini optimize etmenin birkaç yolu vardır. Optimizasyon donanım ve yazılım üzerinde yapılabilir. Bazen Güç tüketimini azaltmak için donanım bileşenlerini optimize edemiyoruz, ancak kesinlikle kod talimatlarını ve işlevlerini değiştirerek ve optimize ederek yazılım tarafında yapabiliriz. Mikrodenetleyici güç tüketimini zzaltmak için saat frekansını da değiştirebilirsiniz.

ESP8266 modülleri en yaygın kullanılan Wi-Fi modülleridir, küçük modda uyku modu dahil olmak üzere farklı modlara sahip birçok özellik bulunur ve bu modlara donanım ve yazılımdaki bazı değişiklikler kullanılarak erişilebilir.

ESP8266’daki Uyku Modu Türleri:

Aktif mod: Bu modda, tüm çip açılır ve çip alabilir, verileri iletebilir. Açıkçası, bu en güç tüketen moddur.

Modem-uyku modu: Bu modda, CPU çalışır durumda ve Wi-Fi telsizleri devre dışı. Bu mod, CPU’nun çalışmasını gerektiren uygulamalarda, PWM’de olduğu gibi kullanılabilir. Wi-Fi Modem devresinin, Wi-Fi AP’ye (Erişim Noktası) bağlandığında güç tüketimini optimize etmek için veri aktarımı olmadan kapanmasını sağlar.

Hafif uyku modu: Bu modda, CPU ve tüm çevre birimleri duraklatılır. Harici kesintiler gibi herhangi bir uyanma, çipi uyandırır. Veri iletimi olmadan, Wi-Fi Modem devresi güç tüketiminden tasarruf etmek için kapatılabilir ve CPU askıya alınabilir.

Derin uyku modu: Bu modda sadece RTC işlevseldir ve çipin diğer tüm bileşenleri kapanır. Bu mod, verilerin uzun bir süre sonra iletildiği yerlerde kullanışlıdır.

NodeMCU Uyku Modu Akım Değerleri

ESP8266’da Derin Uyku Modu

Modem uyku ve Işık uyku, bazı işlevler kapalıyken ESP8266 modülünün çalışması gerektiğinde yararlıdır. Ancak ciddi bir güç kontrolüne ihtiyacınız varsa Derin Uyku moduna geçin. Genel ortalama akım 1mA’den az. 2.5V’da mevcut gereksinim sadece 20 μA’dır.

Derin uyku modunu kullanma adımları:

  • Modülü Wi-Fi AP ile bağlayın
  • Sensör değerini okumak, MQTT mesajı yayınlamak vb. Gibi bir görevi yerine getirin.
  • Tanımlanmış sayıda mikrosaniye için uyu
  • Yukarıdaki işlemi tekrarlayın

Uyku süresi mikrosaniye cinsinden tanımlanır. ESP8266 SDK’ya göre, yalnızca ~ 71 dakika olan 4.294.967.295 µs için uyuyabilirsiniz.

ESP8266 Modülünü Ayarlama:

ESP8266’nın RST pimini GPIO 16, yani D0 pinine bağlayın. GPIO 16, WAKE özelliğine sahip önemli pindir.

LM35 Sıcaklık Sensor Bağlantısı

ESP modülünün RST pininde YÜKSEK olması durumunda çalışma durumundadır. RST pininde LOW sinyali aldığında, ESP yeniden başlar.

NodeMCU DeepSleep modunu kullanarak zamanlayıcıyı ayarlayın, zamanlayıcı sona erdiğinde D0 pimi DÜŞÜK sinyalini RST pimine gönderir ve yeniden başlatarak modül uyanır.

Şimdi, donanım hazır ve iyi yapılandırılmış. Sıcaklık okumaları Thingspeak sunucusunda gönderilecektir. Bunun için thingspeak.com adresinde bir hesap oluşturun ve aşağıdaki adımları izleyerek bir kanal oluşturun.

ESP8266 Derin Uyku Modu Programlama

Kolayca kullanılabilen Arduino IDE, ESP8266 modülünü programlamak için kullanılacaktır. Tüm ESP8266 anakart dosyalarının kurulu olduğundan emin olun. (Bkz. NodeMCU Programlama)

ThingSpeak hesabınızdaki API keyi edinin. Bunu kodu programlamamızda kullanacağız.

// esp8266 deepsleep
#include <ESP8266WiFi.h>

String apiWritekey = "*************"; 
char ssid[] = "XXXXXXXXXX"; // enter your wifi home router ssid
char password[] = "XXXXXXXXXX" ;   // enter your wifi home router ssid
char server[] = "api.thingspeak.com";
double tempF;
double tempC;

WiFiClient client;

void connect1()
{
  WiFi.disconnect();
  delay(10);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("NodeMcu connected to wifi...");
}
 
void data()
{
  if (client.connect(server,80))
  {  
    String Data = apiWritekey;
           Data +="&field1=";
           Data += String(tempF);
           Data += "\r\n\r\n";
 
     client.print("POST /update HTTP/1.1\n");
     client.print("Host: api.thingspeak.com\n");
     client.print("Connection: close\n");
     client.print("X-THINGSPEAKAPIKEY: "+apiWritekey+"\n");
     client.print("Content-Type: application/x-www-form-urlencoded\n");
     client.print("Content-Length: ");
     client.print(Data.length());
     client.print("\n\n");  
     client.print(Data);
     Serial.println("uploaded to Thingspeak server....");
  }
  client.stop();
}

void setup()
{
  Serial.begin(115200);
  Serial.println("device is in Wake up mode");
  while (!Serial) { }
  connect1();
  int value = analogRead(A0);
  float volts=(value/1024.0)*5.0;      //conversion to volts
  tempC = volts*100.0;             //conversion to temp Celsius
  Serial.print("Temperature C: ");
  Serial.println(tempC);
  data();
  Serial.println("deep sleep for 15 seconds");
  ESP.deepSleep(15e6); 
}

void loop()
{

}

Bu yazımızda ESP8266 modülünü içinde barındıran NodeMCU DeepSleep kullanımını öğrendik Derin uyku modu çok önemli bir özelliktir ve çoğu cihazın içine dahil edilmiştir. Umarım faydalı olmuştur.


0 yorum

Bir yanıt yazın

Avatar placeholder

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.