İçindekiler:

IoT Su Alarmı: 5 Adım (Resimlerle)
IoT Su Alarmı: 5 Adım (Resimlerle)

Video: IoT Su Alarmı: 5 Adım (Resimlerle)

Video: IoT Su Alarmı: 5 Adım (Resimlerle)
Video: Babalar çocukları okula bırakırken 2024, Temmuz
Anonim
IoT Su Alarmı
IoT Su Alarmı

Son zamanlarda mutfak tahliye yedeği yaşadım. O sırada evde olmasaydım dairemde zemin ve alçıpan hasarına neden olurdu. Neyse ki sorunun farkındaydım ve suyu bir kovayla boşaltmaya hazırdım. Bu bana bir sel alarmı almayı düşündürdü. Amazon'da pek çok uygun fiyatlı ürün keşfettim, ancak internet bağlantısı olanlar, özellikle tescilli bildirim hizmetleriyle ilgili sorunlar nedeniyle, önemli bir olumsuz yorum yüzdesine sahipti. Bu nedenle, seçtiğim güvenilir bildirim araçlarını kullanacak kendi IoT su alarmımı yapmaya karar verdim.

Adım 1: Çalışma Prensibi

Çalışma prensibi
Çalışma prensibi

Alarmın beyni olarak bir AVR ATtiny85 mikro denetleyicisi vardır. Bataryadan ve su sensöründen voltaj okumaları alır ve su varlığını veya düşük batarya durumunu tespit etmek için bunları önceden tanımlanmış değerlerle karşılaştırır.

Su sensörü, yaklaşık 1 mm aralıkla yerleştirilmiş iki kablodan oluşur. Tellerden biri 3,3 V'a, diğeri ise yine 0,5 Mohm'luk bir dirençle toprağa bağlı olan mikrodenetleyici üzerindeki bir algılama pimine bağlanır. Normalde, sensör kabloları arasındaki direnç çok yüksektir (10 MOhm'nin oldukça üzerindedir), bu nedenle algılama pimi tamamen 0 V'a çekilir. Ancak, teller arasında su bulunduğunda direnç 1 MOhm'nin altına düşer, ve algılama pimi bir miktar voltaj görür (benim durumumda yaklaşık 1,5 V). ATtiny85, algılama piminde bu voltajı algıladığında, bir zili çalıştırmak için bir MOSFET'i etkinleştirir ve uyarı (e-posta ve push bildirimleri) göndermekten sorumlu olan ESP8266 modülüne uyandırma sinyali gönderir. Bir dakikalık zil sesinin ardından alarm devre dışı bırakılır ve yalnızca güç çevrimi ile sıfırlanabilir.

Bu ünite iki alkalin veya NiMH hücresinden çalışır. Mikrodenetleyici pilleri korumak için çoğu zaman uykudadır, su sensörünü ve pillerin voltajını kontrol etmek için aralıklı olarak uyanır. Piller zayıfsa, mikrodenetleyici düşük pil uyarısı göndermek için ESP8266 modülünü uyandırır. Uyarıdan sonra, pilin aşırı boşalmasını önlemek için alarm devre dışı bırakılır.

ESP8266 modülü hem düşük pil uyarıları hem de sel uyarıları göndermekten sorumlu olduğundan, ATiny85'ten bir kontrol sinyali gerektirir. Sınırlı sayıda mevcut pin nedeniyle, bu kontrol sinyali, pil LED göstergesinden sorumlu aynı pin tarafından üretilir. Normal çalışma sırasında (alarm devreye girer ve piller şarj edilir), LED aralıklı olarak yanıp söner. Düşük pil durumu algılandığında, ESP modülünün RX pinine yüksek sinyal sağlamak için LED yanar. Su tespit edilirse, ESP8266 uyanıkken pil LED'i sönecektir..

Adım 2: Tasarım ve Montaj

Tasarım ve Montaj
Tasarım ve Montaj
Tasarım ve Montaj
Tasarım ve Montaj
Tasarım ve Montaj
Tasarım ve Montaj

Devreyi çoğunlukla 0805 SMD parçaları kullanarak çift taraflı 4x6 cm protoboard üzerine kurulacak şekilde tasarladım. Sunulan şemalar bu yapıya dayanmaktadır, ancak delikten geçen bileşenler için kolayca uyarlanabilir (ipucu: alanı en aza indirmek için, delik içinden geçen dirençleri dikey olarak lehimleyin).

Aşağıdaki parçalar gereklidir:

- Dirençler: 330 Ω x 1; 470 Ω x 1; 680 Ω x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Bir adet 10 µF seramik kondansatör - Bir adet lojik seviyeli N-kanallı MOSFET (örn. RFP30N06LE veya AO3400) - Bir adet kırmızı ve bir adet sarı LED (veya isterseniz diğer renkler). - İki telli vidalı terminal konnektörleri x 3 (bunlar değil) kesinlikle gereklidir, ancak test sırasında çevre birimini bağlamayı ve bağlantısını kesmeyi kolaylaştırırlar)- 3,3 V için iyi olan yüksek sesli bir piezo buzzer- Bir ATtiny85 mikrodenetleyici (PDIP versiyonu)- Mikrodenetleyici için 8 pinli bir PDIP soketi- Bir ESP-01 modülü (başka bir ESP8266 tabanlı modül ile değiştirilebilir, ancak bu durumda düzende birçok değişiklik olacaktır) - 2,2 V'ta 200 mA (500 mA patlama) akım verebilen 3,3 V DC-DC yükseltici dönüştürücü giriş. (Ultra düşük hareketsiz akımı nedeniyle https://www.canton-electronics.com/power-converter… adresini tavsiye ederim)- Bir adet 3 pin dişi başlık- İki adet 4 pinli dişi başlık veya bir adet 2x4 başlık- 22 AWG katı kablo su sensörü için - 22 AWG örgülü tel (veya iz oluşturmak için başka bir tür ince açıkta kalan tel)

Yukarıda listelenen direnç değerlerini öneririm, ancak çoğunu benzer değerlerle değiştirebilirsiniz. Kullanmak istediğiniz LED'lerin tipine bağlı olarak istenilen parlaklığı elde etmek için akım sınırlayıcı direnç değerlerini ayarlamanız gerekebilir. MOSFET, açık delik veya SMT (SOT23) olabilir. MOSFET'in türünden yalnızca 330 Ohm direncinin yönü etkilenir. Bu devreyi NiMH pillerle kullanmayı planlıyorsanız, bir PTC sigortası (örn. 1 A dereceli) önerilir. Ancak, alkalin pillerde buna gerek yoktur. İpucu: Bu alarm için gerekli parçalar ebay veya aliexpress'ten ucuza satın alınabilir.

Ek olarak, ESP-01 modülünü programlamak için bir devre tahtasına, birkaç delikten geçen 10k rezistöre, çoklu erkek-erkek ve dişi-erkek jumper ("dupont") kablolarına ve bir USB-UART adaptörüne ihtiyacınız olacaktır.

Su sensörü çeşitli şekillerde yapılabilir, ancak en basit olanı, uçları açıkta kalan (1 cm uzunluğunda) yaklaşık 1 mm aralıklı iki adet 22 AWG teldir. Amaç, su mevcutken sensör kontakları arasında 5 MΩ'dan daha az dirence sahip olmaktır.

Devre maksimum pil ekonomisi için tasarlanmıştır. İzleme rejiminde sadece 40-60 µA çeker (ESP-01 modülündeki güç LED'i çıkarılmış olarak). Alarm tetiklendiğinde devre bir saniye veya daha kısa süre 300-500 mA (2,4 V girişte) çeker ve bundan sonra akım 180 mA'nın altına düşer. ESP modülü bildirim göndermeyi bitirdiğinde, sesli uyarı kapanana kadar akım tüketimi 70 mA'nın altına düşecektir. Ardından alarm kendini devreden çıkaracak ve akım tüketimi 30 µA'nın altında olacaktır. Böylece bir dizi AA pil devreyi aylarca (muhtemelen bir yıldan fazla) çalıştırabilecektir. Farklı bir yükseltici dönüştürücü kullanırsanız, örneğin 500 µA'lık bir durgun akımla, pillerin çok daha sık değiştirilmesi gerekecektir.

Montaj ipuçları:

Daha kolay lehimleme için protoboard üzerindeki tüm izleri ve bileşenleri etiketlemek için kalıcı bir işaretleyici kullanın. Aşağıdaki sırayla ilerlemenizi öneririm:

- üst taraf SMT LED'leri ve yalıtımlı tel köprüler

- üst taraf MOSFET (not: SOT-23 MOSFET'iniz varsa, fotoğraftaki gibi çapraz olarak yerleştirin. Açık delik MOSFET kullanıyorsanız, kapı pimi I3 konumunda olacak şekilde yatay olarak yerleştirin.)

- üst taraftan delikli parçalar (not: buzzer lehimlenmemiştir ve PCB'ye monte edilmesi bile gerekmez)

- ters taraf SMT parçaları ve izleri (ör. AWG22 telinden tekli teller)

3. Adım: Bellenim

ATtiny85 için C kodu

Main.c, derlenmesi ve mikrodenetleyiciye yüklenmesi gereken kodu içerir. Programlayıcı olarak bir Arduino kartı kullanacaksanız, bağlantı şemasını bu eğitimde bulabilirsiniz. Yalnızca aşağıdaki bölümleri izlemeniz gerekir (gerisini yok sayın):

– Arduino Uno'yu ISP olarak Yapılandırma (Sistem İçi Programlama)

– ATtiny85'i Arduino Uno ile bağlama.

Bellenimi derlemek ve yüklemek için CrossPack'e (Mac OS için) veya AVR araç zincirine (Windows için) ihtiyacınız olacak. Kodu derlemek için aşağıdaki komutun yürütülmesi gerekir:

avr-gcc -Os -mmcu=attiny85 -c ana.c; avr-gcc -mmcu=attiny85 -o main.elf main.o; avr-objcopy -j.text -j.data -O ihex main.elf main.hex

Bellenimi yüklemek için aşağıdakileri çalıştırın:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash:w:main.hex

"/dev/cu.usbmodem1411" yerine muhtemelen Arduino'nuzun bağlı olduğu seri bağlantı noktasını takmanız gerekecektir (bunu Arduino IDE: Araçlar Bağlantı Noktasında bulabilirsiniz).

Kod birden fazla işlev içerir. deep_sleep(), mikrodenetleyicinin yaklaşık 8 saniye boyunca çok düşük güç durumuna girmesini sağlar. pil ve sensör voltajlarını ölçmek için read_volt() kullanılır. Akü voltajı, dahili voltaj referansına göre ölçülür (2,56 V artı veya eksi birkaç yüzde), sensör voltajı ise Vcc = 3,3 V'a karşı ölçülür. Okumalar, sırasıyla 932 ve 102 olarak tanımlanan BATT_THRESHOLD ve SENSOR_THRESHOLD ile karşılaştırılır; ~2,3 ve 0,3 V. Daha iyi pil ömrü için pil eşik değerini azaltabilirsiniz, ancak bu önerilmez (ayrıntılı bilgi için Pille ilgili önemli noktalara bakın).

activate_alarm(), ESP modülünü su algılama konusunda bilgilendirir ve sesli uyarı verir. low_batt_notification(), ESP modülüne pilin azaldığını bildirir ve ayrıca sesli uyarı verir. Pili değiştirmek için gece yarısı uyandırılmak istemiyorsanız, low_batt_notification() içindeki " | 1< " öğesini kaldırın.

ESP-01 için Arduino çizimi

ESP modülünü Arduino HAL kullanarak programlamayı seçtim (kurulum talimatları için bağlantıyı takip edin). Ek olarak aşağıdaki iki kütüphaneyi kullandım:

ESP8266 Górász Péter tarafından E-posta Gönder

Arduino Hannover ekibi tarafından ESP8266 Pushover

İlk kitaplık bir SMTP sunucusuna bağlanır ve e-posta adresinize bir uyarı gönderir. ESP'niz için bir gmail hesabı oluşturmanız ve kimlik bilgilerini koda eklemeniz yeterlidir. İkinci kütüphane, Pushover servisi aracılığıyla push bildirimleri gönderir (bildirimler ücretsizdir, ancak uygulamayı telefonunuza/tabletinize yüklemek için bir kez ödeme yapmanız gerekir). Her iki kütüphaneyi de indirin. E-posta Gönder kitaplığının içeriğini taslak klasörünüze koyun (arduino, arduino taslağını ilk kez açtığınızda onu oluşturacaktır). Pushover kitaplığını IDE (Sketch -> Include Library -> Add. ZIP library) aracılığıyla yükleyin.

ESP-01 modülünü programlamak için aşağıdaki öğreticiyi takip edebilirsiniz: https://www.allaboutcircuits.com/projects/breadbo… Kılavuzda gösterildiği gibi bir sıra pimi yeniden lehimlemekle uğraşmanıza gerek yok - sadece dişi-erkek dupont kullanın modülün pinlerini breadboard'a bağlamak için teller. Güçlendirici dönüştürücünün ve USB-UART adaptörünün aynı zemini paylaşmak zorunda olduğunu unutmayın (not: Güçlendirici dönüştürücü yerine USB-UART adaptörünün 3,3 V çıkışını kullanabilirsiniz, ancak büyük olasılıkla olmaz yeterli akım üretebilir).

4. Adım: Pil Konuları

Sağlanan ürün yazılımı kodu, düşük pil uyarısı gönderecek ve ~2,3 V'de kapanacak şekilde önceden yapılandırılmıştır. Bu eşik, iki NiMH pilin seri olarak kullanıldığı varsayımına dayanmaktadır. 1 V'nin altında herhangi bir NiMH hücresinin boşaltılması tavsiye edilmez. Her iki hücrenin de eşit kapasiteye ve deşarj özelliklerine sahip olduğu varsayılırsa, her ikisi de ~1,15 V'de kesilir - güvenli aralık dahilinde. Bununla birlikte, birçok deşarj döngüsü için kullanımda olan NiMH hücreleri kapasite bakımından farklılık gösterme eğilimindedir. Kapasitede %30'a varan fark tolere edilebilir, çünkü bu yine de 1 V civarında en düşük voltaj hücresi kesme noktasıyla sonuçlanacaktır.

Donanım yazılımındaki düşük pil eşiğini azaltmak mümkün olsa da, bunu yapmak güvenlik payını ortadan kaldırır ve pil ömründe yalnızca marjinal bir artış beklenirken pilin aşırı boşalmasına ve hasar görmesine neden olabilir (bir NiMH hücresi > %85'i 1.15 V'ta boşaldı).

Dikkate alınması gereken diğer bir faktör, güçlendirici dönüştürücünün düşük pillerde 300-500 mA tepe akımında en az 3,0 V (anekdotsal kanıtlara göre 2,5 V) sağlama yeteneğidir. NiMH pillerin düşük iç direnci, tepe akımlarında yalnızca 0,1 V'luk önemsiz bir düşüşe neden olur, bu nedenle 2,3 V'a (açık devre) deşarj edilen bir çift NiMH hücresi, yükseltici dönüştürücüye en az 2,2 V sağlayabilir. Bununla birlikte, alkalin pillerle daha karmaşıktır. 2.2-2.3 V'ta (açık devre) oturan bir çift AA pil ile, tepe akımlarında 0,2-0,4 V'luk bir voltaj düşüşü beklenir. Devrenin, en yüksek akımlarda sağlanan 1.8 V kadar düşük bir güçlendirici dönüştürücü ile çalıştığını doğrulamış olmama rağmen, bu muhtemelen çıkış voltajının Espressiff tarafından önerilen değerin anlık olarak altına düşmesine neden olur. Bu nedenle, 2,3 V'luk kesme eşiği, alkalin pillerle çok az güvenlik payı bırakır (mikro denetleyici tarafından gerçekleştirilen bir voltaj ölçümünün yalnızca artı veya eksi yüzde birkaç içinde doğru olduğunu unutmayın). Alkalin piller zayıfken ESP modülünün arızalanmaması için kesme voltajını 2,4 V'a çıkarmanızı öneririm (#define BATT_THRESHOLD 973). 1,2 V'ta (açık devre) bir alkalin hücre yaklaşık %70 deşarj olur; bu, hücre başına 1,15 V'luk deşarj derecesinden yalnızca 5-10 puan daha düşüktür.

Hem NiMH hem de alkali hücreler bu uygulama için avantaj ve dezavantajlara sahiptir. Alkalin piller daha güvenlidir (kısa devre yaptığında alev almazlar) ve kendi kendine deşarj olma oranları çok daha düşüktür. Ancak NiMH piller, düşük iç dirençleri sayesinde ESP8266'nın daha düşük bir kesme noktasında güvenilir şekilde çalışmasını garanti eder. Ama sonuçta, her iki tip de bazı önlemlerle kullanılabilir, bu yüzden bu sadece kişisel tercih meselesidir.

Adım 5: Yasal Sorumluluk Reddi

Bu devre profesyonel olmayan bir hobici tarafından sadece hobi uygulamaları için tasarlanmıştır. Bu tasarım iyi niyetle paylaşılmıştır, ancak hiçbir garanti verilmemektedir. Riski size ait olmak üzere kullanın ve başkalarıyla paylaşın. Devreyi yeniden oluşturarak, mucidin bu devrenin arızalanması veya normal kullanımı nedeniyle doğrudan veya dolaylı olarak meydana gelebilecek herhangi bir zarardan (varlıkların bozulması ve kişisel yaralanma dahil ancak bunlarla sınırlı olmamak üzere) sorumlu tutulamayacağını kabul edersiniz. Ülkenizin yasaları bu sorumluluktan feragatini geçersiz kılar veya yasaklarsa, bu tasarımı kullanamazsınız. Bu tasarımı veya bu tasarıma dayalı olarak değiştirilmiş bir devreyi paylaşırsanız, bu talimatın url'sini belirterek orijinal mucidin adını vermelisiniz.

Önerilen: