İçindekiler:

IDC2018IOT Klimayı Ne Zaman Kapatacağımı Söyle: 7 Adım
IDC2018IOT Klimayı Ne Zaman Kapatacağımı Söyle: 7 Adım

Video: IDC2018IOT Klimayı Ne Zaman Kapatacağımı Söyle: 7 Adım

Video: IDC2018IOT Klimayı Ne Zaman Kapatacağımı Söyle: 7 Adım
Video: Böyle Bir Egsoz Sesi Yok ! / FULL MODİFİYELİ SCANİA 540 S / TIR’DA CİĞER TAVA…! 2024, Temmuz
Anonim
Image
Image

Birçoğumuz, özellikle yaz aylarında, klimayı neredeyse hiç durmadan kullanıyoruz, gerçekte günün belirli saatlerinde sadece bir pencere açıp hoş bir esintinin tadını çıkarabiliyoruz. Ayrıca, odadan çıkarken bazen klimayı kapatmayı bile unuttuğumuzu, enerji ve parayı boşa harcadığımızı kişisel olarak fark ettik.

Yapacağımız çözüm, içerideki sıcaklığı dışarıdaki sıcaklıkla karşılaştıracak ve yeterince yakın olduklarında bize Facebook Messanger aracılığıyla bir pencere açıp klimayı biraz dinlendirme zamanının geldiğini bildirecek.

Ayrıca klimayı açık bırakıp odadan çıktığımızda bize haber verecek başka bir mekanizma yapacağız.

Adım 1: Biraz Daha Detay

4 farklı sensörden veri topluyoruz:

  • İki DHT sensörü, evin içindeki ve dışındaki sıcaklığı toplar.
  • Bir PIR sensörü, odadaki hareketi algılar.
  • AC havalandırma deliğinden gelen rüzgarı algılamak için bir Elektret mikrofon kullanılır; bu, AC'nin açık olup olmadığını belirlemenin basit ve güvenilir bir yoludur.

Sensörlerden gelen veriler işlenecek ve oluşturacağımız bir arayüzde görüntüleneceği Blynk'e gönderilecek. Ayrıca, AC yerine bir pencere açabileceğinde ve AC'yi unutup odadan önceden tanımlanmış bir süre boyunca ayrıldığında kullanıcıyı bilgilendirmek için IFTTT olaylarını tetikleyeceğiz.

Blynk arayüzü, daha sonra daha ayrıntılı olarak tartışacağımız gibi, ilgili ayarları kullanıcı tercihine göre değiştirmemiz için bir yol da sağlayacaktır.

Gerekli parçalar:

  1. WiFi modülü - ESP8266
  2. PIR sensörü.
  3. DHT11/DHT22 sıcaklık sensörleri x2.
  4. 10k/4.7k dirençler (DHT11 - 4.7k, DHT22 - 10k, PIR - 10k).
  5. Elektret mikrofon.
  6. Süveterler.
  7. Uzun kablolar (Telefon kablosu harika bir iş çıkarır).

Projenin tam kodu, kod boyunca yorumlarla birlikte sonuna eklenmiştir.

Mantıksal olarak, birkaç farklı işlevsellik katmanına sahiptir:

  • Sensörlerden gelen veriler, daha doğru olduğunu gösterdiği için 3 saniyelik aralıklarla okunur ve bundan fazlasına gerek yoktur.
  • Kodun bir kısmı, AC'nin açıklığının üzerine yerleştirilen elektret mikrofondan gelen değerlerle AC durumunu takip ediyor.
  • Diğer bir kısım ise sıcaklık sensörlerinden gelen okumaları ve AC'yi kapatıp bunun yerine bir pencere açmak için kabul edilebilir olarak tanımlanan kullanımın farkını takip etmektir. Sıcaklıkların yeterince yaklaştığı anı arıyoruz.
  • Üçüncü kısım, odadaki hareketi takip ediyor. Kullanıcı tarafından tanımlanan bir zaman dilimi için büyük bir hareket algılamazsa (majör kontrol yolu yakında açıklanacaktır) ve AC durumu AÇIK ise, kullanıcıya bir bildirim gönderilecektir.
  • Bildirimler, Facebook Messenger aracılığıyla kullanıcıya önceden tanımlanmış mesajlar gönderen IFTTT Web kancalarını tetikleyerek işlenir.
  • Kayda değer son kısım, hem kullanıcının değişkenlerde yaptığı değişiklikleri alarak hem de diğer taraftan verileri kullanıcının görmesi için Blynk arayüzüne göndererek Blynk arayüzünü yöneten kısımdır.

2. Adım: Çok Daha Fazla Detayda - Sensörler

Çok Daha Fazla Detayda - Sensörler
Çok Daha Fazla Detayda - Sensörler
Çok Daha Fazla Detayda - Sensörler
Çok Daha Fazla Detayda - Sensörler

Hadi başlayalım.

Öncelikle, aynı yere yerleştirildiğinde her iki DHT sensörümüzün de aynı sıcaklığı okuduğundan emin olmamız gerekiyor. Bunun için bu bölümün sonuna eklenmiş basit bir eskiz yaptık (CompareSensors.ino). Her iki sensörü de bağlayın ve çizimdeki DHT sensörlerinin türünü sahip olduğunuza göre değiştirdiğinizden emin olun (varsayılan bir DHT11 ve bir DHT22'dir, böylece kodda her ikisinin de nasıl ele alındığını görebilirsiniz). Seri monitörü açın ve özellikle DHT11 sensörleri kullanıyorsanız, sıcaklık değişikliklerine kendilerini ayarlamaları daha uzun sürdüğünden, bir süre çalışmasına izin verin.

Sensörler arasındaki farkı not edin ve daha sonra "ofset" değişkenindeki ana koda ekleyin.

Sensör yerleşimi:

Evin dış duvarına bir DHT sensörü yerleştirilmelidir, bu nedenle ESP8266'nıza odanın içinde ulaşacak kadar uzun bazı uzun kablolara bağlayın ve dışarıya yerleştirin (pencereden kolayca yapılabilir). Diğer DHT sensörü, AC'yi kullandığımız odanın içindeki breadboard'a yerleştirilmelidir.

Elektret mikrofon da yeterince uzun kablolara bağlanmalı ve AC'den gelen rüzgarın çarpacağı bir yere yerleştirilmelidir.

Son olarak, PIR sensörü, odadaki her hareketi yakalayabilmesi için odanın ortasına bakan bir konuma yerleştirilmelidir. Sensörün iki küçük düğmesi olduğunu unutmayın; biri gecikmeyi kontrol eder (bir hareketi algılamanın YÜKSEK sinyalinin ne kadar süreyle YÜKSEK tutulduğu) ve diğeri hassasiyeti kontrol eder (resme bakın).

Memnun kaldığınız bir okuma alana kadar onunla oynamanız gerekebilir. Bizim için en iyi sonuç, tamamen sola (en düşük değer) gecikme ve tam ortada hassasiyetti. Kod, bu tür problemlerde hata ayıklamayı çok daha kolay hale getirecek tüm sensörlerden gelen okumaları içeren seri baskılar sağlar.

Sensörlerin bağlanması:

Kullandığımız pin numaraları aşağıdaki gibidir (ve ana kodda değiştirilebilir):

Dış DHT sensörü - D2.

DHT sensörü içinde - D3.

Elektret - A0 (analog pin).

PIR - D5.

Her birini bağlamak için şemalar, "PIR direnci Arduino şeması" satırları boyunca bir şeyle google görsel arama kullanılarak kolayca bulunabilir (bunları buraya kopyalamak ve herhangi bir telif hakkı satırını geçmek istemeyiz:)).

Ayrıca breadboard'umuzun bir resmini ekledik, muhtemelen bağlantıları gerçekten takip etmek zordur, ancak bunun için iyi bir his verebilir.

Muhtemelen bildiğiniz gibi, onları ilk bağladığımızda işler nadiren çalışır. Bu nedenle, sensörlerden gelen okumaları okunması kolay bir şekilde yazdıran bir işlev yaptık, böylece onların çalışması için kendi yolunuzda hata ayıklayabilirsiniz. Hata ayıklama sırasında kodun Blynk'e bağlanmaya çalışmasını istemiyorsanız, "Blynk.begin(auth, ssid, pass);" yorumunu yapmanız yeterlidir. kodun kurulum bölümünden çalıştırın ve baskıları görmek için seri monitörü açın. Baskıların bir resmini de ekledik.

Adım 3: Çok Daha Fazla Ayrıntıda - IFTTT Sırası

Çok Daha Fazla Detayda - IFTTT Dizisi
Çok Daha Fazla Detayda - IFTTT Dizisi

Bu yüzden iki senaryoda bilgilendirilmek istiyoruz:

1. Dış sıcaklık, AC çalışırken içerideki sıcaklığa yeterince yakındır.

2. Odadan uzun bir süre ayrıldık ve klima hala çalışıyor.

IFTTT, genellikle etkileşimde olmayan birçok farklı hizmeti çok basit bir şekilde bağlamamızı sağlar. Bizim durumumuzda, birçok hizmet aracılığıyla bildirimleri çok kolay göndermemizi sağlar. Facebook Messanger'ı seçtik, ancak Facebook Messanger ile çalışmasını sağladıktan sonra, onu seçtiğiniz herhangi bir başka hizmetle kolayca değiştirebileceksiniz.

Süreç:

IFTTT web sitesinde kullanıcı adınıza (sağ üst köşe) tıklayın ve ardından "Yeni Uygulama" tetikleyici olarak "Web kancaları"nı ("bu") seçin ve "Bir web isteği al"ı seçin. Bir etkinlik adı belirleyin (ör. boş_oda).

Tetiklenen hizmet için eylem ("o"), Facebook Messenger > Mesaj gönder'i seçin ve bu olay gerçekleştiğinde almak istediğiniz mesajı yazın (örn.

Biz buradayken, kodda uygun yere eklemeniz gereken gizli anahtarınızı da bulmalısınız.

Gizli anahtarınızı bulmak için https://ifttt.com/services/maker_webhooks/settings adresine gidin. Burada anahtarınızla birlikte aşağıdaki biçimde bir URL bulacaksınız:

4. Adım: Çok Daha Fazla Detayda - Blynk

Image
Image
Çok Daha Fazla Detayda - Blynk
Çok Daha Fazla Detayda - Blynk
Çok Daha Fazla Detayda - Blynk
Çok Daha Fazla Detayda - Blynk

Ayrıca aşağıdaki özelliklere sahip bir arayüz istiyoruz:

1. Biz haberdar edilmeden önce AC çalışırken odanın ne kadar süre boş kalması gerektiğini ayarlayabilme

2. Dış sıcaklığın içeriye ne kadar yakın olacağını seçebilme.

3. Sıcaklık sensörlerinden gelen okumalar için bir ekran

4. AC'nin durumunu bize bildiren bir led (açık/kapalı).

5. Ve en önemlisi, ne kadar $$$ ve enerji tasarrufu yaptığımızı gösteren bir ekran.

Blynk arayüzü nasıl oluşturulur:

Henüz Blynk uygulamasına sahip değilseniz, telefonunuza indirin. Uygulamayı açıp yeni bir proje oluşturduğunuzda, uygun cihazı (örn. ESP8266) seçtiğinizden emin olun.

Kodu uygun yere ekleyeceğiniz bir kimlik doğrulama belirtecini içeren bir e-posta alacaksınız (kaybederseniz daha sonra ayarlardan kendinize yeniden gönderebilirsiniz).

Ekranınıza yeni widget'lar yerleştirin, üst kısımdaki + işaretini tıklayın. Widget'ları seçin ve ardından ayarlarına girmek için bir widget'a tıklayın. Referans olması için kullandığımız tüm widget'ların ayarlarının resimlerini ekledik.

Uygulamayı bitirdikten sonra ve sonunda kullanmak istediğinizde, Blynk uygulamasını çalıştırmak için sağ üst köşedeki "oynat" simgesine tıklamanız yeterlidir. ESP8266'nızın ne zaman bağlandığını da görebileceksiniz.

Not - "güncelleme" düğmesi, uygulamada görmemiz için AC'nin sıcaklığını ve durumunu almak için kullanılır. Ayarlar (sıcaklık farkı gibi) değiştirilirken, bunlar otomatik olarak itildiği için gerekli değildir.

Adım 5: Kod

Kodun her bölümünü, anlamayı olabildiğince kolaylaştıracak şekilde belgelemek için çok çaba sarf ettik.

Kodu kullanmadan önce değiştirmeniz gereken kısımlar (Blynk için yetkilendirme anahtarı, wifi SSID'niz ve şifreniz, vb.) olarak, bunları kolayca arayabilmeniz için //*change* yorumu gelir.

Kodda kullanılan kütüphanelere ihtiyacınız olacak, bunları Arduino IDE üzerinden Sketch>Include Libraries>Manage Libraries'e tıklayarak kurabilirsiniz. Orada kütüphane adını arayabilir ve kurabilirsiniz. Ayrıca, general8266_ifttt.h dosyasını ACsaver.ino ile aynı konuma koyduğunuzdan emin olun.

Kodu karıştırmak istemediğimiz için burada açıklayacağımız kodun bir kısmı, AC'nin durumunu ne zaman açıktan kapalıya ve odanın durumunu boştan boş olmayana nasıl değiştireceğimize nasıl karar verdiğimizdir.

Sensörlerden her 3 saniyede bir okuma yapıyoruz, ancak sensörler %100 doğru olmadığından, şu anda odada olduğuna inandığımız durumu değiştirmek için tek bir okuma istemiyoruz. Bunu çözmek için, kodun yaptığı şey, "AC açık" lehine bir okuma aldığımızda ++ ve aksi halde -- bir sayacımız var. Daha sonra SWITCHAFTER'da tanımlanan değere (varsayılan 4) ulaştığımızda durumu "AC açık" olarak değiştiriyoruz, -SWITCHAFTER'a (negatif aynı değer) geldiğimizde durumu "AC kapalı" olarak değiştiriyoruz ".

Geçiş için gereken süre üzerindeki etkisi ihmal edilebilir düzeydedir ve yalnızca doğru değişiklikleri tespit etmede çok güvenilir olduğunu düşünüyoruz.

Adım 6: Hepsini Bir Araya Getirmek

Tamam, tüm sensörler yerinde ve düzgün çalışıyor. Blynk arayüzü ayarlandı (doğru sanal pinlerle!). Ve IFTTT olayları tetikleyicimizi bekliyor.

IFTTT gizli anahtarını koda, Blynk'ten gelen auth anahtarını, WiFi'nizin SSID'sini ve şifreyi eklediniz ve hatta DHT sensörlerinin kalibre edilip edilmediğini kontrol ettiniz ve değilse, ofseti buna göre değiştirdiniz (örneğin, bizim DHT'nin dışında olması gerekenden 1 santigrat derece daha yüksek sıcaklıkları okudu, bu yüzden ofset = -1 kullandık.

WiFi'nizin açık olduğundan emin olun, Blynk uygulamanızı başlatın ve kodu ESP8266'nıza yükleyin.

Bu kadar. Her şey doğru yapıldıysa, şimdi oynayabilir ve eylemde görebilirsiniz.

Ve hepsini bir araya getirme zahmetine girmeden sadece onu çalışırken görmek istiyorsanız… Pekala… Yukarı kaydırın ve videoyu izleyin. (Altyazılı izleyin! Seslendirme yok)

Adım 7: Düşünceler

Burada iki ana zorlukla karşılaştık.

Öncelikle klimanın açık olduğunu nasıl anlarız? AC ile uzaktan kumanda arasındaki iletişimi "dinleyecek" bir IR alıcısı kullanmaya çalıştık. Veriler çok dağınık olduğundan ve "tamam, bu bir AÇIK sinyali" anlamak için yeterince tutarlı olmadığından çok karmaşık görünüyordu. Bu yüzden başka yollar aradık. Bir fikir, AC rüzgarından hareket ettiğinde küçük akım üretecek küçük bir pervane kullanmaktı, denediğimiz başka bir fikir, bir ivmeölçerin havalandırmalardaki dönen kanatların açısını ölçmek ve hareketlerini KAPALI konumundan algılamaktı.

Sonunda, bunu yapmanın en basit yolunun, AC'den gelen rüzgarı çok güvenilir bir şekilde algılayan elektret mikrofon olduğunu fark ettik.

DHT sensörlerini çalıştırmak çocuk oyuncağıydı;), ancak ancak daha sonra bunlardan birinin gerçek sıcaklıktan biraz farklı olduğunu fark ettik. PIR sensörü, daha önce açıklandığı gibi bazı ayarlamalar da gerektiriyordu.

İkinci zorluk, tüm çözümü basit ve güvenilir kılmaktı. Bir anlamda kullanımı can sıkıcı olmalı, sadece orada olmalı ve ihtiyacınız olduğunda dürtmeli. Aksi takdirde, muhtemelen kendimiz kullanmayı bırakırdık.

Bu yüzden, Blynk arayüzünde ne olması gerektiği konusunda biraz düşündük ve bulabileceğimiz her uç duruma dikkat ederek kodu olabildiğince güvenilir hale getirmeye çalıştık.

Bu talimatı yazarken çözemediğimiz bir başka zorluk da, AC'yi Blynk arayüzünden kapatmamıza izin verecek bir IR blaster eklemekti. Kapatma imkanı olmadan AC'yi açık unuttuğunuzu bilmenin anlamı nedir? (peki… birisine evde olup olmadığını sorabilirsiniz).

Ne yazık ki, uzaktan kumandadan kaydettiğimiz sinyalleri ESP8266 ile AC'ye geri oynatmada bazı zorluklar yaşadık. Bu talimatı izleyerek AC'yi bir Arduino Uno ile kontrol etmeyi başardık:

www.instructables.com/id/How-to-control-th…

Yakında tekrar deneyeceğiz ve talimatlarımızı bulgularımız ve umarız bu yeteneğin nasıl ekleneceğine ilişkin talimatlarla güncelleyeceğiz.

Gördüğümüz bir diğer sınırlama ise, bazı durumlarda mümkün olmayabilen pencerenin dışına bir sensör bağlamamız gerektiği ve ayrıca uzun bir kablonun dışarı çıkması gerektiği anlamına geliyor. Bir çözüm, bulunduğunuz yerin hava durumu verilerini internetten almak olabilir. Ayrıca, AC'nin daha bilinen veya çözülmesi kolay IR kodlarına sahip modelleri için, AC'den çalışan elektret sensörü, yukarıda tanımladığımız IR alıcısı ile değiştirilebilir.

Proje birçok yönden genişletilebilir. Yukarıda belirtildiği gibi, AC'ye IR kontrolünü dahil etmenin bir yolunu bulmaya çalışacağız, bu daha sonra AC'yi dünyanın herhangi bir yerinden açıp kapatmak veya Blynk aracılığıyla zamanları açıp kapatmak için yepyeni bir fırsatlar dünyası açar. uygulama, başka bir örnek olarak. Teknik IR zorluklarını çözdükten sonra, kodu eklemek oldukça basit ve anlaşılırdır ve uzun sürmemelidir.

Gerçekten büyük hayaller kurmak istiyorsak… Proje, herhangi bir AC'yi akıllı bir AC yapan eksiksiz bir modüle dönüştürülebilir. Ve bizim yaptığımızdan daha fazlasına ihtiyacı yok. Sadece daha fazla kod, IR'nin daha fazla kullanımı ve seri üretilmesini istiyorsak, belki de hava durumu verilerini konuma göre getirdiğinizden emin olun, o zaman her şeyi küçük bir kutuya koyabiliriz.

Gerçekten, ihtiyacımız olan tek şey, iç sıcaklık için bir sıcaklık sensörü, hareketi algılamak için bir PIR sensörü ve bir blaster olarak IR LED ve AC ile kullandığımız uzaktan kumanda arasındaki iletişimi "dinlemek" için bir IR alıcısı.

Blynk, sihirli kutuyu kontrol etmek için ihtiyacımız olan tüm yetenekleri çok basit ve güvenilir bir şekilde sağlar.

Böyle tam bir proje yapmak, özellikle kendini yapılandırmak ve çoğu AC'yi otomatik olarak algılamak ve anlamak için yeterince çok yönlü hale getirme açısından biraz zaman alacaktır.

Ama bunu kendin yapmak, peki, eğer boş zamanlarında yaparsan, yaklaşık olarak bir veya iki haftadan fazla sürmemeliyiz. Ne kadar boş zamanınız olduğuna bağlı… Buradaki asıl zorluk, AC uzaktan kumandanın gönderebileceği tüm farklı sinyalleri kaydetmek ve bunları anlamlandırmak olacaktır. (Yalnızca onları tekrar oynatmak daha da kolay olsa da).

Önerilen: