ShIoTiny: ıslak odanın havalandırılması (örnek proje)

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Ana noktalar veya bu makalenin konusu

Konuyla ilgili yazı serimize devam ediyoruz. ŞIoTiny - görsel olarak programlanabilir çip tabanlı kontrolör ESP8266.

Bu makalede, bir banyodaki veya yüksek nemli başka bir odadaki havalandırma kontrol projesi örneğini kullanarak, bunun için bir programın nasıl oluşturulduğu açıklanmaktadır. ŞIoTiny.

Serideki önceki makaleler.

ShIoTiny: küçük otomasyon, nesnelerin interneti veya “tatilden altı ay önce”
ShIoTiny: Çizim Programlarının Düğümleri, Bağlantıları ve Olayları veya Özellikleri

referanslar

İkili ürün yazılımı, kontrol devresi ve dokümantasyon
Talimatlar ve bileşenlerin açıklaması
MQTT komisyoncusu cloudmqtt.com'u kurma
Android için MQTT kontrol paneli

Giriş

Tecrübe olmadan anlayış olmaz. Bu, zamanın ve nesillerin test ettiği bir gerçektir. Bu nedenle pratik becerileri öğrenmek için kendi başınıza bir şeyler yapmaya çalışmaktan daha iyi bir şey yoktur. Neler yapabileceğinizi ve hatta neyi denememeniz gerektiğini gösteren örnekler burada işinize yarayacaktır. Başkalarının hataları elbette sizin kendi hatalarınızın oluşmasını engelleyemez ancak hatalarınızın sayısını azaltmaya yardımcı olabilir.

Önceki makalelerin okuyucularından gelen sorular ve mektuplar beni küçük bir proje yapmaya sevk etti - ShIoTiny düğümlerinin nasıl çalıştığını göstermek için bir havalandırma kontrolü örneği.

Kontrolörün doğduğu orijinal fikir ŞIoTiny - pompa ve sulama istasyonu - herkes için uygun değildir ve herkesin ilgisini çekmeyecektir. Bu nedenle birçok kişinin anlayabileceği ve işine yarayacak bir havalandırma kontrol sistemini örnek aldım.

Proje fikri bana ait değil diyeceğim buradan aldım ve daha sonra uyarlandı ŞIoTiny.

Önce ne istediğini anla

İyileştirme süreci sonsuzdur. Ve pek çok iyi fikir ve projeyi mahveden de bu mülktür. Geliştirici, mükemmel olmayan ama hala çalışan bir şeyi yayınlamak yerine onu geliştirmeye devam etti. Ve rakipler onu atlayana kadar onu geliştirdi ve ideal olmasa da (ve çoğu zaman düpedüz zayıf), çalışan bir çözüm yayınladı.

Bu nedenle projeyi nerede sonlandıracağınızı bilmek çok önemlidir. Veya başka bir deyişle, projenin başında sahip olduklarımızdan yola çıkarak projenin sonunda ne elde etmek istediğimizi belirlememiz gerekiyor. Rusça'da, tam olarak bir şey yaratmanın yolunu anlatmak amacıyla derlenen bir belge için, zihinsel engelli çevirmenlerin ve kusurlu yöneticilerin son zamanlarda bazı nedenlerden dolayı "yol" demeye başladıkları harika, kısa ve öz bir "plan" kelimesi vardır. harita". Neyse, Allah onlardan razı olsun.

Planımız bu şekilde olacak. Nemin zaman zaman ciddi oranda yükselebildiği bir oda olduğunu varsayalım. Örneğin banyo veya mutfak gibi. Nem hoş olmayan bir şeydir ve onunla mücadele etmenin yolu dünya kadar eskidir: odayı havalandırın. Havalandırmanın pek çok yolu vardır. Ama belki de siyah hayranlar gibi egzotik ve eski moda yöntemleri bırakıp sıradan bir hayrana bağlı kalacağız. Vantilatörleri bölgemizde bulmak daha ucuz ve kolaydır.

Kısacası fanı kontrol etmek istiyoruz: açın ve buna göre kapatın. Daha doğrusu ihtiyaç duyulduğunda açılıp kapanmasını istiyoruz.

Belirlemeye devam ediyor: Fanın hangi koşullar altında açılması gerektiği ve hangi koşullar altında kapanması gerektiği.

Burada her şey ortada: Nem belli bir sınırın üzerindeyse fan devreye giriyor ve havayı dışarı çekiyor; Nem normale döndü - fan kapanıyor.

Dikkatli bir okuyucunun gözü hemen "verilen" kelimesine takılacaktır. Kim tarafından verilmiştir? Belirtildiği gibi?

Eşik nemini çeşitli şekillerde ayarlayabilirsiniz. Bunlardan ikisine bakacağız: birincisi değişken direnç kullanarak ve ikincisi ağ üzerinden MQTT protokolü aracılığıyla. Bu yöntemlerin her birinin daha sonra tartışılacak olan avantajları ve dezavantajları vardır.

Anlamayanlar için “eşik nemi”nin fanın çalıştırılması gereken nem seviyesi olduğunu açıklayacağım.

Bir sonraki soru şu: Kullanıcıya doğrudan fanı açma hakkı verilmeli mi? Yani nem seviyesinden bağımsız olarak tek tuşla mı? Böyle bir imkanı sağlayacağız. Sonuçta, yalnızca yüksek nem olduğunda değil, aynı zamanda odadan, örneğin halk arasında "kötü koku" olarak adlandırılan hoş olmayan bir kokuyu gidermek için de bir vantilatöre ihtiyaç duyulabilir.

Böylece ne istediğimizi ve hatta biraz da olsa nasıl çalışacağını anlıyoruz. Havalandırma kontrol sistemimizin tüm fonksiyonlarını kısaca listeleyelim:

  • eşik nem seviyesinin ayarlanması (iki seçenek);
  • nem seviyesi ölçümü;
  • fanın otomatik açılması;
  • otomatik fan kapatma;
  • fanın manuel olarak etkinleştirilmesi (bir düğmeye basılarak).

Yani plan belli. Yukarıdaki fonksiyonların tamamını programımızda uygulamak gereklidir. Biz de bu “plan”a göre hareket edeceğiz. Öncelikle cihazın blok diyagramını çizelim.

Cihazın blok şeması

Genel olarak konuşursak, böyle iki planımız olacak. Birincisi, eşik nem seviyesinin değişken bir dirençle ayarlandığı seçenek içindir. İkinci şema ise eşik nem seviyesinin ağ üzerinden MQTT protokolü aracılığıyla ayarlandığı seçeneğe yöneliktir.

Ancak bu devreler yalnızca bir elemanla farklılık göstereceğinden - değişken direnç "nem eşiğini ayarlama", yalnızca bir blok diyagram çizeceğiz. Elbette GOST'a göre blok şeması farklı görünüyor. Ancak biz bizon mühendislerine değil, genç nesle odaklanıyoruz. Bu nedenle görünürlük daha önemlidir.

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Peki resimde ne görüyoruz? Fan röleye bağlı Relay1 kontrolör ŞIoTiny. Fanın yüksek voltajlı bir cihaz olduğunu lütfen unutmayın. Bu nedenle eğer biri bunu kendisi yapıyorsa dikkatli olun. Yani, en azından parmaklarınızı veya ölçüm cihazlarınızı devreye sokmadan önce en azından fanın gücünü kapatın. Ve ikinci not. Hayranınız ondan daha güçlüyse 250Vt, ardından doğrudan şuraya bağlayın: ŞIoTiny buna değmez - yalnızca marş aracılığıyla.

Fanı hallettik. Şimdi fanı "manuel olarak aç" düğmesi. Girişe bağlanır Giriş1. Burada açıklanacak başka bir şey yok.

Sıcaklık ve nem sensörü DHT-11 (ya DHT-22 veya bunların analogları). Bağlantısı için kumanda üzerinde özel bir giriş bulunmaktadır. ŞIoTiny. Şekilde de görebileceğiniz gibi böyle bir sensörün bağlanması da sorun değil.

Ve son olarak, nem eşiğini belirleyen değişken direnç. Daha doğrusu değişken ve sabit dirençlerden oluşan bir bölücü. Bağlantısında herhangi bir sorun yok ancak yerleşik ADC'nin olduğunu açıklayayım. ESP8266 maksimum 1 Volt için tasarlanmıştır. Bu nedenle yaklaşık 5 katı gerilim bölücüye ihtiyaç vardır.

Ve eğer eşik nem seviyesi ağ üzerinden MQTT protokolü kullanılarak ayarlanıyorsa bu bölücüye gerek olmadığını bir kez daha hatırlatmama izin verin.

ElDraw ShIoTiny editöründe cihaz için bir algoritma oluşturmaya başlayalım. Bu editöre oraya nasıl gidileceği, daha önceki makalelerde veya bağlantısı makalenin başında bulunan talimatlarda okunabilir.

Birinci seçenek, en basit

Basit bir şeyle başlayalım: Röleyi açmak Relay1 eşik nem seviyesi belirli bir süre aşıldığında.

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Gördüğünüz gibi karmaşık bir şey yok: yalnızca dört düğüm, yorum düğümleri hariç. DHT11 - bu sıcaklık ve nem sensörünün kendisidir (bununla değiştirilebilir) DHT22).

Sabit SABİT — yüzde olarak eşik nem seviyesi.

Karşılaştırıcı - iki sayıyı karşılaştıran ve belirli bir koşul karşılanırsa 1, koşul karşılanmazsa 0 çıktısı veren bir düğüm.

Bizim durumumuzda bu durum A>BNerede A sensör tarafından ölçülen nem seviyesidir ve B — aynı nemin eşik seviyesi.

Ölçülen nem seviyesi (A) eşik nem seviyesini aşacaktır (B), tam orada karşılaştırıcının çıkışında A>B 1 görünecek ve röle açılacaktır. Tersine, nem seviyesi normale döner dönmez (örn. bir<=B), tam orada karşılaştırıcının çıkışında A>B 0 görünecek ve röle kapanacaktır.

Temiz? Kendini pek rahat hissetmeyenler için tekrar okuyun veya talimatlardaki ünitelerin çalışma açıklamasına bakın.

Sensörden gelen verilerin DHT11 yaklaşık her 10 saniyede bir güncellenir. Bu nedenle röle 10 saniyede bir defadan daha sık açılıp kapanamayacaktır.

Her şey yoluna girecek ama değişken bir direnç kullanarak eşik nem seviyesini ayarlamak istiyoruz. Hiçbir şey daha kolay olamaz!

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Sabit düğümü bir ADC düğümüyle değiştirelim. Sonuçta, değişken dirençli bir voltaj bölücüyü ADC'ye bağladık.

ADC girişindeki voltaj 0 ila 1 Volt arasında değişir. Ancak sensör çıkışındaki nem %0 ile %100 arasında değişmektedir. Bunları nasıl karşılaştırırız? Basit. ADC düğümü ŞIoTiny sadece giriş voltajını ölçmekle kalmaz, aynı zamanda nasıl yapılacağını da bilir ölçek ve kaydırma.

Yani, ADC1 düğümünün (ADC) çıkışı şu değere sahip olacaktır: X, formülle hesaplanır

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Nerede ShIoTiny: ıslak odanın havalandırılması (örnek proje) — ADC girişindeki voltaj (0'dan 1V'a kadar); k - aralık (ADC aralığı) ve b-ofset (ADC ofseti). Böylece, eğer ayarlarsanız k = 100 и b = 0, sonra değiştirirken ShIoTiny: ıslak odanın havalandırılması (örnek proje) 0 ila 1 aralığında değer X ADC düğümünün çıkışında 0 ila 100 aralığında değişecektir. Yani sayısal olarak nemdeki% 0 ila 100 arasındaki değişim aralığına eşittir.

Veya basitçe değişken direnç kaydırıcısını döndürerek eşik nem seviyesini 0'dan 100'e ayarlayabilirsiniz. Tek rahatsızlık, herhangi bir görüntüleme cihazının bulunmamasıdır. Ancak pratikte, değişken dirençli bir motorun 6 bölümünü (%0, %20, %40, %60, %80, %100) yaparsanız, bu, eşik nem seviyesini ayarlamak için yeterlidir.

Oranları nasıl ayarlayacağız? k - aralık (ADC aralığı) ve b-ofset (ADC ofseti)? Evet, buharda pişirilmiş şalgamlardan daha kolay! Fare işaretçinizi bir düğüme doğrultun ADC1 ve hemen bir ayarlar penceresi göreceksiniz. İçine ihtiyacınız olan her şeyi koyabilirsiniz. Bizim durumumuzda şekildeki gibi bir pencere olacak.

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Yani en basit çalışma çözümümüz var. İyileştirmeye başlayalım.
Bu arada, en basit çözümün bir avantajı var; internete ihtiyaç duymuyor. Tamamen özerktir.

İkinci seçenek, düğmeyi bağlayın

Her şey çalışıyor ve herkes mutlu. Ama şanssızlık ki havalandırmayı zorla açamayız. Girişte zaten anlaşmıştık. Giriş1 nem sensöründen bağımsız olarak fanı zorla açıp kapatacak bir düğmemiz bağlı olacak.
Bu butonu program diyagramımızda işlemenin zamanı geldi.

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Düğmeye tıklama işleme bloğu turuncu bir çizgiyle vurgulanır. Çıkışındaki değer bir (yeşil çizgi, düğüm çıkışı) değerini aştığında sıfırlanan, düğmeye basılan bir sayaçtır. CT).

Burada her şey eskisi kadar basit çalışıyor: sayaç CT girişe bağlı bir düğmeye basılma sayısını sayar Giriş1. Yani butona her bastığınızda bu sayacın çıkışındaki değer 1 artar.

Bu değer ikiye eşit olur olmaz (yani 1'den büyük), hemen karşılaştırıcının çıkışında A>B 1 görünecektir ve bu 1 sayacı sıfırlayacaktır. CT sıfıra. Bu, diyagramın en altındaki karşılaştırıcı anlamına gelir!

Böylece düğmemizin iki durumu vardır - 0 ve 1. Daha fazla duruma ihtiyacımız olsaydı (3 veya 4 veya daha fazla) - yalnızca sabiti değiştirmemiz gerekirdi SABİT bir değerden diğerine.

Yani fanı açmak için iki koşulumuz var: belirli bir nem seviyesinin aşılması ve düğmeye bir kez basılması. Koşullardan herhangi biri karşılanırsa fan açılacaktır. Ve düğmeye tekrar basılana kadar çalışacak И nem seviyesi normale dönmeyecek.

Elbette algoritmayı daha da karmaşık hale getirebilirsiniz ama biz bunu yapmayacağız - dileyenlere yaratıcılığa yer bırakacağız.

Üçüncü seçenek, İnternet'e bağlanın

Açıkladığımız her şey oldukça uygulanabilir. Gösteriler ne olacak? Sonuçta herhangi bir sivilceli hipster cracker hacker, akıllı telefondan kontrol etmek yerine bir düğmeyi çeviren ve bir düğmeye basan birine gülecektir! Sapı bükmek "moda değil". Ancak parmağınızı akıllı telefonunuzda gezdirmek, parmağınızı kanlı bir şekilde ovmak - bu bir hipster-hacker-cracker'ın arzularının zirvesidir (hepsini asla ayırt edemedim - bu yüzden yanılıyorsam beni affedin).

Ancak bu kişilere karşı hoşgörülü olalım. İnternet üzerinden yönetimin gerçek avantajları vardır. Her şeyden önce görünürlüktür. Birkaç ince ayar ile Carlson kontrolörümüz için tamamen kullanışlı bir kontrol paneli oluşturmanıza olanak tanıyan, tüm platformlara yönelik çok sayıda uygulama vardır. İkincisi, odadaki nem durumunu uzaktan izleme fırsatıdır. Üçüncüsü, yalnızca fanın ne yaptığını (dönüp dönmediğini) değil, aynı zamanda hangi eşik nem seviyesinin ayarlandığını da görebilirsiniz. Daha sonra fan otomatik veya manuel olarak açıldı. Genel olarak istediğiniz her şey.

Elbette bazı hayranların bu kadar ilgi görmesi büyük bir onur. Ama bu sadece bir örnek.

Yani internete bağlanmak için teknolojiyi kullanacağız MQTT ve aynı isimli protokol.
Bu teknolojiden faydalanmak için ihtiyacımız var MQTT komisyoncusu. Bu hizmet veren özel bir sunucudur MQTT istemcileriÖrneğin Şok ve akıllı telefonunuz.

Teknolojinin özü MQTT istemcilerden herhangi birinin, MQTT komisyoncusuna (sunucuya) belirli bir ad (buna denir) altında isteğe bağlı veriler yayınlaması gerçeğinden oluşur. konu terminolojide MQTT). Diğer istemciler adlarını kullanarak isteğe bağlı verilere abone olabilirler (konu) ve yeni yayınlanan verileri alın. Yani, tüm veri alışverişi müşteri-aracı-müşteri prensibini takip eder.

Я Yapmayacağım ayrıntılara odaklanın. İnternette nasıl çalıştığına dair birçok makale ve eğitim var. MQTT ve kontrol panelleri oluşturmak için hangi programlar var? Size sadece verileri nasıl alıp yayınlayabileceğimizi göstereceğim. ŞIoTiny.

Broker olarak kullandım www.cloudmqtt.comama prensip her yerde aynıdır.

Yani, kayıt olduğunuzu varsayacağız. MQTT komisyoncusu. Genel olarak, komisyoncu size bir kullanıcı adı ve şifrenin (yetkilendirme için) yanı sıra bağlantı için bir bağlantı noktası verecektir (veya bulmanızı isteyecektir). Prize takmaya ŞIoTiny к MQTT komisyoncusu iki şekilde mümkündür - düzenli bağlantı ve üzerinden TLS (SSL).

Tüm bu parametreler ŞIoTiny sekmeye girildi , bölüm Sunucuya MQTT Bağlantısı.

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Eğer senin MQTT komisyoncusu yetkilendirme gerektirmez - kullanıcı adınızı ve şifrenizi girmeyin (bu alanları boş bırakın).

Parametre MQTT konu öneki ayrı bir açıklama gerektirir.

MQTT parametreleri öneki, konu adına eklenen bir dizedir (konu) bir MQTT komisyoncusuna yayın yaparken ve abone olurken. yüklemek MQTT öneki denetleyiciniz için bunu giriş alanına girmeniz yeterlidir "MQTT Konu Öneki'('MQTT konu öneki"). Önek her zaman eğik çizgiyle başlar ("/")! Giriş alanına eğik çizgi girmezseniz otomatik olarak eklenecektir. Önekte sembol kullanamazsınız "#" и "+". Başka hiçbir kısıtlama yoktur.

Örneğin, " parametresini yayınlarsanızdurum" (veya abone olun) ve önekiniz " olarak ayarlandı/saçmalık/", daha sonra bu parametre komisyoncuda " adı altında yayınlanacaktır./shiotiny/durum" Boş bir önekiniz varsa, aracıdaki tüm parametreler eğik çizgiyle başlayacaktır ("/"): "durum"olarak yayınlanacak"/durum'.

Yani, kayıt olduğunuza inanıyoruz MQTT komisyoncusu ve bir kullanıcı adı, şifre ve bağlantı noktası aldı. Daha sonra bu parametreleri sekmeye girdiniz , bölüm Sunucuya MQTT Bağlantısı kontrolör ŞIoTiny.

Ön ekin " olarak ayarlandığını varsayıyoruz/oda/'.

Tüm önemli parametrelerin durumunu yayınlayarak başlayalım: röle Gerçek1, manuel anahtarlama durumları, otomatik anahtarlama durumları ve son olarak eşik ve mevcut nem seviyeleri. Bir bonus da odadaki sıcaklıktır. Bunun nasıl yapılacağı, şekle bakın.

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Gördüğünüz gibi önceki versiyondan farkı sadece düğümler"MQTT Yayınla" Önek dikkate alınarak aşağıdaki parametreler yayınlanır:
ShIoTiny: ıslak odanın havalandırılması (örnek proje)

Gördüğünüz gibi sistemin tüm durumu avucumuzun içinde!

Ancak sadece görmek değil, aynı zamanda kontrol etmek de istiyoruz. Ne yapmalıyım? Çok basit. kullanarak bir eşik nem seviyesi ayarlamayı reddedeceğiz. ADC ve değişken bir direnç ve bu eşik nem seviyesini şuna göre ayarlayacağız: MQTT doğrudan akıllı telefonunuzdan!

ShIoTiny: ıslak odanın havalandırılması (örnek proje)

ADC düğümünü devreden kaldırıyoruz ve buraya üç yeni düğüm ekliyoruz: FLASH mağazası, FLAŞ geri yükleme и MQTT'nin açıklaması.

Düğüm işlevi MQTT'nin açıklaması açık: bir parametre alıyor /oda/trigHset (eşik nem seviyesi) s MQTT komisyoncusu. Peki bundan sonra verilerle ne yapacak? Sadece onları düğüme verir FLASH mağazası, bu da bu verileri adı altında kalıcı bellekte saklar. trigH. Bundan sonra düğüm FLAŞ geri yükleme adı altında kalıcı bellekteki verileri okur trigH ve bundan sonra ne olacağını zaten biliyoruz.

Neden bu tür zorluklar? Alınan veriler neden karşılaştırıcının girişine hemen gönderilemiyor?

Yoldaş S. Holmes'un dediği gibi - bu temel! Hiç kimse cihazınızı açtıktan sonra katılacağını garanti etmez MQTT komisyoncusu. Ve nemin ölçülmesi gerekiyor. Ve fanın açılması gerekiyor. Ancak eşik nem seviyesi hakkında bilgi olmadan bu imkansızdır! Bu nedenle cihazımız açıldığında, önceden saklanan eşik nem seviyesini kalıcı hafızadan alır ve karar vermek için kullanır. Ve bağlantı kurulduğunda MQTT komisyoncusu ve birisi yeni bir değer yayınlayacak /oda/trigHset, daha sonra bu yeni değer kullanılacaktır.

Daha sonra istediğiniz her şeyi ortaya çıkarabilirsiniz. Örneğin neme ek olarak sıcaklık hesaplamasını da uygulayın. Veya “akıllı” aydınlatma kontrolünü ekleyin (hala iki rölemiz ve kullanılmayan iki girişimiz var). Herşey senin elinde!

Sonuç

Bu yüzden, ShIoTiny'ye dayalı, esasen basit bir denetleyicinin uygulanmasına ilişkin birkaç örneğe baktık. Belki bu birisi için faydalı olacaktır.

Her zaman olduğu gibi öneriler, dilekler, sorular, yazım hataları vb. - e-postayla: [e-posta korumalı]

Kaynak: habr.com

Yorum ekle