İçindekiler:

Kapı ve Sıcaklık Durum Kaydedici Projesi: 21 Adım
Kapı ve Sıcaklık Durum Kaydedici Projesi: 21 Adım

Video: Kapı ve Sıcaklık Durum Kaydedici Projesi: 21 Adım

Video: Kapı ve Sıcaklık Durum Kaydedici Projesi: 21 Adım
Video: Monster alma pişman olursun dediler.. ve (pişman değil pişmaniye oldum ) 2024, Kasım
Anonim
Kapı ve Sıcaklık Durum Kaydedici Projesi
Kapı ve Sıcaklık Durum Kaydedici Projesi

Bu Eğitilebilir Tablo, bir ESP8266 NodeMCU, bir DHT11 sıcaklık ve nem sensörü, bir kapı/pencere indükleme anahtarı, bir 10K ohm direnç ve bir miktar bağlantı kablosu kullanarak 10,00 doların altında basit bir kapı ve sıcaklık durum kaydedicisinin nasıl yapıldığını gösterecektir.

Bu projenin doğuşu, Arduino kartıyla daha fazla ev otomasyonu yapma arzumdan geldi, Arduino uyumlu EPS8266 NodeMCU hakkında çok şey okuduğumdan, bu kartın bazı deneyler yapmak için mükemmel, düşük maliyetli bir kart olacağına karar verdim. ESP8266 kartlarını kullanarak İnternet'te ev otomasyon projeleri için arama yaptıktan sonra, ilk denememde bir sıcaklık ve kapı durum kaydedicisini birleştirmeye karar verdim. Sonunda bu proje, büyükbabamın 50 yıl önce tasarlayıp inşa ettiği küçük bir serayı otomatikleştirmek için servolar, nem sensörleri ve diğer elektroniklerle birleştirilecek. Sıcaklık sensörü, ısıtma sisteminin devreye girmesi veya devreden çıkarılması gerektiğini belirlemek ve gerektiğinde havalandırma sistemini açmak ve kapatmak için servolara sinyal vermek için kullanılacaktır. Havalandırma sisteminin durumu, manyetik reed anahtarları kullanılarak izlenecektir. Son olarak, bir sulama sistemini otomatikleştirmek için nem sensörleri kullanılacaktır.

1. Adım: Sorumluluk Reddi

Bu talimatı izlemenin bir sonucu olarak meydana gelen hiçbir şey için HİÇBİR sorumluluk almadığımızı belirtmek için kısa bir sorumluluk reddi. Herhangi bir şey inşa ederken üretici talimatlarını ve güvenlik sayfalarını takip etmek her zaman en iyisidir, bu nedenle kendinizinkini oluşturmak için kullandığınız herhangi bir parça ve araç için lütfen bu belgelere bakın. Biz sadece kendi adımlarımızı oluşturmak için kullandığımız adımlar hakkında bilgi veriyoruz. Biz profesyonel değiliz. Nitekim bu yapıya katılan her 3 kişiden 2'si çocuk.

Adım 2: Ücretsiz IFTTT Hesabı Kurun

Ücretsiz IFTTT Hesabı Oluşturun
Ücretsiz IFTTT Hesabı Oluşturun

Henüz bir hesabınız yoksa, ana sayfasına giderek ücretsiz bir IFTTT hesabı oluşturmanın tam zamanı. bu hizmetlerden yeni yollarla yararlanmanızı sağlar. Bu proje için, bir ESP8266'nın bir kamış anahtarı aracılığıyla bir kapının durumunu ve bir Google E-Tablolar belgesindeki DHT11 sensörü aracılığıyla sıcaklık ve nemi kaydetmesine izin vermek için IFTTT kullanacağız.

3. Adım: Bir IFTTT Uygulaması oluşturun

IFTTT Uygulaması oluşturun
IFTTT Uygulaması oluşturun

Hala IFTTT'deyken “Uygulamalarım” bölümüne ilerleyin ve “Yeni Uygulama” düğmesine tıklayarak yeni bir uygulama oluşturun.

Adım 4: Applet'inizin "bu" Kısmını yapılandırın

yapılandırın
yapılandırın

Yukarıdaki şekilde vurgulandığı gibi, mavi renkte olan “bu” kelimeye tıklayın.

Adım 5: WebHooks Hizmetini Applet'inize ekleyin

WebHooks Hizmetini Applet'inize ekleyin
WebHooks Hizmetini Applet'inize ekleyin

Arama çubuğunda “Web kancaları” hizmetini arayın ve Web kancaları simgesini seçin.

"Web kancaları" hizmetini bulduğunuzda, üzerine tıklayın.

Adım 6: Bir Web İsteği Al Tetikleyicisini Kurun

Bir Web İsteği Al Tetikleyicisini kurun
Bir Web İsteği Al Tetikleyicisini kurun

"Bir web isteği al" tetikleyicisini seçin.

7. Adım: Bir Etkinlik Adı Sağlayın

Bir Etkinlik Adı Sağlayın
Bir Etkinlik Adı Sağlayın

Metin kutusunda yeni uygulamanıza bir olay adı girin. Ben "Data Logger"ı seçtim ama sen istediğini seçebilirsin.

Adım 8: Applet'inizin "o" Kısmını yapılandırın

yapılandırın
yapılandırın

Yukarıdaki şekilde vurgulandığı gibi, mavi renkte olan “o” kelimeye tıklayın.

9. Adım: Bir Eylem Hizmeti Kurun

Bir Eylem Hizmeti Kurun
Bir Eylem Hizmeti Kurun

Arama kutusunda "Google E-Tablolar" hizmetini arayın ve Google E-Tablolar simgesini tıklayın.

Adım 10: Google E-Tablolar'a bağlanın

Google E-Tablolar'a bağlanın
Google E-Tablolar'a bağlanın

Henüz yapmadıysanız, IFTTT hesabınızı Google E-Tablolar'a bağlamanız gerekmez. Yukarıda gösterilen Bağlan düğmesine basın ve ekrandaki talimatları izleyin.

11. Adım: Bir Eylem Seçin

Bir Eylem Seçin
Bir Eylem Seçin

"E-tabloya Satır Ekle" ye tıklayın.

Adım 12: Eylemi Ayarlayın

Eylemi Ayarla
Eylemi Ayarla

"E-tablo adı" metin kutusuna bir ad girin. Tutarlılık için "Data_Logger" kullanmayı seçiyorum. Ayarın geri kalanını olduğu gibi bırakın (başka bir zamanda bu ayarlarla deneme yapabilirsiniz) ve ardından ekranın altındaki "Eylem Oluştur" düğmesine basın.

Adım 13: Applet'inizi İnceleyin ve Sonlandırın

Applet'inizi İnceleyin ve Sonlandırın
Applet'inizi İnceleyin ve Sonlandırın

Applet yapılandırmanızdan memnun kaldığınızda "Son" düğmesine basın.

Adım 14: Daha Sonra Gereken Yapılandırma Bilgilerini Alın

Daha Sonra Gereken Yapılandırma Bilgilerini Alın
Daha Sonra Gereken Yapılandırma Bilgilerini Alın

Yukarıda vurgulandığı gibi "Web kancaları"na tıklayın.

15. Adım: API Anahtarı için Webhooks Belgelerine geçin

API Anahtarı için Webhooks Belgelerine geçin
API Anahtarı için Webhooks Belgelerine geçin

Garip görünebilir, ancak benzersiz API Anahtarınızla sayfaya ilerlemek için sağ üstteki Belgeler bağlantısını tıklayın.

Adım 16: API Anahtarını Kaydedin

API Anahtarını Kaydet
API Anahtarını Kaydet
API Anahtarını Kaydet
API Anahtarını Kaydet

Dokümantasyon ekranının ilk satırı, benzersiz API Anahtarınızı görüntüler. Bu anahtarı daha sonra kullanmak üzere kopyalayın ve kaydedin.

Ayrıca uygulamayı burada test etmek de iyi bir fikirdir. {event} öğesini Data_Logger veya etkinliğinize ne ad verdiyseniz değiştirmeyi unutmayın ve 3 boş değere biraz veri ekleyin ve ardından sayfanın altındaki "Test Et" düğmesini tıklayın. “Olay tetiklendi” diyen yeşil bir mesaj görmelisiniz. Öyleyse, Google Dokümanlar'a ilerleyin ve test sayfasına girdiğiniz verilerin Google E-Tablolar belgesinde göründüğünü onaylayın.

Adım 17: Bileşenleri Toplayın

Bileşenleri Toplayın
Bileşenleri Toplayın
Bileşenleri Toplayın
Bileşenleri Toplayın
Bileşenleri Toplayın
Bileşenleri Toplayın

Sadece birkaç parçaya ihtiyacınız olacak.

1) ESP8266 NodeMcu Geliştirme Kartı

2) DHT11 Sıcaklık/Nem Sensörü

3) Kapı/Pencere Reed Anahtarı

4) 10k Ohm Direnç

5) Bağlantı Teli

Adım 18: Bileşenleri Birleştirin

1) ESP8266'daki 3v3 pininden birini DHT11'deki vcc pinine bağlayın.

2) ESP8266'daki topraklama pinlerinden birini DHT11'deki topraklama pinine bağlayın.

3) ESP8266'daki D4 pimini (IDE'deki diğer adıyla pim 2) DHT11'deki veri pimine bağlayın.

4) ESP8266 üzerindeki başka bir 3v3 pinini kapı/pencere indükleme anahtarının bir tarafına bağlayın.

5) ESP8266'daki D5 pinini (IDE'deki pin 14 olarak da bilinir) kapı/pencere indükleme anahtarının diğer tarafına bağlayın ve ayrıca 10k ohm rezistörün bir tarafına bağlayın.

6) 10k ohm'luk direncin diğer tarafını ESP8266'daki başka bir topraklama pinine bağlayın.

ESP8266 pin seçimleri için lütfen bu faydalı şemaya veya çok faydalı videoya bakın.

Adım 19: Arduino Kodunu Yazın

Arduino Kodunu Yazın
Arduino Kodunu Yazın

Aşağıdaki kodu kopyalayıp Arduino IDE'nize yapıştırın.

#include #include #include "DHT.h"

#define DHTPIN 2 // hangi dijital pine bağlıyız

#define DOORPIN 14 // kapı anahtarının hangi dijital pinde olduğu.

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

int sayı = 1;

const char* ssid = "some_ssid"; // bunu ssid const char* şifrenizi kullanacak şekilde değiştirin = "some_password"; // parolanızı kullanmak için bunu değiştirin int sleepTime = 100;

// Maker Web kancaları IFTTT

const char* sunucu = "maker.ifttt.com";

// IFTTT URL kaynağı

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; //Servis adınızı ve API anahtarınızı kullandığınızdan emin olun.

String doorStatus = "Kapalı";

uçucu bool stateChanged = false;

// Saatlerce uyuyorsanız, aralığı sa * 60 dakika * 60 saniye * 1000 milisaniye olarak ayarlayın

const uzun aralık = 1.0 * 60 * 60 * 1000; // 1 saat işaretsiz uzun öncekiMillis = 0 - (2 * aralık);

geçersiz kurulum () {

Seri.başla(115200); AttachInterrupt(digitalPinToInterrupt(DOORPIN), eventTriggered, CHANGE); pinMode(DOORPIN, GİRİŞ); //Kapı Sensörü dht.begin(); WiFi.begin(ssid, şifre);

Serial.print("\nBağlanıyor..");

while (WiFi.status() != WL_CONNECTED) { gecikme(1000); Seri.print("."); } Serial.print("\n"); }

void eventTriggered(){

durumChanged = true; Serial.println("Kapı kontrol ediliyor!"); if (digitalRead(DOORPIN)==HIGH) // Kapının açık olup olmadığını kontrol edin { Serial.println("Kapı kapalı!"); doorStatus = "Kapalı"; } else { Serial.println("Kapı açık!"); doorStatus = "Açıldı"; } }

geçersiz checkStatus(){

if (WiFi.status() == WL_CONNECTED) { //WiFi bağlantı durumunu kontrol edin // Sıcaklık veya nem okuması yaklaşık 250 milisaniye sürer! // Sensör okumaları ayrıca 2 saniyeye kadar 'eski' olabilir (çok yavaş bir sensördür) float h = dht.readHumidity(); // Sıcaklığı Celsius (varsayılan) olarak oku float t = dht.readTemperature(); // Sıcaklığı Fahrenheit olarak oku (isFahrenheit = true) float f = dht.readTemperature(true); // Herhangi bir okumanın başarısız olup olmadığını kontrol edin ve erken çıkın (tekrar denemek için). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("DHT sensöründen okunamadı!"); //Seri.print("."); //DHT sensöründen okunamadı! dönüş; } // Isı endeksini Fahrenhayt cinsinden hesapla (varsayılan) float hif = dht.computeHeatIndex(f, h); // Isı endeksini Celsius cinsinden hesaplayın (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false);

Seri.print("\n");

Serial.print("Sıcaklık: "); Seri.baskı(f); Serial.print(" *F ("); Serial.print(t); Serial.print(" *C)"); Seri.print("\t"); Serial.print("Isı indeksi: "); Seri.print(hif); Serial.print(" *F ("); Serial.print(hic); Serial.print(" *C)%"); Seri.print("\t"); Serial.print("Nem: "); Seri.println(h);

if (digitalRead(DOORPIN)==HIGH) // Kapının açık olup olmadığını kontrol edin

{ Serial.println("Kapı kapalı!"); doorStatus = "Kapalı"; } else { Serial.println("Kapı açık!"); doorStatus = "Açıldı"; } String jsonObject = String("{"value1\":\"") + f +"*F (" + t + "*C) / "+ hif +"*F (" + hic + "*C) " + "\", \"değer2\":\"" + h + "\", \"değer3\":\"" + kapıDurumu + " \"}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin(completeUrl); // http.begin(sunucu); http.addHeader("İçerik Türü", "uygulama/json"); http. POST(jsonObject); http.writeToStream(&Seri); http.end(); //Yakın bağlantı

durumChanged = yanlış;

int sleepTimeInMinutes = aralık / 1000 / 60; Serial.print("\n\nUyumaya git "); Serial.print(sleepTimeInMinutes); Serial.println("dakika(lar) …"); } }

boşluk döngüsü () {

imzasız uzun akımMillis = millis(); gecikme(4000); //Geçen süreyi aştıysak, kapıyı ve sıcaklığı kontrol etmeye zorla. if(currentMillis - öncekiMillis >= interval){ stateChanged = true; öncekiMillis = şimdikiMillis; Seri.print(sayım++); Serial.println(") Geçen süre nedeniyle kontrol ediliyor!"); }else if(stateChanged){ Serial.print(count++); Serial.println(") Durum değişikliği nedeniyle kontrol ediliyor!"); }

//Durum değiştiyse kapıyı ve sıcaklığı kontrol edin.

if(stateChanged){ checkStatus(); }

gecikme (uyku zamanı);

}

Adım 20: Sonuçlar

Sonuçlar
Sonuçlar

Bir önceki adımda kaynak kodunu yüklediğinizde, yukarıda gösterilen örnekteki gibi sonuçlar elde etmiş olmalısınız.

Adım 21: Krediler

Random Nerd Tutorials'tan birçok yararlı ipucu ve ipucu buldum ve tüm yardımları için onlara teşekkür etmek istiyorum. Özellikle ESP32 ESP8266 hakkındaki mükemmel öğreticileri, bu Talimatın büyük bölümlerinin dayandığı Google Sayfalarına Sensör Okumaları Yayınlayın.

Ek olarak, TheCircuit'ten DHT11 Instructable, bu çok ucuz ama ilginç küçük sensörün nasıl kullanılacağını anlamama yardımcı oldu.

Ayrıca, Garaj Kapısı Monitörü ve Rastgele Nerd Öğreticilerinden bir diğeri gibi kapılarınızı izlemekle ilgili birçok eğitim vardır. Kamış anahtarımın düzgün çalışmasını nasıl sağlayacağımı anlamama yardımcı olması için bunların parçalarını kullandım.

Son olarak, bu bilgilerle ve internette bulduğum diğer detaylarla ihtiyaçlarımı karşılayan bir sistem oluşturabildim. Umarım bu Eğitilebilirliği faydalı bulursunuz ve kendinize ait bir tane oluşturursunuz.

Önerilen: