İçindekiler:
- Adım 1: Tasarım Detayları
- Adım 2: Sensörler
- Adım 3: Sensör İstasyonları
- Adım 4: ESP-01 Sensör İstasyonu
- Adım 5: ESP 12E Seri WIFI Kit Sensör İstasyonu
- Adım 6: D1 Mini Sensör İstasyonları
- 7. Adım: Ağ Geçidi ve Web Sunucusu
- Adım 8: Yazılım
- 9. Adım: Sonuçlar
Video: Bir ESP-Now Ev Hava İstasyonu: 9 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bir süredir ev hava durumu istasyonum olsun istiyordum ve ailedeki herkesin sıcaklık ve nemi kolayca kontrol edebileceği bir hava durumu istasyonuna sahip olmak istiyordum. Dış koşulları izlemenin yanı sıra evdeki belirli odaları ve garaj atölyemi de izlemek istedim. Bu, evi havalandırmanın veya nem alma cihazını çalıştırmanın ne zaman uygun olduğunu bize bildirir (burada kış aylarında çok yağmur yağar). Oluşturduğum şey, herkesin bilgisayarından veya telefonundan kontrol edebileceği yerel bir web sunucusuna rapor veren ESP-Now tabanlı bir sensör sistemi. Telefon için bunu daha da kolaylaştırmak için basit bir Android uygulaması yazdım.
Adım 1: Tasarım Detayları
Farklı konumlara yerleştirebileceğim çeşitli sensör istasyonlarına sahip olmak ve bilgileri kaydedecek bir ana istasyona (veya merkeze) rapor vermelerini istedim. Çeşitli fikirleri denedikten sonra, cihazlar arasında doğrudan hızlı iletişime izin verdiği için Espressif'in ESP-Now protokolünü kullanmaya karar verdim. Burada ESP-Now hakkında biraz bilgi edinebilirsiniz ve bu GitHub deposu ilham almamın büyük bir parçasıydı.
İlk resim sistemin düzenini göstermektedir. Her sensör, ölçümlerini, verileri kablolu seri bağlantı yoluyla ana sunucuya ileten bir ağ geçidi cihazına bildirir. Bunun nedeni, ESP-Now protokolünün WIFI bağlantısı ile aynı anda aktif olamamasıdır. Bir kullanıcının web sayfasına erişmesi için WIFI'nin her zaman açık olması gerekir ve bu da ESP-Now iletişimini aynı cihazda kullanmayı imkansız hale getirir. Ağ geçidi cihazının Espressif tabanlı bir cihaz (ESP-Now yapabilen) olması gerekirken, ana sunucu bir web sayfasını çalıştırabilen herhangi bir cihaz olabilir.
Bazı sensör istasyonları pilleri (veya güneş enerjisiyle şarj edilmiş pilleri) bitirecek ve diğerleri sadece şebeke gücüne sahip olacaktır. Ancak, herkesin mümkün olduğunca az güç kullanmasını istedim ve bu, ESP8266 ve ESP32 cihazlarında bulunan "derin uyku" özelliğinin son derece yararlı olduğu yer. Sensör istasyonları periyodik olarak uyanır, ölçümler alır ve bunları ağ geçidi cihazına gönderir ve önceden programlanmış bir süre boyunca tekrar uyku moduna geçer. Her 5 dakikada bir (benim durumumda) yalnızca yaklaşık 300 ms'lik uyanma süreleri, güç tüketimini önemli ölçüde azaltır.
Adım 2: Sensörler
Çevresel parametreleri ölçmek için seçilebilecek çeşitli sensörler vardır. Hızlı ölçümlere izin verdiği ve sahip olduğum herhangi bir cihazda çalışacağı için yalnızca I2C iletişim özellikli sensörlere bağlı kalmaya karar verdim. Doğrudan IC'lerle çalışmak yerine, tasarımlarımı basitleştirmek için aynı pin çıkışlarına sahip kullanıma hazır modüller aradım. Sadece sıcaklık ve nemi ölçmek isteyerek başladım ve bu nedenle SI7021 tabanlı bir modül seçtim. Daha sonra basınç da ölçebilen bir sensör istedim ve BME280 tabanlı sensör modüllerini denemeye karar verdim. Bazı yerlerde ışık seviyelerini izlemek bile istedim ve BH1750 modülü bunun için ayrı bir sensör modülü olarak idealdi. Sensör modüllerimi ebay'den satın aldım ve bunlar aldığım modüller:
- BME280 (GY-BMP/E280), sıcaklık, nem ve basıncı ölçer
- SI7021 (GY-21), sıcaklık ve nemi ölçer
- BH1750 (GY-302), ışığı ölçer
Bulunacak GY-BMP/E280 PCB modüllerinin iki stili vardır. Her ikisi de 1'den 4'e kadar olan pinler için aynı pin çıkışını paylaşır. Bir modülde CSB ve SDO olmak üzere iki ek pin bulunur. Bu iki pim, modülün 4 pimli versiyonuna önceden bağlanmıştır. SDO pininin seviyesi I2C adresini belirler (Toprak = 0x76 varsayılanı, VCC = 0x77). I2C arayüzünü seçmek için CSB pini VCC'ye bağlanmalıdır. Ben 4 pinli modülü, amacıma uygun kullanıma hazır olduğu için tercih ediyorum.
Genel olarak, bu modüller, iletişim hatları için zaten yüklenmiş çekme dirençlerine sahip olduklarından ve hepsi 3.3V üzerinde çalıştığından, bu nedenle ESP8266 tabanlı kartlarla uyumlu olduğundan, kullanımı çok uygundur. Bu sensör IC'lerindeki pinlerin genellikle 5V toleranslı olmadığını unutmayın, bu nedenle onları doğrudan Arduino Uno gibi bir şeyle arayüzlemek onlara kalıcı olarak zarar verebilir.
Adım 3: Sensör İstasyonları
Belirtildiği gibi, sensör istasyonlarının tümü, ESP-Now iletişim protokolünü kullanan Espressif cihazları olacaktır. Önceki projelerden ve deneylerden, ilk testlerimi yapmak ve bunları nihai tasarıma dahil etmek için elimde birkaç farklı cihaz vardı. Elimde şu cihazlar vardı:
- iki ESP-01 modülü
- iki Wemos D1 mini geliştirme kartı
- bir Lolin ESP8266 geliştirme kartı
- bir adet ESP12E seri WIFI kiti kartı
- bir GOOUUU ESP32 kartı (38 pinli geliştirme kartı)
Ayrıca bir Wemos D1 R2 geliştirme kartım vardı, ancak derin uykudan uyanmasına izin vermeyen sorunlar vardı ve bir geçit cihazı olarak çökecek ve düzgün şekilde yeniden başlatılmayacaktı. Daha sonra tamir ettim ve Garaj Kapısı açma projesinin bir parçası oldu. "Deepsleep" özelliğinin çalışması için ESP8266'nın RST pininin GPIO16 pinine bağlı olması gerekir, böylece uyku zamanlayıcısı cihazı uyandırabilir. İdeal olarak, bu bağlantı bir Schottky diyotuyla (GPIO16'ya katot) yapılmalıdır, böylece programlama sırasında USB-TLL bağlantısı üzerinden manuel sıfırlama hala çalışır. Ancak, düşük değerli (300-ish Ohm) bir direnç veya hatta doğrudan kablo bağlantısı yine de başarılı olabilir.
ESP-01 modülleri, GPIO16 pinine kolay erişime izin vermez ve doğrudan IC'ye lehimlenmelidir. Bu basit bir iş değil ve bunu herkese tavsiye etmem. ESP12E seri WIFI kit kartı biraz yenilikti ve amacıma uygun olması için epeyce değişiklik gerektirdi. Kullanımı en kolay panolar Wemos D1 mini tip panolar ve Lolin panoydu. ESP32 cihazları, derin uykunun çalışması için herhangi bir değişiklik gerektirmez. Andreas Spiess'in bu konuda güzel bir Eğitilebilirliği var.
Adım 4: ESP-01 Sensör İstasyonu
Tüm sensör istasyonlarında, üzerlerinde toplanabilecek toz miktarını azaltmak için sensör modülleri dikey olarak monte edilmiştir. Hepsi mahfaza içinde değil ve onları mahfazalara monte edemem. Bunun nedeni yeterince havalandırılmayan ortamlarda cihazların ısınması ve sıcaklık ve nem okumalarını etkilemesidir.
ESP-01 kartları çok kompakttır ve çalışmak için birkaç dijital IO pinine sahiptir, ancak I2C arayüzü için yeterlidir. Bununla birlikte, panolar "derin uykunun" çalışmasına izin vermek için zor bir değişiklik gerektiriyor. Gösterilen fotoğrafta, köşe piminden (GPIO16) başlıktaki RST pimine bir tel lehimlenmiştir. Kullandığım tel 0,1 mm çapında izoleli "tamir" teli. Yalıtım kaplaması ısıtıldığında erir, böylece PCB'lerdeki izleri vb. onarmak için lehimlenebilir ve yine de telin diğer bileşenlerle temas ettiği yerlerde kısa devre oluşturma konusunda endişelenmenize gerek kalmaz. Boyutu çalışmayı zorlaştırıyor ve bu teli (hobici/pul koleksiyoncu tarzı) mikroskop altında yerine lehimledim. Sağ taraftaki başlığın 0,1" (2,54 mm) pin aralığına sahip olduğunu unutmayın. Buraya bir Schottky diyot takmak hiç de kolay olmayacak, bu yüzden sadece kabloyu denemeye karar verdim ve her iki ünite de uzun süredir çalışıyor. herhangi bir sorun olmadan bir ay.
Modüller, oluşturduğum iki prototip panosuna kuruldu. Biri (#1), I2C modüllerinin kurulmasına ve test edilmesine de izin veren bir programcı kartıdır, diğeri (#2) ise I2C cihazları için bir geliştirme/test kartıdır. İlk kart için, üniteye doğrudan bir USB duvar adaptöründen güç sağlamak için eski bir USB erkek konektörü ve küçük bir PCB'yi lehimledim. Diğer ünite, vidalı terminal başlığına uyacak şekilde modifiye edilmiş normal bir DC jakına sahiptir ve ayrıca bir duvar adaptörü ile güç alır.
Şematik, nasıl bağlandıklarını ve programlayıcının nasıl çalıştığını gösterir. Başka ESP-01 modülüm yok, bu yüzden programcıya hemen ihtiyacım olmadı. Gelecekte muhtemelen onlar için bir PCB yapacağım. Bu konumlardaki basınç ölçümleriyle pek ilgilenmediğim için bu kartların her ikisinde de SI7021 sensör modülü kurulu.
Adım 5: ESP 12E Seri WIFI Kit Sensör İstasyonu
ESP12E Seri WIFI Kit kartı, bu cihazla neler yapılabileceğini sergilemek için olduğu kadar geliştirmeye yönelik değildi. ESP8266 programlama hakkında biraz bilgi edinmek için uzun zaman önce satın aldım ve sonunda yeni bir kullanım sağlamaya karar verdim. Gösteriler için kurulan tüm LED'leri kaldırdım ve kullandığım modüllere uygun bir I2C başlığının yanı sıra bir USB programlama başlığı ekledim. Analog giriş pinine bağlı bir CdS foto direnci vardı ve onu orada bırakmaya karar verdim. Bu özel birim garaj atölyemi izleyecekti ve sahip olduğu fotosensör, ışıkların yanlışlıkla açık bırakılıp bırakılmadığını bana bildirmek için yeterliydi. Işık ölçümü için okumaları bana bir yüzde çıktı verecek şekilde normalleştirdim ve geceleri “5”in üzerindeki herhangi bir şey, ışıkların açık bırakıldığı veya evin bir kapısının düzgün şekilde kapatılmadığı anlamına geliyordu. RST ve GPIO16 pinleri PCB üzerinde açıkça etiketlenmiştir ve bunları bağlayan Schottky diyotu PCB'nin alt tarafına yerleştirilmiştir. Doğrudan bir USB duvar şarj cihazına takılan bir USB seri kartından güç alır. Bu USB seri kartlarının ekstraları var ve şu anda buna ihtiyacım yok.
Bu pano için bir şema oluşturmadım ve genellikle bu amaçla kullanmak için bir tane satın almanızı önermiyorum. Wemos D1 Mini panoları çok daha uygundur ve daha sonra tartışılacaktır. Bununla birlikte, bunlardan birine sahipseniz ve tavsiyeye ihtiyacınız varsa, yardımcı olmaktan memnuniyet duyarım.
Adım 6: D1 Mini Sensör İstasyonları
Wemos D1 Mini tipi ESP8266 geliştirme kartları benim tercih ettiğim kartlardır ve eğer tekrar yapmak zorunda kalsaydım bunları kullanırdım. Çok sayıda erişilebilir IO pinine sahiptirler, doğrudan Arduino IDE aracılığıyla programlanabilirler ve hala oldukça kompakttırlar. Bu kartlarda D0 pini GPIO16'dır ve bir Schottky diyotu bağlamak oldukça kolaydır. Şematik, bu kartları nasıl bağladığımı ve her ikisinin de BME2808 sensör modülünü kullandığını gösteriyor.
İki panodan biri dış hava durumunu izlemek için kullanılır ve güneş enerjisi piliyle çalışır. 165mm x 135mm (6V, 3.5W) bir güneş paneli, bir TP4056 Li-ion pil şarj modülüne bağlanır (Güneş Enerjili Pil Sensörü İstasyon Kurulum Şemasına bakın). Bu özel şarj modülü (03962A), pil (paket) içermiyorsa gerekli olan bir pil koruma devresine sahiptir. Li-ion pil, eski bir dizüstü bilgisayar pil paketinden geri dönüştürülmüştür ve özellikle derin uyku etkinken D1 Mini kartını çalıştırmak için hala yeterli şarj tutabilir. Tahta, elementlerden biraz korunması için plastik bir muhafaza içine yerleştirildi. Ancak iç mekanın dış sıcaklık ve neme maruz kalması için karşılıklı kenarlara 25mm çapında iki delik açılarak (içeriden) siyah peyzaj bezi ile kaplanmıştır. Bez, nemin nüfuz etmesine izin verecek şekilde tasarlanmıştır ve bu nedenle nem ölçülebilir. Muhafazanın bir ucunda küçük bir delik açılmış ve şeffaf plastik bir pencere yerleştirilmiştir. BH1750 ışık sensörü modülünün yerleştirildiği yer burasıdır. Tüm ünite, ışık sensörü açıkta olacak şekilde gölgede (doğrudan güneş değil) dış mekana yerleştirilmiştir. Buradaki yağmurlu/bulutlu kış havamızda yaklaşık 4 haftadır güneş enerjisiyle çalışan akü ile çalışıyor.
7. Adım: Ağ Geçidi ve Web Sunucusu
ESP-Now Gateway cihazı için Lolin NodeMCU V3 (ESP8266) kartı ve Webserver için bir ESP32 (GOOUUU kartı) kullanıldı. Neredeyse herhangi bir ESP8266 ve hatta ESP32 kartı, ağ geçidi cihazı olarak hizmet edebilirdi, bu, sahip olduğum diğer tüm kartları kullandıktan sonra "artık" kalan karttı.
Verileri toplamak, sıralamak, depolamaya kaydetmek ve web sunucusunu çalıştırmak için biraz daha fazla bilgi işlem gücüne sahip bir karta ihtiyacım olduğu için ESP32 kartını kullandım. Gelecekte kendi sensörüne ve yerel (OLED) bir ekrana da sahip olabilir. Depolama için özelleştirilmiş bir adaptörle bir SD kart kullanıldı. Ortak bir microSD - SD kart adaptörü kullandım ve kaplamalı kontaklara 7 pinli bir erkek (0,1 aralıklı) başlık lehimledim. Bağlantıları yapmak için bu GitHub'daki tavsiyeye uydum.
Prototipleme kurulumu (Dupont kabloları ile) bir sensör modülü içermiyor, ancak tasarladığım sonlandırılmış PCB, küçük bir OLED ekranın yanı sıra bir taneye izin veriyor. Bu PCB'yi nasıl tasarladığımla ilgili ayrıntılar, farklı bir Eğitilebilir Tablonun parçası.
Adım 8: Yazılım
ESP8266 (ESP-NOW) Cihazları
Tüm cihazların yazılımı Arduino IDE (v1.87) kullanılarak yazılmıştır. Her sensör istasyonu temelde aynı kodu çalıştırır. Yalnızca I2C iletişimi için hangi pinlerin kullanıldığına ve hangi sensör modülüne bağlı olduklarına göre farklılık gösterirler. En önemlisi, aynı sensöre sahip olup olmadıklarına bakılmaksızın aynı ölçüm veri paketini ESP-Now Gateway istasyonuna gönderirler. Bunun anlamı, bazı sensör istasyonlarının, gerçek değerleri sağlayacak sensörleri yoksa, basınç ve ışık seviyesi ölçümleri için yapay değerler dolduracağıdır. Her istasyonun ve ağ geçidinin kodu, Anthony Elder'in bu GitHub'daki örneklerinden uyarlanmıştır.
Ağ geçidi cihaz kodu, ESP8266'nın yalnızca bir tam işlevli UART donanımına sahip olduğundan, web sunucusuyla iletişim kurmak için SoftwareSerial'ı kullandı. Maksimum 9600 baud hızında çalışmak oldukça güvenilir görünüyor ve bu nispeten küçük veri paketlerini göndermek için fazlasıyla yeterli. Ağ geçidi cihazı ayrıca özel bir MAC adresi ile programlanmıştır. Bunun nedeni, değiştirilmesi gerekiyorsa, sensör istasyonlarının hepsinin yeni alıcı MAC adresiyle yeniden programlanması gerekmemesidir.
ESP32 (Web Sunucusu)
Her sensör istasyonu, veri paketini ağ sunucusuna ileten ağ geçidi cihazına gönderir. Veri paketiyle birlikte, her istasyonu tanımlamak için sensör istasyonu MAC adresi de gönderilir. Web sunucusunda, her sensörün konumunu belirlemek için bir "arama" tablosu bulunur ve verileri buna göre sıralar. Ölçümler arasındaki zaman aralığı, geçit yolu cihazına gönderirken sensörlerin birbiriyle "çarpışmasını" önlemek için 5 dakika artı rastgele bir faktöre ayarlandı.
Ev WIFI yönlendiricisi, WIFI'ye bağlandığında web sunucusuna sabit bir IP adresi tahsis edecek şekilde ayarlandı. Benim için 192.168.1.111 idi. Bu adresi herhangi bir tarayıcıda yazmak, kullanıcı ev ağının WIFI aralığında olduğu (ve bağlandığı) sürece hava durumu istasyonu web sunucusuna bağlanacaktır. Kullanıcı web sayfasına bağlandığında, web sunucusu bir ölçüm tablosu ile yanıt verir ve her sensörün son ölçüm zamanını içerir. Bu şekilde, bir sensör istasyonu tepkisiz hale gelirse, bir okuma 5-6 dakikadan daha eskiyse tablodan görülebilir.
Veriler, bir SD kartta tek tek metin dosyalarına kaydedilir ve ayrıca web sayfasından da indirilebilir. Verileri çizmek için Excel'e veya başka bir uygulamaya aktarılabilir.
Android uygulaması
Bir akıllı telefonda yerel hava durumu bilgilerini görüntülemeyi kolaylaştırmak için Android Studio kullanarak nispeten bir Android Uygulaması oluşturdum. GitHub sayfamda burada mevcuttur. Web sayfasını sunucudan yüklemek için ve sınırlı işlevsellik gibi webview sınıfını kullanır. Veri dosyalarını indiremez ve zaten telefonumda bunlara ihtiyacım yoktu.
9. Adım: Sonuçlar
Son olarak, ev hava istasyonumdan bazı sonuçlar. Veriler bir dizüstü bilgisayara indirildi ve Matlab'da çizildi. Matlab komut dosyalarımı ekledim ve bunları GNU Octave'de de çalıştırabilirsiniz. Dış mekan sensörü neredeyse 4 haftadır güneş enerjisiyle şarj edilmiş piliyle çalışıyor ve yılın bu zamanında nadiren güneş görüyoruz. Şu ana kadar her şey yolunda gidiyor ve ailedeki herkes şimdi bana sormak yerine hava durumuna kendileri bakabilir!
Önerilen:
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 8 Adım (Resimlerle)
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 2 farklı lokasyonda 1 yıllık başarılı operasyonun ardından, güneş enerjili meteoroloji istasyonu proje planlarımı paylaşıyor ve gerçekten uzun süre hayatta kalabilen bir sisteme nasıl evrildiğini açıklıyorum. güneş enerjisinden dönemler. Takip ederseniz
DIY Hava İstasyonu ve WiFi Sensör İstasyonu: 7 Adım (Resimlerle)
DIY Hava İstasyonu ve WiFi Sensör İstasyonu: Bu projede size bir WiFi sensör istasyonu ile birlikte bir hava istasyonunun nasıl oluşturulacağını göstereceğim. Sensör istasyonu, yerel sıcaklık ve nem verilerini ölçer ve WiFi aracılığıyla hava durumu istasyonuna gönderir. Hava durumu istasyonu daha sonra t görüntüler
Yine Bir Başka Akıllı Hava İstasyonu, Ama: 6 Adım (Resimlerle)
Yine Bir Başka Akıllı Hava Durumu İstasyonu, Ama…: Tamam, her yerde bu türden çok fazla hava durumu istasyonu olduğunu biliyorum, ancak farkı görmek için birkaç dakikanızı ayırın… Düşük güçte 2 e-kağıt ekranı… ama 10 farklı ekranlar! ESP32 tabanlı ivmeölçer ve sıcaklık/nem sensörleri Wifi upd
Bir Arduino Hava İstasyonu Daha (ESP-01 & BMP280 & DHT11 & OneWire): 4 Adım
Bir Daha Arduino Hava İstasyonu (ESP-01 & BMP280 & DHT11 & OneWire): Burada, bir ESP-01'in çok az piniyle OneWire kullanmanın bir yinelemesini bulabilirsiniz. Bu talimatta oluşturulan cihaz, cihazınızın Wifi ağına bağlanır. seçim(kimlik bilgilerine sahip olmalısınız…)BMP280 ve DHT11'den duyusal veriler toplar
Raspberry Pi ve Weewx Kullanan Acurite 5'i 1 Arada Hava İstasyonu (Diğer Hava İstasyonları Uyumludur): 5 Adım (Resimlerle)
Acurite 5'i 1 Arada Hava İstasyonu Raspberry Pi ve Weewx Kullanarak (diğer Hava İstasyonları Uyumludur): Acurite 5'i 1 arada meteoroloji istasyonunu satın aldığımda, evde yokken hava durumunu kontrol edebilmek istedim. Eve gelip kurduğumda, ekranı bir bilgisayara bağlamam ya da akıllı hub'larını satın almam gerektiğini fark ettim,