İçindekiler:

Pille Çalışan Su Kolektörü Seviye Sensörü: 7 Adım (Resimlerle)
Pille Çalışan Su Kolektörü Seviye Sensörü: 7 Adım (Resimlerle)

Video: Pille Çalışan Su Kolektörü Seviye Sensörü: 7 Adım (Resimlerle)

Video: Pille Çalışan Su Kolektörü Seviye Sensörü: 7 Adım (Resimlerle)
Video: Kumpas Nasıl Okunur | Kumpas Okuma 2024, Temmuz
Anonim
Pille Çalışan Su Toplayıcı Seviye Sensörü
Pille Çalışan Su Toplayıcı Seviye Sensörü
Pille Çalışan Su Toplayıcı Seviye Sensörü
Pille Çalışan Su Toplayıcı Seviye Sensörü

Evimizin çatısına düşen yağmurdan beslenen ve bahçedeki tuvalet, çamaşır makinesi ve sulama tesisleri için kullanılan su deposu vardır. Son üç yıldır yazlar çok kuruydu, bu yüzden tanktaki su seviyesine dikkat ettik. Şimdiye kadar, tanka koyduğumuz ve seviyesini işaretlediğimiz tahta bir çubuk kullandık. Ama kesinlikle bunu geliştirmek mümkün olmalı!

Bu projenin devreye girdiği yer burasıdır. Buradaki fikir, tankın üstüne bir ultrasonik mesafe sensörü eklemektir. Bu sensör, daha sonra su yüzeyi tarafından yansıtılan bir sonar yayan ses dalgaları olarak çalışır. Dalgaların geri gelmesi için geçen süreden ve sesin hızından, su yüzeyine olan mesafeyi hesaplayabilir ve tankın ne kadar dolu olduğunu belirleyebilirsiniz.

Depoya yakın bir şebeke bağlantım olmadığı için, tüm cihazın pillerle çalışması çok önemlidir. Bu, tüm parçaların güç tüketimi konusunda bilinçli olmam gerektiği anlamına geliyor. Verileri geri göndermek için bir ESP8266 mikroçipinin yerleşik Wifi'sini kullanmaya karar verdim. Wifi oldukça aç olsa da, başka bir radyo bağlantısı türüne göre bir avantajı vardır: röle görevi gören başka bir cihaz oluşturmak zorunda kalmadan doğrudan evinizin kablosuz yönlendiricisine bağlanabilirsiniz.

Güçten tasarruf etmek için ESP8266'yı çoğu zaman derin uyku moduna geçireceğim ve her saat başı ölçüm yapacağım. Su seviyesini takip etme amacım için bu fazlasıyla yeterli. Veriler ThingSpeak'e gönderilecek ve ardından bir uygulama aracılığıyla bir akıllı telefonda okunabilecek.

Bir detay daha! Mesafe ölçümü için gerekli olan ses hızı, sıcaklığa ve daha az ölçüde neme bağlıdır. Mevsimler boyunca doğru bir dış ölçüm için sıcaklık, nem ve basıncı ölçen bir BME280 sensörü kullanacağız. Bir bonus olarak bu, su seviyesi sensörümüzü de mini bir hava istasyonu yapar.

Parçalar:

  • 1x ESP8266 ESP-12F.
  • 1x ESP-12F adaptör plakası.
  • 1x FT232RL FTDI: USB'den Seri adaptöre.
  • 1x HC-SR04-P: ultrasonik mesafe ölçüm modülü. P'nin önemli olduğunu unutmayın, çünkü bu, minimum 3V çalışma voltajına sahip olan versiyondur.
  • 1x BME280 3.3V versiyonu: sıcaklık, basınç ve nem sensörü.
  • 1x IRL2203N: n-kanal MOSFET transistör.
  • 1x MCP1700-3302E 3.3V versiyonu: voltaj regülatörü.
  • 3x şarj edilebilir AA pil, örn. 2600mAh.
  • 3 pil için 1x pil tutucu.
  • 1x ekmek tahtası.
  • Dirençler: 1x 470K, 1x 100K, 4x 10K.
  • Kondansatörler: 2x seramik 1uF.
  • 3x geçiş anahtarı.
  • U-şekilli breadboard telleri.
  • Atlama telleri.
  • Plastik çorba kabı 1l.
  • Konteyner için bağlantı halkası.

Kodu GitHub'da kullanılabilir hale getirdim.

Adım 1: Ultrasonik Mesafe Sensörünü Tanımak

Ultrasonik Mesafe Sensörünü Tanımak
Ultrasonik Mesafe Sensörünü Tanımak
Ultrasonik Mesafe Sensörünü Tanımak
Ultrasonik Mesafe Sensörünü Tanımak

Ultrasonik bir sensör olan HC-SR04-P ile su yüzeyine olan mesafeyi ölçeceğiz. Tıpkı bir yarasa gibi, bu sensör sonar kullanır: insan kulağı için çok yüksek frekansta, dolayısıyla ultrasonik bir ses darbesi gönderir ve bir nesneye çarpmasını, yansımasını ve geri gelmesini bekler. Mesafe daha sonra yankıyı ve sesin hızını almak için geçen süreden hesaplanabilir.

Somut olarak, Trig pimi en az 10 μs boyunca yukarı çekilirse, sensör 40 Hz frekanslı 8 darbelik bir patlama gönderir. Daha sonra yanıt, ultrasonik darbenin gönderilmesi ve alınması arasındaki süreye eşit süreye sahip bir darbe şeklinde Yankı piminde elde edilir. O zaman 2'ye bölmemiz gerekiyor, çünkü ultrasonik darbe ileri geri gidiyor ve tek yönlü seyahat süresine ihtiyacımız var ve yaklaşık 340 m/s olan ses hızı ile çarpıyoruz.

Ama bir dakika bekle! Aslında, sesin hızı sıcaklığa ve daha az ölçüde neme bağlıdır. Nitelik mi çekiyorum yoksa bu konuyla ilgili mi? Bir hesaplama aracı kullanarak, kışın (-5 °C alan) 328,5 m/sn ve yazın (25 °C alan) 347.1 m/sn değerine sahip olabileceğimizi bulduk. Diyelim ki 3 ms'lik tek yönlü bir seyahat süresi buluyoruz. Kışın bu 98,55 cm ve yazın 104,13 cm anlamına gelir. Bu oldukça fark! Bu nedenle, mevsimler boyunca ve hatta gece gündüz yeterli doğruluk elde etmek için kurulumumuza bir termometre eklemeliyiz. Sıcaklık, nem ve basıncı ölçen BME280'i dahil etmeye karar verdim. SpeedOfSound işlevinde kullandığım kodda, sıcaklık gerçekten en önemli faktör olmasına rağmen, sesin hızını üç parametrenin tümü açısından hesaplayan bir formül. Nem hala daha küçük bir etkiye sahiptir, ancak basıncın etkisi ihmal edilebilir. Sadece speedOfSoundSimple içinde uyguladığım sıcaklığı dikkate alarak daha basit bir formül kullanabiliriz.

HC-SR04'te önemli bir nokta daha var. Mevcut iki versiyon vardır: standart versiyon 5V'da çalışırken HC-SR04-P, 3V ila 5V arasında bir voltaj aralığında çalışabilir. 3 adet şarj edilebilir AA pil yaklaşık 3x1.25V=3.75V sağladığından, P-versiyonunu almak önemlidir. Bazı satıcılar yanlış olanı gönderebilir. Bu yüzden satın alırsanız resimlere bir göz atın. Bu sayfada açıklandığı gibi, iki versiyon hem arkadan hem de önden farklı görünüyor. P-versiyonunun arkasında, üç yonganın tümü yatay, standart versiyonda bir dikeydir. Standart versiyonun ön tarafında ekstra bir gümüş bileşen bulunur.

Elektronik devrede, kurulumumuz derin uyku moduna geçtiğinde pil ömründen tasarruf etmek için ultrasonik sensöre giden gücü kapatmak için bir anahtar olarak bir transistör kullanacağız. Aksi takdirde, hala yaklaşık 2mA tüketecektir. Öte yandan BME280, etkin olmadığında yalnızca yaklaşık 5 μ tüketir, bu nedenle transistörle kapatmaya gerek yoktur.

Adım 2: ESP8266 Anakartının Seçimi

ESP8266 Anakartı Seçimi
ESP8266 Anakartı Seçimi

Sensörü pille mümkün olduğunca uzun süre çalıştırmak için güç tüketiminden tasarruf etmemiz gerekiyor. ESP8266'nın Wifi özelliği, sensörümüzü buluta bağlamak için çok uygun bir yol sağlarken, aynı zamanda oldukça güç tüketir. Çalışma sırasında ESP8266 yaklaşık 80mA tüketir. Yani 2600 mAh'lik pillerle, cihazımız bitmeden en fazla 32 saat çalıştırabiliyorduk. Pratikte, voltaj çok düşük bir seviyeye düşmeden 2600 mAh kapasitenin tamamını kullanamayacağımız için daha az olacaktır.

Neyse ki ESP8266, neredeyse her şeyin kapalı olduğu bir derin uyku moduna da sahip. Bu nedenle plan, ESP8266'yı çoğu zaman derin uykuya almak ve ölçüm yapmak ve verileri Wifi üzerinden ThingSpeak'e göndermek için sık sık uyandırmaktır. Bu sayfaya göre, maksimum derin uyku süresi yaklaşık 71 dakikaydı, ancak ESP8266 Arduino çekirdeği 2.4.1'den beri yaklaşık 3.5 saate çıktı. Kodumda bir saatliğine yerleştim.

İlk önce uygun NodeMCU geliştirme kartını denedim, ancak bummer, derin uykuda hala yaklaşık 9 mA tüketiyor, bu da bize uyanma aralıklarını bile düşünmeden en fazla 12 gün saf derin uyku veriyor. Önemli bir suçlu, pili doğrudan 3.3V pinine bağlayarak bypass etmeye çalışsanız bile gücü kullanan AMS1117 voltaj regülatörüdür. Bu sayfada voltaj regülatörünün ve USB UART'ın nasıl çıkarılacağı açıklanmaktadır. Ancak, tahtamı yok etmeden bunu asla başaramadım. Ayrıca, USB UART'ı çıkardıktan sonra, neyin yanlış gittiğini anlamak için artık ESP8266'ya bağlanamazsınız.

Çoğu ESP8266 geliştirme kartı, savurgan AMS1117 voltaj regülatörünü kullanıyor gibi görünüyor. Bir istisna, daha ekonomik ME6211 ile birlikte gelen WEMOS D1 mini'dir (soldaki resim). Gerçekten de, WEMOS D1 mini'nin derin uykuda yaklaşık 150 μA kullandığını buldum, ki buna daha çok benziyor. Çoğu muhtemelen USB UART'tan kaynaklanmaktadır. Bu pano ile pinlerin başlıklarını kendiniz lehimlemeniz gerekir.

Ancak, ESP-12F (sağdaki resim) gibi bir USB UART veya voltaj regülatörü olmayan çıplak bir kart kullanarak çok daha iyisini yapabiliriz. 3.3V pini beslerken, sadece 22 μA'lık bir derin uyku tüketimi buldum!

Ancak ESP-12F'yi çalıştırmak için biraz lehimlemeye ve programlamayı biraz daha zahmetli hale getirmeye hazırlanın! Ayrıca, piller 3V ile 3,6V arasında olan doğru voltajı doğrudan iletmedikçe, kendi voltaj regülatörümüzü sağlamamız gerekir. Pratikte, tam deşarj döngüsü boyunca bu aralıkta bir voltaj sağlayan bir akü sistemi bulmak zor görünüyor. Teorik olarak 3V kadar düşük bir voltajla çalışabilen, ancak voltaj daha yüksekse daha doğru bir şekilde çalışan HC-SR04-P sensörüne de güç vermemiz gerektiğini unutmayın. Ayrıca diyagramımda HC-SR04-P, küçük bir ekstra voltaj düşüşüne neden olan bir transistör tarafından açılır. MCP1700-3302E voltaj regülatörünü kullanacağız. Maksimum giriş voltajı 6V olduğundan 4 adede kadar AA pil ile besliyoruz. 3 adet AA pil kullanmaya karar verdim.

3. Adım: Bir ThingSpeak Kanalı Oluşturun

Verilerimizi depolamak için bir IoT bulut hizmeti olan ThingSpeak'i kullanacağız. https://thingspeak.com/ adresine gidin ve bir hesap oluşturun. Giriş yaptıktan sonra bir kanal oluşturmak için Yeni Kanal düğmesine tıklayın. Kanal Ayarlarında adı ve açıklamayı istediğiniz gibi doldurun. Ardından kanal alanlarını adlandırıyoruz ve sağdaki onay kutularına tıklayarak etkinleştiriyoruz. Kodumu değiştirmeden kullanırsanız, alanlar aşağıdaki gibidir:

  • Alan 1: su seviyesi (cm)
  • Alan 2: pil seviyesi (V)
  • Alan 3: sıcaklık (°C)
  • Alan 4: nem (%)
  • Alan 5: basınç (Pa)

Gelecekte başvurmak üzere, API anahtarları menüsünde bulunabilecek Kanal Kimliğini, Okuma API Anahtarını ve API Anahtarını Yazma bilgilerini not edin.

Bir uygulama kullanarak akıllı telefonunuzdaki ThingSpeak verilerini okuyabilirsiniz. Android telefonumda IoT ThingSpeak Monitor widget'ını kullanıyorum. Bunu Kanal Kimliği ve Okuma API Anahtarı ile yapılandırmanız gerekir.

Adım 4: ESP-12F Nasıl Programlanır

ESP-12F Nasıl Programlanır
ESP-12F Nasıl Programlanır
ESP-12F Nasıl Programlanır
ESP-12F Nasıl Programlanır

Pil ömründen tasarruf etmek için basit bir karta ihtiyacımız var, ancak dezavantajı, programlamanın yerleşik USB UART'lı bir geliştirme kartından biraz daha zor olmasıdır.

Arduino IDE'yi kullanacağız. Nasıl kullanılacağını açıklayan başka Eğitilebilirlikler var, bu yüzden burada kısa olacağım. ESP8266 için hazır hale getirme adımları şunlardır:

  • Arduino IDE'yi indirin.
  • ESP8266 kartı için desteği kurun. Dosya - Tercihler - Ayarlar menüsünde, https://arduino.esp8266.com/stable/package_esp8266com_index.json URL'sini Ek Pano Yöneticisi URL'lerine ekleyin. Menüde sonraki Araçlar - Pano - Panolar Yöneticisi esp8266'yı esp8266 topluluğu tarafından kurun.
  • Pano olarak seçin: Genel ESP8266 Modülü.

ESP-12F'yi kullanmak için genellikle çevrimiçi mağazalarda bulunan bir adaptör plakası kullandım. Çipi plakaya lehimledim ve ardından başlıkları plakaya lehimledim. Ancak o zaman adaptör plakasının standart bir devre tahtası için çok geniş olduğunu keşfettim! Bağlantılarınızı yapmak için yan tarafta boş pin bırakmaz.

Benim aradığım çözüm, adaptör plakalı ESP8266'yı breadboard üzerine koymadan önce U şeklinde kablolar kullanmak ve bunları sağdaki resimdeki gibi bağlamak. Böylece GND ve VCC, devre tahtasının raylarına bağlanır ve kalan pinler devre tahtasının aşağısında kullanılabilir hale getirilir. Dezavantajı, devreyi tamamladığınızda breadboard'unuzun kablolarla oldukça kalabalık olmasıdır. Diğer bir çözüm ise bu videoda gösterildiği gibi iki breadboard'u birbirine sığdırmaktır.

Ardından, ESP-12F'yi bilgisayarınızın USB portu üzerinden programlamak için bir USB'den seriye adaptöre ihtiyacımız var. FT232RL FTDI programlayıcısını kullandım. Programlayıcı, 3.3V veya 5V arasında seçim yapmak için bir jumper'a sahiptir. ESP8266 için 3.3V'a getirilmelidir. 5V çipinizi kızartabileceğinden bunu unutmayın! Sürücülerin kurulumu otomatik olmalıdır, ancak programlama çalışmazsa bu sayfadan manuel olarak kurmayı deneyebilirsiniz.

ESP8266, flaşa yeni ürün yazılımı yüklemek için bir programlama moduna ve mevcut ürün yazılımını flaş bellekten çalıştırmak için bir flaş moduna sahiptir. Bu modlar arasında seçim yapmak için bazı pinlerin açılış sırasında belirli bir değer alması gerekir:

  • Programlama: GPIO0: düşük, CH-PD: yüksek, GPIO2: yüksek, GPIO15: düşük
  • Flaş: GPIO0: yüksek, CH-PD: yüksek, GPIO2: yüksek, GPIO15: düşük

Adaptör plakası zaten CH-PD'yi yukarı çekmek ve 10K dirençlerle GPIO15'i aşağı çekmekle ilgileniyor.

Yani elektronik devremizde hala GPIO2'yi çekmemiz gerekiyor. Ayrıca ESP8266'yı programlamaya veya flaş moduna geçirmek için bir anahtar ve RST'yi toprağa bağlayarak yapılan sıfırlamak için bir anahtar sağlıyoruz. Ayrıca FT232RL'nin TX pinini ESP8266'nın RXD pinine bağladığınızdan ve bunun tersini yaptığınızdan emin olun.

Programlama sırası aşağıdaki gibidir:

  • Programlama anahtarını kapatarak GPIO2'yi düşük olarak ayarlayın.
  • Sıfırlama anahtarını kapatıp yeniden açarak ESP8266'yı sıfırlayın. ESP8266 şimdi programlama modunda açılıyor.
  • Programlama anahtarını açarak GPIO2'yi tekrar yükseğe ayarlayın.
  • Arduino IDE'den yeni bellenimi yükleyin.
  • Sıfırlama anahtarını kapatıp yeniden açarak ESP8266'yı yeniden sıfırlayın. ESP8266 şimdi flaş modunda açılıyor ve yeni bellenimi çalıştırıyor.

Artık ünlü Blink taslağını yükleyerek programlamanın çalışıp çalışmadığını test edebilirsiniz.

Tüm bunlar işe yararsa en azından GND, VCC, GPIO2, RST, TXD ve RXD pinleri doğru şekilde lehimlenmiş ve bağlanmıştır. Ne büyük bir rahatlama! Ancak devam etmeden önce diğer pinleri de multimetrenizle test etmenizi tavsiye ederim. Ben de pinlerden birinde sorun yaşadım. Tüm pinleri 5 saniye boyunca tek tek yüksek ayarlayan ve sonrasında ESP8266'yı 20 saniye derin uykuya sokan bu çizimi kullanabilirsiniz. ESP8266'nın derin uykudan sonra uyanmasını sağlamak için, RST'yi uyandırma sinyali veren GPIO16'ya bağlamanız gerekir.

Adım 5: Çizimi Yükleme

Kodu GitHub'da kullanıma sundum, bu sadece bir dosya: Level-Sensor-Deepsleep.ino. Sadece indirin ve Arduino IDE'de açın. Veya Dosya - Yeni'yi seçip kodu kopyalayıp yapıştırabilirsiniz.

Dosyanın başında doldurmanız gereken bazı bilgiler vardır: Kullanılacak WLAN'ın adı ve parolası, statik IP ayrıntıları ve ThingSpeak Kanalının Kanal Kimliği ve API Anahtarını Yazma.

Bu blogdaki ipucunu takiben, yönlendiricinin dinamik olarak bir IP atadığı DHCP yerine, ESP8266'nın IP adresini kendimiz ayarladığımız statik IP kullanıyoruz. Bunun çok daha hızlı olduğu ortaya çıkıyor, bu nedenle aktif zamandan ve dolayısıyla pil enerjisinden tasarruf ediyoruz. Bu nedenle, yönlendiricinin (ağ geçidinin), alt ağ maskesinin ve bir DNS sunucusunun IP'sinin yanı sıra kullanılabilir bir statik IP adresi sağlamamız gerekir. Neyi dolduracağınızdan emin değilseniz, yönlendiricinizin kılavuzunda statik IP kurma hakkında bilgi edinin. Yönlendiricinize Wifi üzerinden bağlı bir Windows bilgisayarda, bir kabuk başlatın (Windows düğmesi-r, cmd) ve ipconfig /all yazın. İhtiyacınız olan bilgilerin çoğunu Wi-Fi bölümünde bulacaksınız.

Kodu incelediğinizde, diğer Arduino kodlarından farklı olarak, eylemin çoğunun döngü işlevi yerine kurulum işlevinde gerçekleştiğini görüyorsunuz. Bunun nedeni, ESP8266'nın kurulum işlevini bitirdikten sonra derin uykuya geçmesidir (OTA modunda başlamadıysak). Uyandıktan sonra, yeni bir yeniden başlatma gibidir ve kurulumu tekrar çalıştırır.

İşte kodun göze çarpan özellikleri:

  • Uyandıktan sonra kod, switchPin'i (varsayılan GPIO15) yüksek olarak ayarlar. Bu, HC-SR04-P sensörünü açan transistörü açar. Derin uykuya geçmeden önce, transistörü ve HC-SR04-P'yi kapatarak pimi düşük seviyeye ayarlar ve daha değerli pil gücü tüketmediğinden emin olur.
  • modePIN (varsayılan GPIO14) düşükse kod, ölçüm modu yerine OTA moduna girer. OTA (kablosuz güncelleme) ile firmware'i seri port yerine Wifi üzerinden güncelleyebiliriz. Bizim durumumuzda, daha fazla güncelleme için artık seriyi USB adaptörüne bağlamamız gerekmediğinden bu oldukça uygundur. Sadece GPIO14'ü düşük olarak ayarlayın (elektronik devredeki OTA anahtarı ile), ESP8266'yı (sıfırlama anahtarı ile) sıfırlayın ve yükleme için Arduino IDE'de kullanılabilir hale gelmelidir.
  • Analog PIN'de (A0) pilin voltajını ölçüyoruz. Bu, voltaj çok düşerse, minVoltage altına düşerse, pilleri aşırı deşarjdan korumak için cihazımızı, yani kalıcı derin uykuyu kapatmamızı sağlar. Analog ölçüm çok doğru değil, numMeasuresBattery (varsayılan 10) ölçümleri yapıyoruz ve doğruluğu artırmak için ortalamayı alıyoruz.
  • HC-SR04-P sensörünün mesafe ölçümü, DistanceMeasurement işlevinde yapılır. Doğruluğu artırmak için ölçüm, numMeasuresDistance (varsayılan 3) kez tekrarlanır.
  • BME280 sensörünün sıcaklık, nem ve basınç ölçümünden speedOfSound'u hesaplama işlevi vardır. BME280'in varsayılan I2C adresi 0x76'dır, ancak çalışmazsa, onu 0x77 olarak değiştirmeniz gerekebilir: bool bme280Started=bme280.begin(0x77);
  • BME280'i zorunlu modda kullanacağız, yani bir ölçüm alır ve güç tasarrufu yapmak için uyku moduna geri döner.
  • Kapasite (l), tamMesafe (cm) ve alanı (m2) ayarlarsanız, kod, su deposunun kalan hacmini mesafe ölçümünden hesaplar: çift kalanHacim=kapasite+10.0*(tamMesafe-mesafe)*alan; ve bunu ThingSpeak'e yükleyin. Varsayılan değerleri korursanız, su yüzeyine olan mesafeyi cm cinsinden yükler.

Adım 6: Elektronik Devrenin Kurulması

Elektronik Devrenin Kurulması
Elektronik Devrenin Kurulması

Yukarıdaki elektronik devrenin şemasıdır. Bir breadboard için oldukça büyük, özellikle büyük boyutlu adaptör plakası ve U-şekilli tellerin hilesiyle. Bir noktada, iki breadboard'u bağlama alternatifini kullanmamı kesinlikle diledim, ama sonunda başardım.

İşte devrenin önemli özellikleri:

  • Rol oynayan iki voltaj vardır: pilden gelen giriş voltajı (3,75V civarında) ve ESP8266 ile BME280'i besleyen 3,3V. 3,3V'yi panonun sol rayına ve 3,75V'yi sağ raya koydum. Voltaj regülatörü 3.75V'yi 3.3V'a dönüştürür. Veri sayfasındaki talimatları takip ederek kararlılığı artırmak için voltaj regülatörünün giriş ve çıkışına 1 μF kapasitör ekledim.
  • ESP8266'nın GPIO15'i, transistörün kapısına bağlanır. Bu, ESP8266'nın transistörü ve dolayısıyla ultrasonik sensörü aktifken açmasına ve derin uykuya geçerken kapatmasına izin verir.
  • GPIO14, bir anahtara, OTA anahtarına bağlıdır. Anahtarın kapatılması, bir sonraki OTA modunda başlatmak istediğimiz ESP8266'ya, yani RESET anahtarına bastıktan (kapatıp açtıktan) ve havadan yeni bir çizim yükledikten sonra sinyali verir.
  • RST ve GPIO2 pinleri programlama şemasındaki gibi bağlanır. RST pimi, ESP8266'nın derin uykudan uyanmasını sağlamak için artık GPIO16'ya da bağlanmıştır.
  • Ultrasonik sensörün TRIG ve ECHO pinleri GPIO12 ve GPIO13'e, BME280'in SCL ve SDA pinleri ise GPIO5 ve GPIO4'e bağlı.
  • Son olarak, analog pin ADC, giriş voltajına bağlı bir voltaj bölücü aracılığıyladır. Bu, pillerin şarjını kontrol etmek için giriş voltajını ölçmeyi sağlar. ADC pini 0V ile 1V arasındaki voltajları ölçebilir. Voltaj bölücü için 100K ve 470K dirençleri seçtik. Bu, ADC pinindeki voltajın şu şekilde verildiği anlamına gelir: V_ADC = 100K/(100K+470K) V_in. V_ADC=1V alarak bu, V_in=570/100 V_ADC = 5.7V'a kadar olan giriş voltajlarını ölçebileceğimiz anlamına gelir. Güç tüketimine gelince, voltaj bölücüden bir miktar akım sızıyor. Pillerden V_in=3.75V ile I_leak = 3.75V/570K=6.6 μA buluyoruz.

Devre pillerle çalışırken bile USB'yi seri adaptöre bağlamak mümkündür. Adaptörün VCC'sini çıkardığınızdan ve GND, RX ve TX'i programlama şemasındaki gibi bağladığınızdan emin olun. Bu, hata ayıklama mesajlarını okumak ve her şeyin beklendiği gibi çalıştığından emin olmak için Arduino IDE'deki Seri Monitörü açmayı mümkün kılar.

Devrenin tamamı için, pillerle çalışırken derin uykuda 50 μA'lık bir akım tüketimini ölçtüm. Buna ESP8266, BME280, ultrasonik sensör (transistör tarafından kapatılır) ve voltaj bölücüden kaçak ve belki başka kaçaklar dahildir. Yani bu çok kötü değil!

Toplam aktif sürenin yaklaşık 7 saniye olduğunu buldum; bunun 4,25 saniyesi Wifi'ye bağlanmak için ve 1,25 saniyesi verileri ThingSpeak'e göndermek için. 80mA aktif akım ile aktif süre için saatte 160 μAh buldum. Sahip olduğumuz derin uyku durumu için saatte 50 μAh ekleyerek saatte toplam 210 μAh. Bu, 2600 mAh pillerin teorik olarak 12400 saat = 515 gün sürdüğü anlamına gelir. Bu, pillerin tam kapasitesini kullanabilirsek (ki durum böyle değil) mutlak maksimum ve mevcut ölçümlerimde bulamadığım hiçbir sızıntı yok. Yani bunun gerçekten işe yarayıp yaramadığını henüz görmedim.

Adım 7: Sensörün Bitirilmesi

Sensörün Bitirilmesi
Sensörün Bitirilmesi
Sensörün Bitirilmesi
Sensörün Bitirilmesi
Sensörün Bitirilmesi
Sensörün Bitirilmesi

Sensörü, eskiden çorba içeren 1 litrelik plastik bir kaba koydum. Altta, HC-SR04-P sensörünün "gözlerine" uyacak iki delik açtım. Delikler dışında kap su geçirmez olmalıdır. Daha sonra normalde yağmur suyu tahliye borusu için kullanılan dairesel bir halka ile su deposunun duvarına bağlanır.

Proje ile iyi eğlenceler!

Önerilen: