- Güç Tüketimini En Aza İndirmek İçin Farklı Yöntemler
- Gerekli Bileşenler
- ESP8266'da Uyku Modu Türleri
- ESP8266 Derin Uyku Modu Programlama
- ESP8266'da DeepSleep testi
IoT devrimi her geçen gün patlama yaşarken, bağlı cihazların sayısı da hızla artıyor. Gelecekte, cihazların çoğu birbirine bağlanacak ve gerçek zamanlı olarak iletişim kuracak. Bu cihazların karşılaştığı sorunlardan biri de güç tüketimidir. Bu güç tüketimi faktörü, herhangi bir IoT cihazı ve IoT Projeleri için kritik ve belirleyici faktörlerden biridir.
ESP8266'nın herhangi bir IoT projesi oluşturmak için en popüler modüllerden biri olduğunu bildiğimiz için, bu makalede ESP8266'yı herhangi bir IoT uygulamasında kullanırken güç tasarrufu yapmayı öğreniyoruz. Burada LM35 sıcaklık sensörü verilerini 15 saniye aralıklarla ThingSpeak bulutuna yüklüyoruz ve bu 15 saniye boyunca ESP8266 güç tasarrufu için DeepSleep modunda kalıyor
Güç Tüketimini En Aza İndirmek İçin Farklı Yöntemler
Gömülü ve IoT cihazlarında 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 edemeyiz, ancak kesinlikle kod talimatlarını ve işlevlerini değiştirip optimize ederek bunu yazılım tarafında yapabiliriz. Sadece bu değil, geliştiriciler aynı zamanda Mikrodenetleyicinin Güç Tüketimini Azaltmak için Saat Frekansını Değiştirebilirler.Veri alışverişi olmadığında donanımın uyumasını sağlamak için bir bellenim yazabilir ve belirli bir aralıkta tanımlanan görevi yerine getirebiliriz. Uyku modunda, bağlı donanım çok daha az güç tüketir ve bu nedenle pil daha uzun süre dayanabilir. Güç tüketimi teknikleri hakkında daha fazla bilgi edinmek istiyorsanız, Mikrodenetleyicilerde Güç Tüketimini En Aza İndirmek başlıklı makaleyi de okuyabilirsiniz.
ESP8266 modülleri, en yaygın kullanılan Wi-Fi modülleri olup, uyku modu dahil olmak üzere farklı modlara sahip küçük boyutlu birçok özelliğe sahiptir ve bu modlara donanım ve yazılımdaki bazı değişiklikler kullanılarak erişilebilir. ESP8266 hakkında daha fazla bilgi edinmek için ESP826 Wi-Fi modülünü kullanarak IoT tabanlı projelerimizi inceleyebilirsiniz, bunlardan bazıları aşağıda listelenmiştir:
- E-posta Göndermek İçin ESP8266 NodeMCU ile Atmega16 Mikroişlemcisi arasında arayüz oluşturma
- Sıcaklık ve Nem sensörü verilerini NodeMCU ESP8266 kullanarak Firebase Gerçek Zamanlı Veritabanına gönderme
- Google Firebase Konsolu ve ESP8266 NodeMCU kullanan IoT Kontrollü LED
Burada ESP8266'da bulunan farklı uyku modlarını açıklayacağız ve bunları derin uyku modunu kullanarak düzenli aralıklarla Thingspeak sunucusuna sıcaklık verilerini göndererek göstereceğiz.
Gerekli Bileşenler
- ESP8266 Wi-Fi Modülü
- LM35 sıcaklık sensörü
- Atlama telleri
ESP8266'da Uyku Modu Türleri
Esp8266 modülü aşağıdaki modlarda çalışır:
- Aktif mod: Bu modda, tüm çip çalışır durumdadır ve çip verileri alabilir, iletebilir. Açıkçası, bu en fazla güç tüketen moddur.
- Modem uyku modu: Bu modda, CPU çalışır durumdadır ve Wi-Fi telsizleri devre dışı bırakılır. Bu mod, PWM'de olduğu gibi CPU'nun çalışmasını gerektiren uygulamalarda kullanılabilir. Güç tüketimini optimize etmek için veri iletimi olmadan Wi-Fi AP'ye (Erişim Noktası) bağlıyken Wi-Fi Modem devresinin 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ıracaktır. Veri iletimi olmadan Wi-Fi Modem devresi kapatılabilir ve CPU güç tüketimini azaltmak için askıya alınabilir.
- Derin uyku modu: Bu modda yalnızca RTC işlevseldir ve çipin diğer tüm bileşenleri kapatılır. Bu mod, verilerin uzun zaman aralıklarından sonra iletildiği durumlarda kullanışlıdır.
Geç LM35 sıcaklık sensörü NodeMCU A0 pimle.
ESP modülünün RST pininde YÜKSEK olması durumunda, çalışır durumdadır. RST pininde DÜŞÜK sinyali alır almaz ESP yeniden başlar.
Derin uyku modunu kullanarak zamanlayıcıyı ayarlayın, zamanlayıcı sona erdiğinde D0 pini LOW sinyalini RST pinine gönderir ve modül yeniden başlatarak uyanacaktır.
Artık donanım hazır ve iyi yapılandırılmış durumda. Sıcaklık okumaları Thingspeak sunucusunda gönderilecektir. Bunun için, thingspeak.com'da bir hesap açın ve aşağıdaki adımları izleyerek bir kanal oluşturun.
Şimdi, Write API anahtarını kopyalayın. ESP kodunda kullanılacak.
ESP8266 Derin Uyku Modu Programlama
Kolayca bulunabilen Arduino IDE, ESP8266 modülünü programlamak için kullanılacaktır. Tüm ESP8266 kart dosyalarının kurulu olduğundan emin olun.
Gerekli tüm önemli kitaplıkları dahil ederek başlayın.
#Dahil etmek
İşlevlere erişim için tüm kitaplıklar dahil edildikten sonra API yazma anahtarını atayın, Wi-Fi adınızı ve şifrenizi yapılandırın. Ardından verilerin depolanacağı yerde daha fazla kullanmak için tüm değişkenleri bildirin.
String apiWritekey = "*************"; // burada THINGSPEAK WRITEAPI anahtarınızla değiştirin char ssid = "******"; // wifi SSID adınız char password = "******"; // wifi şifresi
Şimdi, modülü wifi.begin () işlevini kullanarak Wi-Fi ağına bağlamak için bir işlev yapın ve ardından döngü sırasında kullanarak modül Wi-Fi'ye bağlanmayana kadar sürekli kontrol edin.
void connect1 () { WiFi.disconnect (); gecikme (10); WiFi.begin (ssid, şifre); süre (WiFi.status ()! = WL_CONNECTED) {
Verileri Thingspeak sunucusuna göndermek için başka bir işlev yapın. Burada, API yazma anahtarını, alan numarasını ve gönderilmesi gereken verileri içeren bir dize gönderilecektir. Sonra bu dizeyi client.print () işlevini kullanarak gönderin.
void data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = Dize (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / güncelleme HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n");
Wi-Fi bağlantısı işlevini çağıracak olan connect1 işlevini çağırın, ardından sıcaklık okumalarını alıp Santigrat'a çevirin.
geçersiz kurulum () { Serial.begin (115200); Serial.println ("aygıt Uyanma modunda"); connect1 (); int değer = analogRead (A0); float volt = (değer / 1024.0) * 5.0; tempC = volt * 100.0;
Şimdi, verileri thingspeak bulutuna yüklemek için data () işlevini çağırın. Son olarak, çağrılması gereken önemli işlev ESP.deepSleep () 'dir; bu, modülün mikrosaniye cinsinden tanımlanan zaman aralığı boyunca uyumasını sağlayacaktır.
veri(); Serial.println ("15 saniye derin uyku"); ESP.deepSleep (15e6);
Döngü işlevi boş kalacaktır, çünkü tüm görevler bir kez gerçekleştirilmelidir ve ardından tanımlanan zaman aralığından sonra modülü sıfırlar.
Çalışma videosu ve tam kod bu eğitimin sonunda verilmiştir. Kodu ESP8266 modülüne yükleyin. Programı yüklemeden önce RST ve D0 bağlı kabloyu çıkarın, aksi takdirde hata verecektir.
ESP8266'da DeepSleep testi
Programı yükledikten sonra, sıcaklık okumalarının her 15 saniyede bir ThingSpeak bulutuna yüklendiğini ve ardından modülün derin uyku moduna geçtiğini göreceksiniz.
Bu , ESP8266 modülünde Derin Uyku kullanımıyla ilgili öğreticiyi tamamlar. Derin uyku çok önemli bir özelliktir ve çoğu cihaza dahil edilmiştir. Bu eğiticiye başvurabilir ve bu yöntemi farklı projeler için uygulayabilirsiniz. Herhangi bir şüpheniz veya öneriniz varsa, lütfen aşağıya yazıp yorum yapın. Ayrıca forumumuza da ulaşabilirsiniz.